CDC (Change Data Capture) theo dõi và bắt mọi thay đổi (INSERT, UPDATE, DELETE) trong database rồi stream sang hệ thống khác gần như tức thời — thay cho việc poll database theo chu kỳ.
Cách làm phổ biến nhất là log-based CDC: đọc thẳng transaction log của database (WAL với PostgreSQL, binlog với MySQL). Cách này không phải sửa app hay thêm trigger, không ảnh hưởng hiệu năng ghi của production, và bắt được cả DELETE. Debezium là nền tảng CDC mã nguồn mở phổ biến nhất, cắm vào PostgreSQL/MySQL/MongoDB và đẩy thay đổi vào Kafka.
Dùng để:
- Invalidate cache — DB đổi là xoá key Redis tương ứng ngay.
- Đồng bộ data từ OLTP sang data warehouse theo thời gian thực, thay cho batch ETL chạy đêm.
- Sinh event cho microservice theo hướng event sourcing.
- Giữ index Elasticsearch luôn khớp với DB.
- Ghi audit log.
Hơn polling ở chỗ: độ trễ tính bằng giây thay vì phút hay giờ, tải lên DB nhẹ hơn nhiều, và không bỏ sót sự kiện xoá.
Lưu ý: muốn CDC đáng tin thì dùng kèm Outbox Pattern — ghi thay đổi vào bảng outbox trong cùng transaction với business logic, rồi để CDC đọc từ bảng đó.