Object database: Difference between revisions
restoring part of timeline as removed by competing database vendor |
Gamapamani (talk | contribs) m - extra tag |
||
(181 intermediate revisions by more than 100 users not shown) | |||
Line 1: | Line 1: | ||
{{Short description|Type of database management system}} |
|||
[[Image:Object-Oriented Model.svg|thumb|320px|Example of an object-oriented model.<ref name="USDT01">[http://knowledge.fhwa.dot.gov/tam/aashto.nsf/All+Documents/4825476B2B5C687285256B1F00544258/$FILE/DIGloss.pdf Data Integration Glossary], U.S. Department of Transportation, August 2001.</ref>]] |
|||
[[File:Object-Oriented Model.svg|thumb|320px|Example of an object-oriented model<ref name="USDT01">[http://knowledge.fhwa.dot.gov/tam/aashto.nsf/All+Documents/4825476B2B5C687285256B1F00544258/$FILE/DIGloss.pdf Data Integration Glossary] {{webarchive |url=https://web.archive.org/web/20090320001015/http://knowledge.fhwa.dot.gov/tam/aashto.nsf/All+Documents/4825476B2B5C687285256B1F00544258/$FILE/DIGloss.pdf |date=March 20, 2009 }}, U.S. Department of Transportation, August 2001.</ref>]] |
|||
An '''object database''' |
An '''object database''' or '''object-oriented database''' is a [[database management system]] in which information is represented in the form of [[Object (computer science)|objects]] as used in [[object-oriented programming]]. Object databases are different from [[relational database]]s which are table-oriented. A third type, [[object–relational database]]s, is a hybrid of both approaches. |
||
Object databases have been considered since the early 1980s.<ref>[http://odbms.org/Introduction/history.aspx ODBMS.ORG :: Object Database (ODBMS) | Object-Oriented Database (OODBMS) | Free Resource Portal]. ODBMS (2013-08-31). Retrieved on 2013-09-18. {{webarchive |url=https://web.archive.org/web/20140306143204/http://odbms.org/Introduction/history.aspx |date=March 6, 2014 }}</ref> |
|||
Object databases have been considered since the early 1980s and 1990s. Object databases' main usage is in object oriented areas. |
|||
==Overview== |
==Overview== |
||
Object-oriented database management systems (OODBMSs) also called ODBMS (Object Database Management System) combine database capabilities with [[object-oriented programming]] language capabilities. |
|||
When database capabilities are combined with [[object-oriented programming]] language capabilities, the result is an object-oriented database management system (OODBMS). |
|||
OODBMSs allow object-oriented programmers to develop the product, store them as objects, and replicate or modify existing objects to make new objects within the OODBMS. Because the database is integrated with the programming language, the programmer can maintain consistency within one environment, in that both the OODBMS and the programming language will use the same model of representation. Relational DBMS projects, by way of contrast, maintain a clearer division between the [[database model]] and the application. |
|||
As the usage of web-based technology increases with the implementation of Intranets and extranets, companies have a vested interest in OODBMS to display their complex data. Using a DBMS that has been specifically designed to store data as objects gives an advantage to those companies that are geared towards multimedia presentation or organizations that utilize computer-aided design (CAD).<ref>O’Brien, J. A., & Marakas, G. M. (2009). Management Information Systems (9th ed.). New York, NY: |
|||
McGraw-Hill/Irwin |
|||
</ref> |
|||
Some object-oriented databases are designed to work well with [[object-oriented programming language]]s such as [[Object Pascal|Delphi]], [[Ruby (programming language)|Ruby]], [[Python (programming language)|Python]], [[Perl]], [[Java (programming language)|Java]], [[C Sharp (programming language)|C#]], [[Visual Basic .NET]], [[C++]], [[Objective-C]] and [[Smalltalk]]; others have their own programming languages. OODBMSs use exactly the same model as object-oriented programming languages. |
|||
==Industry Disagreement== |
|||
There are two major groups of thought about what qualities are used to describe an OODBMS. The first is when the database supports object inheritance in a similar manner to an [[object-oriented programming]] language, and the second is that the database supports hierarchical data encapsulation in a similar way to [[XML]], [[JSON]] or serialized [[PHP]] objects. |
|||
As the usage of web-based technology increases with the implementation of Intranets and extranets, companies have a vested interest in OODBMSs to display their complex data. Using a DBMS that has been specifically designed to store data as objects gives an advantage to those companies that are geared towards multimedia presentation or organizations that utilize [[computer-aided design]] (CAD).<ref>O’Brien, J. A., & Marakas, G. M. (2009). Management Information Systems (9th ed.). New York, NY: McGraw-Hill/Irwin</ref> |
|||
The first school of thought is, in reality, rare, as the underlying database design is inefficient, since it is often spread over several separate database tables. For example, if class 'Foo' extends class 'Bar', then the data defined within 'Foo' would be within one table and the data for 'Bar' would be within another. This separation is essential as class 'Goo' that also extends class 'Bar' will share the same 'Bar' table. This design then requires multiple reads, lock, logs and writes, and can slow all transactions down. |
|||
Some object-oriented databases are designed to work well with [[object-oriented programming language]]s such as [[Delphi (programming language)|Delphi]], [[Ruby (programming language)|Ruby]], [[Python (programming language)|Python]], [[NodeJS|JavaScript]], [[Perl]], [[Java (programming language)|Java]], [[C Sharp (programming language)|C#]], [[Visual Basic .NET]], [[C++]], [[Objective-C]] and [[Smalltalk]]; others such as [[JADE (programming language)|JADE]] have their own programming languages. OODBMSs use exactly the same model as object-oriented programming languages. |
|||
The second school of thought is often implemented within industry standard SQL databases by using standard text fields; however, this does have the effect of locking away the data held within as [[Sql|SQL]] only understands single or [[Comma-separated values|comma separated values]]. Object databases applying this school of thought will allow for data to be encoded in a hierarchical manner, while still allowing data to be [[Database index|indexed]]. |
|||
==History== |
==History== |
||
Object database management systems grew out of research during the early to mid-1970s into having intrinsic database management support for graph-structured objects. The term "object-oriented database system" first appeared around 1985.<ref>Three example references from 1985 that use the term: T. Atwood, "An Object-Oriented DBMS for Design Support Applications |
Object database management systems grew out of research during the early to mid-1970s into having intrinsic database management support for graph-structured objects. The term "object-oriented database system" first appeared around 1985.<ref>Three example references from 1985 that use the term: T. Atwood, "An Object-Oriented DBMS for Design Support Applications", ''Proceedings of the IEEE COMPINT 85'', pp. 299-307, September 1985; N. Derrett, W. Kent, and P. Lyngbaek, "Some Aspects of Operations in an Object-Oriented Database", ''Database Engineering'', vol. 8, no. 4, IEEE Computer Society, December 1985; D. Maier, A. Otis, and A. Purdy, "Object-Oriented Database Development at Servio Logic", ''Database Engineering'', vol. 18, no.4, December 1985.</ref> Notable research projects included Encore-Ob/Server ([[Brown University]]), EXODUS ([[University of Wisconsin–Madison]]), IRIS (Hewlett-Packard), ODE ([[Bell Labs]]), ORION ([[Microelectronics and Computer Technology Corporation]] or MCC), Vodak (GMD-IPSI), and Zeitgeist (Texas Instruments). The ORION project had more published papers than any of the other efforts. Won Kim of MCC compiled the best of those papers in a book published by The MIT Press.<ref>Kim, Won. ''Introduction to Object-Oriented Databases. '' The MIT Press, 1990. {{ISBN|0-262-11124-1}}</ref> |
||
Early commercial products included [[GemStone Systems|Gemstone]] (Servio Logic, name changed to GemStone Systems), Gbase (Graphael), and Vbase (Ontologic). |
Early commercial products included [[GemStone Systems|Gemstone]] (Servio Logic, name changed to GemStone Systems), Gbase (Graphael), and Vbase (Ontologic). Additional commercial products entered the market in the late 1980s through the mid 1990s. These included ITASCA (Itasca Systems), Jasmine (Fujitsu, marketed by Computer Associates), Matisse (Matisse Software), [[Objectivity/DB]] (Objectivity, Inc.), [[ObjectStore]] ([[Progress Software]], acquired from eXcelon which was originally [[Object Design, Incorporated]]), ONTOS (Ontos, Inc., name changed from Ontologic), O<sub>2</sub><ref>Bancilhon, Francois; Delobel, Claude; and Kanellakis, Paris. ''Building an Object-Oriented Database System: The Story of O<sub>2</sub>.'' Morgan Kaufmann Publishers, 1992. {{ISBN|1-55860-169-4}}.</ref> (O<sub>2</sub> Technology, merged with several companies, acquired by [[Informix]], which was in turn acquired by [[IBM]]), POET (now [http://www.versant.com/developer FastObjects] from Versant which acquired Poet Software), Versant Object Database ([http://www.versant.com Versant] Corporation), VOSS (Logic Arts) and [[JADE (programming language)|JADE]] (Jade Software Corporation). Some of these products remain on the market and have been joined by new open source and commercial products such as [[InterSystems Caché]]. |
||
Object database management systems added the concept of [[persistence (computer science)|persistence]] to object programming languages. The early commercial products were integrated with various languages: GemStone ([[Smalltalk]]), Gbase ([[LISP programming language|LISP]]), Vbase ([[C Object Processor|COP]]) and VOSS (Virtual Object Storage System for [[Smalltalk]]). For much of the 1990s, [[C++]] dominated the commercial object database management market. Vendors added [[Java programming language|Java]] in the late 1990s and more recently, [[C Sharp (programming language)|C#]]. |
Object database management systems added the concept of [[persistence (computer science)|persistence]] to object programming languages. The early commercial products were integrated with various languages: GemStone ([[Smalltalk]]), Gbase ([[LISP programming language|LISP]]), Vbase ([[C Object Processor|COP]]) and VOSS (Virtual Object Storage System for [[Smalltalk]]). For much of the 1990s, [[C++]] dominated the commercial object database management market. Vendors added [[Java programming language|Java]] in the late 1990s and more recently, [[C Sharp (programming language)|C#]]. |
||
Starting in 2004, object databases have seen a second growth period when [[open source]] object databases emerged that were widely affordable and easy to use, because they are entirely written in OOP languages like Smalltalk, Java or C#, such as Versant's [[db4o]] (db4objects), DTS/S1 from Obsidian Dynamics and [[Perst]] (McObject), available under dual [[open source]] and commercial licensing. |
Starting in 2004, object databases have seen a second growth period when [[Open-source software|open source]] object databases emerged that were widely affordable and easy to use, because they are entirely written in [[Object-oriented programming|OOP]] languages like Smalltalk, Java, or C#, such as Versant's [[db4o]] (db4objects), DTS/S1 from Obsidian Dynamics and [[Perst]] (McObject), available under dual [[Open-source license|open source]] and commercial licensing. |
||
==Timeline== |
==Timeline== |
||
* 1966 |
|||
** [[MUMPS]] |
|||
* 1979 |
|||
** [[InterSystems]] M |
|||
* 1980 |
|||
** TORNADO – an object database for [[CAD/CAM]]<ref>{{cite journal|last1=Ulfsby|title=TORNADO: a DBMS for CAD/CAM systems|journal=[[Computer-Aided Design Journal|Computer-Aided Design]]|date=July 1981|volume=13|issue=4|pages=193–197|display-authors=etal|doi=10.1016/0010-4485(81)90140-8}}</ref> |
|||
* 1982 |
|||
** [[Gemstone (database)|Gemstone]] started (as Servio Logic) to build a set theoretic model data base machine. |
|||
* 1985 – Term Object Database first introduced |
* 1985 – Term Object Database first introduced |
||
* 1986 |
|||
** Servio Logic (Gemstone Systems) Ships Gemstone 1.0 |
|||
* 1988 |
* 1988 |
||
** [[Object Design, Incorporated]] founded, development of [[ObjectStore]] begun |
|||
** [[Versant Corporation]] started (as Object Sciences Corp) |
** [[Versant Corporation]] started (as Object Sciences Corp) |
||
** Objectivity, Inc. founded |
** Objectivity, Inc. founded |
||
* Early 1990s |
* Early 1990s |
||
** Servio Logic changes name to Gemstone Systems |
|||
** [[Gemstone (database)|Gemstone]] ([[Smalltalk]])-([[C++]])-([[Java (programming language)|Java]]) |
** [[Gemstone (database)|Gemstone]] ([[Smalltalk]])-([[C++]])-([[Java (programming language)|Java]]) |
||
** GBase ([[LISP]]) |
** GBase ([[LISP]]) |
||
** VBase (O2- ONTOS – INFORMIX) |
** VBase (O2- ONTOS – INFORMIX) |
||
** [[ |
** [[Objectivity/DB]] |
||
* Mid |
* Mid 1990s |
||
** [[InterSystems Caché]] |
|||
** [[Versant Object Database]] |
** [[Versant Object Database]] |
||
** [[ObjectStore]] |
|||
** [[ODABA]] |
** [[ODABA]] |
||
** [[Zope Object Database|ZODB]] |
|||
** Poet |
** Poet |
||
** [[JADE (programming language)|JADE]] |
|||
** Jade |
|||
** Matisse |
** Matisse |
||
** Illustra [[Informix]] |
|||
* 2000’s |
|||
* 2000s |
|||
**[[Zope Object Database|ZODB]] |
|||
** [https://www.researchgate.net/publication/242787423_l-DB_an_ODMG-based_object-oriented_DBMS lambda-DB:] An ODMG-Based Object-Oriented DBMS by Leonidas Fegaras, Chandrasekhar Srinivasan, Arvind Rajendran, David Maier |
|||
** [[InterSystems Caché|Caché]] |
|||
** [[db4o]] project started by Carl Rosenberger |
** [[db4o]] project started by Carl Rosenberger |
||
** [[ObjectDB]] |
** [[ObjectDB]] |
||
* 2001 [[IBM]] acquires Informix |
|||
* 2001 |
|||
* 2003 [[ObjectDatabase++|odbpp]] public release |
|||
** [[IBM]] acquires [[Informix]] (Illustra) integrates with [[IBM DB2|DB2]] |
|||
* 2004 db4o's commercial launch as db4objects, Inc. |
|||
** db4o shipped to first pilot customer |
|||
* 2008 db4o acquired by [[Versant Corporation]] |
|||
* 2003 - [[ObjectDatabase++|odbpp]] public release |
|||
* 2010 [[VMware]] acquires GemStone<ref>{{Cite web|url=http://www.vmware.com/company/news/releases/spring-gemstone.html|title=SpringSource to Acquire Gemstone Systems Data Management Technology|date=May 6, 2010|access-date=August 5, 2014|publisher=WMware|url-status=dead|archive-url=https://web.archive.org/web/20140808042307/http://www.vmware.com/company/news/releases/spring-gemstone.html|archive-date=August 8, 2014}}</ref> |
|||
* 2004 - db4o's commercial launch as db4objects, Inc. |
|||
* 2011 db4o's development stopped. |
|||
* 2008 - db4o acquired by [[Versant Corporation]] |
|||
* 2012 Wakanda first production versions with open source and commercial licenses |
|||
* 2011 |
|||
* 2012 [[Actian]] acquires Versant Corporation |
|||
** [[Wakanda (software)|Wakanda]] public Developer Preview & Beta verions |
|||
* 2013 GemTalk Systems acquires [[Gemstone (database)|Gemstone]] products from VMware<ref name=gemtalk1>{{Cite web|url=http://www.prweb.com/releases/gemtalksystems/acquires-gemstone-s/prweb10652596.htm|author=GemTalk Systems|publisher=PRWeb|date=May 2, 2013|title=GemTalk Systems Acquires GemStone/S Products from VMware|access-date=August 5, 2014|url-status=dead|archive-url=https://web.archive.org/web/20140810224807/http://www.prweb.com/releases/gemtalksystems/acquires-gemstone-s/prweb10652596.htm|archive-date=August 10, 2014}}</ref> |
|||
** Gemstone acquired by [[VMware]] (at that time property of Springsource) |
|||
* 2014 db4o's commercial offering is officially discontinued by Actian (which had acquired Versant)<ref>{{cite web|url=http://supportservices-old.actian.com/versant/default.html|title=restructuring our Versant Community Website}}</ref> |
|||
* 2012 |
|||
* 2014 [[Realm (database)|Realm]]<ref>{{cite web|url=https://www.infoq.com/news/2016/11/Realm-database-nodejs|title=Realm Releases Object Database for Node.js|website=InfoQ|url-status=live|archive-url=https://web.archive.org/web/20170202043544/https://www.infoq.com/news/2016/11/Realm-database-nodejs|archive-date=2017-02-02}}</ref> |
|||
** [http://www.velocitydb.com VelocityDB] for the .NET platform. |
|||
*2017 ObjectBox<ref>{{Cite web|last=DB-Engines|title=Object Database Ranking on DB-Engines|url=https://db-engines.com/en/ranking/object+oriented+dbms|access-date=2021-05-21|website=DB-Engines}}</ref> |
|||
==Adoption of object databases== |
|||
==Adoption of object databases== |
|||
Object databases based on persistent programming acquired a niche in application areas such as |
Object databases based on persistent programming acquired a niche in application areas such as |
||
engineering and [[Object-based spatial database|spatial databases]], [[telecommunications]], and scientific areas such as [[Particle physics|high energy physics]] and [[molecular biology]]. |
engineering and [[Object-based spatial database|spatial databases]], [[telecommunications]], and scientific areas such as [[Particle physics|high energy physics]]<ref>{{Cite web|url=https://www.service-architecture.com/articles/object-oriented-databases/stanford-linear-accelerator.html|title = Stanford Linear Accelerator (SLAC)}}</ref> and [[molecular biology]].<ref>{{Cite book|chapter-url=https://dl.acm.org/doi/10.1145/157709.157747|doi = 10.1145/157709.157747|chapter = Integration of molecular biology data collections using object oriented databases and programming|title = Addendum to the proceedings on Object-oriented programming systems, languages, and applications (Addendum) - OOPSLA '92|year = 1992|last1 = Herde|first1 = Patrick|last2 = Sibbald|first2 = Peter R.|pages = 177–178|isbn = 0897916107|s2cid = 45269462}}</ref> |
||
Another group of object databases focuses on embedded use in devices, packaged software, and [[Real-time computing|real-time]] systems. |
Another group of object databases focuses on embedded use in devices, packaged software, and [[Real-time computing|real-time]] systems. |
||
==Technical features== |
==Technical features== |
||
Most object databases also offer some kind of [[query language]], allowing objects to be found using a [[declarative programming]] approach. It is in the area of object query languages, and the integration of the query and navigational interfaces, that the biggest differences between products are found. An attempt at standardization was made by the [[Object Data Management Group|ODMG]] with the [[Object Query Language]], OQL. |
|||
Access to data can be faster because an object can be retrieved directly without a search, by following [[Pointer (computer programming)|pointers]]. |
|||
Most object databases also offer some kind of [[query language]], allowing objects to be found by a more [[declarative programming]] approach. It is in the area of object query languages, and the integration of the query and navigational interfaces, that the biggest differences between products are found. An attempt at standardization was made by the [[Object Data Management Group|ODMG]] with the [[Object Query Language]], OQL. |
|||
Access to data can be faster because [[Join (SQL)|joins]] are often not needed (as in a tabular implementation of a [[relational database]]). This is because an object can be retrieved directly without a search, by following pointers. |
|||
Another area of variation between products is in the way that the schema of a database is defined. A general characteristic, however, is that the programming language and the database schema use the same type definitions. |
Another area of variation between products is in the way that the schema of a database is defined. A general characteristic, however, is that the programming language and the database schema use the same type definitions. |
||
Line 82: | Line 85: | ||
Multimedia applications are facilitated because the class methods associated with the data are responsible for its correct interpretation. |
Multimedia applications are facilitated because the class methods associated with the data are responsible for its correct interpretation. |
||
Many object databases, for example Gemstone or VOSS, offer support for [[versioning]]. An object can be viewed as the set of all its versions. Also, object versions can be treated as objects in their own right. Some object databases also provide systematic support for [[database trigger|trigger]]s and constraints which are the basis of [[active database]]s. |
Many object databases, for example Gemstone or VOSS, offer support for [[Version control|versioning]]. An object can be viewed as the set of all its versions. Also, object versions can be treated as objects in their own right. Some object databases also provide systematic support for [[database trigger|trigger]]s and constraints which are the basis of [[active database]]s. |
||
The efficiency of such a database is also greatly improved in areas which demand massive amounts of data about one item. For example, a banking institution could get the user's account information and provide them efficiently with extensive information such as transactions, account information entries etc. The [[Big O Notation]] for such a database paradigm drops from O(n) to O(1), greatly increasing efficiency in these specific cases. |
|||
==ODBMS Characteristics== |
|||
{{cleanup section|date=October 2011}} |
|||
Object database systems commonly possess these characteristics, a certain subset of which are mandatory for being considered an "object database". |
|||
===Major=== |
|||
These are features which are common to many ODBMS's and are considered central to their respective implementing systems. |
|||
* '''Persistence''': Like any database, it must have the ability to insure the data's survival between sessions, after shutdown and subsequent restart of the server software/hardware. |
|||
* '''Object Identity''': It is important that each object is uniquely identified across the whole database. Each object must be able to be addressed and accessed by this unique identity. It can be externally visible as a variable, name, id, or it can be internal, such as the primary memory address at which the object resides (which has very limited scalability). |
|||
* '''Encapsulation''': Encapsulation mandates two separate views of an object: the programming language view and the database adaptation of that view. Encapsulation is the representation of a data object by its attributes and the various methods specified to manipulate and interact with that data object. In this, the operations performed on the data objects are visible but the data and the implementation are hidden in those objects. |
|||
* '''Computational completeness''': This property says that we can define or implement any kind of computable function for the ODB, using DML of database system. Computational complete system almost gives all the operation implementation. |
|||
* '''Complex Objects''': Complex objects are built by using the basic data objects like integers, strings, reals, and booleans. There are various complex data objects such as array, list, indices, tuples, etc. We can define methods to manipulate these new complex types. |
|||
* '''Extensibility''': Any database system has its own predefined set of data types which we can use to build new types (see Complex Objects), but a purely extensible system is designed such that there are no logical differences between built-in (or 'primitive') data types and 'custom' data types, though there may be strong differences in the way the two are implemented. |
|||
* '''Types and Classes''': '''Type''' refers to the particular set of Objects in the system, which has two parts, the interface and the implementation. Generally, interfaces are visible to the user and the implementations are hidden. A '''Class''' is a template for creating objects of a particular type, having their own implementations. The new objects can be created by performing the [[Instance (computer science)|instantiation]] or ''new'' operation on the class. |
|||
* '''Inheritance''': Inheritance is often considered one of the most important features of the object database, as it clearly defines the hierarchical relationships between different types of objects at different levels and provides code reusability. It helps in separating the specifications and implementations of the system at a high level, as well as in sharing the overall intended structure of the data in a team setting. |
|||
* '''Overriding and overloading''': The intentional use of the same name for multiple implementations of an object's method or operation to represent the same data in different ways, for conciseness when multiple similar operations are involved, and/or to alter the implementation of an inherited method to make it more suitable for the narrower definition of the object's data. |
|||
* '''Secondary storage management''': Unlike relational databases, the lower-level management considerations of the data are separated from the logical data definition for clarity in design, ease of programming in the accessing application, and separation of concerns in administration. Examples include data clustering, indexing/keying, query optimization, data buffering and access path selection. These are all invisible to the application[s] using the database. It has two levels of management: logical and physical. |
|||
* '''Transactions and Concurrency''': Modifications should be grouped into logical 'transactions' both for concurrency and rollback. Concurrency: multiple simultaneous accesses to the database which don't conflict with each other should be able to actually execute simultaneously (to some degree). Rollback: if, during the transaction, the application decides to cancel the transaction, the system should be able to logically 'undo' any modifications already made during it. Another provision commonly granted by transactions is atomicity—the insurance that if not all of the modifications in the transaction are completed, none of them will be (by effectively rolling back the partial transaction). |
|||
* '''Recovery''': In the case of a catastrophic software or hardware failure, barring excessive data corruption, the system must later recover itself into a well-defined state, though usually at the expense of some of the data currently in-use at the time.<ref>K.R. Dittrich, ``Object-Oriented Database System : The Notions and the issues'', in : Dittrich, K.R. and Dayal, U. (eds): Proceedings of the 1986 International Workshop on Object-Oriented Database Systems, IEEE Computer Science Press</ref><ref>K. R. Dittrich, ``Preface'', In : Dittrich, K.R. (ed): Advances in Object-Oriented Database Systems, Lecture Notes in Computer Science, Vol, 334, Springer-Verlag, 1988</ref><ref>W. Kim, ``A foundation for object-oriented databases'', MCC Technical Report, 1988</ref> |
|||
===Ancillary=== |
|||
This category includes ancillary features which can be added to give the object database greater functionality and applicability. |
|||
* Type checking and inference |
|||
* Distribution |
|||
* Design transactions |
|||
* Versioning of data (objects) |
|||
===Meta=== |
|||
This category deals with implementation issues and holistic system issues. |
|||
The efficiency of such a database is also greatly improved in areas which demand massive amounts of data about one item. For example, a banking institution could get the user's account information and provide them efficiently with extensive information such as transactions, account information entries etc. |
|||
* System |
|||
* Programming paradigm |
|||
* Representation system |
|||
* Uniformity |
|||
==Standards== |
==Standards== |
||
The [[Object Data Management Group]] was a consortium of object database and |
The [[Object Data Management Group]] was a consortium of object database and object–relational mapping vendors, members of the academic community, and interested parties. Its goal was to create a set of specifications that would allow for portable applications that store objects in database management systems. It published several versions of its specification. The last release was ODMG 3.0. By 2001, most of the major object database and object–relational mapping vendors claimed conformance to the ODMG Java Language Binding. Compliance to the other components of the specification was mixed. In 2001, the ODMG Java Language Binding was submitted to the [[Java Community Process]] as a basis for the [[Java Data Objects]] specification. The ODMG member companies then decided to concentrate their efforts on the Java Data Objects specification. As a result, the ODMG disbanded in 2001. |
||
Many object database ideas were also absorbed into [[SQL:1999]] and have been implemented in varying degrees in [[ |
Many object database ideas were also absorbed into [[SQL:1999]] and have been implemented in varying degrees in [[object–relational database]] products. |
||
In 2005 Cook, Rai, and Rosenberger proposed to drop all standardization efforts to introduce additional object-oriented query APIs but rather use the OO programming language itself, i.e., Java and .NET, to express queries. As a result, [[Native Queries]] emerged. |
In 2005 Cook, Rai, and Rosenberger proposed to drop all standardization efforts to introduce additional object-oriented query APIs but rather use the OO programming language itself, i.e., Java and .NET, to express queries. As a result, [[Native Queries]] emerged. Similarly, Microsoft announced [[Language Integrated Query]] (LINQ) and DLINQ, an implementation of LINQ, in September 2005, to provide close, language-integrated database query capabilities with its programming languages C# and VB.NET 9. |
||
In February 2006, the [[Object Management Group]] (OMG) announced that they had been granted the right to develop new specifications based on the ODMG 3.0 specification and the formation of the Object Database Technology Working Group (ODBT WG). The ODBT WG planned to create a set of standards that would incorporate advances in object database technology (e.g., replication), data management (e.g., spatial indexing), and data formats (e.g., XML) and to include new features into these standards that support domains where object databases are being adopted (e.g., real-time systems). The work of the ODBT WG was suspended in March 2009 when, subsequent to the economic turmoil in late 2008, the ODB vendors involved in this effort decided to focus their resources elsewhere. |
In February 2006, the [[Object Management Group]] (OMG) announced that they had been granted the right to develop new specifications based on the ODMG 3.0 specification and the formation of the Object Database Technology Working Group (ODBT WG). The ODBT WG planned to create a set of standards that would incorporate advances in object database technology (e.g., replication), data management (e.g., spatial indexing), and data formats (e.g., XML) and to include new features into these standards that support domains where object databases are being adopted (e.g., real-time systems). The work of the ODBT WG was suspended in March 2009 when, subsequent to the economic turmoil in late 2008, the ODB vendors involved in this effort decided to focus their resources elsewhere. |
||
In January 2007 the [[ |
In January 2007 the [[World Wide Web Consortium]] gave final recommendation status to the [[XQuery]] language. XQuery uses [[XML]] as its data model. Some of the ideas developed originally for object databases found their way into XQuery, but XQuery is not intrinsically object-oriented. Because of the popularity of XML, XQuery engines compete with object databases as a vehicle for storage of data that is too complex or variable to hold conveniently in a relational database. XQuery also allows modules to be written to provide encapsulation features that have been provided by Object-Oriented systems. |
||
[[XQuery|XQuery v1]] and [[XPath 2.0|XPath v2]] and later are powerful and are available in both open source and libre (FOSS) software,<ref>{{cite web|url=https://basex.org/basex/xquery/|title=BaseX XQuery Processor|website=basex.org|url-status=live|archive-url=https://web.archive.org/web/20231216035330/https://basex.org/basex/xquery/|archive-date=2023-12-16}}</ref><ref>{{cite web|url=https://exist-db.org/exist/apps/doc/xquery|title=XQuery in eXist-db|website=exist-db.org|url-status=live|archive-url=https://web.archive.org/web/20231202052435/https://exist-db.org/exist/apps/doc/xquery|archive-date=2023-12-02}}</ref><ref>{{cite web|url=https://www.saxonica.com/html/documentation/using-xquery/index.html|title=Saxon - Using XQuery|website=www.saxonica.com|url-status=live|archive-url=https://web.archive.org/web/20200923004515/https://www.saxonica.com/html/documentation/using-xquery/index.html|archive-date=2020-09-23}}</ref> as well as in commercial systems. They are easy to learn and use, and very powerful and fast. They are not relational and XQuery is not based on SQL (although one of the people who designed XQuery also co-invented SQL). But they are also not object-oriented, in the programming sense: XQuery does not use encapsulation with hiding, implicit dispatch, and classes and methods. XQuery databases generally use XML and JSON as an interchange format, although other formats are used. |
|||
==Comparison with RDBMSs== |
|||
{{Original research|section|date=October 2008}} |
|||
An object database stores complex data and relationships between data directly, without mapping to relational rows and columns, and this makes them suitable for applications dealing with very complex data.<ref>{{Cite journal | last=Radding | first=Alan | year=1995 | title=So what the Hell is ODBMS? | journal=Computerworld | volume=29 | issue=45 | pages=121–122, 129}}</ref> Objects have a many to many relationship and are accessed by the use of pointers. Pointers are linked to objects to establish relationships. Another benefit of an OODBMS is that it can be programmed with small procedural differences without affecting the entire system.<ref>Burleson, Donald. (1994). OODBMSs gaining MIS ground but RDBMSs still own the road. Software Magazine, 14(11), 63</ref> This is most helpful for those organizations that have data relationships that are not entirely clear or need to change these relations to satisfy the new business requirements. |
|||
Since the early 2000s [[JSON]] has gained community adoption and popularity in applications where developers are in control of the data format. [[JSONiq]], a query-analog of XQuery for JSON (sharing XQuery's core expressions and operations), demonstrated the functional equivalence of the JSON and XML formats for data-oriented information. In this context, the main strategy of OODBMS maintainers was to retrofit JSON to their databases (by using it as the internal data type). |
|||
Potential advantages: |
|||
*Objects don't require assembly and disassembly saving coding time and execution time to assemble or disassemble objects. |
|||
*Reduced paging. |
|||
*Easier navigation. |
|||
*Better concurrency control - a hierarchy of objects may be locked. |
|||
*Data model is based on the real world. |
|||
*Works well for distributed architectures. |
|||
*Less code required when applications are object oriented. |
|||
Potential disadvantages: |
|||
*Lower efficiency when data is simple and relationships are simple. |
|||
*Relational tables are simpler. |
|||
*Late binding may slow access speed. |
|||
*More user tools exist for RDBMS. |
|||
*Standards for RDBMS are more stable. |
|||
*Support for RDBMS is more certain and change is less likely to be required. |
|||
In January 2016, with the [[PostgreSQL|PostgreSQL 9.5 release]]<ref>{{cite web|url=https://www.postgresql.org/docs/current/enwiki/static/functions-json.html|title=PostgreSQL: Documentation: 10: 9.15. JSON Functions and Operators|website=www.postgresql.org|url-status=live|archive-url=https://web.archive.org/web/20160518071030/http://www.postgresql.org/docs/current/enwiki/static/functions-json.html|archive-date=2016-05-18}}</ref> was the first FOSS OODBMS to offer an efficient JSON internal datatype (JSONB) with a complete set of functions and operations, for all basic relational and non-relational manipulations. |
|||
==Object-Oriented Database Query== |
|||
Object oriented databases use [[SQL]] query language like notations to express the queries which is called as [[Object Query Language]] (OQL).<ref>R. G. G. Cattell, Douglas K. Barry, Mark Berler, Jeff Eastman, David Jordan, Craig Russell, Olaf Schadow, Torsten Stanienda, and Fernando Velez. The Object Data Standard: ODMG 3.0. Morgan Kaufman, San Francisco, CA, 2000.</ref> OQL supports all the mandatory features or characteristics of ODBMS to make efficient object database systems. It supports complex data objects, path expressions, operation invocation, inheritance, object extensions for object identity. OQL is a very efficient way of expressing object queries, it keeps object's integrity by using objects implemented methods, rather than its own operations. OQL can also be embedded in other languages like [[C++]], [[Java programming language|Java]],... |
|||
''"OQL is a functional (expression-oriented) language, in which each query is a typed expression (type can be atomic object,collection object, or literal)"''. OQL doesn't have explicit update operations, like insert, delete to update database. But as an alternative, it can invoke state-altering methods, create(), add(), and delete(), etc., to get similar functions. |
|||
For example, |
|||
==Comparison with RDBMSs== |
|||
Employee (name: ‘‘Ram Sharma", birth date: 11/26/1985, salary: 10000); |
|||
An object database stores complex data and relationships between data directly, without mapping to relational [[Row (database)|rows]] and [[Column (database)|columns]], and this makes them suitable for applications dealing with very complex data.<ref>{{Cite journal | last=Radding | first=Alan | year=1995 | title=So what the Hell is ODBMS? | journal=Computerworld | volume=29 | issue=45 | pages=121–122, 129}}</ref> Objects have a many-to-many relationship and are accessed by the use of pointers. Pointers are linked to objects to establish relationships. Another benefit of an OODBMS is that it can be programmed with small procedural differences without affecting the entire system.<ref>Burleson, Donald. (1994). OODBMSs gaining MIS ground but RDBMSs still own the road. Software Magazine, 14(11), 63</ref> |
|||
creates a new Employee object with necessary attributes data. |
|||
Like SQL we can write separate function to perform certain task. |
|||
* ''Polymorphism'' : OQL supports the polymorphism feature of the object-oriented programming. The various classes can have same attributes and method implementations which are in same hierarchy. |
|||
For example, the Employee class has an attribute named activities implemented as an array of Strings. Its subclass Manager also has a method named activities that overrides inheritance of the Employee attribute. |
|||
==See also== |
==See also== |
||
* [[Comparison of object database management systems]] |
|||
*[[Zope Object Database]] |
|||
*[[ |
* [[Component-oriented database]] |
||
*[[ |
* [[EDA database]] |
||
* [[Enterprise Objects Framework]] |
|||
*[[Comparison of object database management systems]] |
|||
* [[NoSQL]] |
|||
*[[Enterprise Objects Framework]] |
|||
*[[Object Data Management Group]] |
* [[Object Data Management Group]] |
||
* [[Object–relational database]] |
|||
*[[Persistence (computer science)]] |
|||
* [[Persistence (computer science)]] |
|||
*[[Relational model]] |
|||
*[[ |
* [[Relational model]] |
||
*[[ |
* [[Relational database management system]] (RDbMS) |
||
*[[ObjectDatabase++]] |
|||
==References== |
==References== |
||
{{Reflist}} |
{{Reflist|30em}} |
||
==External links== |
==External links== |
||
*[http://www.odbms.org/ Object DBMS resource portal] |
* [http://www.odbms.org/ Object DBMS resource portal] |
||
* [http://db-engines.com/en/ranking/object+oriented+dbms Ranking of Object Oriented DBMS] - by popularity, updated monthly from [[DB-Engines ranking|DB-Engines]] |
|||
*[http://sourceforge.net/projects/benchmark/ Database Benchmark (open source)] |
|||
{{Database models}} |
{{Database models}} |
||
{{Authority control}} |
|||
{{DEFAULTSORT:Object Database}} |
{{DEFAULTSORT:Object Database}} |
||
Line 196: | Line 136: | ||
[[Category:Database models]] |
[[Category:Database models]] |
||
[[Category:Object-oriented database management systems| ]] |
[[Category:Object-oriented database management systems| ]] |
||
[[Category:Types of databases]] |
|||
[[ar:قاعدة البيانات الكائنية]] |
|||
[[de:Objektdatenbank]] |
|||
[[el:Αντικειμενοστραφείς βάσεις δεδομένων]] |
|||
[[es:Base de datos orientada a objetos]] |
|||
[[fa:پایگاه داده شیگرا]] |
|||
[[fr:Base de données orientée objet]] |
|||
[[ko:객체 지향 데이터베이스]] |
|||
[[it:Base di dati a oggetti]] |
|||
[[ky:Обжектке багытталган берилиштер базасы]] |
|||
[[lv:Objektu datubāze]] |
|||
[[hu:Objektumorientált adatmodell]] |
|||
[[nl:Objectgeoriënteerde database]] |
|||
[[ja:オブジェクトデータベース]] |
|||
[[no:Objektdatabase]] |
|||
[[pl:Obiektowa baza danych]] |
|||
[[pt:Banco de dados orientado a objetos]] |
|||
[[ru:Объектно-ориентированная база данных]] |
|||
[[zh:对象数据库]] |
Latest revision as of 04:16, 10 November 2024
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.[2]
Overview
[edit]Object-oriented database management systems (OODBMSs) also called ODBMS (Object Database Management System) combine database capabilities with object-oriented programming language capabilities. OODBMSs allow object-oriented programmers to develop the product, store them as objects, and replicate or modify existing objects to make new objects within the OODBMS. Because the database is integrated with the programming language, the programmer can maintain consistency within one environment, in that both the OODBMS and the programming language will use the same model of representation. Relational DBMS projects, by way of contrast, maintain a clearer division between the database model and the application.
As the usage of web-based technology increases with the implementation of Intranets and extranets, companies have a vested interest in OODBMSs to display their complex data. Using a DBMS that has been specifically designed to store data as objects gives an advantage to those companies that are geared towards multimedia presentation or organizations that utilize computer-aided design (CAD).[3]
Some object-oriented databases are designed to work well with object-oriented programming languages such as Delphi, Ruby, Python, JavaScript, Perl, Java, C#, Visual Basic .NET, C++, Objective-C and Smalltalk; others such as JADE have their own programming languages. OODBMSs use exactly the same model as object-oriented programming languages.
History
[edit]Object database management systems grew out of research during the early to mid-1970s into having intrinsic database management support for graph-structured objects. The term "object-oriented database system" first appeared around 1985.[4] Notable research projects included Encore-Ob/Server (Brown University), EXODUS (University of Wisconsin–Madison), IRIS (Hewlett-Packard), ODE (Bell Labs), ORION (Microelectronics and Computer Technology Corporation or MCC), Vodak (GMD-IPSI), and Zeitgeist (Texas Instruments). The ORION project had more published papers than any of the other efforts. Won Kim of MCC compiled the best of those papers in a book published by The MIT Press.[5]
Early commercial products included Gemstone (Servio Logic, name changed to GemStone Systems), Gbase (Graphael), and Vbase (Ontologic). Additional commercial products entered the market in the late 1980s through the mid 1990s. These included ITASCA (Itasca Systems), Jasmine (Fujitsu, marketed by Computer Associates), Matisse (Matisse Software), Objectivity/DB (Objectivity, Inc.), ObjectStore (Progress Software, acquired from eXcelon which was originally Object Design, Incorporated), ONTOS (Ontos, Inc., name changed from Ontologic), O2[6] (O2 Technology, merged with several companies, acquired by Informix, which was in turn acquired by IBM), POET (now FastObjects from Versant which acquired Poet Software), Versant Object Database (Versant Corporation), VOSS (Logic Arts) and JADE (Jade Software Corporation). Some of these products remain on the market and have been joined by new open source and commercial products such as InterSystems Caché.
Object database management systems added the concept of persistence to object programming languages. The early commercial products were integrated with various languages: GemStone (Smalltalk), Gbase (LISP), Vbase (COP) and VOSS (Virtual Object Storage System for Smalltalk). For much of the 1990s, C++ dominated the commercial object database management market. Vendors added Java in the late 1990s and more recently, C#.
Starting in 2004, object databases have seen a second growth period when open source object databases emerged that were widely affordable and easy to use, because they are entirely written in OOP languages like Smalltalk, Java, or C#, such as Versant's db4o (db4objects), DTS/S1 from Obsidian Dynamics and Perst (McObject), available under dual open source and commercial licensing.
Timeline
[edit]- 1966
- 1979
- 1980
- 1982
- Gemstone started (as Servio Logic) to build a set theoretic model data base machine.
- 1985 – Term Object Database first introduced
- 1986
- Servio Logic (Gemstone Systems) Ships Gemstone 1.0
- 1988
- Object Design, Incorporated founded, development of ObjectStore begun
- Versant Corporation started (as Object Sciences Corp)
- Objectivity, Inc. founded
- Early 1990s
- Mid 1990s
- InterSystems Caché
- Versant Object Database
- ODABA
- ZODB
- Poet
- JADE
- Matisse
- Illustra Informix
- 2000s
- lambda-DB: An ODMG-Based Object-Oriented DBMS by Leonidas Fegaras, Chandrasekhar Srinivasan, Arvind Rajendran, David Maier
- db4o project started by Carl Rosenberger
- ObjectDB
- 2001 IBM acquires Informix
- 2003 odbpp public release
- 2004 db4o's commercial launch as db4objects, Inc.
- 2008 db4o acquired by Versant Corporation
- 2010 VMware acquires GemStone[8]
- 2011 db4o's development stopped.
- 2012 Wakanda first production versions with open source and commercial licenses
- 2012 Actian acquires Versant Corporation
- 2013 GemTalk Systems acquires Gemstone products from VMware[9]
- 2014 db4o's commercial offering is officially discontinued by Actian (which had acquired Versant)[10]
- 2014 Realm[11]
- 2017 ObjectBox[12]
Adoption of object databases
[edit]Object databases based on persistent programming acquired a niche in application areas such as engineering and spatial databases, telecommunications, and scientific areas such as high energy physics[13] and molecular biology.[14]
Another group of object databases focuses on embedded use in devices, packaged software, and real-time systems.
Technical features
[edit]Most object databases also offer some kind of query language, allowing objects to be found using a declarative programming approach. It is in the area of object query languages, and the integration of the query and navigational interfaces, that the biggest differences between products are found. An attempt at standardization was made by the ODMG with the Object Query Language, OQL.
Access to data can be faster because an object can be retrieved directly without a search, by following pointers.
Another area of variation between products is in the way that the schema of a database is defined. A general characteristic, however, is that the programming language and the database schema use the same type definitions.
Multimedia applications are facilitated because the class methods associated with the data are responsible for its correct interpretation.
Many object databases, for example Gemstone or VOSS, offer support for versioning. An object can be viewed as the set of all its versions. Also, object versions can be treated as objects in their own right. Some object databases also provide systematic support for triggers and constraints which are the basis of active databases.
The efficiency of such a database is also greatly improved in areas which demand massive amounts of data about one item. For example, a banking institution could get the user's account information and provide them efficiently with extensive information such as transactions, account information entries etc.
Standards
[edit]The Object Data Management Group was a consortium of object database and object–relational mapping vendors, members of the academic community, and interested parties. Its goal was to create a set of specifications that would allow for portable applications that store objects in database management systems. It published several versions of its specification. The last release was ODMG 3.0. By 2001, most of the major object database and object–relational mapping vendors claimed conformance to the ODMG Java Language Binding. Compliance to the other components of the specification was mixed. In 2001, the ODMG Java Language Binding was submitted to the Java Community Process as a basis for the Java Data Objects specification. The ODMG member companies then decided to concentrate their efforts on the Java Data Objects specification. As a result, the ODMG disbanded in 2001.
Many object database ideas were also absorbed into SQL:1999 and have been implemented in varying degrees in object–relational database products.
In 2005 Cook, Rai, and Rosenberger proposed to drop all standardization efforts to introduce additional object-oriented query APIs but rather use the OO programming language itself, i.e., Java and .NET, to express queries. As a result, Native Queries emerged. Similarly, Microsoft announced Language Integrated Query (LINQ) and DLINQ, an implementation of LINQ, in September 2005, to provide close, language-integrated database query capabilities with its programming languages C# and VB.NET 9.
In February 2006, the Object Management Group (OMG) announced that they had been granted the right to develop new specifications based on the ODMG 3.0 specification and the formation of the Object Database Technology Working Group (ODBT WG). The ODBT WG planned to create a set of standards that would incorporate advances in object database technology (e.g., replication), data management (e.g., spatial indexing), and data formats (e.g., XML) and to include new features into these standards that support domains where object databases are being adopted (e.g., real-time systems). The work of the ODBT WG was suspended in March 2009 when, subsequent to the economic turmoil in late 2008, the ODB vendors involved in this effort decided to focus their resources elsewhere.
In January 2007 the World Wide Web Consortium gave final recommendation status to the XQuery language. XQuery uses XML as its data model. Some of the ideas developed originally for object databases found their way into XQuery, but XQuery is not intrinsically object-oriented. Because of the popularity of XML, XQuery engines compete with object databases as a vehicle for storage of data that is too complex or variable to hold conveniently in a relational database. XQuery also allows modules to be written to provide encapsulation features that have been provided by Object-Oriented systems.
XQuery v1 and XPath v2 and later are powerful and are available in both open source and libre (FOSS) software,[15][16][17] as well as in commercial systems. They are easy to learn and use, and very powerful and fast. They are not relational and XQuery is not based on SQL (although one of the people who designed XQuery also co-invented SQL). But they are also not object-oriented, in the programming sense: XQuery does not use encapsulation with hiding, implicit dispatch, and classes and methods. XQuery databases generally use XML and JSON as an interchange format, although other formats are used.
Since the early 2000s JSON has gained community adoption and popularity in applications where developers are in control of the data format. JSONiq, a query-analog of XQuery for JSON (sharing XQuery's core expressions and operations), demonstrated the functional equivalence of the JSON and XML formats for data-oriented information. In this context, the main strategy of OODBMS maintainers was to retrofit JSON to their databases (by using it as the internal data type).
In January 2016, with the PostgreSQL 9.5 release[18] was the first FOSS OODBMS to offer an efficient JSON internal datatype (JSONB) with a complete set of functions and operations, for all basic relational and non-relational manipulations.
Comparison with RDBMSs
[edit]An object database stores complex data and relationships between data directly, without mapping to relational rows and columns, and this makes them suitable for applications dealing with very complex data.[19] Objects have a many-to-many relationship and are accessed by the use of pointers. Pointers are linked to objects to establish relationships. Another benefit of an OODBMS is that it can be programmed with small procedural differences without affecting the entire system.[20]
See also
[edit]- Comparison of object database management systems
- Component-oriented database
- EDA database
- Enterprise Objects Framework
- NoSQL
- Object Data Management Group
- Object–relational database
- Persistence (computer science)
- Relational model
- Relational database management system (RDbMS)
References
[edit]- ^ Data Integration Glossary Archived March 20, 2009, at the Wayback Machine, U.S. Department of Transportation, August 2001.
- ^ ODBMS.ORG :: Object Database (ODBMS) | Object-Oriented Database (OODBMS) | Free Resource Portal. ODBMS (2013-08-31). Retrieved on 2013-09-18. Archived March 6, 2014, at the Wayback Machine
- ^ O’Brien, J. A., & Marakas, G. M. (2009). Management Information Systems (9th ed.). New York, NY: McGraw-Hill/Irwin
- ^ Three example references from 1985 that use the term: T. Atwood, "An Object-Oriented DBMS for Design Support Applications", Proceedings of the IEEE COMPINT 85, pp. 299-307, September 1985; N. Derrett, W. Kent, and P. Lyngbaek, "Some Aspects of Operations in an Object-Oriented Database", Database Engineering, vol. 8, no. 4, IEEE Computer Society, December 1985; D. Maier, A. Otis, and A. Purdy, "Object-Oriented Database Development at Servio Logic", Database Engineering, vol. 18, no.4, December 1985.
- ^ Kim, Won. Introduction to Object-Oriented Databases. The MIT Press, 1990. ISBN 0-262-11124-1
- ^ Bancilhon, Francois; Delobel, Claude; and Kanellakis, Paris. Building an Object-Oriented Database System: The Story of O2. Morgan Kaufmann Publishers, 1992. ISBN 1-55860-169-4.
- ^ Ulfsby; et al. (July 1981). "TORNADO: a DBMS for CAD/CAM systems". Computer-Aided Design. 13 (4): 193–197. doi:10.1016/0010-4485(81)90140-8.
- ^ "SpringSource to Acquire Gemstone Systems Data Management Technology". WMware. May 6, 2010. Archived from the original on August 8, 2014. Retrieved August 5, 2014.
- ^ GemTalk Systems (May 2, 2013). "GemTalk Systems Acquires GemStone/S Products from VMware". PRWeb. Archived from the original on August 10, 2014. Retrieved August 5, 2014.
- ^ "restructuring our Versant Community Website".
- ^ "Realm Releases Object Database for Node.js". InfoQ. Archived from the original on 2017-02-02.
- ^ DB-Engines. "Object Database Ranking on DB-Engines". DB-Engines. Retrieved 2021-05-21.
- ^ "Stanford Linear Accelerator (SLAC)".
- ^ Herde, Patrick; Sibbald, Peter R. (1992). "Integration of molecular biology data collections using object oriented databases and programming". Addendum to the proceedings on Object-oriented programming systems, languages, and applications (Addendum) - OOPSLA '92. pp. 177–178. doi:10.1145/157709.157747. ISBN 0897916107. S2CID 45269462.
- ^ "BaseX XQuery Processor". basex.org. Archived from the original on 2023-12-16.
- ^ "XQuery in eXist-db". exist-db.org. Archived from the original on 2023-12-02.
- ^ "Saxon - Using XQuery". www.saxonica.com. Archived from the original on 2020-09-23.
- ^ "PostgreSQL: Documentation: 10: 9.15. JSON Functions and Operators". www.postgresql.org. Archived from the original on 2016-05-18.
- ^ Radding, Alan (1995). "So what the Hell is ODBMS?". Computerworld. 29 (45): 121–122, 129.
- ^ Burleson, Donald. (1994). OODBMSs gaining MIS ground but RDBMSs still own the road. Software Magazine, 14(11), 63
External links
[edit]- Object DBMS resource portal
- Ranking of Object Oriented DBMS - by popularity, updated monthly from DB-Engines