2016-11-14 17 views
0

現在、サードパーティのデータベースとアプリケーションを使用しているプロジェクトで作業しています。これまでのところ、TESTと私たちのデータベース間のインターフェイスデータを正常に処理することができました。しかし、大量のデータ(行100,000行、列10個など)を抽出するときに問題が発生していて、何らかの理由(停電、強制退出など)、行方不明この種のシナリオではデータの重複が発生しています。SQL Serverのインターフェイステーブル構造に問題がありました

これらのシナリオを処理するための提案をお願いします。ありがとうございました!

は、ここに私たちの現在のインタフェース構造

OurDB -> Interface DB -> 3rdParty DB 

OurDB:我々はInterfaceDb

InterfaceDBに(偽ビット列で)OurDBからレコードを抽出していますOurDBからレコードを挿入した後、 OurDBビット列を真として更新する

3rdPartyDB:すべてのレコードを抽出して削除します(すべてのレコードが抽出用であることを前提としています)。

+0

これを達成するためにどのようなツールを使用していますか? SQLのインポート/エクスポート機能ですか、他のETLを使用していますか? SSISなどのETLツールを使用すると、データをよりよく制御し、停電や強制終了を回避しながら、すばやくより適切なローディングを実行できます。物事が進行している様子については、現在のレコードにフラグを立てて削除するモデルが良いです。同様に、最新のレコードのみを取るというチェックをしていると仮定しています。 – VKarthik

+0

こんにちは@VKarthikは遅く返事を申し訳ありません。これまでは、これを行うためにSQLとC#アプリケーションしか使用していませんでした。重複したデータを避けるために、抽出前に他にどのようなチェックが必要なのか、何か提案がありますか?私はまだSSISを見たことがありませんが、それについての悪い研究はこの提案に感謝していますbtw – zxc

答えて

1

まあ、ETLツールが必要です。まず、堅牢なエラー処理を提供しながら、転送速度を大幅に向上させます。さらに、重複がsytsemに入らないようにルックアップ変換を使用する必要があります。私はルックアップを実行するためにキャッシュ接続マネージャーに行くことをお勧めします。

ソースシステム(OurDB)にrecIdという主キーがある場合は、InterfaceDBテーブルにsource_rec_idという列があります。最初の実行で100行が転送されたとします。今度は2回目の走行で、100 + 1番目のレコードを選択して次の行に移動する必要があります。この方法で、転送されたレコードの数、残りの数などを把握するために、ソースシステムと宛先システムの間にトラッキングメカニズムと1対1の相関関係があります。

SSISを理解するにはChannel 9 - msdn - SSISを参照してください。非常に有用なリソース。

+0

ありがとう!私たちのチームと議論してブレーンストーミングした後、私たちはこのツールやアプリが必要なものだと結論づけました。私は多くの研究が必要です..再びありがとう:) – zxc

関連する問題