オブジェクトリレーショナルデータベース( ORD ) またはオブジェクトリレーショナルデータベース管理システム( ORDBMS ) は、リレーショナルデータベースに似たデータベース管理システム(DBMS) ですが、オブジェクト指向データベースモデルを採用しています。オブジェクト、クラス、継承は、データベーススキーマとクエリ言語で直接サポートされています。また、純粋なリレーショナルシステムと同様に、カスタムデータ型とメソッドを使用したデータモデルの拡張もサポートしています。

オブジェクト リレーショナル データベースは、リレーショナル データベースとオブジェクト指向データベースの中間に位置するデータベースと言えます。オブジェクト リレーショナル データベースでは、アプローチは基本的にリレーショナル データベースと同じです。つまり、データはデータベース内に存在し、クエリ言語のクエリを使用して集合的に操作されます。その対極にあるのが OODBMS です。OODBMS では、データベースは基本的にオブジェクト指向プログラミング言語で記述されたソフトウェアの永続的なオブジェクト ストアであり、オブジェクトの保存と取得のためのアプリケーション プログラミング インターフェイスAPIがあり、クエリに対する具体的なサポートはほとんどまたはまったくありません。
概要
オブジェクトリレーショナルデータベースの基本的な必要性は、リレーショナルデータベースとオブジェクトデータベースの両方がそれぞれに長所と短所を持っているという事実から生じます。リレーショナルデータベースシステムは数学的な関係と同型であるため、集合論の多くの有用な技術と定理を活用できます。しかし、これらのタイプのデータベースは、特定の種類のアプリケーションには最適ではありません。オブジェクト指向データベースモデルでは、セットやリストなどのコンテナ、任意のユーザー定義データ型、ネストされたオブジェクトを使用できます。これにより、アプリケーション型システムとデータベース型システムの間に共通性がもたらされ、インピーダンス不一致の問題がなくなります。しかし、オブジェクトデータベースは、リレーショナルとは異なり、詳細な分析のための数学的基盤を提供しません。[2] [3]
オブジェクトリレーショナルデータベースの基本的な目標は、リレーショナルデータベースと、Java、C++、Visual Basic (.NET)、C#などのプログラミング言語で使用されるオブジェクト指向モデリング技術との間のギャップを埋めることです。ただし、このような橋渡しを実現するためのより一般的な代替手段は、何らかの形式のオブジェクトリレーショナルマッピング(ORM) ソフトウェアを備えた標準リレーショナルデータベースシステムを使用することです。従来のRDBMSまたは SQL-DBMS 製品は、限られたデータ型のセット (関連する言語標準によって定義) から抽出されたデータの効率的な管理に重点を置いていましたが、オブジェクトリレーショナル DBMS を使用すると、ソフトウェア開発者は独自の型とそれらに適用するメソッドを DBMS に統合できます。
ORDBMS ( ODBMSやOODBMSなど)は、オブジェクト指向プログラミング言語と統合されています。ORDBMS の特徴的なプロパティは、1) 複雑なデータ、2) 型の継承、および 3) オブジェクトの動作です。ほとんどの SQL ORDBMS での複雑なデータの作成は、ユーザー定義型(UDT)による予備的なスキーマ定義に基づいています。構造化された複雑なデータ内の階層は、追加のプロパティである型の継承を提供します。つまり、構造化された型は、そのすべての属性を再利用し、サブタイプに固有の追加属性を含むサブタイプを持つことができます。もう 1 つの利点であるオブジェクトの動作は、プログラム オブジェクトへのアクセスに関連しています。このようなプログラム オブジェクトは、データベース処理用に保存および転送可能である必要があるため、通常は永続オブジェクトと呼ばれます。データベース内では、永続プログラム オブジェクトとの関係はすべて、そのオブジェクト識別子(OID) との関係です。これらのポイントはすべて、適切なリレーショナル システムで対処できますが、SQL 標準とその実装では、任意の制限と追加の複雑さが課せられます[4] [ページが必要]
オブジェクト指向プログラミング(OOP)では、オブジェクトの動作はメソッド (オブジェクト関数) を通じて記述されます。 1 つの名前で示されるメソッドは、そのパラメータの型と、そのメソッドが関連付けられているオブジェクトの型 (メソッド シグネチャ) によって区別されます。 OOP 言語ではこれをポリモーフィズム原則と呼び、簡単に言えば「1 つのインターフェイス、複数の実装」と定義されます。 その他の OOP 原則である継承とカプセル化は、メソッドと属性の両方に関連しています。 メソッドの継承は型の継承に含まれます。 OOP におけるカプセル化は、たとえば、およびアクセス修飾子 を通じて宣言される可視性publicのprivate度合いprotected です。
歴史
オブジェクトリレーショナルデータベース管理システムは、1990 年代初頭に行われた研究から生まれました。その研究では、オブジェクトの概念を追加することで、既存のリレーショナルデータベースの概念を拡張しました。研究者は、述語計算に基づく宣言型クエリ言語をアーキテクチャの中心コンポーネントとして維持することを目指しました。おそらく最も有名な研究プロジェクトである Postgres (カリフォルニア大学バークレー校) は、その研究の流れを汲む 2 つの製品、 IllustraとPostgreSQL を生み出しました。
1990年代半ばには、初期の商用製品が登場しました。これらには、Illustra [5] (Illustra Information Systems、Informix Softwareが買収、その後 International Business Machines ( IBM ) が買収)、Omniscience (Omniscience Corporation、Oracle Corporationが買収し、オリジナルの Oracle Lite となった)、UniSQL (UniSQL, Inc.、KCOM Groupが買収) などがありました。Paradigma Software, Inc. の創設者であるウクライナの開発者 Ruslan Zasukhin は、1990年代半ばにC++ ソフトウェア開発キット(SDK) として Valentina データベースの最初のバージョンを開発し、出荷しました。次の10年までに、PostgreSQL は商用利用可能なデータベースになり、ORDBMS 機能を維持するいくつかの現在の製品の基盤となっています。
コンピュータ科学者はこれらの製品を「オブジェクトリレーショナルデータベース管理システム」またはORDBMSと呼ぶようになりました。[6]
初期のオブジェクト リレーショナル データベースの取り組みのアイデアの多くは、構造化型を通じてSQL:1999に大きく取り入れられています。実際、SQL:1999 のオブジェクト指向の側面に準拠する製品は、すべてオブジェクト リレーショナル データベース管理製品と言えます。たとえば、IBM Db2、Oracle Database、Microsoft SQL Server は、このテクノロジをサポートすると主張しており、その成功度はさまざまです。
RDBMSとの比較
RDBMS では、一般的に次のようなSQLステートメントが使用されます。
CREATE TABLE Customers ( Id CHAR ( 12 ) NOT NULL PRIMARY KEY 、Surname VARCHAR ( 32 ) NOT NULL 、FirstName VARCHAR ( 32 ) NOT NULL 、DOB DATE NOT NULL # DOB: 生年月日); SELECT InitCap ( C . Surname ) || ', ' || InitCap ( C . FirstName ) FROM Customers C WHERE Month ( C . DOB ) = Month ( getdate ()) AND Day ( C . DOB ) = Day ( getdate ())
現在のほとんどのSQL データベースでは、カスタム関数[アップデート]の作成が許可されており、クエリは次のように表示されます。
SELECT Formal ( C . Id ) FROM Customers C WHERE Birthday ( C . DOB ) = Today ()
オブジェクトリレーショナルデータベースでは、次のようなユーザー定義のデータ型と式が使用されることがありますBirthDay()。
テーブルCustomers ( Id Cust_Id NOT NULL PRIMARY KEY 、Name PersonName NOT NULL 、DOB DATE NOT NULL )を作成します。Select Formal ( C . Id ) FROM Customers C WHERE BirthDay ( C . DOB ) = TODAY ;
オブジェクト リレーショナル モデルには、データベースがデータ間の関係を利用して関連レコードを簡単に収集できるという別の利点もあります。住所録アプリケーションでは、上記のテーブルにさらにテーブルを追加して、各顧客の 0 個以上の住所を保持します。従来の RDBMS を使用する場合、ユーザーと住所の両方の情報を収集するには、「結合」が必要です。
SELECT InitCap ( C . Surname ) || ', ' || InitCap ( C . FirstName ), A . city FROM Customers C JOIN Addresses A ON A . Cust_Id = C . Id -- 結合WHERE A . city = "New York"
オブジェクトリレーショナルデータベースでの同じクエリは、次のようにより簡単に表示されます。
SELECT Formal ( C . Name ) FROM Customers C WHERE C . address . city = "New York" -- リンクはORDBによって「理解」されます
参照
- ドキュメント指向データベース
- 構文
- オブジェクトリレーショナルデータベース管理システムの比較
- 構造化タイプ
- オブジェクトデータベース
- オブジェクトリレーショナルマッピング
- リレーショナルモデル
- 言語統合クエリ
- エンティティフレームワーク
参考文献
- ^ データ統合用語集(PDF)、米国運輸省、2001年8月、2016年9月24日時点のオリジナル(PDF)からアーカイブ、 2014年3月8日取得
- ^ Frank Stajano (1995)、リレーショナルデータベースとオブジェクト指向データベースへのやさしい入門(PDF)
- ^ Naman Sogani (2015)、Technical Paper Review (PDF) 、 2016年3月4日にオリジナル(PDF)からアーカイブ、2015年10月5日に取得
- ^ デイト、クリストファー 'クリス' J.;ダーウェン、ヒュー、『第三の宣言』
- ^ ストーンブレーカー、マイケル、ドロシー・ムーア共著『オブジェクト・リレーショナル DBMS: 次なる大波』Morgan Kaufmann Publishers、1996 年。ISBN 1-55860-397-2。
- ^ 当時、この用語がIllustra のMichael Stonebrakerによって作られたのか、それとも UniSQL の Won Kim によって作られたのかという論争がありました。
外部リンク
- Savushkin, Sergey (2003)、「ORDBMS に関する視点」、2012 年 3 月 1 日にオリジナルからアーカイブ、2012 年 7 月 21 日に取得。
- JPA パフォーマンス ベンチマーク– Java JPA ORM 製品 (Hibernate、EclipseLink、OpenJPA、DataNucleus) の比較。
- ポールポジションベンチマーク–オブジェクトとリレーショナルのインピーダンス不一致のコンテキストにおけるソリューションのパフォーマンスのトレードオフを示します。
