最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

比特币丢失、MongoDB 和最终一致性

  • 2014-04-28
  • 本文字数:1466 字

    阅读完需:约 5 分钟

近日,多家比特币运营商失窃,这引发了一场争论,最终一致性数据库对银行业务是否有用。

2014 年 3 月 2 日,由于代码缺陷, Flexcoin 丢失了它所有的比特币。攻击者发出了成千上万的并发请求,定序将比特币从他其中一个账户转移到另一个账户。之后,他用其它账户重复同样的操作,直到取走了所有比特币。之所以能够这样做,是因为编写的代码没有处理多并发请求,而且所有转移都是发生在余额更新之前。如果余额没有及时更新,即使账户是空的,请求也可能被批准。因此,在丢失了 896 个比特币(价值约 50 万美元)之后,Flexcoin 关停了他们的业务。

两天之后,Poloniex 发生了同样的事,但他们只丢失了12.3% 的比特币,而且该公司弥补了损失,并设法维持了下去。

康奈尔大学副教授 Emin Gün Sirer 写了一篇博文,将比特币丢失归因于最终一致性数据存储。在容易产生银行盗窃的 NoSQL 解决方案中,他提到 MongoDB、Cassandra 和 Riak,因为:

这里的问题,其根源在于 MongoDB 提供的接口和语义设计有问题。如果我们用的是 Cassandra 或者 Riak,那么情况不会有任何不同……

比特币恰逢分布式系统的一个尤其黑暗的时期,人们秉持对 CAP 理论的错误理解,认为他们只不过是不得不放弃数据库的一致性……

目前尚不清楚 Flexcoin 或者 Poloniex 那时是否正在使用 MongoDB,而值得一提的是,Sirer 正参与开发 HyperDex ,它支持 ACID 事务,是一个有竞争性的键 - 值数据存储。另外,这不是 Sirer 第一次诟病 MongoDB 的设计了。一年前,他就声称 MongoDB 的容错性有问题

抛开争论不谈,最终一致性数据存储是否适合银行业务是个值得深思的问题。不出所料,Sirer 的博文引发了大量的评论,本文节选了部分最值得注意的。

jrp 指出,更新操作可以使用 MongoDB 在数据库级以原子方式实现,但他也认为“这将照顾不到其它 ACID 属性。”

jakcharlton 认为,鉴于最终一致性在这种情况下有问题,一个“ACID 系统并不能解决该问题,它只是将问题推到应用程序的边界,问题在那里再次发生。银行业务使用最终一致性数据存储是个坏例子,也显示出开发人员思维方面的问题,他们认为由于他们的数据库满足 ACID,所以他们能够免于并发问题。”

Alex “做任何事都使用 MongoDB,除了需要事务的时候,那时我会用合适的工具(不是 MongoDB)完成工作。”他认为,将 MongoDB 用于不该使用它的工作是开发人员犯的一项错误。

Robert Escriva 是一名 HyperDex 开发人员,他认为罪魁祸首不是程序员,而是最终一致性系统可以用于银行业务这样一种普遍存在的观念:

问题不在程序员的理解。有一种普遍存在的错误观念鼓励人们使用最终一致性系统。“如果它好到足以用于银行,那么它也能满足你”,他们会用这样的话来证明它的合理性。这种想法是危险的。

最终,应用程序应该是其不变量的总和。如果系统底层的数据存储不能提供保证——或者更糟糕,需要大量的维护以及 10 万美元的支持合同来提供保证——应用程序有了问题,却归咎于开发人员,这是一种托词。我们应该以更高的标准要求数据库供应商(尤其是那些动辄就获得数亿 VC 现金的供应商)。

Eric Brewer 是 CAP 理论的创建者,他先前在一篇文章中写道,为了在分区期间提供可用性,银行在他们的ATM 业务中放弃了一致性。但他们这样做的时候采取了一定的防范措施,其中包括将取款数额限制在某个较小的阀值内。这里还要提一下 Stripe ,根据他们的一篇博文,这是一款使用了MongoDB 的Web& 移动支付系统。

