ODMG-93 Standard Overview
   
Table of Contents

  
Introduction

The ODMG is the standard for storing objects.  Its purpose is to ensure the portability of applications across different DBMSs, protecting the user’s software investment while reducing reliance upon a single vendor, and encouraging competitive feature development. The standard is at the intersection of three existing standards domains: databases (SQL), objects (OMG) and object programming languages (C++, Smalltalk, and Java). ODMG 2.0 builds upon each of these standards to define a concise object storage standard for developing applications in object programming languages. This article provides a brief overview of the standard and discusses the role of the Object Data Management Group in the standards development process.

About Object Data
ODMG adds database functionality to object programming languages. They bring much more than persistent storage of programming language objects. ODMG extend the semantics of the C++, Smalltalk and Java object programming languages to provide full-featured database programming capability, while retaining native language compatibility. A major benefit of this approach is the unification of the application and database development into a seamless data model and language environment. As a result, applications require less code, use more natural data modeling, and code bases are easier to maintain. Object developers can write complete database applications with a modest amount of additional effort.

The ODMG Standard
The ODMG standard sits at the intersection of three important standards domains: databases, objects and object programming languages. Rather than defining a completely new standard from the ground up, the ODMG standard builds upon the existing OMG, SQL-92 and ANSI programming language standards to define a framework application portability. The ODMG standards’ functional components include an Object Model, an Object Definition Language, an Object Query Language, and Language Bindings to C++, Smalltalk and Java.

Object Model [Official Document]
The ODMG Object Model provides the unifying basis for the entire ODMG standard. The ODMG Object Model extends the OMG Object Model with capabilities like relationships and transactions to support database functionality.

The key concepts of the object model include:

  • Attributes and relationships object properties
  • Object operations (behavior) and exceptions
  • Multiple inheritance
  • Extents and keys
  • Object naming, lifetime and identity
  • Atomic, structured and collection literals
  • List, set, bag and array collection classes
  • Concurrency control and object locking
  • Database operations

Object Definition Language (ODL) [Official Document]
All DBMSs provide a data definition language, or DDL, that enables the user to define the schema. The ODMG Object Definition (ODL) is a database schema definition language extension of the OMG Interface Definition Language (IDL) that allows the standard of an object type and its attributes, relationships and operations.

ODL creates a layer of abstraction such that an ODL-generated schema is independent of both the programming language and the particular ODMG-compliant DBMS. Accordingly, ODL considers only object type definitions and ignores the actual implementation of methods. An ODL-generated schema can be freely moved between compliant DBMSs, different language implementations, or even translated into other DDLs, such as those proposed by SQL3.

Object Query Language (OQL) [Official Document]
OQL is an SQL-like declarative language that provides a rich environment for efficient querying of database objects, including high-level primitives for object sets and structures. OQL provides a superset of the SQL-92 SELECT syntax. This means that most SQL SELECT statements which run on relational DBMSs tables work with the same syntax and semantics on ODMG collection classes.

OQL also includes object extensions to support object identity, complex objects, path expressions, operation invocation and inheritance. OQL’s querying capabilities include the ability to invoke operations in ODMG language bindings, and OQL may be called from within an ODMG language binding for embedded operation. OQL maintains object integrity by invoking an object’s defined operations, rather using its own update operators.

In an effort to maintain compatibility with SQL SELECT in the future, the ODMG has created a strong working relationship with the ANSI X3H2 committee, which is defining the SQL3 standard. The objective is to ensure interoperability between OQL and the SQL-3 proposal.

Language Bindings [Official Document]
The ODMG standards’ C++, Smalltalk and Java bindings define Object Manipulation Languages (OMLs) that extend the language standards to support manipulation of persistent objects. The bindings also include support for OQL, navigation and transactions. Because each language has its own OML, developers can work inside a single language environment without separate programming and database languages.

Java Language Binding: The ODMG language binding for Java is new in Release 2.0 of the ODMG standard. It adheres to the same principles as the Smalltalk and C++ bindings. The binding uses established Java language practice and style so as to be natural to the Java environment and programmers. Instances of existing classes can be made persistent without changes to source code. As in the Smalltalk binding, persistence is by reachability: once a transaction is committed, any objects that can be reached from root objects in the database are automatically made persistent in the database. The ODMG binding to Java adds classes and other constructs to the Java environment to support the ODMG object model, including collections, transactions and databases, without altering the semantics of the language.

C++ Language Binding: The ODMG C++ binding provides language-transparent extensions that do not require a preprocessor to implement. These extensions provide facilities for object creation, naming, manipulation and deletion, and transactions and database operations. The C++ binding allows persistence-capable classes to be created by inheritance. OQL and OML can be interspersed, so that OQL queries may be built in-line to application code and conversely, OQL can call OML. The binding also includes recent ANSI C++ enhancements, like support for Standard Template Library (STL) algorithms (to provide sequential access to members of a collection) and exception handling.

