Cơ sở dữ liệu có thể được coi là một trong những thực thể thành phần quan trọng đối với công nghệ và ứng dụng. Dữ liệu cần được lưu trữ trong một cấu trúc và định dạng cụ thể để truy xuất bất cứ khi nào được yêu cầu. Tuy nhiên, có những tình huống mà dữ liệu không phải lúc nào cũng ở định dạng có cấu trúc, tức là, các lược đồ của chúng không cứng nhắc. Trong chương này, bạn sẽ tìm hiểu chi tiết về NoSQL và các tính năng đặc trưng của nó.


NoSQL là gì?

NoSQL có thể được định nghĩa là một cách tiếp cận để thiết kế cơ sở dữ liệu, chứa nhiều dữ liệu đa dạng như key– value, đa phương tiện, tài liệu, cột, định dạng đồ thị, tệp bên ngoài,v.v. NoSQL được phát triển có mục đích để xử lý các mô hình dữ liệu cụ thể có lược đồ linh hoạt để xây dựng các ứng dụng hiện đại.

NoSQL nổi tiếng với chức năng cao, dễ phát triển với hiệu suất trên quy mô lớn. Do tính năng xử lý dữ liệu đa dạng như vậy nên NoSQL được gọi là cơ sở dữ liệu phi quan hệ. Nó không tuân thủ theo các quy tắc của Hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) và do đó không sử dụng các câu lệnh SQL truyền thống để truy vấn dữ liệu của bạn. Một số ví dụ nổi tiếng alf MongoDB, Neo4J, HyperGraphDB,v.v.


Các loại cơ sở dữ liệu NoSQL

Cơ sở dữ liệu NoSQL thường thuộc bất kỳ một trong bốn loại sau:

1. Key-value stores: là kiểu đơn giản nhất mà mọi mục trong cơ sở liệu của bạn được lưu trữ dưới dạng tên thuộc tính cùng với giá trị.

2. Wide-colum stores: tích lũy dữ liệu chung dưới dạng cột chứ không phải hàng được tối ưu hóa để truy vấn tập dữ liệu lớn.

3. Document database: ghép mọi khóa với cấu trúc dữ liệu tổng hợp được gọi là tài liệu. Các tài liệu này chứa nhiều cặp key-value khác nhau, cũng như các cặp key-array hoặc đôi khi tài liệu lồng nhau.

4. Graph database: Được sử dụng để lưu trữ thông tin về mạng, như các kết nối xã hội.


Sự khác biệt giữa NoSQL và SQL

Dưới đây là danh sách so sánh giữa cả hai DBMS:

- Cơ sở dữ liệu SQL chủ yếu thuộc Relational Database(RDBMS) trong khi cơ sở dữ liệu NoSQL chủ yếu thuộc cơ sở dữ liệu phi quan hệ hoặc phân tán.

- Cơ sở dữ liệu SQL là cơ sở dữ liệu hướng bảng, trong khi cơ sở dữ liệu NoSQL hướng tới tài liệu có các cặp key-value hoặc các cửa hàng cột rộng hoặc cơ sở dữ liệu đồ thị.

- Cơ sở dữ liệu SQL có lược đồ tĩnh hoặc xác định trước là cứng nhắc, trong khi cơ sở dữ liệu NoSQL có lược đồ động hoặc linh hoạt để xử lý dữ liệu phi cấu trúc.

- SQL được sử dụng để lưu trữ dữ liệu có cấu trúc, trong khi NoSQL được sử dụng để lưu trữ có cấu trúc cũng như phi cấu trúc.

- Cơ sở dữ liệu SQL có thể được coi là có thể mở rộng theo chiều dọc, nhưng cơ sở dữ liệu NoSQL được coi là có thể mở rộng theo chiều ngang.

- Việc chia tỷ lệ cơ sở dữ liệu SQL được thực hiện bằng cách gắn mã lực của phần cứng của bạn. Tuy nhiên, việc mở rộng cơ sở dữ liệu NoSQL được tính toán bằng cách gắn các máy chủ cơ sở dữ liệu để giảm tải.

- Ví dụ về cơ sở dữ liệu SQL: MySQL,Sqlite,Oracle,Postgres SQL và MS-SQL. Ví dụ về cơ sở dữ liệu NoSQL: BigTable,MongoDB, Redis,Cassandra,RavenDb,Hbase,CouchDB và Neo4j.

- Khi các truy vấn của bạn là cơ sở dữ liệu SQL phức tạp thì cơ sở dữ liệu SQL rất phù hợp cho môi trường chuyên sâu và cơ sở dữ liệu NoSQL không phải là sự phù hợp tuyệt vời cho các truy vấn phức tạp. Các truy vấn của NoSQL không mạnh bằng ngôn ngữ truy vấn SQL.

- Cơ sở dữ liệu SQL cần khả năng mở rộng theo chiều dọc, tức là có thể quản lý vượt quá tải bằng cách tăng CPU, SSD,RAM,GPU,v.v. trên máy chủ của bạn. Trong trường hợp cơ sở dữ liệu NoSQL, chúng có thể mở rộng theo chiều ngang, tức là, việc bổ sung nhiều máy chủ hơn sẽ dễ dàng xử lý việc quản lý tải.