MANAGEMENT OF OBJECT HISTORIES IN THE SWALLOW REPOSITORY

  • Authors:
  • L. Svobodova

  • Affiliations:
  • -

  • Venue:
  • MANAGEMENT OF OBJECT HISTORIES IN THE SWALLOW REPOSITORY
  • Year:
  • 1980

Quantified Score

Hi-index 0.00

Visualization

Abstract

SWALLOW is an experimental distributed data storage system that provides personal computers with a uniform interface to their local data and the data stored in shared remote servers called repositories. The SWALLOW repositories provide reliable, secure, and efficient long-term storage for both very small and very large objects and support updating of a group of objects at one or several repositories in a single atomic action. The repositories support, with some minor modifications, the object model developed by Reed [Reed 78]. The core of the repository is stable append-only storage called the Version Storage (VS). VS is the only stable storage in the repository. It contains the histories of all objects in the repository and all the information needed for crash recovery. It is assumed that VS will be implemented with write-once storage devices such as optical disks. The upper 2 words of VS are kept in the Online Version Storage (OVS). Techniques similar to real-time garbage collection are used to keep current versions of frequently used objects in OVS. Two different policies for retaining current versions of objects in OVS are investigated; the actual implementation further depends on the type of storage devices used for OVS. A critical concern addressed throughout the design of the repository is recovery from crashes and storage device failures. The crash recovery of the repositories is based entirely on the information contained in VS; VS is scanned sequentially, starting from its current end, until all objects histories have been reconstructed. The recovery can be distributed over time, such that the recovery process is invoked for one object at a time, as individual objects are accessed. The same mechanism is used to recover commit records, which are data structures that record the state of atomic actions and group together the objects to be updated in a single atomic action. The implementation of commit records in the repository guarantees that all updates made by a specific atomic action are either all completed or all undone, regardless of failures. Further, interrupted atomic actions can be continued from the point of interruption, without any additional (backward) recovery.