オブジェクトデータベース

オブジェクトデータベースとは



オブジェクトデータベースは、オブジェクト指向プログラミングで用いられるオブジェクトの形式でデータを格納するデータベースです。オブジェクト指向データベースとも呼ばれます。オブジェクト指向プログラミングにおけるオブジェクトの永続化や、オブジェクト間の複雑な関連性を管理するのに適しており、オブジェクト指向プログラミング言語との親和性が高い点が特徴です。

オブジェクトデータベースを管理するシステムは、オブジェクトデータベース管理システム (ODBMS) またはオブジェクト指向データベース管理システム (OODBMS) と呼ばれます。この項目では、オブジェクトデータベースそのものと、ODBMSの両方について詳しく解説します。

ODBMSの概要



ODBMSは、データベースに格納されたオブジェクトを、オブジェクト指向プログラミング言語のオブジェクトとしてシームレスに利用できる機能を提供します。具体的には、以下の機能によってオブジェクト指向プログラミングを拡張します。

透過的なデータ永続化: プログラマが永続化処理を意識することなく、オブジェクトをデータベースに保存・復元できます。
並行性制御: 複数のユーザーが同時にオブジェクトを操作する際の競合を制御します。
データ復旧: システム障害が発生した場合に、データを復旧します。
結合問い合わせ: オブジェクト間の関連性を利用した複雑な検索を可能にします。

多くのODBMSは、Smalltalk、C++Java、C#などのオブジェクト指向プログラミング言語と連携して動作するように設計されています。一方で、独自のプログラミング言語を持つODBMSも存在します。

オブジェクトデータベースは、複雑なデータ構造を高速に処理する必要がある場合に推奨されます。

オブジェクト指向の導入手法



データベース技術にオブジェクト指向の概念を導入する方法は、大きく分けて次の2つがあります。

オブジェクトデータベース: オブジェクト指向の概念を直接的に採用し、データをオブジェクトとして格納します。
オブジェクト関係データベース: 既存の関係データベースオブジェクト指向の機能を追加します。

ODBMSの実装には、ObjectStore、Caché、Objectivity/DB、GemStone/S、db4oなどが挙げられます。

オブジェクトデータベースの歴史



ODBMSの研究開発は、1970年代半ばに始まりました。当時のDBMSでは、グラフ構造を持つオブジェクト群を扱う機能が十分に整備されていませんでした。1985年頃には、「オブジェクト指向データベースシステム」という用語が登場し、さまざまな研究プロジェクトが立ち上げられました。

主要な研究プロジェクト



