Objectivity/DB

Last updated

Objectivity/DB is a commercial object database produced by Objectivity, Inc. It allows applications to make standard C++, C#, Java, or Python 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, Macintosh, 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

History

Objectivity/DB was first sold in 1990. The C++ and Java interfaces for Objectivity/DB incorporate the features defined in the ODMG'93 standard. [1] The C# and Python interfaces were added subsequently. The company ceased trading in late 2023.

Architectural features

Objectivity/DB is a distributed database that provides a single logical view across a federation of databases distributed across the network. 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 [2] and reliable. It has sustained ingest rates in excess of one terabyte per hour while simultaneously supporting data fusion and query operations. [3]

Objectivity/DB uses a distributed storage hierarchy. 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 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 SLAC's BaBar experiment, stored over a Petabyte of objects. [4] [5]

Objectivity/DB provides a flexible approach for defining how objects are placed within a given storage hierarchy. [6] Database designers can define a custom placement strategy that is encapsulated in an XML configuration file and made available to the application. This strategy can define which persistent objects are stored together, which are distributed, and which are stored near designated 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. [7] 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 performance advantage. [8] [9] [10]

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. 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. The distributed architecture of Objectivity/DB is equally applicable to cloud environments. [11]

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 (CAD) 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 have included 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 (multi-Petabyte) 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.

Related Research Articles

<span class="mw-page-title-main">Database</span> Organized collection of data in computing

In computing, a database is an organized collection of data or a type of data store based on the use of a database management system (DBMS), the software that interacts with end users, applications, and the database itself to capture and analyze the data. The DBMS additionally encompasses the core facilities provided to administer the database. The sum total of the database, the DBMS and the associated applications can be referred to as a database system. Often the term "database" is also used loosely to refer to any of the DBMS, the database system or an application associated with the database.

<span class="mw-page-title-main">Object database</span> Type of database management system

An object database or object-oriented database is a database management system in which information is represented in the form of objects as used in object-oriented programming. Object databases are different from relational databases which are table-oriented. A third type, object–relational databases, is a hybrid of both approaches. Object databases have been considered since the early 1980s.

A relational database is a database based on the relational model of data, as proposed by E. F. Codd in 1970. A system used to maintain relational databases is a relational database management system (RDBMS). Many relational database systems are equipped with the option of using SQL for querying and updating the database.

Structured Query Language (SQL) is a domain-specific language used in programming and designed for managing data held in a relational database management system (RDBMS), or for stream processing in a relational data stream management system (RDSMS). It is particularly useful in handling structured data, i.e., data incorporating relations among entities and variables.

Object–relational mapping in computer science is a programming technique for converting data between a relational database and the heap of an object-oriented programming language. This creates, in effect, a virtual object database that can be used from within the programming language.

<span class="mw-page-title-main">Object–relational database</span> Database management system

An object–relational database (ORD), or object–relational database management system (ORDBMS), is a database management system (DBMS) similar to a relational database, but with an object-oriented database model: objects, classes and inheritance are directly supported in database schemas and in the query language. In addition, just as with pure relational systems, it supports extension of the data model with custom data types and methods.

The Object Data Management Group (ODMG) was conceived in the summer of 1991 at a breakfast with object database vendors that was organized by Rick Cattell of Sun Microsystems. In 1998, the ODMG changed its name from the Object Database Management Group to reflect the expansion of its efforts to include specifications for both object database and object–relational mapping products.

ADO.NET is a data access technology from the Microsoft .NET Framework that provides communication between relational and non-relational systems through a common set of components. ADO.NET is a set of computer software components that programmers can use to access data and data services from a database. It is a part of the base class library that is included with the Microsoft .NET Framework. It is commonly used by programmers to access and modify data stored in relational database systems, though it can also access data in non-relational data sources. ADO.NET is sometimes considered an evolution of ActiveX Data Objects (ADO) technology, but was changed so extensively that it can be considered an entirely new product.

An XML database is a data persistence software system that allows data to be specified, and sometimes stored, in XML format. This data can be queried, transformed, exported and returned to a calling system. XML databases are a flavor of document-oriented databases which are in turn a category of NoSQL database.

<span class="mw-page-title-main">MonetDB</span> Open source column-oriented relational database management system

MonetDB is an open-source column-oriented relational database management system (RDBMS) originally developed at the Centrum Wiskunde & Informatica (CWI) in the Netherlands. It is designed to provide high performance on complex queries against large databases, such as combining tables with hundreds of columns and millions of rows. MonetDB has been applied in high-performance applications for online analytical processing, data mining, geographic information system (GIS), Resource Description Framework (RDF), text retrieval and sequence alignment processing.

