1

私は SSIS を初めて使用し、その並列処理機能を使用してデータベースからデータをインポートしようとしています。

私の仕事はこれを行うことです: 数テラバイトのデータベースを一連のフラット ファイルにできるだけ早くインポートします。

私はこれを考えていました:

Microsoft Server 2008 HPC クラスター (3 ノード) を自由に使用できます。HPC SOA ジョブを作成して、3 つの計算ノードすべてが SQL Server に独立して接続し、データの一部を並行してインポートできるようにすることを考えていました。もちろん、これは SSIS とは何の関係もなく、独立したユーティリティになります。

その後、SSIS とその並列インポート機能に出会いました。私のSSISサーバーはあまりハイエンドではありません.4GBのマシンしかありません。私はどういうわけかSSISを使用する傾向があります.SSISはデータインポートを行うための理想的なMicrosoftの方法です.

カスタム タスク (または利用可能なもの) を使用し、このインポートを並行して行う最良の方法は何ですか?

4

2 に答える 2

1

Gitmo、あなたの質問を誤解しているかもしれませんが、試してみます。SQL Server インスタンスから複数のファイルにデータを移動する必要がありますね。SSIS が提供する並列化されたデータ移動機能を活用したいと考えています。つまり、複数のデータ フロー タスク (DFT) が同時に実行されます。同時書き込みの問題のため、ターゲット ファイルごとに DFT を 1 つしか持つことができません。

ソースが SQL Server データベースで、ターゲットが一連のファイルである複数の同時実行データ フロー タスクを取得するには、次の方法を試すことができます (SSIS から取得できる並列化には上限があることに注意してください。 CPU コア数、BIDS/Visual Studio で実行しているかどうか、パッケージのさまざまな設定、サーバー、SQL Server インスタンス、およびその他の多くの考慮事項を含む多くの要因):

  1. 複数の同時 DFT ソリューション: 1 つの接続マネージャーがソース SQL Server データベースを指し、それぞれが個別のターゲット ファイルを指している多数の接続マネージャーと、ターゲット ファイルごとに 1 つの DFT を含む単一の SSIS パッケージ。DFT はすべて互いに切り離されています (優先順位の制約や緑/赤/青の線/矢印はありません)。これらの DFT を並列化するための優れた方法を実行する必要がある前または後の ETL ステップがある場合、優先順位の制約/矢印を介して前後のタスクに接続されているシーケンス コンテナーにそれらをすべてドロップします。独自のシーケンス コンテナー内のこれらの切断された DFT は、すべて同時に実行しようとします。
  2. 複数の同時 DTEXEC ソリューション: それぞれが独自のターゲット ファイル固有の DFT を持つ複数の SSIS パッケージ。個別の CMD ウィンドウまたは GUI を使用して、個別の DTEXEC プロセスを手動で実行します。以下の#3は、このソリューションのバリエーションであり、おそらくより良いソリューションです.
  3. 複数の子パッケージを実行する親マスター パッケージ 解決策: 上記の #2 で開発したターゲット ファイルごとのパッケージを単一の親マスター パッケージにラップします。親パッケージには、同時に実行されるパッケージ実行タスクが複数あります。ここでも、これらのパッケージ実行タスクは他のタスクから切り離されます。これを行う良い方法は、複数のパッケージ実行タスクを独自のシーケンス コンテナーにドロップすることです。以前と同様に、パッケージ実行タスクが切断されている (優先順位の制約/矢印がない) 場合、それらはすべて同時に実行しようとします。

Microsoft SQLCAT チームによるこの優れた記事を見て、さらにアイデアや洞察を得ることができます: Top 10 SQL Server Integration Services Best Practices

これらの同じアイデアにはさまざまなバリエーションがあり、SSIS の内外で利用可能な他のソリューションが存在する可能性があります。幸運を!

于 2011-05-19T22:10:17.827 に答える
0
于 2011-12-21T04:02:09.730 に答える