Content deleted Content added
RProgrammer (talk | contribs) m heheh, 'should have previewed it; I guess I'm still green on wiki-markup |
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 |
||
(210 intermediate revisions by more than 100 users not shown) | |||
Line 1:
{{Short description|Database presenting data as objects}}
[[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'''
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>
==Overview==
Object-oriented database management systems (OODBMSs) also called ODBMS (Object Database Management System) combine database capabilities with [[object-oriented programming]] language capabilities.
As the usage of web-based technology increases with the implementation of Intranets and extranets, companies have a vested interest in
Some object-oriented databases are designed to work well with [[object-oriented programming language]]s such as [[
==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
Early commercial products included [[GemStone Systems|Gemstone]] (Servio Logic, name changed to GemStone Systems), Gbase (Graphael), and Vbase (Ontologic).
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 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==
* 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
* 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
** Servio Logic changes name to Gemstone Systems
** [[Gemstone (database)|Gemstone]] ([[Smalltalk]])-([[C++]])-([[Java (programming language)|Java]])
** GBase ([[LISP]])
** VBase (O2- ONTOS – INFORMIX)
** [[Objectivity/DB]]
* Mid
** [[InterSystems Caché]]
** [[Versant Object Database]]
** [[ODABA]]
** [[Zope Object Database|ZODB]]
** Poet
** [[JADE (programming language)|JADE]]
** Matisse
** Illustra [[Informix]]
* 2000s
** [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
** [[db4o]] project started by Carl Rosenberger
** [[ObjectDB]]
* 2001 [[IBM]] acquires Informix
* 2003 [[ObjectDatabase++|odbpp]] public release
* 2004 db4o's commercial launch as db4objects, Inc.
* 2008 db4o acquired by [[Versant Corporation]]
* 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>
* 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 (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>
* 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>
* 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>
*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==
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]]<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.
==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]].
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 74 ⟶ 85:
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 [[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.
==Standards==
The [[Object Data Management Group]] was a consortium of object database and
Many object database ideas were also absorbed into [[SQL:1999]] and have been implemented in varying degrees in [[
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 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 [[
[[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.
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|PostgreSQL 9.5 release]]<ref>{{cite web|url=https://www.postgresql.org/docs/current/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/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.
==Comparison with RDBMSs==
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>
==See also==
* [[Comparison of object database management systems]]
* [[
* [[
* [[Enterprise Objects Framework]]
* [[NoSQL]]
* [[Object Data Management Group]] * [[Object–relational database]]
* [[Persistence (computer science)]]
* [[
* [[
==References==
{{Reflist|30em}}
==External links==
* [http://www.odbms.org/ Object DBMS resource portal]
* [http://db-engines.com/en/ranking/object+oriented+dbms Ranking of Object Oriented DBMS] {{Webarchive|url=https://web.archive.org/web/20241201172721/https://db-engines.com/en/ranking/object%2Boriented%2Bdbms |date=2024-12-01 }} - by popularity, updated monthly from [[DB-Engines ranking|DB-Engines]]
{{Database models}}
{{Authority control}}
{{DEFAULTSORT:Object Database}}
Line 188 ⟶ 136:
[[Category:Database models]]
[[Category:Object-oriented database management systems| ]]
[[Category:Types of databases]]
|