1

Azure で 1 回限りのジョブを実行する最善の方法は何ですか?

関連するデータベースのテーブルを二重列で拡張したいとします。すべての新しいエントリは、挿入時にワーカーによって計算されたこの値を持ちますが、誰かがテーブルに既にあるエントリを処理する必要があります。私は2つの選択肢を考えました:

  1. データベース エントリ ("JobRun" など) が true に設定されている場合にのみワーカーによって呼び出されるメソッドで、メソッドがエントリを false に反転します。
  2. ジョブを実行し、リモート デスクトップを使用して手動でダウンロードして実行する別のアプリ (ローカル アプリを Azure SQL サーバーに接続できません)。

最初の選択肢は厄介です (次の展開でコードをどのように処理する必要がありますか? 削除しますか? コメントしますか? そこに残しますか? また、将来別の仕事がある場合はどうしますか? 新しいデータベースエントリ "Job2Run" を作成しますか? )。2 つ目は安っぽいハックのように見えます。私が考えられなかったより良い方法があると確信しています。

4

1 に答える 1

1

一度ジョブを実行したい場合は、次のことを考慮する必要があります。

  • 並行性: ジョブの実行中は、他のワーカーがジョブを取得して同時に実行しないようにしてください (これにはリースを使用できます。詳細はこちら)。
  • ジョブが完了したら、ジョブが正常に完了したことを (Table Storage、SQL Azure などで) 追跡する必要があります。次にワーカーがジョブを取得しようとすると、Table Storage / SQL Azure / ... を調べて、ジョブが完了したことを確認し、ジョブをスキップします。
  • 失敗: ジョブ中にワーカーがクラッシュした可能性があります。これにより、別のワーカーが問題なくジョブを取得できるはずです。

特定のユースケースでは、dbupなどのツールを使用して、SQL スクリプトを使用してスキーマと既存のデータの更新を管理することも検討します。このようなツールは、データベース内のテーブルにスクリプトを追加することで、実行されたスクリプトを追跡します。

于 2013-01-18T13:40:20.133 に答える