オブジェクトデータベース
ODBMSの実装を使うと、データベースに格納されたオブジェクトを一つもしくは複数のオブジェクト指向プログラミング言語のプログラミング言語のオブジェクトとして継ぎ目なしに利用できる。 また、ODBMSはオブジェクト指向プログラミング言語に次の機能を備えるよう拡張した技術と位置づけることができる。
透過的なデータ永続化
並行性制御
データ復旧
結合問い合わせ
など
ODBMSの実装のいくつかは、Smalltalk、C++、Java、C#、Visual Basic .NET などのオブジェクト指向プログラミングと連携して良好に動作するよう設計されている。 別のODBMSの実装のいくつかは、その ODBMS 独自のプログラミング言語をもつ。 ODBMSはデータモデルとしてオブジェクト指向プログラミング言語と厳密に同じモデルを採用している。
オブジェクトデータベースは、一般的には、複雑なデータの高速処理のビジネス要求がある際に、勧められるとされる。
データベース技術にオブジェクト指向の概念を導入する手法には、後述するように、オブジェクトデータベースとオブジェクト関係データベースの2つの手法がある。
ODBMSの実装としては、ObjectStore、Caché、Objectivity/DB、GemStone/S、db4oなどがある。
データベースを使う人々にとって、ODBMSを必要とする背景には、主に2つの要因があった。
従来の関係データベースで複雑な構造をもつデータを扱うことは、煩雑で能率が悪く扱いにくいということが、データベースに携わる人々に意識されるようになってきた。
近年、データを扱うアプリケーションソフトウェアをオブジェクト指向プログラミング言語(Smalltalk や C++、Java、Delphi、Ruby、Python、C# など)によって記述することが多くなってきた。
このような状況で関係データベースを使うと、アプリケーションソフトウェアで、オブジェクトとして表現されたデータと関係モデルに基づく関係データベースの関係 (テーブル構造) のデータを相互に変換する処理を、プログラマが自分で記述する必要がある。プログラマにとってそのような作業は退屈でうんざりさせられるものであり、開発生産性が悪く、開発されたソフトウェアの実行速度も遅くなる傾向がある、などのデメリットがある。
こうした、オブジェクト指向プログラミング言語で記述されたアプリケーションソフトウェアと関係データベース(関係モデル)の間の不整合を、インピーダンスミスマッチと呼ぶことがある。インピーダンスミスマッチを軽減する技術として、この項目で説明するオブジェクトデータベースと、オブジェクトリレーショナルマッピングがある。