UltraLite contains MobiLink synchronization technology in the data management layer for UltraLite. Consequently, you do not need to increase the size of the UltraLite footprint to include synchronization functionality, as is the case with a SQL Anywhere remote.
Important synchronization features built into the UltraLite runtime include a row-state tracking mechanism and the progress counter.
Tracking the state of tables and rows is particularly important for data synchronization. Each row in an UltraLite database has a one-byte marker to keep track of the state of the row. In addition to synchronization, UltraLite also uses the row states to control transaction processing and data recovery. See UltraLite row states.
UltraLite uses a progress counter to ensure robust synchronization. Each upload is given a unique number to identify it. This allows UltraLite to determine whether or not an upload was successful, should a communications error occur.
When you first create a new database, UltraLite always sets the synchronization progress counter to zero. A progress counter value of zero identifies the database as a new UltraLite database, which tells the MobiLink server to reset its state information for this client.
Because UltraLite increments the progress counter each time a synchronization occurs, you cannot synchronize an UltraLite database to different consolidated databases. If the progress counter value is not zero and does not match that sequence number stored in the consolidated database, MobiLink synchronization reports an offset mismatch and synchronization fails.