- Tác giả

- Name
- Nguyễn Đức Xinh
- Ngày xuất bản
- Ngày xuất bản
Amazon DocumentDB là gì? Hướng dẫn toàn tập về cơ sở dữ liệu tương thích MongoDB trên AWS
Amazon DocumentDB là một cơ sở dữ liệu tài liệu (document database) được AWS quản lý toàn phần, được thiết kế để tương thích với MongoDB. Điều này có nghĩa là bạn có thể sử dụng các driver và công cụ MongoDB hiện có để làm việc với DocumentDB mà không cần thay đổi mã ứng dụng.
Dịch vụ này lý tưởng cho các ứng dụng cần lưu trữ và truy vấn dữ liệu dạng JSON linh hoạt, chẳng hạn như hệ thống nội dung (CMS), phân tích người dùng, hoặc nền tảng thương mại điện tử.
Tính năng chính
- MongoDB Compatibility – hỗ trợ API MongoDB, giúp dễ dàng di chuyển hoặc mở rộng ứng dụng hiện có.
- Fully Managed – AWS tự động xử lý backup, patching, scaling, và phục hồi khi lỗi.
- JSON Document Model – dữ liệu được lưu trữ dưới dạng tài liệu linh hoạt, không cần schema cố định.
- High Availability – triển khai Multi-AZ với khả năng failover tự động.
- Security & Compliance – tích hợp VPC, IAM, KMS encryption và CloudWatch logging.
- Automatic Scaling – mở rộng dung lượng lưu trữ lên tới hàng trăm terabyte.
- Performance Optimization – lưu trữ tách biệt giữa compute và storage để tăng tốc độ truy vấn.
Cách hoạt động
Kiến trúc Amazon DocumentDB tách biệt rõ giữa compute và storage:
- Compute Layer (EC2 instances): xử lý các truy vấn, đọc/ghi dữ liệu.
- Storage Layer: tự động mở rộng và sao lưu dữ liệu trên nhiều AZ.
DocumentDB lưu dữ liệu dưới dạng tài liệu JSON, mỗi tài liệu có thể chứa:
- Các cặp key-value,
- Mảng,
- Hoặc tài liệu lồng nhau (nested document).
Bạn có thể truy vấn dữ liệu bằng MongoDB query syntax, hoặc thông qua các thư viện phổ biến (Node.js, Python, Java,…).
🚀 Amazon DocumentDB có thể làm gì
- Lưu trữ dữ liệu phi cấu trúc hoặc bán cấu trúc (semi-structured).
- Hỗ trợ ứng dụng web, CMS, IoT, phân tích người dùng.
- Dễ dàng di chuyển từ MongoDB sang AWS mà không thay đổi code.
- Cho phép truy vấn linh hoạt với bộ lọc, sắp xếp, và index.
- Kết hợp với AWS Lambda, Glue, Athena, hoặc QuickSight để xử lý và phân tích dữ liệu.
Use Cases
| Trường hợp | Mô tả |
|---|---|
| Hệ thống quản lý nội dung (CMS) | Lưu trữ và hiển thị nội dung động, dữ liệu phi cấu trúc. |
| Ứng dụng phân tích người dùng (User Analytics) | Theo dõi và phân tích hành vi người dùng theo thời gian thực. |
| E-commerce Platform | Lưu thông tin sản phẩm, người dùng, giỏ hàng với cấu trúc dữ liệu linh hoạt. |
| IoT Data Storage | Ghi nhận dữ liệu thiết bị, cảm biến và logs ở dạng JSON. |
| Mobile & Game Backend | Quản lý hồ sơ người chơi và trạng thái game. |
⚖️ So sánh Amazon DocumentDB với các dịch vụ tương tự
| Dịch vụ | Loại CSDL | Ưu điểm | Khi nên dùng |
|---|---|---|---|
| Amazon DocumentDB | Document Database | Tương thích MongoDB, fully managed, hiệu năng cao | Khi cần dữ liệu JSON linh hoạt và dễ di chuyển từ MongoDB |
| Amazon DynamoDB | Key-Value / NoSQL | Tốc độ cực cao, hỗ trợ scale tự động | Khi cần hiệu năng đọc/ghi cao và low latency |
| Amazon RDS (MySQL/PostgreSQL) | Relational Database | Dữ liệu có cấu trúc, hỗ trợ SQL | Khi cần quan hệ dữ liệu phức tạp |
| MongoDB Atlas | Managed MongoDB | Nhiều tính năng nâng cao, đa cloud | Khi cần đa nền tảng hoặc hạ tầng MongoDB gốc |
✅ Kết luận: DocumentDB phù hợp cho doanh nghiệp muốn tận dụng sức mạnh MongoDB nhưng cần độ tin cậy, bảo mật và khả năng mở rộng của AWS.
🧭 Best Practices
- Sử dụng indexes phù hợp để tối ưu hiệu suất truy vấn.
- Tận dụng replica set để tăng khả năng đọc và dự phòng.
- Đặt backup retention phù hợp với yêu cầu tuân thủ dữ liệu.
- Giám sát hiệu suất với Amazon CloudWatch Metrics.
- Luôn mã hóa dữ liệu at rest (KMS) và in transit (TLS).
🧪 Example
Ví dụ tạo collection và chèn dữ liệu bằng Python:
from pymongo import MongoClient
client = MongoClient("mongodb://user:password@docdb-cluster.cluster-xxxxxx.ap-southeast-1.docdb.amazonaws.com:27017/?ssl=true&replicaSet=rs0")
db = client['mydatabase']
collection = db['products']
# Thêm dữ liệu
collection.insert_one({
"name": "Laptop",
"brand": "Dell",
"price": 1200,
"stock": 50
})
# Truy vấn dữ liệu
for item in collection.find({"brand": "Dell"}):
print(item)
Kết luận
Amazon DocumentDB mang lại sự linh hoạt của MongoDB cùng với độ tin cậy, bảo mật, và khả năng mở rộng của AWS. Dịch vụ này đặc biệt phù hợp cho các ứng dụng cần quản lý dữ liệu JSON, nơi schema có thể thay đổi linh hoạt theo thời gian mà vẫn đảm bảo hiệu năng cao và tính sẵn sàng mạnh mẽ.
