zalo-icon
facebook-icon
phone-icon
Change Data Capture (CDC): Đồng bộ dữ liệu gần thời gian thực vào Data Warehouse

Dashboard tồn kho cập nhật lúc 8 giờ nhưng đến 10 giờ đã có hàng nghìn đơn mới. Nếu hệ thống vẫn chờ batch cuối ngày, cảnh báo thiếu hàng và quyết định điều chuyển đều dựa trên trạng thái cũ. Change Data Capture giải quyết khoảng trễ đó bằng cách ghi nhận phần thay đổi từ hệ thống nguồn.

Bài viết đi từ bản chất CDC, ba cơ chế phổ biến, snapshot, thứ tự sự kiện, duplicate, delete, schema evolution đến MERGE trên Data Warehouse, giám sát, bảo mật và case tồn kho đa kênh.

Mục lục

  • PHẦN I — Khi nào doanh nghiệp cần CDC
  • PHẦN II — Kiến trúc từ nguồn tới event
  • PHẦN III — Tính đúng đắn của dữ liệu
  • PHẦN IV — Nạp vào Data Warehouse và vận hành
  • PHẦN V — Case và lộ trình triển khai
Change Data Capture đọc thay đổi từ transaction log của cơ sở dữ liệu

PHẦN I — CDC VÀ CÁC PHƯƠNG THỨC

1. CDC giải quyết vấn đề gì

CDC ghi nhận phần dữ liệu vừa thay đổi thay vì quét lại toàn bảng. Đây là điểm thường quyết định CDC có tạo được một mô hình dễ dùng hay chỉ tạo thêm lớp kỹ thuật. Trước khi viết SQL, đội dự án phải chốt câu hỏi cần trả lời, mức chi tiết, owner và điều kiện nghiệm thu.

Ví dụ thực tế: Đơn hàng mới và trạng thái vừa sửa được đưa vào kho trong vài phút. Ví dụ phải được đối soát bằng dữ liệu thật và một báo cáo đang được nghiệp vụ sử dụng; nếu chỉ kiểm tra vài dòng mẫu, sai lệch tổng hợp có thể không xuất hiện.

Rủi ro cần tránh: Gọi batch 5 phút là real-time dù vẫn quét lặp và bỏ sót delete. Cách kiểm soát là ghi quyết định vào tài liệu mô hình, tạo test tự động và chỉ phát hành khi owner nghiệp vụ xác nhận kết quả.

2. Khi nào batch vẫn đủ

Độ trễ phải theo quyết định kinh doanh. Trong dự án thực tế, bước này cần được xử lý đồng thời ở ba lớp: định nghĩa nghiệp vụ, thiết kế dữ liệu và cơ chế vận hành. Thiếu một lớp, giải pháp có thể đúng hôm nay nhưng sai khi nguồn hoặc quy trình thay đổi.

Báo cáo tài chính T+1 không cần hạ xuống vài giây. Nhóm dữ liệu nên lưu truy vấn đối soát, dữ liệu đầu vào và kết quả mong đợi để biến ví dụ thành regression test. Khi logic được sửa, test cho biết thay đổi nào là chủ ý và thay đổi nào là lỗi.

Dùng streaming cho mọi nguồn làm chi phí và vận hành tăng. Vì vậy, không nên đánh giá riêng bằng tốc độ truy vấn. Khả năng giải thích, truy vết, phân quyền và chạy lại cũng phải nằm trong tiêu chí nghiệm thu.

3. Log-based CDC

Một cách tiếp cận an toàn với log-based cdc là bắt đầu từ tình huống cụ thể. Đọc transaction log thường ít tác động nguồn và thấy insert, update, delete. Sau đó mới chọn cấu trúc bảng, chiến lược xử lý và công nghệ phù hợp.

Tình huống: MySQL binlog hoặc PostgreSQL WAL phát sự kiện theo thứ tự commit. Từ tình huống này, đội dự án xác định dữ liệu nào là nguồn chuẩn, dữ liệu nào chỉ bổ sung ngữ cảnh và thời điểm nào được xem là hoàn tất.

Điểm kiểm soát: Retention log quá ngắn khiến connector mất khả năng khôi phục. Mỗi lần chạy cần ghi phiên bản mã, khoảng dữ liệu, kết quả test và tài sản phía sau bị ảnh hưởng. Đây là cơ sở để xử lý sự cố mà không phải dò tìm thủ công.

