如何设计用户余额
如果把余额通过存入字段的形式保存, 这样有什么好处和坏处? 那应该适合什么样的方式去设计余额呢?
支付宝的余额有收支明细, 每个出入账单都是一条记录. 但是如果是实时统计的话, 数据量太多统计起来的话应该会有效率上的问题. 如果把余额存入一个字段的话, 如何保证这个值的正确性或安全性, 如果不正确, 如何发现和调整
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我们的支付系统余额是一个单独的表保存,字段很简单用户ID,余额,状态,checksum。
余额是decimal(10,2)
checksum主要是用于防止数据库记录被篡改,可以使用MD5(字段值拼接+一个盐),每次访问/更新余额时都需要校验checksum是否正确,更新之后需要重新计算checksum并更新。
余额是一种敏感的东西。要考虑余额的精确度和操作的方便性。
存储余额不允许丢失,使用mysql之类数据库这些持久化存储方式来最大规避。
关于操作的方便性这个要看你自己业务对这个这个字段操作频率还有其他字段关联运算。
精度要考虑,比如你定义字段就要用
decimal(n,m)
之前做过类似的,当时是这样子设计的:
余额用了两个字段表示,可用余额和所冻结的余额
然后还会有一个收支明细,收 - 支 = 可用余额 + 所冻结的余额
然后还有余额冻结记录
可以将整数位和分数位分开储存