Objectivity/DB

Objectivity/DB is a commercial object database produced by Objectivity, Inc. It allows applications to store standard C++, C#, Java, or Python objects persistently, without converting them into the rows and columns used by a relational database management system (RDBMS). Objectivity/DB supports popular object-oriented languages as well as SQL/ODBC and XML. It is compatible with Linux, Macintosh, UNIX and Windows platforms, facilitating interoperability across different languages and hardware environments.

History
Objectivity/DB was first introduced in 1990. The C++ and Java interfaces adhere to the ODMG'93 standard, with subsequent additions of C# and Python interfaces. Objectivity, Inc. ceased in late 2023.

Architectural features
Objectivity/DB operates as a distributed database, providing a unified logical view across a network of databases. It employs a distributed computing model where client applications transparently communicate with simplified servers processes. This architecture enhances scalability and reliability, supporting ingest rates exceeding one terabyte per hour while concurrently facilitating data fusion and query operations.

Objectivity/DB utilizes a distributed storage hierarchy, storing objects in logical clusters called containers within federated databases. Each object is assigned a unique 64-bit Object Identifier (OID) within a massive physical address space spanning millions of Terabytes. Notably, the largest reported deployment at SLAC's BaBar experiment stored over a petabyte of objects.

The database offers flexibility in defining object placement within its storage hierarchy. through customizable strategies encapsulated in XML configuration files. This approach allows database designers to specify how persistent objects are stored, distributed, and positioned relative to other designated objects.

In Objectivity/DB, objects can establish named uni-directional or bi-directional links with other objects, supporting various cardinalities (1:1, 1, many:1, many). Object Identifiers (OIDs) expedite navigation across networks of objects, supporting scalable collections (tree, list, set etc.), indices, and hash tables. By eliminating relational Join operations typical in RDBMS, Objectivity/DB achieves enhanced performance advantages.

Unlike RDBMSs, Objectivity/DB employs a unique approach to query handling. Applications initialize iterators that locate and retrieve qualified objects iteratively. The Parallel Query Engine divides queries into subtasks managed by remote query agents, which filter and process results before sending them back to the application. This approach includes components for query task division and refinement, optimizing performance for complex queries.

Databases and system data, including catalogs and schemas, can be replicated across multiple locations using a quorum-based synchronous replication mechanism. This ensures transparent resynchronization of replicas temporarily disconnected from the network.

The distributed architecture of Objectivity/DB has facilitated its adoption in grid computing environments and Service Oriented Architecture (SOA) applications. It holds certification as an IBM Ready for Grid product and supports the J2EE Connector Architecture (JCA) standard making it suitable for deployment in cloud environments.

Typical applications
Objectivity/DB finds applications in data-intensive and real-time environments handling complex, interconnected data. It is utilized in software, hardware, commercial, scientific, and government projects, particularly in sectors like in computer-aided design (CAD), telecom, process control, manufacturing, medical instrumentation, defense, and large-scale scientific research.

The choice between RDBMS and ODBMS depends on specific application requirements. Objectivity/DB is favored in compute or data-intensive, object-oriented systems where its performance benefits are critical.