Tính năng này cho phép người dùng thiết lập cơ chế đồng bộ dữ liệu từ nguồn (Postgres, Oracle, API...) vào hệ thống Mobio, đảm bảo dữ liệu luôn được cập nhật chính xác. Mobio hỗ trợ hai phương thức đồng bộ: Snapshot (định kỳ hoặc thủ công) và Streaming (liên tục theo thời gian thực).
Chọn cơ chế đồng bộ dữ liệu
Snapshot
Snapshot ful & snapshot incremental
Snapshot là cơ chế đồng bộ mà trong đó hệ thống sẽ tạo ra một “bản sao toàn diện”, giống như là một ảnh chụp nhanh của Database tại một thời điểm cụ thể.
Trên Mobio cho phép 2 hình thức snapshot:
- Snapshot full: đồng bộ toàn bộ dữ liệu trong bảng ở mỗi phiên đồng bộ, bất kể bảng dữ liệu có thay đổi hay không.
- Snapshot incremental: chỉ đồng bộ phần dữ liệu có thay đổi so với lần đồng bộ gần nhất. Tiến trình đồng bộ dữ liệu sẽ tiếp tục chạy từ thời điểm kết thúc gần nhất, thay vì phải chạy lại từ đầu.
- Trong lần đầu động bộ dữ liệu với chế độ Snapshot incremental, hệ thống sẽ đọc và đồng bộ toàn bộ dữ liệu trong bảng (tương ứng với 1 lần snapshot full.
- Sau khi chạy xong 1 phiên đồng bộ, hệ thống sẽ lưu lại giá trị lớn nhất trong trường thông tin được cấu hình làm checkpoint, để biết được điểm bắt đầu cho phiên đồng bộ sau.
- Ở các lần đồng bộ kế tiếp, hệ thống sẽ dựa vào giá trị checkpoint của lần đồng bộ gần nhất (hoặc giá trị checkpoint được người dùng cấu hình) để làm mốc tiếp tục đồng bộ dữ liệu.
Lưu ý:
Nếu thông tin checkpoint bị xoá khỏi bảng dữ liệu, phiên đồng bộ sẽ bị lỗi và hệ thống sẽ không ghi nhận các bản tin sau thời điểm lỗi.


Cấu hình checkpoint
Khi đã chọn cơ chế snapshot, dù là snapshot full hay snapshot incremental, người dùng vẫn cần cấu hình 2 phần: checkpoint và partitioning.
Checkpoint là gì?
Checkpoint là cột mốc đánh dấu trạng thái đồng bộ dữ liệu tại thời điểm kết thúc 1 phiên đồng bộ, là cơ sở để hệ thống xác định sẽ tiếp tục đồng bộ từ đâu và phạm vi như thế nào trong phiên kế tiếp.
Cấu hình giá trị tuỳ chọn của checkpoint là bắt buộc với cơ chế incremental snapshot.
Có sự khác biệt nhất định về checkpoint của 2 cơ chế snapshot:
Snapshot Incremental | Snapshot Full | |
Checkpoint được dùng như thế nào? | Checkpoint ghi nhận phạm vi dữ liệu đã đồng bộ ở lần trước. Trong lần đồng bộ kế tiếp, hệ thống chỉ truy vấn các bản tin phát sinh kể từ sau checkpoint đó. | Checkpoint được dùng để xác định ranh giới đồng bộ. Dữ liệu sẽ được chia thành các phân đoạn, mỗi phiên sẽ đồng bộ 1 phân đoạn. |
Ví dụ | Sử dụng ID khách hàng làm checkpoint – Lần đồng bộ 1: hệ thống đồng bộ dữ liệu khách hàng từ ID = 1 đến ID = 1000. Checkpoint được ghi nhận là 1000. – Lần đồng bộ 2: hệ thống đồng bộ dữ liệu khách hàng từ ID = 1001 đến ID = 1500. Checkpoint được ghi nhận là 1500. – Lần đồng bộ 3: hệ thống đồng bộ dữ liệu khách hàng từ ID = 1501… | Bảng dữ liệu khách hàng có 1 triệu bản ghi. – Hệ thống lấy ranh giới là toàn bộ bảng khách hàng. – Chia dữ liệu thành các phân đoạn: phân đoạn 1 (ID = 1 đến ID = 100.000); phân đoạn 2 (ID = 100.001 đến ID = 200.000);…; phân đoạn 10 ID = 900.001 đến ID = 1.000.000) – Hệ thống đồng bộ lần lượt từng phân đoạn 1, 2…cho đến hết. Các phân đoạn xử lý xong sẽ được cập nhật ngay trên hệ thống. – Sau khi đồng bộ hết các phân đoạn của bảng, ở các phiên đồng bộ kế tiếp, hệ thống lại tiếp tục đồng bộ dữ liệu theo các phân đoạn. |
Lưu ý: Các quy tắc chọn cột thông tin để làm checkpoint
- Trường thông tin được chọn là một trong các cột dữ liệu ở bảng gốc. Có thể chọn trường thông tin khác với các trường được mapping. Ví dụ:
- Bảng gốc gồm 4 trường: ID, name, phone, email.
- Các trường name, phone, email được chọn để mapping, trường ID có thể làm checkpoint.
- Data type cho phép: int, bigInt, decimal, date, datetime.
- Nên sử dụng trường khoá chính (primary key) làm checkpoint (nếu có).
- Nên sử dụng trường có giá trị tăng dần theo thời gian (ví dụ updated time, ID…) hoặc xác định rõ thứ tự để không bị sót dữ liệu.
- Trường thông tin được chọn làm khoá chính nên được đánh index để tăng hiệu quả truy vấn.
Giá trị mặc định của checkpoint
Khi cấu hình checkpoint, người dùng cần chọn giá trị bắt đầu của checkpoint. Đây là giá trị ban đầu được Mobio sử dụng làm mốc bắt đầu để truy vấn dữ liệu trong lần đồng bộ đầu tiên, hoặc sau khi checkpoint được reset. Tất cả bản ghi có giá trị lớn hơn hoặc bằng giá trị bắt đầu sẽ được hệ thống xử lý trong phiên đồng bộ.
Có thể cấu hình 1 trong 2 tuỳ chọn sau:
- Giá trị mặc định: Là giá trị hệ thống đã ghi nhận ở lần đồng bộ gần nhất. Ví dụ: trong gần đồng bộ gần nhất, hệ thống đã chạy đến bản tin thứ 1200 trong bảng dữ liệu, vậy giá trị mặc định ở phiên đồng bộ kế tiếp là 1200.
- Giá trị tuỳ chọn áp dụng một lần: chỉ áp dụng duy nhất cho phiên đồng bộ kế tiếp kể từ khi lưu cấu hình. Người dùng có thể chọn:
- Nhập giá trị tuỳ chọn theo kiểu dữ liệu của trường thông tin checkpoint. Ví dụ: trường ID có kiểu dữ liệu là int đang là checkpoint. Ở phiên đồng bộ gần nhất, hệ thống đã chạy đến bản tin thứ 1000. Tuy nhiên người dùng muốn chạy lại từ bản tin thứ 500 → cần nhập giá trị tuỳ chọn là 500.
- Đồng bộ từ bản tin đầu tiên.

