OLE DB (Object Linking and Embedding, Database) は、
マイクロソフトによって開発されたAPIであり、様々な種類のデータにアクセスするための統一されたインターフェースを提供します。OLEDB、OLE-DBと表記されることもあります。このAPIは、
Component Object Model (COM) を基盤として実装されたインターフェース群であり、OLEの技術と密接な関係があります。
OLE DBは、従来のODBCをより抽象化し、関係
データベースだけでなく、オブジェクト
データベースや
表計算ソフトなど、
SQLをサポートしないデータソースにも対応できるように拡張されています。これにより、アプリケーションは、データの格納形式や種類に関わらず、一貫した方法でデータにアクセスすることが可能になります。
OLE DBの設計思想は、データ格納域とアプリケーションを分離することにあります。データソース、セッション、コマンドなどの抽象化された概念を使用することで、アプリケーションはデータアクセスの詳細を意識することなく、データの読み書きを行えます。これは、アプリケーションが多様なデータソースにアクセスする際に、それぞれのデータソースに固有のアクセス方法を覚える必要がないことを意味します。
OLE DBの概念は、「コンシューマ」と「プロバイダ」という2つの要素に分けられます。コンシューマはデータを利用するアプリケーションであり、プロバイダはOLE DBインターフェースを実装したソフトウェアコンポーネントです。プロバイダは、コンシューマからのリクエストに応じてデータを提供します。OLE DBは、
Microsoft Data Access Components (MDAC) スタックの一部として提供されており、MDACは、複数の
マイクロソフト技術を統合したフレームワークとして機能し、開発者は様々なデータストアにアクセスするアプリケーションを、一貫した方法で開発できます。
OLE DBプロバイダは、テキストファイルや
表計算ソフトのようなシンプルなデータストアから、Oracle、
SQL Server、Sybase ASEといった複雑な
データベース、さらには
電子メールシステムのような階層型データモデルまで、幅広いデータソースに対応できるように作成できます。しかし、データストアの種類が異なれば機能も異なるため、すべてのOLE DBプロバイダがOLE DBのすべてのインターフェースを実装できるわけではありません。プロバイダは、データストアの機能をCOMオブジェクトにマッピングし、可能な範囲でOLE DBインターフェースを実装します。
マイクロソフトは、データストアの種類によっては適用できない可能性のあるインターフェースを「provider-specific」と称しています。また、プロバイダはデータストアの機能を拡張することができ、
マイクロソフトはこれを「サービス」と呼んでいます。
Microsoftは、MDACとJETキットの一部として複数のOLE DBプロバイダを提供しています。また、Simba Technologiesは、OLAP用のOLE DBプロバイダを構築するためのSDKであるSimbaProviderを販売しています。OpenLink Softwareは、いくつかの
SQL DBMSに対応したOLE DBプロバイダと、ODBCおよびJDBC用のOLE DBブリッジを提供しています。さらに、
SQLSummit.comはOLE DBプロバイダのカタログを提供しており、InterbaseとFirebird用のOLE DBプロバイダは14種類の
データベースをサポートし、無料版も提供されています。また、Postgre
SQL用のOLE DBプロバイダも利用可能です。