thắc mắc Khi nào nên sử dụng NoSQL

hungdt138

Senior Member
Nhờ các thím có kinh nghiệm cho ít ví dụ thực tế với, em chưa làm nên đọc vẫn thấy hơi mông lông :D
 
Mình cũng mới học,như thằng mongodb sẽ dùng cho các db lưu log chat, notification, kiểu thế...

Log thì chắc ok rồi nhưng còn với các nghiệp vụ chuyên biệt như quản lý tài sản, quản lý khách hàng .... thì áp dụng nó sẽ ntn :D.
 
Hệ thống lớn có thể dùng nhiều db system. Ví dụ cái nào cần ràng buộc chặt chẽ như account unique, balance... thì dùng RDBMS, còn kiểu log, notify... thì dùng nosql.

via theNEXTvoz for iPhone
 
NoSQL chưa / vừa mới support Transaction (như mongo mới support từ bản 4.2) nên nếu project yêu cầu tính bảo toàn dữ liệu thì không nên xài (ví dụ như các tác vụ liên quan tới thanh toán như làm mấy trang ecommerce chẳng hạn).

Ngược lại thì những gì không cần tới tính bảo toàn dữ liệu thì xài :D Với cả dùng NoSQL thì phù hợp cho các project cần thời gian hoàn thành gấp rút.

Này là e rút ra sau khi đã tham gia vài project :D
 
Trong mắt của mình với CosmosDB (1 NoSQL DB trong stack của Microsoft, công việc mình theo stack của thằng này) thì, cái quan trọng nhất của thằng này là tính distributed.

Với việc nó là distributed, scale-out thì nó có năng lực lưu trữ và xử lý gần như vô hạn, ngoài ra việc nó global-distributed còn giúp nó tăng availbility và serving nữa.

Khi mà distributed thì nó sinh ra cơ chế để phân tán việc xử lý và lưu trữ data => logical partition và physical partition. Với partition key => route data/processing vào physical partition.

Và khi mà nó đẻ ra cơ chế logical partition và partition key thì lúc đó người ta dùng cái cơ chế free-schema để nhét những document tuy khác nhau nhưng liên quan vào chung với nhau vào cùng 1 chỗ (logical partition). Và lúc đó người ta cầm partition key để neo, query phát ra chính nó hoặc đám thứ liên quan đến nó với tốc độ rất nhanh.

Mình đánh giá những thứ trên với cosmosDB quan trọng hơn rất nhiều với việc free-schema để code cho khỏe hay đỡ việc phải join.
 
Last edited:
nếu nói về feature thì hầu như chả có lý do vẹo gì dùng nosql. tất cả mọi thứ thằng rdbms đều hơn hết.
kể cả vụ log hay mấy cái tương tự, không tin các bạn có thể đọc cái này:
https://blog.timescale.com/blog/building-a-distributed-time-series-database-on-postgresql/
10triệu entries/giây nó còn làm được.

cái ngon hơn của nosql là nó phát triển nhanh, lúc đầu khi làm product các bạn hầu như không có hiểu biết gì về nó, sửa đi sửa lại db cũng mệt, dùng mấy cái document store lưu luôn json vào tiện hơn hẳn.
 
Lời khuyên của mình: Nên phụ thuộc vào dữ liệu bạn muốn lưu, nếu dữ liệu có quan hệ với nhau, ràng buộc thì tất nhiên sẽ dùng csdl quan hệ, nosql thì ngược lại.
Trên cty có ông dùng mongodb lưu các dữ liệu có quan hệ, query mệt lử luôn, vừa mất an toàn hơn, vừa dev khó + lâu hơn
 
Back
Top