Azure Cosmos DB

📚 Giới Thiệu

Azure Cosmos DB là một dịch vụ cơ sở dữ liệu NoSQL đa mô hình, được phân phối toàn cầu, được quản lý hoàn toàn của Microsoft. Nó được thiết kế để cho phép bạn xây dựng các ứng dụng có khả năng phản hồi cao và có tính sẵn sàng cao ở quy mô toàn cầu.

🌟 Key Features

  • Global Distribution: Cung cấp phân phối dữ liệu theo phương thức chìa khóa trao tay đến bất kỳ số lượng khu vực Azure nào. Cung cấp khả năng đọc và ghi có độ trễ thấp trên toàn thế giới.
  • Multi-Model APIs: Hỗ trợ nhiều mô hình dữ liệu và API, bao gồm SQL (trước đây là DocumentDB), MongoDB, Cassandra, Gremlin (đồ thị) và Table (key-value).
  • Guaranteed Low Latency: Đảm bảo độ trễ đọc và ghi mili giây một chữ số ở phân vị thứ 99.
  • Multiple Consistency Levels: Cung cấp năm mức độ nhất quán được xác định rõ ràng: mạnh, lỗi thời giới hạn, phiên, tiền tố nhất quán và cuối cùng.
  • High Availability: Cung cấp SLA có tính sẵn sàng 99,999% cho cả tính sẵn sàng đọc và ghi.
  • Serverless: Cung cấp các mô hình dung lượng không có máy chủ và được cung cấp để phù hợp với các khối lượng công việc khác nhau.

✅ Ưu Điểm

  • Phân phối toàn cầu dễ dàng: Đơn giản hóa việc xây dựng các ứng dụng có quy mô toàn cầu, có tính sẵn sàng cao.
  • Tính linh hoạt đa mô hình: Cho phép các nhà phát triển sử dụng các API và mô hình dữ liệu mà họ quen thuộc trong một dịch vụ duy nhất.
  • Hiệu suất có thể dự đoán được: Được hỗ trợ bởi các SLA toàn diện cho thông lượng, độ nhất quán, tính sẵn sàng và độ trễ.
  • Khả năng mở rộng đàn hồi: Mở rộng quy mô thông lượng và lưu trữ một cách độc lập và đàn hồi trên toàn cầu.

❌ Nhược Điểm

  • Chi phí: Có thể rất tốn kém, đặc biệt đối với các khối lượng công việc có thông lượng cao, được phân phối toàn cầu. Mô hình định giá dựa trên Đơn vị yêu cầu (RU) có thể phức tạp.
  • Đường cong học tập: Yêu cầu hiểu biết về các khái niệm như khóa phân vùng và các mức độ nhất quán để tối ưu hóa chi phí và hiệu suất.
  • Không phải là sự thay thế hoàn toàn: Mặc dù cung cấp khả năng tương thích API, nhưng nó có thể không hỗ trợ tất cả các tính năng của các công cụ cơ sở dữ liệu gốc (ví dụ: MongoDB, Cassandra).
  • Quá mức cần thiết cho các ứng dụng đơn giản: Có thể quá phức tạp và tốn kém cho các ứng dụng nhỏ, một khu vực.