區(qū)塊鏈分布式數(shù)據(jù)庫是個什么
一、前言
比特幣第一筆交易發(fā)生在2009年1月4日2點15分5秒。到今天,超過10年了。在這10多年的過程中,比特幣網(wǎng)絡(luò)上發(fā)生的所!有!交易,全都完整地保存了下來。任何人都可以下載查閱比特幣所!有!的歷史交易。更牛X的是,比特幣網(wǎng)絡(luò)還沒有專門的人去維護,沒有專門的法規(guī)去約束誰要保存這些交易。它就這樣穩(wěn)定安全地保存了10年的交易數(shù)據(jù)。
區(qū)塊鏈或許命中注定承擔(dān)保存那些需要長期、安全、穩(wěn)定、數(shù)量龐大的數(shù)據(jù)。
區(qū)塊鏈數(shù)據(jù)庫,這個名字聽起來太拗口,很難理解。遇到這個名詞,我腦子里一直無法想象出一個對應(yīng)的“視覺化圖景”。說數(shù)據(jù)庫,我們能想象出一張表;說區(qū)塊鏈,我們能想象出一個一個區(qū)塊首尾相連。但區(qū)塊鏈數(shù)據(jù)庫是個什么玩意?
二、區(qū)塊鏈數(shù)據(jù)庫
數(shù)據(jù)庫,簡而言之可視為電子化的文件柜——存儲電子文件的處所,用戶可以對文件中的數(shù)據(jù)運行新增、截取、更新、刪除等操作。所謂 “數(shù)據(jù)庫” 系以一定方式儲存在一起、能予多個用戶共享、具有盡可能小的傳統(tǒng)數(shù)據(jù)庫是用來存儲信息的數(shù)據(jù)結(jié)構(gòu)。這包含能夠用來制作支持各類商業(yè),金融和管理決定的報告,所需要的數(shù)據(jù)。政府也會使用數(shù)據(jù)庫來存儲大型數(shù)據(jù),可以會有幾百萬個記錄。數(shù)據(jù)庫從文件分級系統(tǒng)開始,提供了最基本的信息獲取和存儲功能。然后,數(shù)據(jù)庫使用相關(guān)的模型,通過將多個數(shù)據(jù)庫進行相關(guān),可以有更多復(fù)雜的方式來獲得數(shù)據(jù)。存儲在數(shù)據(jù)庫中的信息可以使用管理系統(tǒng)來進行管理。簡單的數(shù)據(jù)庫被存儲在數(shù)據(jù)行列中,被稱為表格。表格中包含不同領(lǐng)域,用來定義不同記錄的種類,存儲數(shù)據(jù)被稱為屬性。每個領(lǐng)域包含列和航,代表存儲的記錄。冗余度、與應(yīng)用程序彼此獨立的數(shù)據(jù)集合。
數(shù)據(jù)庫是被管理員可以修改,管理和控制的。數(shù)據(jù)庫總是會有管理員,并且可以完全控制數(shù)據(jù)庫。他們可以創(chuàng)建,刪除,修改數(shù)據(jù)庫中的任何記錄。他們能優(yōu)化數(shù)據(jù)庫的性能和大小。越大的數(shù)據(jù)庫就會有更慢的性能,所以管理員可以使用方法來優(yōu)化。管理員也可以把這個身份轉(zhuǎn)給別人。例如,管理員可以把身份轉(zhuǎn)給另外的用戶,讓他們來進行數(shù)據(jù)庫備份。但是,問題也會有,例如服務(wù)器跨了,唯一的方法就是從備份恢復(fù)。數(shù)據(jù)庫也是遞歸的,也就是說你可以回去重復(fù)某個任務(wù),或者說刪除任務(wù)。如果信息已經(jīng)備份,那么管理員就會刪除之前的記錄和其他過期信息。比如你在現(xiàn)在數(shù)據(jù)庫寫入了“John Smith”,現(xiàn)在需要更新住址。但是現(xiàn)在已經(jīng)有“John Smith”的備份了,所以你可以通過現(xiàn)有數(shù)據(jù)庫的新地址進行更新。
數(shù)據(jù)庫可以通過服務(wù)器架構(gòu)來實現(xiàn)。這是因為計算機需要連接服務(wù)器,它們管理數(shù)據(jù)庫,從而可以獲得信息和存儲的數(shù)據(jù)。最初地時候,數(shù)據(jù)庫客戶端使用ODBC連接,這是由管理員設(shè)定的,然后連接到數(shù)據(jù)庫。這個客戶端軟件然后就會運行,來完成加密連接,但是必須要有權(quán)限才能進入。這個權(quán)限能夠被管理員設(shè)置,或者用戶通過密碼也可以進入。這就是為什么用戶賬號會被創(chuàng)造,可以讓認(rèn)證的用戶進入,同時拒絕那些沒有認(rèn)證的?,F(xiàn)在大多數(shù)系統(tǒng),都會使用網(wǎng)頁接口。但是對于私人信息,還是需要認(rèn)證,但是公開數(shù)據(jù)庫就可以很容易地通過網(wǎng)頁進入。
我們可以看出,數(shù)據(jù)庫需要足夠的控制,這會讓它高度中心化。同時,這也是需要允許的,也就是說需要管理員來設(shè)定如何讓用戶進入。在生產(chǎn)環(huán)境下,DB管理員需要設(shè)定只讀權(quán)限,他們也需要給用戶設(shè)定更新和寫入的權(quán)限。傳統(tǒng)數(shù)據(jù)庫的中心化會保證系統(tǒng)的安全和信任。很多數(shù)據(jù)庫都會在私人網(wǎng)絡(luò)下運行,同時背后是大公司的防火墻。其他也有數(shù)據(jù)庫是基于云服務(wù)器。但是他們?nèi)匀皇切枰芾韱T來控制他們。
第一,不管是 RDBMS、NoSQL 還是 NewSQL,都會提供一個 接口,供用戶進行數(shù)據(jù)的存取。也就是說數(shù)據(jù)是可以篡改的,這跟區(qū)塊鏈不可篡改的思想相悖。
第二,傳統(tǒng)企業(yè)或者互聯(lián)網(wǎng)企業(yè)之所以選擇數(shù)據(jù)庫,因為這些 數(shù)據(jù)是私有的,數(shù)據(jù)就是價值,數(shù)據(jù)就是競爭力。 企業(yè)數(shù)據(jù)庫存儲的數(shù)據(jù)是絕不會公開的,跟區(qū)塊鏈所倡導(dǎo)的公開思想完全背離。比如你在知乎提問、答題,這些數(shù)據(jù)都會給知乎帶來最大的價值,而不是給你帶來最大價值。因為這些數(shù)據(jù)是存在知乎的數(shù)據(jù)庫里,只有具有相關(guān)權(quán)限的人才會接觸到。他們會拿這些數(shù)據(jù)做什么呢?出電子書、出實體書、出周邊、大數(shù)據(jù)分析等等,而這幾乎與你無關(guān)。也就是說,傳統(tǒng)數(shù)據(jù)庫是為企業(yè)最大化服務(wù)的,而不是用戶。
第三,傳統(tǒng)數(shù)據(jù)庫都是應(yīng)用在 中心化 的公司或者機構(gòu),與區(qū)塊鏈去中心化的思想相悖。中心化意味著作惡的概率、被攻擊的可能性極高。
第四,部分傳統(tǒng)數(shù)據(jù)庫開源,還有相當(dāng)大比例的數(shù)據(jù)庫都是閉源的。沒有開源的數(shù)據(jù)庫是由中心化的組織來維護代碼,安全性和穩(wěn)定性也是中心化組織來維護。這跟區(qū)塊鏈所倡導(dǎo)的開源思想相悖。一個開源的系統(tǒng)自然會存在問題,但是社區(qū)會以最快的速度進行修復(fù)。
第五,除了分布式數(shù)據(jù)庫有共識機制,其他的數(shù)據(jù)庫沒有完整的分布式協(xié)議應(yīng)用,而分布式協(xié)議可以理解成區(qū)塊鏈里的共識機制。大多數(shù)數(shù)據(jù)庫不具備共識機制。
第六,區(qū)塊鏈目前暫時沒有達到大規(guī)模應(yīng)用的要求,目前也是區(qū)塊鏈技術(shù)的瓶頸,而數(shù)據(jù)庫目前完全可以支撐大規(guī)模高并發(fā)的場景。區(qū)塊鏈由于是一個分布式系統(tǒng),想要實現(xiàn)高并發(fā),關(guān)鍵點在于共識機制。
所以,傳統(tǒng)數(shù)據(jù)庫無法改造成區(qū)塊鏈。
三、區(qū)塊鏈分布式數(shù)據(jù)庫
分布式數(shù)據(jù)庫從2005年左右開始,首先是NoSQL這波浪潮。這些數(shù)據(jù)庫解決的首要問題是單機上無法保存全部數(shù)據(jù),如HBase/Cassadra/MongoDB等。緊接著是RDMS的救贖,除了NoSQL之外,RDMS系統(tǒng)也做了不少努力來適應(yīng)業(yè)務(wù)的變化,也就是關(guān)系型數(shù)據(jù)庫的中間件和分庫分表方案。然后是NewSQL的發(fā)展,2012~2013年Google 相繼發(fā)表了Spanner和F1兩套系統(tǒng)的論文,讓業(yè)界第一次看到了關(guān)系模型和NoSQL的擴展性在一個大規(guī)模生產(chǎn)系統(tǒng)上融合的可能性。
區(qū)塊鏈技術(shù)也被稱為分布式賬本技術(shù),我認(rèn)為他和傳統(tǒng)分布式數(shù)據(jù)庫的主要區(qū)別是“”“信任”,區(qū)塊鏈?zhǔn)侨ブ行幕?,任何?jié)點都不是leader,都不被充分信任(trustless),區(qū)塊鏈內(nèi)的任何節(jié)點都可以修改數(shù)據(jù),修改完數(shù)據(jù)會向整個鏈內(nèi)進行廣播,其它節(jié)點接受到廣播并不是立馬同步修改記錄數(shù)據(jù),會對修改的數(shù)據(jù)保持懷疑,會根據(jù)共識機制,密碼算法去驗證這個數(shù)據(jù)的修改是否是合法的,如果不合法就丟棄掉,如果合法就記錄下來,而一般傳統(tǒng)的分布式數(shù)據(jù)庫節(jié)點之間是相互信任的,數(shù)據(jù)復(fù)制(數(shù)據(jù)的修改同步)沒有類似區(qū)塊鏈的一套驗證,講究實時同步,所以類似銀行,支付寶轉(zhuǎn)賬基本都是瞬間到賬,而如比特幣的買賣到賬時間都不是實時的,區(qū)塊鏈這套機制本質(zhì)上是犧牲了一定的效率而換取了安全性。
扯些題外話,目前來看區(qū)塊鏈技術(shù)的發(fā)展還處于早期,目前主要的應(yīng)用場景就是各種發(fā)幣,幣圈也是越來越熱,現(xiàn)在各國政府對區(qū)塊鏈都是擁抱的態(tài)度,但是對比特幣等數(shù)字火幣應(yīng)該還是沒有想清楚如何應(yīng)對和監(jiān)管,各國對數(shù)字火幣的態(tài)度也不盡相同。
另外一點,關(guān)于區(qū)塊鏈去中心化這個事情,目前已經(jīng)被很多人當(dāng)成政治正確,一直被強調(diào),我個人并不是很贊同。
去中心化看似是一個公平,普世的東西,但是在實際操作層面會有很多問題,比如在金融行業(yè),金融體系對一個國家來說是命脈所在,去中心化如何監(jiān)管,僅僅靠區(qū)塊鏈的共識機制,制度設(shè)計是不是就不會出現(xiàn)問題?
這些都是需要回答的問題,尤其在當(dāng)前的中國,中國改革開放40年來取得的經(jīng)濟奇跡和國家的體制有密切的關(guān)系,我們是民主集中式領(lǐng)導(dǎo),強調(diào)中心,核心,從哲學(xué)思想上說,完全的去中心化在中國更難獲得成功??傊畟€人認(rèn)為去中心化和中心化需要有個最佳的妥協(xié)才能在現(xiàn)實世界發(fā)揮價值,任何技術(shù)和理念必須產(chǎn)生實際價值才有意義。
四、分布式數(shù)據(jù)庫核心產(chǎn)品
DRDS:Distributed Relational Database Service,是阿里巴巴致力于解決單機數(shù)據(jù)庫服務(wù)瓶頸問題而自主研發(fā)推出的分布式數(shù)據(jù)庫產(chǎn)品。DRDS 高度兼容 MySQL 協(xié)議和語法,支持自動化水平拆分、在線平滑擴縮容、彈性擴展、透明讀寫分離,具備數(shù)據(jù)庫全生命周期運維管控能力。詳細(xì)的DRDS介紹請參考DRDS概述章節(jié)。
RDS:RelaTIonal Database Service,是一種穩(wěn)定可靠、可彈性伸縮的在線數(shù)據(jù)庫服務(wù)?;诎⒗镌品植际轿募到y(tǒng)和SSD盤高性能存儲,并且提供了公共云數(shù)據(jù)庫的容災(zāi)、備份、恢復(fù)、監(jiān)控、遷移等方面的全套解決方案。詳細(xì)的RDS介紹請參考什么是RDS章節(jié)。
HDM:Hybrid Cloud Database Management,是混合云數(shù)據(jù)庫管理平臺,幫助企業(yè)打通混合云數(shù)據(jù)庫架構(gòu),提供多環(huán)境統(tǒng)一管理、快速彈性、容災(zāi)切換的能力。對于混合云災(zāi)備場景下,使用阿里云HDM可便捷、快速的將本地IDC的數(shù)據(jù)同步至云上,并進行容災(zāi)切換演練,故障發(fā)生時可通過HDM進行容災(zāi)切換,保障數(shù)據(jù)庫的可用性。詳細(xì)的HDM介紹請參考混合云數(shù)據(jù)管理章節(jié)。
DTS:Data Transmission Service,是阿里云提供的一種支持多種數(shù)據(jù)源之間數(shù)據(jù)交互的數(shù)據(jù)流服務(wù)。它提供了數(shù)據(jù)遷移、實時數(shù)據(jù)訂閱及數(shù)據(jù)實時同步等多種數(shù)據(jù)傳輸能力。在數(shù)據(jù)庫災(zāi)備解決方案中,使用阿里云DTS可實現(xiàn)各數(shù)據(jù)庫間的數(shù)據(jù)遷移與實時同步,從而為數(shù)據(jù)庫災(zāi)備打好最重要的基礎(chǔ)。DTS的數(shù)據(jù)遷移、數(shù)據(jù)同步詳細(xì)架構(gòu)設(shè)計及原理請參見產(chǎn)品架構(gòu)章節(jié)。
DMS:Data Management,支持MySQL、SQL Server、PostgreSQL、MongoDB、Redis等關(guān)系型數(shù)據(jù)庫和NoSQL的數(shù)據(jù)庫管理,同時還支持Linux服務(wù)器管理。它是一種集數(shù)據(jù)管理、結(jié)構(gòu)管理、訪問安全、BI圖表、數(shù)據(jù)趨勢、數(shù)據(jù)軌跡、性能與優(yōu)化和服務(wù)器管理于一體的數(shù)據(jù)管理服務(wù)。詳細(xì)的DMS介紹請參考數(shù)據(jù)管理章節(jié)。
CloudDBA:CloudDBA是監(jiān)控和管理RDS實例性能及運行狀況的服務(wù),在RDS控制臺的實例管理頁面,目前只適用于智匯返傭http://www.kaifx.cn/broker/thinkmarkets.html類型的實例。針對SQL語句的性能、CPU使用率、IOPS使用率、內(nèi)存使用率、磁盤空間使用率、連接數(shù)、鎖信息、熱點表等,CloudDBA提供了智能的診斷及優(yōu)化功能,能最大限度發(fā)現(xiàn)數(shù)據(jù)庫存在的或潛在的健康問題。CloudDBA的診斷基于單個實例,該診斷會提供問題詳情及相應(yīng)的解決方案,可為您管理實例運行狀況帶來極大的便利。詳細(xì)的CloudDBA的介紹請參考CloudDBA簡介章節(jié)。
五、總結(jié)
從2008年的比特幣開始,區(qū)塊鏈經(jīng)歷了可編程貨幣、可編程金融與可編程社會三大應(yīng)用時代,其應(yīng)用范圍逐步擴展到社會生活的方方面面。從需求端來看,金融、醫(yī)療、公證、通信、供應(yīng)鏈、域名、投票等領(lǐng)域都開始意識到區(qū)塊鏈的重要性并開始嘗試將技術(shù)與現(xiàn)實社會對接。
從投資端來看,區(qū)塊鏈的投資資金供給逐步上升,風(fēng)頭的投資熱情也不斷高漲,投資密度也越來越大,供給端的資金有望助推技術(shù)的進一步發(fā)展。從市場應(yīng)用來看,區(qū)塊鏈將促使公司現(xiàn)有業(yè)務(wù)模式重心的轉(zhuǎn)移,有望加速公司的發(fā)展。
從投資端來看,區(qū)塊鏈的投資資金供給逐步上升,風(fēng)頭的投資熱情也不斷高漲,投資密度也越來越大,供給端的資金有望助推技術(shù)的進一步發(fā)展。從市場應(yīng)用來看,區(qū)塊鏈將促使公司現(xiàn)有業(yè)務(wù)模式重心的轉(zhuǎn)移,有望加速公司的發(fā)展。