PC++: An Object-Oriented Database System for C++ Applications

This paper describes PC++ (Persistent C++), an object-oriented database system that supports persistent storage, retrieval, and manipulation of C++ objects by multiple C++ applications executing concurrently on a network. PC++ supports persistent objects by extending the C++ programming language using the C++ inheritance mechanism. PC++ provides object-oriented programming interface, unique object identifier generation, efficient management of object storage and retrieval, optimistic concurrency control, and crash recovery. PC++ also supports long transaction, object versioning, and object clustering which relational database management systems do not support. PC++ employs a distributed client-server architecture; it consists of an application workspace manager and a database server. The application workspace manager implements the programming interface, performs identifier-to-object mapping, manages the persistent heap space, and performs object clustering. The database server manages files storing objects, creates and reconstructs object versions, and performs automatic crash detection and recovery. The application workspace manager and the database server rendezvous to perform unique object identifier generation, concurrency control, and long transaction processing. A C++ application integrates with the application workspace manager and executes as a database client process. Clients and the database server communicate using stream sockets. PC++ runs on networked Sun, DEC, and Apollo workstations under the UNIX operating system.