IBObjects (a Delphi/C++Builder component set to access InterBase and Firebird) offers a superb mechanism called DML Caching to synchronize data changes immediately in your multi-user/client environment. Your application can be configured easily to reflects changes nearly in real-time committed by another.
The DML Caching mechanism is well-described in a help-file available in the Tech Info sheets section on Jason Wharton's web site. Most things are picked out of this Tech Info sheet.
DML Caching provides synchroniziation in three scopes:
- Within the scope of a specific transaction, affecting all datasets in its context
- Within the entire scope of one instance of one application which the current user is running
- Across the whole range of applications, application instances and users which are connected to a single database
IB LogManager can help you to manage (3) at database level. (3) is also called Global DML Caching and enables you to synchronize data changes within your multi-user environment in a very easy way.
To broadcast and receive across application boundaries, the work shifts to the database:
- A new table (operation log table in IB LogManager) is required for storing DML cache events
- A specialized cursor-type dataset object (class TIB_SyncCursor) is added to the client to watch the DML cache table for events by other users
- Your user management system must make provision for each user to be recognized distinctly.
In short, Global DML Caching is based on the assumption, that committed changes are logged in a table and each time a new log record is added, an event is fired from an after insert trigger on the operation log table. This event is catched within your client application from the TIB_SyncCursor component and datasets which are registered for DML Caching are synchronized nearly in real-time.
Click here to see how IB LogManager can be used as "Integrator" for DML Caching in your IBO application.

