The field of object-oriented databases combines the ideas of object-oriented programming and database management. Object-oriented programming contributes a rich data model, which allows complex nested structures and class hierarchies with inheritance, and direct modeling of behavior or operations on data. Databases contribute persistence and sharing of data among several applications, which then necessitates concurrency control. GemStone is one of the first successful implementations of an object-oriented database system. The work was done by the authors and their colleagues at Servio Logic Development Corporation.
This paper is a good introduction to GemStone. It describes object-oriented data modeling, as found in Smalltalk-80, in great detail. There is a lengthy discussion of the requirements of object-oriented databases, which include disk-based support of large collections of large objects, sharing such objects, and indexing these collections for efficient access. The GemStone solution to each of these problems is described.
The paper is well written, providing many references to other papers on GemStone and to other work in this field. The differences between the OPAL language of GemStone and Smalltalk-80 could be more clearly explained. Two references on page 370 to Gray’s work [1] should be to the Smalltalk book [2]. One curiosity is that section 6.3.4, describing the query language, is very small and comes at the end of a lengthy section on indexing. Anyone who has read the other GemStone papers will not find much new here, but for those unfamiliar with GemStone or with object-oriented databases, this paper is an excellent starting point.