1.1 Cơ sở dữ liệu NoSQL hoạt động như thế nào

Cơ sở dữ liệu NoSQL sử dụng nhiều mô hình dữ liệu khác nhau để truy cập và thao tác dữ liệu. Các loại cơ sở dữ liệu này được tối ưu hóa cho các ứng dụng sử dụng nhiều dữ liệu, yêu cầu các mô hình dữ liệu linh hoạt và có độ trễ thấp. Tất cả điều này đạt được bằng cách giảm bớt các yêu cầu nghiêm ngặt về tính nhất quán của dữ liệu, đặc trưng cho các loại cơ sở dữ liệu khác.

Hãy xem xét một ví dụ về lập mô hình lược đồ cho một cơ sở dữ liệu sách đơn giản.

  • Trong cơ sở dữ liệu quan hệ, mục nhập sách thường được chia thành nhiều phần (hoặc "được chuẩn hóa") và được lưu trữ trong các bảng riêng biệt có mối quan hệ được xác định bởi các ràng buộc khóa chính và khóa ngoài. Trong ví dụ này, bảng Sách có các cột ISBN , Tên sách"ISBN""Tác giả"Tác giả-ISBNTên Tác giảID Tác giảcác cộtTác giảbảngấn bảnSố. Mô hình quan hệ được thiết kế để duy trì tính toàn vẹn tham chiếu giữa các bảng trong cơ sở dữ liệu. Dữ liệu được chuẩn hóa để giảm dư thừa và thường được tối ưu hóa cho việc lưu trữ.

  • Trong cơ sở dữ liệu NoSQL, một bản ghi sách thường được lưu trữ dưới dạng tài liệu JSON. Đối với mỗi cuốn sách hoặc phần tử, các giá trị ISBN , Tên sách , Số ấn bản , Tên tác giảID tác giả được lưu trữ dưới dạng thuộc tính trong một tài liệu. Trong mô hình này, dữ liệu được tối ưu hóa để phát triển trực quan và khả năng mở rộng theo chiều ngang.

1.2 Cơ sở dữ liệu NoSQL có thể được sử dụng để làm gì?

Cơ sở dữ liệu NoSQL rất phù hợp với nhiều ứng dụng hiện đại, chẳng hạn như ứng dụng di động, trò chơi, web, yêu cầu cơ sở dữ liệu linh hoạt, có thể mở rộng với hiệu suất cao và chức năng phong phú có thể cung cấp khả năng sử dụng tối đa.

  • linh hoạt . Thông thường, cơ sở dữ liệu NoSQL cung cấp các lược đồ linh hoạt, cho phép phát triển nhanh hơn và cho phép triển khai gia tăng. Do sử dụng các mô hình dữ liệu linh hoạt, cơ sở dữ liệu NoSQL rất phù hợp với dữ liệu bán cấu trúc và phi cấu trúc.

  • Khả năng mở rộng . Cơ sở dữ liệu NoSQL được thiết kế để mở rộng quy mô bằng cách sử dụng các cụm phần cứng phân tán, chứ không phải bằng cách thêm các máy chủ đáng tin cậy, đắt tiền. Một số nhà cung cấp dịch vụ đám mây chạy các hoạt động này ở chế độ nền, cung cấp dịch vụ được quản lý hoàn toàn.

  • Hiệu suất cao . Cơ sở dữ liệu NoSQL được tối ưu hóa cho các mô hình dữ liệu cụ thể và các mẫu truy cập để đạt được hiệu suất cao hơn so với cơ sở dữ liệu quan hệ.

  • Chức năng rộng . Cơ sở dữ liệu NoSQL cung cấp các API và kiểu dữ liệu phong phú được thiết kế riêng cho các mô hình dữ liệu tương ứng của chúng.

1.3 Các loại cơ sở dữ liệu NoSQL

Cơ sở dữ liệu NoSQL được sử dụng ở những nơi không thuận tiện để lưu trữ dữ liệu ở dạng bảng. Do đó, chúng được lưu trữ ở các định dạng rất khác nhau. Thông thường, có 6 loại dữ liệu chính của cơ sở dữ liệu NoSQL.

DB dựa trên các cặp khóa-giá trị

Cơ sở dữ liệu sử dụng các cặp khóa-giá trị hỗ trợ khả năng phân tách cao và cung cấp khả năng chia tỷ lệ theo chiều ngang chưa từng có mà các loại cơ sở dữ liệu khác không thể đạt được. Các trường hợp sử dụng tốt cho cơ sở dữ liệu khóa-giá trị là các ứng dụng trò chơi, quảng cáo và IoT.

