Integration Servicesで異種データも楽々インポート
SQL Server 2005で生まれ変わったDTS
SQL Server 2000までDTS(Data Transformation Services)として提供されてきたETLツールが、SQL Server 2005より「SQL Server Integration Services」(以下、SSIS)として一新された形で提供されます。
DTSと同じく、SQL Serverに付属する形で提供されるSSISですが、単なる付属ツールという枠には収まらない非常に多くの機能拡張が行われています。一度にすべてを紹介することはできないので、今回は概要編、次回は実践編という位置付けで、2回にわたってSSISに関する情報をお届けします。
エンタープライズレベルに到達したIntegration Services
SSISの機能紹介に入る前に、まずETLツールとは何を目的としているか、まずはそのあたりを確認しておきましょう。
ETLとは「Extract/Transform/Load」の略称です。企業に存在するさまざまなデータをExtract(抽出)し、利用しやすい形にTransform(変換)を行い、データウェアハウスなどのシステムにLoad(ロード)する一連の処理、運用の支援を行うサービスをETLツールと呼びます。
企業には多種多様な形でデータが存在します。営業マンが管理するExcelシートからERPやCRMなどの巨大システムを支えるデータベースまで、その利用目的から保存形式まで実にさまざまです。これらのデータを抽出/変換/ロードするための専用システムを開発するには、非常に大きなコストが必要でした。SQL ServerやOracle、DB2などのRDBMSや、テキストファイル、Officeドキュメントなど多くのデータソースに対応し、さらにはFTPでの接続やメール送信、処理失敗時の処理など、開発しなければならない機能群は、どれも複雑かつ困難です。
このような問題に対する1つの答えが、SSISなどのETLツールです。ETLツールは、GUIによってデータの加工や取得といったタスクの設計・開発を容易に行うことができ、コストを抑えながら、精度・パフォーマンスを維持したETL処理を開発することが可能となります(図1)。
多数のシステムを運用する企業では欠かすことのできないETLツールですが、SQL Server 2000のDTSは企業環境で使うには開発環境の生産性や運用性に不足がありました。SQL Server 2005ではこのような点を踏まえ、エンタープライズレベルに対応するための生産性や運用性にかかわる機能強化が多く行われています。ここからは、SSISで強化されたポイントを取り上げます。
開発・管理環境の統合
SQL Server 2000までは、ETL処理の開発環境としてDTSデザイナが提供されてきましたが、SQL Server 2005では、新たに提供される開発ツール「BI Development Studio」を利用することになります(図2)。BI Development Studioは、Visual Studio 2005のシェルによってVisual Studio 2005と同様のユーザーインターフェイスを実現した統合開発環境です。GUIによるオブジェクトのドラッグ&ドロップを中心としたETL処理の開発に加え、Visual Studio 2005と同様にプロジェクトの管理やデバッグなども可能です。また、BI Development StudioにはIntegration Servicesだけでなく、Analysis ServicesやReporting Servicesなどの開発環境も統合されています。
また、SQL Server 2000でおなじみだった「DTSインポート/エクスポートウィザード」もBI Development Studioより行うことができます。単純なETL処理は、インポート/エクスポートウィザードを利用することにより素早く作成することができます。
GUIツールであるBI Development Studioに加えて、SSISではコマンドラインツールも用意されています(表1)。パッケージ実行用ツールを使えば、独自に作成したスクリプトやプログラムからパッケージを実行することができます。
ツール名 | 説明 |
dtutil | SSISパッケージの管理 |
dtexcec | SSISパッケージの実行 |
dtexecui | SSISパッケージ実行に関する設定、実行コマンドの作成 |
dtswizard | インポート/エクスポートウィザードの起動 |
表1 SSISのコマンドラインツール |
SSISパッケージの実行状況監視については、SQL Server 2000 Enterprise Managerの後継としてSQL Server 2005より用意される「SQL Server Management Studio」を利用します。SQL Server Management Studioを利用することにより、データベースの管理を一元化することが可能となります。SSISの実行状況監視は、ローカルサーバだけでなくリモートサーバのSQL Serverで実行されるパッケージについても行うことができます。
新しいアーキテクチャ
SQL Server 2000のDTSデザイナでは、ETL処理を開発する際、処理の流れとデータの流れが混在してしまうことが1つの問題でした。そこでSSISでは、条件分岐やメールの送信、ログの書き込みといったタスクと、データを抽出/変換/挿入する処理を、それぞれ「制御フロー」と「データフロー」に分けて開発することを可能としました。
「制御フロー」では、ETL処理を行うに当たって発生する流れの制御を記述します。ループの処理やメール送信、FTP接続、プロセス実行、ログの書き込みなどがこれに当たります。「データフロー」では、実際にファイルやデータベースに接続し、データの抽出、変換加工、挿入といったデータの流れを記述します。データフローは制御フローから呼ばれる形となるため、データフローで複雑な処理を記述しても、全体としては簡潔さを保つことができます(図3)。
SSISは制御フローを「データ変換ランタイム(Data Transformation Runtime:DTR)」、データフローを「データ変換パイプライン(Data Transformation Pipeline:DTP)」という別々のエンジンで処理しています。SSISでは、このDTRとDTPの記述がメインの開発作業となります。
制御フローでは、主に次のようなタスクを実行することができます。
目的 | タスク |
データの参照、移動 | FTPタスク |
XMLタスク | |
Webサービスタスク | |
ファイルシステムタスク | |
外部の処理やSQL Server サービスの呼び出し |
DTS2000パッケージ実行タスク |
SQL実行タスク | |
パッケージ実行タスク | |
メール送信タスク | |
データベースメンテナンスの実行 | インデックスの再構成タスク |
データベースのバックアップタスク | |
データベースの圧縮タスク | |
統計の更新タスク | |
表2 制御フローの主なタスク |
データフローでは、主に次のような処理を実装可能です。
目的 | タスク | |
データの取得元 | DataReaderソース | |
Excelソース | ||
OLE DBソース | ||
XMLソース | ||
フラットファイルソース | ||
データの変換処理 | データ変換 | 条件分割 |
ピボット | 並べ替え | |
マージ | 列インポート | |
集計 | 列コピー | |
データの変換先 | DataReader変換先 | |
Excel変換先 | ||
OLE DB変換先 | ||
フラットファイル変換先 | ||
表3 データフローで可能な処理 |
特にデータ変換タスクに関しては、このほかにも多彩な変換コンポーネントが用意されています。DTSでは変換処理に関しても貧弱な部分がありましたが、SSISでは多彩なコンポーネントを適切に利用することにより、複雑かつ高度な処理を開発することが可能です。
パッケージの管理性向上
SSISでは、ここまでに取り上げた開発ツールの生産性向上、アーキテクチャの一新だけでなく、従来では難しかったきめ細やかな管理と堅牢性を組み込むことができます。
チェックポイント
多様なデータソースや、複雑な処理を行う以上、エラーを避けることはできません。エラー発生からいかに回復するかが問題ですが、SQL Server 2000のDTSでは、エラーが発生した場合、パッケージを始めから実行する必要がありました。規模の大きなデータや複数のタスクを扱うパッケージの場合、回復までに時間を要してしまいます。この問題に対しSSISでは、パッケージでチェックポイントを利用することにより、エラー発生からの回復を素早く行うことができます。
チェックポイントを利用する場合、パッケージの実行とステータスに関する情報がチェックポイントファイルに書き込まれます。パッケージ実行中にエラーが発生した場合、データ変換ランタイムがこのチェックポイントファイルを処理することによって、エラーが発生したタスクからの再開が可能となります。
注意すべき点として、チェックポイントは制御フローに関する実行状況が記録されますが、データフロー内の状況については記録されません。このため、全体のフローを適切に設計し、チェックポイントをうまく利用できるようにしなければなりません。例えば、OracleからデータをSQL Serverにコピーし、さらにテキストファイルへ出力する、といった処理を1つのデータフローに記述した場合、処理は常に最初から開始されます。これを、Oracleからコピーするタスク、SQL Serverからテキストファイルを出力するタスク、という形にデータフローを分けることにより再開ポイントを作ることができます。データフローを分割したことによって、ファイル出力時にエラーが発生した場合でもその処理を行ったタスクから再開できるため、エラーからの回復に要する時間を短縮することができます。
チェックポイントを利用するには、SSISよりパッケージプロパティの「SaveCheckpoints」を「True」にします。さらに「CheckpointFileName」にチェックポイントファイルの保存先を指定します。「CheckpointUsage」ではチェックポイントファイルの処理方法を設定します(表4)。
プロパティ | 説明 |
Never | チェックポイントファイルは使用しない。パッケージは先頭から実行 |
Always | チェックポイントファイルを必ず使用する。ファイルが存在しない場合エラー |
IfExists | チェックポイントファイルが存在する場合使用。ファイルが存在しない場合は、パッケージの先頭から実行 |
表4 チェックポイントファイルの処理方法 |
イベントハンドラ
イベントハンドラもSSISに加わった新機能です。パッケージ実行時にコンテナやタスクから発生するイベントを利用することにより、ETLに関する処理や管理を柔軟に行うことができます。
タスクやコンテナから発生するイベントは、タスクの開始・終了、エラー発生など各種用意されています。例えば、エラー発生に関するイベントハンドラを作成し、エラーが発生した場合はメール送信を行う、というような処理を組み込むことが可能です(図4)。
まとめ
ここまで紹介してきたとおり、SSISは従来のDTSに比べ大幅に機能強化しており、まさに生まれ変わったといえるほど、まったく別のツールになっています。SSIS単体で、非常に多くの処理をこなすことが可能であり、今後システム開発の現場でも活躍するシーンが多くなるのではないでしょうか。
次回のIntegration Services実践編では、BI Development Studioを利用してETL処理を実際に作成してみたいと思います。今回紹介できなかったログ出力機能やDTSからのアップグレードなども紹介したいと思っていますので、お楽しみに!(次回に続く)
http://www.atmarkit.co.jp/ait/articles/0601/25/news111.html