區塊鍊技術其實就是一個特殊的多活分布式資料庫,既不是萬能的也不是一無是處的,和所有技術一樣都有特定的适用場景,大家也需要在技術角度客觀的看待這個問題。
記者 | 鴿子
最近,随着區塊鍊技術在各大媒體上大肆報道,人們對區塊鍊的态度分為兩級。
一種看法是百分百的擁護和信奉,将“去中心化”時時刻刻挂在嘴邊,好像隻要去了中心化,整個地球就和平了,人類就超脫升華了。而另一種看法則來自“古典”的技術派,認為區塊鍊就是炒作,“去中心化”沒有任何實際應用價值,僅僅是用來投機的一種方式,完全嗤之以鼻。
在從事多年資料庫工作的巨杉資料庫CTO王濤看來,這兩種看法都是不負責任的。
在他看來,目前業界的程式員基本對區塊鍊的了解還停留在“小夥子在廣場對姑娘說我愛你,讓所有人記錄下來”的層面。這種說法作為講給大媽聽的故事不錯,但是從技術人員的角度來看,這實際上是一種非常不靠譜的了解,将區塊鍊中的一些精髓設計給掩蓋起來了。
那麼,傳統IT從業者到底應該如何從本質來了解區塊鍊的技術原理呢?區塊鍊與資料庫到底是什麼關系?區塊鍊在目前到底有什麼實實在在的技術應用場景?
帶着這些問題,區塊鍊大學營特别采訪到巨杉資料庫CTO王濤,希望他能詳細解答我們的疑問。
區塊鍊大學營:在您看來,現在區塊鍊的很多介紹文章都給完全走偏了,那麼問題來了,從傳統IT的角度到底應該如何區塊鍊的技術原理?
王濤:現在網上一大堆講區塊鍊的文章,可是真正能把區塊鍊技術底層精髓的設計思路和重點講明白的沒幾篇。這對于我們搞技術的人來說,挺不能接受的。我做資料庫核心開發行業已經從業15年了,也算老兵,我想從資料庫的角度來說說區塊鍊的本質,以及其與現有資料庫存儲體系中核心的設計思想的差別所在吧。
先從宏觀看,區塊鍊和分布式資料庫的原理、機制這些幾乎是一緻的。區塊鍊這一技術的原理其實并不非常複雜,而且與資料庫技術的很多原理是一脈相承的。
那麼從最本質的功能來看,不管是資料庫還是區塊鍊,都是用來存資料的技術。是以,區塊鍊的概念可能引申出了很多商業方面的革新,但是抛開這些上層建築,從底層地基來看,區塊鍊可以認為是一種特殊的資料庫技術。
對于傳統資料庫來說,經曆了網狀資料庫、層次型資料庫以後,從上世紀八十年代以來,關系型資料庫一直處于業界統治地位,在所有資料存儲體系裡是食物鍊最上層的“霸王龍”。所有學計算機的同學們在大學裡學到的就是關系型資料庫,在工作裡用到的MySQL、Oracle也是關系型資料庫,是以可能會産生“資料庫就是SQL和表結構”這樣的誤解。
實際上,資料庫隻是一種用來存儲和查詢資料的工具,僅此而已。SQL是一種大家用的比較多的手段,而目前除了SQL業界還有NoSQL、NewSQL等一大堆變形。是以,大家先把思路放寬,将“資料庫”的概念擴充到一切可以儲存與擷取資料的機制。
那麼來看區塊鍊技術,不管是比特币還是以太坊,或者其他變體,其核心本質都是面向交易業務的資料存儲于讀取能力。
在之後的一系列文章裡我會詳細介紹“去中心化”的設計原理和機制,但是現在大家把它看做是一個擁有很多分拷貝的潘多拉魔盒,隻要往裡寫了東西就可以很快速地在其他拷貝中顯現出來。從資料庫的角度來看,這就是所有資料庫從業人員幾十年來一直追求的異地多活機制。
是以,區塊鍊技術即異地多活資料庫技術,是各位程式員同學了解區塊鍊本質的核心思想。
區塊鍊大學營:區塊鍊技術和傳統資料庫在機制中的有哪些相同點和不同點呢?先說說相同點吧。
王濤:如果大家了解資料庫核心結構,可以看到區塊鍊的核心架構是資料庫核心架構一個子集。
區塊鍊的“賬本”就相當于資料庫的“日志”,資料庫是将操作按照順序寫入日志,在區塊鍊裡面叫做賬本。
區塊鍊技術的設計和機制,與傳統資料庫的核心理念極為相似。譬如,從其傳輸和存儲的資料結構上來看,區塊鍊的鍊式結構來源于傳統資料庫的事務日志。任何資料庫的DBA都知道,資料庫的事務日志本質上就是不可更改的鍊式結構,事務中的每一條操作記錄都會有一個反向指針指向該事務中的上一條記錄。是以,區塊鍊的鍊式結構本質上脫胎于資料庫事務日志,同時增加了區塊之間的反向哈希值作為指針,且引入了默克爾樹結構進行快速資料校驗。
因而,我們可以安全地進行認為:區塊鍊的鍊式結構在存儲體系中等價于資料庫的事務日志。本質上資料庫的任何操作同樣是不可篡改的,隻不過目前大部分資料庫不會對外暴露事務日志的解析工具,僅儲存每一條記錄的最終狀态而已。
此外,區塊鍊的共識部分也脫胎自資料庫的一緻性管理機制。比如傳統資料庫的主從結構(例如IBM DB2的HADR、Oracle的DataGuard)就是在多個節點之間實時複制資料的一種方式。
當然,和區塊鍊比起來這種方式一方面是做不到傳說中的“去中心化”,另一方面隻能有一個節點作為主節點負責讀寫,其他節點作為從節點隻讀,而無法完全做到異地多主多活的拓撲結構。
而分布式資料庫(如NoSQL)使用了多副本自動選舉的機制,業界大家都在談論的Paxos、Raft就是典型的多副本一緻性管理算法,與區塊鍊中PBFT等機制存在異曲同工之處。
是以區塊鍊更像是一類擁有特定架構并為特定目的而設計的分布式資料庫。
區塊鍊大學營:區塊鍊技術在和傳統資料庫兩者機制中的不同點又是什麼呢?
王濤:區塊鍊與傳統資料庫的本質相同,而所有的不同點都來自于“去中心化”,也就是“異地多活”這個前提。
就好像新型分布式資料庫與傳統資料庫相比,所有的設計變更都來自于“PC伺服器内置盤替代外接盤陣”這個前提。區塊鍊技術中不論是UTXO、nonce、PoW、PoS、數字簽名等一系列聽起來很“高大上”的東西,其目的都是圍繞着解決“異地多活”這個困擾着資料庫行業專家20多年的硬骨頭來設計的。
我們先簡單從事務與一緻性算法這兩個方面,來看看區塊鍊與資料庫技術的核心差異在哪裡。
從事務功能來看,資料庫的事務機制就是為了保障通用場景下的一緻性原子操作。而區塊鍊技術為了滿足異地多活的前提,将原子操作通過特殊的事務日志結構,抛棄了通用業務場景,而是百分百集中到支付與結算業務,進而實作了結算場景下的異地多活原子操作。
舉個例子,比特币使用的UTXO結構在跨遠距離網段的多活架構中,是一種替代傳統事務交易日志結構的方式,将幾個操作合并在一條事務記錄裡面作為原子操作發送,而不是每條記錄的更改都作為獨立的記錄,并通過反向指針串聯起來。同時,UTXO并不存儲每條記錄的最終結果,而是存儲變更過程,這與傳統資料庫中事務日志的存儲機制有着理念上的差別,之後我們會詳細讨論為什麼在區塊鍊模型中使用UTXO的價值所在與局限性,以及如果采用傳統日志方式所引發的局限性和可能的解決方案。
實際上,和傳統事務機制比起來UTXO的理念并不複雜,同時目前UTXO對于通用事務來說局限性很大,無法用于非支付類業務的場景,但是這種思路未來也許會成為多活資料庫中支援通用事務的一種基礎,值得所有資料庫領域的從業人員深入思考。
當然,目前的UTXO結構的執行效率優化也是很大的問題。像在比特币目前的代碼實作中,CTxMemPool對象中存在大量的持有全局鎖函數。由于UTXO需要追蹤每一個coin的花費流程,在記憶體中形成一個巨大的樹狀模型,是以絕大部分需要跟蹤交易的操作都需要對記憶體池進行全局鎖定,導緻執行效率相對低下。相比起傳統資料庫緩沖池的資料頁模型,比特币的UTXO實作方式有待進行大量優化和提升。
而共識部分則對應着傳統的一緻性算法,也就是解決“誰應該寫”的問題。
現在用的什麼PoW、PoS、DPoS、PBFT之類的算法,其實就對應了資料庫的一緻性算法,本質上就是決定誰來作為永久化日志存儲的基準。在多活架構中既然每個節點都能進行寫入操作,為了讓大家達成一緻必須在某個時刻向一個節點看齊。這個時間跨度是像比特币那樣每十分鐘,還是像以太坊那樣每十幾秒,還有用什麼方式決定誰是這個基準節點,就是所謂共識算法的核心。
對于“誰應該寫”的衍生問題,就是“寫的東西是不是真實”。這個問題在傳統資料庫體系是預設排除的。
區塊鍊的共識算法另一個需要解決的問題就是拜占庭問題。如今,鍊在公網上,并不知道其他對等節點是不是靠譜的,這才是共識算法難以得到突破的關鍵。既要滿足功能層面的需求,還要從算法上保證不靠譜的個别節點不會影響整個網絡的一緻性共識。
其他的數字簽名之類的都是小特性,基本搞IT的兄弟都很明白,在這裡就不多說了。
區塊鍊大學營:作為資料庫和分布式技術的專家,您如何看待區塊鍊技術的發展?
王濤:現在“古典”和“區塊鍊”的概念大家吵的很火熱,在技術領域也不例外。
經過一段時間的深入了解,我看到作為第一批區塊鍊技術的實作,傳統比特币與以太坊在共識機制、存儲機制、智能合約機制、跨鍊通訊機制等領域并沒有非常嚴密的設計。
這些技術的不嚴密,就引發了一些在資料庫與存儲領域比較常見的問題,導緻其資料規模無法無限增加,比如目前ETH幾百GB就産生了嚴重的性能瓶頸,幾乎不可能到達上百TB規模,吞吐量極為有限,這樣機關吞吐量基本上沒辦法适應通用分布式資料存儲或通用結算體系的要求。
從産品功能的角度看,目前的區塊鍊産品與資料庫相比存在極大的差距。尤其是對于在業界存在了幾十年的關系型資料庫,其主要核心功能包括增删改查,而主要結構則包括SQL解析、日志、資料管理、以及索引管理幾大子產品。是以從功能上看,目前區塊鍊可以說是一個極簡的多活資料庫模型,功能支援僅僅是資料庫的一個微小子集。
現在的區塊鍊技術還處于0.1版本的時代,就好像80年代各個資料庫技術百家争鳴的年代一樣,各自都在提出新的架構和觀點。
是以,當我們使用變化的眼光來看待區塊鍊的時候,很多目前的問題實際上并不是不可解決的。例如每秒鐘3筆交易的比特币技術,是不是意味着UTXO模型不行呢?當然不是。
我們隻有當正确了解每一個設計的核心思想以及其局限性,才能用動态發展的眼光看待新技術,了解掩藏在不同産品特性後面的深層次本質與原理。
是以我認為,區塊鍊技術的未來發展,主題是“融合”。就好像之前NoSQL與NewSQL之争,最終也都演進到兩者融合成為Multi-Model Database一樣,在區塊鍊與傳統資料庫技術越來越多互相融合後,最終會形成一個更有效的資料管理體系。
區塊鍊大學營:分布式資料庫和區塊鍊技術的融合,到底能解決什麼問題?
王濤:分布式資料庫和區塊鍊技術的融合,我認為兩者結合點非常非常多。
區塊鍊彌補了原有資料庫機制的多活之間事務的難點,其創新在于支援多活架構。全世界無數傳統資料庫專家,從上世紀90年代就開始研究分布式多活資料庫,但是到現在也沒有任何成型的理論和實作,在最近二十年一直無法突破的領域。
在區塊鍊技術上,它抛開了強一緻和通用事務能力,在對交易和結算領域使用特定的資料結構與算法實作了這種機制,實際上是一種非常跨時代的思路,絕對值得所有資料庫行業的從業者借鑒和反思。
而分布式資料庫就将發揮其特性,包括資料的擴充性、高并發、高性能以及快速的标準化通路還有更靈活的使用場景。
通過兩者技術結合,将會形成資料庫為基礎的去中心化管理機制。通過分布式資料庫,提供了通用的事務支援,高并發、高性能以及所有包括增删改查、SQL解析、日志、資料管理、索引管理等主要功能。而對區塊鍊技術的融合,
将解決多活資料庫的“雙花問題”也就是一緻性控制的問題,還能解決公網内的信任問題以及整個資料的更高安全性。
如果想用現實的場景來舉例,就不得不将區塊鍊和業務模式捆綁到一起。其實可以這樣簡單來看,凡是需要使用到異地多活機制的存儲,原則上都可以使用區塊鍊技術來完成。當然,這麼說有點粗暴,裡面還涉及到一大堆例如強一緻性、吞吐量之類的需求,但是為了簡單起見大家可以先這麼了解。
舉例來說,如果把淘寶看做是中心化設計的一個巅峰,全球最大的百貨商店,所有開網店的店主都要求着阿裡爸爸給自己首頁推薦,那麼去中心化的淘寶可以認為是,隻要想要開網店的小姑娘,通過下載下傳一個“區塊鍊淘寶”的系統,就可以免費自由地向這個本地資料庫寫入自己要開網店的資訊,并把需要賣的東西挂到商店裡。然後這個系統通過區塊鍊技術與網上其他所有店長的系統相連,這樣小姑娘就可以不需要花任何“租金”就能開網店啦。同時每一筆交易也“沒有中間商賺差價”,進而完全免除了“店大欺客”所帶來的危害。
區塊鍊大學營:說說你們正在做的事情,未來巨杉這邊對于區塊鍊技術這塊的方向規劃大概是怎麼樣的?
王濤:正如上文所說的模式,巨杉資料庫通過分布式拓展性、高性能高并發以及SQL支援等重要特性,目前已經成功的在一些區塊鍊的應用中得到使用。同時通過我們自身技術團隊在資料庫、分布式架構等等領域的豐富經驗,巨杉也在區塊鍊算法上進行了創新,并且将兩者進行了有機的結合,可以說正在逐漸實作我們所提到的兩種技術融合的過程。
此外,巨杉資料庫基于在企業級市場的豐富經驗,還将會通過技術融合,讓更多的使用者更好的應用區塊鍊技術。
我們巨杉接下來一段時間的産品線設計已經受到了區塊鍊技術的很多啟發,未來大家可能會看到資料庫與區塊鍊技術更加完美的結合。
區塊鍊大學營:如果傳統IT人想入門或者融合區塊鍊的技術理念,您有什麼好的建議呢?
王濤:搭建測試環境,看代碼,gdb跟蹤,真正沉下心死磕某一個區塊鍊底鍊,把裡面的機制了解透徹。作為入門教材,大家可以看看比特币的代碼。比如将bitcoind編譯完了搭建個測試網絡,從頭一步步跟蹤代碼流程,是深入了解PoW、UTXO等機制最有效的方式。
而且我認為,最好的了解辦法就是閱讀這幾個算法、機制相關的論文資料。因為這些才是設計者真實設計理念、原理的嚴謹記錄,所謂的“解讀”和“翻譯”很可能會忽略了一些部分或者曲解了一些最初的意思。
另外,從我本人的經驗來看,閱讀開源項目的開發者指南和代碼,是最好的了解産品設計思想的方式。
後記:
以上是巨杉資料庫CTO王濤,從資料庫角度解釋區塊鍊,對于區塊鍊技術的分享,如果你沒有聽夠,還想了解更多,希望王濤能更多講講區塊鍊的技術精髓和實戰,請在留言區發表你的期待,我們将根據你的期待,邀請王濤為你帶來更多精準的技術分享。
王濤:SequoiaDB巨杉資料庫的聯合創始人&CTO
王濤曾是北美IBM DB2 Lab核心研發成員,有着超過十年的資料庫核心架構設計,資料庫引擎研發和企業級資料庫應用的經驗。王濤同時對區塊鍊技術,分布式架構,分布式算法,區塊鍊以及去中心化業務應用有着深入的了解。
2012年公司成立以來,王濤先生一直主導着SequoiaDB産品的架構設計與開發,并在業界對未來資料庫、大資料、區塊鍊技術發展進行全力地推動。
王濤作為SequoiaDB巨杉資料庫的兩位創始人之一,目前擔任SequoiaDB的CTO與總架構師。在王濤先生的上司下,SequoiaDB的技術團隊從零開始打造的分布式資料庫,如今SequoiaDB目前已經擁有超過30家大型銀行使用者,以及近百家企業使用者,并已經在多個銀行核心系統投入生産,并于2017年入選國際技術分析機構Gartner的資料庫年度報告。
原文釋出時間為:2018年03月17日
本文作者:區塊鍊大學營
本文來源:
CSDN區塊鍊大學營,如需轉載請聯系原作者。