angle-left null NoSQL thế hệ cơ sở dữ liệu cho ứng dụng Web
Trang chủ

13/10/2020 19:15

(data.gov.vn) Sự phát triển mạnh mẽ của thời kỳ Internet với các ứng dụng web, điện toán đám mây đã làm thay đổi cách triển khai các hệ thống thông tin và đặc biệt là các hệ thống cơ sở dữ liệu. Trong các ứng dụng web, CSDL quan hệ xuất hiện một số yếu điểm về hiệu năng và khả năng mở rộng khi đáp ứng một khối lượng rất lớn lượng truy cập và người dùng. Xuất phát từ vấn đề này, CSDL NoSQL ra đời để giải quyết vấn đề trên.

Các ứng dụng web xử lý dữ liệu đã thay trong thập kỷ qua. Ngày càng nhiều dữ liệu đang được thu thập và nhiều người dùng đang truy cập đồng thời vào dữ liệu. Điều này dẫn đến vấn đề này sinh khả năng mở rộng và hiệu suất là một thách thức hơn bao giờ hết đối với cơ sở dữ liệu quan hệ dựa trên lược đồ và do đó có thể khó mở rộng hơn.

Cơ sở dữ liệu quan hệ đã được tạo ra cách đây một thời gian khi mô hình Waterfall rất phổ biến, nhưng chúng không được thiết kế để phù hợp với quy mô và sự nhanh nhạy của các ứng dụng hiện đại, cũng như không tận dụng được sức mạnh lưu trữ và xử lý hàng hóa hiện nay.

NoSQL là loại cơ sở dữ liệu được tạo ra vào cuối những năm 90 để giải quyết những vấn đề này. Được gọi là NoSQL vì thế hệ hệ quản trị cơ sở dữ liệu này không sử dụng ngôn ngữ truy vấn có câu trúc – SQL. Tuy nhiên hiện nay một số hệ quản trị cơ sở dữ liệu NoSQL đã triển khai ngôn ngữ truy vấn riêng. Cơ sở dữ liệu NoSQL chủ yếu giải quyết một số điểm: không quan hệ, phân tán, mã nguồn mở và có thể mở rộng theo chiều ngang.

CSDL NoSQL không phải là CSDL thay thế SQL mà ngày nay Cơ sở dữ liệu quan hệ đã được cải thiện đáng kể, đã giải quyết được hầu hết các vấn đề mà họ gặp phải. Cơ sở dữ liệu NoSQL là một loại CSDL khác để lưu trữ dữ liệu không phải luôn tốt hơn Cơ sở dữ liệu quan hệ. Cả hai đều được thiết kế để giải quyết các loại nhu cầu, bài toán khác nhau.

Sự phát triển của NoSQL

Vấn đề về khả năng mở rộng CSDL SQL đã được các công ty lớn về Web 2.0  như Google, Amazon và Facebook đặt ra khi có nhu cầu cơ sở hạ tầng và dữ liệu khổng lồ, ngày càng tăng. Họ đã đưa ra các giải pháp của riêng mình cho vấn đề - các công nghệ như BigTable, DynamoDB Cassandra. Các loại cơ sở dữ liệu NoSQL độc quyền được phát triển bởi các công ty lớn để đáp ứng nhu cầu cụ thể của họ, chẳng hạn như BigTable của Google, được cho là hệ thống NoSQL đầu tiên và DynamoDB của Amazon. Sự thành công của những hệ thống độc quyền này đã khởi đầu cho sự phát triển của một số hệ thống cơ sở dữ liệu mã nguồn mở và độc quyền tương tự, những hệ thống phổ biến nhất là Hypertable, Cassandra, MongoDB, DynamoDB, HBase và Redis. Sự quan tâm ngày càng tăng này dẫn đến nhiều Hệ thống quản lý cơ sở dữ liệu NoSQL ra đời tập trung vào hiệu suất, độ tin cậy và tính nhất quán. Một số cấu trúc lập chỉ mục hiện có đã được sử dụng lại và cải tiến với mục đích nâng cao hiệu suất tìm kiếm và đọc.

Sự khác biệt của NoSQL

Một điểm khác biệt chính giữa cơ sở dữ liệu NoSQL và cơ sở dữ liệu quan hệ truyền thống là thực tế NoSQL là một dạng lưu trữ phi cấu trúc .

Điều này có nghĩa là cơ sở dữ liệu NoSQL không có cấu trúc bảng cố định như cấu trúc bảng được tìm thấy trong cơ sở dữ liệu quan hệ.

