區塊鏈,一種非常特殊的分佈式數據庫

經過近2年的市場泡沫,仍然有人問我什麼時候需要使用“分佈式賬本”,而不是標準的“分佈式數據庫”。其他(惡毒的)人問我“區塊鏈技術”和“分佈式賬本技術”有什麼區別。 讓我們來澄清一下這裡的概念和詞彙問題。

集中式關係型數據庫

關係型數據庫(RDBMS)在一張表裡面組織數據,同時使用SQL語言查詢數據。它們在80年代成為標準。即使它們的體系結構隨著時間的推移而變得越來越複雜(n層、分佈式處理等),它們本質上仍然是集中式的,即定位、存儲和維護數據都在同一個位置上。這個類別佔數據庫市場收入的90%以上,包括最知名的供應商和系統:MySQL、Oracle、Microsoft SQL Server、IBM DB2、SAP、PostgreSQL、SQLite、Teradata等。

分佈式數據庫

當存儲設備不是全部連接到公共處理單元(如CPU)上,而是分佈在網絡上時,數據庫就是分佈式的(DDBMS)。隨著互聯網的發展,企業需要能夠處理大量結構化和非結構化數據的解決方案,並且能夠跨網絡進行擴展。DDBMS使用共識機制來確保容錯通信,並通過鎖定或時間戳機制提供併發控制。它們以不同的技術形式出現:

1、對等網絡節點數據存儲系統允許用戶通過網絡複製和共享文件,利用點對點協議,如:BitTorrent、NNTP、Freenet、Mnet等。

2、分佈式SQL數據庫是由主要供應商(Microsoft、Oracle、SAP、IBM等)設計的系統,允許對面向分析的任務進行大規模並行處理。

3、Hadoop是一個開源軟件框架,用於存儲數據、在商業硬件集群上運行應用程序。它為任何類型的數據提供了大量的存儲,巨大的處理能力和幾乎無限的處理併發任務的能力。

4、NoSQL數據庫是非關係DDBMS,可水平擴展,為實時web應用程序而生。最著名的解決方案是:MarkLogic、MongoDB、Datastax、Apache Cassandra、Redis、Riak、Google BigTable和CouchDB。

5、NewSQL數據庫是關係型DDBMS,旨在結合關係數據庫和NoSQL數據庫的最佳屬性(水平可擴展性和分佈式處理)。示例:Google Spanner、Clustrix、voltage db、MemSQL、Pivotal’s GemFire XD、NuoDB和Trafodion。

6、分佈式賬簿(DL)是DDBMS,它利用加密技術提供去中心化的多版本併發控制機制,並就無信任環境中共享事實(shared facts)的存在和狀態保持一致(例如,託管共享數據庫的參與者是互不信任的獨立參與者)。 共識本身並不是DL的唯一特性:其他分佈式數據庫也使用共識算法,比如Paxos或Raft。不可變性也是如此:在DL(Google HDFS、Zebra、CouchDB、Datomic等)之外也存在不可變數據庫。我認為DL的兩個不同點是:(a)讀寫訪問的控制是真正去中心化的,而不是像其他分佈式數據庫那樣在邏輯上是中心化的,以及(b)在沒有可信第三方的競爭環境中保護事務(transactions)的能力。 有些人把這個類型稱之為“共享賬簿”,但我更喜歡用“分佈式”這個詞,因為共享可以表示“分割/分裂”。

6.1、比特幣系統是DL的第一個實例,其目的只有一個:點對點的比特幣(加密貨幣)支付手段。為了避免雙花,比特幣使用了數據鏈(因此稱為“區塊鏈”)和其他機制的POW工作量共識證明。比特幣是抗審查的,它的主要特徵是:拜占庭容錯、偽匿名、可審計性(公開)、不變性、問責性(時間戳)和不可否認性(簽名)。

6.2、有些系統是受到比特幣系統的啟發,或者設計與之接近。它們通常實現其大部分特性,但不是全部或具有不同的特性。 例如:

  • 其他加密貨幣實現了隱私機制(Zcash),或使用了不同的一致性協議,如POS權益證明、Proof of burn燃燒證明等。
  • 以太坊擁有許多比特幣功能,但其設計目的是執行可編程交易(智能合約)

6.3、有些系統與比特幣有很大區別:

  • 埃森哲設想的DL並不是一成不變的
  • R3 Corda設計的是在監管環境與數量有限的已知參與者中運作的系統(例如金融機構、監管機構),BFT不是必需的(安全性通過不同的方法實現),審核能力的實現是基於“need to know”,關於交易的共識則基本上減少為締約雙方的驗證。
  • 分佈式賬本:分佈式一致賬本(Distributed Concurrence Ledger)是為處理資本市場和支付的金融機構量身定做的。Concurrence是在分佈式一致賬本系統中尋求共識的一種替代方法,它不使用加密貨幣、數據鏈,也不使用工作量證明[注:在我看來,這種方法類似於Corda]
  • HashGraph Swirlds:HashGraph是基於“八卦協議”(gossip protocol)的技術,其中的“塊”是“事件”:每個成員重複地隨機選擇另一個成員,然後告訴這些成員所有他們不知道的事件。隨著hashgraph的本地副本的增長,成員運行一個算法來確定事件的一致順序(以及一致時間戳)。它的數據結構是一個有向無環圖,其中每個頂點包含其兩個父頂點的哈希值。

6.4、BigChainDB旨在通過向標準分佈式數據庫添加區塊鏈特性(去中心化控制、不變性、數字資產的創建和流通)來提供可擴展的分佈式數據存儲服務。BigchainDB繼承了現代分佈式數據庫的特性:隨著節點數量的增加,吞吐量和容量呈線性擴展;全功能的NoSQL查詢語言;高效的查詢和許可。

以下是觀點總結(簡化):

区块链,一种非常特殊的分布式数据库

“雙重無需許可”(double permissionless)的分佈式賬本(如比特幣)是最去中心化的賬本,並且具備抗審查性。如果它們越不去中心化(例如,在半信任的環境中的需要許可的DL),它們就越接近於是一種使用加密技術的“常規”分佈式數據庫。在後一種情況下,密碼學被用作一種新的機制,以加強同行之間的可審計性和問責性:

区块链,一种非常特殊的分布式数据库

————————————————————————————————————————————————

你可能會問什麼是區塊鏈技術? 具有諷刺意味的是,對於這一定義沒有達成共識:

極簡主義者會說區塊鏈只是比特幣 有些人認為它應該包含任何帶有塊鏈接的DL 一些專家認為它應該包含任何具有一些關鍵特性的DL:比如塊鏈接、不變性和一致協議 最大化主義者說“區塊鏈技術”等於“分佈式賬本技術”等於“加密支持的DDBMS”。 此外,使用“區塊鏈”一詞來進行營銷和溝通也更容易,即使它可能具有誤導性…… 最後一個方程:比特幣區塊鏈 ⊆ 區塊鏈技術 ⊆ 分佈式賬本技術 ⊆ 分佈式數據庫技術。

如果你喜歡區塊鏈辯論,讓我來分享4個有趣的問題: 比特幣真的是BFT嗎? 比特幣和其他DL如何處理CAP定理? DL可以同時分散、可擴展性和安全嗎? [談到三難困境,我推薦這篇關於DCS不可能三角的文章] 沒有token的私有區塊鏈真的比中心化系統更高效嗎? 這篇文章的靈感來源:吉迪恩·格林斯潘,理查德·根達爾·布朗,帕斯卡爾·布維耶(他使用不同的分類方法),戴夫·伯奇,科林·普拉特。

(完)


分享到:


相關文章: