Skip to content

Giới thiệu Amazon DynamoDB

Amazon DynamoDB là dịch vụ NoSQL database do AWS quản lý hoàn toàn (Fully Managed). DynamoDB cung cấp hiệu năng cao, độ trễ thấp (millisecond)tự động mở rộng để đáp ứng hàng triệu request mỗi giây.

Đây là một dịch vụ serverless: bạn không cần quản lý hạ tầng hay cluster, chỉ tập trung vào việc thiết kế dữ liệu.

Đặc điểm chính

  • Serverless: không cần cài đặt, vận hành server.
  • Key-Value & Document database: lưu trữ dữ liệu dưới dạng item (JSON-like).
  • High availability: dữ liệu được replication tự động trên nhiều AZ.
  • Auto scaling: tự động mở rộng read/write throughput.
  • Pay-per-use: tính phí dựa trên dung lượng lưu trữ và số request.

Thành phần cơ bản

  • Table: bảng lưu dữ liệu.
  • Item: một bản ghi trong bảng (giống document trong MongoDB).
  • Attribute: cột dữ liệu của item.
  • Partition key: khóa chính để xác định vùng lưu trữ dữ liệu.
  • Sort key (tùy chọn): giúp sắp xếp và truy vấn nhiều item có cùng partition key.

Index trong DynamoDB

  • Primary Index: Partition key + Sort key (nếu có).
  • Local Secondary Index (LSI): cho phép thêm sort key khác trên cùng partition key.
  • Global Secondary Index (GSI): cho phép truy vấn dựa trên thuộc tính khác ngoài partition key.

Tính năng nâng cao

  • DynamoDB Streams: stream thay đổi dữ liệu (insert, update, delete) để trigger Lambda hoặc xử lý bất đồng bộ.
  • TTL (Time To Live): tự động xóa item sau một thời gian định trước.
  • On-demand Mode: tự động scale theo lượng read/write thực tế, trả phí theo số request (không cần cấu hình throughput).
  • Provisioned Mode: người dùng định nghĩa trước read/write capacity.
    • Cost sẽ tính theo Read Capacity Units (RCU) và Write Capacity Units (WCU)

Ưu điểm

  • Hiệu năng cao, latency thấp.
  • Tự động scale theo nhu cầu.
  • Tích hợp chặt chẽ với Lambda, API Gateway, Step Functions.
  • Hỗ trợ nhiều tính năng nâng cao (Streams, TTL, GSI).

Hạn chế

  • Không hỗ trợ query phức tạp như SQL (chỉ query theo key và index).
  • Cần thiết kế bảng kỹ lưỡng ngay từ đầu (partition key, sort key).
  • Chi phí có thể tăng cao nếu không tối ưu access pattern.

Use cases thường gặp

  • Ứng dụng web/mobile: lưu dữ liệu người dùng, session.
  • IoT: lưu dữ liệu cảm biến theo thời gian thực.
  • Gaming: lưu leaderboard, dữ liệu người chơi.
  • E-commerce: lưu sản phẩm, giỏ hàng, đơn hàng.