Object Databases.

July 16, 2008

Many developers spend a huge amount of time creating well designed object orientated applications only to have to have to write complex mapping classes in-order to interact with a relational database. A large percentage of application code often consists of mapping application objects to a relation database model.

Relational databases have been the industry standard for persisting data since the mid 70’s. Relational databases consist of flat two-dimensional table that are related to other tables using keys.

Data manipulation is handled by SQL (Structured Query Language) which is standard across the majority of database vendors.

The downside to relational databases is that the application object model that developers code against cannot be stored in a relational database. Classes have to be written to provide the necessary mapping so that the objects and databases can communicate. Each object has to be flattened out to support many-to-many relationships. Each field and property has to be mirrored in database tables or views in-order for fields to match up. Stored Procedures are also needed (sometimes as many as four per class) to marshal data to and from the object. The mapping of class fields to database columns is a laborious but unavoidable task.

Object database approach things from a different perspective, offering a different way of designing the persistence layer of an application. The fundamental idea behind object databases is the idea that you store your data in the same way that you use it.

Matisse Object Databases
One of the major .Net object database vendors, is a company called Matisse Software Inc. Matisse have created a database management system that helps developers to bypass the whole mapping process usually associated with object application design and relational databases.

Using Matisse the object database management system, developers can create database schemas and generate application code from simple class diagrams. The development mapping process is eliminated as this is all taken care of for you behind the scenes. Performance is increased as complex joins are no longer needed. Object databases store object as they exist in the application domain along with all the necessary object relationships.

There are many other interesting feature object databases have to offer and this post has simply scratches the surface as to what is possible. The main point to make though is that using Matisse or any other object databases database management system allows you to stay within the object orientated paradigm, eliminating the need to bridge a gap between two different domains. Matisse’s support for VB.Net, C#, Java and C++ make it an extremely via candidate for a .Net developers that are ready for the paradigm shift or tired of the huge overheads in terms of code maintenance and database administration.