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

オブジェクト関係データベース (Object-Relational Database; ORDB)とは



オブジェクト関係データベース (ORDB) は、関係データベース管理システム (RDBMS) を拡張したデータベースシステムです。RDBMSが事前に定義されたデータ型のみを扱うのに対し、ORDBでは開発者がデータ型とメソッドを自由に定義できます。これにより、より複雑なデータ構造やビジネスロジックをデータベース内で直接扱えるようになります。ORDBは、ソフトウェア開発者が問題領域の抽象化レベルを高く保ち、データベース設計の詳細に過度に煩わされることなく開発を進めることを目指しています。

RDBMSとの比較



従来のRDBMSでは、SQLなどの標準的なデータベース言語を用いて、事前に定義されたデータ型(整数、文字列、日付など)を操作します。

例えば、MySQLで以下のようなSQL文を使って、社員の誕生日を抽出するクエリを記述できます。

sql
SELECT name, birthday FROM employees WHERE YEAR(birthday) = 1990;


しかし、RDBMSでは、より複雑なデータ型や操作を扱うには限界があります。そこで、ユーザ定義関数を利用して、上記クエリを次のように書き換えることも可能です。

sql
SELECT name, BirthDay(birthday) FROM employees WHERE YEAR(birthday) = 1990;


一方、ORDBMSでは、データ型とメソッドを自由に定義できます。例えば、`BirthDay()`のようなユーザ定義のデータ型と式を定義することで、クエリをより直感的に記述できます。

sql
SELECT name, BirthDay(birthday) FROM employees WHERE BirthDay(birthday) = '1990/01/01';


さらに、ORDBMSはデータ間の関連を容易に扱うことができます。例えば、住所録アプリケーションでは、人物と複数の住所を関連付ける際に、RDBMSでは結合が必要となります。RDBMSでの検索クエリは以下のようになります。

sql
SELECT p.name, a.address FROM persons p JOIN addresses a ON p.id = a.person_id WHERE p.name = 'John Doe';


ORDBMSでは、より簡潔に同様のクエリを記述できます。

sql
SELECT p.name, p.addresses FROM persons p WHERE p.name = 'John Doe';


歴史



ORDBMSの研究は1990年代初頭に始まりました。この研究は、関係モデルオブジェクト指向の概念を追加することを目指しました。初期の研究プロジェクトとして、マイケル・ストーンブレーカーが主導した Postgres が特に有名です。Postgresは、IllustraとPostgreSQLの源流となっています。

1990年代半ばには、Illustra、Omniscience、UniSQLなどの商用ORDBMSが登場しました。これらのシステムは、オブジェクト指向の機能を提供することで、データベースの柔軟性と表現力を向上させました。また、同時期にRuslan Zasukhinによって開発されたValentinaは、C++データベースSDKとしてリリースされました。

ORDBMSの概念は、データベース言語標準 SQL:1999 にも影響を与えました。現在では、IBM DB2、Oracle Database、Microsoft SQL Serverなどの主要なRDBMSも、ORDBMSの機能を部分的に取り入れています。ただし、ORDBMS技術の準拠レベルは製品によって異なります。

実装



ORDBMSの主な実装例としては、以下のものがあります。

Illustra (Informixに買収後、IBMに買収)
Informix Dynamic Server (IBM)
PostgreSQL (オープンソース)
IBM DB2 (IBM)
Oracle Database (Oracle)

まとめ



ORDBは、RDBMSの柔軟性を拡張し、より複雑なデータやビジネスロジックを扱うための強力なツールです。オブジェクト指向の概念を取り入れることで、開発者はデータモデルをより直感的かつ効果的に設計できます。ORDBは、RDBMSが抱える制約を克服し、より高度なデータベースアプリケーションを開発するための選択肢の一つとなっています。

関連項目



オブジェクト指向
オブジェクトデータベース
オブジェクトリレーショナルマッピング
関係モデル
SQL

外部リンク



An interesting discussion about object-oriented vs. relational databases
PolePosition Benchmark -- オブジェクトリレーショナルインピーダンスミスマッチの状況における解決策について性能面のトレードオフを示す
* RDBMS != Object Store -- 関係データベースとオブジェクトストアの違いに関する説明

もう一度検索

【記事の利用について】

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

【リンクついて】

リンクフリーです。