NoSQL là gì?
Cơ sở dữ liệu (CSDL) NoSQL là viết tắt của "Not Only SQL" hoặc "Not SQL". Một thuật ngữ tốt hơn NoREL (Not RELational), NoSQL cũng được. Carl Strozz giới thiệu khái niệm NoSQL vào năm 1998.
NoSQL cung cấp cơ chế mô hình hoá, lưu trữ và truy xuất dữ liệu theo cách thức khác so với sử dụng các bảng trong Cơ sở dữ liệu quan hệ.
NoSQL bao gồm rất nhiều công nghệ cơ sở dữ liệu khác nhau được phát triển để đáp ứng các yêu cầu được đưa ra trong việc xây dựng các ứng dụng hiện đại:
- Các nhà phát triển đang làm việc với các ứng dụng tạo ra khối lượng lớn các loại dữ liệu mới, thay đổi nhanh chóng - dữ liệu có cấu trúc, bán cấu trúc, không cấu trúc và đa hình.
- Lâu rồi là chu kỳ phát triển thác nước mười hai đến mười tám tháng. Bây giờ các nhóm nhỏ làm việc trong các lần chạy nước rút nhanh, lặp lại nhanh chóng và đẩy mã mỗi tuần hoặc hai, một số thậm chí nhiều lần mỗi ngày
- Các ứng dụng từng phục vụ đối tượng hữu hạn giờ đây được phân phối dưới dạng dịch vụ phải luôn luôn bật, có thể truy cập từ nhiều thiết bị khác nhau và được thu nhỏ trên toàn cầu cho hàng triệu người dùng.
- Các tổ chức hiện đang chuyển sang kiến trúc mở rộng bằng cách sử dụng phần mềm nguồn mở, máy chủ hàng hóa và điện toán đám mây thay vì máy chủ nguyên khối lớn và cơ sở hạ tầng lưu trữ.
Cơ sở dữ liệu quan hệ không được thiết kế để đối phó với các thách thức thay đổi quy mô rất nhanh trong các ứng dụng hiện đại, chúng cũng không được xây dựng để tận dụng khả năng lưu trữ và xử lý dữ liệu hiện có.
Các loại Cơ sở dữ liệu NoSQL
- Cơ sở dữ liệu tài liệu (Document Database): với mỗi cặp khoá (key) với một cấu trúc dữ liệu phức tạp được biết đến như là một tài liệu (document). Tài liệu có thể chứa nhiều cặp khác nhau "khoá-giá trị" (key-value) hoặc cặp "khoá-mảng" (key-array) hoặc lồng trong tại liệu khác.
- Cơ sở dữ liệu Đồ thị (Graph Stores): sử dụng lưu trữ thông tin về mạng lưới dữ liệu (network data) giống như các liên kết xã hội. Các loại CSDL đồ thì như Neo4J, InfoGridl,...
- Cơ sở dữ liệu Khoá-Giá trị (Key-value stores): là một CSDL NoSQL đơn giản. Với mọi thành phần đơn trong CSDL là lưu trữ tên thuộc tính (hoặc khoá) với một giá trị.
- Cơ sở dữ liệu cột rộng (Wide-column stores): điển hình như Cassandra, HBase đã tối ưu hoá cho truy vấn với một tập dữ liệu (dataset) lớn và lưu trữ các cột của dữ liệu cùng nhau thay thế cho hàng.
Những lợi ích của CSDL NoSQL
- Khối lượng lớn dữ liệu thay đổi nhanh chóng có cấu trúc, bán cấu trúc và không cấu trúc
- Chạy nước rút nhanh, lặp lại lược đồ nhanh và đẩy mã thường xuyên
- Lập trình hướng đối tượng, dễ sử dụng và linh hoạt
- Kiến trúc quy mô phân bố theo địa lý thay vì kiến trúc nguyên khối đắt tiền
Sự khác nhau giữa CSDL NoSQL và CSDL SQL
Tiêu chí so sánh | CSDL SQL | CSDL NoSQL |
---|---|---|
Định nghĩa | CSLD SQL có tên chính là RDBMS (Relational Database Management System) hay CSLD Quan hệ | CSDL NoSQL cũng được gọi là Non-Relational hoặc CSDL phân tán |
Kiểu | Chỉ có một kiểu CSDL SQL với sự khác biệt rất ít các loại CSDL | Có nhiều loại khác nhau: Khoá-Giá trị, Tài liệu, Cột rộng, Đồ thị |
Lịch sử phát triển | Được phát triển vào những năm 1970 để đối phó với làn sóng ứng dụng lưu trữ dữ liệu đầu tiên | Được phát triển vào cuối những năm 2000 để giải quyết các hạn chế của cơ sở dữ liệu SQL, đặc biệt là khả năng mở rộng, dữ liệu đa cấu trúc, phân phối địa lý và phát triển linh hoạt |
Lược đồ | Cấu trúc và kiểu dữ liệu được cố định trước. Để lưu trữ thông tin về một mục dữ liệu mới, toàn bộ cơ sở dữ liệu phải được thay đổi, trong thời gian đó cơ sở dữ liệu phải được ngoại tuyến. | Được phát triển vào cuối những năm 2000 để giải quyết các hạn chế của cơ sở dữ liệu SQL, đặc biệt là khả năng mở rộng, dữ liệu đa cấu trúc, phân phối địa lý và phát triển linh hoạt |
Khả năng co dãn | Theo chiều dọc, có nghĩa là một máy chủ duy nhất phải được tạo ra ngày càng mạnh mẽ để đáp ứng nhu cầu gia tăng. Có thể truyền bá cơ sở dữ liệu SQL trên nhiều máy chủ, nhưng thường cần có kỹ thuật bổ sung quan trọng và các tính năng quan hệ cốt lõi như NỐI (JOINs), tính toàn vẹn tham chiếu và giao dịch thường bị mất. | Theo chiều ngang, có nghĩa là để thêm dung lượng, người quản trị cơ sở dữ liệu có thể chỉ cần thêm nhiều máy chủ hoặc các máy chủ đám mây. Cơ sở dữ liệu tự động phân tán dữ liệu trên các máy chủ khi cần thiết. |
Mô hình phát triển | Kết hợp mã nguồn mở (ví dụ: Postgres, MySQL) và mã nguồn đóng (ví dụ: Cơ sở dữ liệu Oracle) | Mã nguồn mở |
Hỗ trợ giao dịch với tính chất ACID | Có | Chủ yếu là không, MongoDB từ phiên bản 4.0 về sau mới hỗ trợ |
Thao tác dữ liệu | Ngôn ngữ cụ thể là SQL sử dụng các câu lệnh SELECT, INSERT, UPDATE, DELETE | Thông qua thư viện lập trình hướng đối tượng |
Tính nhất quán | Có thể được cấu hình để thống nhất mạnh mẽ | Phụ thuộc vào sản phẩm. Một số cung cấp tính nhất quán mạnh mẽ (ví dụ: MongoDB, với tính nhất quán có thể điều chỉnh để đọc) trong khi những sản phẩm khác tính nhất quán được đặt sau cùng (ví dụ: Cassandra) |
Các sản phẩm | MySQL, Postgres, Microsoft SQL Server, Oracle Database | MongoDB, Cassandra, HBase, Neo4j |