Đồng bộ và độ trễ

Bài này hữu ích khi cần quyết định dữ liệu phải mới tới mức nào: mỗi sáng, mỗi giờ hay gần như tức thời.

Đọc xong bạn hiểu gì

  • Tách cách lấy dữ liệu khỏi nhịp xử lý, và hiểu vì sao CDC vẫn có thể đi cùng xử lý theo batch (xử lý theo lô)
  • Đọc dòng thời gian để phân biệt nhận trễ, chờ xử lý và chờ báo cáo cập nhật
  • Chọn cách đồng bộ theo lúc cần ra quyết định, khả năng của nguồn và công vận hành

Khoảng 14 phút đọc.

Bối cảnh

Sao Mai là một chuỗi cửa hàng tạp hoá và đồ gia dụng. Chuỗi bắt đầu từ một cửa hàng và đang mở thêm cửa hàng mới. Mỗi cửa hàng bán hàng qua máy tính tiền; dữ liệu bán hàng được gửi về văn phòng để các phòng ban làm báo cáo. Tên chuỗi và mọi số liệu trong bài là giả lập.

Sao Mai cần báo cáo dữ liệu bán ngày 14/09/2026 vào 08:00 ngày 15/09/2026. Hạn nhận dữ liệu là 06:00, nhưng batch của CH03 tới văn phòng lúc 07:10. Đến giờ họp, người quản lý vẫn chưa mở được bản báo cáo mới.

Một đồng nghiệp đề nghị chuyển sang lấy dữ liệu thay đổi để báo cáo cập nhật ngay. Người khác cho rằng cứ chạy streaming (xử lý liên tục) là hết trễ. Hai đề nghị đang nói về những việc khác nhau: cách đưa dữ liệu từ cửa hàng về và nhịp tính kết quả sau khi nhận.

Bài này theo batch CH03 để tìm chỗ chậm, rồi xét cách lấy dữ liệu và nhịp xử lý cho báo cáo mỗi sáng, theo giờ và việc cần phản ứng ngay trong ca bán hàng.

Lấy dữ liệu bằng cách nào

Đồng bộ dữ liệu (data synchronization) là đưa dữ liệu từ nguồn sang nơi dùng tiếp và cập nhật khi nguồn thay đổi. Trong bài này, nơi dùng tiếp là nơi lập báo cáo. Đồng bộ không có nghĩa mọi nơi đều có dữ liệu giống nhau ngay lúc giao dịch xảy ra.

Cách lấy phụ thuộc vào phần dữ liệu báo cáo cần và khả năng của nguồn.

Tệp: nhận một phần dữ liệu đã xuất

Tệp chứa dữ liệu nguồn xuất ra để gửi, chẳng hạn các dòng hàng bán trong ngày. Tuỳ cách đã thống nhất, tệp có thể chứa cả ngày hoặc chỉ phần thay đổi.

Tệp hợp khi nguồn đã xuất được dữ liệu cần dùng và báo cáo có thể chờ lịch gửi. Nếu cần lấy thường xuyên mà việc xuất, gửi tệp tốn công hoặc hay nhầm, có thể xét cách lấy tự động qua giao diện nguồn cung cấp. Chưa cần thay cách gửi tệp nếu nó vẫn đủ dữ liệu, kịp giờ và nhóm kiểm lại được.

Giao diện lập trình: yêu cầu nguồn trả dữ liệu

Giao diện lập trình ứng dụng (Application Programming Interface, API) cho phép phần mềm yêu cầu phần mềm khác trả dữ liệu hoặc thực hiện việc theo quy định sẵn. Chẳng hạn, khâu lập báo cáo gửi yêu cầu và hệ thống bán hàng trả dữ liệu được phép lấy.

Với API, cần kiểm tra có lấy đủ kỳ dữ liệu cần dùng, nhận được phần thay đổi và nhận biết dữ liệu bị xoá hay không. Lấy qua API theo lịch có thể hợp khi nguồn đã hỗ trợ và báo cáo cần cập nhật đều đặn. Nếu tệp vẫn đáp ứng thì chưa cần xây API riêng.