Ưu điểm và nhược điểm của Cơ sở dữ liệu NoSQL

Ưu điểm

Cơ sở dữ liệu NoSQL có nhiều lợi thế so với cơ sở dữ liệu quan hệ, truyền thống. Một điểm khác biệt cơ bản chính là cơ sở dữ liệu NoSQL có cấu trúc đơn giản và linh hoạt. Chúng không có lược đồ. Không giống như cơ sở dữ liệu quan hệ, cơ sở dữ liệu NoSQL dựa trên các cặp khóa-giá trị. Một số kiểu lưu trữ của cơ sở dữ liệu NoSQL bao gồm lưu trữ cột, lưu trữ tài liệu, lưu trữ giá trị khóa, lưu trữ đồ thị, lưu trữ đối tượng, lưu trữ XML và các chế độ lưu trữ dữ liệu khác.

Thông thường, mỗi giá trị trong cơ sở dữ liệu có một khóa. Một số kho lưu trữ cơ sở dữ liệu NoSQL cũng cho phép các nhà phát triển lưu trữ các đối tượng được tuần tự hóa vào cơ sở dữ liệu, không chỉ là các giá trị chuỗi đơn. Nhiều cơ sở dữ liệu NoSQL mã nguồn mở là miễn khí khi sử dụng và có thể chạy trên phần cứng với chi phí thấp, giúp cho việc triển khai tiết kiệm chi phí.

Ngoài ra, khi làm việc với cơ sở dữ liệu NoSQL, việc mở rộng sẽ dễ dàng hơn và chi phí thấp hơn so với khi làm việc với cơ sở dữ liệu quan hệ. Điều này là do nó được thực hiện bằng cách chia tỷ lệ theo chiều ngang và phân phối tải trên tất cả các nút, thay vì kiểu chia tỷ lệ dọc thường được thực hiện với các hệ thống cơ sở dữ liệu quan hệ. Việc nâng cao năng lực của CSDL đòi hỏi phải thay thế bằng máy chủ mạnh hơn.

Cụ thể, các ưu điểm của CSDL NoSQL bao gồm:

  • Khả năng mở rộng đàn hồi : Các cơ sở dữ liệu này được thiết kế để sử dụng với phần cứng giá rẻ.
  • Ứng dụng dữ liệu lớn: Khối lượng dữ liệu lớn được cơ sở dữ liệu NoSQL dễ dàng xử lý.
  • Tính kinh tế : Cơ sở dữ liệu quan hệ yêu cầu cài đặt hệ thống lưu trữ đắt tiền và máy chủ độc quyền, trong khi cơ sở dữ liệu NoSQL có thể dễ dàng cài đặt trong các cụm phần cứng giá rẻ khi khối lượng giao dịch và dữ liệu tăng lên. Điều này có nghĩa là thể xử lý và lưu trữ nhiều dữ liệu hơn với chi phí thấp hơn.
  • Lược đồ động : Cơ sở dữ liệu NoSQL không cần lược đồ để làm việc với dữ liệu. Trong Cơ sở dữ liệu quan hệ phải xác định một lược đồ trước, điều này trở nên khó khăn hơn nếu có sự thay đổi lược đồ mỗi khi các yêu cầu thay đổi.
  • Auto-sharding : Cơ sở dữ liệu quan hệ mở rộng quy mô theo chiều dọc, có nghĩa là bạn thường có nhiều cơ sở dữ liệu trải rộng trên nhiều máy chủ vì dung lượng đĩa mà chúng cần để hoạt động. Cơ sở dữ liệu NoSQL thường hỗ trợ tính năng auto-sharding, có nghĩa là chúng tự động và tự động truyền dữ liệu trên một số lượng máy chủ tùy ý, mà không yêu cầu ứng dụng phải biết về thành phần của nhóm máy chủ.
  • Nhân rộng : Hầu hết các cơ sở dữ liệu NoSQL cũng hỗ trợ sao chép cơ sở dữ liệu tự động để duy trì tính khả dụng trong trường hợp ngừng hoạt động hoặc các sự kiện bảo trì theo kế hoạch. Các cơ sở dữ liệu NoSQL phức tạp hơn có khả năng tự phục hồi hoàn toàn, cung cấp khả năng chuyển đổi và phục hồi dự phòng tự động, cũng như khả năng phân phối cơ sở dữ liệu trên nhiều vùng địa lý để chịu được các lỗi khu vực và cho phép bản địa hóa dữ liệu.
  • Bộ nhớ đệm tích hợp : Nhiều công nghệ NoSQL có khả năng bộ nhớ đệm tích hợp tuyệt vời, giữ cho dữ liệu được sử dụng thường xuyên trong bộ nhớ hệ thống càng nhiều càng tốt và loại bỏ nhu cầu về một lớp bộ nhớ đệm riêng biệt.

