System synchronization

The most complex synchronization and data integrity issues arise when several data structures must be kept mutually consistent while in active use by several applications.

This document cannot deal adequately with these issues, though the techniques mentioned above for less complex problems may be of some use. A few principles are noted here.

The distinction between actions on items (rows) and actions on sets of rows (on tables within tableBASE or datasets elsewhere) is critical. In general, you want to keep these levels quite distinct.

For example, an item-level exit program will often:

  • access a row from another table
  • create a row on an intermediate Data Table
  • create a row on a messages table, or
  • create a row in a journal

and might reasonably:

  • update rows in several tables (if related data were distributed so as to require that)

but would not normally:

  • cause any table-level action, or
  • take any other irrevocable action.

Irrevocable actions are better left until Table Store time.

In general, what will be needed is two systems of synchronization, one for item-level actions and another at the table level, with careful analysis of the relation between them and careful planning of what actions