最终一致性数据存储适合一般银行业务吗?或者开发人员应该知道它们的局限性而另寻方案呢?

查看英文原文:**** BitCoins Lost, MongoDB and Eventual Consistency

2014-04-28 10:186900
用户头像

发布了 256 篇内容, 共 81.6 次阅读, 收获喜欢 11 次。

关注

评论

发布
暂无评论
发现更多内容

亚马逊云科技2023柏林峰会主题演讲总结

亚马逊云科技 (Amazon Web Services)

Amazon AIGC

WorkPlus国产化即时通讯工具:安全可靠的国内沟通利器

WorkPlus

2023 KiCon Asia 11月12日 深圳见!

华秋电子

kicad

可视大盘+健康分机制,火山引擎DataLeap为企业降低资源优化门槛!

字节跳动数据平台

大数据 数据治理 成本治理 企业号9月PK榜

中国机械总院张红新:强化集团级数据治理 业财融合助力企业降本增效

用友BIP

业财融合 2023全球商业创新大会

cad设计绘图软件:AutoCAD 2024最新版中文

mac大玩家j

CAD绘图 CAD设计 cad cad工具

优化模型之“显示置信度”

矩视智能

深度学习 机器视觉

七个有用的 GIT 命令

高端章鱼哥

git git 规范

超越React,JS代码体积减少90%!它为何是2023年最好的Web框架?

互联网工科生

Vue React Web框架 Astro

Java 21:虚拟线程介绍

这我可不懂

java 虚拟线程 java 21

【数据库审计】2023年数据库审计厂家汇总

行云管家

数据库 数据库审计 等保合规

开源生态建设,正成为智能世界发展的关键

新消费日报

启动!中交集团携手用友搭建海外人力资源数智化平台

用友BIP

中企出海 数智人力

云管理平台基本功能有哪些?适配国产化平台吗?

行云管家

云计算 信创 国产化 云管平台 云管理

API接口安全运营研究

Noah

API接口文档 API 安全 API接口安全

WorkPlus即时通讯app打通业务与生态,实现高效管理与协同

WorkPlus

企业门户的必备选择,WorkPlus的定制化解决方案

WorkPlus

ABBYY FineReader PDF 15 Mac中文版(ocr文字识别软件)

晴雯哥

百万架构师亲码的亿级流量下的分布式限流解决方案

小小怪下士

Java 程序员 高并发 秒杀

JPEX事件对于香港加密货币发展的影响

区块链软件开发推广运营

数字藏品开发 dapp开发 区块链开发 链游开发 NFT开发

用友全球司库十问(四)|企业如何实现融资债券数据信息的实时监控?

用友BIP

全球司库

好用的图书阅读器 OmniReader Pro激活中文版

胖墩儿不胖y

Mac软件 图书阅读工具 图书阅读

深入理解树状数组 | 京东物流技术团队

京东科技开发者

bit #数据结构 企业号10月PK榜 树状数组

MQ技术比较

周晓宁

使用 Databend Kafka Connect 构建实时数据同步

Databend

鲲鹏DevKit 23.0:流水线中便捷迭代鲲鹏版本,迁移、开发、调优无缝衔接

彭飞

第一个程序:HelloWorld——IDEA 使用

小齐写代码

利用美国服务器增加线上业务的客户人群

一只扑棱蛾子

服务器 美国服务器

安全高效的政企内部通讯解决方案WorkPlus IM平台

WorkPlus

WorkPlus定制化的局域网会议软件,提供安全稳定的会议体验

WorkPlus

当 AI 成为“逆子”;强化学习之父联手传奇程序员丨 RTE 开发者日报 Vol.62

声网

比特币丢失、MongoDB和最终一致性_语言 & 开发_Abel Avram_InfoQ精选文章