Safe and efficient sharing of persistent objects in Thor

Thor is an object-oriented database system designed for use in a heterogeneous distributed environment. It provides highly-reliable and highly-available persistent storage for objects, and supports safe sharing of these objects by applications written in different programming languages.Safe heterogeneous sharing of long-lived objects requires encapsulation: the system must guarantee that applications interact with objects only by invoking methods. Although safety concerns are important, most object-oriented databases forgo safety to avoid paying the associated performance costs.This paper gives an overview of Thor's design and implementation. We focus on two areas that set Thor apart from other object-oriented databases. First, we discuss safe sharing and techniques for ensuring it; we also discuss ways of improving application performance without sacrificing safety. Second, we describe our approach to cache management at client machines, including a novel adaptive prefetching strategy.The paper presents performance results for Thor, on several OO7 benchmark traversals. The results show that adaptive prefetching is very effective, improving both the elapsed time of traversals and the amount of space used in the client cache. The results also show that the cost of safe sharing can be negligible; thus it is possible to have both safety and high performance.

[1]  Craig Schaffert,et al.  Abstraction mechanisms in CLU , 1977, Commun. ACM.

[2]  S. L. Graham,et al.  List Processing in Real Time on a Serial Computer , 1978 .

[3]  F. Alan Andersen,et al.  The American National Standards Institute , 1984, IEEE Engineering in Medicine and Biology Magazine.

[4]  David J. DeWitt,et al.  Storage management for objects in EXODUS , 1989 .

[5]  James Parker,et al.  on Knowledge and Data Engineering, , 1990 .

[6]  O. Deux,et al.  The Story of O2 , 1990, IEEE Trans. Knowl. Data Eng..

[7]  Michael Williams,et al.  Replication in the harp file system , 1991, SOSP '91.

[8]  Jacob Stein,et al.  The GemStone object database management system , 1991, CACM.

[9]  Jack A. Orenstein,et al.  The ObjectStore database system , 1991, CACM.

[10]  J. Eliot B. Moss,et al.  Working with Persistent Objects: To Swizzle or Not to Swizzle , 1992, IEEE Trans. Software Eng..

[11]  David J. DeWitt,et al.  A Performance Study of Alternative Object Faulting and Pointer Swizzling Strategies , 1992, VLDB.

[12]  Vivek Singhal,et al.  Texas: An Efficient, Portable Persistent Store , 1992, POS.

[13]  Jeffrey F. Naughton,et al.  On the performance of object clustering techniques , 1992, SIGMOD '92.

[14]  Antony L. Hosking,et al.  Protection traps and alternatives for memory management of an object-oriented language , 1994, SOSP '93.

[15]  Robert Wahbe,et al.  Efficient software-based fault isolation , 1994, SOSP '93.

[16]  Michael J. Carey,et al.  The design of the E programming language , 1993, TOPL.

[17]  David J. DeWitt,et al.  The 007 Benchmark , 1993, SIGMOD '93.

[18]  Andrew C. Myers,et al.  References to remote mobile objects in Thor , 1993, LOPL.

[19]  David J. DeWitt,et al.  The oo7 Benchmark , 1993, SIGMOD Conference.

[20]  R. G. G. Cattell,et al.  The Object Database Standard: ODMG-93 , 1993 .

[21]  Liuba Shrira,et al.  Opportunistic log: efficient installation reads in a reliable storage server , 1994, OSDI '94.

[22]  R. G. G. Cattell,et al.  The Object Database Standard: ODMG-93 (Release 1.1) , 1994 .

[23]  Barbara Liskov,et al.  Reducing cross domain call overhead using batched futures , 1994, OOPSLA 1994.

[24]  David J. DeWitt,et al.  QuickStore: A high performance mapped object store , 1994, SIGMOD '94.

[25]  Barbara Liskov,et al.  Fault-tolerant distributed garbage collection in a client-server object-oriented database , 1994, Proceedings of 3rd International Conference on Parallel and Distributed Information Systems.

[26]  Alfons Kemper,et al.  Dual-Buffering Strategies in Object Bases , 1994, VLDB.

[27]  R. G. G. Cattell,et al.  ODMG-93: a standard for object-oriented DBMSs , 1994, SIGMOD '94.

[28]  D. J. Hwang,et al.  Function-based indexing for object-oriented databases , 1994 .

[29]  Barbara Liskov,et al.  Reducing cross domain call overhead using batched futures , 1994, OOPSLA '94.

[30]  David J. DeWitt,et al.  Shoring up persistent applications , 1994, SIGMOD '94.

[31]  Andrew C. Myers,et al.  Subtypes vs. where clauses: constraining parametric polymorphism , 1995, OOPSLA.

[32]  Robert Gruber,et al.  Efficient optimistic concurrency control using loosely synchronized clocks , 1995, SIGMOD '95.

[33]  Q. Y. Zondervan,et al.  Increasing Cross-Domain Call Batching Using Promises and Batched Control Structures , 1995 .

[34]  Sanjay Ghemawat,et al.  The Modified Object Buffer: A Storage Management Technique for Object-Oriented Databases , 1995 .

[35]  Mark S. Day,et al.  Client cache management in a distributed object database , 1995 .

[36]  Miguel Castro,et al.  Type-Safe Heterogeneous Sharing can be Fast , 1996, POS.

[37]  Barbara Liskov,et al.  Collecting cyclic distributed garbage by controlled migration , 1997, PODC '95.

[38]  David Jordan,et al.  The Object Database Standard: ODMG 2.0 , 1997 .