A simple and efficient implementation of a small database
- 1 November 1987
- journal article
- Published by Association for Computing Machinery (ACM) in ACM SIGOPS Operating Systems Review
- Vol. 21 (5) , 149-154
- https://doi.org/10.1145/37499.37517
Abstract
This paper describes a technique for implementing the sort of small databases that frequently occur in the design of operating systems and distributed systems. We take advantage of the existence of very large virtual memories, and quite large real memories, to make the technique feasible. We maintain the database as a strongly typed data structure in virtual memory, record updates incrementally on disk in a log and occasionally make a checkpoint of the entire database. We recover from crashes by restoring the database from an old checkpoint then replaying the log. We use existing packages to convert between strongly typed data objects and their disk representations, and to communicate strongly typed data across the network (using remote procedure calls). Our memory is managed entirely by a general purpose allocator and garbage collector. This scheme has been used to implement a name server for a distributed system. The resulting implementation has the desirable property of being simultaneously simple, efficient and reliable.Keywords
This publication has 5 references indexed in Scilit:
- A recovery algorithm for a high-performance memory-resident database systemPublished by Association for Computing Machinery (ACM) ,1987
- Query processing in main memory database management systemsPublished by Association for Computing Machinery (ACM) ,1986
- Designing a global name servicePublished by Association for Computing Machinery (ACM) ,1986
- Reliable object storage to support atomic actionsPublished by Association for Computing Machinery (ACM) ,1985
- Experience with Grapevine: the growth of a distributed systemACM Transactions on Computer Systems, 1984