Objectivity/DB
From Wikipedia, the free encyclopedia
Objectivity/DB is a commercial object oriented database management system ODBMS produced by Objectivity, Inc. It allows applications to make standard C#, C++, Java, Python or Smalltalk objects persistent without having to convert the data objects into the rows and columns used by a relational database management system [RDBMS]. Objectivity/DB supports the most popular object oriented languages plus SQL/ODBC and XML. It runs on Linux, LynxOS, UNIX and Windows platforms. All of the languages and platforms interoperate, with the Objectivity/DB kernel taking care of compiler and hardware platform differences.
Contents |
[edit] Architectural features
Objectivity/DB is a distributed database that provides a single logical view across a federation of databases. It uses a distributed computing model that links a small software library with the client application. The client transparently communicates with remote servers that are functionally simpler than their equivalents in centralized database server architectures. There are lock, remote data transfer and query agent server processes. The distributed architecture helps make Objectivity/DB inherently scalable and reliable. It has sustained ingest rates in excess of one Terabyte per hour while simultaneously supporting data fusion and query operations - Building a High Throughput Data repository With High Query Performance.
Objectivity/DB uses a hierarchy of storage constructs. Objects are stored in logical clusters called containers. The containers are stored in databases that are cataloged in a federated database. Every object has a unique 64-bit or 32-bit Object Identifier [OID] that is a composite logical structure. The physical address space limitation for a single federation is in the millions of Terabytes range. The largest publicized Objectivity/DB installation (at Stanford Linear Accelerator Center) stored over a Petabyte of objects.
Objects can be linked to other objects using named uni-directional or bi-directional links. The links can have a cardinality of 1:1, 1:many, many:1 or many:many and use the OIDs to speed up the navigation of networks of objects. The OIDs are also used in support of scalable collections (tree, list, set etc.), indices and hash tables. Eliminating the relational JOIN operations inherent in a relational database gives Objectivity/DB a marked performance advantage.
Objectivity/DB is also different from RDBMSs in the way in which it handles queries. The application declares and initializes an iterator that locates and returns qualified objects as soon as they are located. Most RDBMSs manifest a view of the results before returning any of them. The Objectivity/DB Parallel Query Engine splits queries into subtasks directed at individual databases or containers. Remote query agents service each subtask and return results to the iterator. The Parallel Query Engine has two replaceable components: a splitter that can determine how to best subdivide the task and a filter in the query agent that can further refine a query. A query involving cities in Europe might be split into forty nine subtasks, one for each country. The filter might access an external data source before qualifying or disqualifying the objects that the Query Agent has found in the Objectivity/DB database or container.
Databases and system data (catalogs and schema) can be replicated to multiple locations using a quorum based synchronous replication mechanism. Replicas that are temporarily separated from the quorum are transparently resynchronized when they are reconnected to the network that services them and their peers. Individual databases and lock servers can be allocated votes that are used to determine whether or not a client can update a replica.
The distributed database and processing architecture of Objectivity/DB has allowed it to be used in many grid computing environments. It has attained certification as an IBM Ready For Grid product. It is also used in Service Oriented Architecture applications. Objectivity For Java has support for the J2EE Connector Architecture [JCA] standard.
[edit] Typical applications
Objectivity/DB is generally used in data intensive or real-time applications that manipulate highly complex, inter-related data. It may be embedded in a software or hardware product or used as a part of commercial, scientific or government project.
Early deployments were primarily in Computer-Aided Design and engineering applications. In the early 1990s a number of telecom equipment manufacturers started embedding Objectivity/DB in advanced intelligent network and element management systems. Notable deployments include the wireless SprintPCS and the Iridium low Earth orbit satellite networks. A number of process control, manufacturing and medical instrumentation systems incorporate Objectivity/DB because of its real-time performance and high availability.
Defense contractors and large science projects started using Objectivity/DB in the late 1990s. The government applications cover command and control, security, data fusion and intelligence applications. Objectivity/DB has been used in astrophysics, high energy physics, fusion, earth sciences, hydrography and bioinformatics applications. Most of these applications build and manipulate extremely large (Terabyte and Petabyte scale) databases.
The choice of an RDBMS or an ODBMS depends on many factors. An ODBMS can be ideal in a compute or data intensive object oriented system. However, if an RDBMS can comfortably meet the functional and performance requirements of an application with the available programming resources then there is probably no need to consider an ODBMS.
[edit] Objectivity, Inc.
Objectivity, Inc. was founded in 1988 and brought Objectivity/DB to market in 1990. The corporate headquarters is in Sunnyvale, California. The company was a founding member of both the Object Management Group and the Object Data Management Group [ODMG]. The C++, Java and Smalltalk interfaces incorporate the features defined in the ODMG'93 standard.
[edit] History
Although the first ODBMSs appeared around 1987, they are continually evolving to service new standards and application demands. Here is a timeline of significant Objectivity/DB developments:
- September 1988 – Objectivity incorporated.
- May 1990: Release 1 – A distributed ODBMS, interoperable across three Unix platforms, support for C++ only, limited query and schema migration capabilities.
- 1992: Release 2 – Smalltalk, SQL++ and ODBC, additional UNIX platforms, indexing and predicate queries.
- 1994: Release 3 – High Availability (fault tolerance and database replication).
- 1996: Release 4 – Windows NT and short transaction performance improvements.
- 1998: Release 5 – Java and Active Schema (dynamic declaration and migration of schema definitions and object instances).
- 1999: Release 6 – Scalability (transparent support for mass storage) and security hooks.
- 2001: Release 7 – XML and Usability (additional tools and uniform APIs across languages)
- 2003: Release 8 – Python and increased productivity (Eclipse IDE)and 64-bit support.
- 2005: Release 9 – VLDB enhancements, Web Based Training and Parallel Query Engine
- 2007: Release 9.3 – Additional 64-bit platforms and JCA support for more application servers.