PR
図1●Integration Servicesのアーキテクチャ<BR>左側の「Runtime(ランタイム)」という部分と右側の「Pipeline(パイプライン)」という部分から成る。
図1●Integration Servicesのアーキテクチャ<BR>左側の「Runtime(ランタイム)」という部分と右側の「Pipeline(パイプライン)」という部分から成る。
[画像のクリックで拡大表示]
表1●標準で提供されるタスク&lt;BR&gt;データフロー・タスクは1つしかないが,独立して分類される。
表1●標準で提供されるタスク<BR>データフロー・タスクは1つしかないが,独立して分類される。
[画像のクリックで拡大表示]
図2●タスクとコンテナを使った制御フロー&lt;BR&gt;並列実行する処理と順序を決めて,優先実行する処理をきめ細かく制御できる。
図2●タスクとコンテナを使った制御フロー<BR>並列実行する処理と順序を決めて,優先実行する処理をきめ細かく制御できる。
[画像のクリックで拡大表示]
図3●データフロー・コンポーネントの種類&lt;BR&gt;大きく分けて,変換元アダプタ,変換先アダプタ,データフロー変換がある。
図3●データフロー・コンポーネントの種類<BR>大きく分けて,変換元アダプタ,変換先アダプタ,データフロー変換がある。
[画像のクリックで拡大表示]
表2●標準で提供されるデータフロー・コンポーネント
表2●標準で提供されるデータフロー・コンポーネント
[画像のクリックで拡大表示]

▼SQL Server 2005は,データ変換サービス(DTS)のアーキテクチャを刷新したIntegration Servicesという機能を備える。これによりエンタープライズ・レベルのETLプラットフォームへ進化した。
▼「インテグレーション」という機能名にも表れている通り,単なるデータ処理だけではなく,ビジネス・プロセスの統合も可能にする新機能になっている。ここでは,Integration Servicesの全貌をJune Community Technology Preview版をもとに紹介する。

 SQL Server 2005は,企業の基幹システムにおいてデータを蓄積・処理するだけではなく,そのデータを意思決定のための情報として活用する機能を標準提供する「統合データ・マネジメント,データ分析・活用プラットフォーム」である。

 同製品に標準装備されるIntegration Servicesは,データを情報として活用する上で非常に重要な「データの抽出(Extract),変換(Transform),ロード(Load)」を実現するETLツールだ。この機能により,企業内に散在する各種データ・ソースから有用なデータを統合し,そのデータのクレンジング(選別)や加工・変換などを行った後,データ・ウエアハウスに格納するなどの処理が可能になる。

 Integration Servicesは,SQL Server 2000で,データ変換サービス(DTS)と呼ばれていた機能の後継に当たる。SQL Server 2005では,そのアーキテクチャを刷新し,従来から600%のパフォーマンス向上と,より高い拡張性や開発生産性を備え,大規模エンタープライズ向けのETLツールへ進化している。

 さらに,単なるデータ処理だけではなく,Webサービス*XML*(拡張マークアップ言語)にもネイティブに対応し,ビジネスに指向したプロセス制御も可能になっている。ETLツールとしてだけではなく,相互運用性の高いアプリケーション統合機能をも提供する。