4. Query-based CDC

Truy vấn updated_at dễ triển khai cho bảng nhỏ. Câu hỏi quan trọng không phải “công cụ có hỗ trợ hay không”, mà là doanh nghiệp muốn bảo toàn ý nghĩa nào của dữ liệu khi thời gian, khối lượng và số lượng người dùng tăng lên.

Pipeline dùng timestamp cùng primary key làm watermark kép. Khi đưa vào production, nhóm nên đo cả độ đúng, độ tươi, chi phí và thời gian phục hồi. Một thiết kế tốt phải giữ kết quả ổn định khi chạy lại cùng dữ liệu và phải nêu rõ hành vi với dữ liệu đến muộn.

Timestamp không đổi khi delete hoặc nhiều dòng trùng thời điểm gây mất dữ liệu. Nếu chưa thể loại bỏ rủi ro, hệ thống cần ít nhất phát hiện, cách ly và cảnh báo có owner. Không nên âm thầm thay giá trị lỗi bằng 0 hoặc bỏ bản ghi vì dashboard vẫn có thể hiển thị “đẹp” nhưng dẫn tới quyết định sai.

5. Trigger-based CDC

Trigger ghi thay đổi sang audit table ngay trong nguồn. Đây là điểm thường quyết định CDC có tạo được một mô hình dễ dùng hay chỉ tạo thêm lớp kỹ thuật. Trước khi viết SQL, đội dự án phải chốt câu hỏi cần trả lời, mức chi tiết, owner và điều kiện nghiệm thu.

Ví dụ thực tế: Hệ thống cũ không mở transaction log có thể dùng trigger cho một số bảng. Ví dụ phải được đối soát bằng dữ liệu thật và một báo cáo đang được nghiệp vụ sử dụng; nếu chỉ kiểm tra vài dòng mẫu, sai lệch tổng hợp có thể không xuất hiện.

Rủi ro cần tránh: Trigger tăng tải và trở thành logic ẩn trong OLTP. Cách kiểm soát là ghi quyết định vào tài liệu mô hình, tạo test tự động và chỉ phát hành khi owner nghiệp vụ xác nhận kết quả.

6. Đánh giá nguồn trước triển khai

Cần kiểm tra khóa, log mode, volume, transaction size, timezone và quyền. Trong dự án thực tế, bước này cần được xử lý đồng thời ở ba lớp: định nghĩa nghiệp vụ, thiết kế dữ liệu và cơ chế vận hành. Thiếu một lớp, giải pháp có thể đúng hôm nay nhưng sai khi nguồn hoặc quy trình thay đổi.

Bảng không có primary key phải có chiến lược định danh riêng. Nhóm dữ liệu nên lưu truy vấn đối soát, dữ liệu đầu vào và kết quả mong đợi để biến ví dụ thành regression test. Khi logic được sửa, test cho biết thay đổi nào là chủ ý và thay đổi nào là lỗi.

Bật CDC production mà không đo tải làm ảnh hưởng giao dịch. Vì vậy, không nên đánh giá riêng bằng tốc độ truy vấn. Khả năng giải thích, truy vết, phân quyền và chạy lại cũng phải nằm trong tiêu chí nghiệm thu.

Kiến trúc CDC đồng bộ dữ liệu gần thời gian thực vào Data Warehouse

PHẦN II — SNAPSHOT, EVENT VÀ TRUYỀN TẢI

1. Initial snapshot

CDC cần trạng thái ban đầu trước khi áp thay đổi mới. Đây là điểm thường quyết định pipeline gần thời gian thực có tạo được một mô hình dễ dùng hay chỉ tạo thêm lớp kỹ thuật. Trước khi viết SQL, đội dự án phải chốt câu hỏi cần trả lời, mức chi tiết, owner và điều kiện nghiệm thu.

Ví dụ thực tế: Snapshot tại vị trí log nhất quán rồi tiếp tục từ checkpoint đó. Ví dụ phải được đối soát bằng dữ liệu thật và một báo cáo đang được nghiệp vụ sử dụng; nếu chỉ kiểm tra vài dòng mẫu, sai lệch tổng hợp có thể không xuất hiện.

Rủi ro cần tránh: Snapshot và stream chồng lấn tạo trùng hoặc khoảng trống. Cách kiểm soát là ghi quyết định vào tài liệu mô hình, tạo test tự động và chỉ phát hành khi owner nghiệp vụ xác nhận kết quả.

2. Event envelope

Sự kiện nên có before, after, operation, source timestamp, log position và schema version. Trong dự án thực tế, bước này cần được xử lý đồng thời ở ba lớp: định nghĩa nghiệp vụ, thiết kế dữ liệu và cơ chế vận hành. Thiếu một lớp, giải pháp có thể đúng hôm nay nhưng sai khi nguồn hoặc quy trình thay đổi.

Delete vẫn giữ key cùng ảnh chụp trước để bảng đích xử lý. Nhóm dữ liệu nên lưu truy vấn đối soát, dữ liệu đầu vào và kết quả mong đợi để biến ví dụ thành regression test. Khi logic được sửa, test cho biết thay đổi nào là chủ ý và thay đổi nào là lỗi.

Chỉ gửi after image làm mất khả năng audit. Vì vậy, không nên đánh giá riêng bằng tốc độ truy vấn. Khả năng giải thích, truy vết, phân quyền và chạy lại cũng phải nằm trong tiêu chí nghiệm thu.

3. Thứ tự và partition key

Một cách tiếp cận an toàn với thứ tự và partition key là bắt đầu từ tình huống cụ thể. Thứ tự toàn cục khó đảm bảo nhưng thứ tự theo business key có thể kiểm soát. Sau đó mới chọn cấu trúc bảng, chiến lược xử lý và công nghệ phù hợp.

Tình huống: Các thay đổi của cùng order_id đi cùng partition. Từ tình huống này, đội dự án xác định dữ liệu nào là nguồn chuẩn, dữ liệu nào chỉ bổ sung ngữ cảnh và thời điểm nào được xem là hoàn tất.

Điểm kiểm soát: Chọn key ngẫu nhiên làm update cũ ghi đè update mới. Mỗi lần chạy cần ghi phiên bản mã, khoảng dữ liệu, kết quả test và tài sản phía sau bị ảnh hưởng. Đây là cơ sở để xử lý sự cố mà không phải dò tìm thủ công.

4. At-least-once và duplicate

Nhiều nền tảng ưu tiên giao ít nhất một lần nên consumer phải idempotent. Câu hỏi quan trọng không phải “công cụ có hỗ trợ hay không”, mà là doanh nghiệp muốn bảo toàn ý nghĩa nào của dữ liệu khi thời gian, khối lượng và số lượng người dùng tăng lên.

MERGE theo key và log sequence bỏ sự kiện đã xử lý. Khi đưa vào production, nhóm nên đo cả độ đúng, độ tươi, chi phí và thời gian phục hồi. Một thiết kế tốt phải giữ kết quả ổn định khi chạy lại cùng dữ liệu và phải nêu rõ hành vi với dữ liệu đến muộn.

INSERT trực tiếp làm nhân bản fact sau retry. Nếu chưa thể loại bỏ rủi ro, hệ thống cần ít nhất phát hiện, cách ly và cảnh báo có owner. Không nên âm thầm thay giá trị lỗi bằng 0 hoặc bỏ bản ghi vì dashboard vẫn có thể hiển thị “đẹp” nhưng dẫn tới quyết định sai.

PHẦN III — ĐÚNG THỨ TỰ, KHÔNG TRÙNG VÀ KHÔNG MẤT

1. Xử lý delete

Delete có thể hard delete, soft delete hoặc tạo tombstone tùy yêu cầu. Đây là điểm thường quyết định CDC có tạo được một mô hình dễ dùng hay chỉ tạo thêm lớp kỹ thuật. Trước khi viết SQL, đội dự án phải chốt câu hỏi cần trả lời, mức chi tiết, owner và điều kiện nghiệm thu.

Ví dụ thực tế: Gold đánh dấu is_deleted để audit trong khi serving loại bản ghi. Ví dụ phải được đối soát bằng dữ liệu thật và một báo cáo đang được nghiệp vụ sử dụng; nếu chỉ kiểm tra vài dòng mẫu, sai lệch tổng hợp có thể không xuất hiện.

Rủi ro cần tránh: Bỏ qua delete làm tồn kho và khách hoạt động sai. Cách kiểm soát là ghi quyết định vào tài liệu mô hình, tạo test tự động và chỉ phát hành khi owner nghiệp vụ xác nhận kết quả.

