
オブジェクトデータベースまたはオブジェクト指向データベースは、オブジェクト指向プログラミングで使用されるオブジェクトの形式で情報を表現するデータベース管理システム です。オブジェクトデータベースは、テーブル指向のリレーショナルデータベースとは異なります。3番目のタイプであるオブジェクトリレーショナルデータベースは、両方のアプローチのハイブリッドです。オブジェクトデータベースは、1980年代初頭から検討されてきました。[ 2 ]
オブジェクト指向データベース管理システム(OODBMS)は、ODBMS(オブジェクトデータベース管理システム)とも呼ばれ、データベース機能とオブジェクト指向プログラミング言語機能を統合したものです。OODBMSを使用すると、オブジェクト指向プログラマーは製品を開発し、それをオブジェクトとして保存し、既存のオブジェクトを複製または変更して、OODBMS内で新しいオブジェクトを作成できます。データベースがプログラミング言語と統合されているため、OODBMSとプログラミング言語の両方が同じ表現モデルを使用するため、プログラマーは単一の環境内で一貫性を維持できます。これに対し、リレーショナルDBMSプロジェクトでは、データベースモデルとアプリケーションの間に明確な分離が維持されます。
イントラネットやエクストラネットの導入に伴い、ウェブベースのテクノロジーの利用が増加するにつれ、企業は複雑なデータを表示するためにOODBMSに強い関心を持つようになっています。データをオブジェクトとして保存するように特別に設計されたDBMSを使用することで、マルチメディアプレゼンテーションを重視する企業や、コンピュータ支援設計(CAD)を利用する組織にメリットが生まれます。[ 3 ]
オブジェクト指向データベースの中には、 Delphi、Ruby、Python、JavaScript、Perl、Java、C#、Visual Basic .NET、C++、Objective-C、Smalltalkといったオブジェクト指向プログラミング言語との連携を前提として設計されているものもあれば、 JADEのように独自のプログラミング言語を持つものもあります。OODBMSは、オブジェクト指向プログラミング言語と全く同じモデルを採用しています。
オブジェクトデータベース管理システムは、1970年代前半から中頃にかけての研究から発展し、グラフ構造オブジェクトに対するデータベース管理を本質的にサポートするようになった。「オブジェクト指向データベースシステム」という用語は、1985年頃に初めて登場した。[ 4 ]注目すべき研究プロジェクトには、Encore-Ob/Server(ブラウン大学)、EXODUS(ウィスコンシン大学マディソン校)、IRIS(ヒューレット・パッカード)、ODE(ベル研究所)、ORION(マイクロエレクトロニクス・アンド・コンピュータ・テクノロジー・コーポレーション、MCC)、Vodak(GMD-IPSI)、Zeitgeist(テキサス・インスツルメンツ)などがある。ORIONプロジェクトは、他のどの取り組みよりも多くの論文を発表した。MCCのウォン・キムは、それらの論文の中から最良のものをMIT Pressから出版された書籍にまとめた。[ 5 ]
初期の商用製品には、Gemstone (Servio Logic、後に GemStone Systems に社名変更)、Gbase (Graphael)、Vbase (Ontologic) などがありました。1980 年代後半から 1990 年代半ばにかけて、さらに多くの商用製品が市場に投入されました。これらには、ITASCA (Itasca Systems)、Jasmine (富士通、Computer Associates が販売)、Matisse (Matisse Software)、Objectivity/DB (Objectivity, Inc.)、ObjectStore ( Progress Software、元々はObject Design, Incorporatedであった eXcelon から買収)、ONTOS (Ontos, Inc.、後に Ontologic から社名変更)、O 2 [ 6 ] (O 2 Technology、複数の企業と合併、Informixに買収、さらにIBMに買収)、POET (現在はVasant のFastObjects、Versant Software を買収)、Versant Object Database ( Versant Corporation)、VOSS (Logic Arts)、JADE (Jade Software Corporation) などがありました。これらの製品の中には現在も市場に出回っているものもあり、InterSystems Cachéなどの新しいオープンソース製品や商用製品も登場している。
オブジェクトデータベース管理システムは、オブジェクトプログラミング言語に永続性の概念を導入しました。初期の商用製品は、GemStone(Smalltalk)、Gbase(LISP)、Vbase(COP)、VOSS(Virtual Object Storage System for Smalltalk)など、さまざまな言語と統合されていました。1990年代の大部分において、C++が商用オブジェクトデータベース管理市場を席巻しました。ベンダーは1990年代後半にJavaを追加し、さらに最近ではC#も追加しました。
2004年以降、オブジェクトデータベースは第2の成長期を迎えました。これは、Smalltalk、Java、C#などのオブジェクト指向言語で完全に記述された、手頃な価格で使いやすいオープンソースのオブジェクトデータベースが登場したためです。例えば、Versantのdb4o(db4objects)、Obsidian DynamicsのDTS/S1、Perst (McObject)などが挙げられ、これらはオープンソースと商用ライセンスの両方で利用可能です。
永続プログラミングに基づくオブジェクトデータベースは、工学や空間データベース、電気通信、高エネルギー物理学[ 13 ]や分子生物学[ 14 ]などの科学分野といった応用分野でニッチな地位を獲得しました。
オブジェクトデータベースの別のグループは、デバイス、パッケージソフトウェア、リアルタイムシステムにおける組み込み用途に焦点を当てています。
ほとんどのオブジェクトデータベースは、宣言型プログラミングの手法を用いてオブジェクトを検索できるクエリ言語も提供しています。製品間の最大の違いは、オブジェクトクエリ言語、およびクエリとナビゲーションインターフェースの統合の領域に見られます。ODMGは、オブジェクトクエリ言語(OQL)によって標準化を試みました。
ポインタをたどることで、検索せずにオブジェクトを直接取得できるため、データへのアクセスが速くなります。
製品間の違いとして、データベースのスキーマの定義方法も挙げられます。ただし、プログラミング言語とデータベーススキーマは同じ型定義を使用しているという共通点があります。
データに関連付けられたクラスメソッドがデータの正しい解釈を担うため、マルチメディアアプリケーションの開発が容易になります。
GemstoneやVOSSなど、多くのオブジェクトデータベースはバージョン管理をサポートしています。オブジェクトは、そのすべてのバージョンの集合として捉えることができます。また、オブジェクトのバージョン自体も、独立したオブジェクトとして扱うことができます。さらに、一部のオブジェクトデータベースは、アクティブデータベースの基盤となるトリガーと制約を体系的にサポートしています。
このようなデータベースの効率性は、ある項目に関する膨大なデータ量を必要とする分野において特に向上します。例えば、銀行は利用者の口座情報を取得し、取引履歴や口座情報エントリなど、詳細な情報を効率的に提供することができます。
オブジェクトデータ管理グループ(ODMG)は、 オブジェクトデータベースおよびオブジェクトリレーショナルマッピングのベンダー、学術コミュニティのメンバー、および関係者からなるコンソーシアムでした。その目的は、データベース管理システムにオブジェクトを格納する移植可能なアプリケーションを可能にする一連の仕様を作成することでした。ODMGは仕様のいくつかのバージョンを公開しました。最後のリリースはODMG 3.0でした。2001年までに、主要なオブジェクトデータベースおよびオブジェクトリレーショナルマッピングのベンダーのほとんどがODMG Java言語バインディングへの準拠を主張しました。仕様の他のコンポーネントへの準拠はまちまちでした。2001年、ODMG Java言語バインディングは、Javaデータオブジェクト仕様の基礎としてJavaコミュニティプロセスに提出されました。ODMGメンバー企業はその後、Javaデータオブジェクト仕様に注力することを決定しました。その結果、ODMGは2001年に解散しました。
オブジェクトデータベースに関する多くの概念はSQL:1999にも取り入れられ、オブジェクトリレーショナルデータベース製品において様々な程度で実装されている。
2005年、クック、ライ、ローゼンバーガーは、オブジェクト指向クエリAPIを追加導入するための標準化の取り組みをすべて中止し、代わりにオブジェクト指向プログラミング言語自体、つまりJavaと.NETを使用してクエリを表現することを提案しました。その結果、ネイティブクエリが登場しました。同様に、マイクロソフトは2005年9月に、言語統合クエリ(LINQ)とLINQの実装であるDLINQを発表し、プログラミング言語C#とVB.NET 9で、言語統合型のデータベースクエリ機能を密接に提供しました。
2006年2月、オブジェクト管理グループ(OMG)は、ODMG 3.0仕様に基づく新しい仕様の開発権と、オブジェクトデータベース技術ワーキンググループ(ODBT WG)の設立を承認されたと発表しました。ODBT WGは、オブジェクトデータベース技術(レプリケーションなど)、データ管理(空間インデックスなど)、データ形式(XMLなど)の進歩を取り入れた一連の標準を作成し、オブジェクトデータベースが採用されている分野(リアルタイムシステムなど)をサポートする新機能をこれらの標準に含めることを計画していました。ODBT WGの作業は、2008年後半の経済混乱を受けて、この取り組みに関わっていたODBベンダーがリソースを他の分野に集中させることを決定したため、2009年3月に中断されました。
2007年1月、World Wide Web Consortium( W3C)はXQuery言語を最終勧告として承認しました。XQueryはデータモデルとしてXMLを使用します。オブジェクトデータベース向けに開発されたアイデアの一部はXQueryにも取り入れられていますが、XQuery自体は本質的にオブジェクト指向ではありません。XMLの普及に伴い、XQueryエンジンは、リレーショナルデータベースでは扱いにくいほど複雑または可変なデータを格納する手段として、オブジェクトデータベースと競合しています。また、XQueryでは、オブジェクト指向システムが提供するカプセル化機能を提供するモジュールを作成することも可能です。
XQuery v1とXPath v2以降は強力で、オープンソースおよびフリー (FOSS) ソフトウェア[ 15 ] [ 16 ] [ 17 ]だけでなく商用システムでも利用できます。学習と使用が容易で、非常に強力かつ高速です。リレーショナルではなく、XQuery は SQL に基づいていません (ただし、XQuery を設計した人物の 1 人は SQL の共同開発者でもあります)。しかし、プログラミングの意味でのオブジェクト指向でもありません。XQuery は、隠蔽、暗黙的ディスパッチ、クラスとメソッドによるカプセル化を使用しません。XQuery データベースは一般的に交換フォーマットとして XML と JSON を使用しますが、他のフォーマットも使用されます。
2000年代初頭から、JSONは開発者がデータ形式を制御できるアプリケーションにおいて、コミュニティで広く採用され、人気を博してきました。JSON用のXQueryのクエリ類似ツールであるJSONiq(XQueryのコアとなる式と操作を共有)は、データ指向情報に関してJSONとXML形式の機能的な同等性を実証しました。このような状況下で、OODBMSの保守担当者の主な戦略は、JSONをデータベースに後付けすること(内部データ型として使用すること)でした。
2016年1月、PostgreSQL 9.5リリース[ 18 ]は、すべての基本的な関係操作と非関係操作のための完全な関数と操作を備えた効率的なJSON内部データ型(JSONB)を提供する最初のFOSS OODBMSでした。
オブジェクトデータベースは、複雑なデータとデータ間の関係を、関係的な行と列にマッピングすることなく直接格納するため、非常に複雑なデータを扱うアプリケーションに適しています。[ 19 ]オブジェクトは多対多の関係を持ち、ポインタを使用してアクセスされます。ポインタはオブジェクトにリンクされ、関係を確立します。OODBMS のもう 1 つの利点は、システム全体に影響を与えることなく、小さな手続き上の違いでプログラムできることです。[ 20 ]