大きく2つに分かれるアーキテクチャ

 Integration Servicesにおいて具体的にどのような機能が提供されるのかを紹介する前に,まずは刷新されたアーキテクチャを紹介したい。

 Integration Servicesのアーキテクチャは大きく2つに分けられる。図1拡大表示])の左側半分が,「Runtime(ランタイム)」と呼ばれる部分である。様々な設定情報の管理,ログ*管理,トランザクション*管理機能などを提供し,ビジネス・プロセスを統合処理するための流れである「制御フロー」を実行するのが主な役割になっている。また,オブジェクト・モデル(API:アプリケーション・プログラミング・インターフェース)を公開しており,これを介して実行するウィザード機能や各ユーティリティを提供する。

 一方,図1の右側半分は「Pipeline(パイプライン)」と呼ばれる部分で,データの抽出・変換・転送や集計処理を行うための「データフロー・コンポーネント」を実行するのが主要な役割になる。

 Integration Servicesは,このようなアーキテクチャによって,「パッケージ」という形式で作成された処理を実行する。パッケージは次に述べる要素から成る。

 まずは,Runtimeを構成する要素を紹介しよう。

 最初に「タスク」について説明したい。タスクは,制御フロー中の最小作業単位で,表1([拡大表示])にあるものが標準で提供される。

 テキスト・ファイルやXMLファイルやWebサービスにアクセスして構成上の定義を読み取る作業,exeファイルやスクリプト,ほかのIntegration Servicesパッケージの実行などを行う作業,SQL文およびAnalysis Servicesのキューブ*の処理を実行する作業——などがある。

 この中の「データフロー・タスク」は特別な位置付けで,制御フローからPipeline上のデータフロー・コンポーネントの処理を実行するために使われる。制御フローの任意の個所から呼び出すことができ,呼び出した時点でPipelineに処理が移行し,設定されているデータフローを実行できる。表1で分類名とタスク名が同じなのはそのためだ。データフローの詳細については後述する。

 2番目は「コンテナ」である。これは,任意のタスク・リストをグループ化する一種の器で,複数のタスクをまとめて優先順位を付けるときに利用する。Integration Servicesでは,タスクをいくつも並行実行可能だが,場合により優先順位を持たせて実行することがある。そのときはコンテナで,連続実行する複数のタスクをグループ化する。これにより,並列実行する処理と連続実行する処理をきめ細かく制御可能になる(図2[拡大表示])。

 3番目は「ループ(スペシャル・コンテナ)」だ。ループは,コンテナの派生モデルで,設定した式(評価条件)がTRUE(真)の間,設定したタスク(またはタスク・グループ)を繰り返す「For Loop」と,列挙したコレクションの数だけ設定したタスク(またはタスク・グループ)を繰り返す「For Each Loop」がある。これらを使うことで,例えば特定のフォルダに格納された全ファイルを読み込ませるなどの繰り返し処理が可能になる。

 4番目は,「優先順位制約」だ。これは,各タスク間またはコンテナ間のワークフローを定義し,場合に応じて処理内容を変えるために使用する。タスクの成功時,失敗時,完了時または特定の評価条件を満たした(式=TRUE)とき,それぞれ次にどのタスクを実行させるのかを制御可能だ。

 成功時,失敗時,完了時の定義では,任意に設定された評価条件とAND条件またはOR条件を取ることもできる。例えばあるタスク処理が正常に完了しても(成功時),評価条件を満たさない場合は次の処理に進ませないといった,きめ細かいワークフロー定義が可能である。各タスク間またはコンテナ間のワークフローのルートは,それぞれの条件に応じて複数のルートを設定できる。

 5番目は「イベント・ハンドラ」である。イベント・ハンドラは,各タスクまたはコンテナの実行時に発生する様々なイベント(エラー発生時,実行前,実行中,実行後,変数変更時など)を検知し,スペシャル・コンテナとして制御ワークフローの各タスクを別途実行する機能を提供する。

 例えば,プロセス実行タスクによって特定のexeファイルが実行されたときに,メール送信タスクによってメールを送信するための処理を起動するといった処理が可能になる。

 6番目は「ログ・プロバイダ」である。これは,タスク,コンテナ,パッケージごとに発生するイベントをキャプチャし,ログとして記録する機能を提供する。標準で対応しているログ記録先としては,テキスト・ファイル,XMLファイル,SQL Serverデータベース,SQLプロファイラ*およびWindowsイベント・ログ*がある。

データフローの構成要素は3種類

 次に,図1の右にあったPipelineにおけるデータフローの構成要素を紹介しよう。データフローは,データの抽出・変換・転送・集計処理を行うためのコンポーネントと,そのルートを指定するパスとで構成される。前述のように制御フローのデータフロー・タスクから呼び出す。

 最初に「コンポーネント」を説明しよう。これは,以下のように大きく3つに分けられる(図3[拡大表示])。

(1)様々なデータ・ソースからデータを生成し,パッケージ内のデータフローに取り込むコンポーネントである「変換元アダプタ(ソース・アダプタ)」
(2)列の値の更新,データフローへの列の追加,データフローの条件分岐,データのマージ,データの集計などの処理を行う「データフロー変換」
(3)パッケージ内のデータフローで生成されたデータを様々なデータ・ソースに書き出すコンポーネントである「変換先アダプタ」

 表2([拡大表示])が標準で提供されるデータフロー・コンポーネントの一覧である。数多くのデータ・プロバイダに対応することと,様々なデータ変換処理を行えるコンポーネントが提供されていることが分かる。

 2番目は「パス」だ。パスは,各コンポーネント間のルートを定義する機能である。処理の成功時または失敗時による分岐や,データフロー変換の「条件分割」コンポーネントを利用した条件分岐などが可能である。パスには,経由するデータの列名,型などのメタデータと,経由する実際のデータを参照する機能もある。

斎藤 泰行

マイクロソフト
サーバープラットフォームビジネス本部
アプリケーションプラットフォームグループ
シニアプロダクトマネージャ