Sql 存储值还是从其他数据推断?
我正在开发一个金融应用程序,人们可以通过它汇款 每个用户都可以将他们的钱存入我们的服务,并且他们可以从余额中向其他人汇款。 这两个事务将影响我们应用程序中它们的余额 我想知道,获得用户余额价值的最佳方式是什么。我应该直接将值存储在列中,并在用户进行交易时更改它,还是应该从用户进行的所有交易中推断余额值 我已经想到的每种方法的缺点是:Sql 存储值还是从其他数据推断?,sql,database,data-structures,Sql,Database,Data Structures,我正在开发一个金融应用程序,人们可以通过它汇款 每个用户都可以将他们的钱存入我们的服务,并且他们可以从余额中向其他人汇款。 这两个事务将影响我们应用程序中它们的余额 我想知道,获得用户余额价值的最佳方式是什么。我应该直接将值存储在列中,并在用户进行交易时更改它,还是应该从用户进行的所有交易中推断余额值 我已经想到的每种方法的缺点是: 直接存储值: 数据一致性:当一个数据保存成功而另一个数据保存不成功时,可能会出现值差异 从另一个数据推断: 较慢(?):每当我想要得到余额的值时,我必须查询
- 直接存储值:
- 数据一致性:当一个数据保存成功而另一个数据保存不成功时,可能会出现值差异
- 从另一个数据推断:
- 较慢(?):每当我想要得到余额的值时,我必须查询所有事务数据并得到其总和。我的应用程序中有很多函数需要您知道用户余额的值,因此可能需要进行大量此类查询。当用户的事务数据变得很大时,也有一个问题
谢谢。考虑第一种方法 如果db是
Mysql
,则可以使用Mysql的表锁定(或行锁定)
功能。在MySQL实例上使用InnoDB表,否则您的系统将不能完全使用ACID编译器,这意味着您将无法获得所需的原子性。将两者结合起来
要么:
- 存储值
- 使用事务确保不会保留任何部分结果
- 安排一个常规(每天?)任务,使用上次验证的一致性值和增量验证一致性
- 保存昨天的价值
- 从昨天的值和增量计算当前值
- 安排将更新存储值的每日任务