Persistent property extensions
Property extensions provide a high level of flexibility for database applications. By defining extension properties, object instances might be extended by any of the defined extension properties. Thus, object instances might be combined with any number of property extensions, which may contain attribute values, instance collections or links to other object instances.
Practically, ODABA allows similar to key/value databases (or P0 databases [UDT]) the mapping between object, property and value. Time is supported by object versioning. ODABA allows defining and creating extension attributes, but also extension reference collections and extension relationships.
By means of extension properties one might create an enhanced key/value database just by creating object instances (system data type __XOBJECT) and associating any number of property extensions with the object instances.
Extension properties for a database have to be defined before one may create a property extension for an object instance (extension schema). The extension schema can be stored in the dictionary, but also in the database. In the simplest case, one may run a database without (or with any) dictionary, as long as the database contains the complete extension schema.
Usually, an extension schema will be defined in the dictionary in addition to the object model defined for a database. Further extension properties might be defined in each database created with the dictionary. When extension schemata in dictionary and database overlap, database property definitions are used prior to dictionary properties.
Internally, extension properties are referenced by a number. Since numbers for extension properties defined in a dictionary extension schema differ from numbers defined for extension properties defined in a database extension schema, property definitions in the database extension schema may overload property definitions in the dictionary extension schema.