database - 银行 overdraw 罚款是否与技术限制有关?

标签 database transactions base banking acid

<分区>

我一直在阅读一篇关于 data consistency in banking operations 的文章. 作者强调,与通常的想法不同,银行采用BASE(基本可用、软状态、最终一致)事务来确保其服务的高可用性。

简而言之,交易记录在不同的分区中以允许快速响应,然后进行数据库一致性。
例如,当您从自动取款机取款时,目的是尽快取款。因此,您的交易操作是单独存储的,资金被释放,之后他们负责将交易应用到数据库并使其保持一致。
这是由于通信方面的技术限制:如果使用 ACID(原子性、一致性、隔离性、持久性)事务,将无法提供响应式服务。

这当然意味着可能存在不一致:你提取的钱可能比可用的多,他们无法提前知道,在交易一致之前。随之而来的是 overdraw 罚款,这是您为“超额取款”支付的费用。

现在的问题是:银行引入“过度提款”技巧是因为他们从一开始就意识到他们必须面对的限制吗?像某种hack 来克服技术沟通问题并同时提供可用性?还是无论如何都会引入的另一种“赚钱”方式?

在我看来,在这种情况下,两种选择都同样值得。我的意思是,它们都可以大大增加收入。

最佳答案

我认为银行起源于根本没有支票的系统。提款后,您实际上收到了提款银行的贷款。只是后来这笔贷款被取消了,因为您账户上已有一笔信用额度。

信用卡与银行账户相结合的信用卡交易仍然以这种方式进行。有时长达一个月的时间都没有从您的银行帐户中提取这笔钱。

有道理的是,没有抵押品的贷款比有抵押品的贷款更贵,因此 overdraw 罚款。

关于database - 银行 overdraw 罚款是否与技术限制有关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16337903/

相关文章:

php - 表中没有插入数据

java - 使用 C3P0 的 JDBC 连接池

c# - 使用TransactionScope时避免启用MSDTC

R:行名、列名、暗号和名称适用

php - MySQL PHP 插入和更新

python - 在 Python/Django 中使用 Memcached - 问题

javascript - Mongoose 如何发送交易多个集合

c# - 如果我在多个同时查询中使用 IsolationLevel.Snapshot 进行事务查询,SELECT @@IDENTITY 将返回什么?

c++ - 大型抽象基类

C++ 将基类和派生类对象存储在一起