Object–relational impedance mismatch creates difficulties going from data in relational data stores to usage in domain-driven object models. Object-orientation (OO) is the default method for business-centric design in programming languages. The problem lies in neither relational nor OO, but in the conceptual difficulty mapping between the two logic models. Both are logical models implementable differently on database servers, programming languages, design patterns, or other technologies. Issues range from application to enterprise scale, whenever stored relational data is used in domain-driven object models, and vice versa. Object-oriented data stores can trade this problem for other implementation difficulties.

<span class="mw-page-title-main">Virtuoso Universal Server</span> Computer software

Virtuoso Universal Server is a middleware and database engine hybrid that combines the functionality of a traditional relational database management system (RDBMS), object–relational database (ORDBMS), virtual database, RDF, XML, free-text, web application server and file server functionality in a single system. Rather than have dedicated servers for each of the aforementioned functionality realms, Virtuoso is a "universal server"; it enables a single multithreaded server process that implements multiple protocols. The free and open source edition of Virtuoso Universal Server is also known as OpenLink Virtuoso. The software has been developed by OpenLink Software with Kingsley Uyi Idehen and Orri Erling as the chief software architects.

Jakarta Persistence is a Jakarta EE application programming interface specification that describes the management of relational data in enterprise Java applications.

SAP IQ is a column-based, petabyte scale, relational database software system used for business intelligence, data warehousing, and data marts. Produced by Sybase Inc., now an SAP company, its primary function is to analyze large amounts of data in a low-cost, highly available environment. SAP IQ is often credited with pioneering the commercialization of column-store technology.

<span class="mw-page-title-main">Db4o</span>

db4o was an embeddable open-source object database for Java and .NET developers. It was developed, commercially licensed and supported by Actian. In October 2014, Actian declined to continue to actively pursue and promote the commercial db4o product offering for new customers.

NoSQL is an approach to database design that focuses on providing a mechanism for storage and retrieval of data that is modeled in means other than the tabular relations used in relational databases. Instead of the typical tabular structure of a relational database, NoSQL databases house data within one data structure. Since this non-relational database design does not require a schema, it offers rapid scalability to manage large and typically unstructured data sets. NoSQL systems are also sometimes called "Not only SQL" to emphasize that they may support SQL-like query languages or sit alongside SQL databases in polyglot-persistent architectures.

ObjectDB is an object database for Java. It can be used in client-server mode and in embedded mode.

The following is provided as an overview of and topical guide to databases:

<span class="mw-page-title-main">SingleStore</span> Database management system

SingleStore is a proprietary, cloud-native database designed for data-intensive applications. A distributed, relational, SQL database management system (RDBMS) that features ANSI SQL support, it is known for speed in data ingest, transaction processing, and query processing.

In the field of database design, a multi-model database is a database management system designed to support multiple data models against a single, integrated backend. In contrast, most database management systems are organized around a single data model that determines how data can be organized, stored, and manipulated. Document, graph, relational, and key–value models are examples of data models that may be supported by a multi-model database.

References

  1. R. G. Cattell; Douglas K. Barry; Mark Berler; Mark Berler; Jeff Eastman; David Jordan; Craig Russell; Olaf Schadow; Torsten Stanienda; Fernando Velez (January 2000). Object Data Standard: ODMG 3.0 . Academic Press. ISBN   1558606475 . Retrieved December 1, 2014.
  2. "Georgetown University taps Objectivity for Big Data research". Government Security News. May 2013. Retrieved December 1, 2014.
  3. "Scaling Objectivity Database Performance with Panasas® Scale-Out NAS Storage" (PDF). August 2011. Retrieved December 1, 2014.
  4. Lessons Learned from Managing a Petabyte Jacek Becla and Daniel L. Wang, 2005
  5. BaBar Database
  6. Angela Guess (February 6, 2013). "Objectivity Launches Objectivity/DB 11.0". DATAVERSITY. Retrieved December 2, 2014.
  7. Philip Howard (May 29, 2012). "Objectivity and InfiniteGraph". Bloor. Retrieved December 1, 2014.
  8. Suzanne W. Dietrich; Susan D. Urban (2011). Fundamentals of Object Databases. Morgan & Claypool Publishers. p. 2. ISBN   9781608454761 . Retrieved December 3, 2014.
  9. Alan Dearle; Roberto V. Zicari, eds. (2010). Objects and Databases, Third International Conference Proceedings, ICOODB. Springer. p. 34. ISBN   978-3642160912 . Retrieved December 3, 2014.
  10. C.S.R Prabhu (2011). Object-Oriented Database Systems - Approaches and Architecture, Third Edition. Asoke K. Ghosh, PHI Learning Private Limited. p. 67. ISBN   9788120340930 . Retrieved December 3, 2014.
  11. "Objectivity: Complex Data-Management, Simplified". Neovise. 2014. Retrieved December 2, 2014.