Encore-Ob/Server(ブラウン大学
EXODUS(ウィスコンシン大学
IRIS(ヒューレット・パッカード
ODE(ベル研究所
ORION (MCC)
Vodak (GMD-IPSI)
Zeitgeist(テキサス・インスツルメンツ

特にORIONプロジェクトは多くの論文が発表され、このプロジェクトの成果をまとめた書籍も出版されました。

初期の商用実装



初期の商用ODBMSとしては、以下のような製品がありました。

GemStone(Servio Logic、後のGemStone Systems)
Gbase (Graphael)
Vbase (Ontologic)

1990年代前半には、さらに多くの製品がODBMS市場に参入しました。ITASCA、Jasmine、Matisse、Objectivity/DB、ObjectStore、ONTOS、O2、POET、Versant Object Databaseなどがその例です。これらの製品の中には、現在も開発・販売が継続されているものがあります。

初期のODBMSは、様々なプログラミング言語に永続化機能を追加する形で実装されていました。たとえば、GemStone/SはSmalltalk、GbaseはLisp、VbaseはCOP(C Object Processor)をベースとしていました。1990年代はC++が主流でしたが、その後JavaやC#への対応も進みました。

ODBMSの必要性



ODBMSが求められる背景には、以下の2つの要因があります。

1. 複雑なデータ構造の扱いづらさ: 従来の関係データベースでは、複雑な構造を持つデータを扱うのが煩雑でした。
2. オブジェクト指向プログラミングの普及: オブジェクト指向プログラミング言語 (Smalltalk、C++Java、C#など) を使ったアプリケーション開発が一般的になり、オブジェクトと関係データベースのデータ構造との間で変換処理が必要となるインピーダンスミスマッチが問題視されるようになりました。

インピーダンスミスマッチ



オブジェクト指向プログラミングで表現されたデータと関係データベースのテーブル構造との間の不整合は、プログラマにとって大きな負担となります。オブジェクトとテーブルの相互変換は退屈な作業であり、開発効率の低下や実行速度の遅延を招く可能性があります。この問題を解決するために、オブジェクトデータベースやオブジェクトリレーショナルマッピングといった技術が利用されます。

ODBMSの採用動向



1990年代初頭、オブジェクト指向の概念をデータベースに取り入れる試みが活発になりました。この課題に取り組むために、2つのアプローチが生まれました。

1. オブジェクトデータベース: プログラミング言語に永続化機能を追加する。
2. オブジェクト関係データベース: 関係データベースオブジェクト指向の機能を追加する。

オブジェクトデータベースは、工学、空間、電気通信高エネルギー物理学分子生物学などの分野で利用されてきました。近年では、金融業界での採用事例も現れています。

オブジェクトデータベースの規模



オブジェクトデータベースは、現在、世界最大規模のデータベースを支えています。スタンフォード線形加速器センターでは、1000テラバイトを超えるオブジェクトデータベースが運用されており、1日あたり1テラバイト以上という高速なデータ増加に対応しています。

ODBMSの多様な利用形態



ODBMSは、機器、パッケージソフトウェア、リアルタイムシステムなど、様々な用途に組み込まれています。

オブジェクト関係データベースとの比較



オブジェクト関係データベース (ORDBMS) は広く利用されていますが、その多くは従来のRDBMSとして利用され、オブジェクト指向の機能を十分に活用する事例は多くありません。ORDBMSは、データ操作言語としてSQLを引き継いでおり、マイケル・ストーンブレーカーによって命名されました。ORDBMSはハイブリッドデータベースとも呼ばれます。

主要なRDBMSベンダーは、ORDBMSの採用や開発企業の買収を通じて、自社の関係データベースオブジェクト指向の拡張を施してきました。ORDBMSの実装には、PostgreSQL、Illustra、Informix Dynamic Server、IBM Db2、Oracle Databaseなどがあります。

オープンソースODBMSの登場



2004年以降、オープンソースのODBMSが注目され、ODBMSは第二の成長期を迎えています。オープンソースであるため導入コストが低く、JavaC++Python、C#などのオブジェクト指向プログラミング言語実装されています。代表的なオープンソースODBMSには、db4o、Perst、Magmaなどがあります。

技術面の特徴



ODBMSでは、オブジェクト指向の考え方を純粋に採用しており、データはオブジェクトとしてデータベースに格納されます。オブジェクトはカプセル化されており、クラスで定義されたメソッドを通してのみ操作できます。オブジェクトは型を持ち、型の間には継承関係があります。

オブジェクトの参照



アプリケーションは、ナビゲーショナルな方法でオブジェクトデータベース内のオブジェクトへの参照を取得できます。オブジェクトは他のオブジェクトへの参照を持つことができ、参照関係を辿って目的のオブジェクトにアクセスします。また、多くのODBMSでは、宣言的なデータ操作言語による方法も利用できます。

OQL



オブジェクト問い合わせ言語 (OQL) は、オブジェクトデータベースの標準的な問い合わせ言語として策定されていますが、実際にはODBMSごとに実装に差異があります。また、ナビゲーショナルな方法と宣言的な方法の統合方法もODBMSによって異なります。

検索速度



ODBMSの検索速度は、RDBMSと比較して高速になる可能性があります。これは、ODBMSでは結合処理が少なく、オブジェクトの参照を直接辿ることで目的のオブジェクトにアクセスできるからです。

スキーマとプログラミング言語



オブジェクトデータベースのスキーマとオブジェクト指向プログラミング言語は、通常、同じ型定義を使用しますが、ODBMSごとに微妙な違いがあります。

マルチメディアの取り扱い



オブジェクトデータベースは、マルチメディアデータの取り扱いに適しています。音や映像などのコンテンツをオブジェクトとして扱い、エンコードやデコードなどの処理をオブジェクトのメソッドに任せることができます。

バージョニング



多くのODBMSはバージョニングをサポートしており、オブジェクトの状態の変更履歴を追跡できます。オブジェクトの各バージョンもまたオブジェクトとして扱うことができます。

トリガーと制約



一部のODBMSは、トリガーや制約などのアクティブデータベースの基本的な機能も提供しています。

特長と課題



ベンチマークテストでは、特定の処理において、ODBMSがRDBMSよりも優れた性能を示すことが確認されています。これは、ODBMSがナビゲーショナルなアクセスを多用しているためです。オブジェクトの参照を辿るという直接的なアクセス方法は、効率的なデータ取得を可能にします。

ナビゲーショナルデータベースの課題



一方、ナビゲーショナルデータベースは、特定の探索経路に最適化されているため、汎用的なデータ操作言語によるアクセスが遅くなるという批判もあります。データベース構築時に想定していなかったアクセスパスによるデータアクセスは効率が悪くなる可能性があります。

相互運用性の問題



ODBMSは、RDBMSに比べてツールや機能の相互運用性が低いという問題もあります。RDBMSでは、JDBCやODBCといった標準化された接続インターフェースや、帳票作成ツール、バックアップツールなどが豊富に存在します。また、ODBMSには、RDBMSのような形式化された数学的な基盤がないことも、データ操作言語のサポートにおいて不利に働くと指摘されています。

現在の状況



ただし、現在では、SQLによるアクセスを提供しているODBMSもあり、これらの批判は必ずしも妥当ではありません。オブジェクト指向におけるカプセル化の概念と、多くのデータベース技術の前提との間には、本質的に不整合な部分があります。カプセル化されたオブジェクトは、インターフェースを通してしか操作できませんが、データベース技術は、様々なアクセスパスをサポートする必要があります。この観点の違いが、オブジェクト指向データベースの間のインピーダンスミスマッチの一因となっています。

オブジェクトデータベースの将来性



一部の人々は、オブジェクトデータベース技術は失敗であったと見なしていますが、多くの人々は、この技術の本質的な方向性は有効であると考えています。現在も、研究者と開発者のコミュニティの両方で、データベースオブジェクト指向プログラミング言語を密接に統合するための努力が続けられています。

標準化とネイティブクエリ



オブジェクトをデータベースに格納するための移植性のあるアプリケーションを開発するために、ODMG (Object Data Management Group) という標準化団体が存在しました。ODMGは、ODBMSベンダー、オブジェクトリレーショナルマッピング技術開発企業、研究者コミュニティなどが参加していました。ODMGは、オブジェクトモデル、オブジェクト仕様言語、オブジェクト定義言語、オブジェクト交換フォーマット、オブジェクト問い合わせ言語、各種言語バインディングなどの仕様を策定しました。

ODMG 3.0



ODMGの最新バージョンはODMG 3.0で、以下の要素から構成されています。

概要
オブジェクトモデル: OMG (Object Management Group) オブジェクトモデルに基づく
オブジェクト仕様言語
オブジェクト定義言語 (ODL)
オブジェクト交換フォーマット (OIF)
オブジェクト問い合わせ言語 (OQL)
C++バインディング
Smalltalkバインディング
Javaバインディング
補遺
* OMGオブジェクトモデルとの比較

ODMGの終焉とJava Data Objects



1990年代後半にJavaが普及したことを受け、主要なODBMS開発企業はODMG Java言語バインディングの仕様を策定することを主張しました。その後、ODMG Java言語バインディングはJava Community Process (JCP) に提出され、Java Data Objects (JDO) 仕様の基礎となりました。ODMGの参加企業はJDO仕様の策定に専念することになり、2001年にODMGは活動を停止しました。

ORDBMSにおける標準化



一方、ORDBMSでは、多くのオブジェクト指向の機能がSQL:1999に採用されましたが、実装レベルは製品によって異なります。

ネイティブクエリの登場



2005年、クック、レイ、ローゼンバーガーは、ODBMSにODMGのような標準化されたインターフェースを追加するのではなく、オブジェクト指向プログラミング言語自体にデータベース操作機能を持たせることを提唱しました。この結果、db4oのようなネイティブクエリを実装したODBMSが登場しました。マイクロソフトも、2005年に統合言語クエリ (LINQ) を発表し、C#やVisual Basic .NETに密接に統合されたデータベースクエリ機能を提供しました。

OMGによる再始動



2006年、オブジェクト指向技術の標準化団体OMGは、ODMG標準の権利を取得し、次世代のオブジェクトデータベース技術を開発するための作業部会 (ODBT WG) を発足させました。ODBT WGは、オブジェクトデータベース技術、データ管理、データフォーマット、適用対象領域支援などの技術革新に取り組んでいます。

まとめ



オブジェクトデータベースは、オブジェクト指向プログラミングの概念を直接的に適用したデータベースです。複雑なデータ構造を効率的に扱い、オブジェクト指向プログラミング言語との親和性が高いという特長があります。過去にはRDBMSとの比較や標準化の課題がありましたが、現在はオープンソースのODBMSの登場や、プログラミング言語との統合が進んでいます。今後のデータベース技術の発展において重要な役割を果たすことが期待されます。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。