2. Out-of-order event

Sự kiện đến sai thứ tự cần so source version thay vì arrival time. Trong dự án thực tế, bước này cần được xử lý đồng thời ở ba lớp: định nghĩa nghiệp vụ, thiết kế dữ liệu và cơ chế vận hành. Thiếu một lớp, giải pháp có thể đúng hôm nay nhưng sai khi nguồn hoặc quy trình thay đổi.

Update version 12 không bị version 11 đến muộn ghi đè. Nhóm dữ liệu nên lưu truy vấn đối soát, dữ liệu đầu vào và kết quả mong đợi để biến ví dụ thành regression test. Khi logic được sửa, test cho biết thay đổi nào là chủ ý và thay đổi nào là lỗi.

Dùng ingestion_time làm chuẩn phá trạng thái. Vì vậy, không nên đánh giá riêng bằng tốc độ truy vấn. Khả năng giải thích, truy vết, phân quyền và chạy lại cũng phải nằm trong tiêu chí nghiệm thu.

3. Late-arriving data

Một cách tiếp cận an toàn với late-arriving data là bắt đầu từ tình huống cụ thể. Event hợp lệ có thể đến sau cửa sổ báo cáo. Sau đó mới chọn cấu trúc bảng, chiến lược xử lý và công nghệ phù hợp.

Tình huống: Hoàn tiền sau ba ngày cập nhật partition ngày bán và dashboard ghi rõ thời điểm làm mới. Từ tình huống này, đội dự án xác định dữ liệu nào là nguồn chuẩn, dữ liệu nào chỉ bổ sung ngữ cảnh và thời điểm nào được xem là hoàn tất.

Điểm kiểm soát: Chỉ sửa ngày hiện tại khiến lịch sử sai. Mỗi lần chạy cần ghi phiên bản mã, khoảng dữ liệu, kết quả test và tài sản phía sau bị ảnh hưởng. Đây là cơ sở để xử lý sự cố mà không phải dò tìm thủ công.

4. Schema evolution

Schema registry hoặc contract giúp phân loại thay đổi. Câu hỏi quan trọng không phải “công cụ có hỗ trợ hay không”, mà là doanh nghiệp muốn bảo toàn ý nghĩa nào của dữ liệu khi thời gian, khối lượng và số lượng người dùng tăng lên.

Thêm nullable field tương thích; đổi kiểu khóa phải dừng và review. Khi đưa vào production, nhóm nên đo cả độ đúng, độ tươi, chi phí và thời gian phục hồi. Một thiết kế tốt phải giữ kết quả ổn định khi chạy lại cùng dữ liệu và phải nêu rõ hành vi với dữ liệu đến muộn.

Consumer âm thầm bỏ cột mới. Nếu chưa thể loại bỏ rủi ro, hệ thống cần ít nhất phát hiện, cách ly và cảnh báo có owner. Không nên âm thầm thay giá trị lỗi bằng 0 hoặc bỏ bản ghi vì dashboard vẫn có thể hiển thị “đẹp” nhưng dẫn tới quyết định sai.

5. Kafka, Pub/Sub và hàng đợi

Lớp truyền tải tách nguồn khỏi nhiều consumer. Đây là điểm thường quyết định CDC có tạo được một mô hình dễ dùng hay chỉ tạo thêm lớp kỹ thuật. Trước khi viết SQL, đội dự án phải chốt câu hỏi cần trả lời, mức chi tiết, owner và điều kiện nghiệm thu.

Ví dụ thực tế: Một stream phục vụ raw archive, warehouse sink và cảnh báo vận hành. Ví dụ phải được đối soát bằng dữ liệu thật và một báo cáo đang được nghiệp vụ sử dụng; nếu chỉ kiểm tra vài dòng mẫu, sai lệch tổng hợp có thể không xuất hiện.

Rủi ro cần tránh: Retention không đủ hoặc không giám sát lag làm mất cửa sổ replay. Cách kiểm soát là ghi quyết định vào tài liệu mô hình, tạo test tự động và chỉ phát hành khi owner nghiệp vụ xác nhận kết quả.

6. Raw event store

Giữ event gốc theo retention giúp replay và điều tra. Trong dự án thực tế, bước này cần được xử lý đồng thời ở ba lớp: định nghĩa nghiệp vụ, thiết kế dữ liệu và cơ chế vận hành. Thiếu một lớp, giải pháp có thể đúng hôm nay nhưng sai khi nguồn hoặc quy trình thay đổi.

