その他のドライバーのアーキテクチャ

ODBC ドライバーの中には、前述のアーキテクチャに厳密に準拠していないものがあります。 これは、ドライバーが従来の ODBC ドライバー以外の職務を実行するか、通常の意味でドライバーではない可能性があります。

中間コンポーネントとしてのドライバー

ODBC ドライバーは、ドライバー マネージャーと 1 つ以上の他の ODBC ドライバーの間に存在する場合があります。 中央のドライバーが複数のデータ ソースを操作できる場合は、データ ソースに実際にアクセスする他のモジュールへの ODBC 呼び出し (または適切に変換された呼び出し) のディスパッチャーとして機能します。 このアーキテクチャでは、中央のドライバーがドライバー マネージャーの役割の一部を担っています。

この種のドライバーのもう 1 つの例は、ドライバー マネージャーとドライバーの間で送信される ODBC 関数をインターセプトしてコピーする ODBC 用の spy プログラムです。 このレイヤーを使用して、ドライバーまたはアプリケーションをエミュレートできます。 ドライバー マネージャーでは、レイヤーはドライバーのように見える。ドライバーの場合、レイヤーはドライバー マネージャーと見なされます。

異種結合エンジン

一部の ODBC ドライバーは、異種結合を実行するためのクエリ エンジンを基に構築されています。 異種結合エンジンのあるアーキテクチャ (次の図を参照) では、ドライバーはドライバーとしてアプリケーションに表示されますが、アプリケーションとしてドライバー マネージャーの別のインスタンスに表示されます。 このドライバーは、結合された各データベースのドライバーで個別の SQL ステートメントを呼び出すことによって、アプリケーションからの異種結合を処理します。

異種結合エンジンのアーキテクチャ

このアーキテクチャは、アプリケーションが異なるデータベースのデータにアクセスする共通のインターフェイスを提供します。 特殊な列 (行識別子) に関する情報など、メタデータを取得する一般的な方法を使用できます。また、共通カタログ関数を呼び出してデータ ディクショナリ情報を取得することもできます。 たとえば、ODBC 関数 SQLStatistics を呼び出すことによって、テーブルが 2 つの異なるデータベース上にある場合でも、結合するテーブルのインデックスに関する情報を取得できます。 クエリ プロセッサは、データベースがメタデータを格納する方法について心配する必要はありません。

アプリケーションには、データ型への標準的なアクセス権も持つ。 ODBC では、DBMS SQLデータ型がマップされる一般的なデータ型を定義します。 アプリケーションは SQLGetTypeInfo を呼び出して 、さまざまなデータベースのデータ型に関する情報を取得できます。

アプリケーションが異種結合ステートメントを生成すると、このアーキテクチャのクエリ プロセッサは SQL ステートメントを解析し、結合するデータベースごとに個別の SQL ステートメントを生成します。 クエリ プロセッサは、各ドライバーに関するメタデータを使用して、最も効率的でインテリジェントな結合を決定できます。 たとえば、 ステートメントが 1 つのデータベース上の 2 つのテーブルを別のデータベース上の 1 つのテーブルと結合する場合、クエリ プロセッサは、結果を他のデータベースのテーブルと結合する前に、1 つのデータベース上の 2 つのテーブルを結合できます。

サーバー上の ODBC

ODBC ドライバーをサーバーにインストールして、一連のクライアント コンピューター上のアプリケーションで使用できます。 このアーキテクチャ (次の図を参照) では、ドライバー マネージャーと 1 つの ODBC ドライバーが各クライアントにインストールされ、別のドライバー マネージャーと一連の ODBC ドライバーがサーバーにインストールされます。 これにより、各クライアントは、サーバーで使用および保守されているさまざまなドライバーにアクセスできます。

サーバー上の ODBC ドライバーのアーキテクチャ

このアーキテクチャの利点の 1 つは、効率的なソフトウェアのメンテナンスと構成です。 ドライバーは、サーバー上の 1 か所でのみ更新する必要があります。 システム データ ソースを使用すると、サーバー上でデータ ソースを定義して、すべてのクライアントで使用できます。 クライアントでデータ ソースを定義する必要はない。 接続プールを使用すると、クライアントがデータ ソースに接続するプロセスを効率化できます。

クライアント上のドライバーは、通常、ドライバー マネージャーの呼び出しをサーバーに転送する非常に小さなドライバーです。 そのフットプリントは、サーバー上の完全に機能する ODBC ドライバーよりも大幅に小さくすることができます。 このアーキテクチャでは、サーバーのコンピューティング能力が高い場合、クライアント リソースを解放できます。 さらに、バックアップ サーバーをインストールし、負荷分散を実行してサーバーの使用を最適化することで、システム全体の効率とセキュリティを強化できます。