首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在传统银行业,如何从技术上防止双重支出?

在传统银行业,如何从技术上防止双重支出?
EN

Software Engineering用户
提问于 2022-11-29 17:45:00
回答 2查看 179关注 0票数 1

与比特币形成鲜明对比的是:传统银行业如何在技术上防止双重支出?数据库事务必须符合ACID属性才能防止双重支出吗?

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2022-11-29 17:58:40

有两种可能的方式:

  1. 如果数据库管理器支持真正的SERIALIZABLE隔离级别,则意味着事务似乎以某种串行顺序执行。因此,如果您选择要扣除余额的帐户,您可以检查它是否会变成负数。如果没有,就转移资金。不存在争用条件,因为SERIALIZABLE隔离级别保证所有事务中的一切都以某种串行顺序执行。有乐观和悲观的SERIALIZABLE策略。如果会发生序列化冲突,则乐观取消事务,悲观使用锁定。
  2. 如果不支持SERIALIZABLE隔离级别,则可以锁定两个帐户(最好是最低编号的帐户,以防止死锁),然后检查余额,然后转移资金,而现在由于锁定而不会出现争用情况。

这是一个集中一致的数据库。与比特币非常相似,尽管比特币设法以分布式方式创建了一个一致的数据库。

票数 0
EN

Software Engineering用户

发布于 2022-11-29 19:15:58

传统银行业务以传统会计为基础,所有日记账分录至少有两个账户,借方和贷方必须平衡到零。

检查一致性的最基本方法是不断检查系统的余额,通常是一个工作日一次。因为平衡每天都在进行,所以调查错误的范围通常不会比当天的事务更大。

还定期进行外部和解。例如,计算现金,并确保手头的实物金额与会计系统规定的金额相匹配。

计算机最早的一些商业应用是在银行业。我相信这始于60年代初,甚至早于关系数据库理论(EF Codd,1970)。

但是,只要计算机本身工作正常,并且在关系数据库之前就有数据库技术,就不难设计出正确执行会计工作的算法。

在计算机错误方面,银行最初制作和保存纸面记录的时间尽可能长,以涵盖计算机所做的任何处理。这也是为何直至最近为止,在银行进行的大部分交易,都是由一张纸条所涵盖的,而有关的详细资料则输入电脑终端机,并保留在抽屉内,直至该日完结为止。

如果计算机出现故障,如果在恢复正确操作时不平衡,银行工作人员将核实从上一次系统正确平衡(可能是前一个工作日的晚上)开始的所有情况,以及此后的主要纸面记录。

在遥远的过去,计算机通常不会保留一个长期的帐户历史。旧记录不再与处理有关,要么定期打印出来,要么用缩微胶片拍照存档。当然,除了向客户发送一份书面声明外,如果不及时查询其内容,一旦银行清除了旧记录,就会永远具有约束力。

值得一提的是,过去大多数银行的主要数据处理站点都是分行。每个分支机构最初都会有大量的工作人员,后来会有自己的计算机,这样就可以或多或少地自主地为当地社区服务。只有汇总数字集中报告。

这就是为什么“银行经理”最初是一个具有相当大信任和地位的职位,因为虽然他们不太可能逃脱像账簿不平衡这样根本的事情,但他们在大多数问题上拥有相当大的自由和最终权力(包括监督保险箱内的实际现金,与账簿上所说的相符,以及记录的差额在可接受的范围内!)

我不知道传统上,取款是如何在一个不同的分支机构处理的,而那个分支机构的账户是保存着的。可能是由一位银行经理给另一位银行经理打电话,每一位都在电话结束前做必要的账户记录。

总之,您可以看到,对于核心银行业务,一致性的主要保证是会计本身的标准方法,而不是任何特定的计算机技术。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/442535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档