1. ホーム
  2. データベース
  3. デービーツー

IBM DB2 Connectの紹介(1)

2022-01-19 18:30:53
現在視聴中のdb2チュートリアルは、「IBM DB2 Connect入門(1)」です。
本シリーズのパート1では、まずDB2 Connectが提供するさまざまなプログラミングインターフェイスと、それらを実装するドライバについて説明しました。最終回では、DB2 Connectが提供する通信インフラを大まかに説明し、このインフラによってメインフレームのリソースの使用量が大幅に削減され、分散アプリケーションがメインフレームのプラットフォームの利点を最大限に活用できること(混合ワークロードを容易に管理し、アプリケーションの可用性を継続的に提供するなど)を確認しました。
図1は、DB2 Connectがプログラミング・インターフェース(JDBC™, SQLJ, ODBC, DB2 CLI, OLE DB, .NET®, Embedded SQLドライバーとして実装)と通信インフラで構成されている様子を示したもので、まだ覚えている方も多いと思います。
図1. DB2 Connectは、クライアントサーバーアプリケーションやWebベースのアプリケーションをメインフレームで活用するためのプログラミングインターフェイスと通信インフラで構成されている 
今回は、上記の通信基盤の特徴の一つである、異種分散データへの統一的なアクセスを実現するDB2 Connectについて説明します。
このソリューションの統一アクセス、分散、異機種混在の詳細を説明する前に、通信インフラそのものに目を向ける必要がある。DB2 Connect は、この通信インフラを Windows®、Linux(例:Linux for zSeries)、UNIX® サーバー上に配置できる通信サーバーという形で提供します。この通信サーバーは、DB2 UDB データベースサーバーを構築するために使用された同じコードベースを使用して構築されているため、DB2 UDB サーバーの種類のアーキテクチャーの品質をすべて継承しています。
実は、今回説明する機能は、DB2 Connectサーバーそのものにデータベースを作成するという要件があります(DB2 Universal Database™(UDB)は必要ないところです)。一見すると、本連載の第1回で述べた「DB2 ConnectはアプリケーションとDB2 for z/OSおよびDB2 for iSeries®データベースを接続するだけで、DB2 Connectはデータを管理しない」という話と矛盾するように思われるかもしれません。しかし、この DB2 Connect サーバー上に作成するデータベースは、データを保持しないことを明確にしておく必要があります。単にアプリケーションに統一された、あるいは単一のデータベースイメージを提供するための単一の接続ポイントとして使用されます。つまり、DB2 Connect サーバーは、実際にデータを管理する別のデータベース・サーバーにデータのリクエストをルーティングしているだけなのです。
パート1では、DB2 Connectを競合する通信パイプと区別するためのいくつかの機能について学びましたが、DB2 Connectが少なくともその仕事(アプリケーションとメインフレームの接続)を行っていることは、すでにご存知でしょう。DB2 Connectの基本的なアーキテクチャを理解したところで、このシリーズのパート1(副題:中身)よりもさらに踏み込んで、ここからパート2を開始することにしましょう。
後編では、データアクセス・プラットフォームとしてのDB2 Connectについて説明しますが、ここではメインフレーム上のDB2だけを対象にしているわけではありません。例えば、DB2 Connect ワークステーションは、DB2 for z/OS データベースと Windows データベース上の Informix® IDS との分散ジョインを同じトランザクションで実行できることをご存知ですか? 例えば、DB2 Connect ワークステーションは、DB2 for z/OS データベースと Windows データベース上の Informix® IDS との分散ジョインを同じトランザクションで実行し、2 相コミット(2PC)の組み込みサポートによりこれらのデータソースを同一コミット内で更新することが可能です。私は、いくつかの巧妙な機能を見つけることができると述べましたが、これはそのうちの1つです。これがフェデレーション、あるいはWebSphere® Information Integrator(旧DB2 Information Integrator)のように聞こえるなら、そうです。実際、すべての DB2 UDB および DB2 Connect サーバーには、WebSphere Information Integrator の DB2 UDB ファミリー全体と Informix IDS に対するフェデレーション・サポートがエンジンに組み込まれています。WebSphere Information Integrator のような製品は、フェデレーションエンジンの範囲を拡張し、他のリレーショナルデータソース(Oracle、Microsoft® SQL Server)、非リレーショナルデータソース(ADABAS、VSAM)、OLE DB、XML、その他企業内のあらゆるデータソースを含めることが可能です。
異種分散データソースへの統一的なアクセス
Unified、Distributed、Heterogeneousの意味はわかっても、DB2 Connectがこれらの概念をどのように実装しているかはご存じないでしょう。IBM WebSphere Information Integrator 製品をよくご存じで、これらの言葉がそれらをよく表していると思われるかもしれません。この記事を読み進めることで、これらの製品の相互関係がより明確になります。
ユニファイドアクセスは、異種環境でのオープンアプリケーションの複雑さを軽減するために非常に有効な手段です。アプリケーションプログラマーは常に個々のデータソースへの接続を1つずつ確立することができますが、アプリケーションで1つのデータベース接続だけを使用する方が簡単です。異なるデータソースへの異なる接続には、複数のドライバが必要です(たとえば、単一の DB2 および Informix JDBC ドライバ)。アプリケーションで複数の異なる接続を使用すると、データを単一のデータベースで管理しているかのように扱うことができません(たとえば、アプリケーションプログラマーは、接続操作を実行する前に複数のデータソースからデータを取得する必要があります)。また、複数の異なる接続を使用する場合、アプリケーション内のコードの位置が固定されるため、データアーキテクトがビジネスニーズの変化に合わせてデータの位置を自由に変更することができなくなります。
これに対して、ユニファイドデータアクセスの仕組みは、アプリケーションプログラマーに、企業のすべてのデータ資産へのシングルポイント接続を提供します。単一のAPI(ドライバ)を使用でき、単一のスタイルのSQLを使用でき(SQL Serverが通貨データ型を使用し、DB2 UDBが使用しないことを心配する必要はありません)、データの場所を抽象化して、既存のアプリケーションに影響を与えずに変更することができます。最後に、プログラマーはすべてのデータを同じリレーショナルデータベースから取得したものとして一貫して扱うことができ、そのデータベースはトランザクションの完全性を保証しながらデータの接続、ソート、フィルタリングを管理することができます。
複数のデータソースへのアクセスを調整するよりも、単一のデータベースを使用する方がはるかに簡単であることは、ご理解いただけたと思います。しかし、当社のIBM情報管理ソリューションとの違いは、既存のアプリケーションを廃棄して、すべてDB2データベースに移行することを期待しないことです。それは現実的ではありませんから。
DB2 Connectは、3つの異なるメカニズムのうちの1つを通じて、シンプルかつ直感的な方法でアクセスすることを可能にします。
データベースの統合 
ストアドプロシージャ 
SQL 関数
DB2 Connectと連携データベース
DB2 Connect には、ベースレベルの連携データベース機能が組み込まれています。この機能は、以前は IBM DataJoiner 製品で提供されていたので、ご存知の方も多いかもしれません。バージョン 8 からは、連携データベースのサポートが DB2 Connect と DB2 UDB サーバーの一部となり、誰でもこの機能を使用するために追加の製品を購入する必要はありません。つまり、Linux、Windows、UNIX サーバーに DB2 Connect サーバーを導入すると、連携データベースを作成することができ、アプリケーションからこの連携データベースに接続することができるようになります。連携データベースへの接続が確立された後、リクエストは実際のデータソースに送られるが、関数補償、データ型変換、有効データ検索の最適化などの複雑な処理は、ユーザーには透過的である。
DB2 Connect のフェデレーションコンポーネントは、DB2 UDB for Linux、DB2 UDB for UNIX、DB2 UDB for Windows、DB2 UDB for VSE/VM、DB2 UDB for z/OS、DB2 UDB for iSeries および Informix IDS データベースサーバーに対する読み取り/書き込みサポートを提供します。
Informix IDS データベースサーバーの書き込みをサポートします。
DB2 Connect のフェデレーション機能を使用すると、図 2 に示すように、これらのサーバーに分散してリクエストを実行することができます。
図2. DB2 Connect の統合データベース機能
例えば、次のような文です。
SELECT * FROM T1, T2 where T1.C1