3

これはかなり漠然とした質問であり、答えるのは難しいと思いますが、この件に関する一般的な考えをいただければ幸いです。

簡単な背景を説明しましょう。

10年前、私たちはレガシーアプリケーションから入力フラットファイルを読み取ってデータロードを書き込み、それらをデータマートにロードしていました。元々、ロードプログラムはVB6で記述され、フラットファイルにカーソルを合わせ、レコードごとに次の一般的なプロセスを実行しました。

1)レコードを検索します。見つかった場合は更新します2)それ以外の場合は新しいレコードを挿入します

次に、SQL Serverを使用して一時テーブルのフラットファイルをDTSするようにこのプロセスを変更し、一時テーブルからターゲットの本番テーブルを使用して一時テーブルで大規模なセットベース結合を実行し、一時テーブルからデータを取得して使用しました。ターゲットテーブルを更新します。参加しなかったレコードが挿入されました。

これはプロセスを単純化したものですが、基本的に、プロセスは反復アプローチから「セットベース」に移行し、一度に1レコードずつ更新を実行しなくなりました。その結果、パフォーマンスが大幅に向上しました。

次に、このアプローチを使用して一般的な関数/更新パターンを実行するために、DLLに強力な共有関数のセットを作成しました。開発を大幅に抽象化し、開発時間を大幅に短縮しました。

次に、ETLツールであるInformatica PowerCenterが登場し、mgtはツールを標準化して、DTSを使用していた古いVBロードを書き直したいと考えています。

PowerCenterはレコードを繰り返し処理すると聞きましたが、いくつかの最適化のトリックを実行することを知っているので、Informaticaがどのように実行されるのか興味があります。

DTSまたはSSISを使用して、どちらが一般的にパフォーマンスが向上するかについて、腸のパフォーマンスを予測できるようにした経験はありますか?

4

1 に答える 1

6

Informatica PowerCenter 8.1.1 の両方を使用する組織に参加しました。一般的な Informatica の設定については言えませんが、この会社では Informatica は非常に非効率的だったと言えます。主な問題は、Informatica がバックエンドで非常に厄介な SQL コードを生成したことです。プロファイラーで何をしているかを観察し、テキスト ログを確認したところ、挿入/更新/削除する必要がある行ごとに個別の挿入、更新、および削除ステートメントが生成されました。Informatica の実装を修正しようとする代わりに、単純に SSIS 2008 に置き換えました。

Informatica で抱えていたもう 1 つの問題は、並列化の管理でした。DTS と SSIS の両方で、タスクの並列化は非常に単純でした。優先順位の制約を定義しないと、タスクが並列で実行されます。Informatica では、開始点を定義してから、プロセスを並行して実行するためのブランチを定義します。ワークレットまたはタスクをチェーンして明示的に定義しない限り、並列プロセスの数を制限する方法を見つけることができませんでした。

私の場合、SSIS は実質的に Informatica を上回りました。Informatica を使用したロード プロセスには、約 8 ~ 12 時間かかりました。SSIS と SQL Server エージェント ジョブを使用したロード プロセスは、約 1 ~ 2 時間でした。インフォマティカを適切に調整していれば、負荷を 3 ~ 4 時間に削減できたはずですが、それでもそれほど改善されたとは思いません。

于 2010-09-12T19:50:36.287 に答える