比特幣丟失!MongoDB和最終一致性

這是一個事故灶体!多家比特幣運營商失竊阅签,這引發(fā)了一場爭論,最終一致性數(shù)據(jù)庫對銀行業(yè)務是否有用蝎抽。

2014年3月2日政钟,由于代碼缺陷,F(xiàn)lexcoin丟失了它所有的比特幣樟结。攻擊者發(fā)出了成千上萬的并發(fā)請求养交,定序將比特幣從他其中一個賬戶轉移到另一個賬戶。之后瓢宦,他用其它賬戶重復同樣的操作碎连,直到取走了所有比特幣。之所以能夠這樣做驮履,是因為編寫的代碼沒有處理多并發(fā)請求鱼辙,而且所有轉移都是發(fā)生在余額更新之前。如果余額沒有及時更新疲吸,即使賬戶是空的座每,請求也可能被批準。因此摘悴,在丟失了896個比特幣(價值約50萬美元)之后,F(xiàn)lexcoin關停了他們的業(yè)務舰绘。

兩天之后蹂喻,Poloniex發(fā)生了同樣的事葱椭,但他們只丟失了12.3%的比特幣,而且該公司彌補了損失口四,并設法維持了下去孵运。

康奈爾大學副教授Emin Gün Sirer寫了一篇博文,將比特幣丟失歸因于最終一致性數(shù)據(jù)存儲蔓彩。在容易產(chǎn)生銀行盜竊的NoSQL解決方案中治笨,他提到MongoDB、Cassandra和Riak赤嚼,因為:

這里的問題旷赖,其根源在于MongoDB提供的接口和語義設計有問題。如果我們用的是Cassandra或者Riak更卒,那么情況不會有任何不同……

比特幣恰逢分布式系統(tǒng)的一個尤其黑暗的時期等孵,人們秉持對CAP理論的錯誤理解,認為他們只不過是不得不放棄數(shù)據(jù)庫的一致性……

目前尚不清楚Flexcoin或者Poloniex那時是否正在使用MongoDB蹂空,而值得一提的是俯萌,Sirer正參與開發(fā)HyperDex,它支持ACID事務上枕,是一個有競爭性的鍵-值數(shù)據(jù)存儲咐熙。另外,這不是Sirer第一次詬病MongoDB的設計了辨萍。一年前糖声,他就聲稱MongoDB的容錯性有問題。

拋開爭論不談分瘦,最終一致性數(shù)據(jù)存儲是否適合銀行業(yè)務是個值得深思的問題蘸泻。不出所料,Sirer的博文引發(fā)了大量的評論嘲玫,本文節(jié)選了部分最值得注意的悦施。

jrp指出,更新操作可以使用MongoDB在數(shù)據(jù)庫級以原子方式實現(xiàn)去团,但他也認為“這將照顧不到其它ACID屬性抡诞。”

jakcharlton認為土陪,鑒于最終一致性在這種情況下有問題昼汗,一個“ACID系統(tǒng)并不能解決該問題,它只是將問題推到應用程序的邊界鬼雀,問題在那里再次發(fā)生顷窒。銀行業(yè)務使用最終一致性數(shù)據(jù)存儲是個壞例子,也顯示出開發(fā)人員思維方面的問題,他們認為由于他們的數(shù)據(jù)庫滿足ACID鞋吉,所以他們能夠免于并發(fā)問題鸦做。”

Alex“做任何事都使用MongoDB谓着,除了需要事務的時候泼诱,那時我會用合適的工具(不是MongoDB)完成工作∩廾”他認為治筒,將MongoDB用于不該使用它的工作是開發(fā)人員犯的一項錯誤。

Robert Escriva是一名HyperDex開發(fā)人員舷蒲,他認為罪魁禍首不是程序員耸袜,而是最終一致性系統(tǒng)可以用于銀行業(yè)務這樣一種普遍存在的觀念:

問題不在程序員的理解。有一種普遍存在的錯誤觀念鼓勵人們使用最終一致性系統(tǒng)阿纤【涔啵“如果它好到足以用于銀行,那么它也能滿足你”欠拾,他們會用這樣的話來證明它的合理性胰锌。這種想法是危險的。

最終藐窄,應用程序應該是其不變量的總和资昧。如果系統(tǒng)底層的數(shù)據(jù)存儲不能提供保證——或者更糟糕,需要大量的維護以及10萬美元的支持合同來提供保證——應用程序有了問題荆忍,卻歸咎于開發(fā)人員格带,這是一種托詞。我們應該以更高的標準要求數(shù)據(jù)庫供應商(尤其是那些動輒就獲得數(shù)億VC現(xiàn)金的供應商)刹枉。

Eric Brewer是CAP理論的創(chuàng)建者叽唱,他先前在一篇文章中寫道,為了在分區(qū)期間提供可用性微宝,銀行在他們的ATM業(yè)務中放棄了一致性棺亭。但他們這樣做的時候采取了一定的防范措施,其中包括將取款數(shù)額限制在某個較小的閥值內蟋软。這里還要提一下Stripe镶摘,根據(jù)他們的一篇博文,這是一款使用了MongoDB的Web&移動支付系統(tǒng)岳守。

最終一致性數(shù)據(jù)存儲適合一般銀行業(yè)務嗎凄敢?或者開發(fā)人員應該知道它們的局限性而另尋方案呢?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末湿痢,一起剝皮案震驚了整個濱河市涝缝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖俊卤,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嫩挤,死亡現(xiàn)場離奇詭異害幅,居然都是意外死亡消恍,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門以现,熙熙樓的掌柜王于貴愁眉苦臉地迎上來狠怨,“玉大人,你說我怎么就攤上這事邑遏∮独担” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵记盒,是天一觀的道長憎蛤。 經(jīng)常有香客問我,道長纪吮,這世上最難降的妖魔是什么俩檬? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮碾盟,結果婚禮上棚辽,老公的妹妹穿的比我還像新娘。我一直安慰自己冰肴,他們只是感情好屈藐,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著熙尉,像睡著了一般联逻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上检痰,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天包归,我揣著相機與錄音,去河邊找鬼攀细。 笑死箫踩,一個胖子當著我的面吹牛,可吹牛的內容都是我干的谭贪。 我是一名探鬼主播境钟,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼俭识!你這毒婦竟也來了慨削?” 一聲冷哼從身側響起怀泊,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎侣背,沒想到半個月后趟章,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡玫芦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年浆熔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桥帆。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡医增,死狀恐怖,靈堂內的尸體忽然破棺而出老虫,到底是詐尸還是另有隱情叶骨,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布祈匙,位于F島的核電站忽刽,受9級特大地震影響,放射性物質發(fā)生泄漏夺欲。R本人自食惡果不足惜跪帝,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望洁闰。 院中可真熱鬧歉甚,春花似錦、人聲如沸扑眉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腰素。三九已至聘裁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間弓千,已是汗流浹背衡便。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留洋访,地道東北人镣陕。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像姻政,于是被迫代替她去往敵國和親呆抑。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內容