Ý chính: Một luồng dữ liệu đáng tin phải giữ đúng ý nghĩa nghiệp vụ từ lúc thu thập tới khi xuất hiện trên báo cáo.
Thuật ngữ trong bài: CDC: ghi nhận thay đổi trực tiếp từ nhật ký cơ sở dữ liệu; streaming: xử lý dữ liệu liên tục; lineage: đường đi của dữ liệu từ nguồn đến báo cáo.
Bài toán thực tế
Trích xuất theo lô có thể bỏ lỡ trạng thái tồn tại ngắn. CDC có thể phát sinh bản ghi trùng hoặc gặp thay đổi cấu trúc. Nếu không có hợp đồng và kiểm tra chất lượng, báo cáo sẽ khác với dữ liệu đang vận hành.
CDC chuyển thay đổi nhanh hơn xử lý theo lô, nhưng không tự bảo đảm ý nghĩa nghiệp vụ. Luồng vẫn phải xử lý bản ghi trùng, thay đổi lược đồ, dữ liệu đến muộn và khả năng phát lại.
Báo cáo đáng tin cần hợp đồng dữ liệu, đường đi có thể truy vết và kiểm tra chất lượng ở từng lớp, không chỉ một pipeline chạy liên tục.
Thiết kế và triển khai
- Ghi lại vị trí nguồn ổn định và mốc phân cách giữa bản chụp ban đầu với luồng CDC.
- Lưu sự kiện thô không thể thay đổi trước khi áp dụng phép biến đổi có phiên bản.
- Kiểm tra độ mới, độ đầy đủ, tính duy nhất và các điều kiện nghiệp vụ ở mỗi mô hình dữ liệu công bố.
Mã minh họa: Hợp nhất an toàn theo vị trí nguồn
read changes after checkpoint.offset
deduplicate by sourcePartition + sourceOffset
transform using contractVersion
MERGE target ON businessKey
commit target and checkpoint atomically where possibleNếu dữ liệu đích và mốc xử lý không được commit cùng nhau, phép hợp nhất phải chịu được việc phát lại từ một offset cũ hơn.
Rủi ro cần tính trước
- Bản chụp ban đầu chồng lấn với CDC và tạo bản ghi trùng.
- Một cột ở nguồn thay đổi ý nghĩa nhưng vẫn giữ nguyên kiểu dữ liệu.
- Mất sự kiện xóa khiến dữ liệu cá nhân tiếp tục tồn tại ở hệ thống phía sau.
Nên theo dõi gì?
| Tín hiệu | Điều tín hiệu cho biết |
|---|---|
| Độ mới từ đầu đến cuối | Đo thời gian từ lúc dữ liệu được commit ở nguồn tới khi xuất hiện trong mô hình tin cậy. |
| Bản ghi bị từ chối và điều kiện nghiệp vụ bị vi phạm | Làm lỗi dữ liệu lộ ra trước khi tới consumer. |
| Tiến độ offset và khối lượng cần phát lại | Cho biết pipeline bị kẹt ở đâu và chi phí phục hồi dự kiến. |
Đưa vào production từng bước
Chọn một tập dữ liệu và cho luồng CDC chạy song song với quy trình theo lô hiện tại. So sánh mẫu bản ghi cùng tổng số nghiệp vụ, chuyển từng consumer và giữ sự kiện thô đủ lâu cho tới khi việc phát lại toàn bộ đã được kiểm thử.
Điều cần nhớ
Phân tích dữ liệu đáng tin dựa trên hợp đồng và đường đi có thể tái tạo, không chỉ trên tốc độ chuyển dữ liệu.