Ví dụ: Amazon DynamoDB đảm bảo cơ sở dữ liệu hoạt động ổn định với độ trễ không quá vài mili giây ở mọi quy mô. Hiệu suất mạnh mẽ này là lý do chính để chuyển Snapchat Stories sang DynamoDB, vì tính năng Snapchat này được liên kết với tải ghi bộ nhớ lớn nhất.

Tài liệu

Trong mã ứng dụng, dữ liệu thường được biểu diễn dưới dạng đối tượng hoặc tài liệu ở định dạng giống như JSON vì đây là mô hình dữ liệu trực quan và hiệu quả dành cho nhà phát triển. Cơ sở dữ liệu tài liệu cho phép các nhà phát triển lưu trữ và truy vấn dữ liệu trong cơ sở dữ liệu bằng cách sử dụng cùng một mô hình tài liệu mà họ sử dụng trong mã ứng dụng của mình. Bản chất linh hoạt, bán cấu trúc, phân cấp của tài liệu và cơ sở dữ liệu tài liệu cho phép chúng phát triển theo nhu cầu của ứng dụng.

Mô hình tài liệu hoạt động tốt trong các danh mục, hồ sơ người dùng và hệ thống quản lý nội dung trong đó mỗi tài liệu là duy nhất và thay đổi theo thời gian. Amazon DocumentDB (tương thích với MongoDB) và MongoDB là các cơ sở dữ liệu tài liệu phổ biến cung cấp các API chức năng và trực quan để phát triển nhanh.

Cơ sở dữ liệu đồ thị

Cơ sở dữ liệu đồ thị giúp phát triển và chạy các ứng dụng hoạt động với các tập hợp dữ liệu phức tạp dễ dàng hơn. Các ví dụ điển hình về việc sử dụng cơ sở dữ liệu đồ thị là mạng xã hội, dịch vụ đề xuất, hệ thống phát hiện gian lận và đồ thị tri thức. Amazon Neptune là dịch vụ cơ sở dữ liệu đồ thị được quản lý toàn phần. Neptune hỗ trợ Khung mô tả tài nguyên và đồ thị thuộc tính (RDF), cung cấp hai API đồ thị để lựa chọn: TinkerPop và RDF/SPARQL. Cơ sở dữ liệu đồ thị phổ biến bao gồm Neo4j và Giraph.

DB trong bộ nhớ

Các ứng dụng trò chơi và quảng cáo thường sử dụng bảng xếp hạng, lưu trữ phiên và phân tích thời gian thực. Những khả năng như vậy yêu cầu phản hồi trong vòng vài micro giây, trong khi lưu lượng truy cập có thể tăng mạnh bất cứ lúc nào.

Amazon MemoryDB cho Redis là dịch vụ cơ sở dữ liệu trong bộ nhớ đáng tin cậy, tương thích với Redis giúp giảm độ trễ đọc xuống còn mili giây và mang lại độ bền trên nhiều vùng sẵn sàng. MemoryDB được xây dựng có mục đích nhằm mang lại hiệu suất và độ tin cậy cực cao, vì vậy, nó có thể được sử dụng làm cơ sở dữ liệu chính cho các ứng dụng dựa trên vi dịch vụ hiện đại.

Amazon ElastiCache là dịch vụ bộ nhớ đệm trong bộ nhớ đệm tương thích với Redis và Memcached được quản lý hoàn toàn để phục vụ khối lượng công việc có độ trễ thấp, thông lượng cao. Những khách hàng như Tinder cần ứng dụng của họ phản hồi trong thời gian thực đang sử dụng hệ thống lưu trữ trong bộ nhớ thay vì ổ đĩa. Một ví dụ khác về kho dữ liệu được xây dựng có mục đích là Trình tăng tốc Amazon DynamoDB (DAX). DAX cho phép DynamoDB đọc dữ liệu nhanh hơn nhiều lần.

Tìm kiếm cơ sở dữ liệu

Nhiều ứng dụng tạo nhật ký để giúp nhà phát triển khắc phục sự cố và khắc phục sự cố dễ dàng hơn. Amazon OpenSearch là một dịch vụ được xây dựng có mục đích để trực quan hóa và phân tích các luồng dữ liệu được tạo tự động gần như theo thời gian thực bằng cách lập chỉ mục, tổng hợp và tìm kiếm các chỉ số và nhật ký bán cấu trúc.

Ngoài ra, Amazon OpenSearch là một dịch vụ tìm kiếm toàn văn mạnh mẽ, hiệu suất cao. Expedia tận dụng hơn 150 miền dịch vụ Amazon OpenSearch, 30 TB dữ liệu và 30 tỷ tài liệu cho nhiều trường hợp sử dụng quan trọng khác nhau, từ giám sát vận hành và khắc phục sự cố đến theo dõi ngăn xếp ứng dụng phân tán và tối ưu hóa chi phí.