Sự kiện được partition theo source và ingestion date cùng checksum. Nhóm dữ liệu nên lưu truy vấn đối soát, dữ liệu đầu vào và kết quả mong đợi để biến ví dụ thành regression test. Khi logic được sửa, test cho biết thay đổi nào là chủ ý và thay đổi nào là lỗi.

Lưu vô hạn mọi payload làm tăng chi phí và rủi ro PII. Vì vậy, không nên đánh giá riêng bằng tốc độ truy vấn. Khả năng giải thích, truy vết, phân quyền và chạy lại cũng phải nằm trong tiêu chí nghiệm thu.

PHẦN IV — DATA WAREHOUSE VÀ VẬN HÀNH

1. MERGE vào Data Warehouse

Bảng đích cần logic xác định insert, update và delete. Đây là điểm thường quyết định CDC vào Data Warehouse có tạo được một mô hình dễ dùng hay chỉ tạo thêm lớp kỹ thuật. Trước khi viết SQL, đội dự án phải chốt câu hỏi cần trả lời, mức chi tiết, owner và điều kiện nghiệm thu.

Ví dụ thực tế: BigQuery MERGE chỉ quét partition liên quan và so sequence. Ví dụ phải được đối soát bằng dữ liệu thật và một báo cáo đang được nghiệp vụ sử dụng; nếu chỉ kiểm tra vài dòng mẫu, sai lệch tổng hợp có thể không xuất hiện.

Rủi ro cần tránh: MERGE toàn bảng mỗi phút phá lợi ích CDC. Cách kiểm soát là ghi quyết định vào tài liệu mô hình, tạo test tự động và chỉ phát hành khi owner nghiệp vụ xác nhận kết quả.

2. Micro-batch và streaming

Micro-batch thường cân bằng độ trễ, chi phí và khả năng vận hành. Trong dự án thực tế, bước này cần được xử lý đồng thời ở ba lớp: định nghĩa nghiệp vụ, thiết kế dữ liệu và cơ chế vận hành. Thiếu một lớp, giải pháp có thể đúng hôm nay nhưng sai khi nguồn hoặc quy trình thay đổi.

Gom event 1-5 phút trước khi MERGE vào warehouse. Nhóm dữ liệu nên lưu truy vấn đối soát, dữ liệu đầu vào và kết quả mong đợi để biến ví dụ thành regression test. Khi logic được sửa, test cho biết thay đổi nào là chủ ý và thay đổi nào là lỗi.

Yêu cầu sub-second không có use case làm kiến trúc phức tạp. Vì vậy, không nên đánh giá riêng bằng tốc độ truy vấn. Khả năng giải thích, truy vết, phân quyền và chạy lại cũng phải nằm trong tiêu chí nghiệm thu.

3. Reconciliation với nguồn

Một cách tiếp cận an toàn với reconciliation với nguồn là bắt đầu từ tình huống cụ thể. CDC vẫn cần batch đối soát định kỳ. Sau đó mới chọn cấu trúc bảng, chiến lược xử lý và công nghệ phù hợp.

Tình huống: So count, sum và checksum theo ngày để phát hiện sự kiện mất. Từ tình huống này, đội dự án xác định dữ liệu nào là nguồn chuẩn, dữ liệu nào chỉ bổ sung ngữ cảnh và thời điểm nào được xem là hoàn tất.

Điểm kiểm soát: Tin tuyệt đối vào offset mà không kiểm chứng dữ liệu nghiệp vụ. Mỗi lần chạy cần ghi phiên bản mã, khoảng dữ liệu, kết quả test và tài sản phía sau bị ảnh hưởng. Đây là cơ sở để xử lý sự cố mà không phải dò tìm thủ công.

4. Giám sát latency và lag

Theo dõi source-to-broker, broker-to-raw và raw-to-serving. Câu hỏi quan trọng không phải “công cụ có hỗ trợ hay không”, mà là doanh nghiệp muốn bảo toàn ý nghĩa nào của dữ liệu khi thời gian, khối lượng và số lượng người dùng tăng lên.

