區塊鏈與分散式資料庫的比較

banq發表於2022-03-04

隨著限制一些資料庫開始支援版本控制和校驗,而區塊鏈開始能儲存更多型別資料,資料庫和區塊鏈這兩種技術是否正在相互融合?
這是來自thenewstack的一篇文章,文試圖調解這兩者之間的對立矛盾,從相互學習角度比較它們,但是透過仔細比較以後,你會發現,區塊鏈和資料庫雖然都是資料儲存,真的是兩種完全不同思維世界下的儲存,資料庫只是IT邊界內一個解決方案,而區塊鏈是從業務產品的戰略高度解決問題的大道至簡技術,區塊鏈和資料庫的區別僅僅在於一個假設前提的錯誤:資料庫提供者將自己假設在IT技術邊界內,對業務上下文根本不關心,試圖提出一套解決方案適合所有或大部分上下文場景,這是典型的心理上認知謬論:舍基原則
 

資料庫和區塊鏈相似的地方:
假設我們在區塊鏈的定義中包括物化的世界狀態:

  • 這兩種技術都支援讀寫資料值。
  • 兩者都提供了某種風味的 "交易、事務 "和排序;可能透過一點工作,應用程式可以安排一個更新在另一個之前或之後發生,並且可以知道一個更新何時完成。
  • 兩者都是持久耐用的儲存:資料庫被設計成可以在機器崩潰後不丟失資料,如果你在可用性相關的位置有足夠的節點機器;區塊鏈甚至可以在任何單獨副本的永久移除或丟失中倖存下來。

 

區塊鏈的能力
區塊鏈有一些通常在普通資料庫中找不到的屬性:

  1. 在使用者可見的能力中包含一個賬本,這意味著它們可以支援版本(訪問歷史資訊)和脈絡、軌跡或旅程(你可以確定資料何時被改變,以及由誰改變)。
  2. 區塊鏈通常還提供某種味道的不變性和 "防篡改":有可能知道以前存在的任何東西是否已經消失或被破壞。


一些資料庫提供自動備份,但這與完整的歷史或完整性驗證不完全一樣。
公共區塊鏈通常也有一個終端使用者身份的全域性概念,直接連線到交易事務模型和語義中,而這不是資料庫的傳統特徵,可能除了一些內建的日誌支援外。

區塊鏈有另一個決定性的特徵:去中心化。
傳統的資料庫,即使是基於雲的現代化身,也被設計成由單一實體擁有、保障和管理。
事實上,你可以說,將資料的控制權隔離給其所有者是現代雲資料庫的一個決定性特徵,其中資料安全、隔離和治理被認為是關鍵的設計原則。

相比之下,區塊鏈是去中心化的賬本:不是分佈在雲供應商資料中心的機器之間,以保證耐用性,而是分佈在多方。
這些多個當事方可能是商業關係,但他們通常不 是彼此"信任 "的IT:
  • 他們每個人通常都有自己的資料副本
  • 他們各有自己的硬體和軟體系統,
  • 他們各自有自己的安全團隊和協議,等等。


隨著去中心化的到來,我們傾向於將各種能力與區塊鏈聯絡起來:
一致的、不可改變的、完全有序的、不可抵賴的資料複製,可以跨越公司、雲、地區、賬戶和技術堆疊。
用更簡單的話說。一個單一的真相來源,在所有各方之間自動維護,無論他們居住在哪裡。
這是一個令人難以置信的強大機制,通常不會出現在你的典型資料庫供應商的功能列表中。
 

資料庫的能力
資料庫也有一套大多數區塊鏈所不具備的能力。
為了保持我們的比較在某種程度上是對等的,我們在這裡將 "資料庫 "的定義限制在廣泛採用的雲託管SQL和NoSQL資料庫,如谷歌Spanner、Azure CosmosDB、AWS的Amazon Aurora和Amazon DynamoDB。 這些服務有一些特點,是它們在構建可擴充套件的企業級應用時的基礎,這些應用可以在關鍵任務的商業應用中儲存和操作實時資料。

  • 查詢語言(包括連線和事務):

