Content deleted Content added
No edit summary |
m Removed broken references and added more current ones. |
||
Line 10:
<ref name="odmgBook">
{{
cite
|url= http://www.odbms.org/odmg-standard/odmg-book/
|title= Object Data Standard: ODMG 3.0
|author= R. G. Cattell
|date= January 2000
|publisher= Academic Press
|isbn= 1-55860-647-5
|accessdate= December 1, 2014
}}
</ref> The C# and Python interfaces were added subsequently.
Line 23:
== 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 [[scalability|scalable]]
<ref {{
cite web
|url= http://www.gsnmagazine.com/node/29210?c=cyber_security
|title= Georgetown University taps Objectivity for Big Data research
|date= May 2013
|publisher= Government Security News
|accessdate= December 1, 2014
}}
</ref> and [[reliability (engineering)|reliable]]. It has sustained ingest rates in excess of one terabyte per hour while simultaneously supporting data fusion and query operations.
<ref name="panasasPaper">
{{
cite web
|url= http://www.panasas.com/sites/default/files/uploads/docs/panasas_objectivity_wp_lr_1065.pdf
|title= Scaling Objectivity Database Performance with Panasas® Scale-Out NAS Storage
|date= August 2011
|accessdate= December 1, 2014
}}
</ref>
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.<ref>[http://www.slac.stanford.edu/BFROOT/www/Public/Computing/Databases/proceedings/CIDR05.pdf Lessons Learned from Managing a Petabyte] Jacek Becla and Daniel L. Wang, 2005</ref><ref>[http://www.slac.stanford.edu/BFROOT/www/Public/Computing/Databases/ BaBar Database]</ref>
Line 29 ⟶ 48:
Objectivity/DB provides a flexible approach for defining how objects are placed within a given storage hierarchy. 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
<ref name="bloor">
{{
cite web
|url= http://www.bloorresearch.com/analysis/objectivity-infinitegraph/
|title= Objectivity and InfiniteGraph
|author= Philip Howard
|date= May 29, 2012
|publisher= Bloor
|accessdate= December 1, 2014
}}
</ref> The OIDs are also used in support of scalable collections (tree, list, set etc.), indices and [[hash table]]s. Eliminating the relational [[Join]] operations inherent in a relational database gives Objectivity/DB a marked performance advantage, in orders of magnitude.
Objectivity/DB is also different from [[RDBMS]]s 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. Many 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 [[Database schema|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.
|