Sharing of objects in an object-oriented language (1986)

Object-oriented languages like Simula, Beta, Smalltalk-80 and others, have a single-user object-space. When such languages are used in multi-user applications like Office Information Systems and CAD/CAM, there is a need to share the object-space between the users. At Center for Industrial Research, object-oriented system development methods are used to develop an Information Support Environment for Engineers. One of the applications under development is a multi-media document production system with a graphical browsing interface. The system is implemented in Smalltalk-80, in an environment of workstations and servers interconnected through a local area network. To achieve sharing of objects we have developed a layered database management system. The first layer is a private database on each workstation, acting as a working store for the local objects. The second layer is a shared database on a server, communicating with the working stores through a remote procedure call mechanism. According to the following definitions, the private database is an object-oriented database, while the shared database is an object database. An object-oriented-database is a database where the principles of an object-oriented language is used in the database itself. An object-database is a database where data are stored in the form of objects, but objects are handled in a uniform way, independent of their class and type. The private database is a main-memory database that acts as an interface between the application and the Smalltalk-80 virtual memory. The model-objects which are shared are structured according to a node-relation datamodel, much like the binary-relationship or object-role semantic datamodels. This datamodel is based on the concepts of nodes, relations and attributes. A model consists of a network of nodes connected to each other by relations. One relation consists of a relation-type and globally unique identifiers for the connected nodes. A node can either be composite or atomic. Atomic nodes, such as text and picture, are responsible for their own storage format on a sequential stream. In this way a new application can add its own atomic nodes.The generalization/specialization hierarchy is taken care of by the Smalltalk-80 system itself.In the Model-View-Controller paradigm in Smalltalk-80, it is essential to separate the model from its presentations and interaction-control. The shared database aims at the sharing of model-objects. Objects which do not need sharing, like view- and controller-objects are kept locally in the workstation.The working store converts between the globally unique identifiers and the object-memory-pointers for the objects. It uses an audit-file with time-stamps to keep track of the full object-history. Referenced nodes which do not exists in the working store, are automatically retrieved and checked out from the shared database.The shared database is developed on basis of a network-oriented Engineering database, originally developed for CAD/CAM-purposes. This database gives efficient handling of variable length records, and acts as an object-store. The transactions between a private database and the shared database are usually of long duration. From the shared database it is possible to check-out and check-in complex objects, consisting of a network of node- and relation- objects. An object can be checked out for write or read. On write, other users are allowed to read, but will get a warning. The shared database can give a selection of interesting object structures, based on a traversal of the network with node- and relation-types. The nodes are normally physically clustered according to the part-of-hierarchy. The shared database also keeps track of historic versions of nodes, based on timestamps. To cope with the large storage-space required, an archive-facility using optical discs is under development. Future work will be on enhancing the functionality and the performance of the system. We are also preparing a joint project with our CAD/CAM-department on using this techniques in the development of a CAD-system for building design. In this system we plan to work more on constraint-handling, and checking out views from the shared database.