OLE DB

OLE DB ("Object Linking and Embedding, Database") はマイクロソフトの設計したAPIであり、一様な形で格納されている様々な種類のデータへのアクセスを行うものである。OLEDB、OLE-DB とも表記する。Component Object Model (COM) を使って実装されたインタフェース群であり、そのためOLEと関係がある。ODBCをより抽象化した形で置換するもので、関係データベース以外の各種データベースもサポートするよう拡張されている。オブジェクトデータベース、表計算ソフトなどSQLをサポートしていないものにも対応している。
OLE DB は、データ格納域とアプリケーションを分離し、データソース、セッション、コマンドなど抽象化された概念群を使ってアクセスを提供する。アプリケーションによっては様々なデータ源やデータの種類にアクセスする必要があるが、データ格納元の機能への固有なアクセス方法を知る必要を省くためにこのようなインタフェースが考案された。OLE DB は概念的に「コンシューマ (consumer)」と「プロバイダ (provider)」に分けられる。コンシューマとはデータにアクセスする必要のあるアプリケーションであり、プロバイダはインタフェースを実装したソフトウェアコンポーネントで、コンシューマにデータを提供する。OLE DB は Microsoft Data Access Components (MDAC) スタックの一部である。MDACは相互に連携してフレームワークとして機能するマイクロソフトの複数の技術を集約したもので、プログラマに対して様々なデータストアにアクセスするアプリケーションを一貫した方法で開発する手段を提供する。OLE DB プロバイダは、テキストファイルや表計算ソフトなどの単純なデータストアへのアクセス用に作成でき、Oracle、SQL Server、Sybase ASE などの複雑なデータベースへのアクセス用にも作成できる。また、電子メールシステムのような階層型データモデルへのアクセスも提供できる。
しかし、データストアの種類が異なれば機能も異なるので、OLD DB プロバイダは OLE DB の全てのインタフェースを実装できるとは限らない。可能な部分はCOMオブジェクトを使って実装でき、OLE DB プロバイダはデータストアの機能を対応するCOMインタフェースにマッピングする。マイクロソフトは使用するデータベース技術によっては適用できない可能性のあるインタフェースを "provider-specific" と称している。なおプロバイダはデータストアの機能を強化することもでき、これをマイクロソフトは「サービス」と称している。