Home » TechNote » Giới thiệu NoSQL

Giới thiệu NoSQL

  nosql

 

1. NoSQL là gì:

 “Next Generation Databases mostly addressing some of the points: being non-relational, distributed (phân tán), open-source and horizontally scalable.”

định nghĩa từ http://nosql-database.org/

định nghĩa noSQL theo SQL:  “select fun, profit from real_world where relational=false;” => like it

Như vậy NoSQL là 1 cơ sở dữ liệu mà không dùng mô hình dữ liệu quan hệ (non-relational), phân tán (distributed),  khả năng mở rộng chiều ngang (horizontal scaling)

Có thể lưu trữ, xử lý từ một lượng rất nhỏ cho tới hàng petabytes dữ liệu trong hệ thống có độ chịu tải, lỗi cao với những đòi hỏi về tài nguyên phần cứng thấp.


Lịch sử

Thuật ngữ NoSQL được giới thiệu lần đầu vào năm 1998 sử dụng làm tên gọi chung cho các lightweight open source relational database (cơ sở dữ liệu quan hệ nguồn mở nhỏ) nhưng không sử dụng SQL cho truy vấn.

Vào năm 2009, Eric Evans, nhân viên của Rackspace giới thiệu lại thuật ngữ NoSQL trong một hội thảo về cơ sở dữ liệu nguồn mở phân tán. Thuật ngữ NoSQL đánh dấu bước phát triển của  thế hệ database mới: distributed (phân tán) + non-relational (không ràng buộc).

 

2. Tại sao dùng NoSQL

Như chúng ta biết chúng ta đang trong thời kỳ Web 2.0 bùng nổ, nơi các mạng dịch vụ dữ liệu cộng đồng cho phép người dùng tạo hàng tỷ nội dung trên web. Do đó, dữ liệu lớn rất nhanh vượt qua giới hạn phần cứng cần phải giải quyết bằng bài toán phân tán.

Một vài ví dụ về việc sử dụng NoSQL: facebook (sử dụng Cassandra), google (BigTable)

 

Năm điểm mạnh của NoSQL

  • Mở rộng (Elastic scaling)
không chỉ có thể mở rộng theo chiều dọc (vertical scalable hay scale up)  mà còn có thể mở rộng theo chiều ngang (horizontal scalable hay scale out)

Khi dữ liệu lớn về lượng, phương pháp tăng cường khả năng lưu trữ và xử lý là dùng nhiều máy tính phân tán. Phân tán dữ liệu được hỗ trợ bởi phần mềm tức cơ sở dữ liệu.

Trong khi giá thành phần cứng ngày càng giảm, tốc độ xử lý, bộ nhớ ngày càng tăng thì horizontal scalable là một lựa chọn đúng đắn. Hàng trăm máy tính nhỏ được chập lại tạo thành một hệ thống tính toán mạnh hơn nhiều so với vi xử lý RISC truyền thống đơn lẻ. Mô hình này tiếp tục được hỗ trợ bởi các công nghệ kết nối Myrinet và InfiniBand. Từ đó chúng ta có thể quản lý, bảo trì từ xa, xây dựng batch procession (xử lý đồng loạt tập lệnh) tốt hơn. Do những đòi hỏi về tốc độ xử lý I/O cao, lượng cực lớn dữ liệu,… scale horizontally sẽ thúc đẩy các công nghệ lưu trữ mới phát triển giống như object storage devices (OSD).

 
  • Dữ liệu lớn (Big data)
Ngày nay bạn đã thấy rất nhiều ứng dụng với lượng dữ liệu khổng lồ  (facebook, google)  sẽ có rất nhiều khó khăn để đạt được khả năng xử lý như mong muốn đối với một hệ quản trị dữ liệu ràng buộc (rdbms), nhưng lại có thể được giải quyết bằng noSQL,  chẳng hạn như facebook sử dụng Cassandra, google sử dụng BigTable hay Hadoop, vượt xa những gì có thể được xử lý bởi các RDBMS lớn nhất

 
  • Giảm thiểu quản lý (Less management)
Trong những năm qua hệ thống RDBMS chỉ có thể được duy trì với những DBA cao cấp, DBA mật thiết liên quan đến việc thiết kế, lắp đặt và điều chỉnh liên tục của hệ thống RDBMS cao cấp, nhưng đối với NoSQL mọi chuyện dường như đơn giản hơn nhiều với việc tự động sửa chữa, phân phối dữ liệu và mô hình dữ liệu đơn giản hơn dẫn đến yêu cầu quản lý cũng thấp hơn

thậm chí còn có tin đồn về việc những DBA sắp tới ngày tàn

 
  • Kinh tế (Economics)
NoSQL thường sử dụng hàng loạt những máy nhỏ theo mô hình phân tán để lưu trữ và quản lý dữ liệu trong khi các RDBMS  lại sử dụng những máy chủ hàng khủng, độc quyền và dĩ nhiên là đắt tiền rồi

Thành thử ra chi phí cho mỗi GB hay transaction/second của NoSQL có thể thấp hơn nhiều so với RDBMS

 
  • Mô hình dữ liệu linh động (Flexible data models)
Quản lý thay đổi trong RDBMS là một việc tương đối đau đầu (với một lượng dữ liệu lớn thì quả thực là 1 vấn đề)

NoSQL thì dễ dàng hơn nhiều ví dụ như để thêm 1 cột trong RDBMS với lượng dữ liệu lớn, performance giảm đi đáng kể trong khi đó đối với NoSQL lại gần như không phải là vấn đề tuy nhiên có thể có những rủi ro như việc toàn vẹn dữ liệu.

 

Tóm lại:

NoSQL đặc biệt thích hợp cho các ứng dụng cực lớn (dịch vụ tìm kiếm, mạng xã hội ,…) và nhỏ. Với những ứng dụng vừa và lớn thì RDBMs vẫn thích hợp hơn.

Thiết kế NoSQL chấp nhận tính nhất quán yếu và có thể không dùng đến ‘transaction’. Với những ứng dụng đòi hỏi sự chặt chẽ của dữ liệu, cần ‘transaction’ đảm bảo tính toàn vẹn, cơ sở dữ liệu truyền thống là lựa chọn thích hợp hơn. NoSQL thích hợp cho các mô hình lưu trữ dữ liệu có tính đặc thù như object oriented, document oriented, xml database,…

Thường chúng ta sử dụng rất hạn chế những khả năng mà các CSDL RDBM cung cấp nhưng vẫn phải trả phí cho nó. Nếu không cần đến các tính năng cao cấp, không cần các chức năng của SQL hoặc rất ghét viết các câu lệnh SQL thì hãy nghĩ đến NoSQL.

Tham khảo

http://www.pcworld.com.vn/articles/cong-nghe/cong-nghe/2011/03/1222905/nosql-phan-tan-khong-rang-buoc/

http://www.ncs-london.com/blog/Five-Benefits-of-a-noSQL-approach-to-DBA-management