2012-06-17 23 views
0

我正在構建一個web應用程序(在Django中,雖然這不是Django特定的問題)。我會有一些用戶,他們每個人都有一個帳戶餘額,每次他們與我(通過PayPal)存款時都會增加,每次他們使用我的應用程序的API時遞減。將用戶的餘額存儲在Web應用程序中 - 單個字段還是實時生成?

我試圖決定哪種方法會更合適:

  1. 商店與用戶作爲一個整數場沿平衡。當金錢進來時,這個領域被添加到。當它熄滅時,它會從中減去。簡單,但容易出錯。
  2. 動態生成餘額(大概是緩存),將用戶所做的所有付款和費用加起來。觸摸更復雜,速度更慢但不易出錯。

那麼,哪個最好還是有另一種方法呢?

回答

1

我的觀點是,第一個選項比第二個選項更不易出錯。當你開始依靠緩存來獲取這個非常重要的值時,你必須處理緩存同步。顯然,每次用戶均衡更改時,您都需要使緩存無效並確保任何讀取請求都100%準確。如果你確實去了緩存路由,你只需要確保額外的層是非常協調的。

我建議您同時存儲交易歷史和餘額總額。進行交易的行爲必須是原子的,以便在任何其他事物都可以讀取之前執行交易歷史並執行餘額總額的更新。然後,您始終可以選擇將餘額與歷史記錄進行協調,或直接從歷史記錄中讀取和添加。

+0

非常好的一點。你會建議每隔幾天有一次cron跑步,以便讀取歷史記錄並計算出平衡,然後提醒我有任何不一致之處? – Tim

+0

我認爲這取決於你對價值觀的使用,但它傷害了你!你可以這樣做!但實際總數應該是交易原子 – jdi

相關問題