The Oberon system as well as the Oberon-2 language lack database functionality such as persistence or recovery. The Oberon-D project aims at adding such functionality to the Oberon system.
Oberon-D is an ongoing project. It is divided into different parts. In each part a new database functionality is added to the Oberon system.
Persistence: Persistence is an attribute describing an object's lifetime. In a language with persistence, data objects may survive between program runs. Persistence is the most important property of an object oriented database programming system. In contrast to persistent objects, transient objects only exist during one run of a program. The working with Oberon-D can be seen in the following example.
Schema Evolution: Many object oriented database systems allow the user to modify type definitions. However, they vary considerably in the amount of assistance they offer in handling such modifications. For example, when a new attribute is added to an object type, is it necessary to explicitly "fix" all the existing objects of the changed type to include the new attribute? Is it possible to add a new supertype when instances of a type exist?
Query Languages: Query languages are an important functionality of database systems. The user can retrieve data simply by specifying the conditions the data must meet. In relational database systems, query languages are the only way to access data, wheras object-oriented database systems, in general, have two ways. The first way, which is already implemented in Oberon-D, is navigational and exploits object identifiers and aggregation hierarchies. Given an OID, the system accesses the object directly and navigates through the objects referred to by its attributes. The second way is access through a query language.
Recovery: Recovery mechanisms allow a consistent state of the database systems to be recovered after a system crash.
Concurrency control limits simultaneous reads and updates by different users, to give all users a consistent view of the data. Although Oberon-D is a single-user database system, there may be different tasks working simultaneously on the persistent heap.
The idea of Oberon-D is to offer the impression of an indefinitely large dynamic store on which all objects live. The programmer does not have to distinguish between "internal" and "external" objects. All objects can be referenced and sent messages as if they were in main meory. The Oberon-2 language does not have to be extended.
available via e-mail
available via ftp
Publications about Oberon-D
Adding Persistence to the Oberon-System (Report)
Adding Persistence to the Oberon-System (JMLC-Paper)
Oberon-D (ECOOP Workshop)