NoSQL là gì? NoSQL có nhanh hơn SQL?
Kinh nghiệm và Thủ thuật SQL Server

Danh sách bài học
NoSQL là gì? NoSQL có nhanh hơn SQL?
Dẫn nhập
Trong phát triển phần mềm, việc sử dụng các hệ quản trị cơ sở dữ liệu để lưu trữ thông tin là điều thiết yếu. Thường chúng ta hay sử dụng các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS), bằng cách dùng ngôn ngữ truy vấn SQL để quản lý database, RDBMS là một lựa chọn phổ biến trong việc lưu trữ thông tin từ những 1980 hiện nay. Song song với đó, có một khái niệm là NoSQL ra đời muộn hơn (sớm nhất là 1998) và từ năm 2009 đến hiện nay đang được mọi người biết đến.
Chúng ta hãy bắt đầu tìm hiểu về NoSQL và xem thử NoSQL có nhanh hơn SQL?
Nội dung
NoSQL là một khía cạnh thiết kế database bao gồm nhiều mô hình khác nhau, như là: key-value, document, columnar và graph formats. NoSQL viết tắt cho từ “Not only SQL” nhằm để thay thế hệ quản trị dữ liệu quan hệ truyền thống với dữ liệu. NoSQL database đặc biệt hữu dụng trong việc làm các bộ dữ liệu phân tán lớn.
NoSQL phổ biến từ đầu thập niên 2000 cho mục đích phân cụm database quy mô lớn trong ứng dụng cloud và web. Trong mỗi ứng dụng, yêu cầu cho hiệu suất và khả năng mở rộng vượt xa nhu cầu trong tính nhất quán dữ liệu cứng nhắc mà RDBMS cung cấp cho các ứng dụng doanh nghiệp.
Đáng chú ý, hệ thống NoSQL không yêu cầu phải thiết lập lược đồ quan hệ. Những trang web quy mô lớn như Google và Amazon sử dụng NoSQL tập trung vào mục tiêu hoạt động nhỏ và sử dụng cơ sở dữ liệu quan hệ trong những điều chỉnh việc nhất quán các dữ liệu cao cấp.
Các mô hình lưu trữ liệu trong NoSQL
Key-value stores
Key-value stores hay key-value database, là mô hình data đơn giản nhất với các cặp key duy nhất liên hệ một value. Mô hình này rất hiệu quả và khả năng mở rộng cao để quản lý session và caching trong web app. Việc thưc hiện nhiều cách khác nhau phụ thuộc nó lưu trữ vào đâu (RAM, SSD hay HDD). Những hệ quản trị tiêu biểu như: Redis, Riak, Berkeley DB,…
Document databases
Document databases (document stores) lưu trữ dữ liệu bán cấu trúc (hình phía dưới) và mô tả của dữ liệu trong document format. Nó cho phép lập trình viên có thể tạo và cập nhật chương trình mà không cần lược đồ tham chiếu tổng thể
Sử dụng document database đã gia tăng việc sử dụng ngôn ngữ JavaScript và JSON. Trong Document Database nổi tiếng hiện nay là MongoDB, và cặp đôi Node.jS và MongoDB như là cặp bài trùng trong các dự án hiện nay. Ngoài MongoDB, còn có những hệ quản trị khác như: CouchDB, DocumentDB ,…
Wide-column stores
Wide-column tổ chức quản lý bảng data theo cột thay vì dùng hàng. Wide-column stores có thể tìm thấy cả SQL và NoSQL. Wide-column stores có thể truy vấn lượng data lớn nhanh hơn cơ sở dữ liệu quan hệ thông thường, thường được sử dụng trong việc đề xuất danh mục, phát hiện gian lận hay xử lý các kiểu dữ liệu khác. Các hệ quản trị tiêu biểu như: Google Big Table, Cassandra hay HBase
Graph stores
Graph stores tổ chức data theo các node, được xem như là các recorded trong cơ sở dữ liệu quan hệ, và các cạnh (edges) được hiểu là mối liên kết các node. Bởi vì hệ thống graph lưu trữ mối quan hệ giữa các node, nó có thể hỗ trợ cách diễn tả phong phú trong những mối liên kết data.
Ngoài ra, không giống mô hình quan hệ phải phụ thuộc nghiêm ngặt vào lược đồ quan hệ, mô hình dữ liệu graph có thể nâng cấp theo thời gian và yêu cầu sử dụng. Graph database có thể áp dụng trong hệ thống mà chỉ cần liên kết các mỗi liên hệ, chẳng hạn như hệ thống đặt phòng hay quản lý quan hệ khách hàng. Những hệ quản trị tiêu biểu là AllegroGraph, IBM Graph, Neo4j,…
Object database
Object Database là hệ quản trị mà thông tin được biểu diễn theo cú pháp đối tượng trong lập trình hướng đối tượng. Các hệ quản trị tiêu biểu là GemStone/S, ObjectDB, ZODB,…
NoSQL có nhanh hơn SQL không?
Có một thực trạng hiện nay do nhiều người sử dụng NoSQL cảm thấy nó khá tiện nên cho rằng NoSQL nhanh hơn SQL, dẫn đến nhiều hậu quả là nhiều dự án triển khai toàn dùng NoSQL (điển hình là MongoDB) mà không hiểu tổng quan về những ứng dụng thích hợp cho NoSQL.
Về tốc độ, đó không phải yếu tố thúc đẩy việc phải dùng NoSQL. Nếu chúng ta mang database NoSQL và SQL so sánh về cập nhật và đọc dữ liệu, cả 2 đều phản hồi đều nhanh.
Sự khác biệt chính là, NoSQL database được thiết kế đặc biệt để xử lý những query cấp độ thấp, nó cho phép bạn get, set và một số thứ đơn giản như lấy trong phạm vi hoặc sắp xếp. Bất lợi lớn là bạn phải quyết định cách bạn sử dụng dữ liệu mà bạn đã đem vào và thiết kế lược đồ phù hợp, điều này cho phép bạn truy cập dữ liệu theo định dạng bạn yêu cầu.
SQL thì ngược lại, cung cấp dữ liệu bạn đưa vào theo một tiêu chuẩn chính xác, có thể thực hiện những câu query phức tạp cực kỳ lớn. Bạn không cần phải thiết kế lược đồ bên ngoài những use case, nó linh loạt cực kỳ mạnh mẽ trong ngôn ngữ truy vấn ở điểm có thể trả về bất kì dữ liệu ở định dạng bất kì mà không cần phải sửa đổi lược đồ cơ bản.
Đó là lý do SQL mang tiếng là chậm hơn, vì nó đang xử lý một truy vấn phức tạp trên một tập dữ liệu lớn, chắc chắn sẽ mất thời gian trong khi NoSQL đơn giản không thể cung cấp khả năng truy vấn phức tạp ngay từ đầu.
Kết
Như vậy Kteam đã giới thiệu cho các bạn về NoSQL, mong bài viết này bạn sẽ hiểu tổng quan của NoSQL để có lựa chọn phù hợp trong việc nghiên cứu tiếp theo.
Bạn cũng có thể tham khảo thêm NGUYÊN NHÂN VÀ PHƯƠNG PHÁP TỐI ƯU TRUY VẤN SQL
Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.
Tải xuống
Tài liệu
Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học NoSQL là gì? NoSQL có nhanh hơn SQL? dưới dạng file PDF trong link bên dưới.
Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com
Đừng quên like và share để ủng hộ Kteam và tác giả nhé!

Thảo luận
Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.
Nội dung bài viết
Khóa học
Kinh nghiệm và Thủ thuật SQL Server
Kinh nghiệm và Thủ thuật SQL Server
Đánh giá
Kiến thức tổng quan khá bổ ích, Trước đây cũng từng vướn vào 1 dự án không lường hết khả năng khi query và join vài chục table là có vấn đề về performance
Rất hay và bổ ích!