数据库架构设计:使用并发跟踪用户余额

 似懂非懂2502904027 发布于 2023-01-02 15:04

在我正在开发的应用中,我们的用户会在应用中存款并成为他们的平衡点.

他们可以使用余额执行某些操作,也可以取消余额.什么是架构设计,确保用户永远不会撤回/或执行更多,即使在并发中也是如此.

例如:

CREATE TABLE user_transaction (
  transaction_id SERIAL NOT NULL PRIMARY KEY,
  change_value   BIGINT NOT NULL,
  user_id        INT NOT NULL REFERENCES user
)

上述模式可以跟踪平衡,(从user_transction中选择sum()); 但是,这并不适用于并发性.因为用户可以同时发布2个请求,并且可以在2个并发数据库连接中插入两个记录.

我也不能进行应用程序内锁定(确保一次只能写入一个transcation),因为我运行多个Web服务器.

是否有可以确保正确性的数据库架构设计?

PS在我的脑海中,我可以想象利用SQL中的唯一性约束.通过以后的事务引用先前的事务,并且由于每个早期的事务只能被引用一次,这确保了数据库级别的正确性.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有