Thu nhận thay đổi: theo phần nguồn đã đổi

Thu nhận thay đổi dữ liệu (Change Data Capture, CDC) là cách nhận biết và lấy những thay đổi ở nguồn, như thêm, sửa hoặc xoá bản ghi, để cập nhật nơi dùng tiếp. Ví dụ, nguồn sửa trạng thái một giao dịch thì bên nhận cần biết đó là sửa giao dịch đã có, không phải thêm một lần bán mới.

CDC có thể đáng xét khi dữ liệu đổi thường xuyên và việc lấy lại toàn bộ gây nhiều công hoặc không đáp ứng nhu cầu. Nhưng cần nguồn hỗ trợ và có người xử lý khi việc nhận bị gián đoạn. Nhóm cũng cần biết cách lấy phần dữ liệu ban đầu, nhận tiếp phần thay đổi và tránh bỏ sót hoặc cộng lặp khi nhận lại.

API trả đủ phần thay đổi hoặc tệp định kỳ vẫn đáp ứng là các phương án thay thế. Chưa cần CDC chỉ vì báo cáo có nhiều người xem. Các cách lấy cũng có thể kết hợp.

Xử lý theo nhịp nào

Sau khi lấy về, dữ liệu còn phải được kiểm, tính và đưa lên báo cáo. Đây là lựa chọn riêng với cách lấy dữ liệu.

Hai lựa chọn có thể ghép như sau:

Cách lấy Nhịp xử lý Ý nghĩa
Tệp dữ liệu ngày Theo batch mỗi sáng Nhận tệp rồi kiểm và lập báo cáo ngày
API theo lịch Theo batch mỗi giờ Lấy phần nguồn cho phép rồi xử lý lượt kế tiếp
CDC Theo batch mỗi giờ Nhận phần thay đổi, giữ lại rồi xử lý theo lịch
CDC Streaming Xử lý phần thay đổi tới dần, rồi cập nhật nơi dùng

CDC trả lời lấy phần thay đổi bằng cách nào; streaming trả lời xử lý theo nhịp nào. Một nhóm có thể nhận thay đổi qua CDC nhưng chỉ cộng lại tiền hàng theo giờ. Khi ấy, báo cáo vẫn cập nhật theo batch. Muốn xử lý streaming thì cần dữ liệu tới đủ nhanh; những cách lấy khác cũng có thể đưa dữ liệu tới dần.

Xử lý theo batch có thể đủ cho cuộc họp sáng. Xử lý streaming đáng xét khi chờ lượt kế tiếp làm lỡ quyết định trong ca. Trước khi tăng nhịp, cần xét cả nguồn, khâu kiểm và việc cập nhật báo cáo.

Độ trễ phải có mốc đầu và mốc cuối

Độ trễ (latency) là khoảng thời gian giữa hai mốc đang xét. Khi trao đổi, cần nói rõ đo từ đâu tới đâu: từ giao dịch ở nguồn tới báo cáo, từ nhận batch tới tính xong, hay báo cáo ra muộn so với giờ hẹn. Những khoảng này trả lời các câu hỏi khác nhau.

Giờ cập nhật báo cáo khác với dữ liệu đã đủ tới đâu. Dù đã có giao dịch mới nhất của một cửa hàng, báo cáo vẫn có thể thiếu dữ liệu của cửa hàng khác, chẳng hạn CH03.

Với báo cáo dùng thường xuyên, nên ghi kỳ dữ liệu, giờ cập nhật và phần còn thiếu để người xem biết giới hạn. Nếu chỉ gửi tệp cho nhóm nhỏ, lời nhắn kèm các thông tin ấy có thể đủ. Chưa cần màn hình theo dõi riêng khi nhóm vẫn kiểm được phạm vi và các mốc.

Ví dụ giải sẵn

Dòng thời gian của batch CH03 đến muộn

Batch CH03 đang được lấy bằng tệp và xử lý theo batch:

Phạm vi theo dõi của A6
BatchCách lấyNhịp xử lý
L-CH03-0914TệpTheo lô

