AWS

AWS DynamoDB: Tất tần tật những gì bạn cần biết cho kỳ thi AWS DVA-C02

Giới thiệu

Amazon DynamoDB là một dịch vụ cơ sở dữ liệu NoSQL được quản lý hoàn toàn bởi AWS, cung cấp hiệu suất ổn định ở mọi quy mô. Đây là một trong những dịch vụ cốt lõi trong hệ sinh thái AWS và là một phần quan trọng trong nội dung kiểm tra của chứng chỉ AWS Certified Developer – Associate (DVA-C02).

Trong bài viết này, chúng ta sẽ đi sâu vào những khía cạnh chính của DynamoDB mà bạn cần nắm vững để chuẩn bị cho kỳ thi DVA-C02.

Khái niệm cơ bản

1. Cấu trúc dữ liệu

DynamoDB lưu trữ dữ liệu dưới dạng các bảng (tables), mỗi bảng gồm nhiều mục (items), và mỗi mục có thể có một hoặc nhiều thuộc tính (attributes). Không giống như cơ sở dữ liệu quan hệ, DynamoDB không yêu cầu schema cứng nhắc – ngoại trừ khóa chính (primary key).

2. Khóa chính (Primary Key)

DynamoDB hỗ trợ hai loại khóa chính:

  • Khóa phân vùng đơn (Simple Primary Key): Còn gọi là Partition Key, dùng để phân phối dữ liệu đều trên nhiều partition.
  • Khóa tổng hợp (Composite Primary Key): Gồm Partition Key và Sort Key, cho phép nhiều mục có cùng Partition Key nhưng phải có Sort Key khác nhau.

3. Đơn vị năng lực

  • Read Capacity Units (RCU): 1 RCU = 1 strong consistent read hoặc 2 eventually consistent read cho mục có kích thước tối đa 4KB.
  • Write Capacity Units (WCU): 1 WCU = 1 write operation cho mục có kích thước tối đa 1KB.

Các tính năng chính

1. Chế độ dung lượng (Capacity Modes)

  • Provisioned Throughput: Bạn xác định trước số lượng RCU và WCU mà ứng dụng của bạn cần. Phù hợp với lưu lượng dự đoán được.
  • On-Demand: Tự động điều chỉnh năng lực theo nhu cầu, thanh toán theo số lượng request thực tế. Lý tưởng cho lưu lượng không dự đoán được.

2. Indexes

  • Global Secondary Index (GSI): Index với partition key và sort key có thể khác với bảng chính. Phạm vi truy vấn toàn bảng.
  • Local Secondary Index (LSI): Index có cùng partition key với bảng chính nhưng sort key khác. Phải được tạo khi tạo bảng.

3. DynamoDB Streams

DynamoDB Streams cho phép bạn theo dõi các thay đổi trong bảng (thêm, sửa, xóa) theo thứ tự thời gian. Streams có thể được tích hợp với Lambda để kích hoạt xử lý sự kiện.

4. DynamoDB Transactions

DynamoDB hỗ trợ giao dịch ACID (Atomicity, Consistency, Isolation, Durability) cho nhiều thao tác trên nhiều mục và bảng.

5. TTL (Time to Live)

Cho phép tự động xóa các mục hết hạn dựa trên thuộc tính timestamp.

6. DAX (DynamoDB Accelerator)

Dịch vụ bộ nhớ cache in-memory cho DynamoDB, giúp cải thiện thời gian phản hồi từ microgiây xuống dưới microgiây.

Bảo mật

1. Encryption at Rest

DynamoDB mã hóa tất cả dữ liệu khi lưu trữ mặc định bằng AWS KMS (Key Management Service).

2. IAM Integration

Quản lý quyền truy cập chi tiết đến cấp bảng và thao tác thông qua AWS Identity and Access Management (IAM).

3. VPC Endpoints

Cho phép truy cập DynamoDB từ VPC mà không cần đi qua internet công cộng.

Chiến lược thiết kế và tối ưu hóa

1. Thiết kế khóa

  • Tránh hot partition bằng cách thiết kế partition key phân tán đều.
  • Sử dụng sort key để tổ chức dữ liệu và tối ưu hóa truy vấn.

2. Tối ưu hóa chi phí

  • Sử dụng Auto Scaling để điều chỉnh capacity theo nhu cầu.
  • Cân nhắc giữa Reserved Capacity, Provisioned và On-Demand.
  • Sử dụng TTL để loại bỏ dữ liệu không cần thiết.

3. Mẫu truy cập

  • Overloading indexes: Lưu trữ nhiều loại entity trong cùng một bảng.
  • Sparse indexes: Chỉ một tập con của các mục xuất hiện trong index.
  • Composite key design: Thiết kế sort key để hỗ trợ nhiều pattern truy vấn.

DynamoDB và Lambda

Tích hợp Lambda với DynamoDB là một chủ đề quan trọng trong kỳ thi DVA-C02:

  • Triggers: Sử dụng DynamoDB Streams để kích hoạt Lambda functions.
  • CRUD Operations: Thực hiện các hoạt động create, read, update, delete từ Lambda.
  • Pagination: Xử lý kết quả truy vấn lớn thông qua phân trang.

Best Practices cho DynamoDB

  1. Single-Table Design: Thiết kế để lưu trữ nhiều loại entity trong một bảng duy nhất.
  2. Avoid Hot Partitions: Thiết kế khóa phân vùng để phân phối lưu lượng đều.
  3. Use Caching: Triển khai DAX để giảm latency và chi phí.
  4. Batch Operations: Sử dụng BatchGetItem và BatchWriteItem để giảm số lượng API calls.
  5. Consistent Reads: Sử dụng eventually consistent reads khi có thể để tiết kiệm RCU.
  6. Compression: Nén dữ liệu lớn trước khi lưu vào DynamoDB.

Giám sát và logging

  1. CloudWatch Metrics: Theo dõi RCU/WCU, throttled requests, latency.
  2. CloudTrail: Ghi lại API calls cho kiểm toán và bảo mật.
  3. Contributor Insights: Xác định các hot keys và trends truy cập.

Backup và phục hồi

  1. Point-in-time Recovery: Khôi phục bảng đến bất kỳ thời điểm nào trong 35 ngày qua.
  2. On-demand Backups: Tạo bản sao lưu đầy đủ của bảng khi cần.

Câu hỏi thường gặp trong kỳ thi

  1. Tính toán capacity units: Làm thế nào để tính RCU/WCU cần thiết cho một workload cụ thể?
  2. Consistency models: Sự khác biệt giữa eventually consistent và strongly consistent reads?
  3. Partition management: Làm thế nào để tránh hot partitions?
  4. Index selection: Khi nào nên sử dụng GSI so với LSI?
  5. Streams và triggers: Làm thế nào để xử lý sự kiện với DynamoDB Streams?

Kết luận

Amazon DynamoDB là một dịch vụ mạnh mẽ với nhiều tính năng phức tạp. Để thành công trong kỳ thi AWS DVA-C02, hãy tập trung vào hiểu sâu về mô hình dữ liệu, capacity planning, indexes, streams, và các mẫu thiết kế phổ biến.

Hãy thực hành thông qua các lab thực tế để có kinh nghiệm trực tiếp về cấu hình DynamoDB và các tích hợp của nó với các dịch vụ AWS khác, đặc biệt là Lambda và API Gateway.

Chúc bạn thành công trong kỳ thi AWS DVA-C02!

16 Views

Leave a Reply

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