Thứ Ba, 8 tháng 1, 2013

Thời của NoSQL

NoSQL có nghĩa là Non-Relational (NoRel) – không ràng buộc – tuy nhiên, người ta thường dịch là Not Only SQL. Nói một cách đơn giản nhất, NoSQL là cơ sở dữ liệu mà không dùng mô hình dữ liệu quan hệ.
Các database như MS SQL Server, Oracle ... hiện đang tỏ ra khá chật vật và ngốn performance với một loạt các relation hay constrain và có vẻ không thích hợp với các ứng dụng kiểu cloud và realtime hiện nay như Cassandra của Facebook hay Big Table của Google.
MongoDB là một NoSQL Database kiểu Document-based hoàn toàn open source được viết trên C++ hỗ trợ các tính năng như : Fullindex, Fulltext Search, Replication, Sharding hay có thể lưu trữ dạng file với kích thước lớn tùy ý
-Một trong những thuận lợi tôi rất thích ở MongoDB là khả năng mở rộng theo chiều ngang [horizontal scalable], nghĩa là việc thêm column vào một table nào đó [chuyện này xảy ra như cơm bữa] là cực kỳ đơn giản.
-Tính năng Sharding tương tự tính năng cluster trong MS SQL Server giúp cho việc quản lý và query các record trở nên dễ dàng hơn, ngoài ra nó còn tăng khả năng ghi đọc lên database tránh khỏi các bottleneck lock do việc chia ra nhiều instance thực hiện ghi đọc
-Đối với các bạn thành thạo Javascript thì MongoDB quả thật là tuyệt vời với các câu query bằng javascript, có thể thoát khỏi sự ràng buộc của các trigger hay procedure của sql
-Aggregation Framework mang lại cho lập trình viên một tập các hàm xử lí toán học phục vụ phân tích thống kê dùng trong các hệ thống CMS
-Một tính năng độc đáo nữa có thể kể đến là khả năng query theo tọa độ đề các hoặc tọa độ vệ tinh nếu các bạn thu thập được : query theo bán kính, theo khoảng cách gần nhất
+ Khả năng ghi đọc của MongoDB có thể nói đã được cải thiện đáng kể so với các DB khác :
Với một Table gồm khoảng 10 field text chiều dài khoảng 100 characters, MongoDB có thể insert 1 triệu bản ghi trong vòng hơn 10 phút và chỉ với một instance. Nếu dùng nhiều instance thì tốc độ sẽ khủng khiếp hơn nhiều
Dữ liệu trong MongoDB được lưu trữ dạng BSON nên chiếm rất ít đĩa cứng và thuận thiện cho việc backup. Bạn có thể back up dạng bson hoặc dạng một file javascript tùy ý và việc restore là hoàn toàn dễ dàng.
+ Như đã nói ở phần trước, MongoDB là một db phát triển theo chiều ngang nên bạn có thể tùy ý thêm các trường mới vào table một cách dễ dàng với loại dữ liệu tùy ý. Tôi chắc chắn là với MS SQLServer có rất nhiều bạn đã gặp phải trường hợp cần đổi loại dữ liệu của một field nào đó mà không đổi được do số lượng record quá lớn, đơn giản là đổi từ int sang bigint cho đỡ tràn số.Với MongoDB thì việc này rất dễ dàng mà không phụ thuộc vào số lượng record hiện có trong table hay loại dữ liệu của field muốn sửa, ví dụ bạn có thể đổi từ int sang double,long,string,datetime,mảng hay bất cứ thứ gì bạn nghĩ ra thậm chí cả chính table chứa cái field đó (dữ liệu kiểu đệ quy, giống kiểu linked list)
+ Một điểm khá hay đó là bạn có thể insert một lúc rất nhiều record vào table(insert batch) mà các db hiện nay chưa hỗ trợ, việc này tiết kiếm khá nhiều thời gian truyền dữ liệu và khởi tạo connection
+ Với một câu lệnh theo cú pháp thì MongoDB sẽ thêm mới một record vào table nếu trong table chưa có hoặc update record nếu nó đã tồn tại

Không có nhận xét nào:

Đăng nhận xét