1. DynamoDB DAX là gì?
Amazon DynamoDB Accelerator (DAX) là một dịch vụ cache in-memory có độ trễ thấp được thiết kế để tăng tốc các hoạt động đọc trên DynamoDB. DAX giúp giảm thời gian phản hồi đọc từ mili giây (ms) xuống còn micro giây (μs) mà không cần thay đổi logic ứng dụng nhiều.
📌 Lưu ý quan trọng: DAX không thay thế DynamoDB, nó chỉ là một lớp đệm (caching layer) nằm giữa ứng dụng và DynamoDB.
2. Tại sao nên dùng DAX?
2.1. Vấn đề cần giải quyết
DynamoDB vốn đã rất nhanh, nhưng vẫn có độ trễ trung bình khoảng 5–10ms cho mỗi truy vấn đọc. Với những ứng dụng yêu cầu tốc độ cao như:
- Game real-time
- Ứng dụng tài chính, giao dịch
- Ứng dụng mobile/web có lượng truy cập lớn
…thì việc giảm thêm vài mili giây là cực kỳ quan trọng.
2.2. Lợi ích của DAX
Tính năng | Mô tả |
---|---|
⚡ Tốc độ cực nhanh | Đọc dữ liệu dưới 1ms nhờ lưu trữ dữ liệu trong RAM |
🔄 Tự động hóa hoàn toàn | Không cần tự viết cache logic, DAX xử lý tự động cache hit/miss |
🛠️ Tích hợp liền mạch | Sử dụng SDK của AWS để thay thế client hiện tại bằng DAX client |
🏗️ Hoàn toàn được quản lý | AWS lo về patching, replication, cluster management |
💸 Tối ưu chi phí | Giảm số lượng đọc từ DynamoDB giúp tiết kiệm chi phí RCUs |
3. Cách DAX hoạt động
Luồng hoạt động:
- Ứng dụng gửi yêu cầu đọc đến client DAX.
- Client DAX kiểm tra cache:
- Nếu cache hit → trả dữ liệu từ RAM (microseconds)
- Nếu cache miss → lấy từ DynamoDB, lưu vào DAX, rồi trả về
- Ghi dữ liệu (
PutItem
,UpdateItem
,DeleteItem
) được gửi trực tiếp đến DynamoDB. DAX sẽ invalide cache tương ứng để đảm bảo dữ liệu mới.
Ví dụ trực quan:
App
↓
DAX Cluster
↓ ↑
DynamoDB
⚠️ Lưu ý:
- DAX chỉ hỗ trợ eventual consistency, không dùng cho ứng dụng yêu cầu strongly consistent reads.
- Dữ liệu trong DAX nằm trên RAM, không phải persistent ⇒ mất nếu cluster bị xoá hoặc failover chưa hoàn tất.
4. Cách cấu hình và sử dụng DAX
4.1. Tạo Cluster DAX
- Vào console DynamoDB ⇒ “DAX”
- Chọn “Create cluster”
- Cấu hình các thông số:
- Cluster name
- Node type (ví dụ:
dax.r5.large
) - Number of nodes: 3+ để hỗ trợ HA
- IAM role (cho phép DAX truy cập DynamoDB)
- VPC, Subnet, Security Group
🧠 Cluster DAX nên triển khai trong cùng VPC/subnet với ứng dụng để giảm latency.
4.2. Sử dụng DAX trong ứng dụng
Thay đổi cách tạo DynamoDB client. Dưới đây là ví dụ cho Java SDK:
AmazonDaxClientBuilder daxClientBuilder = AmazonDaxClientBuilder.standard();
daxClientBuilder.withRegion("ap-northeast-1")
.withEndpointConfiguration(
new EndpointConfiguration("my-dax-cluster.abc.clustercfg.dax.apne1.amazonaws.com", "ap-northeast-1"));
AmazonDynamoDB client = daxClientBuilder.build();
DynamoDBMapper mapper = new DynamoDBMapper(client);
Với các SDK như Python (boto3), hiện chưa hỗ trợ DAX chính thức.
5. Các điểm cần nhớ khi ôn thi AWS DVA-C02
🎯 Khi nào dùng DAX:
- Ứng dụng cần đọc nhanh (low-latency reads)
- Dữ liệu đọc thường xuyên, ít thay đổi
- Cần giảm chi phí RCU
❌ Khi nào không dùng DAX:
- Cần Strongly consistent reads
- Ghi dữ liệu với tần suất cao
- Dữ liệu nhạy cảm, yêu cầu bảo mật cao (vì cache in-memory)
🧠 Ghi nhớ:
- DAX chỉ cache các truy vấn đọc, không cache ghi
- DAX không thay thế DynamoDB → bạn vẫn cần tạo bảng DynamoDB
- DAX cluster nằm trong VPC và cần security group cho phép kết nối từ client
6. Câu hỏi luyện thi ví dụ
❓ Câu 1:
Một ứng dụng yêu cầu độ trễ dưới 1ms cho các truy vấn đọc. Dữ liệu hiếm khi thay đổi. Giải pháp nào sau đây là phù hợp nhất?
A. Tăng Read Capacity Units (RCUs)
B. Dùng ElastiCache với Redis
C. Kích hoạt DynamoDB Accelerator (DAX)
D. Chuyển sang chế độ on-demand
✅ Đáp án đúng: C
❓ Câu 2:
DAX hỗ trợ loại truy vấn đọc nào?
A. Strongly consistent reads
B. Eventually consistent reads
C. Transactional reads
D. Read-after-write consistency
✅ Đáp án đúng: B
7. So sánh DAX với ElastiCache
Tiêu chí | DynamoDB DAX | ElastiCache |
---|---|---|
Tích hợp sẵn với DynamoDB | ✅ | ❌ (phải code logic cache thủ công) |
Tương thích API DynamoDB | ✅ | ❌ |
Độ trễ | Microseconds | Microseconds |
Kiểm soát linh hoạt cache | ❌ | ✅ |
Hỗ trợ nhiều kiểu DB | ❌ (chỉ DynamoDB) | ✅ (MySQL, PostgreSQL, API, v.v.) |
8. Kết luận
DAX là một dịch vụ cực kỳ hiệu quả giúp bạn tăng tốc độ đọc cho DynamoDB mà không cần viết thêm logic caching. Khi ôn thi DVA-C02, bạn cần nhớ:
- DAX = Managed in-memory cache for DynamoDB
- Chỉ hỗ trợ eventually consistent reads
- Phù hợp cho ứng dụng đọc nhiều, ít ghi