PHP 用の DB2 ヘルス・モニター・サンプル・アプリケーションの作成: パート 1: DB2 9 を使用して SOA をインプリメントする

1 つのパラダイム。無限の可能性。

サービス指向アーキテクチャー、特に Web サービスへの最近の支持の高まりを受けて、データベース管理システムにおける発展が求められるようになっています。IBM® DB2® 9 は、開発者が SOA などの設計パラダイムを利用する上で中間層アプリケーション・ロジックを追加導入することなく、アプリケーションに最も適したテクノロジーを使用できるデータベース・ソリューションとなっています。
DB2 ヘルス・モニター・サンプル・アプリケーションを例として使用しながら、これを可能にする方法を見ていきます。

Rizwan Tejpar, DB2 Management Systems Developer, IBM

Rizwan TejparRizwan Tejpar は、IBM の業界別インターンシップ・プログラム (IIP) の学生であり、IIP において DB2 のオープン・ソース・テクノロジーとの連係を示すサンプル・アプリケーションを開発しています。Tejpar は、2006 年には ZendCon コンファレンスに、2007 年には SDWest コンファレンスに出席して、トレード・ショーの会場で開発者向けの DB2 pureXML™ 機能のデモンストレーションを行いました。最近では PHP 用のDB2 ヘルス・モニター・サンプル・アプリケーションに貢献し、これはデータベースのヘルス・モニターに SOA の着想を取り入れたものでした。Tejpar には、これ以外にも C++、C#、.NET、SQL、XQuery、および JSP などのプログラミング言語の経験があります。



2007年 12月 20日

設計目標

DB2 ヘルス・モニター・サンプル・アプリケーションの概念を開発したとき、サービス指向アーキテクチャー (SOA) の利点を一般の人々にもたらすという IBM のビジョンを促進することがその目標となりました。私の場合について言えば、DB2 の見地からそれを示すことです。DB2 ヘルス・モニター・サンプル・アプリケーションは、次のような点で実行可能なビジネス・ソリューションを作るために、多くのイニシアチブを取り込んで作成されました。

  • コスト - オープン・ソース・テクノロジーを適切に利用して、既存のインフラストラクチャーを利用する。
  • 開発 - できる限りプログラミング言語とオペレーティング・システムの独立性を維持する。
  • スケーラビリティー - 最小限の要員を増やすだけで、従来および新規の両方のテクノロジーの拡張性を確保できる。
  • 保守容易性 - ベスト・プラクティスおよび標準を使用して将来の開発コストを削減する。

DB2 ヘルス・モニター・サンプル・アプリケーションは、これらのイニシアチブを取り込み、それと同時にアプリケーション開発者には既存のデータをサービスとして公開し、技術に特に精通していないビジネス・リーダーにも SOA の価値を提示できるように設計されました。

2 つのパートから構成されるこのシリーズでは、SOA および XML データの使用という両方の見地から PHP 用の DB2 ヘルス・モニター・サンプル・アプリケーションについて説明します。

サービス指向アーキテクチャー

通常、アプリケーションを開発するときに最初に考えるのは、どのような種類のテクノロジーを使用するべきかという点です。
選択したテクノロジーがたどるシナリオは、従来から次のいずれかの結果となります。

  • タスクに最適なテクノロジーの選択
  • タスクに過不足ないテクノロジーの選択

いずれのケースにおいても、開発者は、コードの再利用、プラットフォームの独立性、パフォーマンスのトレードオフを考慮しなければならず、それと同時にベンダー・ロックインも回避する必要があります。

この問題を解決するために、アプリケーション開発者は、ソフトウェア・スタックの柔軟性が得られるのと同時にレガシー・データを処理できて、サービス品質も維持されるソリューションを必要としています。サービス指向アーキテクチャー (SOA) は、XML を、かつては互換性のなかったソフトウェア・スタックが通信し合える共通のメディアとして使用することにより、これを実現しています。図 1 に、典型的な SOA スタックを示します。

図 1: SOA スタック
図 1: SOA スタック

DB2 ヘルス・モニター・サンプル・アプリケーションの場合は、次のソフトウェア・スタックを使用しました。

  • プレゼンテーション:HTML、CSS、JS (AJAX)
  • ビジネス・ロジック:PHP
  • データ・ソース:DB2 9 Express-C
  • Web サーバー:Apache HTTP Server
  • オペレーティング・システム:Windows および Linux

SOA のテーマどおり、DB2 ヘルス・モニター・サンプル・アプリケーションで使ったソフトウェア・スタックは、次の設計目標に沿った最善のテクノロジーの選択となっています。

  1. プレゼンテーション・レベルでは、AJAX によってヘルス・モニターの概念が非常にうまく表現されています。つまり、このテクノロジーを非同期に使用して、システムに関する頻繁に発生する定期的な更新を取得できます。
  2. ビジネス・ロジック・レベルでは、PHP が J2EE や .NET などのエンタープライズ・クラスの重いフレームワークを代替する軽い中間層の役割を果たしています。
  3. PHP、Apache、および Linux は、DB2 がオープン・ソース・テクノロジーとの併用が可能であることを物語っています。

最適なテクノロジーを使用しましたが、SOA パラダイムにおいては、そもそも XML へのデータ変換の問題が残されています。

過去においては (今でも続いていますが)、アプリケーションのデータ・アクセス層またはビジネス・ロジック層で PHP、Java、または C# などの中間層プログラミング言語を使用することによってデータの操作および必要な書式への変換を行うことで、開発者はこの問題を解決してきました。これは許容できる範囲ではありますが、明らかにソフトウェア設計のベスト・プラクティスを逸脱しています。

