Distributed Transaction Processing and The Camelot System

This paper describes distributed transaction processing, a technique used for simplifying the construction of reliable distributed systems. After introducing transaction processing, the paper presents models describing the structure of distributed systems, the transactional computations on them, and the layered software architecture that supports those computations. The software architecture model contains five layers, including an intermediate layer that provides a common set of useful functions for supporting the highly reliable operation of system services, such as data management, file management, and mail. The functions of this layer can be realized in what is termed a distributed transaction facility. The paper then describes one such facility — Camelot. Camelot provides flexible and high performance commit supervision, disk management, and recovery mechanisms that are useful for implementing a wide class of abstract data types, including large databases. It runs on the Unix-compatible Mach operating system and uses the standard Arpanet IP communication protocols. Presently, Camelot runs on RT PC’s and Vaxes, but it should also run on other computers including shared-memory multiprocessors.

[1]  Hubert Zimmermann,et al.  A Standard Layer Model , 1982 .

[2]  Gerald J. Popek,et al.  Transactions and synchronization in a distributed operating system , 1985, SOSP '85.

[3]  Tony Hoare,et al.  Hierarchical Program Structures , 1972 .

[4]  E. B. Moss,et al.  Nested Transactions: An Approach to Reliable Distributed Computing , 1985 .

[5]  Alfred Z. Spector,et al.  Distributed transactions for reliable systems , 1985, SOSP 1985.

[6]  Barbara Liskov,et al.  On Linguistic Support for Distributed Programs , 1982, IEEE Transactions on Software Engineering.

[7]  George G. Robertson,et al.  Accent: A communication oriented network operating system kernel , 1981, SOSP.

[8]  Michael Stonebraker,et al.  A Distributed Data Base Version of INGRES. , 1976 .

[9]  William E. Weihl,et al.  SPECIFICATION AND IMPLEMENTATION OF ATOMIC DATA TYPES , 1984 .

[10]  Alfred Z. Spector,et al.  Distributed logging for transaction processing , 1987, SIGMOD '87.

[11]  David P. Reed,et al.  Naming and synchronization in a decentralized computer system , 1978 .

[12]  J. Postel Internetwork Protocol Approaches , 1980 .

[13]  Maurice Herlihy Atomicity vs. availability : concurrency control for replicated data , 1985 .

[14]  William J. Bolosky,et al.  Mach: A New Kernel Foundation for UNIX Development , 1986, USENIX Summer.

[15]  Irving L. Traiger,et al.  System R: relational approach to database management , 1976, TODS.

[16]  Alfred Z. Spector Communication Support in Operating Systems for Distributed Transactions , 1986, Networking in Open Systems.

[17]  Irving L. Traiger Virtual memory management for database systems , 1982, OPSR.

[18]  Maurice Herlihy,et al.  Avalon : language support for reliable distributed systems , 1986 .

[19]  Alfred Z. Spector,et al.  Transactions: a construct for reliable distributed computing , 1983, OPSR.

[20]  Raymond A. Lorie,et al.  Physical integrity in a large segmented database , 1977, TODS.

[21]  Laura M. Haas,et al.  Computation and communication in R*: a distributed database manager , 1984, TOCS.

[22]  Cynthia Dwork,et al.  The inherent cost of nonblocking commitment , 1983, PODC '83.

[23]  Maurice Herlihy,et al.  Issues Process and Communication Structure for Distributed Programs , 1983, Symposium on Reliability in Distributed Software and Database Systems.

[24]  Alfred Z. Spector,et al.  Synchronizing shared abstract types , 1984, TOCS.

[25]  Robert S. Fabry,et al.  Capability-based addressing , 1974, CACM.

[26]  Jerome H. Saltzer,et al.  Protection and the control of information sharing in multics , 1974, CACM.

[27]  Butler W. Lampson,et al.  Atomic Transactions , 1980, Advanced Course: Distributed Systems.

[28]  Henry F. Korth,et al.  Locking Primitives in a Database System , 1983, JACM.

[29]  Peter Martin Schwarz Transactions on typed objects , 1984 .

[30]  D. B. Lomet Process structuring, synchronization, and recovery using atomic actions , 1977 .

[31]  Hans Diel,et al.  Data management facilities of an operating system kernel , 1984, SIGMOD '84.

[32]  Michel Banâtre,et al.  Construction of a Distributed System Supporting Atomic Transactions , 1983, Symposium on Reliability in Distributed Software and Database Systems.

[33]  Philip A. Bernstein,et al.  Concurrency Control in Distributed Database Systems , 1986, CSUR.

[34]  Andreas Reuter,et al.  Performance analysis of recovery techniques , 1984, TODS.

[35]  Bruce J. Walker,et al.  The LOCUS Distributed System Architecture , 1986 .

[36]  Henry Ledgard,et al.  Reference Manual for the ADA® Programming Language , 1983, Springer New York.

[37]  Richard W. Watson Distibuted System Architecture Model , 1980, Advanced Course: Distributed Systems.

[38]  Jim Gray,et al.  The Transaction Concept: Virtues and Limitations (Invited Paper) , 1981, VLDB.

[39]  Barbara Liskov,et al.  Guardians and Actions: Linguistic Support for Robust, Distributed Programs , 1983, TOPL.

[40]  Ron Obermarck,et al.  Distributed deadlock detection algorithm , 1982, TODS.

[41]  Leslie Lamport,et al.  Time, clocks, and the ordering of events in a distributed system , 1978, CACM.

[42]  Alfred Z. Spector,et al.  Support for Distributed Transactions in the TABS Prototype , 1985, IEEE Transactions on Software Engineering.

[43]  David R. Cheriton The V Kernel: A Software Base for Distributed Systems , 1984, IEEE Software.

[44]  Michael Stonebraker,et al.  Virtual memory transaction management , 1984, OPSR.

[45]  Irving L. Traiger,et al.  The Recovery Manager of the System R Database Manager , 1981, CSUR.

[46]  Andreas Reuter,et al.  Principles of transaction-oriented database recovery , 1983, CSUR.

[47]  Dean Daniels,et al.  R*: An Overview of the Architecture , 1986, JCDKB.

[48]  Eugene Wong,et al.  Introduction to a system for distributed databases (SDD-1) , 1980, TODS.

[49]  Michael B. Jones,et al.  Matchmaker: an interface specification language for distributed processing , 1985, POPL.