DynamoDB Stream Processing - Global Table
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
INSERTuser 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...).
- Gửi email chào mừng người dùng ngay khi
So sánh: DynamoDB Streams vs Kinesis Data Streams
| Tiêu chí | DynamoDB Streams | Kinesis Data Streams (newer) |
|---|---|---|
| Retention | 24 giờ | Lên đến 1 năm |
| Số lượng consumer | Giới hạn | Hỗ trợ nhiều consumer song song |
| Xử lý bởi | AWS Lambda Trigger, hoặc Kinesis Adapter | Lambda, Kinesis Analytics, Firehose, AWS Glue ETL v.v. |
| Mục tiêu sử dụng | Xử lý event đơn giản, near real-time | Xử 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 DynamoDB | Native | Cầ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
- Application ➝ Table
Ứng dụng thực hiện các thao táccreate,update,deletetrên bảng DynamoDB. - 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?