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.
[1]
Ronald Morrison,et al.
An Approach to Persistent Programming
,
1989,
Comput. J..
[2]
A. Retrospective,et al.
The UNIX Time-sharing System
,
1977
.
[3]
Roger L. Haskin,et al.
On extending the functions of a relational database system
,
1982,
SIGMOD '82.
[4]
R. Stallman.
EMACS the extensible, customizable self-documenting display editor
,
1981,
SIGPLAN SIGOA Symposium on Text Manipulation.
[5]
Michael J. Carey,et al.
Persistence in the E Language: Issues and Implementation
,
1989,
Softw. Pract. Exp..
[6]
Maurice Herlihy,et al.
Inheritance of synchronization and recovery properties in Avalon/C++
,
1988,
Computer.
[7]
Peter J. Denning,et al.
The working set model for program behavior
,
1968,
CACM.
[8]
Michael Stonebraker.
The INGRES Papers: Anatomy of a Relational Database System
,
1986
.
[9]
Narain H. Gehani,et al.
ODE (Object Database and Environment): the language and the data model
,
1989,
SIGMOD '89.
[10]
Craig Harris,et al.
Combining language and database advances in an object-oriented development environment
,
1987,
OOPSLA '87.
[11]
W. Kim,et al.
Architectural issues in object-oriented databases
,
1990
.
[12]
Charles N. Fischer,et al.
Crafting a Compiler
,
1988
.
[13]
Bjarne Stroustrup,et al.
C++ Programming Language
,
1986,
IEEE Softw..