0

私は、MySQL または Postgres のいずれかの SQL バックエンドで Ruby On Rails を使用しています (ただし、実際には問題ではありません)。
Web アプリケーションはマルチプロセスであり、アプリ サーバー プロセスのクラスターが実行され、同じ DB で動作します。

私は疑問に思っていました: レース状況を処理するための適切で一般的な戦略はありますか?

これは DB 集約型のアプリケーションになるため、2 つのクライアントが同じデータを同時に変更しようとする様子が容易にわかります。

状況を単純化しましょう:

  • 2 つのクライアント/ユーザーが同じデータを取得します。これが同時に発生しても問題ありません。
  • これらは、同じデータを表す 2 つの Web ページで提供されます。
  • その後、両者は互換性のない変更を同じレコードに書き込もうとします。

このような状況を処理する簡単な方法はありますか?

各レコードに関連付けられた ID トークンを使用することを考えていました。このトークンはレコードの更新時に変更されるため、古いデータ (期限切れの古いトークン) に基づく後続の更新試行は無効になります。

より良い方法はありますか?たぶん、MySQL に既に組み込まれているものでしょうか? この場合に使用されるコーディング パターンにも興味があります。

ありがとう

4

1 に答える 1