DocumentDB

DocumentDB
- Aurora là “phiên bản do AWS triển khai” cho PostgreSQL / MySQL.
DocumentDB đóng vai trò tương tự cho MongoDB (MongoDB là một cơ sở dữ liệu NoSQL). - MongoDB được sử dụng để lưu trữ, truy vấn, và tạo index cho dữ liệu dạng JSON.
- Có cùng “mô hình triển khai” như Aurora.
- Là dịch vụ fully managed, highly available, hỗ trợ replication trên 3 Availability Zones (AZs).
- Dung lượng lưu trữ tự động mở rộng theo block 10GB, lên tới tối đa 64TB.
- Tự động scale lên để xử lý hàng triệu request mỗi giây.
So sánh với DynamoDB
| Tiêu chí | Amazon DocumentDB | Amazon DynamoDB |
|---|---|---|
| Loại DB | NoSQL (document DB – giống MongoDB) | NoSQL (key-value / document store) |
| Mô hình dữ liệu | Document (JSON – giống MongoDB) | Key-Value + hỗ trợ document (limited query flexibility) |
| Ngôn ngữ truy vấn | MongoDB Query Language | DynamoDB API (không dùng SQL, cần SDK hoặc PartiQL) |
| Tính năng JOIN / aggregation | Có hỗ trợ tốt (gần như MongoDB gốc) | Không hỗ trợ JOIN, hỗ trợ hạn chế aggregation |
| Tốc độ truy cập | Nhanh, nhưng không bằng DynamoDB ở scale cực lớn | Rất nhanh ở scale lớn, latency thấp (single-digit ms) |
| Khả năng mở rộng | Tự động mở rộng dung lượng, giới hạn tới 64TB | Gần như unlimited, mở rộng horizontal dễ dàng |
| Use case phù hợp | - App sử dụng MongoDB cũ |
Trong đó:
Document Store (ví dụ: MongoDB, DocumentDB)
- Dữ liệu được lưu dưới dạng tài liệu (document) — thường là JSON hoặc BSON.
- Cấu trúc dữ liệu phức tạp, có thể lồng nhau (nested objects, arrays).
- Mỗi document có thể có cấu trúc khác nhau (schema-less).
- Có thể truy vấn theo bất kỳ field nào trong document, thậm chí nested field.
- Ví dụ
{
"id": "001",
"name": "Alice",
"address": {
"city": "Hanoi",
"postalCode": "100000"
},
"skills": ["Java", "NodeJS"]
}Key-Value Store (ví dụ: DynamoDB, Redis, ElastiCache)
- Dữ liệu lưu trữ như một bảng ánh xạ giữa key và value.
- Không quan tâm nội dung value, chỉ cần biết key.
- Không hỗ trợ truy vấn theo nội dung trong value (trừ khi dùng workaround hoặc giới hạn).
- Ví dụ
Key: "user:001"
Value: { "name": "Alice", "age": 30 }Tóm lại:
- Nếu bạn cần quản lý dữ liệu có cấu trúc động, lồng nhau, và truy vấn linh hoạt → dùng DocumentDB.
- Nếu bạn cần truy cập siêu nhanh theo key và không cần truy vấn phức tạp → chọn DynamoDB hoặc Redis.
Bạn thấy bài này thế nào?