0

私はWebアプリケーションを構築しています(これはDjango固有の質問ではありませんが、Djangoで)。私には多くのユーザーがいて、それぞれにアカウントの残高があります。アカウントの残高は、(PayPal経由で)入金するたびに増加し、アプリケーションのAPIを使用するたびに減少します。

私はどちらの方法がより適切であるかを決定しようとしています:

  1. 残高をユーザーと一緒に単一の整数フィールドとして格納します。お金が入ると、このフィールドがに追加されます。消えると、から差し引かれます。シンプルですが、エラーが発生しやすくなります。
  2. ユーザーが行ったすべての支払いと請求を合計して、その場で(おそらくキャッシュを使用して)残高を生成します。タッチはより複雑で遅くなりますが、エラーが発生しにくくなります。

それで、どちらが最善ですか、それとも別の方法がありますか?

4

1 に答える 1

0

私の意見では、最初のオプションは2番目のオプションよりもエラーが発生しにくいと思います。その非常に重要な値をキャッシュに依存し始めるときは、キャッシュの同期に対処する必要があります。明らかに、ユーザーのバランスが変化するたびに、キャッシュを無効にし、読み取り要求が100%正確であることを確認する必要があります。キャッシュルートを使用する場合は、追加のレイヤーが非常に適切に調整されていることを確認する必要があります。

私が提案するのは、取引履歴と残高合計の両方を保存することです。トランザクションを作成する行為は、他の誰かがそれを読み取る前に、トランザクション履歴が作成され、残高合計の更新が実行されるように、アトミックである必要があります。その後、いつでも残高を履歴に調整するか、履歴から直接読み取って追加するかを選択できます。

于 2012-06-17T17:24:16.377 に答える