Chuỗi: lakehouse-glossary · Phần 11
Năng suất & công cụ dev
Change Data Capture (CDC) trong Lakehouse
CDC: phát hiện và truyền thay đổi (insert/update/delete) từ DB nguồn sang warehouse hoặc lakehouse. Log-based, trigger, timestamp. Debezium, Airbyte.
2026-03-172 phút đọcVI
Chuỗi: lakehouse-glossary
- 1.Delta Lake / Apache Iceberg / Apache Hudi — Định dạng bảng cho Lakehouse
- 2.Data versioning và time travel trong Lakehouse
- 3.Schema evolution và enforcement trong Lakehouse
- 4.Tối ưu định dạng file – Parquet, Delta, Z-Ordering
- 5.Compaction và chiến lược quản lý file
- 6.Tối ưu bảng và chiến lược clustering
- 7.Định dạng bảng và quản lý metadata
- 8.Governance — Data catalog, lineage, kiểm soát truy cập
- 9.Security – Mã hóa, masking, tokenization
- 10.Metadata – Metadata store, lineage, discovery
- 11.Change Data Capture (CDC) trong Lakehouse(bài này)
CDC (Change Data Capture) là một kỹ thuật trong quản lý dữ liệu dùng để phát hiện và ghi lại những thay đổi (insert, update, delete) trong cơ sở dữ liệu nguồn theo thời gian thực hoặc gần thực.
Mục tiêu của CDC
Giúp đồng bộ dữ liệu từ hệ thống nguồn sang các hệ thống đích như data warehouse, data lake, hoặc hệ thống lakehouse mà không cần quét toàn bộ bảng.
Nguyên lý hoạt động của CDC
CDC thường được triển khai theo 3 cơ chế phổ biến:
| Cơ chế CDC | Mô tả ngắn |
|---|---|
| Log-based | Theo dõi trực tiếp từ transaction log (binlog) của DB (MySQL, Postgres…) |
| Trigger-based | Dùng trigger trong DB để ghi lại thay đổi vào bảng audit |
| Timestamp-based | So sánh giá trị last_updated_at để lấy các bản ghi mới hoặc thay đổi |
Các công cụ CDC mã nguồn mở phổ biến
| Công cụ | Mô tả |
|---|---|
| Debezium | CDC theo kiểu log-based, hoạt động tốt với Kafka, Postgres, MySQL |
| Airbyte | Hỗ trợ CDC nhiều hệ quản trị dữ liệu, dùng làm ingestion layer |
| Apache NiFi | Hỗ trợ flow-based CDC qua trigger hoặc log |
| StreamSets | Kết nối, phát hiện thay đổi và truyền vào hệ thống xử lý dữ liệu khác |
Use Cases của CDC trong Lakehouse
- Đồng bộ dữ liệu từ hệ thống giao dịch (OLTP) sang Lakehouse
- Phát hiện thay đổi trạng thái hợp đồng và cập nhật dashboard gần như real-time
- Ghi lại lịch sử thay đổi khách hàng trong bảng phiên bản hóa (versioning)
- Kết hợp với Kafka để build kiến trúc event-driven
- Tự động tái kích hoạt pipeline xử lý khi có update mới
Ví dụ đơn giản
-- Bảng chính
CREATE TABLE customers (
id INT PRIMARY KEY,
name TEXT,
email TEXT,
last_updated TIMESTAMP
);
-- Đoạn SQL lấy thay đổi trong 1 giờ qua (timestamp-based CDC)
SELECT * FROM customers WHERE last_updated >= NOW() - INTERVAL '1 hour';