Batch chứa dữ liệu bán ngày 14/09/2026. Các mốc dưới thuộc ngày 15/09/2026, theo giờ Việt Nam, cùng hành trình đã dùng ở bài “Hành trình của dữ liệu”.

Từ batch sẵn để gửi tới lúc mở được báo cáo mới
ChặngThực tế xong
Nguồn15/09/2026 05:40
Thu nạp15/09/2026 07:10
Lưu trữ15/09/2026 07:15
Xử lý15/09/2026 08:05
Phục vụ15/09/2026 08:15

Batch sẵn để gửi lúc 05:40 nhưng văn phòng nhận lúc 07:10, sau hạn 06:00. Trong phạm vi A6 có 1 batch tới trễ, chứa 2 dòng hàng. Người phụ trách chọn chờ CH03 và ghi chú lỗi chưa xác nhận. Tới giờ họp 08:00, khâu xử lý vẫn đang chạy; kết quả xong lúc 08:05, báo cáo mở được lúc 08:15. Tính xong không có nghĩa các lỗi chất lượng đã được sửa.

Muốn báo cáo kịp giờ, cần xét từng khoảng thay vì đổi công nghệ cho cả hành trình:

Khoảng đang xét Hướng cải thiện Điều cần xác minh
Sẵn để gửi 05:40 → nhận 07:10 Đổi cách lấy có thể giúp nhận sớm; tăng nhịp xử lý sau khi nhận không rút ngắn khoảng này Chậm ở xuất, gửi tệp hay khâu khác? Nguồn có hỗ trợ API hoặc CDC không?
Bản nhận đọc được 07:15 → bắt đầu xử lý 07:20 Nếu chờ lịch chạy, xử lý theo batch thường xuyên hơn hoặc streaming có thể giảm chờ Vì sao phải chờ? Khâu chuẩn bị bản nhận từ 07:10 tới 07:15 làm những việc gì?
Bắt đầu 07:20 → tính xong 08:05 Xử lý streaming có thể tính dần nếu dữ liệu tới dần và khâu tính hỗ trợ Tăng nhịp có giúp tính xong sớm hơn, hay khâu tính vẫn không theo kịp?
Tính xong 08:05 → mở báo cáo 08:15 Xét lịch cập nhật báo cáo; đổi cách lấy không trực tiếp giải quyết khoảng này Vì sao kết quả đã có mà người dùng còn phải chờ?

Bảng chưa có giờ gửi thực tế, lý do chờ hay kết quả thử API, CDC, nên cần xác minh và thử cả đường đi trước khi chọn phương án. Nó cũng không có giờ bán từng dòng để đo độ trễ từ từng giao dịch tới báo cáo.

Phiếu chọn cách đồng bộ đã điền

Phiếu dành cho báo cáo sáng của Sao Mai. Nó ghi nhu cầu trước, lựa chọn đang xét sau.

Mục Nội dung
Việc cần quyết định Xem kết quả bán ngày đã kết thúc trong cuộc họp sáng
Phạm vi dữ liệu Dữ liệu bán ngày 14/09/2026 của các cửa hàng; đang theo riêng batch CH03
Giờ cần dùng 08:00 ngày 15/09/2026
Hạn nhận đầu vào 06:00 ngày 15/09/2026 để dành thời gian cho các khâu sau
Cách lấy hiện tại Tệp cửa hàng gửi; cần rõ kỳ dữ liệu, mã batch và cách nhận lại
Nhịp xử lý hiện tại Theo batch cho báo cáo sáng
Bằng chứng về lần trễ CH03 nhận lúc 07:10; tính xong 08:05; mở được bản mới 08:15
Bước đang đề xuất Làm rõ giờ gửi và các khoảng chờ trước khi đổi cách lấy hoặc nhịp xử lý
Nếu còn thiếu khi tới giờ Người có quyền chọn chờ hoặc ra bản tạm ghi phần thiếu, tuỳ mục đích cuộc họp
Phương án thay thế Lấy qua API nếu nguồn hỗ trợ; xét CDC nếu cần theo thay đổi thường xuyên
Điều kiện giữ theo batch Dữ liệu của ngày đã kết thúc đáp ứng quyết định; lịch nhận và xử lý kịp giờ
Điều kiện xét streaming Có quyết định trong ca cần dữ liệu mới hơn lịch hiện tại; nguồn và đội ngũ đáp ứng
Người cần trao đổi Người dùng báo cáo chốt nhu cầu; cửa hàng và kỹ thuật xác nhận khả năng lấy, xử lý; người có quyền chốt cách dùng phần thiếu
Việc cần chứng minh Đủ phần dữ liệu cần dùng, không cộng lặp khi nhận lại, người xem mở được đúng bản đúng giờ