Alert chỉ rõ connector, partition và dashboard ảnh hưởng. Khi đưa vào production, nhóm nên đo cả độ đúng, độ tươi, chi phí và thời gian phục hồi. Một thiết kế tốt phải giữ kết quả ổn định khi chạy lại cùng dữ liệu và phải nêu rõ hành vi với dữ liệu đến muộn.

Chỉ đo job success che việc backlog tăng. Nếu chưa thể loại bỏ rủi ro, hệ thống cần ít nhất phát hiện, cách ly và cảnh báo có owner. Không nên âm thầm thay giá trị lỗi bằng 0 hoặc bỏ bản ghi vì dashboard vẫn có thể hiển thị “đẹp” nhưng dẫn tới quyết định sai.

5. Recovery và replay

Runbook phải nói rõ khôi phục từ checkpoint hay snapshot mới. Đây là điểm thường quyết định CDC vào Data Warehouse có tạo được một mô hình dễ dùng hay chỉ tạo thêm lớp kỹ thuật. Trước khi viết SQL, đội dự án phải chốt câu hỏi cần trả lời, mức chi tiết, owner và điều kiện nghiệm thu.

Ví dụ thực tế: Consumer mới replay raw event theo khoảng khóa và thời gian. Ví dụ phải được đối soát bằng dữ liệu thật và một báo cáo đang được nghiệp vụ sử dụng; nếu chỉ kiểm tra vài dòng mẫu, sai lệch tổng hợp có thể không xuất hiện.

Rủi ro cần tránh: Replay không idempotent tạo số liệu gấp đôi. Cách kiểm soát là ghi quyết định vào tài liệu mô hình, tạo test tự động và chỉ phát hành khi owner nghiệp vụ xác nhận kết quả.

6. Bảo mật CDC

Transaction log có thể chứa toàn bộ cột nhạy cảm. Trong dự án thực tế, bước này cần được xử lý đồng thời ở ba lớp: định nghĩa nghiệp vụ, thiết kế dữ liệu và cơ chế vận hành. Thiếu một lớp, giải pháp có thể đúng hôm nay nhưng sai khi nguồn hoặc quy trình thay đổi.

Connector dùng TLS, secret manager và allowlist bảng. Nhóm dữ liệu nên lưu truy vấn đối soát, dữ liệu đầu vào và kết quả mong đợi để biến ví dụ thành regression test. Khi logic được sửa, test cho biết thay đổi nào là chủ ý và thay đổi nào là lỗi.

Service account có quyền toàn database. Vì vậy, không nên đánh giá riêng bằng tốc độ truy vấn. Khả năng giải thích, truy vết, phân quyền và chạy lại cũng phải nằm trong tiêu chí nghiệm thu.

Case triển khai CDC gần thời gian thực cho doanh nghiệp bán lẻ

PHẦN V — CASE, KPI VÀ LỘ TRÌNH

1. Case tồn kho đa kênh

CDC giúp hợp nhất POS, website và ERP để cảnh báo thiếu hàng. Đây là điểm thường quyết định kiến trúc CDC có tạo được một mô hình dễ dùng hay chỉ tạo thêm lớp kỹ thuật. Trước khi viết SQL, đội dự án phải chốt câu hỏi cần trả lời, mức chi tiết, owner và điều kiện nghiệm thu.

Ví dụ thực tế: Event bán, trả và chuyển kho cập nhật fact_inventory_movement; snapshot được tái tính. Ví dụ phải được đối soát bằng dữ liệu thật và một báo cáo đang được nghiệp vụ sử dụng; nếu chỉ kiểm tra vài dòng mẫu, sai lệch tổng hợp có thể không xuất hiện.

Rủi ro cần tránh: Hiển thị 0 khi cửa hàng mất dữ liệu bị hiểu thành hết hàng. Cách kiểm soát là ghi quyết định vào tài liệu mô hình, tạo test tự động và chỉ phát hành khi owner nghiệp vụ xác nhận kết quả.

2. KPI và SLO

SLO cần độ trễ, completeness, duplicate, recovery time và cost. Trong dự án thực tế, bước này cần được xử lý đồng thời ở ba lớp: định nghĩa nghiệp vụ, thiết kế dữ liệu và cơ chế vận hành. Thiếu một lớp, giải pháp có thể đúng hôm nay nhưng sai khi nguồn hoặc quy trình thay đổi.

