Designing synchronization in UltraLite

All data in the UltraLite database is synchronized by default. If you are new to deploying UltraLite as a MobiLink remote database, plan to synchronize the entire UltraLite remote initially.

Once you become comfortable with the process, you may decide to customize the behavior of the synchronization operation to capture more complex business logic. Designing custom synchronization behavior requires that you ask yourself the following questions. If your business requirements are simple, you may only need to use a single synchronization feature. However, in very complex deployments, you may need to use multiple synchronization features to configure the synchronization behavior you require.

Design question If you answer yes, use the following
Do you want to exclude tables from synchronization? The nosync table name suffix allows you to identify any tables that you do not want to synchronize. See Nosync tables in UltraLite.
Do you only want to synchronize entire tables even when data hasn't changed? The allsync table name suffix allows you to synchronize the entire table, even when no changes are detected. See Allsync tables in UltraLite.
Do you want to synchronize an entire table or just rows that meet specific conditions? Does some of the data require synchronization priority due to its importance or time-sensitivity?

A publication includes articles that list the tables that require synchronization. An article can include a WHERE clause that specifies the rows to upload based on whether or not the rows meet the defined criteria.

Multiple publications can address priority issues that require certain UltraLite data be uploaded before others. See Publications in UltraLite.

Do you require a table order for synchronization because you have cycles of foreign keys? The Table Order synchronization parameter allows you to determine the order of synchronization operations when you have foreign key cycles. However, foreign key cycles are generally not recommended for UltraLite. See Table order in UltraLite.
Do you want to control synchronization behavior? For example, do you need downloads to occur at the same time as uploads? Or do you want to change bi-directional synchronization to one-way only?

Use the appropriate synchronization parameter as part of:

  • Your application's synchronization structure (or the synchronization enumeration).
  • The ulsync utility's -e option.

See UltraLite synchronization parameters and network protocol options.

Do you want synchronization triggers to be time-based (scheduled), cradle-triggered, or user-initiated? Or do you require a combination of the above? Different behavior can be achieved programmatically via an appropriate interface. In some cases, HotSync or ActiveSync may manage the synchronization process. See Adding synchronization to your UltraLite application.
Do you want your UltraLite client to be TLS-enabled? What encryption algorithm you choose determines how your device must be set up according to the platform that runs on that device. See Developing and deploying UltraLite with TLS-enabled synchronization.
See also

Nosync tables in UltraLite
Allsync tables in UltraLite
Publications in UltraLite
Table order in UltraLite
Adding synchronization to your UltraLite application