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

技術面の特徴

ODBMSでは、オブジェクト指向の考え方を純粋な形で採用しており、データはオブジェクトとしてデータベースに格納（永続化）される。オブジェクトはカプセル化されている。オブジェクトに対しては、その設計図であるクラスで定義されたメソッドを介してのみ、扱うこと (オブジェクトの状態を参照・変更することなど) ができる。オブジェクトはなんらかのタイプ（型）をもつ。おのおののタイプの間には継承関係がある。あるタイプを継承して、そのタイプの特性を引き継いだ別のタイプを定義することができる。継承元となるタイプをスーパータイプといい、継承先のタイプをサブタイプという。スーパータイプを継承してサブタイプが定義される。サブタイプは、単一のスーパータイプのみもつことができる場合と、複数のスーパータイプをもつことができる場合とがある（オブジェクト指向プログラミング言語により異なる）。
アプリケーションソフトウェアは、ナビゲーショナルな方法で、オブジェクトデータベースに格納されているオブジェクトへの参照を取得することができる（ナビゲーショナルデータベース）。オブジェクトは、他のオブジェクトへの参照をもつことができる。これを利用して、アプリケーションソフトウェアは、別のオブジェクトへの参照を取得するために、オブジェクト間の参照関係をたどって目的とするオブジェクトへの参照を取得することができる。
多くの ODBMSでは、オブジェクトデータベースに格納されているオブジェクトへの参照を取得するための、別の方法として、宣言的なデータ操作言語による方法も使うことができる。オブジェクト問い合わせ言語については、後述するODMGの標準（オブジェクト問い合わせ言語、OQL; Object Query Language）が策定されているが、実際にはODBMSごとに差異がある。またオブジェクト問い合わせ言語による方法とナビゲーショナルな方法の、2つの方法のインタフェースの統合のしかたについても、ODBMSごとに違いがある。
ODBMSの検索速度は、関係 (テーブル構造) で実装する RDBMS (関係データベース管理システム) と比較すると、速くなる可能性がある。これはODBMSでは、RDBMSとは異なり、結合 (join) のような処理を行うことはほとんど無く、またオブジェクトの参照をたどるという直接的な方法で目的とするオブジェクトへの参照を取得することができるからである（「結合」はポインタをたどる過程の高水準の抽象であると主張されることがある）。
一般的には、オブジェクトデータベースのスキーマと、オブジェクト指向プログラミング言語は、同じタイプ定義を使う。ただし、ODBMSごとに微妙な違いがある。
オブジェクトデータベースを有効に使うと、マルチメディアを扱うアプリケーションソフトウェアを、比較的容易に開発することができる。マルチメディアの音や映像などのコンテンツは、オブジェクトとして扱われる。そのため、コンテンツを符号化（エンコード）したり復号（デコード）したりすることなどのコンテンツの種類に特有な処理を、そのオブジェクトのメソッドに任せることができ、アプリケーションソフトウェア側で処理する必要は無い。
多くのODBMSでは、バージョニングのサポートを提供している。オブジェクトの状態の全ての変更履歴（バージョンの履歴）を確認することができる。オブジェクトの各バージョンもまた、オブジェクトとして扱うことが可能である。
いくつかのODBMSではまた、アクティブデータベースの基本的な機能である、トリガや制約のシステム的なサポートを提供している。

特長と課題

ベンチマークによる性能比較では、いくつかの処理形態において、ODBMSが、RDBMS（関係データベース管理システム）よりも、明らかに優れた性能を示してきている。その主な理由は、ODBMSはその多くの処理を、宣言的な指示に基づいて実行するのではなく、ナビゲーショナルな指示に基づいて、実行しているからである。オブジェクトデータベースに対するナビゲーショナルなアクセスは、ほとんどの場合、参照をたどって目的とするデータ（オブジェクト）を取得するという性能面で有効な方法で実装されている。
ODBMSなどのナビゲーショナルデータベースのDBMSに対する批判として、参照をたどってデータにアクセスする手法は、特定の「探索経路」もしくは視点に対して最適化されている、との意見がある。この意見によると、汎用的なデータ操作言語（ODMGが策定したオブジェクト問い合わせ言語など）によるデータアクセスを行う場合、ODBMSのように参照をたどる手法は、RDBMSなどと比較すると、処理速度が遅く、またデータ操作言語で検索式を記述することも簡単ではない、というデメリットがある。このように、ODBMSのようなナビゲーショナルなDBMSでは、データベース構築時に想定していた用途に対してはアクセスが最適化され簡単になっているが、それは想定していなかったさまざまな用途でアクセスする場合のデメリットを犠牲にした上で実現されているという、見解がある。
(ただし参照ルートの最適化などを適用することができる可能性がある)
他に ODBMSに対して不利にはたらいているとみられる要素としては、多くのツールや機能について、相互運用性が低いことが挙げられる。RDBMSにおいては相互運用性をもつ多くのツールや機能がある。RDBMSでは、例えば、データベースとアプリケーションソフトウェアとの接続について業界で標準化されており（JDBCやODBC）、帳票作成ツールやOLAPのツールがあり、バックアップと復旧（リカバリ）の標準がある。またODBMSには、RDBMSと異なり、形式化された数学的な基盤がない。数学的な基盤がないことが、ODBMSにおけるデータ操作言語のサポートに関して、不利にはたらいているとの批判がある。
しかしながら、現在ではこうした批判は必ずしも妥当ではないようである。
いくつかのODBMS実装では、ナビゲーショナルなアクセスに加え、完全なSQLによるアクセスも提供している（例えば、Objectivity社はObjectivity/SQL++というソフトウェアを提供しており、これは同社製のODBMSであるObjectivity/DBにSQLアクセス機能を追加する。Matisseなどでも同様のことが可能である）。パラダイムの相違を吸収する使い方が必要となる。
実際に、オブジェクト指向におけるカプセル化の概念と、多くのデータベース技術の基本的な前提との間には、本質的に不整合な部分がある。オブジェクト指向のカプセル化の概念では、オブジェクトのデータは隠蔽されており、オブジェクトが公開しているインタフェース（メソッド）を通してのみ扱うことができる。一方データベース技術においては、データベース構築時に予めデータへのアクセスパスを想定しておくという発想よりも、構築時に想定していなかったアクセスパスによるデータアクセスも可能であるべきだとの前提がある。データベース中心の観点では、物事を宣言的な視点で認識する傾向がある。これに対し、オプジェクト指向の観点では、物事を複数のオブジェクトの動的なふるまいとして認識する傾向がある。こうした観点の違いは、オブジェクト指向とデータベースの間のインピーダンスミスマッチの一端である。
一部の人々は、オブジェクトデータベース技術は失敗であったとの見解をもっている。
しかし多くの人々は、オブジェクトデータベース技術の本質的な方向性は、現時点においても有効であると考えている。現在も、オブジェクトデータベース技術を含め、データベースの機能を密接にオブジェクト指向プログラミング言語と統合させる努力が、研究者のコミュニティと開発者のコミュニティの双方で続けられている。