home · mobile · calendar · colloquia · 1999-2000 · 

Colloquium - Hosking

PM3: An Orthogonally Persistent Systems Programming Language
Department of Computer Sciences, Purdue University

Persistent programming languages combine the features of database systems and programming languages to allow the seamless manipulation of both short- and long-term data, thus relieving programmers of the burden of distinguishing between data that is transient (temporarily allocated in main memory) or persistent (residing permanently on disk). Secondary storage concerns, including the representation and management of persistent data, are directly handled by the programming language implementation, rather than the programmer. Moreover, unlike traditional database systems, persistent programming languages extend to persistent data all the data structuring features supported by the language, not just those imposed by the underlying database system.

I will describe how reachability-based orthogonal persistence can be supported even in uncooperative implementations of languages such as C++ and Modula-3, and without modification to the compiler. Our scheme extends Bartlett's mostly-copying garbage collector to manage both transient objects and resident persistent objects, and to compute the reachability closure necessary for stabilization of the persistent heap. This has been implemented in PM3: our prototype of orthogonal persistence for Modula-3, supporting persistence by reachability from named persistent roots. PM3 has performance that is competitive with comparable, but non-orthogonal, persistent variants of C++. Experimental results, using the OO7 object database benchmarks, offer a direct comparison of performance between PM3 and the SHORE/C++ language binding to the SHORE object store. These reveal that the mostly-copying approach offers a straightforward path to efficient orthogonal persistence in uncooperative environments. Furthermore, they demonstrate that the overheads of orthogonal persistence are not inherently more expensive than for non-orthogonal persistence, and justify our claim that orthogonal persistence deserves a level of acceptance similar to that now emerging for automatic memory management (i.e., "garbage collection"), even in performance-conscious settings. The consequence will be safer and more flexible persistent systems that do not compromise performance.

Hosted by Amer Diwan.

Department of Computer Science
University of Colorado Boulder
Boulder, CO 80309-0430 USA
May 5, 2012 (14:13)