2

一部のサービスは、サードパーティによってお客様に提供されます。リモート サーバーで作成されたデータは、オンプレミスの SQL サーバーにレプリケートされます。データベースに直接アクセスできないサードパーティサーバーでいくつかの作業を実行する必要があります。彼らはその目的のために一連の API を公開しています。この作業は、リンクされた SQL サーバー上で SQL Server エージェント ジョブによって実行されます。

ビジネス シナリオ : 顧客は「バッジ」を受け取ることができます。バッジはUpdateCustomerBadgeInfo、サード パーティのサーバーで Web メソッドを呼び出すことによって、顧客に与えることができます。

したがって、自動化されたタスクの一般的な要件は次のようになります。

「その日に 50 回以上ログインしたすべての顧客を見つけて、[has-no-life]バッジを付与し、SMS 通知を送信する」

アルゴリズムは次のようになります。

- Select all the matching accounts into a #TempTable  
 for each customer record:
 - Call UpdateCustomerBadgeInfo() method (via CLR)
 - If successfully updated badge info-> Enqueue SMS message (queue table)
 - Log successful actions (so that the record will not be picked up next time)

現在の動作方法の最大の問題は、WHILE ループで大きなデータセットを処理するのに多くの時間がかかることです。

そのため、サード パーティ プロバイダーは、顧客データのバッチ更新を実行するソリューションを作成しました。バッチ更新要求が送信され、後で検証と処理のためにサービスによって取得される、オンプレミスの SQL サーバーにテーブルを作成しました。

質問は :

この非同期モデルに適合するには、上記のアルゴリズムをどのように変更する必要がありますか?

4

1 に答える 1