方案一與方案二,最終選擇了方案二,原因:方案一每日批量更新賬戶上日餘額,千萬級別的數據更新耗時
夜間批處理,如生成會計流水文件、總分對賬文件、日終充值文件等,按賬戶當日日終餘額或當日交易流水進行統計彙總,需要保持數據的一定靜止,而夜間聯機交易會更新賬戶餘額,賬戶餘額爲動態。一般批量處理與聯機處理的衝突區主要在賬戶餘額,解決批量用賬戶日終餘額與聯機用賬戶實時餘額的存儲與使用問題,可很大程度實現7×24業務服務。也即解決總分賬、會計賬一致問題。
實現7x24服務,要點在保證兩份數據的準確並存:
- 動態實時數據(實時餘額):主要是動賬及日間查詢交易使用
- 日切點的靜態數據(上日餘額):主要用於批處理:比如總分覈對、財務供數等
雙餘額動賬方案
分戶賬上設置“當前餘額“、”上日餘額“、”最近交易日期”。根據以上字段來實現當前餘額、上日餘額的讀取和更新,僅在動賬交易發生時才更新上日餘額,即如果該賬戶長期無動賬,在此期間將不用更新上日餘額
1. 實時動賬處理
日切後,動賬時當日第一筆交易更新上日餘額、最後交易日期。
首先檢查帳戶的‘最近交易日期’與‘會計日’是否相同, 如果不同,說明該帳戶日切後第一次變更餘額, 此時要將‘當前餘額’放入‘上日餘額’,‘最近交易日期’更改爲‘會計日’,並記錄交易流水,該交易流水的日期爲日切後會計日。 換日後的第二筆及更多交易,只更新當前餘額,並記錄交易流水。
2. 分戶賬獲取上日餘額處理(總分對賬文件)