Kiểu dữ liệu của checkpoint
Khi tích hợp với Connector Database, các kiểu dữ liệu của Database đó sẽ mapping với các kiểu dữ liệu tương ứng trên Mobio. Vì thế, giá trị checkpoint hiển thị trên Mobio có thể không giống hoàn toàn với dữ liệu gốc do đã được thay đổi (transform).
Ví dụ, ở Database, trường checkpoint có định dạng datetime/timestamp với 6 số milisecond:2025-08-05 11:11:11.123456. Tuy nhiên, Mobio chỉ ghi nhận & hiển thị 3 số milisecond: 2025-08-05 11:11:11.123.
Tuỳ thuộc vào từng loại Database mà kiểu dữ liệu transform khác nhau. Dưới đây là bảng đối chiếu định dạng kiểu dữ liệu của 1 số loại Database và kiểu dữ liệu Mobio ghi nhận tương ứng.
IBM DB2 | MySQL | Kiểu dữ liệu Mobio ghi nhận | Ví dụ: dữ liệu gốc từ Data base | Giá trị checkpoint Mobio ghi nhận |
---|---|---|---|---|
– | TINYINT(p) (p > 1) | TINYINT | 123 | "123" |
SMALLINT | TINYINT(p) UNSIGNED ; SMALLINT (p > 1) | SMALLINT | 123 | "123" |
INTEGER | INT ; MEDIUMINT ; MEDIUMINT UNSIGNED ; SMALLINT UNSIGNED | INT | 123 | "123" |
BIGINT | BIGINT ; INT UNSIGNED | BIGINT | 123 | "123" |
REAL | FLOAT ; FLOAT UNSIGNED | FLOAT | 123.456 | "123.456" |
DOUBLE | REAL ; REAL UNSIGNED ; DOUBLE ; DOUBLE UNSIGNED | DOUBLE | 123.456 | "123.456" |
DECIMAL | BIGINT UNSIGNED (tương ứng DECIMAL(20,0) ); NUMERIC(p,s) ; NUMERIC(p,s) UNSIGNED ; DECIMAL(p,s) ; DECIMAL(p,s) UNSIGNED | DECIMAL(p,s) | 123.456 | "123.456" |
TIMESTAMP | TIMESTAMP ; DATETIME | TIMESTAMP | 2025-08-05 11:11:11.123456 | "2025-08-05 11:11:11.123" |
Cấu hình Partitioning
Đối với cả 2 cơ chế snapshot, hệ thống chia dữ liệu đồng bộ thành nhiều phân đoạn (chunk) để tăng hiệu suất truy vấn và giảm tải hệ thống, tránh việc hệ thống phải xử lý quá nhiều dữ liệu trong 1 phiên đồng bộ.
Partition là cấu hình quy định kích thước của mỗi phân đoạn, với đơn vị là bản tin. Người dùng có thể cấu hình kích thước phân đoạn tuỳ thuộc vào quy mô dữ liệu trên Database. Giá trị mặc định của hệ thống là 10.000 bản ghi, thiểu là 1000 và tối đa là 20.000 bản ghi/ phân đoạn.

