が一貫しての分散データベースを使用している場合、商品を販売している商品の価格を変更しているようなサイトがあるとどうなりますか?データベースの一貫性を保証する
製品に価格Xがあり、それを価格Yに更新すると、一部のバージョンのデータベースには価格Xが表示されることがあります。顧客がチェックアウトする場合は、実際に最大限に活用するための戦略がありますか?彼らは間違った価値を請求されませんか?
最新の値が使用されていることを確認するために、データの整合性チェックを行う必要はありませんか?
が一貫しての分散データベースを使用している場合、商品を販売している商品の価格を変更しているようなサイトがあるとどうなりますか?データベースの一貫性を保証する
製品に価格Xがあり、それを価格Yに更新すると、一部のバージョンのデータベースには価格Xが表示されることがあります。顧客がチェックアウトする場合は、実際に最大限に活用するための戦略がありますか?彼らは間違った価値を請求されませんか?
最新の値が使用されていることを確認するために、データの整合性チェックを行う必要はありませんか?
私は、レプリケーションの遅延を追跡するカスタムスクリプトを使用していましたが、それは数年前のことでした。それ以来、Percona Toolkitで提供されているハートビートモニターに移行しました。
あなたが選択した製品をセッションに追加することも考えられます。したがって、チェックアウト前に価格が変更されても、ステッカーショックは発生しません。
Thats a good point –
@MikePurcell、あなたが「自分のセッションに選択した製品を追加することを考えてください。価格が実際に変更されたかどうかを確認する方法はありますか?私は、データが古くなっているかどうかを確認することができます(上記のツールキットのようなものを使用している可能性があります)。それが古くなっている場合は、マスターに正しい値を問い合わせてください。それはあなたが示唆していることですか? –
近いうちに、ハートビートモニター(および他の方法を採用することができます)を使用してできるだけ最新の価格を表示しようとしていますが、ユーザーが購入する製品を選択すると、現時点のセッションに追加することで、価格を時間通りに調整できます。この方法では、価格はユーザーが何であれ一貫していて、カート(アイテム)からアイテムを削除した場合、再度選択する場合に最新の価格を表示するページを強制的に更新することができます。 –
データベースは、価格、次の価格、および価格が有効になる日時を持つ必要があります。次に、ユーザーが注文を指示したときに、トランザクションのタイムスタンプを確認します。その後、その購入のために有効なものとして、その価格をその取引と共に保存する必要があります。
カタログを表示するときに、商品と価格の組み合わせに固有の識別子を作成して記録すると、提供したものと比べて驚きはありません。 (。虐待を防ぐためにいくつかの合理的なタイムアウト付きもちろん)
面白い考え。 –
@ledorfier、私はこれが実際にどのようにレプリケーションの問題に対処しているのか分かりません。私が次の価格を変更したり追加したりすると、それが読まれているデータベースで更新されるという保証はまだありません。 –
"最終的に"いくつかのパフォーマンス要件があると思います。その前に価格変更を挿入します。 – dkretz
マイク・パーセルが言ったように:「あなたはまた、彼らは、彼らはチェックアウト前に価格が変化しないので、もし、彼らは彼らのセッションに選択した製品を追加することを検討することをお勧めしますステッカーショックを受けることはありません。
私はこれはあなたにとって重要だと思います。あなたが両方を更新している間、他の人が同時に購入が行われていないと、間違った価格に陥る可能性があるからです。
少なくとも1分または2分以上サイトを更新せずにデータベースを更新している場合は、各トランザクションがリクエストを行う前にスクリプトを実行しないとこの問題に対処することはできません支払いゲートウェイに送信する。特に、ユーザーが既にセッション中の場合。
あなたは、ユーザーが、彼らは同じアレント場合、バック製品ページにリダイレクトし、支払いゲートウェイへの要求をfowards前に、各データベース内のアイテムの価格のためのルックアップを行うような何かを行うことができますか?
アップデートが2番目に離れている場合は、これが目に見える解決策であることがわかりました。
チェックアウトの過程でユーザーが商品ページにリダイレクトされてしまい、ユーザーがサイトをジャンプして同じ製品を販売する別のサイトを見つけてしまい、売上が低下する可能性があるかどうかは不明です。 –
私は同意する、私はそれがユーザーに混乱すると思う。 –
それは本当ですが、私はそれについて本当に考えていませんでした。 –
ロードバランシングに2番目のレプリカデータベースを使用していますか? –
@ DanKanze、はい、レプリカはロードバランシング用です –
@DanKanzeもう一つの可能性は、データベースがlocaltiyに使用されることです。たとえば、場所Xからログインしている場合は、私の近くのデータベースにアクセスします。 –