2

複数のテーブルに挿入する SQL Server 2008 r2 ストアド プロシージャを大量に呼び出す .net WCF サービス (IIS 7.5 でホスト) があります。この WCF サービスのクライアントは 24 時間年中無休で使用されますが、夜間は処理される要求の量が少なくなります。ほとんどの場合、これは問題なく機能しますが、月に一度、同じテーブルに大量の挿入を行う SSIS ジョブを実行する必要があります。SSIS ジョブが実行されると (完了するまでに約 4 時間かかります)、WCF サービスに問題が発生し、タイムアウトが発生します。

私の最初の考えは、後でメインテーブルにマージされる一時テーブルに挿入が行われるように、ストアドプロシージャを修正することでした。ただし、SQL サーバーを担当する DBA は、SSIS ジョブが実行されている間、サーバーが完全に使い果たされていることを教えてくれました。

したがって、SQL Server にヒットしない何らかの形式のキャッシュ/キューを考え出す必要があります。このキャッシュは、回復力とスケーラビリティも必要です。App Fabric キャッシュはこれに最適なツールですか? API をざっと見たところ、キューのようにそれを利用する明確な方法がわかりませんでした。キャッシュから取得するメソッドにはキーが必要なようです。サービスを使用して、キャッシュからプルし、永続的な SQL ストアに書き込みます (SSIS ジョブが完了したら)。

過去に、MSMQ を使用して同様の問題を解決しましたが、これに関するすべてのドキュメントは非常に古いように思われるため、最近では App Fabric Cache が推奨される選択肢でしょうか?

ありがとう、

ロブ。

4

4 に答える 4

1

SQLへの書き込み/挿入をキューに入れるためにAppFabricを使用できると思いますが、それがAppFabricの意図したことではないと思います。

AppFabric を使用してこれを実現する方法:

  1. 各書き込み/挿入にランダムなキーを与えます。
  2. 挿入のキーを格納するインデックス オブジェクトを作成します。
  3. 一括挿入を行う必要がある場合は、挿入に使用されるキーの配列を返す GET を呼び出すだけです。
  4. キーのリストを繰り返し処理し、挿入を開始します。

MSMQ の仕事のように聞こえますが、あなたの質問を読み始めたときに最初に頭に浮かんだテクノロジーでした。

また、RabbitMQ や ActiveMQ などのオープン ソースの代替手段を検討することもできます。

于 2013-04-05T17:05:16.333 に答える
1

2 つの即時オプションが表示されます。a) クライアントに NetMsmqBinding を使用するように依頼します。ただし、Windows Server AppFabric は Azure AppFabric と統合されており、他のオプションがあることに注意してください。特に、Windows Server v1.0 の Service Bus を検討することをお勧めします。これは、Win Server を Azure プラットフォームとより一致させるための無料の拡張機能です。Windows Server Service Bus と MSMQ のどちらでも、設定にあまり慣れていない場合は、コミュニティからのアドバイスでかなり簡単に実行できます。

b) Sql Server Service Broker を使用します。これは SQL Server ネイティブのメッセージング システムであり、SP を非同期的に呼び出すことができます。

于 2013-04-07T08:22:22.637 に答える
0

最初に質問を読んだとき、Redis のことを考えました。(AppFabric と比較して)セットアップが非常に簡単で、スケーラビリティが実証されています。分散キャッシングに使用することも、この場合のように、組み込みのキュー機能を使用することもできます。ミックスにツールや複雑さを追加する必要はありません。

于 2014-03-24T02:33:45.333 に答える