PRACTIC is a parallel Object-Oriented Database system that is based on a concurrent object data model. PRACTIC means PaRallel ACTIve Classes and is based on the vertical partitioning and concurrent management of the database schema classes and meta-classes, which are collectively called active objects. Active objects are permanent processes in memory that encapsulate their definitions, methods and management procedures. Semi-active and passive objects exist to realise abstract classes and instances (the actual data), respectively. The object model gives rise to a query/method execution model that provides parallelism on all levels of the instantiation hierarchy. The abstract PRACTIC machine directly maps the model to a MIMD machine, providing a hierarchical architecture and a hierarchical de-clustering scheme
L-Base is a tightly coupled Prolog and Relational Database System. It integrates Arity Prolog and DBase III+. The advantages of L-Base can be grouped into two main categories: data organisation and data semantics. Prolog's structure flexibility offers space saving because of variable record length. Records are organised in lists allowing both tuple- and attribute- oriented queries. Data dependencies are organised in list-fields within records. Prolog offers fast data retrieval due to efficient indexing through b-trees. Hash tables and buckets reduce the size of data to be searched offering a powerful data modelling tool. Data semantic advantages of Prolog arise from the use of facts, which behave as actual data, and rules, which compute data at the querying time. The result is the ability to extract more meaning from the data without distracting the data file's structure. Prolog offers a sophisticated inference engine that allows complicated logic queries.
CoLan is a high-level declarative Constraint Description Language, for use with an Object-Oriented Database (OODB). CoLan has features of both first-order logic and functional programming and is based on Daplex. CoLan expressions are translated into Prolog code that implements the operational semantics of the constraint. Pieces of generated code are cached inside the class descriptor of the 'host' class attached to appropriate slots. The pieces of code are retrieved along an inheritance path when an update on the database is attempted. If the update violates any of the retrieved constraints then it is rejected with an informative message. Thus constraints are expressed declaratively and they can even be retracted individually. However, they are implemented efficiently as code-generated methods, triggered selectively by an update.