In a multi-computer data sharing system including a shared, high-speed electronic store (SS), a low-speed direct access data storage facility (DAS), a plurality of computer-implemented database systems connected to the SS and to the DAS, and a database including data structures stored in the DAS, wherein each database system includes transaction-based means for:
- obtaining data structures from the DAS;
- locally storing data structures for immediate access;
- altering locally-stored data structures;
- and
- storing data structures in and from and moving data structures from the SS;
- a method for recovery of the database from failure of the SS, the method including the steps of:
- maintaining for each database system a transaction log including a sequence of log records, each log record including a unique sequence value denoting its place in the sequence;
- maintaining at each database system a system sequence value which is substantially equal to the sequence value of a log record of the earliest modification made by the database system to locally-stored data structures which is not included in any data structure stored in the SS;
- maintaining for each data structure modified and then stored in the SS a structure sequence value which corresponds to a log record of the earliest modification made to the data structure by a database system after the data structure was obtained from the DAS;
- periodically determining a recovery sequence value by taking from the system sequence values and the structure sequence values a sequence value which corresponds to a log record of the earliest modification made to any data structure which is locally stored at a database system or in the SS;
- and
- in the event of a failure of the SS:
- for the union of all the transaction logs, identifying data structures in the DAS for which corresponding log records exist with sequence values following the recovery sequence value;
- and
- applying to the identified data structures the modifications in the log records with sequence values following the recovery sequence value.