AccessでVBAをコーディングしていて気になった用語(↓)があったので、簡単に意味や差異をまとめました。
- DAO
- ADO
- ODBC
- OLE DB
DAO
一般的な意味ではDAO (Database Access Object)はデータベースへの接続を抽象化する仕組みだけど、Accessに関しては、Access VBAで標準的に(恐らく)使用されるDBアクセスのための仕組み・オブジェクトのこと。
特に追加の参照設定をしなくても、使用可能。
Access内部のテーブルに対しても、リモートDBに対しても使用可能(リモートDBはODBCで接続)。
ただ、後続の規格であるADOのほうがパフォーマンス面では良いらしい。※1
※1 Microsoft ActiveX データ オブジェクト リファレンス
ADO
ADO (ActiveX Data Objects)はデータベース接続・操作のためのCOMオブジェクト。
(COMオブジェクトはVisual Basic (VBAも含む)で使用される部品のこと)
上記DAOの※1のリンクにもあるように、パフォーマンス面では良いらしい(DAOとの比較には言及していないが)。
ADO の主な利点は、使用が簡単で、高速に動作し、メモリのオーバーヘッドが小さく、ディスクの使用量が少ないことです。 ADO では、クライアント/サーバー アプリケーションおよび Web ベース アプリケーションを構築するための重要な機能がサポートされています。
https://docs.microsoft.com/ja-jp/office/client-developer/access/desktop-database-reference/microsoft-activex-data-objects-reference
ADOはOLE DBを使用してDBにアクセスする(OLE DBについては後述)。
Accessで使用するには追加で参照設定を行う必要あり。
ADOの参照設定方法
データベース→Visual Basicを開き、
ツール→参照設定で、「Microsoft ActiveX Data Objects 6.1 Library」にチェックしてOK。
以下の画像の通り。
ODBC
関係データベース(RDMS)への統一的なアクセス方法を提供するインタフェース(ないしAPI)で、Microsoftの独自仕様ではない(後述するOLE DBはMicrosoftの独自仕様)。
ここでも書かれているけど、業界標準はODBCらしい。
要するに、個々のデータベース製品固有の違いを吸収してくれる仕組み。
ODBCは、Open Database Connectivityの略。
参考サイト
OLE DB
OLE自体は、Windowsにおいて複数のアプリケーションでデータを共有する仕組み(詳細はここで説明されています)。
Microsoftの独自規格で、DBへのアクセスを抽象化するアーキテクチャー。
ODBCにのみ対応しているDB製品に対しては、「Microsoft OLE DB Provider for ODBC」を仲介させる。
参考サイト
以上です。