A composition oriented objectbase, or what I call a compositional domainbase (CDB), is one which is organized around the UML concept of a compositional aggregation. To be precise a compositional domain (c-domain or just composition) is a collection of classes in a UML model which is the compositional closure of any its members. One class, called the named-class and top most class of this submodel hierarchy, is chosen to represent and name it.
Compositions are quite natural and have quite nice properties. By definition, they are the smallest collection of classes containing all the data intrinsic to the composition, so they are the smallest meaningful units of information in an object network. Mathematically, compositional closure is an equivalence relation, and so provides a natural partitioning of any object network. I see them as the natural evolution of tables and views in a relational database; for instance they correspond to named-objects in OQL, and documents in XML. Indeed all objectbases can be viewed as CDB's if the unit of access is regarded as the composition, and the point of access is the named-class.
They also possess a natural processing architecture. Compositions are semantically coherent, but objects within a composition can still reference other compositions. This induces a natural operational boundary for implementing lazy instantiation. They are also very easy to update and retrieve data from by contructing what I call a content index for each composition. One can see this by noting that instances of object sub-networks rooted on different named-class objects don't intersect in the sense that any two such object sub-networks contain no common objects. A content index is just a two column table containing named-class objectId's in one column and objectId's of associated objects in the other. Clearly they can be updated very efficiently on saving, and facilitate fast retrieval.
Considering back-end/middle-ware systems development, assigning dedicated domain-servers to each composition, so that the back-end database is covered by a family of such communicating servers, they become the natural units of reuse and versioning in an architecture based repository.
Goals of the project are to build:
- a UML driven domainbase generator,
- the UML driven infrastructure to manage domainbases,
- a domain server generator,
- the application-CDB interfacing (rmi-)server and its particular database adaptors
- an OQL query processor for the CDB server
- eventually maybe a pure domainbase