Nhược điểm

Cơ sở dữ liệu NoSQL không hoàn hảo, và chúng không phải luôn là lựa chọn phù hợp. Hầu hết các cơ sở dữ liệu NoSQL có độ tin cậy thấp hơn các hệ thống cơ sở dữ liệu quan hệ. Các đặc điểm độ tin cậy này có thể được tóm tắt là tính nguyên tử, tính nhất quán, tính cách ly và độ bền -ACID. Điều này cũng có nghĩa là cơ sở dữ liệu NoSQL, không hỗ trợ ACID, giao dịch nhất quán về hiệu suất và khả năng mở rộng.

Để hỗ trợ các tính năng về độ tin cậy và tính nhất quán, các nhà phát triển phải triển khai mã độc quyền, điều này làm tăng thêm độ phức tạp cho hệ thống. Điều này có thể hạn chế số lượng ứng dụng có thể kết nối với cơ sở dữ liệu NoSQL để thực hiện các giao dịch đòi hỏi an toàn và đáng tin cậy cao.

CSDL NoSQL cũng bị gặp phải vấn đề là sự không tương thích với các truy vấn SQL. Điều này có nghĩa là cần có cách kết nối và truy vấn riêng hoặc độc quyền của doanh nghiệp phát triển. Vấn đề này cũng tăng thêm thời gian và độ phức tạp. NoSQL rất mới so với Cơ sở dữ liệu quan hệ, có nghĩa là nó kém ổn định hơn và có thể có ít chức năng hơn rất nhiều.

So sánh NoSQL so với Cơ sở dữ liệu quan hệ:

Đặc tính

Cơ sở dữ liệu NoSQL

Cơ sở dữ liệu quan hệ SQL

Hiệu suất

Cao

Thấp

độ tin cậy

Thấp

Tốt

khả dụng

Tốt

Tốt

Tính nhất quán

Thấp

Tốt

Lưu trữ dữ liệu

Tối ưu hóa cho dữ liệu lớn

Kích thước trung bình đến lớn

Khả năng mở rộng

Cao

Cao (nhưng chi phí cao hơn)

Cần lưu ý rằng bảng hiển thị sự so sánh ở cấp độ cơ sở dữ liệu , không phải các hệ quản trị cơ sở dữ liệu khác nhau thực hiện cả hai mô hình. Các hệ thống này cung cấp các kỹ thuật độc quyền của riêng chúng để khắc phục một số vấn đề và thiếu sót trong cả hai hệ thống và trong một số trường hợp, cải thiện đáng kể hiệu suất và độ tin cậy.

Các loại hệ quản trị cơ sở dữ dữ liệu NoSQL

Lưu trữ cặp khóa – giá trị

Loại cơ sở dữ liệu này lưu trữ một bảng trong đó lưu trữ một trường khóa duy nhất trỏ đến một mục. Vi dụ trong bảng sau lưu trữ một khóa-giá trị,

Khóa

Giá trị

“47/2020/NĐ-CP”

Nghị định số 47/2020/NĐ-CP ngày 09/04/2020 của Chính phủ về Quản lý, kết nối và chia sẻ dữ liệu số của cơ quan nhà nước

“73/2019/NĐ-CP

Nghị định số 73/2019/NĐ-CP ngày
05/09/2019 của Chính phủ Quy định quản lý đầu tư ứng dụng công nghệ thông tin sử dụng nguồn vốn ngân sách nhà nước

Một số hệ thống quan trọng được triển khai theo loại này cung cấp cơ chế lưu vào bộ nhớ đệm, giúp nâng cao hiệu suất của chúng.

Tất cả dữ liệu cần thiết của đối tượng cần xử lý sẽ được lưu trữ trong giá trị gắn với khóa. Dữ liệu được lưu trữ dưới dạng chuỗi, JSON hoặc BLOB.

Một trong những vấn đề lớn nhất trong dạng cơ sở dữ liệu này là thiếu tính nhất quán ở cấp độ cơ sở dữ liệu. Điều này có thể được xử lý bởi các nhà phát triển phần mềm bằng mã riêng, nhưng điều này làm tăng thêm nhiều nỗ lực, phức tạp và thời gian.

Cơ sở dữ liệu NoSQL nổi tiếng nhất được xây dựng trên kho giá trị chính là DynamoDB của Amazon.

