地位堪比S3!AWS開放了它最核心的數據庫QLDB

今年的AWS re:Invent大會,最讓你印象深刻的發佈是什麼?

這個問題的答案對筆者來說,第一天是 RoboMaker,第二天是Firecracker,第三天是Lake Formation。然而當第四天結束的時候,筆者才發現,第三天發佈的QLDB的重要性可能被遠遠低估了。

所以,今天我們來好好聊聊QLDB這個事情。

區塊鏈是真需求還是僞需求?

re:Invent大會第三天,AWS CEO Andy Jassy在他的主題演講上發佈了QLDB——Quantum Ledger Database,直譯過來叫做量子賬本數據庫。之後,AWS CTO Werner Vogels在自己的Twitter上表示,QLDB是本次re:Invent他最愛的發佈之一。

image

如前所述。根據Andy Jassy的說法,AWS經過了一年以上時間對區塊鏈“客戶”的訪談調研之後,終於明確的發現了區塊鏈“客戶”們的兩類真正的需求:

1. 中心化可信賬本

image

主要使用場景:醫療領域的掛號跟蹤、交管局的車輛管制、製造業的缺陷品跟蹤、HR領域的個人從業經歷跟蹤等。原理上,此類需求用通用型關係數據庫(如MySQL或Aurora)也是可以解決的,只是在部分情況下,通用型關係數據庫很難把此類問題很好的解決。

2. 去中心化可信交易

image

主要應用場景:金融領域的P2P支付、房產領域的組合貸款處理、小微企業的供應商分銷商交易管理、零售行業的客戶獎勵流水線等。

針對這兩類需求全面分析之後,AWS發佈了兩個新東西,第一個是QLDB,第二個是Managed Blockchain。其中,QLDB的前身是Amazon.com內部使用了多年的一個數據庫技術。

當時聽完後筆者就納悶了:既然AWS一直都還在評估“區塊鏈是不是僞需求”這個問題,那就是說,Amazon內部一直都是沒有在使用區塊鏈的。那麼,Amazon.com怎麼會一直有一個QLDB這樣的數據庫在內部使用呢?

懷着這個問題,筆者詢問了Bill Vass——一位AWS副總裁,業務方向是存儲、Kinesis、機器人(聽起來是一個挺奇怪的組合)。

回到源頭

你有沒有想過,“賬本”到底是啥意思?“可信”又是啥意思?

經過Bill Vass熱心的介紹,QLDB這個已經在Amazon內部用了4、5年的數據庫技術,面貌逐漸清晰了起來。結合一些相關資料,筆者嘗試對QLDB簡述如下:

賬本(ledger)

“鏈條”(chain)是這樣一種東西:它一環扣一環,每一環都有前面一環和後面一環,新的環添加在鏈條的末尾,於是鏈條就越來越長。

從數據的角度,這就是強時序的數據。對於不要求時序性的數據來說,寫進來的順序是1、2、3、4,存儲成1、3、2、4也沒關係;但是對於強時序的數據來說,寫進來的順序是1、2、3、4,就一定要存儲成1、2、3、4的順序。這就是數據的鏈條。

於是你說了,這強時序有什麼難的?數據庫的代碼只要沒寫錯邏輯不都能實現?的確,難的並不是代碼邏輯。難的是,如果一秒之內進入上千上萬個請求,你如何確保它一定正確呢?要在吞吐量巨大的大規模集羣上做到高性能還要保證不出錯,這個活兒可不是誰都幹得了。

