Distributed transactions for reliable systems

Facilities that support distributed transactions on user-defined types can be implemented efficiently and can simplify the construction of reliable distributed programs. To demonstrate these points, this paper describes a prototype transaction facility, called TABS, that supports objects, transparent communication, synchronization, recovery, and transaction management. Various objects that use the facilities of TABS are exemplified and the performance of the system is discussed in detail. The paper concludes that the prototype provides useful facilities, and that it would be feasible to build a high performance implementation based on its ideas. This work was supported by IBM and the Defense Advanced Research Projects Agency, ARPA Order No. 3597, monitored by the Air Force Avionics Laboratory under Contract F33615-81-K-1539, and by graduate fellowships from the National Science Foundation and the Office of Naval Research. The views and conclusions contained in this document are those of the authors and should not be interpreted as representing the official policies, either expressed or implied, of any of the sponsoring agencies or the US government. Accent is a trademark of Carnegie.Mellon University. Perq is a trademark of Perq Systems Corporation. TAB is a trademark of the Coca-Cola Company. Permission to copy without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial advantage, the ACM copyright notice and the title of the publication and its date appear, and notice is given that copying is by permission of the Association for Computing Machinery. To copy otherwise, or to republish, requires a fee and/or specific permission. © 1985 A C M 0 8 9 7 9 l1 7 4 1 1 2 / 8 5 0 1 2 7 $ 0 0 . 7 5 1. In t roduct ion General purpose facilities that support distributed transactions are feasible to implement and useful in simplifying the construction of reliable distributed applications. To justify this assertion, this paper describes the design, implementation, use, and performance of TABS [Spector et al. 85], a prototype facility that supports transactions on user-defined abstract objects. We attempt to generalize from our experi6nces with the prototype, particularly in the sections on the usage and performance of TABS. We define a distributed transaction facility as a distributed collection of components that supports not only such standard abstractions as processes and inter-process communication, but also the execution of transactions and the implementation of objects on which operations can be performed. Although there is room for diversity in its exact functions, a distributed transaction facility must make it easy to initiate and commit transactions, to call operations on .objects from within transactions, and to implement abstract types that have correct synchronization and recovery properties. Transactions provide three properties that should make them useful in a variety of distributed applications [Lomet 77, Liskov 82, Spector and Schwarz 83]. Synchronization properties, such as serializability, guarantee that concurrent readers and writers of data do not interfere with each other. Failure atomicity simplifies the maintenance of invariants on data by ensuring that updates are not partially done. Permanence provides programmers the luxury of knowing that only catastrophic failures will corrupt or erase previously made updates. Certainly, these properties of transactions are useful in database applications [Gray 78, Date 83]. Database applications are typically characterized by the need for absolute data integrity, permanent updates, and careful synchronization between processes that access large quantities of shared data. When considering the application of transactions to other domains such as the construction of distributed operating systems and real time systems, there are questions pertaining to what transaction facilities should be provided, how they should

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

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

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

[4]  Alfred Z. Spector,et al.  Performing remote operations efficiently on a local computer network , 1981, SOSP.

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

[6]  James E. Allchin,et al.  Synchronization and recovery of actions , 1985, OPSR.

[7]  David B. Lomet,et al.  Process structuring, synchronization, and recovery using atomic actions , 1977, Language Design for Reliable Software.

[8]  William H. Paxton A client-based transaction system to maintain data integrity , 1979, SOSP '79.

[9]  Alfred Z. Spector,et al.  Weighted voting for directories : a comprehensive study , 1984 .

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

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

[12]  David R. Cheriton An experiment using registers for fast message-based interprocess communication , 1984, OPSR.

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

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

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

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

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

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

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

[20]  David K. Gifford,et al.  Weighted voting for replicated data , 1979, SOSP '79.

[21]  Andrew Birrell,et al.  Implementing remote procedure calls , 1984, TOCS.

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

[23]  Richard F. Rashid,et al.  The Integration of Virtual Memory Management and Interprocess Communication in Accent , 1986, ACM Trans. Comput. Syst..

[24]  Irving L. Traiger,et al.  The notions of consistency and predicate locks in a database system , 1976, CACM.

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

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

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

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

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

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

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

[32]  Alfred Z. Spector,et al.  An algorithm, for replicated directories , 1983, PODC '83.

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

[34]  William E. Weihl,et al.  Specification and implementation of resilient, atomic data types , 1983, ACM SIGPLAN Notices.

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

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

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