Cơ sở dữ liệu NoSQL (non-relational Data Management System - không chỉ SQL) là cơ sở dữ liệu không phải dạng bảng và lưu trữ dữ liệu khác với các bảng quan hệ. Tổng quan về cơ sở dữ liệu phi quan hệ?
Mục lục bài viết
1. NoSQL là gì?
– Cơ sở dữ liệu NoSQL (non-relational Data Management System – không chỉ SQL) là cơ sở dữ liệu không phải dạng bảng và lưu trữ dữ liệu khác với các bảng quan hệ. Cơ sở dữ liệu NoSQL có nhiều loại dựa trên mô hình dữ liệu của chúng. Các loại chính là tài liệu, khóa-giá trị, cột rộng và biểu đồ. Chúng cung cấp các lược đồ linh hoạt và mở rộng quy mô một cách dễ dàng với lượng lớn dữ liệu và lượng người dùng tải cao.
– Khi mọi người sử dụng thuật ngữ “cơ sở dữ liệu NoSQL”, họ thường sử dụng nó để chỉ bất kỳ cơ sở dữ liệu không quan hệ nào. Một số người nói rằng thuật ngữ “NoSQL” là viết tắt của “non SQL” trong khi những người khác nói rằng nó là viết tắt của “không chỉ SQL”. Dù bằng cách nào, hầu hết đều đồng ý rằng cơ sở dữ liệu NoSQL là cơ sở dữ liệu lưu trữ dữ liệu ở định dạng không phải là bảng quan hệ.
2. Tổng quan về cơ sở dữ liệu phi quan hệ:
* Lịch sử tóm tắt của cơ sở dữ liệu NoSQL:
– Cơ sở dữ liệu NoSQL xuất hiện vào cuối những năm 2000 khi chi phí lưu trữ giảm đáng kể. Đã qua rồi cái thời cần tạo ra một mô hình dữ liệu phức tạp, khó quản lý để tránh trùng lặp dữ liệu. Các nhà phát triển (thay vì lưu trữ) đang trở thành chi phí chính của việc phát triển phần mềm, do đó, cơ sở dữ liệu NoSQL được tối ưu hóa cho năng suất của nhà phát triển.
– Khi chi phí lưu trữ giảm nhanh chóng, lượng dữ liệu mà các ứng dụng cần để lưu trữ và truy vấn tăng lên. Dữ liệu này có đủ hình dạng và kích thước – có cấu trúc, bán cấu trúc và đa hình – và việc xác định trước lược đồ trở nên gần như không thể. Cơ sở dữ liệu NoSQL cho phép các nhà phát triển lưu trữ một lượng lớn dữ liệu phi cấu trúc, mang lại cho chúng rất nhiều tính linh hoạt.
– Ngoài ra, Tuyên ngôn Agile đang ngày càng phổ biến và các kỹ sư phần mềm đang suy nghĩ lại về cách họ phát triển phần mềm. Họ nhận ra sự cần thiết phải nhanh chóng thích ứng với các yêu cầu thay đổi. Họ cần khả năng lặp lại nhanh chóng và thực hiện các thay đổi trong toàn bộ ngăn xếp phần mềm của họ cho đến tận cơ sở dữ liệu. Cơ sở dữ liệu NoSQL đã mang lại cho họ sự linh hoạt này.
– Điện toán đám mây cũng trở nên phổ biến và các nhà phát triển bắt đầu sử dụng các đám mây công cộng để lưu trữ các ứng dụng và dữ liệu của họ. Họ muốn khả năng phân phối dữ liệu trên nhiều máy chủ và khu vực để làm cho ứng dụng của họ có khả năng phục hồi, mở rộng quy mô thay vì mở rộng quy mô và định vị địa lý dữ liệu của họ một cách thông minh. Một số cơ sở dữ liệu NoSQL như MongoDB cung cấp các khả năng này.
3. Các tính năng của cơ sở dữ liệu NoSQL:
Mỗi cơ sở dữ liệu NoSQL có các tính năng độc đáo của riêng nó. Ở cấp độ cao, nhiều cơ sở dữ liệu NoSQL có các tính năng sau:
+ Lược đồ linh hoạt
+ Chia tỷ lệ ngang
+ Truy vấn nhanh do mô hình dữ liệu
+ Dễ sử dụng cho các nhà phát triển
– Các loại cơ sở dữ liệu NoSQL: Theo thời gian, bốn loại cơ sở dữ liệu NoSQL chính đã xuất hiện: cơ sở dữ liệu tài liệu, cơ sở dữ liệu khóa-giá trị, cửa hàng cột rộng và cơ sở dữ liệu đồ thị. Cơ sở dữ liệu tài liệu lưu trữ dữ liệu trong tài liệu tương tự như các đối tượng JSON (JavaScript Object Notation). Mỗi tài liệu chứa các cặp trường và giá trị. Các giá trị thường có thể là nhiều loại bao gồm những thứ như chuỗi, số, boolean, mảng hoặc đối tượng.
– Cơ sở dữ liệu khóa-giá trị là một loại cơ sở dữ liệu đơn giản hơn trong đó mỗi mục chứa các khóa và giá trị. Cửa hàng cột rộng lưu trữ dữ liệu trong bảng, hàng và cột động. Cơ sở dữ liệu đồ thị lưu trữ dữ liệu trong các nút và các cạnh. Các nút thường lưu trữ thông tin về người, địa điểm và mọi thứ, trong khi các cạnh lưu trữ thông tin về mối quan hệ giữa các nút.
– Ngôn ngữ NoSQL: Không giống như SQL, NoSQL không có cấu trúc như vậy – nó sử dụng một lược đồ động để mô tả dữ liệu phi cấu trúc và các nhà phát triển có thể lưu trữ dữ liệu phi cấu trúc này theo nhiều cách khác nhau – dựa trên tài liệu, cột hoặc đồ thị hoặc thậm chí được tổ chức trong một cửa hàng KeyValue. Vì vậy, các nhà phát triển không cần phải dành nhiều thời gian để chuẩn bị cơ sở dữ liệu của họ nhờ vào tính linh hoạt của NoSQL. Các trường có thể được thêm nhanh chóng và bạn có thể sử dụng các cú pháp khác nhau từ cơ sở dữ liệu này sang cơ sở dữ liệu khác. Các nhà phát triển có rất nhiều phạm vi để tùy chỉnh vì mọi tài liệu đều có thể có một cấu trúc riêng, độc đáo.
– Sự khác biệt giữa cơ sở dữ liệu RDBMS và NoSQL: Mặc dù có nhiều khác biệt giữa hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) và cơ sở dữ liệu NoSQL, nhưng một trong những điểm khác biệt chính là cách dữ liệu được mô hình hóa trong cơ sở dữ liệu. Trong phần này, chúng ta sẽ làm việc thông qua một ví dụ về mô hình hóa cùng một dữ liệu trong cơ sở dữ liệu quan hệ và cơ sở dữ liệu NoSQL. Sau đó, chúng tôi sẽ nêu bật một số điểm khác biệt chính khác giữa cơ sở dữ liệu quan hệ và cơ sở dữ liệu NoSQL.
– Cơ sở dữ liệu NoSQL được sử dụng trong hầu hết mọi ngành. Các trường hợp sử dụng bao gồm từ mức độ quan trọng cao (ví dụ: lưu trữ dữ liệu tài chính và hồ sơ chăm sóc sức khỏe) đến thú vị hơn và phù phiếm hơn (ví dụ: lưu trữ các kết quả đọc IoT từ hộp vệ sinh mèo thông minh).Khi quyết định sử dụng cơ sở dữ liệu nào, những người ra quyết định thường tìm thấy một hoặc nhiều yếu tố sau đây dẫn họ đến việc chọn cơ sở dữ liệu NoSQL:
+ Phát triển Agile tốc độ nhanh
+ Lưu trữ dữ liệu có cấu trúc và bán cấu trúc
+ Khối lượng dữ liệu khổng lồ
+ Yêu cầu đối với kiến trúc quy mô
– Trong những năm qua, nhiều quan niệm sai lầm về cơ sở dữ liệu NoSQL đã lan rộng trong cộng đồng các nhà phát triển. Trong phần này, chúng ta sẽ thảo luận về hai trong số những quan niệm sai lầm phổ biến nhất:
+ Dữ liệu quan hệ phù hợp nhất cho cơ sở dữ liệu quan hệ.
+ Cơ sở dữ liệu NoSQL không hỗ trợ các giao dịch ACID.
– Trên thực tế, khi so sánh với cơ sở dữ liệu quan hệ, nhiều người nhận thấy dữ liệu mối quan hệ mô hình hóa trong cơ sở dữ liệu NoSQL dễ dàng hơn trong cơ sở dữ liệu quan hệ, vì dữ liệu liên quan không cần phải được phân chia giữa các bảng. Các mô hình dữ liệu NoSQL cho phép dữ liệu liên quan được lồng trong một cấu trúc dữ liệu duy nhất.
* Lưu ý rằng cách dữ liệu được mô hình hóa trong cơ sở dữ liệu NoSQL có thể loại bỏ nhu cầu giao dịch nhiều bản ghi trong nhiều trường hợp sử dụng. Hãy xem xét ví dụ trước đó, nơi chúng tôi lưu trữ thông tin về người dùng và sở thích của họ trong cả cơ sở dữ liệu quan hệ và cơ sở dữ liệu tài liệu. Để đảm bảo thông tin về người dùng và sở thích của họ được cập nhật cùng nhau trong cơ sở dữ liệu quan hệ, chúng tôi cần sử dụng một giao dịch để cập nhật các bản ghi trong hai bảng. Để làm điều tương tự trong cơ sở dữ liệu tài liệu, chúng tôi có thể cập nhật một tài liệu duy nhất – không cần giao dịch nhiều bản ghi.
4. Hướng dẫn truy vấn NoSQL:
Có nhiều loại cơ sở dữ liệu NoSQL. Hôm nay, chúng ta sẽ thử MongoDB, cơ sở dữ liệu NoSQL phổ biến nhất thế giới theo DB-Engines.
+ Xác thực với MongoDB Atlas: Cách dễ nhất để bắt đầu với MongoDB là MongoDB Atlas. Atlas là cơ sở dữ liệu được quản lý hoàn toàn dưới dạng dịch vụ của MongoDB. Atlas có một cấp miễn phí vĩnh viễn, đó là những gì bạn sẽ sử dụng hôm nay.
+ Điều hướng đến Atlas.
+ Tạo một tài khoản nếu bạn chưa có.
+ Đăng nhập vào Atlas.
+ Tạo một tổ chức và dự án Atlas: Để biết thêm thông tin về cách hoàn thành các bước trên, hãy truy cập tài liệu MongoDB chính thức về cách tạo tài khoản Atlas.
+ Tạo một cụm và một cơ sở dữ liệu: Một cụm là nơi bạn có thể lưu trữ cơ sở dữ liệu MongoDB của mình. Trong phần này, bạn sẽ tạo một cụm miễn phí.
Khi bạn có một cụm, bạn có thể bắt đầu lưu trữ dữ liệu trong Atlas. Bạn có thể chọn tạo cơ sở dữ liệu theo cách thủ công trong Atlas Data Explorer, trong MongoDB Shell, MongoDB Compass hoặc sử dụng ngôn ngữ lập trình yêu thích của bạn. Thay vào đó, trong ví dụ này, bạn sẽ nhập tập dữ liệu mẫu của Atlas.
+ Tạo một cụm miễn phí bằng cách làm theo các bước trong tài liệu MongoDB chính thức.
+ Tải tập dữ liệu mẫu bằng cách làm theo hướng dẫn trong tài liệu MongoDB chính thức.