0

私が割り当てられている現在のシステムには、顧客の購入、預金、および報酬クレジット (管理者による) の記録がなく、[ユーザー] テーブルの [クレジット] 列だけです。ユーザーがお金を入金するたびに、その列がインクリメントされます。ウェブサイトで何かを購入すると、クレジットが差し引かれます。

完全な請求の実装の詳細は、現時点ではそれほど重要ではありませんが、現在の残高に到達するには、何らかの方法で購入と入金を集計する必要があることはわかっています。

顧客の残高を知りたいときはいつでも、ストアド プロシージャを実行して、顧客の最初のトランザクション以降のすべての支払い/預金レコードを集計する必要があると思いますよね? もしそうなら、特に頻繁に質問される場合、それはかなり重い要求のように思えます.

現在行っているように残高を保存し、定期的に (スケジューリングを介して)、上記のストアド プロシージャを使用して各ユーザーの残高を再計算する「バランスのとれたアプローチ」が存在する可能性があります。

ユーザーの残高を管理するためのベスト プラクティスを知りたいです。このシナリオで可能であれば、一貫した/正しいデータと効率の両方を目指しています。何をアドバイスしますか?

課金システムの実装について、どのようなリソースがありますか?

4

1 に答える 1

2

現在の残高と取引のリストを保存してみませんか?

トランザクションが発生すると、トランザクション履歴テーブルに行を書き込み、顧客残高列も更新します。

顧客残高が必要な場合は顧客テーブルを調べ、取引履歴が必要な場合は取引履歴テーブルを調べます。

2 つのデータベース書き込み (トランザクションと顧客) をアトミック トランザクションにラップすることで、一貫性を保証できます。

于 2013-05-22T15:14:21.280 に答える