Azure Cosmos DB là gì?

·

·

Azure Cosmos DB là một dịch vụ cơ sở dữ liệu NoSQL phân tán toàn cầu, được quản lý hoàn toàn bởi Microsoft Azure. Được thiết kế để xử lý khối lượng dữ liệu lớn với độ trễ cực thấp, Cosmos DB là lựa chọn lý tưởng cho các ứng dụng như AI, thương mại điện tử, IoT, trò chơi hoặc phân tích thời gian thực. Dưới đây là cái nhìn chi tiết về những gì khiến Azure Cosmos DB trở thành một giải pháp mạnh mẽ trong lĩnh vực cơ sở dữ liệu bản địa đám mây.

Azure Cosmos DB là gì?

Azure Cosmos DB là một dịch vụ cơ sở dữ liệu NoSQL đa mô hình, phân tán toàn cầu, cung cấp khả năng mở rộng ngang trên nhiều khu vực, hỗ trợ nhiều mô hình dữ liệu và đảm bảo độ trễ đọc/ghi chỉ vài mili giây. Đây là một dịch vụ được quản lý hoàn toàn, tự động xử lý quản trị cơ sở dữ liệu, cập nhật và vá lỗi, giúp giảm tải cho người dùng. Cosmos DB cũng tự động điều chỉnh dung lượng dựa trên nhu cầu ứng dụng với các tùy chọn serverless và tự động mở rộng tiết kiệm chi phí.

Các điểm nổi bật:
  1. Hỗ trợ ghi đa khu vực và phân phối toàn cầu.
  2. Khả năng mở rộng linh hoạt về thông lượng và lưu trữ.
  3. Cam kết SLA đạt độ sẵn sàng 99,999%.
  4. Nhiều cấp độ nhất quán dữ liệu.
  5. Hỗ trợ nhiều API: SQL (Core), MongoDB, Cassandra, Gremlin (Graph) và Table (Key-Value).
Kiến trúc cốt lõi

Azure Cosmos DB hoạt động dựa trên các công cụ lưu trữ và tính toán phân tán độc quyền. Các thành phần kiến trúc chính bao gồm:

  1. Phân vùng (Partitioning): Dữ liệu được phân chia trên các máy chủ vật lý bằng khóa phân vùng. Cosmos DB mở rộng ngang bằng cách gán dữ liệu vào các phân vùng logic và ánh xạ chúng vào các phân vùng vật lý một cách linh hoạt.
  2. Sao chép (Replication): Mỗi mục dữ liệu được sao chép trên nhiều vùng khả dụng hoặc khu vực, đảm bảo độ bền cao. Có thể cấu hình chế độ active-active để hỗ trợ đa khu vực.
  3. Đa mô hình (Multi-model): Cosmos DB hỗ trợ nhiều API, cho phép các nhà phát triển chọn API phù hợp với ứng dụng của họ mà không ảnh hưởng đến hiệu suất.

Cosmos DB tự động lập chỉ mục tất cả dữ liệu mà không cần quản lý lược đồ hoặc chỉ mục phụ. Người dùng có thể tùy chỉnh chính sách lập chỉ mục, chẳng hạn như loại trừ đường dẫn để tiết kiệm tài nguyên, sử dụng chỉ mục tổng hợp cho các truy vấn đa thuộc tính hoặc chỉ mục không gian/phạm vi cho dữ liệu địa lý và lọc số.

Tính năng Change Feed cho phép ứng dụng theo dõi các thay đổi thời gian thực (thêm hoặc cập nhật) trong dữ liệu, hỗ trợ cả dữ liệu luồng và dữ liệu hàng loạt.

Các API được hỗ trợ

Cosmos DB cung cấp nhiều API để đáp ứng các nhu cầu khác nhau:

  • SQL API: Lưu trữ dữ liệu dưới dạng tài liệu JSON, hỗ trợ các ngôn ngữ truy vấn phổ biến.
  • MongoDB API: Lưu trữ dữ liệu dưới dạng tài liệu BSON, tương thích với giao thức MongoDB.
  • Cassandra API: Lưu trữ dữ liệu theo mô hình cột, tương thích với Apache Cassandra.
  • Gremlin API: Cơ sở dữ liệu đồ thị, hỗ trợ truy vấn traversal và sử dụng chiến lược phân vùng của Cosmos DB.
  • Table API: Lưu trữ key-value cho các tác vụ tra cứu nhanh, chỉ hỗ trợ kịch bản OLTP.
  • PostgreSQL API: Hỗ trợ dữ liệu trên một hoặc nhiều node, lý tưởng cho cơ sở dữ liệu đơn node với hỗ trợ JSONB.

Không có API nào là “tốt nhất”; lựa chọn phụ thuộc vào yêu cầu cụ thể của ứng dụng.

Azure Synapse Link cho Cosmos DB

Azure Synapse Link cho phép phân tích gần thời gian thực trên dữ liệu vận hành từ Cosmos DB mà không cần ETL (Extract, Transform, Load). Nó tự động đồng bộ dữ liệu Cosmos DB với kho phân tích của Synapse Analytics, tối ưu cho khối lượng công việc OLAP.

Lợi ích chính:
  • Không cần ETL: Loại bỏ nhu cầu di chuyển dữ liệu phức tạp, giảm chi phí.
  • Xử lý giao dịch và phân tích kết hợp (HTAP): Chạy phân tích trên dữ liệu trực tiếp mà không ảnh hưởng đến hiệu suất giao dịch.
  • Hỗ trợ T-SQL và Power BI: Cho phép truy vấn toàn diện và trực quan hóa dữ liệu phong phú.

Synapse Link mang lại một pipeline phân tích thời gian thực, điều mà các kiến trúc truyền thống thường khó đạt được.

Hiệu suất và bảo mật

Hiệu suất của Cosmos DB được định nghĩa bằng Request Units (RU/s) – đơn vị đo thông lượng chuẩn hóa. Người dùng có thể cung cấp thông lượng ở cấp container hoặc cơ sở dữ liệu, sử dụng tính năng tự động mở rộng để điều chỉnh RU/s theo nhu cầu hoặc tận dụng Integrated Cache để giảm tiêu thụ RU và độ trễ.

Về bảo mật, Cosmos DB hỗ trợ:

  • Mã hóa dữ liệu cả khi lưu trữ và truyền tải.
  • Cài đặt điểm cuối riêng và tích hợp VNET.
  • Quản lý quyền truy cập dựa trên vai trò (RBAC).
  • Ghi log nâng cao qua Azure Monitor và Diagnostic Logs.
  • Tuân thủ các tiêu chuẩn như ISO, SOC, HIPAA, GDPR.

Để tìm hiểu thêm về RU/s, tham khảo: Tài liệu chính thức về Request Units.
Để biết thêm về bảo mật, xem: Tài liệu bảo mật Cosmos DB.

Kết luận

Azure Cosmos DB không chỉ là một cơ sở dữ liệu NoSQL – nó là một nền tảng mạnh mẽ, có khả năng mở rộng toàn cầu với phân phối dữ liệu, cấp độ nhất quán linh hoạt và hiệu suất vượt trội. Dù bạn đang xây dựng ứng dụng yêu cầu phản hồi thời gian thực, xử lý mối quan hệ dữ liệu phức tạp hay quản lý khối lượng dữ liệu khổng lồ, Cosmos DB đều đáp ứng được.