| ODB for Win95/NT An Object-Oriented Database V. 0.1 Mail to: ODB for Win 95 / NT |

# 1.0 Introduction

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.

# 2.0 ODB system

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.

## 2.1 Using ODB for Win 95 / NT

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.

## 2.2 Files

ODB consists of the following files:

- pmstore.exe.The ODB creation and maintenance interface. It uses ODB.DLL.
- ODB.h. ODB C++ header file.
- ODB.lib.The ODB library for static linking (Borland C++ .lib).
- ODB.DLL. The ODB library for dynamic linking.
- ODB.DEF. A listing of the dynamic link library.
- Compdb.odb. Sample ODB database file.
- Demo.cpp. Sample ODB application source code.
- Demo.def. Used by demo.cpp to link at compile time. (Borland C++ file, may need rewrite for other compilers/linkers)

## 2.3 System Requirements

The system is intended to run under Win95 / NT V4 or higher. Any other requirements does not exist.

# 3.0 System overview of ODB

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 |