本来、データを保管するだけではなく、データベース操作言語 (DML) を使用してデータを更新し、必要な書式で返すこともデータベースの役割です。この処理にプログラミング言語を使用するべきではありません。これはちょうど中間層で 2 つの SQL 照会を実行して手動でデータを結合すべきではないのと同様であり、既存の XML データを使用する場合や SQL データを XML に変換する場合にも適用すべきです。

これは伝統的に、データベース管理システム (DBMS) またはデータ・ストレージ・メカニズムも、ソフトウェア・アーキテクチャーにおけるそれぞれの重要な進化によって発展していかなければならないという考えに受け継がれています。データ・ストレージ・メカニズムが、フラット・ファイルの使用からリレーショナル・データベースへと進化を遂げたのと同様に (マルチユーザーおよび多層構成アプリケーションの必要性から)、SOA の導入 (特に Web サービス) は、DBMS が XML を使用できるべきであるという要件を生み出しています。

IBM DB2 9 ソフトウェアは、pureXML™ テクノロジーおよびハイブリッド・データベース・エンジンを使用することによって、次の 2 つの見地からこの問題を解決します。

  • レガシー・データ
  • XML データ

ストレージ方式には関係なく、データが従来の SQL データ型であっても、新しい XML データ型であっても、XML として取り出せるというのが pureXML を支える原則です。

DB2 ヘルス・モニター・サンプル・アプリケーションは、前者のアプローチを使います。まず、データベースにすでに存在している一連のユーザー定義関数 (UDF) を使用してすべてのヘルス・モニター・データを収集してから、リレーショナル表の形式で標準的な SQL データ型を返します。次に、pureXML を使用して、すべてのヘルス・モニター・データを DB2 9 エンジン自体の中で XML に変換します。

アーキテクチャー的には、pureXML を併用する SOA パラダイムによって、次のように変換が行われます。

図 2: パッケージ・アーキテクチャー
図 2: パッケージ・アーキテクチャー

上図のように、単一の完全な SOA アプリケーションは、プロデューサーとコンシューマーという 2 つの部分から構成されます。PHP 用の DB2 ヘルス・モニター・サンプル・アプリケーションについても同じですが、これらの構成要素のそれぞれは、さらに別々のプレゼンテーション層、ビジネス・ロジック層、データ・アクセス層にまたがって完全に分散する (ベスト・プラクティスのソフトウェア設計パラダイムに記述されているとおり)、一連のパッケージに細分化されます。

プロデューサーの視点からは 2 つのパッケージがあります。

  1. Web サービス・プロデューサー DB - データ・ソースに接続し、照会を作成してデータ・ソースに対して実行するパッケージ
  2. Web サービス・プロデューサー - 通信が経由する SOAP サーバーに加え、WSDL (標準化された XML 文書フォーマット) によって Web に公開する機能を含むパッケージ

同様にコンシューマーの視点からも 2 つのパッケージがあります。

  1. Web サービス・コンシューマー - Web サービスに要求を送信し、XML 出力を受信する SOAP クライアントが含まれるパッケージ
  2. Web サービス・コンシューマー GUI - XML データをユーザーにとって意味のあるフォーマットで表現するパッケージ

DB2 ヘルス・モニター・サンプル・アプリケーションについて興味深い点は、データ・ソースからプレゼンテーション層への XML データの伝搬です。データ (従来の SQL データ型) のオリジナルのストレージ方式、およびエンド・ユーザーへの最終的なレンダリング (スタイルシートを使用して XML として表示されている場合がある) を除いて、すべてが XML です。

ここでも DB2 9 pureXML は、XQuery ステートメントを使用して、データベース・エンジン自体の中で SQL データを XML に変換します。従来のリレーショナル構造では SQL が DML を意味するのと同様に、XML の場合は XQuery が DML と同等の役割を果たします。DB2 ヘルス・モニター・サンプル・アプリケーションは、Web サービス・プロデューサー DB パッケージを使用して、データ・アクセスのみを実行します。つまり、XQuery ステートメントを作成して DB2 9 エンジンに送信し、データを収集して、記述して、XML としてデータを組み立てます。

このサンプルは単一アプリケーションのみを示していますが、複数の層、サービス、アプリケーションが存在するエンタープライズ・レベルでは、どのような様子になるか想像してみてください。たとえサービス管理および共通タスクの共用に集中化アプローチを使用したとしても、各アプリケーションにデータベースのデータを操作して XML として表現する役割を担当させていたとしたら、データベースによって保証済みのデータ保全性を開発者が侵害することになります。

まとめ

この記事では、SOA の観点から PHP 用のDB2 ヘルス・モニター・サンプル・アプリケーションの作成を検証し、ソフトウェア・スタックの柔軟性およびベスト・プラクティスのソフトウェア設計を維持するという概念を DB2 9 がどのようにサポートしているかを見てきました。

パート 2 では、pureXML の観点から DB2 ヘルス・モニター・サンプル・アプリケーションを検証し、詳細なコード・サンプルを示しながら開発者、データベース管理者、およびビジネス全体にもたらされる利点について説明します。パート 2 で示すコード・サンプルは、PHP コード・スニペット、SQL 照会、SQL/XML 照会、および XQuery ステートメントなどです。

参考文献

その他のダウンロード

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Information Management, SOA and web services
ArticleID=378030
ArticleTitle=PHP 用の DB2 ヘルス・モニター・サンプル・アプリケーションの作成: パート 1: DB2 9 を使用して SOA をインプリメントする
publish-date=12202007