Skip to main content

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

SQL và NoSQL là gì?

SQL là gì?

SQL là viết tắt của Structured Query Language, là ngôn ngữ chuẩn để xử lý Cơ sở dữ liệu quan hệ, là một cơ sở dữ liệu quan hệ xác định các mối quan hệ dưới dạng các bảng. ( Thi thoảng còn gọi là See Quel)

SQL có thể được sử dụng hiệu quả để chèn, tìm kiếm, cập nhật, xóa các bản ghi cơ sở dữ liệu.

Các cơ sở dữ liệu quan hệ sử dụng SQL như: MySQL, Oracle, MS SQL Server, Sybase,… 

NoSQL là gì?

NoSQL là một cơ sở dữ liệu được xây dựng linh hoạt dành riêng cho mô hình dữ liệu, nó không có cơ chế liên kết, ko có lược đồ cố đinh mà là một kho dữ liệu phân tán.

NoSQL được sử dụng trong các ứng dụng cần dữ liệu theo thời gian thực (real time). Nó đang được áp dụng ở các công ty lớn như: Twitter , Facebook, Google 

Ví dụ 

+ SQL : 

Trong cơ sở dữ liệu quan hệ, hồ sơ về một cuốn sách thường được phân tách (chuẩn hóa) và lưu trữ trong các bảng tách biệt nhau còn mối quan hệ được quy định bằng các ràng buộc khóa ngoại và khóa chính (key).

Ví dụ ta có bảng Sách có các cột cho ISBNTên sách và Số phiên bản, ta lại có thêm một bảng Tác giả có các cột cho ID tác giả và Tên tác giả và cuối cùng bảng thứ ba là Tác giả–ISBN có các cột cho ID tác giả và ISBN.

Mô hình quan hệ được thiết kế để cho phép các cơ sở dữ liệu này thực thi tính toàn vẹn tham chiếu giữa nhiều bảng trong cơ sở dữ liệu, được chuẩn hóa để giảm dư thừa và thường được tối ưu hóa cho mục đích lưu trữ.

+ NoSQL:

Trong cơ sở dữ liệu NoSQL, hồ sơ về một cuốn sách thường được lưu trữ dưới dạng văn bản JSON.

Từng quyển sách, mục, ISBNTên sáchSố phiên bảnTên tác giả và ID tác giả được lưu trữ dưới dạng thuộc tính trong một văn bản duy nhất (document / Object ).

Trong mô hình này, dữ liệu được tối ưu hóa cho việc phát triển trực quan và khả năng thay đổi quy mô theo chiều ngang.

Sự khác nhau của SQL và NoSQL là gì?

  SQL Databases NoSQL Databases
Mô hình lưu trữ dữ liệu Bảng có hàng và cột cố định Document: JSON documents,lưu dưới dạng Key-value
Lịch Sử Phát Triển  Bắt đầu từ năm 1970 - mục đích là giảm sự trùng lặp dữ liệu  Bắt đầu cuối những năm 2000 - mục đích là mở rộng quy mô và sửa đổi nhanh chóng
Ví dụ Oracle, MySQL, Microsoft SQL Server, and PostgreSQL

Document: MongoDB and CouchDB, Key-value: Redis and DynamoDB

Wide-column: Cassandra and HBase, Graph: Neo4j and Amazon Neptune

Mục đích chính   Khắc phục điểm yếu SQL : lượng dữ liệu lớn khi có truy vấn đơn giản
Tính linh động Cứng nhắc Linh hoạt
Khả năng mở rộng Mở rộng theo chiều dọc   mở rộng theo chiều ngang
Thuộc tính ACID Cơ sở dữ liệu quan hệ có các thuộc tính mang tính nguyên tố, nhất quán, tách biệt và bền vững (ACID) Cơ sở dữ liệu NoSQL thường phải đánh đổi bằng cách nới lỏng một số thuộc tính ACID
Hiệu năng Phụ thuộc vào hệ thống con của ổ đĩa Phụ thuộc vào kích cỡ cụm phần cứng ngầm, độ trễ mạng và ứng dụng đưa ra lệnh gọi.

Có phải NoSQL tốt hơn SQL?

Câu trả lời là không. Bởi NoSQL ra đời để giải quyết những khó khăn khi xây dựng ứng dụng mà khi ta sử dụng SQL sẽ gặp nhiều khó khăn. Vậy nên NoSQL đã ra đời để thay thế trong những trường hợp như:

+ Bạn cần truy vấn dễ và nhanh hơn cho ứng dụng của mình

+ Dữ liệu của bạn không có cấu trúc cụ thể

+ Bạn cần sự linh hoạt khi thêm xóa trường dữ liệu, bảng nhanh chóng

+ Bạn không quá quang trọng tính ACID của transactión và tính nhất quán dữ liệu

Tóm lại cả 2 sẽ bổ trợ cho nhau, không thể thay thế nhau. Tốt nhất dùng kết hợp cả  để ứng dụng được hoạt động hiệu quả