その他のドライバーのアーキテクチャ
一部の ODBC ドライバーは、前に説明したアーキテクチャに厳密に準拠していません。 これは、ドライバーが従来の ODBC ドライバー以外の職務を実行しているか、通常の意味でドライバーではない可能性があります。
中間コンポーネントとしてのドライバー
ODBC ドライバーは、ドライバー マネージャーと 1 つ以上の他の ODBC ドライバーの間に存在する場合があります。 中央のドライバーは、複数のデータ ソースを操作できる場合、データ ソースに実際にアクセスする他のモジュールへの ODBC 呼び出し (または適切に変換された呼び出し) のディスパッチャーとして機能します。 このアーキテクチャでは、中央のドライバーがドライバー マネージャーの役割の一部を担っています。
この種のドライバーのもう 1 つの例は、ドライバー マネージャーとドライバーの間で送信される ODBC 関数を傍受してコピーする ODBC 用のスパイ プログラムです。 このレイヤーは、ドライバーまたはアプリケーションをエミュレートするために使用できます。 ドライバー マネージャーでは、レイヤーはドライバーのように見えます。ドライバーには、レイヤーがドライバー マネージャーのように見えます。
異種結合エンジン
一部の ODBC ドライバーは、異種結合を実行するためのクエリ エンジンに基づいて構築されています。 異種結合エンジンの 1 つのアーキテクチャ (次の図を参照) では、ドライバーはドライバーとしてアプリケーションに表示されますが、ドライバー マネージャーの別のインスタンスにはアプリケーションとして表示されます。 このドライバーは、結合された各データベースのドライバーで個別の SQL ステートメントを呼び出すことによって、アプリケーションからの異種結合を処理します。
このアーキテクチャは、アプリケーションがさまざまなデータベースのデータにアクセスするための共通インターフェイスを提供します。 特殊な列 (行識別子) に関する情報など、メタデータを取得する一般的な方法を使用できます。また、一般的なカタログ関数を呼び出してデータ ディクショナリ情報を取得することもできます。 たとえば、ODBC 関数 SQLStatistics を呼び出すことで、テーブルが 2 つの別々のデータベースにある場合でも、結合するテーブルのインデックスに関する情報を取得できます。 クエリ プロセッサは、データベースがメタデータを格納する方法について心配する必要はありません。
アプリケーションには、データ型への標準アクセス権もあります。 ODBC は、DBMS 固有のデータ型がマッピングされる一般的な SQL データ型を定義します。 アプリケーションは SQLGetTypeInfo を呼び出して、さまざまなデータベースのデータ型に関する情報を取得することができます。
アプリケーションが異種結合ステートメントを生成すると、このアーキテクチャのクエリ プロセッサは SQL ステートメントを解析し、結合するデータベースごとに個別の SQL ステートメントを生成します。 クエリ プロセッサは、各ドライバーに関するメタデータを使用して、最も効率的でインテリジェントな結合を決定することができます。 たとえば、ステートメントが 1 つのデータベース上の 2 つのテーブルを別のデータベース上の 1 つのテーブルと結合する場合、クエリ プロセッサは、結果を他のデータベースのテーブルと結合する前に、1 つのデータベース上の 2 つのテーブルを結合できます。
サーバー上の ODBC
ODBC ドライバーは、一連のクライアント コンピューター上のアプリケーションで使用できるように、サーバーにインストールできます。 このアーキテクチャでは (次の図を参照)、ドライバー マネージャーと 1 つの ODBC ドライバーが各クライアントにインストールされ、別のドライバー マネージャーと一連の ODBC ドライバーがサーバーにインストールされます。 これにより、各クライアントは、サーバー上で使用および保守されているさまざまなドライバーにアクセスできるようになります。
このアーキテクチャの利点の 1 つは、効率的なソフトウェアのメンテナンスと構成です。 ドライバーの更新は、サーバー上の1カ所だけで済みます。 システム データ ソースを使用すると、すべてのクライアントで使用するデータ ソースをサーバー上で定義できます。 データ ソースをクライアントで定義する必要はありません。 接続プールを使用すると、クライアントがデータ ソースに接続するプロセスを効率化できます。
通常、クライアント上のドライバーは、ドライバー マネージャーの呼び出しをサーバーに転送する非常に小さなドライバーです。 そのフットプリントは、サーバー上の完全に機能するODBCドライバーよりも大幅に小さくすることができます。 このアーキテクチャでは、サーバーのコンピューティング能力が高い場合は、クライアント リソースを解放することができます。 さらに、バックアップ サーバーをインストールし、負荷分散を実行してサーバーの使用を最適化することで、システム全体の効率とセキュリティを強化することができます。