Nosql là gì? Các hệ thống NoSQL phổ biến

NoSQL Database là một hệ cơ sở dữ liệu mới nổi trong giới lập trình. Hôm nay chúng ta sẽ cùng nhau tìm hiểu những khía cạnh cơ bản về NoSQL. Cùng theo dõi nhé!

SQL là gì?

SQL chính là viết tắt của Structured Query language, được phát âm là “S-Q-L” hoặc đôi khi là “See-Quel” là ngôn ngữ chuẩn để xử lý Cơ sở dữ liệu quan hệ. 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.

SQL là gì?

Lập trình 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.

Điều đó không có nghĩa là SQL không thể làm được gì ngoài việc đó. Nó có thể làm rất nhiều thứ bao gồm, nhưng không giới hạn, tối ưu hóa và duy trì cơ sở dữ liệu.

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

NoSQL là gì?

NoSQL là một DMS không quan hệ, không yêu cầu một lược đồ cố định, tránh các phép nối, và dễ dàng mở rộng. Cơ sở dữ liệu NoSQL được sử dụng cho các kho dữ liệu phân tán với nhu cầu lưu trữ dữ liệu khổng lồ. NoSQL được sử dụng cho dữ liệu lớn và các ứng dụng web thời gian thực. Ví dụ như các công ty như Twitter, Facebook, Google thu thập hàng terabyte dữ liệu người dùng mỗi ngày.

NoSQL là gì?

Cơ sở dữ liệu NoSQL là viết tắt của “Không chỉ SQL” hoặc “Không phải SQL”. Mặc dù một thuật ngữ tốt hơn sẽ NoREL NoSQL bắt gặp. Carl Strozz giới thiệu khái niệm NoSQL vào năm 1998.

RDBMS truyền thống sử dụng cú pháp SQL để lưu trữ và truy xuất dữ liệu để có thêm thông tin chi tiết. Thay vào đó, một hệ thống cơ sở dữ liệu NoSQL bao gồm một loạt các công nghệ cơ sở dữ liệu có thể lưu trữ dữ liệu có cấu trúc, bán cấu trúc, không có cấu trúc và đa hình.

Các đặc điểm của NoSQL

Sau đây mình sẽ liệt kê một vài đặc điểm của NoSQL:

  • Phi quan hệ: không có ràng buộc nào cho việc nhất quán dữ liệu.
  • Mô hình lưu trữ phân tán các tập tin hoặc dữ liệu ra nhiều máy khác nhau trong mạng LAN hoặc Internet dưới sự kiểm soát của phần mềm.
  • NoSQL lưu trữ dữ liệu của mình theo dạng cặp giá trị “key – value”. Sử dụng số lượng lớn các node để lưu trữ thông tin.
  • Tính nhất quán không theo thời gian thực: Sau mỗi thay đổi CSDL, không cần tác động ngay đến tất cả các CSDL liên quan mà được lan truyền theo thời gian.
  • Mô hình dữ liệu và truy vấn linh hoạt.
  • Triển khai đơn giản, dễ nâng cấp và mở rộng.

Các hệ thống NoSQL phổ biến

Với NoSQL, dữ liệu có thể được lưu trữ theo kiểu đơn giản lược đồ hoặc dạng tự do. Dữ liệu bất kỳ có thể được lưu trữ trong bản ghi bất kỳ. Trong số các cơ sở dữ liệu NoSQL, có 4 mô hình lưu trữ dữ liệu phổ biến, do đó, có 4 loại hệ thống NoSQL phổ biến:

1. Document database: (ví dụ: CouchDB, MongoDB): Dữ liệu thêm vào sẽ được lưu trữ dưới dạng cấu trúc JSON tự do hoặc “tài liệu”, ở đó dữ liệu có thể là bất kỳ dạng nào từ số nguyên đến chuỗi dữ liệu đến văn bản dạng tự do.

2. Key-value stores (ví dụ: Redis, Riak): Các giá trị dạng tự do — từ các số nguyên hoặc chuỗi đơn giản đến các tài liệu JSON phức tạp —truy cập được trong cơ sở dữ liệu sử dụng các phím.

3. Wide column stores (ví dụ: HBase, Cassandra): Dữ liệu được lưu trữ dạng cột thay vì theo hàng như trong hệ thống SQL thông thường. Bất kỳ số cột nào (và do đó có nhiều loại dữ liệu khác nhau) có thể được nhóm hoặc tổng hợp khi cần thiết cho các truy vấn hoặc chế độ xem dữ liệu.

4. Graph database (ví dụ: Neo4j): Dữ liệu được biểu diễn dưới dạng mạng hoặc đồ thị các đối tượng và mối quan hệ của các đối tượng đó, với mỗi node trong biểu đồ là một đoạn dữ liệu dạng tự do.

Dạng lưu trữ kiểu lược đồ đơn giản (loại bỏ lược đồ) sẽ hữu ích trong các trường hợp cụ thể sau:

– Người dùng muốn truy cập nhanh vào dữ liệu, người dùng quan tâm đến tốc độ và tính đơn giản khi truy cập hơn là độ tin cậy hay tính nhất quán của giao dịch.

– Khi người dùng lưu trữ một lượng lớn dữ liệu và không muốn bị hạn chế bởi các lược đồ, bởi việc thay đổi lược đồ có thể sẽ diễn ra rất chậm và khó khăn.

– Người dùng đang nhập vào các dữ liệu phi cấu trúc từ một hay nhiều nguồn và bạn muốn dữ liệu ở dạng nguyên bản để tận dụng tối đa tính linh hoạt.

