AWS

🚀 Tăng tốc Amazon DynamoDB với DAX – Hướng dẫn chi tiết cho DVA-C02


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ăngMô 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ànKhông cần tự viết cache logic, DAX xử lý tự động cache hit/miss
🛠️ Tích hợp liền mạchSử 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:

  1. Ứng dụng gửi yêu cầu đọc đến client DAX.
  2. 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ề
  3. 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

  1. Vào console DynamoDB ⇒ “DAX”
  2. Chọn “Create cluster”
  3. 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 DAXElastiCache
Tích hợp sẵn với DynamoDB❌ (phải code logic cache thủ công)
Tương thích API DynamoDB
Độ trễMicrosecondsMicroseconds
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

28 Views

Leave a Reply

Your email address will not be published. Required fields are marked *