1.4 So sánh cơ sở dữ liệu SQL (quan hệ) và NoSQL (không quan hệ)

NoSQL có nhiều ưu điểm, vì vậy ít nhất về mặt lý thuyết, bạn nên biết rằng công cụ bạn cần đã tồn tại trước khi tự viết nó. Dưới đây tôi sẽ đưa ra một so sánh về cơ sở dữ liệu NoSQL và SQL:

Khối lượng công việc phù hợp

Cơ sở dữ liệu quan hệ được thiết kế cho các ứng dụng xử lý giao dịch thời gian thực (OLTP) mang tính giao dịch và có tính nhất quán cao, đồng thời rất phù hợp với xử lý phân tích thời gian thực (OLAP).

Cơ sở dữ liệu NoSQL được thiết kế để hoạt động với nhiều kiểu truy cập dữ liệu, bao gồm các ứng dụng có độ trễ thấp. Cơ sở dữ liệu tìm kiếm NoSQL được thiết kế để phân tích dữ liệu bán cấu trúc.

Mô hình dữ liệu

Mô hình quan hệ chuẩn hóa dữ liệu và biến nó thành các bảng bao gồm các hàng và cột. Một lược đồ xác định rõ ràng các bảng, hàng, cột, chỉ mục, mối quan hệ giữa các bảng và các phần tử cơ sở dữ liệu khác. Cơ sở dữ liệu như vậy đảm bảo tính toàn vẹn của dữ liệu tham chiếu trong mối quan hệ giữa các bảng.

Cơ sở dữ liệu NoSQL cung cấp nhiều mô hình dữ liệu như cặp khóa-giá trị, tài liệu và biểu đồ được tối ưu hóa để có hiệu suất cao và khả năng mở rộng.

Thuộc tính AXIT

Cơ sở dữ liệu quan hệ cung cấp một tập hợp các thuộc tính ACID: tính nguyên tử, tính nhất quán, tính cô lập, độ tin cậy.

  • Tính nguyên tử yêu cầu một giao dịch được thực hiện toàn bộ hoặc không hoàn toàn.
  • Tính nhất quán có nghĩa là ngay sau khi giao dịch hoàn tất, dữ liệu phải phù hợp với lược đồ cơ sở dữ liệu.
  • Sự cô lập yêu cầu các giao dịch song song chạy tách biệt với nhau.
  • Độ tin cậy đề cập đến khả năng khôi phục về trạng thái được lưu lần cuối sau sự cố hệ thống hoặc mất điện bất ngờ.

Cơ sở dữ liệu NoSQL thường cung cấp một sự thỏa hiệp, nới lỏng các yêu cầu cứng nhắc của các thuộc tính ACID để có lợi cho một mô hình dữ liệu linh hoạt hơn cho phép mở rộng quy mô theo chiều ngang. Điều này làm cho NoSQL trở thành lựa chọn tuyệt vời cho các trường hợp sử dụng băng thông cao, độ trễ thấp, yêu cầu mở rộng theo chiều ngang ngoài một phiên bản.

Hiệu suất

Hiệu suất chủ yếu phụ thuộc vào hệ thống con đĩa. Việc tối ưu hóa các truy vấn, chỉ mục và cấu trúc bảng thường được yêu cầu để có hiệu suất tối đa.

Hiệu suất thường phụ thuộc vào kích thước của cụm phần cứng cơ bản, độ trễ của mạng và ứng dụng gọi điện.

chia tỷ lệ

Cơ sở dữ liệu quan hệ thường mở rộng quy mô bằng cách tăng sức mạnh tính toán của phần cứng hoặc bằng cách thêm các bản sao riêng biệt cho khối lượng công việc đọc.

Cơ sở dữ liệu NoSQL thường hỗ trợ khả năng phân tách cao thông qua các mẫu truy cập có thể mở rộng dựa trên kiến ​​trúc phân tán. Điều này cải thiện thông lượng và mang lại hiệu suất nhất quán ở quy mô gần như không giới hạn.

API

Các yêu cầu ghi và truy xuất dữ liệu được viết bằng SQL. Các truy vấn này được phân tích cú pháp và thực thi bởi một cơ sở dữ liệu quan hệ.

API hướng đối tượng cho phép các nhà phát triển ứng dụng dễ dàng viết và truy xuất cấu trúc dữ liệu. Sử dụng các khóa phân vùng, các ứng dụng có thể tìm kiếm các cặp khóa-giá trị, bộ cột hoặc tài liệu bán cấu trúc có chứa các đối tượng sê-ri và thuộc tính ứng dụng.