IB LogManager IBO DML caching
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.
Scope of DML Caching
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.
Global DML Caching
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.
The reason for this "distinct user" requirement is that all instances of applications involved in global caching
post their DML events to the cache table. When seeking announcements to synchronize the local instance, the
local application must disregard any DML events posted from its own transactions.
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.
Read how IB LogManager can be used as "Integrator" for DML Caching in your IBO application.