??i v?i nh?ng b?n ?ã rành v? tin h?c, máy tính và website thì ch?c ch?n bi?t và hi?u rõ v? c? s? d? li?u SQL. Nh?ng v? NoSQL và NoSQL là gì thì không ph?i ai c?ng ?ã t?ng nghe qua.
?? tìm hi?u thêm v? NoSQL và m?t s? thông tin liên quan ??n nó. M?i các b?n cùng tham kh?o bài vi?t d??i ?ây cùng nhà cái Casinovn138.com nhé!
NoSQL là gì?
NoSQL là “H? th?ng qu?n lý d? li?u không quan h?” (non-relational Data Management System). C? s? d? li?u NoSQL ???c sinh ra là dành cho các kho d? li?u phân tán v?i nhu c?u l?u tr? d? li?u l?n. Ví d? m?t s? các công ty l?n s? d?ng c? s? d? li?u NoSQL không th? không k? ??n nh? Facebook, Twitter và Google khi chúng ph?i thu th?p hàng terabyte d? li?u ng??i dùng m?i ngày.
C? s? d? li?u NoSQL là vi?t t?t c?a “Not SQL” ho?c “Not Only SQL”. V?i c? s? d? li?u quan h? RDBMS ta s? d?ng cú pháp SQL ?? l?u tr? và truy xu?t d? li?u. ??i v?i h? th?ng c? s? d? li?u NoSQL, nó bao g?m m?t lo?t các công ngh? c? s? d? li?u có th? l?u tr? d? li?u có c?u trúc, bán c?u trúc, phi c?u trúc và ?a hình. S? ?? sau ?ây cho th?y c? s? d? li?u NoSQL khác so v?i c? s? d? li?u SQL.
Khác nhau gi?a C? s? d? li?u SQL và NoSQL
SQL Databases | NoSQL Databases | |
Mô hình d? li?u | Mô hình quan h? chu?n hóa d? li?u vào b?ng ???c hình thành t? hàng và c?t. S? ?ô? quy ??nh rõ ràng b?ng, hàng, c?t, ch? m?c, m?i quan h? gi?a các b?ng và các thành t? c? s? d? li?u khác. C? s? d? li?u s? th?c thi tính toàn v?n tham chi?u trong m?i quan h? gi?a các b?ng. | Ki?u Document: JSON documents
Ki?u Key-value: Key-value pairs Ki?u Column: B?ng v?i hàng và c?t thay ??i (dynamic) Graph: Nodes và c?nh |
L?ch s? phát tri?n | Phát tri?n t? nh?ng n?m 1970, t?p trung vào vi?c gi?m thi?u s? trùng l?p d? li?u. | Phát tri?n sau n?m 2000, m?c ?ích chính ph?c v? vi?c m? r?ng nhanh (scale) và phát tri?n các ?ng d?ng theo ph??ng pháp Agile và DevOps. |
Các c? s? d? li?u tiêu bi?u | Oracle, MySQL, Microsoft SQL Server
PostgreSQL |
NoSQL Document: MongoDB, CouchDB
Key-value: Redis, DynamoDB Column: Cassandra, HBase Graph: Neo4j, Amazon Neptune |
M?c ?ích s? d?ng | Nhi?u m?c ?ích | NoSQL Document DB: nhi?u m?c ?ích
Key-value: d? li?u l?n v?i các truy xu?t ??n gi?n Column: d? li?u l?n v?i các m?u truy xu?t d? li?u có th? d? ?oán ???c (predictable query patterns) Graph: phân tích và duy?t các m?i quan h? gi?a các d? li?u ???c k?t n?i |
Schemas | C? ??nh (Rigid) | Uy?n chuy?n |
M? r?ng | Theo chi?u d?c. C? s? d? li?u quan h? th??ng t?ng quy mô b?ng cách t?ng n?ng l?c ?i?n toán c?a ph?n c?ng ho?c t?ng quy mô b?ng cách thêm b?n sao c?a kh?i l??ng công vi?c ch? ??c. | Cho phép thay ??i quy mô theo chi?u ngang (scale-out b?ng cách phân tán trên nhi?u server) |
Thu?c tính ACID | H? tr?. C? s? d? li?u quan h? có các thu?c tính mang tính nguyên t?, nh?t quán, tách bi?t và b?n v?ng (ACID) | C? s? d? li?u NoSQL tuân theo ??nh lý Brewers CAP (Consistency, Availability, Partition tolerance). |
Joins | Th??ng ???c yêu c?u | Th??ng không yêu c?u |
Data to Object Mapping | Yêu c?u ORM (object-relational mapping) | Nhi?u NoSQL database không yêu c?u ORMs. |
Hi?u n?ng | Hi?u n?ng th??ng ph? thu?c vào h? th?ng con c?a ? ??a. Thông th??ng, vi?c t?i ?u hóa các truy v?n, ch? m?c và c?u trúc b?ng b?t bu?c ph?i ???c th?c hi?n ?? ??t m?c hi?u n?ng t?i ?a. | Hi?u n?ng th??ng ???c xem là ch?c n?ng c?a ki?ch c?? c?m ph?n c?ng ng?m, ?? tr? m?ng và ?ng d?ng ??a ra l?nh g?i. |
API | Yêu câ?u l?u tr? và truy xu?t d? li?u ???c truy?n ??t b?ng cách s? d?ng các truy v?n nh?t quán v?i ngôn ng? truy v?n có c?u trúc (SQL). Các truy v?n này ???c phân tích và th?c thi b?i c? s? d? li?u quan h?. | API trên c? s? ??i t??ng cho phép các nhà phát tri?n ?ng d?ng d? dàng l?u tr? và truy xu?t c?u trúc d? li?u trong b? nh?. Khóa phân m?nh tìm ki?m các c?p khóa-giá tr?, t?p h?p c?t ho?c v?n b?n có c?u trúc ch?a hoàn ch?nh có ch?a ??i t??ng và thu?c tính c?a ?ng d?ng ???c x?p theo chu?i. |
Khi nào s? d?ng C? s? d? li?u NoSQL?
Có th? b?n quan tâm: ?u ?i?m khi l?p trình web Php + MySQL mà b?n nên bi?t
T?c ?? phát tri?n v?i c? s? d? li?u NoSQL có th? nhanh h?n nhi?u so v?i c? s? d? li?u SQL.
NoSQL cho phép các nhà phát tri?n ki?m soát c?u trúc c?a d? li?u nên r?t phù h?p v?i các ph??ng pháp phát tri?n Agile hi?n ??i d?a trên vi?c phát tri?n nhanh, l?p l?i nhanh và c?p nh?t code th??ng xuyên.
Khi c? s? d? li?u SQL không ?áp ?ng ???c nhu c?u l?u tr? d? li?u l?n.
C? s? d? li?u NoSQL ???c t?o ra ?? x? lý d? li?u l?n. C? s? d? li?u NoSQL th??ng d?a trên chi?n l??c m? r?ng quy mô, giúp cho vi?c này r? h?n r?t nhi?u so v?i khi s? d?ng ph??ng pháp m? r?ng quy mô mà c? s? d? li?u SQL th?c hi?n.
C?u trúc c?a nhi?u d?ng d? li?u khác nhau ???c x? lý và phát tri?n d? dàng h?n v?i c? s? d? li?u SQL.
C? s? d? li?u NoSQL phù h?p ?? l?u tr? và mô hình hóa d? li?u có c?u trúc, bán c?u trúc và phi c?u trúc trong m?t c? s? d? li?u. C? s? d? li?u NoSQL l?u tr? d? li?u ? d?ng t??ng t? nh? các ??i t??ng ???c s? d?ng trong các ?ng d?ng, gi?m nhu c?u d?ch t? d?ng d? li?u ???c l?u tr? sang d?ng d? li?u l?y trong code.
Các mô hình ?ng d?ng m?i có th? ???c h? tr? d? dàng h?n.
C? s? d? li?u NoSQL ???c t?o trong k? nguyên ?ám mây và ?ã nhanh chóng thích nghi v?i quá trình t? ??ng hóa là m?t ph?n c?a ?ám mây. Vi?c tri?n khai c? s? d? li?u trên quy mô l?n theo cách h? tr? microservices th??ng d? dàng h?n v?i c? s? d? li?u NoSQL. C? s? d? li?u NoSQL th??ng có kh? n?ng tích h?p v??t tr?i v?i các công ngh? phát tr?c tuy?n th?i gian th?c (real-time streaming).
B?n có th? tìm hi?u thêm v? máy tính l??ng t? qua bài vi?t: Máy tính l??ng t? là gì? S? khác bi?t gi?a máy tính l??ng t? và máy tính thông th??ng
Khi h? th?ng có l??ng truy c?p cao và không cho phép downtime.
Chi?n l??c m? r?ng quy mô (scale-out) ???c s? d?ng b?i h?u h?t các c? s? d? li?u NoSQL cho phép chúng ta ho?ch ??nh ???c k? ho?ch rõ ràng v? vi?c m? r?ng l?u l??ng truy c?p. Các ki?n trúc m? r?ng quy mô c?ng mang các l?i ích nh? có th? nâng c?p c? s? d? li?u ho?c thay ??i c?u trúc c?a nó mà không c?n th?i gian downtime.
Nh?ng h?n ch? c?a CSDL NoSQL
S? nh?t quán
C? s? d? li?u NoSQL lo?i b? tính nh?t quán m?nh m?/t?c thì ?? có th? s? h?u tính kh? d?ng và hi?u su?t t?t h?n. C? s? d? li?u thông th??ng ??m b?o có các ho?t ??ng:
- Tính nguyên t? hay Atomicity: T?t c? các ph?n c?a giao d?ch thành công ho?c không có giao d?ch nào x?y ra
- Tính bi?t l?p hay Isolation: Các giao d?ch không c?nh tranh
- Tính nh?t quán hay Consistency: T?t c? ng??i dùng có cùng m?t ch? ?? xem d? li?u
- Tính b?n v?ng hay Durability: Kh? n?ng ph?c h?i t? tình tr?ng h? h?ng h? th?ng v? tr?ng thái ?ã bi?t cu?i cùng
No Schema
V?i c? s? d? li?u NoSQL, vi?c áp ??t các ràng bu?c liên quan ??n vi?c chuy?n trách nhi?m t? c? s? d? li?u sang developers.
Chia s? ??n b?n bài vi?t: Dreamweaver là gì? ?ánh giá v? ?u và nh??c ?i?m
Thi?u ng??i có k? n?ng v? NoSQL
Do c? s? d? li?u SQL ?ã ???c s? d?ng ph? bi?n và r?ng rãi t? lâu nên ch?c ch?n r?ng ng??i có k? thu?t v? SQL s? chi?m ?u th? h?n NoSQL g?p nhi?u l?n.
S? ph? thu?c
S? ph? thu?c này có th? tr? thành m?t tr? ng?i n?u b?n thay ??i h? th?ng. N?u b?n di chuy?n t? MongoDB sang CouchDB (ho?c ng??c l?i), b?n ph?i làm nhi?u giai ?o?n và công vi?c h?n ch? không ch? là di chuy?n d? li?u. B?n c?ng ph?i ?i?u h??ng s? khác bi?t trong quy?n truy c?p d? li?u, có ngh?a là b?n ph?i vi?t l?i các ph?n c?a ?ng d?ng truy c?p c? s? d? li?u.
Bài vi?t trên v?a cung c?p cho các b?n các thông tin quan tr?ng ?? có th? gi?i ?áp câu h?i NoSQL là gì và nh?ng ?i?u mà b?n c?n ph?i bi?t v? c? s? d? li?u NoSQL. C?m ?n các b?n ?ã theo dõi bài vi?t c?a chuyên m?c T?ng h?p.
??ng ký thành viên Casino VN138 ?? tham gia nhi?u game cá c??c th? thao h?p d?n và nh?n v? ti?n th??ng cho mình b?n nhé. V?i chính sách b?o m?t an toàn nên b?n có th? an tâm khi ??ng ký tham gia.