Experience with Grapevine: the growth of a distributed system
ACM Transactions on Computer Systems (TOCS)
Designing a global name service
PODC '86 Proceedings of the fifth annual ACM symposium on Principles of distributed computing
Query processing in main memory database management systems
SIGMOD '86 Proceedings of the 1986 ACM SIGMOD international conference on Management of data
A recovery algorithm for a high-performance memory-resident database system
SIGMOD '87 Proceedings of the 1987 ACM SIGMOD international conference on Management of data
Reliable object storage to support atomic actions
Proceedings of the tenth ACM symposium on Operating systems principles
Notes on Data Base Operating Systems
Operating Systems, An Advanced Course
Distributed Systems - Architecture and Implementation, An Advanced Course
ACM Transactions on Computer Systems (TOCS)
An extensible programming environment for Modula-3
SDE 4 Proceedings of the fourth ACM SIGSOFT symposium on Software development environments
An implementation for small databases with high availability
ACM SIGOPS Operating Systems Review
Availability in the Sprite distributed file system
ACM SIGOPS Operating Systems Review
A taxonomy of issues in name systems design and implementation
ACM SIGOPS Operating Systems Review
Lightweight recoverable virtual memory
SOSP '93 Proceedings of the fourteenth ACM symposium on Operating systems principles
Lightweight recoverable virtual memory
ACM Transactions on Computer Systems (TOCS) - Special issue on operating systems principles
Availability in the Sprite distributed file system
EW 4 Proceedings of the 4th workshop on ACM SIGOPS European workshop
Wanted: an application aware checkpointing service
EW 6 Proceedings of the 6th workshop on ACM SIGOPS European workshop: Matching operating systems to application needs
ACM SIGSOFT Software Engineering Notes
ICWE '06 Proceedings of the 6th international conference on Web engineering
Software configuration management in an object oriented database
COOTS'95 Proceedings of the USENIX Conference on Object-Oriented Technologies on USENIX Conference on Object-Oriented Technologies (COOTS)
The Chubby lock service for loosely-coupled distributed systems
OSDI '06 Proceedings of the 7th symposium on Operating systems design and implementation
Generic Pickling and Minimization
Electronic Notes in Theoretical Computer Science (ENTCS)
Hi-index | 0.00 |
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.