什麼樣的數據特別需要強時序?“日誌”(log)必然位列其中。2014年Werner Vogels發佈Aurora的時候,用了極大的篇幅介紹其背後的機制,其中非常重要的一點就是,Aurora之所以能夠做到秒級的崩潰恢復,是因爲它使用“操作日誌”進行數據庫重建的方式來做恢復。“操作日誌”的順序一定要完全正確,否則重建數據庫無法成功。(那就完蛋了!)所以,Aurora的背後,一定有一個強大的分佈式高性能強時序數據庫用來存取日誌。Bill Vass透露說,QLDB就是這個Aurora背後的日誌數據庫。Bill Vass還介紹道,除了Aurora之外,強時序數據庫在電商的應用也很廣泛,特別是“秒殺”場景,一邊是訂單一邊是庫存,如果交易的時序處理不好就會出現超售的問題,如果用通用型關係數據庫的“鎖”來避免超售又影響效率,所以QLDB很重要。

“交易的日誌”,就是“賬本”(ledger)。人類使用賬本的歷史至少也好幾百年了,Amazon使用賬本的歷史至少也24年了。所以,Amazon有一個定製化的賬本數據庫用了4、5年,也不是什麼奇怪的事情。

可信(trust)

2009年中本聰發佈Bitcoin白皮書,掀開了數字交易信任機制的新篇章。白皮書提出的方案有兩個重點,一個是用“去中心化”來避免對權威角色的依賴,一個是用“加密算法”來取代權威角色的裁判動作。

此白皮書一出,廣泛流傳,一時之間給廣大吃瓜羣衆產生了一種錯覺:一切不可信的源頭就是權威,解決了權威就解決了不可信問題。

但其實人家說的根本不是這麼一回事!中本聰論文的第一段話就說,權威第三方可信機制在大部分數字交易中是挺好用的。主要問題在於,如果交易者存心詐騙,利用“可撤銷的支付”作爲系統漏洞進行雙重支付,從而產生交易紛爭,則權威第三方需要去處理交易紛爭,這個成本一般是比較高的,對小額度交易而言並不現實。

那麼問題又來了:數字交易中的“可信”就是指防詐騙嗎?

也並不是。“可信”是一個統計學問題。所謂“可信”,是“不可信”的反義詞。不可信的因素增多,系統整體趨於不可信。不可信的因素排除的越多,系統整體趨於可信。詐騙只是衆多不可信因素當中的一種而已。數據丟失或數據損壞,也都是不可信因素當中的一種。

爲了更準確的描述QLDB解決的問題和區塊鏈解決的問題之間的區別,以下從AWS官方網站QLDB的FAQsManaged Blockchain的FAQs分別摘取幾段介紹:

Q:賬本數據庫與其他數據庫有什麼不同?

A:傳統數據庫支持數據覆寫(overwrite)與刪除,所以如果需要跟蹤數據的時序性,開發者需要另外用到審計表(audit tables)和審計跟蹤(audit trails)等技術。此類技術雖然可以實現該目的,但它們需要定製化研發,並且比較難以擴展,而且確保數據正確性的責(hei)任(guo)落在了應用開發者的頭上。在QLDB,數據被寫入到append-only journal(只增型日誌)上以保證數據的時序性,QLDB日誌是不可篡改(immutable)和可驗證(verifiable)的,也就是說,你可以信任賬本中的數據。

Q:賬本數據庫適合存什麼數據?

A:QLDB天然適合記錄型系統(system-of-record)應用,此類應用對數據完備性、數據完整性、數據可驗證性有強需求。比如在供應鏈與物流領域,使用QLDB構建的應用能夠將一切變更的完整歷史留存下來,無論是貨車之間的移動還是跨境移動,每一條記錄都能夠完整留下來以供查詢分析。在金融領域,記錄型系統應用對關鍵數據進行跟蹤,比如信貸交易和借記卡交易。以前的話,此類應用需要構建一套複雜的記錄留存功能,而有了QLDB,這就變得很容易實現,所有的金融交易記錄都被永久的、完整的保存下來。

Q:QLDB是分佈式賬本嗎?QLDB是區塊鏈服務嗎?

