4

結果整合性のある分散データベースを使用している場合、製品を販売しているサイトのようなものがあり、アイテムの価格を変更するとどうなりますか?

製品の価格が X で、それを価格 Y に更新した場合、データベースのバージョンによっては価格 X が表示される場合があります。彼らは間違った価値を請求されませんか?

ある時点で、最新の値が使用されていることを確認するために、データの整合性チェックを行う必要はありませんか?

4

3 に答える 3

4

We used to have a custom script which would track the replication lag, but that was a few years ago. Since then, we have moved to the heartbeat monitor provided by Percona Toolkit.

You may also want to consider adding the product they selected to their session, so if the price does change before they checkout, they won't get sticker shock.

于 2012-03-21T03:00:27.003 に答える
1

データベースには、価格、次の価格、および価格が有効になる日時が含まれている必要があります。次に、ユーザーが注文を示したときに、トランザクションのタイムスタンプを確認します。その後、その購入に対して有効なトランザクションとしてその価格を保存する必要があります。

商品と価格の組み合わせに一意の識別子を作成し、カタログを表示するときにそれを記録することをお勧めします。そうすれば、提供したものと比較して驚きはありません。(もちろん、乱用を防ぐための合理的なタイムアウトが必要です。)

于 2012-03-21T03:02:50.140 に答える
0

Mike Purcell氏は次のように述べています。

これはあなたにとって重要だと思います。なぜなら、あなたが両方と一方を更新している途中で、もう一方が同時に購入していない場合、ユーザーは間違った価格に陥る可能性があるからです。

更新を行うためにサイト全体を少なくとも 1 ~ 2 分ダウンさせずにデータベースを更新している場合、各トランザクションが支払いゲートウェイにリクエストを送信する前にスクリプトを実行せずにこの問題に対処する方法は考えられません。 . 特に、ユーザーがすでにセッションに参加している場合。


ユーザーが要求を支払いゲートウェイに転送する前に、各データベースで商品価格を検索するようなことを行うことができます。それらが同一でない場合は、製品ページにリダイレクトしますか?

更新が 1 秒間隔である場合、これが具体的な解決策であることがわかります。

于 2012-03-21T03:19:38.377 に答える