資料庫和區塊鏈之間最明顯的區別之一是,資料庫中的資料可以以強大的方式進行原子分組和訪問;
最常見的是使用SQL。
"連線Join"是資料庫本身搜尋和分組它所持有的資料的能力,這是區塊鏈上不容易獲得的強大功能,在區塊鏈上,每個單獨的專案通常必須被孤立地檢索,然後在應用邏輯中處理,以執行相當於連線、聯合、巢狀查詢或任何其他非瑣碎的訪問模式。
同樣,ACID(原子性、一致性、隔離性、永續性)事務,允許使用者在應用層面將更新的內容原子化地組合在一起,這在區塊鏈中不一定適用,但在現代雲資料庫中是必然的。
  • 高度可用

雖然區塊鏈創造了 "鏈級 "的持久儲存,如果有許多區域和雲隔離的各方使用它,每個單獨的節點通常執行在一臺機器上,因此對伺服器故障沒有彈性:一個伺服器的崩潰會導致該節點100%的中斷。
相比之下,像DynamoDB或CosmosDB這樣的服務中的表對單個機器甚至是區域性的故障具有高度的彈性。
因此,資料庫與區塊鏈的區別在於提供99.99%或更高的可用性,而其所有者不需要付出任何努力或部署複雜性。

(banq注:從資料庫思路看如此,但是跳出這個思路侷限看,區塊鏈本身的賬本複製就是保持高可用,任何一個伺服器完全崩潰都一點關係沒有,去除了中心化的概念,就像眾多神經細胞中一個死了,不會影響整個神經網路計算的準確性和可用性)
  • 高吞吐量和低延時

像以太坊這樣依靠工作證明的公共鏈可能需要很多分鐘才能達到 "最終性"(即資料在未來的所有時間裡都是有效的不可改變的,沒有機會被改變)。即使是私有的、經過許可的區塊鏈,如Hyperledger Fabric,也需要幾秒鐘才能達到最終狀態。以太坊的吞吐量約為每秒15個交易(TPS),適用於所有使用者的總量。Hyperledger Fabric的吞吐量取決於其部署細節,但很難在沒有錯誤的情況下實現優於每秒幾百筆交易的持續效能。
相比之下,亞馬遜的DynamoDB可以實現8900萬TPS,延遲為個位數毫秒,而這只是他們數百萬客戶中的一個,總的總容量,雖然AWS沒有公佈,但無疑要高得多。
 
(banq注:資料庫的優點也是屁股坐在資料庫邊界內做出的心理安慰判斷,區塊鏈不是隻有一個賬本,而是可以大賬本里巢狀小賬本,這種樹形結構擴充套件就無限了,不是所有底層的交易都要同步到高層上,可以透過彙總Rollup等技術同步到公共鏈,將區塊鏈看成一個賬本,還是出於單箇中心化思路,區塊鏈是一個名詞,一個事物,但不代表它只是一個賬本,這在傳統領域理所當然的假設在去中心化挑戰中就不存在,亞馬遜是一個事物,一個公司,一套系統,大家同時在這個系統交易可實現8900萬TPS,但是如果你將區塊鏈的樹形結構中大小分層交易數加起來,比這個數字多得多。
因為區塊鏈是業務商業和技術自然融合的,而亞馬遜平臺只是侷限在IT技術這個邊界範圍內,它把所有交易都看成一種事務,都是相同的,不用去區分很多交易不需要共享使用一套技術底層,而區塊鏈自然將業務和IT技術結合,區塊鏈A邊界內的交易只在這個邊界內建立和複製賬本即可,不需要複製到區塊鏈B邊界中,只有兩者需要交易時,才會提高到更高一層交易複製)
  • 每筆交易成本低

由於基於雲的高度多租戶的實施,像我們在這裡討論的資料庫在每筆交易的基礎上是非常經濟的。在2022年1月,最低的以太坊單筆交易日均成本為25.83美元(最高的大約是這個數字的兩倍),而在us-east-1地區按需寫入亞馬遜DynamoDB的資料庫成本為0.00000125美元,這使得以太坊比傳統資料庫的成本至少高出20,664,000倍。
SaaS/Zero ops/Built-in scaling。在Coinbase這樣的公司以生產規模部署區塊鏈,需要生產級的區塊鏈基礎設施,需要一個龐大的、知識淵博的團隊,需要非同小可的基礎設施支出來手動管理區塊鏈儲存並透過備份建立本地化的冗餘,還需要對基礎設施和執行在上面的區塊鏈軟體進行復雜的、持續的監控。
相比之下,像谷歌Spanner或Azure CosmosDB這樣的資料庫是 "擴音 "的--開發者從未見過底層伺服器、作業系統、資料庫軟體部署、機器級的擴充套件操作等。因此,無論一個資料庫表變得多大,底層儲存都會自動擴充套件。對於一個沒有高階工程師的公司來說(或支付他們的大筆費用),這是所有權成本的巨大差異--特別是當加上資料庫與區塊鏈的每筆交易成本較低,以及需要將區塊鏈部署擴充套件到24x7x365的峰值容量。
(banq注:交易成本制約新技術的主要因素,只有成熟技術更便宜,新技術不便宜,這是基本市場經濟概念)
 

