In most application development a considerable time is spent on developing
data management at the client. Common data structures are linked lists,
tables etc. One step in the right direction is to use STL or MFS'c
to utilise already tested and proven container classes.
Still, using STL or MFC the programmer is not relieved the strain of having to choose and tailor
the utilisation of the selected container classes. Also none of the
containers will give access to data stored in some other container or provide any means of
modelling the relations between the data stored in the different containers.
Hence the program must not only have knowledge about what data is available
it must also know where it is stored. Using ODB all this overhead is
in your software project is eliminated.
Using ODB will reduce the time and hence the cost of any
software project that handles data (which most do). ODB is optimized towards
speed and memory utlisation.
Hence, ODB provides a lightweight main memory Object Oriented database with
persistent objects. Using ODB the developer uses a GUI to model the data,
(or the API, or the ODBQL) and he retrieves the data through the powerful query interface
proveded by the ODB API.
The database engine is accessed by applicaions through a simple and consistent
application programming interface, API. ODB is a light-weight
single- user main-memory object-oriented database.
ODB supports, subtyping, inheritance, complex objects and all
objects have a unique identity
hence ODB is object-oriented.
It always keeps the data in main memory, thus it is primarily intended
for applications with
moderately sized data requirements. It uses secondary storage only for
storing the
database between sessions.
It is light-weight because some of the traditional database facilities
such as locking and logging
does not exist in ODB. The reason is that it is intended to be used
as a fast and easy to
use storage and search module in any application where traditionally the
application developer
programmed the data storage, e.g. as sequential file scans etc.
It differs from other C++ based object-oriented databases
in that it is dynamic in nature. Hence your application
is linked and compiled once and the database schema
is created or changed dynamically without any
recompilation of the application.
The ODB-system consists of two parts: A graphical user interface for
creation and maintenance of the database and a C++ API for accessing the
database engine from another application.
Figure 1. System Overview
The graphical user interface faciliates creation, update and deletion of types,
properties and objects in an easy manner. The interface also supports loading,
saving and creation of ODB-databases.
The C++ API gives any application access to a set of high-level easy to use
interface methods to the database engine. The API gives the application access to the same functionality which is available in the user interface. In addition, the API also provides a powerful stream based query interface to the database.
The on-line version of ODB contains all functionality of the system,
except the persistenct i.e. it is a special shareware version.
If you use ODB and find it useful the cost is US$99.
Send an e-mail to ODB for Win 95 / NT for further
details.
An ODB-database is a collection of types with properties
and objects which are instances of types. ODB-types are instances
of the system class usertypes and ODB-objects are instances of the
object system class
Figure 2. System Class hierarchy
The types are organized in a subtype-supertype hierarchy where subtypes
inherit all properties defined or inherited to its supertype. In addition
to the inherited properties new properties can be created.
A property is a name which denotes values of objects. Properties can
denote values of the following ODB-database types:
Integer
Real
Charstring
Object reference
Collection of Integer
Collection of Real
Collection of Charstring
Collection of object reference.
ODB-objects are instances of ODB-types where all properties
defined or inherited to the type can be assigned values for the object.
Objects can be retreived by their property values. And the extent of a
type, i.e. the objects that belongs to a particular type and all subtypes to
that type, can be queried through a stream based query interface. To facilitate
fast look-up of objects indexes can be built over some or all of the
properties of a type.
The database can easily be updated or altered in the following ways:
Type creation
Property creation
Object creation
Index creation
Type deletion
Property deletion
Object deletion
Index deletion
Object modification.
Integrity constraints will be maintained by the system when types or
objects are deleted or modified. All properties and indexes are inherited
automatically to any newly created subtype of a particular type.
ODB for Win95 / NT
An Object-Oriented Database V. 0.1 Mail to
ODB for Win 95 / NT