Chuyển đổi giữa 2 cơ chế snapshot
Trong quá trình đồng bộ, người dùng có thể phát sinh nhu cầu thay đổi cơ chế đồng bộ. Ví dụ, lúc đầu người dùng thiết lập đồng bộ snapshot full, nhưng do dữ liệu quá lớn, hoặc thời gian đồng bộ quá lâu nên cần chuyển sang snapshot incremental . Ngược lại, khi đang chạy snapshot incremental mà phát hiện checkpoint không hợp lệ hoặc dữ liệu không đồng nhất, người dùng cần chuyển sang snapshot full.
Mobio cho phép người dùng thay đổi cơ chế đồng bộ, tuy nhiên cần đảm bảo một số nguyên tắc.
Thay đổi từ snapshot full sang snapshot incremental
Bản snapshot incremental đầu tiên sau khi chuyển đổi sẽ dựa trên bản snapshot full cuối cùng. Hệ thống sẽ so sánh dữ liệu đồng bộ hiện tại với dữ liệu của lần snapshot full trước, và chỉ lưu trữ những thay đổi mới.
Khi chuyển cơ chế, người dùng cần chọn giá trị checkpoint:
- Cài đặt Giá trị bắt đầu = Giá trị mặc định: Hệ thống sẽ chạy lại từ bản tin đầu tiên của bảng, do chưa có giá trị checkpoint gần nhất.
- Cài đặt Giá trị bắt đầu = Giá trị tùy chọn: Hệ thống bắt đầu đồng bộ với bản tin tương ứng giá trị tùy chọn.
Lưu ý:
- Cần đảm bảo bản snapshot full ở lần đồng bộ gần nhất đã chạy xong. Việc hủy ngang hoặc dừng đột ngột quá trình đồng bộ có thể dẫn dến hỏng dữ liệu, hoặc đồng bộ không nhất quán.
- Ngắt kết nối connector trước khi thay đổi cấu hình.
- Không được ngắt kết nối khi connector ở trạng thái Đang đồng bộ.
- Xác định đúng checkpoint mới.
- Đảm bảo kiểu dữ liệu checkpoint truyền sang đúng quy tắc.
Thay đổi từ snapshot incremental sang snapshot full
Hệ thống sẽ bỏ qua các bản snapshot incremental đã tạo và đồng bộ lại toàn bộ dữ liệu của bảng từ bản ghi đầu tiên.
Lưu ý:
- Ngắt kết nối connector trước khi thay đổi cấu hình.
- Nếu lần snapshot incremental trước bị lỗi, hệ thống sẽ không retry ở bản tin bị lỗi, mà sẽ chạy lại bản tin bằng giá trị bắt đầu của lần đồng bộ trước.
- Ví dụ: Phiên snapshot incremental có checkpoint = 100; đồng bộ đến bản tin số 900 bị lỗi → hệ thống sẽ không tự động retry tại bản tin bị lỗi. Khi khởi động phiên tiếp theo (thủ công hoặc theo lịch), hệ thống sẽ chạy lại từ bản tin thứ 100.
Streaming
Streaming là cơ chế truyền tải dữ liệu liên tục và không ngừng nghỉ từ nguồn dữ liệu tới Mobio để đảm bảo hai hệ thống luôn đồng bộ về trạng thái mới nhất. Người dùng không cần cấu hình thêm lịch đồng bộ nếu chọn Streaming.

Việc lựa chọn phương pháp đồng bộ thường phụ thuộc vào yêu cầu cụ thể của hệ thống, bao gồm quy mô dữ liệu, tần suất cập nhật, và khả năng hỗ trợ kỹ thuật của hệ thống:
- Snapshot: Thường được sử dụng cho nguồn dữ liệu cần đồng bộ ít thường xuyên và có quy mô dữ liệu lớn.
- Streaming: Phù hợp cho nguồn dữ liệu cần cập nhật theo thời gian thực
Bước 2: Tùy chọn bật tắt Tự động đồng bộ lại nếu xảy ra lỗi
Bước 3: Ấn Lưu để hoàn tất quá trình cấu hình. Hệ thống sẽ hiển thị giao diện tổng hợp cấu hình nguồn dữ liệu.

Cơ chế streaming đối với Connector API
Cơ chế đồng bộ dữ liệu mặc định là Streaming. Snapshot không khả dụng với Connector dạng này.
Giới hạn đồng bộ mặc định của hệ thống là 200 bản tin/request với dung lượng tối đa 3MB/ request. Giới hạn này không thể thay đổi được.

Cấu hình lịch đồng bộ
- Thủ công: Hệ thống sẽ thực hiện đồng bộ ngay khi dữ liệu được đẩy từ nguồn dữ liệu vào hệ thống Mobio.
- Định kỳ: Người dùng có thể cấu hình thời gian đồng bộ (chọn giờ), tần suất đồng bộ (hàng ngày/ hàng tuần/ hàng tháng)

Người dùng có thể cấu hình email nhận thông báo kết quả đồng bộ theo 1 trong 2, hoặc cả 2 phương thức sau:
- Gửi kết quả đến email của user
- Gửi kết quả đến địa chỉ email cụ thể
Thông báo đồng bộ dữ liệu
Cơ chế thông báo đồng bộ dữ liệu giúp người dùng chủ động giám sát quá trình đồng bộ dữ liệu:
- Biết được thời điểm bắt đầu/ kết thúc của một phiên đồng bộ
- Nhận thông báo khi tiến trình gặp lỗi
- Phát hiện sự cố sớm khi phiên đồng bộ kéo dài bất thường
- Chủ động xử lý bước tiếp theo khi kết thúc một phiên đồng bộ

Thông báo khi connector thay đổi trạng thái kết nối
Với lựa chọn này, hệ thống sẽ cảnh báo người dùng khi phát hiện connector bật/ngắt kết nối, giúp người dùng chủ động phát hiện sự cố kết nối để kịp thời kiểm tra và khắc phục.
Thông báo khi connector có phiên đồng bộ thay đổi trạng thái
Khi một phiên đồng bộ của connector thay đổi trạng thái (bắt đầu, kết thúc hoặc lỗi), hệ thống sẽ thông báo cho người dùng theo thời gian thực để:
- Giúp người dùng giám sát tiến trình đồng bộ và phát hiện sự cố sớm (treo phiên, lỗi xử lý, tắc nghẽn…), để kịp thời kiểm tra và xử lý, tránh ảnh hưởng phiên xử lý dữ liệu tiếp theo.
- Biết chính xác thời điểm dữ liệu sẵn sàng để chuyển sang bước kế tiếp.
- Giảm phụ thuộc vào kiểm tra thủ công.
Thông báo khi phiên đồng bộ có bản tin xử lý thất bại
Lựa chọn này giúp người dùng kiểm soát chặt chẽ các lỗi phát sinh trong phiên đồng bộ. Có 2 lựa chọn:
- Trong phiên đồng bộ có bản tin thất bại: khi có bất kỳ bản tin nào thất bại, hệ thống sẽ gửi thông báo.
- % bản tin thất bại đạt ngưỡng: nếu số % bản tin gửi thất bại đạt ngưỡng cấu hình, hệ thống sẽ gửi thông báo.
Cấu hình đối tượng nhận thông báo
Hệ thống sẽ gửi thông báo đến user đã cấu hình thông qua địa chỉ email đăng ký với tài khoản của user, và thông báo quả chuông trên Mobio
Người dùng có thể tự bật/ tắt thông báo Data Flow qua email tại Cài đặt cá nhân