兩者能融合嗎? 
顯然,區塊鏈和資料庫從足夠不同的源頭出現,無論是在用例要求還是實施技術方面,目前看起來都相當不同。但這些差異註定會繼續存在嗎?讓我們看看一些可能預測未來狀態的有趣趨勢線。

雖然還沒有擁抱多方去中心化,但云資料庫正在獲得一些能力,使其向區塊鏈式的能力邁進了一步。

  • 谷歌Spanner讓一個所有者(賬戶)擁有一個跨越多個地理區域的表,每個區域都可以進行更新,讓所有其他區域看到。
  • Snowflake允許一個雲上的表所有者與不同雲上的另一個公司的讀者分享該表。
  • 亞馬遜QLDB和甲骨文區塊連結串列支援ledgering--一種不可改變的、有序的更新日誌,可以幫助建立一個變化的脈絡,並提供版本查詢,可以檢索過去存在的資料,而不僅僅是現在。

同樣地,區塊鏈也開始具有資料庫的一些特徵:
  • 像Infura和Alchemy這樣的公司現在提供 "區塊鏈即服務",試圖創造更高的可用性,完全管理("無伺服器")的解決方案,更像傳統的雲服務,而不像單獨的自我部署、容易出錯的區塊鏈節點。(當然,純粹主義者可能會抱怨說,由一箇中心化的機構提供區塊鏈能力,會破壞其一些去中心化的性質)。
  • 像IPFS這樣的協議正試圖擴大區塊鏈所支援的狹窄的資料型別範圍,包括作為一個 "網路檔案系統 "執行,也可以將大型、非結構化或半結構化的資料視為 "鏈上"。
  • 眾多研究人員、從業人員和企業正在研究如何透過批處理和其他所謂的 "L2"(第二層)解決方案來模擬更低的交易成本。作為一個具體的例子,Coinbase透過將許多使用者的購買行為批次化為一個單一的複合交易,解決了以太坊等區塊鏈的吞吐量限制和高額的每筆交易成本。

有許多方法可以將眾所周知的區塊鏈賬本格式,如以太坊,轉換為更傳統的資料庫;有效地使SQL等查詢語言可以在其中使用,儘管以太坊的基本協議不直接支援這種功能。
像Vendia這樣的公司(作者是其聯合創始人兼執行長)正在發揮積極的研究作用,將經典的資料庫功能,如避免髒讀和ACID交易,與區塊鏈和分散式賬本技術相結合。

簡而言之,我們將看到資料庫和區塊鏈技術繼續向彼此發展。在區塊鏈方面,原因是顯而易見的:資料庫功能集和企業對這些用例的操作和成本期望已經出現了幾十年,有充分的理由,而且這些理由不會消失。商業區塊鏈解決方案將不得不滿足這些商業期望,否則就會死掉。

資料庫採用區塊鏈功能的壓力要更微妙一些。這其中有一點是健康的競爭:
  • 哪個客戶不希望能夠透過舊版本的資料進行時間旅行,知道他們的資料是防篡改的,或者透過將世系直接整合到資料模型本身來消除應用日誌的開銷?
  • 金融和其他法規要求比以往任何時候都更仔細地跟蹤任何涉及金錢或信用的東西,包括能夠審計什麼被改變,什麼時候,以及由誰改變。
  • 政府機構越來越注重公平性和透明度,他們不可能對那些容易 "忘記 "舊資料副本或不能輕易與審計人員、其他機構或消費者共享的資料儲存解決方案感到滿意。

 
banq注:事件溯源+資料庫 = 區塊鏈,這是我一直堅持的觀點,上述三點需求可以使用EventSourcing實現,但是事件溯源是將事件賬本儲存在一家組織或平臺內,依靠一箇中心的權威或自覺維護其資料完整性,而區塊鏈是將事件賬本公開復制到多家組織或平臺,以資訊公開化客觀上保證資料完整性不變性。這兩者是完全不同的思路。

相關文章