Cùng chuỗi cửa hàng, nhu cầu khác có thể chọn khác

Nhu cầu Cách lấy đang xét Nhịp xử lý đang xét
Báo cáo mỗi sáng về ngày đã kết thúc Tệp nguồn xuất được Theo batch mỗi sáng
Theo dõi bán hàng theo giờ API trả đủ dữ liệu hoặc CDC nếu nguồn hỗ trợ Theo batch mỗi giờ
Phản ứng với thay đổi bán hàng ngay trong ca CDC nếu nguồn hỗ trợ việc nhận thay đổi kịp nhu cầu Streaming

Theo dõi theo giờ có thể dùng API theo lịch hoặc nhận CDC rồi xử lý theo batch. Với việc cần phản ứng trong ca, API cũng đáng xét nếu cung cấp đủ dữ liệu nhanh tới mức cần dùng.

Với nhu cầu “gần như tức thời”, cần hỏi người dùng chờ tới khi nào thì lỡ quyết định. Đó là căn cứ chọn mức trễ cần đáp ứng; chưa cần đổi hệ thống chỉ để báo cáo trông mới hơn.

Khi nào nên làm, khi nào chưa cần

Nên làm: chốt riêng cách lấy và nhịp xử lý khi có nhiều nguồn, báo cáo thường trễ hoặc người dùng cần số liệu trong ca. Viết rõ quyết định nào cần dữ liệu mới, phạm vi nào phải đủ và giờ người dùng phải có kết quả. Nhóm kỹ thuật mới có căn cứ so các phương án.

Có cách khác: nếu người dùng chấp nhận, giữ báo cáo ngày và chỉ cập nhật thường xuyên phần phục vụ quyết định trong ca. Không nhất thiết mọi dữ liệu chạy cùng nhịp. Nếu nguyên nhân là lịch gửi hoặc bàn giao, sửa lịch và cách phối hợp có thể đủ, thay vì đổi cả cách lấy. Nếu bản tạm vẫn dùng được, ghi rõ phần thiếu và hẹn bản bổ sung; việc đó cần người có quyền quyết định báo cáo chấp thuận.

Chưa cần: xử lý streaming khi quyết định chỉ dùng dữ liệu của kỳ đã kết thúc, theo batch vẫn kịp giờ và nhóm kiểm được phần thiếu. CDC cũng chưa cần nếu tệp hoặc API đang đáp ứng mà lấy lại dữ liệu chưa gây trở ngại. Khi việc chậm chưa rõ nguyên nhân, tìm thêm mốc và lý do chờ trước; tăng nhịp không thay được việc hiểu chỗ đang chậm.

Tự làm

Sao Mai đã nhận phần thay đổi qua CDC, nhưng bảng tiền hàng chỉ tính lại mỗi giờ. Có thể gọi báo cáo này là xử lý streaming không?

Gợi ý
Phân biệt lúc nhận dữ liệu với lúc chạy phép tính và cập nhật báo cáo.
Xem đáp án

Không. Cách lấy là CDC, còn nhịp tính bảng tiền hàng là theo batch mỗi giờ.

Cách này hợp nếu người dùng chấp nhận chờ theo giờ. API theo lịch hoặc tệp cũng có thể đủ nếu cung cấp đúng phần cần dùng. Chỉ xét xử lý streaming khi chờ lượt kế tiếp làm lỡ quyết định và các khâu còn lại đáp ứng.

