前回の記事では、新しいデータソース用のドライバーを構築する際に、その複雑さを評価するためにどのような要素を考慮しているかを説明しました。今回は、CData 製品のドライバーアーキテクチャをご紹介します。
まずはハイレベルな概要から見ていきましょう。
以下の図の上部にあるのが、ドライバーフロントエンドインターフェースと呼ばれる、サポート対象のテクノロジーです。これらが CData 製品のドライバーモデルを各種ドライバー / テクノロジーインターフェースに適応させる役割を担っています。

中間には、2 つの大きなカテゴリに分かれるコアドライバーコードがあります。1 つ目は、多くの CData Drivers で共通して使われる機能を提供するドライバーサポートサービスです。この記事ではそのいくつかを掘り下げていきます。

ドライバーコアの 2 つ目は、アーキテクチャにおいて重要な位置を占めるデータアクセススタックです。ほとんどのクエリ実行時に上下のレイヤーを追加してドライバーコアを拡張できる仕組みになっています。
最後に、図の下部にあるのがプロバイダー固有のコードです。上位レイヤーの拡張ポイントに対する実装が含まれ、ドライバー固有のコードをクエリ実行パイプラインに接続します。ここにはデータアクセススタックのドライバー固有の実装も含まれます。

フロントエンドテクノロジー
ドライバーフロントエンドインターフェースは、データアクセステクノロジーそのものです。ユーザーやアプリケーションがやり取りするレイヤーであり、ドライバーによって公開されます。各フロントエンドテクノロジーは、次の 2 つの部分で実装されています:
すべてのドライバーで共有されるコア実装: データソースに依存しないコードを含み、データソース固有のコードを組み込める内部フレームワークとして実装されています。たとえば、CData JDBC Drivers には Statement や ResultSet などのコア JDBC コンセプトのベース実装が含まれています。
インターフェースのデータソース固有の実装: この部分は完全に自動コード生成で実現されており、非常に柔軟です。
この自動コード生成が技術スタックの重要な要素であり、ドライバーで新しいエディションや新しいテクノロジーを迅速にサポートすることを可能にしています。
仕組みの概要を見ていきましょう。
このレイヤーは非常に高い柔軟性を提供し、開発プロセスを大幅に簡素化します。具体的に見ていきましょう。
各データソースに対して、サポートするフロントエンドテクノロジーを選択できます。たとえば、あるデータソースに対して Microsoft Power BI コネクタを公開する必要がなければ、従来のデータアクセスプロバイダーだけを公開する、といった選択が可能です。
標準的な設定オプションや接続プロパティを一度定義すれば、多くのドライバーで再利用できます。これにより、すべてのドライバーで一貫したインターフェースと期待どおりの動作を容易に構築できます。たとえば、ほぼすべてのドライバーに、ファイアウォールやプロキシサーバーを設定するための接続レベルのプロパティがあります。これらを中央の場所で一度だけ定義することで、すべてのドライバーにわたって定義とドキュメントの一貫性を確保しています。
ドライバーに新しい接続プロパティやオプションを導入したい場合も、一度宣言するだけで、サポートされるすべてのエディションとテクノロジーで追加作業なしに利用できるようになります。同時に、エディション固有のオプションを定義したり、必要に応じて非表示にしたりして、設定をシンプルに保つこともできます。
新しい CData Driver を作成する際、テクノロジー固有のフレームワークとデータソース固有のコードは共通のインターフェースで接続され、サポート対象テクノロジーのいずれかでプロバイダーを提供できます。テクノロジー固有の実装にバグがあったり、新機能を追加したい場合でも、コード生成テンプレートを一度更新するだけで、ドライバーラインナップ全体に修正が反映されます。
このモデルにより、CData 製品は新しいプラットフォームへの対応や新テクノロジーでのドライバー提供を、これまで以上に迅速に行えます。必要なサポートコードとテンプレートを一度構築するだけで、データソースポートフォリオ全体にデプロイできるからです。
まとめ
フロントエンドでのコード生成を基盤とするフレームワークにより、さまざまなドライバー / アダプターテクノロジーをサポートするネイティブドライバーを構築できます。柔軟で拡張性の高いモデルのおかげで、新しいテクノロジーへの対応も容易です。
このアーキテクチャにより、テクノロジー全体で一貫して機能し、アップデートと改善が全面的にサポートされる CData Drivers を構築できます。
シリーズの次の記事では、フレームワーク内のコアドライバーサービスについて見ていきます。
※本記事はCData US ブログ CData Architecture: Supporting Multiple Technologies の翻訳です。