– Người dùng muốn lưu trữ dữ liệu trong một cấu trúc phân cấp, nhưng các thứ bậc đó cần phải được mô tả bởi chính dữ liệu mà không phải là một lược đồ. NoSQL cho phép dữ liệu có thể tự mô phỏng với phương thức phức tạp hơn cơ sở dữ liệu SQL.

NoSQL có tính linh hoạt, khả năng mở rộng và hiệu suất cao

Những hạn chế của NoSQL

– Không có lược đồ: Với NoSQL, trách nhiệm sẽ được chuyển từ cơ sở dữ liệu sang nhà phát triển ứng dụng. Ví dụ, nhà phát triển có thể áp đặt cấu trúc thông qua một hệ thống map đối tượng quan hệ hoặc ORM. Nhưng nếu bạn muốn lược đồ tự dữ liệu, NoSQL thường sẽ không hỗ trợ.

– Thiếu tính nhất quán: Dữ liệu được chèn vào cụm dỳ thế nào cũng sẽ khả dụng trên toàn bộ hệ thống, nhưng không thể biết chắc chắn khoảng thời gian nào.

– NoSQL lock-in: Hầu hết các hệ thống NoSQL đều tương tự về khái niệm, tuy nhiên, cách thực hiện lại rất khác nhau. Mỗi hệ thống sẽ có cơ chế truy vấn dữ liệu và quản lý riêng. Điều này có thể sẽ trở gây ra trở ngại nếu xảy ra các thay đổi hệ thống trong quá trình làm việc.

– Kỹ năng NoSQL: Một hạn chế khác đối với NoSQL là người sử dụng có thể sẽ thiếu các kỹ năng chuyên môn ở mức tương đối bởi hệ thống này còn khá mới và không phải ai cũng biết cách sử dụng thành thạo.

Phân biệt SQL và NoSQL

Phân biệt SQL và NoSQL
Lịch sử SQL Database Được phát triển vào những năm 1970 với làn sóng ứng dụng lưu trữ dữ liệu đầu tiên. NoSQL Database Được phát triển vào 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 liên quan đến quy mô, nhân rộng và lưu trữ dữ liệu phi cấu trúc.
CSDL đại diện MySQL, Postgres, Oracle Database MongoDB, Cassandra, HBase, Neo4j
Mô hình dữ liệu Các bản ghi riêng lẻ (ví dụ: “nhân viên”) được lưu trữ dưới dạng các hàng trong bảng, với mỗi cột lưu trữ một phần dữ liệu cụ thể về bản ghi đó (ví dụ: “người quản lý”, “ngày được thuê”…), giống như một bảng tính. Các kiểu dữ liệu riêng biệt được lưu trữ trong các bảng riêng biệt và sau đó được nối với nhau khi các truy vấn phức tạp hơn được thực thi. Ví dụ: “văn phòng” có thể được lưu trữ trong một bảng và “nhân viên” trong bảng khác. Khi người dùng muốn tìm địa chỉ làm việc của nhân viên, công cụ cơ sở dữ liệu sẽ nối các bảng “nhân viên” và “văn phòng” lại với nhau để có được tất cả thông tin cần thiết. Khác nhau dựa trên loại cơ sở dữ liệu NoSQL. Ví dụ: các key-value store hoạt động tương tự như cơ sở dữ liệu SQL, nhưng chỉ có hai cột (“khóa-key” và “giá trị-value”). Document database loại bỏ hoàn toàn mô hình table-and-row, lưu trữ tất cả dữ liệu có liên quan với nhau tại một “tài liệu” duy nhất trong JSON, XML hoặc định dạng khác, có thể lồng các giá trị theo thứ bậc.
Khả năng mở rộng Theo chiều dọc, có nghĩa là máy chủ duy nhất phải ngày càng mạnh mẽ để đáp ứng nhu cầu mở rộng của dữ liệu. Có thể mở rộng cơ sở dữ liệu SQL trên nhiều máy chủ, nhưng cần bổ sung thêm kỹ thuật quan trọng. Theo chiều ngang, có nghĩa là để thêm dung lượng, người quản trị cơ sở dữ liệu chỉ cần thêm nhiều máy chủ hoặc đám mây. Cơ sở dữ liệu NoSQL 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ở
Thao tác dữ liệu Ngôn ngữ cụ thể bằng cách sử dụng các câu lệnh Select, Insert, Update.
Ví dụ: SELECT fields FROM table WHERE…
Thông qua các API hướng đối tượng
Tính nhất quán Có tính nhất quán mạnh mẽ Phụ thuộc vào hệ thống. Có hệ thống ưu tiên cung cấp tính nhất quán (ví dụ: MongoDB) trong khi một số khác cung cấp tính nhất quán cuối cùng (ví dụ: Cassandra)
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ác bản ghi có thể thêm thông tin mới một cách nhanh chóng, không giống như các hàng trong bảng SQL, dữ liệu khác nhau có thể được lưu trữ cùng nhau khi cần thiết. Đối với một số cơ sở dữ liệu việc thêm các trường mới một cách linh hoạt sẽ khó khăn hơn.

Trên đây, dean2020.edu.vn đã tổng hợp và chia sẻ đến các bạn những kiến thức liên quan đến Nosql. Hy vọng rằng với những chia sẻ trên đây sẽ giúp bạn có thêm những kiến thức bổ ích nhé!

Related Posts

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *