Each node in a network accessing a common database caches a copy of the database
tables it uses and updates those tables based on changes made by other nodes in
a coherent cache, i.e., those node that also have a copy of the tables in their
cache. When a new node joins the coherent cache, dynamic synchronization of the
table is performed by having one of the existing nodes act as a source to populate
the table(s) required on the new (destination) node from its own copy. The dynamic
synchronization controls the population operation and allows for the populating
of tables on the destination node from partially populated tables on the source
node. The dynamic synchronization of the tables permits database updates to continue
to be made to the tables by the existing nodes in the coherent cache and provides
a mechanism to propagate the committed updates to the tables on the destination
node. Once the tables on the destination node are fully populated, all pending
updates are suspended while a snapshot of the state of the table on the source
node is taken. Once the destination node has processed the snapshot, active transactions
on the source node are initiated on the destination node, and all transactions
are allowed to modify the table on the destination node.