Monday, October 19, 2020

SQL vs NoSQL



1. SQL là gì ?

SQL chứa dữ liệu trong hàng và cột. 

Hàng chứa tất cả thông tin của thực thể và cột chứa điểm dữ liệu. SQL là cơ sở dữ liệu quan hệ, cái cơ sở dữ liệu quan hệ nổi tiếng như MySQL, Oracle, MS SQL Server, SQLite Postgres và MariaDB.

 2. NoSQL là gì ?

NoSQL có một số loại như:

Key-Value Stores

Dữ liệu là một array chứa key và value,  Redis, Voldemort, Dynamo sử dụng key-value stores.

Document Databases:

 Dữ liệu trong các cơ sở dữ liệu này được lưu vào document, và các document được nhóm lại vào trong các collections. Mỗi document có thể có cấu trúc khác nhau hoàn toàn. CouchDB, MongoDB sử dụng cơ chế này.

Wide-Column Databases

Khái niệm column families chính  là container cho các hàng, mỗi hàng không cần số lượng cột như nhau. Loại NoSQL này phù hợp cho công việc phân tích dữ liệu cho tập dữ liệu, một số tên có thể kể đến như Cassandra, HBase.

Graph Databases

Cơ sở dữ liệu này chứa dữ liệu theo các quan hệ được trình bày thông qua đồ thị. Dữ liệu được lưu trong cấu trúc đồ thị với node( thực thể), properties(thông tin của thực thể), lines(đường kết nối giữa các thực thể). Nổi bật như Neo4J và InfiniteGraph.

3. SQL khác NoSQL những gì ?

Sự khác biệt được đánh giá qua 4 tiêu chí storage, schema, querying, scalability.

Storage

Sql chứa dữ liệu trong dòng và cột, dòng chứa thông tin của một thực thể, hàng là một điểm dữ liệu của bảng. nosql có nhiều hơn là một cách lưu thông tin vào dòng và cột.

Schema

Cấu trúc một table của sql là cố định, trong trường hợp muốn thay đổi thì toàn bộ table bị block và tốn nhiều thời gian để cập nhật lại cấu trúc. NoSql schema thì linh hoạt, cột có thể được thêm vào trong lúc bảng đang hoạt động và không block lại cơ sở dữ liệu.=

Querying

SQL sử dụng để định nghĩa và điều khiển dữ liệu. NoSQL các truy vấn tập trung vào các collections, còn được gọi là UnQL. Mỗi cơ sở dữ liệu khác nhau  sẽ có syntax khác nhau cho UnQL.

Scalability

Khái niệm scale theo chiều dọc nghĩa là tăng cpu, mem, .. cho phần cứng, chi phí để scale đắt đỏ, được dùng cho các cơ sở dữ liệu SQL. Khái niệm scale theo chiều ngang nghĩa là dễ dàng thêm server để có sức chịu tải, các phần cứng hoặc là điện toán đám mây giá thành thấp có thể đáp ứng cho quá trình scale theo chiều ngang. Các công nghệ NoSQL thường được tích hợp kỹ thuật lưu trữ phân tán.

Reliability hoặc tính ACID(Atomicity, Consistency, Isolation, Durability): 

cơ sở dữ liệu SQL đảm bảo tính ACID. Nếu nhu cầu là tính bảo mật và đáng tin cậy trong quá trình các giao dịch diễn ra thì SQL là lựa chọn tốt hơn. 

Các công nghệ NoSQL thường hi sinh các tính chất của ACID để cải thiện performance và khả năng mở rộng.

 
biz.