DynamoDB Stream Processing - Global Table

3 phút đọcSeries: NoteBook: AWS Certified Solutions Architect Associate SAA-C031 lượt xem

DynamoDB – Stream Processing

  • DynamoDB Stream là một cơ chế stream ghi nhận theo thứ tự (ordered) mọi thay đổi item-level (create, update, delete) trong bảng DynamoDB.
    Điều này giúp bạn xử lý các tác vụ real-time dựa trên dữ liệu vừa thay đổi.
  • Use cases điển hình:
    • Gửi email chào mừng người dùng ngay khi INSERT user mới (real-time reaction).
    • Ghi nhận các thao tác người dùng để làm analytics thời gian thực.
    • Tự động insert dữ liệu sang bảng khác (derivative tables).
    • Đồng bộ dữ liệu sang region khác (cross-region replication).
    • Tự động invoke Lambda để xử lý logic business (gửi thông báo, ghi log...).

So sánh: DynamoDB Streams vs Kinesis Data Streams

Tiêu chíDynamoDB StreamsKinesis Data Streams (newer)
Retention24 giờLên đến 1 năm
Số lượng consumerGiới hạnHỗ trợ nhiều consumer song song
Xử lý bởiAWS Lambda Trigger, hoặc Kinesis AdapterLambda, Kinesis Analytics, Firehose, AWS Glue ETL v.v.
Mục tiêu sử dụngXử lý event đơn giản, near real-timeXử lý phức tạp, stream lớn, cần nhiều consumer
Chi phíRẻ hơnĐắt hơn nếu lưu lâu hoặc stream lớn
Tích hợp với DynamoDBNativeCần dùng adapter

Kết luận: Nên dùng cái nào?

✅ DynamoDB Streams:

  • Dễ setup.
  • Phù hợp với các tác vụ nhẹ và đơn giản như trigger Lambda, sync data nhỏ.
  • Chỉ cần giữ stream trong 24h là đủ.

✅ Kinesis Data Streams:

  • Dành cho hệ thống cần xử lý sâu và lâu dài: analytics, ETL, archive.
  • Scale tốt khi có nhiều consumer hoặc xử lý batch, aggregation, v.v.

Ví dụ Sơ đồ DynamoDB Streams Architecture

Luồng xử lý chính

  1. Application ➝ Table
    Ứng dụng thực hiện các thao tác create, update, delete trên bảng DynamoDB.
  2. Table ➝ DynamoDB Streams
    Mỗi thay đổi trong bảng sẽ được ghi nhận vào DynamoDB Streams theo đúng thứ tự xảy ra.
    Đây là entry point để xử lý các event phát sinh từ thay đổi dữ liệu.

2 hướng xử lý Stream

  • Hướng 1: Qua Processing Layer
    • DynamoDB Streams ➝ [Lambda hoặc KCL Adapter] ➝ các hệ thống downstream
    • AWS Lambda: Trigger tự động, xử lý logic business nhỏ, gọn.
    • DynamoDB KCL Adapter: Dùng cho consumer tự build bằng Kinesis Client Library (KCL), scale tốt hơn Lambda.
    • Từ Processing Layer, bạn có thể:
      • Gửi thông báo qua Amazon SNS (ví dụ: notify user, alert system).
      • Chuyển đổi/lọc dữ liệu và ghi sang DDB Table khác (ví dụ: bảng aggregate, archive...).
      • Gửi sang Amazon Redshift để làm analytics (BI).
  • Hướng 2: Đẩy sang Kinesis Data Streams
    • DynamoDB ➝ Kinesis Data Streams ➝ Firehose ➝ S3 / Elasticsearch
    • Dành cho hệ thống lớn, nhiều consumer, cần retain lâu.
    • Kinesis Data Firehose giúp tự động đẩy stream về các đích:
      •  Amazon S3: Lưu trữ dạng archive/log (dễ truy xuất sau này).
      • Amazon Elasticsearch: Làm search/indexing engine (dễ query nhanh).
      • Amazon Redshift: Xử lý dạng analytics (BI, dashboards...).

DynamoDB Global Tables

  • Giúp một table DynamoDB có thể được truy cập với độ trễ thấp ở nhiều vùng (region).
  • Active-Active replication
    • Cả hai bảng ở hai vùng đều là “master”, không có khái niệm master-slave. Điều này cho phép ứng dụng ở mỗi vùng đều có thể ghi và đọc dữ liệu trực tiếp mà không cần chuyển vùng.
  • Ứng dụng có thể thực hiện thao tác READ và WRITE tại bất kỳ region nào.
    • Việc này tạo thuận lợi cho HA (High Availability), giúp hệ thống vẫn hoạt động nếu 1 vùng bị sự cố.
  • Cần bật tính năng DynamoDB Streams như một điều kiện tiên quyết.
    • DynamoDB Global Tables dựa vào DynamoDB Streams để bắt event thay đổi dữ liệu và thực hiện đồng bộ hóa đến các vùng khác.
Bạn thấy bài này thế nào?