95% event vào gold dưới 5 phút, đối soát tiền đạt 99,99%. Nhóm dữ liệu nên lưu truy vấn đối soát, dữ liệu đầu vào và kết quả mong đợi để biến ví dụ thành regression test. Khi logic được sửa, test cho biết thay đổi nào là chủ ý và thay đổi nào là lỗi.

Cam kết real-time không định lượng. Vì vậy, không nên đánh giá riêng bằng tốc độ truy vấn. Khả năng giải thích, truy vết, phân quyền và chạy lại cũng phải nằm trong tiêu chí nghiệm thu.

3. Lộ trình pilot đến production

Một cách tiếp cận an toàn với lộ trình pilot đến production là bắt đầu từ tình huống cụ thể. Bắt đầu một bảng có giá trị, chạy song song batch và CDC rồi mở rộng. Sau đó mới chọn cấu trúc bảng, chiến lược xử lý và công nghệ phù hợp.

Tình huống: Pilot order_status, mô phỏng disconnect, schema change và replay. Từ tình huống này, đội dự án xác định dữ liệu nào là nguồn chuẩn, dữ liệu nào chỉ bổ sung ngữ cảnh và thời điểm nào được xem là hoàn tất.

Điểm kiểm soát: Cut-over toàn hệ thống ngay lần đầu. Mỗi lần chạy cần ghi phiên bản mã, khoảng dữ liệu, kết quả test và tài sản phía sau bị ảnh hưởng. Đây là cơ sở để xử lý sự cố mà không phải dò tìm thủ công.

Kết luận

CDC không chỉ là connector đọc log. Một hệ thống production phải giải quyết snapshot ban đầu, thứ tự, duplicate, delete, replay, schema và đối soát. Độ trễ thấp chỉ có giá trị khi con số vẫn đúng, có thể giải thích và phục hồi sau sự cố.

Câu hỏi thường gặp

CDC có phải real-time tuyệt đối không?

Không. CDC giảm độ trễ; tổng độ trễ còn phụ thuộc connector, broker, consumer, MERGE và lớp serving.

Trong thực tế, câu trả lời còn phụ thuộc vào quy mô dữ liệu, SLA, yêu cầu lịch sử, quyền truy cập và năng lực vận hành. Với CDC, nên kiểm chứng bằng dữ liệu thật, truy vấn thật và tiêu chí nghiệm thu đã thống nhất; không nên quyết định chỉ từ một sơ đồ hoặc benchmark của nhà cung cấp.

CDC có thay batch hoàn toàn không?

Không. Batch vẫn hữu ích cho snapshot, backfill và reconciliation định kỳ.

Trong thực tế, câu trả lời còn phụ thuộc vào quy mô dữ liệu, SLA, yêu cầu lịch sử, quyền truy cập và năng lực vận hành. Với CDC, nên kiểm chứng bằng dữ liệu thật, truy vấn thật và tiêu chí nghiệm thu đã thống nhất; không nên quyết định chỉ từ một sơ đồ hoặc benchmark của nhà cung cấp.

CDC có làm chậm database nguồn không?

Log-based thường nhẹ hơn query lặp nhưng vẫn cần đo tải, quyền và retention log.

Trong thực tế, câu trả lời còn phụ thuộc vào quy mô dữ liệu, SLA, yêu cầu lịch sử, quyền truy cập và năng lực vận hành. Với CDC, nên kiểm chứng bằng dữ liệu thật, truy vấn thật và tiêu chí nghiệm thu đã thống nhất; không nên quyết định chỉ từ một sơ đồ hoặc benchmark của nhà cung cấp.

Làm sao xử lý delete?

Phát tombstone hoặc before image rồi áp hard delete, soft delete hay lưu lịch sử theo chính sách.

Trong thực tế, câu trả lời còn phụ thuộc vào quy mô dữ liệu, SLA, yêu cầu lịch sử, quyền truy cập và năng lực vận hành. Với CDC, nên kiểm chứng bằng dữ liệu thật, truy vấn thật và tiêu chí nghiệm thu đã thống nhất; không nên quyết định chỉ từ một sơ đồ hoặc benchmark của nhà cung cấp.

Có cần Kafka không?

Không phải luôn luôn. Dịch vụ CDC được quản lý có thể nạp trực tiếp; Kafka hữu ích khi nhiều consumer và cần replay.