CH03 đã gửi dữ liệu về trước 08:00. Một đồng nghiệp muốn đổi sang API để chắc chắn báo cáo kịp giờ. Bảng thời gian cho phép kết luận thế chưa?

Gợi ý
Tới 08:00, khâu nào chưa xong? Bảng có chứng minh API sẽ đưa dữ liệu về sớm hơn không?
Xem đáp án

Chưa. Văn phòng nhận lúc 07:10, tính xong lúc 08:05 và mở được báo cáo lúc 08:15. API có thể giúp ở khoảng trước khi nhận nếu việc xuất, gửi tệp gây chậm và nguồn hỗ trợ. Các khoảng xử lý và cập nhật báo cáo vẫn cần xét riêng.

Nếu chậm do lịch xử lý hoặc chờ xác nhận, cần xử lý việc ấy; giữ tệp vẫn có thể hợp. Khi chưa rõ nguyên nhân, tìm thêm mốc và lý do chờ trước khi đổi. Nếu người dùng chấp nhận bản tạm, người có quyền có thể chọn ra bản ghi rõ phần thiếu thay vì chờ CH03 như trong ví dụ.

Nhóm cần vừa có báo cáo sáng, vừa theo dõi bán hàng theo giờ, vừa phản ứng trong ca. Có cần lấy mọi dữ liệu bằng CDC và xử lý streaming không?

Gợi ý
Xét riêng quyết định của từng nhóm và khả năng nguồn, rồi chọn cách lấy và nhịp xử lý cho mỗi nhu cầu.
Xem đáp án

Không nhất thiết. Báo cáo sáng có thể dùng tệp và xử lý theo batch. Theo dõi theo giờ có thể lấy API theo lịch, hoặc nhận CDC rồi xử lý theo batch. Phần cần phản ứng trong ca có thể xét CDC và xử lý streaming nếu nguồn hỗ trợ và đội ngũ vận hành được.

Cần làm rõ chờ tới khi nào thì lỡ quyết định, rồi thử cả đường đi tới người dùng. Nếu chỉ một phần cần cập nhật nhanh, có thể tăng nhịp cho phần ấy và giữ phần còn lại theo batch. Khi báo cáo theo giờ đã đáp ứng việc trong ca, chưa cần thêm xử lý streaming cho cùng mục đích.

Hiểu nhầm thường gặp

“Có CDC là có streaming.” CDC lấy thay đổi ở nguồn. Phần thay đổi đó vẫn có thể được giữ lại rồi xử lý theo batch.

“Chạy streaming thì dữ liệu không trễ.” Nguồn có thể chưa gửi, khâu xử lý có thể chưa theo kịp, và báo cáo còn phải cập nhật. Cần đo tới lúc người dùng có kết quả.

“Báo cáo vừa cập nhật là đã đủ dữ liệu mới.” Giờ cập nhật chỉ nói về bản báo cáo. Vẫn cần biết kỳ dữ liệu và phần còn thiếu; một cửa hàng tới sớm không bù cho cửa hàng chưa gửi.

“Dữ liệu càng mới thì quyết định càng tốt.” Mức mới cần thiết phụ thuộc quyết định. Báo cáo ngày đã kết thúc có thể đủ cho họp sáng; tăng nhịp còn làm tăng công vận hành mà không giải quyết lỗi dữ liệu hoặc cách tính.

Tóm tắt

Thuật ngữ trong bài

Tiếng Việt Tiếng Anh
Đồng bộ dữ liệu Data synchronization
Giao diện lập trình ứng dụng Application Programming Interface — API
Thu nhận thay đổi dữ liệu Change Data Capture — CDC
Lô dữ liệu batch
Xử lý theo lô batch processing
Xử lý liên tục streaming
Độ trễ Latency

Mẫu tải về: Phiếu chọn cách đồng bộ (Word). Nội dung giống bảng đã điền ở mục Ví dụ giải sẵn, để trống cho bạn điền.

Bài liên quan: “Hành trình của dữ liệu”, “OLTP và OLAP”, “Tổ chức lớp dữ liệu”, “Chất lượng dữ liệu”.