关于用户余额存储的问题,想跟大家讨论一下

2020-07-31 17:39:05 +08:00
 jenlors
观点一:用户的余额来源于所有余额变动记录的和,扣减用户余额的时候添加一条变动值为负数的记录;
观点二:单独在用户中存一个余额字段,每次跟随余额记录进行变动。

那么哪一种方式更好?

我的观点是第二种好一点,理由是每次查询余额都需要执行 sum,性能更低;再是余额依赖于每一条历史记录,有风险。

各位的观点呢?
1749 次点击
所在节点    问与答
12 条回复
finab
2020-07-31 17:41:44 +08:00
我全都要,一二条综合起来
再每隔一定时间两边对账
kidtest
2020-07-31 17:45:30 +08:00
单独余额字段,同时需要有流水记录。
Kr98
2020-07-31 17:46:34 +08:00
全都要 +1
mumbler
2020-07-31 17:46:52 +08:00
当然是 2,但余额字段数据只能用于不严谨场景下统计查看,任何实际扣钱的操作都需要去 SUM 一下再处理
wushigejiajia01
2020-07-31 17:47:53 +08:00
1.增加关联表做变动记录
2.单独用字段存这个余额,而且如果这个余额变动非常频繁的话,不建议把这个字段跟用户基本信息放一张表
295464512
2020-07-31 17:48:58 +08:00
全都要啊,不然出了问题对不了账的
tabris17
2020-07-31 17:50:35 +08:00
CQRS 和 reporting table 的区别
holystrike
2020-07-31 18:03:58 +08:00
照着存折上做
gz911122
2020-07-31 18:09:45 +08:00
我全都要
imn1
2020-07-31 18:31:54 +08:00
业务流程来说,只有一个余额字段可能还不够呢
建议理顺业务逻辑,各种可能试一遍再说
ijustdo
2020-07-31 19:33:36 +08:00
流水记录 + 单独字段 , 每次改动都事务 两个一起
ijustdo
2020-07-31 19:37:04 +08:00
事务开始

insert 流水
update 余额 = 余额 - 消费 where 余额-消费 > 0

事物结束

通过 update 的影响情况决定是否回滚

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/694695

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX