NoSQL là gì? Các thông tin về cơ sở dữ liệu NoSQL
Nội Dung ChínhCơ sở dữ liệu NoSQL là gì?Cách hoạt động của cơ sở dữ liệu NoSQLVí dụ về cách hoạt động của NoSQLLý do nên sử dụng NoSQLCác loại cơ sở dữ liệu NoSQL1. Document-basedGraph-basedKey value Column – BasedHạn chế của CSDL NoSQLNo SchemaSự nhất quánSự phụ thuộcThiếu người có kỹ năng về NoSQLSo sánh … Tiếp tục đọc NoSQL là gì? Các thông tin về cơ sở dữ liệu NoSQL
Hệ thống cơ sở dữ liệu NoSQL hiện nay đã được phát triển bởi rất nhiều công ty công nghệ lớn nhằm lưu trữ dữ liệu và xử lý chúng tốt hơn. Vậy, cơ sở dữ liệu NoSQL chính xác là gì? Vietnix mời bạn đọc tham khảo bài viết này để tìm câu trả lời nhé!
Cơ sở dữ liệu NoSQL là gì?
Cơ sở dữ liệu NoSQL (hay NoSQL databases) là hệ thống quản lý dữ liệu phi quan hệ được xây dựng dành riêng cho mô hình dữ liệu và có schema (lượt đồ) rất linh hoạt.
Việc xây dựng cơ sở dữ liệu phi quan hệ có mục đích dành cho các kho dữ liệu phân tán nhằm đáp ứng nhu cầu lưu trữ dữ liệu lớn.
Cơ sở dữ liệu NoSQL được ứng dụng vào các web có thời gian giống với thời gian thực và có nguồn dữ liệu lớn thu thập hàng ngày như Google hay Facebook.
Loại cơ sở dữ liệu này là thuật ngữ được viết tắt từ cụm “Not Only SQL”. Cú pháp SQL được sử dụng với cơ sở dữ liệu quan hệ RDBMS nhằm lưu trữ và truy xuất dữ liệu khi cần thiết.
Bên cạnh đó, hệ thống cơ sở dữ liệu NoSQL có thể lưu dữ liệu có cấu trúc, bán cấu trúc, phi cấu trúc hay dữ liệu đa hình. Cơ sở dữ liệu NoSQL được ứng dụng rộng rãi nhờ có thể thực hiện ở quy mô lớn, dễ phát triển cũng như nhiều chức năng.
Cách hoạt động của cơ sở dữ liệu NoSQL
Cơ sở dữ liệu phi quan hệ có thể sử dụng nhiều mô hình dữ liệu khác nhau để truy cập và quản lý dữ liệu.
Các loại cơ sở dữ liệu này sẽ được tối ưu hóa cho các ứng dụng có yêu cầu mô hình dữ liệu linh hoạt với độ trễ thấp và có lượng dữ liệu lớn, dễ dàng đạt được bằng cách giảm đi các hạn chế về tính nhất quán của dữ liệu thuộc về các cơ sở dữ liệu khác.
Ví dụ về cách hoạt động của NoSQL
Để hiểu rõ hơn về cách hoạt động của cơ sở dữ liệu NoSQL, mời bạn tìm hiểu ví dụ về sơ đồ cho cơ sở dữ liệu sách.
Với loại cơ sở dữ liệu quan hệ: Hồ sơ thông tin của một cuốn sách sẽ được chuẩn hoá và lưu trữ ở các bảng tách biệt. Tuy nhiên, những bảng lưu trữ này vẫn có mối quan hệ ràng buộc bằng khóa ngoại và khoá chính.
Ở ví dụ này, ta có bảng sách bao gồm các cột ISBN, Tên sách và Số phiên bản. Bảng Tác giả bao gồm các cột ID của tác giả, Tên tác giả. Cuối cùng, ở bảng Tác giả-ISBN, ta có các cột ID tác giả và ISBN.
Mô hình quan hệ này được thiết kế nhằm cho phép các cơ sở dữ liệu đảm bảo tính toàn vẹn khi tham chiếu giữa nhiều bảng trong cơ sở dữ liệu, được chuẩn hoá nhằm giảm dư thừa và tối ưu hoá để lưu trữ.
Với loại cơ sở dữ liệu phi quan hệ hay NoSQL: Hồ sơ thông tin về một cuốn sách sẽ được lưu trữ dưới dạng văn bản JSON.
Đối với bất kỳ cuốn sách nào, các thông tin như ISBN, Tên sách, Số phiên bản, Tên tác giả hay ID của tác giả sẽ được lưu trữ dưới dạng thuộc tính trong một văn bản, với điều kiện đây là văn bản duy nhất.
Nhờ đó, dữ liệu về cuốn sách sẽ được tối ưu hoá cho việc phát triển trực quan cũng như có khả năng thay đổi theo chiều ngang về quy mô.
Lý do nên sử dụng NoSQL
Cơ sở dữ liệu phi quan hệ đã trở nên rất quen thuộc và phổ biến đối với các công ty công nghệ hàng đầu như Amazon hay Google.
Để giải quyết được vấn đề xử lý khối lượng dữ liệu lớn trong thời gian ngắn thì cơ sở dữ liệu NoSQL là sự lựa chọn đúng đắn.
Cơ sở dữ liệu này thích hợp với nhiều ứng dụng hiện đại trên website và cả di động với tính thiết thực và khả năng thay đổi quy mô hiệu quả giúp đem tới cho người dùng trải nghiệm tuyệt vời.
Một số lý do cụ thể hơn mà các công ty nên sử dụng NoSQL là:
- NoSQL có tính linh hoạt cao: Cơ sở dữ liệu này sẽ cung cấp các sơ đồ linh hoạt giúp phát triển các công đoạn nhanh hơn cùng khả năng lặp lại. Mô hình dữ liệu có thể chuyển từ cơ sở dữ liệu phi quan hệ thành ý tưởng cho các loại dữ liệu không cấu trúc hoặc cấu trúc chưa hoàn chỉnh.
- NoSQL có khả năng thay đổi quy mô: NoSQL được thiết kế nhằm tăng quy mô bằng các cụm phần cứng được phân phối thay vì bổ sung máy chủ mạnh và tốn kém.
- Hiệu năng của NoSQL cao: Cơ sở dữ liệu phi quan hệ sẽ được tối ưu hoá từng mô hình cụ thể và mẫu truy cập. Điều này sẽ giúp tăng hiệu năng so với việc đạt chức năng tương tự bằng cơ sở dữ liệu quan hệ.
- Tính thiết thực cao: Cơ sở dữ liệu phi quan hệ có cung cấp các kiểu dữ liệu thiết thực như API được xây dựng cho từng mô hình dữ liệu riêng.
Các loại cơ sở dữ liệu NoSQL
Cơ sở dữ liệu phi quan hệ có thể được chia ra làm 4 loại chính bao gồm: Document, Graph, Key-Value và Column. Mời bạn đọc cùng Vietnix tìm hiểu chi tiết về 4 loại cơ sở dữ liệu này ngay sau đây!
1. Document-based
Loại cơ sở dữ liệu dạng document – based (hay còn gọi là cơ sở dữ liệu dạng tài liệu) có vai trò lưu trữ, truy xuất dữ liệu dưới dạng một cặp khoá giá trị (key value) nhưng phần giá trị sẽ được lưu trữ ở dạng tài liệu. Phần tài liệu ở đây sẽ có định dạng XML hoặc JSON.
Cơ sở dữ liệu dạng tài liệu sẽ giúp nhà phát triển lưu trữ dễ dàng cũng như truy vấn dữ liệu hiệu quả hơn bằng cách sử dụng cùng một định dạng mô hình văn bản họ sử dụng trong mã ứng dụng của mình.
Với sự linh hoạt, bán cấu trúc và phân cấp của các văn bản và cơ sở dữ liệu tài liệu cho phép chúng có thể phát triển phù hợp với nhiều ứng dụng.
Mô hình dữ liệu kiểu tài liệu sẽ phát huy hiệu quả với danh mục, hồ sơ người dùng cũng như trong hệ thống quản lý nội dung.
Hiện nay, Amazon DocumentDB và MongoDB là những cơ sở dữ liệu kiểu tài liệu được sử dụng phổ biến và có cung cấp API mạnh mẽ, trực quan để phát triển tính lặp lại và sự linh hoạt.
Ngoài ra, một số hệ thống DBMS document-based NoSQL tiêu biểu khác có thể kể đến là Riak, Lotus Notes hay CouchDB.
Giới hạn của dữ liệu document-based là thông tin cơ sở bị trùng lặp nhiều trên tài liệu và có thiết kế phức tạp dẫn đến sự không nhất quán.
Graph-based
Graph-based hay cơ sở dữ liệu kiểu đồ thị có thể lưu trữ các thực thể và các mối quan hệ giữa các thực thể đó.
Những thực thể này được lưu dưới dạng một node với mối quan hệ là các cạnh. Mỗi một cạnh sẽ cho biết một mối quan hệ giữa các node. Mỗi node và cạnh đều chỉ có một mã định danh.
Mục đích của cơ sở dữ liệu đồ thị là dựng và chạy ứng dụng hoạt động cùng với các bộ dữ liệu có khả năng kết nối cao trở nên dễ dàng hơn.
Cơ sở dữ liệu dạng graph-based được sử dụng cho các mạng xã hội, đồ thị tri thức, công cụ đề xuất và phát hiện ra lừa đảo. Lý do bởi mối quan hệ giữa cơ sở dữ liệu dạng graph-based có bản chất là đa quan hệ và có thể truyền tải nhanh chóng bởi nó đã được ghi lại vào DB.
Một số giới hạn của cơ sở dữ liệu kiểu graph-based vẫn còn tồn tại là:
- Dữ liệu ở dạng graph-based thiếu tính đồng thời hiệu suất cao. Ở nhiều trường hợp, graph-based chỉ cung cấp kiểu đọc, kiểu ghi đơn dẫn đến làm giảm hiệu suất và ngăn cản sự đồng thời, từ đó hạn chế tính song song phân luồng (hay threaded parallelism).
- Thứ hai, dữ liệu dạng đồ thị thiếu ngôn ngữ chuẩn trong thiết lập và khai báo.
- Dữ liệu graph-based thiếu tính song song (parallelism). Dữ liệu dạng này sẽ không cung cấp các truy vấn song song trên các biểu đồ lớn dẫn đến việc phân vùng biểu đồ khó khăn hơn.
Những cơ sở dữ liệu kiểu graph-based tiêu biểu được sử dụng hiện nay là OrientDB, FlockDB, Infinite Graph; phổ biến hơn cả là Neo4J hay Graph.
Key value
Với cơ sở dữ liệu kiểu khoá – giá trị, dữ liệu sẽ được lưu trữ trong các cặp khoá – giá trị (key – value pairs). Kiểu cơ sở dữ liệu này được thiết kế để xử lý nhiều dữ liệu và tải nặng.
Cơ sở dữ liệu khoá – giá trị sẽ lưu trữ dữ liệu dưới dạng bảng trong đó mỗi khoá sẽ là duy nhất và giá trị đó có thể là BLOB hay JSON.
Cơ sở dữ liệu kiểu key-value có khả năng phân mảnh cao, cho phép thay đổi quy mô theo chiều ngang mà các loại hình cơ sở dữ liệu khác không thể.
Loại cơ sở dữ liệu này được ứng dụng cho công nghệ quảng cáo, các trò chơi và rất thích hợp với IoT.
Nó được dùng như từ điển, bộ sưu tập hay mảng kết hợp. Cơ sở dữ liệu key-value cũng cho phép nhà phát triển lưu trữ dữ liệu mà không có schema.
Cơ sở dữ liệu kiểu key-value có một số hạn chế như:
- Không có mối quan hệ với Multiple data.
- Nếu bạn đang lưu trữ số lượng lớn khóa và không thể lưu một trong các khóa, bạn không thể quay về các phần còn lại của thao tác thực hiện (multi operation transactions).
- Kết quả tìm kiếm “khóa” dựa vào một số thông tin được tìm thấy ở phần “giá trị” của các cặp key-value (query data by “value”).
- Do các hoạt động bị giới hạn trong một khóa tại một thời điểm nhất định nên không có cách để chạy nhiều khóa trong cùng một khoảng thời gian (operation by groups).
Một số cơ sở dữ liệu kiểu key-value được sử dụng phổ biến hiện nay là DynamoDB, Berkeley DB, Redis hay Riak.
Column – Based
Với kiểu CSDL column-based hay kiểu cơ sở dữ liệu dạng cột thì dữ liệu sẽ được lưu trữ trong database dưới dạng các cột. Các cột này sẽ được xử lý tách biệt và giá trị của cơ sở dữ liệu column-based sẽ được lưu liền kề nhau.
Cơ sở dữ liệu dạng cột có thể mang lại hiệu suất cao cho các truy vấn tổng hợp như AVG, SUM, MIN hay COUNT,… vì đã có sẵn dữ liệu trong một cột. Cơ sở dữ liệu NoSQL cũng dựa trên cột để quản lý CRM, warehouse hay library card catalogs,…
Tuy nhiên, kiểu cơ sở dữ liệu này cũng có những hạn chế trong quá trình hoạt động như:
- Quá trình load dữ liệu kiểu incremental cần nhiều thời gian cho tác vụ ghi hơn đọc. Phương thức OLTP hay xử lý giao dịch trực tuyến (online transaction processing) sẽ được sử dụng.
- Tốn nhiều thời gian hơn để đọc dữ liệu dạng cột so với các kiểu còn lại.
Những cơ sở dữ liệu dạng column-base tiêu biểu được sử dụng là Hbase, Cassandra và Hypertable.
Hạn chế của CSDL NoSQL
Cơ sở dữ liệu phi quan hệ được tạo ra nhằm mục đích giải quyết các hạn chế của cơ sở dữ liệu SQL. Mặc dù có rất nhiều ưu thế nhưng cơ sở dữ liệu NoSQL vẫn còn có những hạn chế nhất định.
No Schema
Mặc dù bạn đang sử dụng dữ liệu dạng tự do thì bạn vẫn cần áp đặt các ràng buộc nhất định đối với dữ liệu đó để làm nó trở nên hữu ích. Đối với cơ sở dữ liệu NoSQL, vấn đề ràng buộc liên quan tới vấn đề chuyển trách nhiệm này sang cho những người phát triển (developers).
Ví dụ cụ thể: Developers có thể áp đặt cấu trúc qua hệ thống ánh xạ quan hệ đối tượng. Nhưng nếu bạn muốn schema của dữ liệu thì cơ sở dữ liệu phi quan hệ sẽ không thực hiện. Một vài giải pháp NoSQL mang tới là các tùy chọn về cơ chế nhập và xác nhận dữ liệu.
Chẳng hạn như Apache Cassandra có nhiều native data type để giúp gợi nhớ đến các kiểu dữ liệu có trong cơ sở dữ liệu SQL.
Sự nhất quán
Cơ sở dữ liệu NoSQL không có tính nhất quán mạnh mẽ hoặc tức thì để có hiệu suất và tính khả dụng tốt hơn.
Cơ sở dữ liệu thông thường sẽ đảm bảo được các hoạt động:
- Có tính nguyên tố (atomicity): các thành phần giao dịch thành công hoặc không có giao dịch.
- Có tính biệt lập (isolation): giao dịch không có cạnh tranh.
- Có tính bền vững (durability): có khả năng phục hồi tình trạng hư hỏng về trạng thái đã biết cuối cùng.
- Có tính nhất quán (consistency): tất cả người sử dụng xem cùng một chế độ dữ liệu.
Những thuộc tính trên được viết tắt thành ACID và chúng được xử lý khác nhau trên các hệ thống NoSQL.
Cơ sở dữ liệu NoSQL sẽ phải nới lỏng một số thuộc tính của ACID để có được mô hình dữ liệu linh hoạt và có khả năng thay đổi quy mô theo chiều ngang.
Bên cạnh đó vẫn có một số cơ sở dữ liệu phi quan hệ có cơ chế giải để giải quyết vấn đề trên. MongoDB là một trong số đó. Nó đảm bảo sự nhất quán cho các hoạt động riêng lẻ nhưng không thể đảm bảo cho tất cả cơ sở dữ liệu.
Sự phụ thuộc
Các hệ thống cơ sở dữ liệu NoSQL sẽ được triển khai rất khác nhau mặc dù giống nhau về khái niệm. Mỗi loại lại có một xu hướng và cơ chế hoạt động riêng trong quản lý, truy vấn dữ liệu.
Vấn đề trên gây ảnh hưởng tới sự kết hợp giữa cơ sở dữ liệu và logic ứng dụng. Nó có nghĩa rằng bạn sẽ gặp khó khăn nếu đang sử dụng hệ thống cơ sở dữ liệu phi quan hệ và muốn chuyển sang hệ thống khác.
Ví dụ, nếu bạn di chuyển từ CouchDB sang MongoDB, bạn sẽ cần điều hướng sự khác biệt trong quyền truy cập dữ liệu. Điều đó cũng có nghĩa rằng bạn phải viết lại tất cả các phần của ứng dụng truy cập cơ sở dữ liệu.
Thiếu người có kỹ năng về NoSQL
Cơ sở dữ liệu phi quan hệ hiện đang thiếu người có kinh nghiệm và chuyên môn sâu. Hiện tại, thị trường lao động dành cho NoSQL vẫn còn kém khá xa so với SQL mặc dù nhu cầu về NoSQL hiện đã có xu hướng tăng lên.
So sánh cơ sở dữ liệu SQL với NoSQL
Bảng so sánh giữa cơ sở dữ liệu quan hệ và cơ sở dữ liệu phi quan hệ dưới đây sẽ giúp bạn đọc hiểu rõ hơn có được lựa chọn phù hợp.
Đối tượng so sánh | Cơ sở dữ liệu SQL (cơ sở dữ liệu quan hệ) | Cơ sở dữ liệu NoSQL (cơ sở dữ liệu phi quan hệ) |
---|---|---|
Mô hình dữ liệu | Mô hình chuẩn hoá dữ liệu đầu vào bảng được hình thành từ cột và hàng. Sơ đồ sẽ quy định về cột, hàng, chỉ mục và mối quan hệ giữa các bảng cùng với thành tố khác. Cơ sở dữ liệu sẽ đảm bảo tính vẹn toàn tham chiếu trong mối quan hệ giữa các bảng. |
Mô hình của CSDL kiểu tài liệu (document): JSON.Mô hình của CSDL kiểu khoá-giá trị (key-value): key-value pairs.Mô hình của CSDL kiểu cột (column): bảng có cột và hàng sẽ thay đổi (dynamic).Mô hình của CSDL kiểu biểu đồ (graph): nodes và cạnh. |
Lịch sử hình thành và phát triển | Phát triển từ 1970 và tập trung vào giảm thiểu trùng lặp dữ liệu với mô hình phổ biến để xây dựng cơ sở dữ liệu quan hệ là mô hình dữ liệu quan hệ. | Phát triển sau năm 200; mở rộng nhanh, phát triển ứng dụng theo phương pháp Agile và DevOps. |
Khối lượng công việc được tối ưu | Cơ sở dữ liệu SQL được thiết kế nhằm ứng dụng xử lý giao dịch trực tuyến (OLTP), trong giao dịch có độ ổn định cao và có thể xử lý phân tích trực tuyến (OLAP). | Cơ sở dữ liệu phi quan hệ thiết kế cho mẫu truy cập dữ liệu bao gồm cả ứng dụng có độ trễ thấp, phục vụ phân tích dữ liệu có cấu trúc chưa hoàn thiện. |
Thuộc tính ACID | Có các thuộc tính mang tính ACID: tính nguyên tố, nhất quán, tách biệt và bền vững. | Tuân theo định lý Brewers CAP: tính nhất quán, khả dụng và dung sai phân vùng. |
Hiệu năng | Hiệu năng phụ thuộc vào hệ thống con của ổ đĩa. Để đạt hiệu năng tối đa thì cần tối ưu hóa truy vấn, chỉ mục và cấu trúc bảng. | Hiệu năng là chức năng của độ trễ mạng, ứng dụng đưa lệnh gọi và kích cỡ cụm phần cứng ngầm. |
API | Có yêu cầu lưu trữ, truy xuất dữ liệu được truyền đạt bằng cách dùng các truy vấn nhất quán với ngôn ngữ truy vấn thuộc cấu trúc SQL. Các truy vấn sẽ được phân tích và thực hiện bởi cơ sở dữ liệu SQL. |
Nhà phát triển ứng dụng có thể dễ dàng lưu trữ, truy xuất cấu trúc dữ liệu trong bộ nhớ nhờ có API. Khóa phân mảnh tìm các cặp key-value, tập hợp văn bản hoặc cột có cấu trúc chưa hoàn chỉnh chứa đối tượng và thuộc tính của ứng dụng được xếp theo chuỗi. |
Joins | Được yêu cầu. | Không được yêu cầu. |
Khả năng mở rộng | Mở rộng theo chiều dọc. Cơ sở dữ liệu SQL thường tăng quy mô bằng cách thêm bản sao của khối lượng công việc chỉ đọc hoặc tăng năng lực điện toán của phần cứng. | Thay đổi quy mô theo chiều ngang bằng cách phân tán trên nhiều server. |
Schemas | Cố định. | Linh hoạt. |
Mục đích sử dụng | Cơ sở dữ liệu SQL có nhiều mục đích sử dụng. | CSDL kiểu tài liệu (document): có nhiều mục đích sử dụng. CSDL kiểu khoá-giá trị (key-value): truy xuất đơn giản với dữ liệu lớn.CSDL kiểu cột (column): dự đoán mẫu truy xuất với dữ liệu lớn. CSDL kiểu biểu đồ (graph): phân tích, duyệt mối quan hệ của các dữ liệu kết nối. |
Cơ sở dữ liệu tiêu biểu | MySQL, Server PostgreSQL và Oracle. | CSDL kiểu tài liệu (document): CouchDB, MongoDB.CSDL kiểu khoá – giá trị (key-value): DynamoDB, Redis.CSDL kiểu cột (column): HBase, Cassandra.CSDL kiểu biểu đồ (graph): Amazon Neptune. |
Data to Object Mapping | Có yêu cầu ORM (object relational mapping). | Không yêu cầu ORM (object relational mapping). |
Thuật ngữ SQL so với NoSQL
Với bảng dưới đây, bạn sẽ so sánh được thuật ngữ sử dụng trong CSDL phi quan hệ với thuật ngữ sử dụng trong CSDL quan hệ.
SQL | MongoDB | DynamoDB | Cassandra | Couchbase |
---|---|---|---|---|
Bảng | Bộ sưu tập | Bảng | Bảng | Bộ chứa dữ liệu |
Hàng | Tài liệu | Mục | Hàng | Tài liệu |
Cột | Trường | Thuộc tính | Cột | Trường |
Khoá chính | ID đối tượng | Khóa chính | Khóa chính | ID văn bản |
Chỉ mục | Chỉ mục | Chỉ mục thứ cấp | Chỉ mục | Chỉ mục |
Chế độ xem | Chế độ xem | Chỉ mục thứ cấp toàn cục | Chế độ xem cụ thể hóa | Chế độ xem |
Bảng hoặc đối tượng lồng ghép nhau | Văn bản nhúng | Bản đồ | Bản đồ | Bản đồ |
Mảng | Mảng | Danh sách | Danh sách | Danh sách |
Lời kết
Là một người mới tìm hiểu và cơ sở dữ liệu NoSQL, trên đây là tất cả những thông tin bạn cần biết để có thể ứng dụng tốt trong công việc. Để không bỏ lỡ các bài viết khác của Vietnix, mời bạn đọc ghé thăm trang web của chúng tôi nhé!