Kho tài liệu

Các kho lưu trữ tài liệu tương tự như các kho lưu trữ giá trị ở điểm chúng không có giản đồ và dựa trên mô hình khoá-giá trị. Do đó, cả hai đều có chung nhiều ưu điểm và nhược điểm. Cả hai đều thiếu tính nhất quán ở cấp độ cơ sở dữ liệu. Tuy nhiên, có sự khác biệt với loại trên là Trong Kho lưu trữ tài liệu, các giá trị (tài liệu) được mã hóa để lưu trữ. Các mã hóa đó có thể là XML, JSON hoặc BSON (JSON được mã hóa nhị phân). Ứng dụng cơ sở dữ liệu phổ biến nhất dựa trên Kho tài liệu là MongoDB.

Lưu trữ cột

Trong cơ sở dữ liệu Lưu trữ Cột, dữ liệu được lưu trữ trong các cột, thay vì được lưu trữ trong các hàng như được thực hiện trong hầu hết các hệ quản trị cơ sở dữ liệu quan hệ.

Lưu trữ Cột bao gồm một hoặc nhiều nhóm cột được tổ chức một cách hợp lý trong cơ sở dữ liệu. Một khóa được sử dụng để xác định và trỏ đến một số cột trong cơ sở dữ liệu, với thuộc tính xác định phạm vi của khóa này. Mỗi cột chứa các bộ tên và giá trị, được phân tách theo thứ tự và dấu phẩy.

Lưu trữ Cột có quyền truy cập đọc/ghi nhanh vào dữ liệu được lưu trữ. Trong Lưu trữ Cột, các hàng tương ứng với một cột được lưu trữ dưới dạng một mục trên đĩa. Điều này giúp truy cập nhanh hơn trong các hoạt động đọc/ghi. Các cơ sở dữ liệu phổ biến nhất sử dụng cửa hàng cột bao gồm BigTable, HBase và Cassandra của Google.

Cơ sở đồ thị

Trong Cơ sở dữ liệu NoSQL Đồ thị, cấu trúc đồ thị có hướng được sử dụng để biểu diễn dữ liệu. Biểu đồ bao gồm các cạnh và các nút.

Về mặt hình thức, đồ thị là một biểu diễn của một tập hợp các đối tượng, trong đó một số cặp đối tượng được kết nối với nhau bằng các liên kết. Các đối tượng liên kết với nhau được biểu diễn bằng các trừu tượng toán học, được gọi là các đỉnh, và các liên kết nối một số cặp đỉnh được gọi là các cạnh. Tập hợp các đỉnh và các cạnh nối chúng được cho là một đồ thị.

Hình trên minh họa cấu trúc của cơ sở dữ liệu cơ sở đồ thị sử dụng các cạnh và nút để biểu diễn và lưu trữ dữ liệu. Các nút này được tổ chức theo một số mối quan hệ với nhau, được biểu thị bằng các cạnh giữa các nút. Cả các nút và các mối quan hệ đều có một số thuộc tính xác định.

Cơ sở dữ liệu đồ thị thường được sử dụng trong các ứng dụng mạng xã hội. Cơ sở dữ liệu đồ thị cho phép các nhà phát triển tập trung vào quan hệ giữa các đối tượng hơn là vào bản thân các đối tượng. Trong bối cảnh này, chúng thực sự cho phép một môi trường có thể mở rộng và dễ sử dụng. Hiện tại, InfoGrid và InfiniteGraph là cơ sở dữ liệu đồ thị phổ biến nhất.

Mặc dù NoSQL có những ưu điểm nhất định và phù hợp với các ứng dụng web hiên nay, tuy nhiên đối với các hệ thống đòi hỏi tính chính xác, nhất quán và tin cậy cao thì CSDL quan hệ SQL vẫn là lựa chọn hàng đầu. Chính vì vậy, việc sử dụng hệ quản trị CSDL nào còn phụ thuộc vào bài toán và giải pháp đáp ứng bài toán đặt ra.

 

Tài liệu tham khảo:

https://www.toptal.com/database/the-definitive-guide-to-nosql-databases

https://dev.to/lmolivera/everything-you-need-to-know-about-nosql-databases-3o3h

https://www.thoughtworks.com/insights/blog/nosql-databases-overview

https://phoenixnap.com/kb/what-is-a-nosql-database

https://www.oracle.com/technetwork/products/nosqldb/overview/nosqlandsql-2030350.pdf


Tin xem nhiều

placeholder image

Kinh tế dữ liệu Châu Âu, hiện trạng và định hướng đến 2025