Trong thực tế, câu trả lời còn phụ thuộc vào quy mô dữ liệu, SLA, yêu cầu lịch sử, quyền truy cập và năng lực vận hành. Với CDC, nên kiểm chứng bằng dữ liệu thật, truy vấn thật và tiêu chí nghiệm thu đã thống nhất; không nên quyết định chỉ từ một sơ đồ hoặc benchmark của nhà cung cấp.

Exactly-once có loại mọi duplicate không?

Không nên dựa riêng vào cam kết hạ tầng. Sink và transformation vẫn cần idempotent.

Trong thực tế, câu trả lời còn phụ thuộc vào quy mô dữ liệu, SLA, yêu cầu lịch sử, quyền truy cập và năng lực vận hành. Với CDC, nên kiểm chứng bằng dữ liệu thật, truy vấn thật và tiêu chí nghiệm thu đã thống nhất; không nên quyết định chỉ từ một sơ đồ hoặc benchmark của nhà cung cấp.

CDC cho BigQuery nên MERGE bao lâu một lần?

Tùy SLA và chi phí; micro-batch vài phút thường hợp lý hơn MERGE từng event.

Trong thực tế, câu trả lời còn phụ thuộc vào quy mô dữ liệu, SLA, yêu cầu lịch sử, quyền truy cập và năng lực vận hành. Với CDC, nên kiểm chứng bằng dữ liệu thật, truy vấn thật và tiêu chí nghiệm thu đã thống nhất; không nên quyết định chỉ từ một sơ đồ hoặc benchmark của nhà cung cấp.

Mất checkpoint thì làm gì?

Khôi phục từ log position còn hợp lệ hoặc tạo snapshot mới theo runbook đã thử nghiệm.

Trong thực tế, câu trả lời còn phụ thuộc vào quy mô dữ liệu, SLA, yêu cầu lịch sử, quyền truy cập và năng lực vận hành. Với CDC, nên kiểm chứng bằng dữ liệu thật, truy vấn thật và tiêu chí nghiệm thu đã thống nhất; không nên quyết định chỉ từ một sơ đồ hoặc benchmark của nhà cung cấp.

Schema đổi có làm CDC dừng không?

Có thể. Thay đổi phá vỡ contract cần chặn, cảnh báo và nâng cấp consumer.

Trong thực tế, câu trả lời còn phụ thuộc vào quy mô dữ liệu, SLA, yêu cầu lịch sử, quyền truy cập và năng lực vận hành. Với CDC, nên kiểm chứng bằng dữ liệu thật, truy vấn thật và tiêu chí nghiệm thu đã thống nhất; không nên quyết định chỉ từ một sơ đồ hoặc benchmark của nhà cung cấp.

Use case đầu tiên nên là gì?

Chọn một bảng giao dịch có khóa rõ, giá trị độ trễ cao và kết quả dễ đối soát.

Trong thực tế, câu trả lời còn phụ thuộc vào quy mô dữ liệu, SLA, yêu cầu lịch sử, quyền truy cập và năng lực vận hành. Với CDC, nên kiểm chứng bằng dữ liệu thật, truy vấn thật và tiêu chí nghiệm thu đã thống nhất; không nên quyết định chỉ từ một sơ đồ hoặc benchmark của nhà cung cấp.

Nguồn tham khảo và cách áp dụng

Debezium mô tả log-based CDC là cách dùng khả năng của từng database để thu nhận thay đổi, khác với polling hoặc dual write. Connector SQL Server có thể ghi nhận INSERT, UPDATE và DELETE sau khi CDC được bật ở database và từng bảng. Với PostgreSQL, logical decoding cho phép trích xuất thay đổi đã commit từ transaction log. Các tài liệu này cho thấy CDC production không chỉ là “đọc dữ liệu mới”; nó phụ thuộc vào log, snapshot, checkpoint, schema và chiến lược phục hồi.

Tài liệu tham khảo

  1. Debezium, “Features”. Đặc điểm log-based Change Data Capture.
  2. Debezium, “MySQL Connector”. Snapshot, binlog và transaction metadata.
  3. Debezium, “PostgreSQL Connector”. Logical decoding và thu nhận thay đổi đã commit.
  4. Debezium, “SQL Server Connector”. Điều kiện bật CDC và xử lý INSERT, UPDATE, DELETE.
  5. Google Cloud, “Introduction to partitioned tables”. Tổ chức bảng đích theo partition.

TechData.AI - Leading the Future.

Scroll to Top