µDatabase: A Toolkit for Constructing Memory Mapped Databases

The main objective of this work was an efficient methodology for constructing low-level database tools that are built around a single-level store implemented using memory mapping. The methodology allowed normal programming pointers to be stored directly onto secondary storage, and subsequently retrieved and manipulated by other programs without the need for relocation, pointer swizzling or reading all the data. File structures for a database, e.g. a B-Tree, built using this approach are significantly simpler to build, test, and maintain than traditional file structures. All access methods to the file structure are statically type-safe and file structure definitions can be generic in the type of the record and possibly key(s) stored in the file structure, which affords significant code reuse. An additional design requirement is that multiple file structures may be simultaneously accessible by an application. Concurrency at both the front end (multiple accessors) and the back end (file structure partitioned over multiple disks) are possible. Finally, experimental results between traditional and memory mapped files structures show that performance of a memory mapped file structure is as good or better than the traditional approach.

[1]  David Abramson,et al.  Addressing Mechanisms for Large Virtual Memories , 1992, Comput. J..

[2]  D. Morgan,et al.  The Multics System , 1973, IEEE Trans. Commun..

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

[4]  Ronald Morrison,et al.  Persistent object management system , 1984, Softw. Pract. Exp..

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

[6]  Alfred L. Brown,et al.  Persistent object stores , 1988 .

[7]  Antonin Guttman,et al.  R-trees: a dynamic index structure for spatial searching , 1984, SIGMOD '84.

[8]  Patrick Valduriez,et al.  Prototyping Bubba, A Highly Parallel Database System , 1990, IEEE Trans. Knowl. Data Eng..

[9]  Paul R. Wilson,et al.  Pointer swizzling at page fault time: efficiently supporting huge address spaces on standard hardware , 1991, CARN.

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

[11]  Rudolf Bayer,et al.  Prefix B-trees , 1977, TODS.

[12]  Hans-Peter Kriegel,et al.  The R*-tree: an efficient and robust access method for points and rectangles , 1990, SIGMOD '90.

[13]  Kun-Lung Wu,et al.  Recoverable Distributed Shared Virtual Memory , 1990, IEEE Trans. Computers.

[14]  Peter van Oosterom,et al.  Reactive Data Structures for Geographic Information Systems , 1993 .

[15]  William J. Bolosky,et al.  A UNIX Interface for Shared Memory and Memory Mapped Files Under Mach , 1987, USENIX Summer.

[16]  Peter A. Buhr,et al.  Addressing in a Persistent Environment , 1989, POS.

[17]  Robert C. Daley,et al.  The Multics virtual memory , 1972, Commun. ACM.

[18]  Richard C. H. Connor,et al.  The Napier Type System , 1989, POS.

[19]  Peter A. Buhr,et al.  μC++: Concurrency in the object‐oriented language C++ , 1992, Softw. Pract. Exp..

[20]  Alfred Z. Spector Camelot : a distributed transaction facility for mach and the internet - an interim report , 1987 .

[21]  Randy H. Katz,et al.  A case for redundant arrays of inexpensive disks (RAID) , 1988, SIGMOD '88.

[22]  Gerhard Weikum,et al.  Uniform Object Management , 1990, EDBT.

[23]  Eugene J. Shekita,et al.  Cricket: A Mapped, Persistent Object Store , 1990, POS.

[24]  Michael Stumm,et al.  Algorithms implementing distributed shared memory , 1990, Computer.

[25]  Bernhard Seeger,et al.  Multi-disk B-trees , 1991, SIGMOD '91.