NoSQL là gì? Nh?ng ?i?u b?n c?n bi?t v? c? s? d? li?u NoSQL

NoSQL là gì? Nh?ng ?i?u b?n c?n bi?t v? c? s? d? li?u NoSQL

??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, TwitterGoogle 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.

NoSQL là gì?
NoSQL là gì?

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.
Khác nhau gi?a C? s? d? li?u SQL và NoSQL
Khác nhau gi?a C? s? d? li?u SQL và NoSQL

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.

Khi nào s? d?ng C? s? d? li?u NoSQL?
Khi nào s? d?ng C? s? d? li?u NoSQL?

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?tMá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.

Khi h? th?ng có l??ng truy c?p cao và không cho phép downtime.
Khi h? th?ng có l??ng truy c?p cao và không cho phép 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
S? nh?t quán
S? nh?t quán

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.

S? ph? thu?c
S? ph? thu?c

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.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

??ng ký ngay!