Smalltalk Language Binding: The ODMG Smalltalk binding provides the ability to store, retrieve and modify persistent objects in Smalltalk. The binding includes a mechanism to invoke OQL and procedures for transactions and operations on databases. Smalltalk objects are made persistent by reachability. This means that an object becomes persistent when it is referenced by another persistent object in the database, and it is garbage-collected when it is no longer reachable.

The Smalltalk binding directly maps all of the classes defined in the ODMG object model to Smalltalk classes. Object Model collection classes and operations are mapped wherever possible to standard collection classes and methods. Relationships, transactions and database operations are also mapped to Smalltalk constructs.

 

The Object Database Standard: ODMG-93 Release 1.2, edited by R. G. G. Cattell, is published by Morgan Kaufmann Publishers. November, 1995.

The Object Database Standard: ODMG 2.0, edited by R. G. G. Cattell and Douglas K. Barry, is published by Morgan Kaufmann Publishers. May, 1997.

Compliance and Certification Designations
To help end users to identify products which meet the ODMG 2.0,  the ODMG created the ODMG 2.0 Compliant and ODMG 2.0 Certified designations for the following ODMG components: ODL, OQL, C++, Smalltalk and Java. ODMG Certified means that the product has passed the ODMG test suites for component in question. These test suites are currently in development.

Since the ODMG test suites are not yet available, ODMG has also defined the term ODMG Compliant to denote products that are designed to pass the certification suites when they become available. ODMG Compliant has different meanings depending upon the component. For ODL and OQL, it means that the product would pass the appropriate ODMG test suite when one becomes available. For Smalltalk, C++ or Java, it means that the product would pass ODMG test suites for that language's ODL, Object Manipulation Language (OML), or OQL.

Currently vendors must determine for themselves whether or not a product meets the ODMG standard. However, the ODMG is working to offer certification for products that comply with ODMG 2.0 to ensure application portability.   Like much of the ODMG 2.0 standard, the test suites draw on existing standards, such as the NIST SQL Tests, for both procedure and content. Products that pass certification will be branded with an "ODMG Certified" logo.

The Role of the ODMG
ODMG 2.0 and ODMG 2.0 was developed by the Object Data Management Group, a non-profit consortium of vendors and interested parties who collaborate to develop and promote standards for object DBMSs. The ODMG was formed by the vendors in 1991, at the urging of Rick Cattell, the ODMG’s chair and a distinguished engineer at JavaSoft.

Accordingly, the initial membership decided to build their own organization with a small, committed membership which could move rapidly to define a standard. Working quickly, the ODMG was able to define a standard, based upon the best aspects of the various implementations. ODMG 2.0 Release 1.0 was published in August, 1993, a mere eighteen months after work was started. Release 1.2, a refinement which included many improvements, including better compatibility with SQL-92, was published in November, 1995.

Objectives
The ODMG has three key objectives. Most important, the organization is committed to evolving the standard. Therefore, the ODMG seeks to bring ODBMS vendors, tool makers and end users together to continue to development. By the time this articles appears, ODMG 2.0 has been published. It includes many improvements and enhancements, including a Java binding. In addition, the ODMG is developing a certification test suite that can provide independent verification of compliance to the ODMG standard. The test suite will give users confidence that "ODMG certified" products meet the ODMG standard. Finally, the ODMG seeks to educate the public about the benefits of object DBMSs and the importance of ODMG standards to ensuring application portability between compliant DBMSs.

ODMG Membership
The ODMG membership continues to grow. Since its inception in 1991, the ODMG has grown to over 20 members and includes every ODBMS vendor, plus several tool vendors, consulting firms, and corporate end users.

The ODMG membership consists of voting and reviewer members. The voting member companies are GemStone Systems, IBEX Computing SA, O2 Technology, Object Design, Objectivity, POET Software, UniSQL and Versant Object Technology. Reviewer member companies are Andersen Consulting, CERN, Electronic Data Systems (EDS), Fujitsu Software Corporation, Hitachi, Lockheed Martin, Microsoft, MITRE Corporation, NEC Corporation, ONTOS, Persistence Software, Sybase, Unidata and VMARK Software.

Voting membership requires that a company must have developed and must commercially ship a object DBMS product. The company must commit 20 percent of the time of a senior object DBMS expert and must commit to implement the ODMG standard. Reviewer membership requires a company to commit 10 percent of the time of a senior object DBMS expert, but does not require that the company ship an object DBMS product. The ODMG has also recently created a new certification membership, which allows corporate end users, consultants, trainers, tool vendors to participate at a lower level of commitment, while maintaining a streamlined development process for the standard.

Conclusion
The ODMG standard ensures that applications will be portable across compliant object DBMSs. In so doing, the standard reduces user dependence on a particular object DBMS vendor and preserves software development investment as users needs grow and change. The ODMG-standard synthesizes the existing SQL, OMG object and object programming language standards into a standard for building object DBMS-based applications. The ODMG is currently at work on a test suite that will objectively certify adherence to the standard.

To contact the ODMG, visit its web site at http://www.odmg.org, or by phone at 612-953-7250, by fax at 612-397-7146. The ODMG is located at 14041 Burnhaven Drive, Suite 105, Burnsville, Minnesota 55337.