A:QLDB不是區塊鏈,也不是分佈式賬本。區塊鏈與分佈式賬本技術主要致力於解決另一個問題,就是當多個利益方使用去中心化應用的時候,該應用不屬於任何一個利益方,也沒有任何一個利益方是完全受信任的。而QLDB的適用場景則是,一個客戶自己擁有一個應用,並且需要一個賬本數據庫來維護所有數據變更歷史的完整性與可驗證性。QLDB的優勢在於強時序性、不可篡改性、可驗證性,並且由於QLDB作爲託管的AWS服務被提供給客戶,它還有可擴展、簡單易用等優點。如果你的應用是去中心化的,牽涉到多個互相之間不信任的利益方,那麼區塊鏈解決方案可能更適合你。如果你的應用對數據變更記錄的完整性和可驗證性有需求,並且不涉及多個互相不信任的利益方,則QLDB會非常適合。

Q:所以,Managed Blockchain和QLDB到底有啥區別?

A:QLDB是中心化的賬本數據庫,客戶就是應用的擁有者,客戶自己維護數據變更記錄的一切歷史。而在區塊鏈技術裏,區塊鏈網絡中有多個成員,網絡中的每一個成員都擁有一份獨立的、可驗證的、不可篡改的賬本的副本,每一個成員都可以互相之間發起交易、或認可(endorse)別人的交易,一切的交易與數據共享都是以加密方式進行的,並不需要一箇中心化的“應用擁有者”或者“可信的權威”來做裁判。

再補充一條官網上沒寫的:根據Bill Vass的描述,QLDB的速度是目前區塊鏈技術的1000倍

應用開發的下一個階段

關係型數據庫(relational database)是個好東西。一張一張的表(table),表裏一個一個的列(column),每一行(row)就是一條數據,每一條數據都可以增刪改查(CRUD),這些特點讓它幾乎適用於所有的應用場景。基本上我們可以這麼說:後來出現的數據庫能做的事情,關係型數據庫都能做。

但這句話也可以反過來說:恰恰是因爲關係型數據庫啥都能做,所以纔出現了一個又一個“不以啥都能做爲目標”的新型數據庫。這些新型數據庫專門爲了把特定的事情做好而設計。比如:Key-Value Database 鍵值數據庫,在社交網絡類應用崛起的時候開始流行(鍵值數據庫常被視爲NoSQL數據庫的典型代表,其中NoSQL是Not only SQL的縮寫);Graph Database 圖數據庫,在社交網絡成爲熱門分析對象的時候開始流行;Time-Series Database 時序數據庫,應對越來越多的物聯網設備的數據存儲需求。而Ledger Database 賬本數據庫,也是新型數據庫當中的一種。

值得一提的是,本次發佈的QLDB,在AWS衆多服務當中是一個重要度在Tier 0級別的服務,與S3、Kinesis同級。什麼是Tier 0級別?簡單來說,其他服務都依賴於它,所以它絕對不能出問題,一旦它出問題,整個AWS都要掛掉。也可以說,QLDB是衆多AWS服務當中最可靠、最不會出故障的那一類——因爲AWS會最優先保證它不會出故障。

所以,我們有了三個有意思的發現:

“啥都能做的數據庫”越來越不重要了。反而是那些“只能做好一件事的數據庫”,越來越成爲互聯網的基石,被廣泛使用。
應用開發者有越來越多的“只能做好一件事”的底層工具可以搭配起來使用,可以把更多精力放在應用層的邏輯實現。
IT世界的分層分工越來越精細化,而這在雲計算沒有積累到今天這麼多用戶之前,幾乎是不可能發生的。

總結

QLDB不是區塊鏈。
QLDB不是區塊鏈。
QLDB不是區塊鏈。

但是你需要的真的是區塊鏈嗎?你需要的到底是什麼?

如果你只能做好一件事,你會選擇做什麼?別人擅長做什麼?如何跟他們充分合作?什麼工具最擅長做什麼?如何在自己的場景用好這些工具?在接下來的這個時代,這些問題很重要。

反過來說,如果聽到區塊鏈很火就去搞區塊鏈,聽到人工智能很火就去搞人工智能,那必然什麼也做不好。這是一定的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章