什么是區(qū)塊鏈和數(shù)據(jù)庫(kù)?它們之間有什么技術(shù)區(qū)別?
關(guān)于數(shù)據(jù)庫(kù)和區(qū)塊鏈,總會(huì)有很多的困惑。區(qū)塊鏈其實(shí)是一種數(shù)據(jù)庫(kù),因?yàn)樗菙?shù)字賬本,并且在區(qū)塊的數(shù)據(jù)結(jié)構(gòu)上存儲(chǔ)信息。數(shù)據(jù)庫(kù)中存儲(chǔ)信息的結(jié)構(gòu)被稱為表格。但是,區(qū)塊鏈?zhǔn)菙?shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)可不是區(qū)塊鏈。他們雖然都是存儲(chǔ)信息的,但是設(shè)計(jì)卻完全不同,所以不可以互換。而且,這兩者存在的目標(biāo)也不同,所以對(duì)于很多人來(lái)說(shuō),他們不是很清楚為什么區(qū)塊鏈?zhǔn)切枰?,以及為什么?shù)據(jù)庫(kù)更適合存儲(chǔ)某些數(shù)據(jù)。首先,我們來(lái)看看數(shù)據(jù)庫(kù)和區(qū)塊鏈之間的區(qū)別。
數(shù)據(jù)庫(kù)傳統(tǒng)數(shù)據(jù)庫(kù)是用來(lái)存儲(chǔ)信息的數(shù)據(jù)結(jié)構(gòu)。這包含能夠用來(lái)制作支持各類商業(yè),金融和管理決定的報(bào)告,所需要的數(shù)據(jù)。政府也會(huì)使用數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)大型數(shù)據(jù),可以會(huì)有幾百萬(wàn)個(gè)記錄。數(shù)據(jù)庫(kù)從文件分級(jí)系統(tǒng)開始,提供了最基本的信息獲取和存儲(chǔ)功能。然后,數(shù)據(jù)庫(kù)使用相關(guān)的模型,通過(guò)將多個(gè)數(shù)據(jù)庫(kù)進(jìn)行相關(guān),可以有更多復(fù)雜的方式來(lái)獲得數(shù)據(jù)。存儲(chǔ)在數(shù)據(jù)庫(kù)中的信息可以使用管理系統(tǒng)來(lái)進(jìn)行管理。簡(jiǎn)單的數(shù)據(jù)庫(kù)被存儲(chǔ)在數(shù)據(jù)行列中,被稱為表格。表格中包含不同領(lǐng)域,用來(lái)定義不同記錄的種類,存儲(chǔ)數(shù)據(jù)被稱為屬性。每個(gè)領(lǐng)域包含列和航,代表存儲(chǔ)的記錄。
數(shù)據(jù)庫(kù)是被管理員可以修改,管理和控制的。數(shù)據(jù)庫(kù)總是會(huì)有管理員,并且可以完全控制數(shù)據(jù)庫(kù)。他們可以創(chuàng)建,刪除,修改數(shù)據(jù)庫(kù)中的任何記錄。他們能優(yōu)化數(shù)據(jù)庫(kù)的性能和大小。越大的數(shù)據(jù)庫(kù)就會(huì)有更慢的性能,所以管理員可以使用方法來(lái)優(yōu)化。管理員也可以把這個(gè)身份轉(zhuǎn)給別人。例如,管理員可以把身份轉(zhuǎn)給另外的用戶,讓他們來(lái)進(jìn)行數(shù)據(jù)庫(kù)備份。但是,問(wèn)題也會(huì)有,例如服務(wù)器跨了,唯一的方法就是從備份恢復(fù)。數(shù)據(jù)庫(kù)也是遞歸的,也就是說(shuō)你可以回去重復(fù)某個(gè)任務(wù),或者說(shuō)刪除任務(wù)。如果信息已經(jīng)備份,那么管理員就會(huì)刪除之前的記錄和其他過(guò)期信息。比如你在現(xiàn)在數(shù)據(jù)庫(kù)寫入了“John Smith”,現(xiàn)在需要更新住址。但是現(xiàn)在已經(jīng)有“John Smith”的備份了,所以你可以通過(guò)現(xiàn)有數(shù)據(jù)庫(kù)的新地址進(jìn)行更新。
數(shù)據(jù)庫(kù)可以通過(guò)服務(wù)器架構(gòu)來(lái)實(shí)現(xiàn)。這是因?yàn)橛?jì)算機(jī)需要連接服務(wù)器,它們管理數(shù)據(jù)庫(kù),從而可以獲得信息和存儲(chǔ)的數(shù)據(jù)。最初地時(shí)候,數(shù)據(jù)庫(kù)客戶端使用ODBC連接,這是由管理員設(shè)定的,然后連接到數(shù)據(jù)庫(kù)。這個(gè)客戶端軟件然后就會(huì)運(yùn)行,來(lái)完成加密連接,但是必須要有權(quán)限才能進(jìn)入。這個(gè)權(quán)限能夠被管理員設(shè)置,或者用戶通過(guò)密碼也可以進(jìn)入。這就是為什么用戶賬號(hào)會(huì)被創(chuàng)造,可以讓認(rèn)證的用戶進(jìn)入,同時(shí)拒絕那些沒有認(rèn)證的?,F(xiàn)在大多數(shù)系統(tǒng),都會(huì)使用網(wǎng)頁(yè)接口。但是對(duì)于私人信息,還是需要認(rèn)證,但是公開數(shù)據(jù)庫(kù)就可以很容易地通過(guò)網(wǎng)頁(yè)進(jìn)入。
我們可以看出,數(shù)據(jù)庫(kù)需要足夠的控制,這會(huì)讓它高度中心化。同時(shí),這也是需要允許的,也就是說(shuō)需要管理員來(lái)設(shè)定如何讓用戶進(jìn)入。在生產(chǎn)環(huán)境下,DB管理員需要設(shè)定只讀權(quán)限,他們也需要給用戶設(shè)定更新和寫入的權(quán)限。傳統(tǒng)數(shù)據(jù)庫(kù)的中心化會(huì)保證系統(tǒng)的安全和信任。很多數(shù)據(jù)庫(kù)都會(huì)在私人網(wǎng)絡(luò)下運(yùn)行,同時(shí)背后是大公司的防火墻。其他也有數(shù)據(jù)庫(kù)是基于云服務(wù)器。但是他們?nèi)匀皇切枰芾韱T來(lái)控制他們。
區(qū)塊鏈對(duì)于區(qū)塊鏈的描述,我們會(huì)想到比特幣。但是也有很多在企業(yè)環(huán)境下運(yùn)行的私有鏈。區(qū)塊鏈在2009年誕生,比特幣是基于它的第一個(gè)系統(tǒng)。在比特幣系統(tǒng)中,區(qū)塊鏈?zhǔn)遣豢筛牡臄?shù)字賬本,并且也是逐漸增長(zhǎng)的加密分布式數(shù)據(jù)庫(kù)。區(qū)塊鏈會(huì)在同等大小的區(qū)塊中存儲(chǔ)信息。每個(gè)區(qū)塊都會(huì)包含前個(gè)區(qū)塊的哈希信息,從而提供加密安全性。這個(gè)哈希的信息就是前個(gè)區(qū)塊中的數(shù)據(jù)和簽名,并且前個(gè)區(qū)塊的哈希會(huì)回到區(qū)塊鏈的首個(gè)區(qū)塊,被稱為“創(chuàng)世區(qū)塊”。整個(gè)信息就會(huì)通過(guò)哈希通過(guò),并且指向下個(gè)區(qū)塊的地址。區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu),例如默克爾樹,是很有效地?cái)?shù)據(jù)驗(yàn)證方式。
為了讓區(qū)塊能夠加入到區(qū)塊鏈上,整個(gè)過(guò)程中包含了博弈論。網(wǎng)絡(luò)中作為節(jié)點(diǎn)的計(jì)算機(jī)被稱為“礦工”,必須要競(jìng)爭(zhēng)來(lái)從nonce中找出正確的數(shù)值。礦工必須要用計(jì)算資源來(lái)解決這個(gè)數(shù)值,而且這也需要計(jì)算機(jī)硬件。區(qū)塊鏈內(nèi)置的協(xié)議,可以通過(guò)全網(wǎng)算力來(lái)得出解決難題的難易程度。這意味著如果有越多的礦工,解決問(wèn)題的難度也就越高。這是因?yàn)槿绻懈嗟V工,網(wǎng)絡(luò)上就會(huì)有更多的計(jì)算資源,同時(shí)提高了哈希力,也就是h/s。一旦礦工驗(yàn)證了區(qū)塊,他們會(huì)因?yàn)樘峁┧懔Χ@得獎(jiǎng)勵(lì)。這部分激勵(lì)就是推動(dòng)節(jié)點(diǎn)來(lái)挖礦的動(dòng)力,因?yàn)樗麄儠?huì)獲得交易費(fèi)用和代幣。在比特幣中,這也被稱為工作量證明算法。
就像我們看到的,區(qū)塊鏈?zhǔn)褂萌ブ行幕姆植际骄W(wǎng)絡(luò)。去中心化意味著網(wǎng)絡(luò)所有的節(jié)點(diǎn)都會(huì)存儲(chǔ)區(qū)塊鏈的備份。節(jié)點(diǎn)存儲(chǔ)全節(jié)點(diǎn)的備份,或者是挖礦,或者他們兩者都可以做到。沒有任何的管理員來(lái)驗(yàn)證區(qū)塊轉(zhuǎn)賬。你需要能夠解決加密問(wèn)題的礦工,但是這是基于全網(wǎng)算力的比例。一旦區(qū)塊被加入到鏈上,那么這些信息就是不可改變以及透明的。區(qū)塊鏈轉(zhuǎn)賬是不可以逆轉(zhuǎn)的,這也意味著一旦驗(yàn)證了區(qū)塊,他們就不能重復(fù)使用。區(qū)塊鏈?zhǔn)强梢匀蒎e(cuò)的,因?yàn)槿绻粋€(gè)或者多個(gè)節(jié)點(diǎn)宕機(jī),總是會(huì)有其他節(jié)點(diǎn)在運(yùn)行區(qū)塊鏈。去中心化的另個(gè)優(yōu)勢(shì),就可以讓那些不認(rèn)識(shí)或者不信任的人獲得透明性。區(qū)塊鏈會(huì)通過(guò)記錄轉(zhuǎn)賬來(lái)提高信任,并且提供加密安全算法來(lái)交易數(shù)據(jù)。
區(qū)塊鏈?zhǔn)荘2P的網(wǎng)絡(luò)架構(gòu)。它并不需要中心化的數(shù)據(jù)庫(kù),而是網(wǎng)絡(luò)所有的節(jié)點(diǎn)都會(huì)互相連接起來(lái)。所以,沒人可以控制所有的節(jié)點(diǎn)。區(qū)塊鏈上無(wú)需管理員。如果節(jié)點(diǎn)中有人欺詐呢?這會(huì)影響整個(gè)網(wǎng)絡(luò)嗎?理論上的答案是如果他們獲得大多數(shù)算力,那么就是可能的。理論上,如果有人可以控制51%的算力,就可以控制網(wǎng)絡(luò)。這需要非常多的計(jì)算資源,所以產(chǎn)生攻擊是非常昂貴的。使用計(jì)算資源挖礦是有利可圖的。能夠保證區(qū)塊鏈安全的本質(zhì)就是去中心化,如果有人想修改區(qū)塊鏈上的任何信息,就需要其他人的幫助來(lái)驗(yàn)證。這就會(huì)從主鏈中分割出新的鏈,并且只有比主鏈長(zhǎng)才會(huì)有效。類似比特幣有幾千個(gè)節(jié)點(diǎn),所以如果需要進(jìn)行欺詐,就需要改變網(wǎng)絡(luò)中的所有節(jié)點(diǎn)。實(shí)際上,這是需要大量計(jì)算和電力的,也非常困難完成。這是一種監(jiān)管的方式,為了保證沒人可以欺騙任何人。這就是為何區(qū)塊鏈?zhǔn)遣豢筛牡?。同時(shí),由于轉(zhuǎn)賬信息任何人都能看到,因此這也是透明的。
這就是區(qū)塊鏈和數(shù)據(jù)庫(kù),在底層架構(gòu)上的區(qū)別。
區(qū)塊鏈和數(shù)據(jù)庫(kù),何時(shí)應(yīng)該用哪個(gè)?
數(shù)據(jù)庫(kù)由于很好的穩(wěn)定性,對(duì)于企業(yè)網(wǎng)絡(luò)來(lái)說(shuō),是比較適合的。他們對(duì)于用戶來(lái)說(shuō),也更加友好,并且對(duì)于管理員和開發(fā)人員,也有很多支持性的管理系統(tǒng)。福布斯前500的企業(yè)都會(huì)使用數(shù)據(jù)庫(kù)來(lái)運(yùn)行高端系統(tǒng),從而處理大量的數(shù)據(jù)。數(shù)據(jù)庫(kù)可以擴(kuò)容到幾百萬(wàn)記錄,而且可以每秒處理幾千個(gè)轉(zhuǎn)賬。對(duì)于處理大量流量,例如零售,數(shù)據(jù)庫(kù)是最好的解決方案。區(qū)塊鏈不需要存儲(chǔ)大量的處理來(lái)進(jìn)行分析,數(shù)據(jù)庫(kù)可以存儲(chǔ)更多的數(shù)據(jù),并且由于不需要節(jié)點(diǎn),處理速度也更快。你也不需要對(duì)于每個(gè)數(shù)據(jù)進(jìn)行加密。通常,數(shù)據(jù)庫(kù)是不加密的,因?yàn)榧用軙?huì)讓數(shù)據(jù)庫(kù)增加很多冗余。傳統(tǒng)數(shù)據(jù)庫(kù)會(huì)通過(guò)授權(quán)來(lái)提高加密性。
非結(jié)構(gòu)性數(shù)據(jù)是不需要區(qū)塊鏈的另個(gè)地方,這些更適合數(shù)據(jù)庫(kù)管理系統(tǒng)。數(shù)據(jù)不需要信任驗(yàn)證,就好像商店每天的數(shù)據(jù)都會(huì)記錄在數(shù)據(jù)庫(kù)中。如果使用區(qū)塊鏈,來(lái)存儲(chǔ)私密信息,就會(huì)成本很高。只有某些公司才能知道的信息,例如社交安全和病歷都是存儲(chǔ)在數(shù)據(jù)庫(kù)中。能夠通過(guò)公開驗(yàn)證系統(tǒng)使用的信息,都可以基于區(qū)塊鏈。這些個(gè)人信息能夠基于公鑰加密算法,來(lái)在區(qū)塊鏈上認(rèn)證。
數(shù)據(jù)庫(kù)適合用于:
? 需要不停更新的數(shù)據(jù),例如監(jiān)控和傳感器
? 快速在線轉(zhuǎn)賬過(guò)程
? 私密信息(不能對(duì)公眾開放的)
? 需要快速處理的金融數(shù)據(jù)
? 不需要驗(yàn)證的數(shù)據(jù)
? 存儲(chǔ)數(shù)據(jù)的應(yīng)用
? 關(guān)系數(shù)據(jù)
區(qū)塊鏈的需求是建立信任和透明。簡(jiǎn)單來(lái)說(shuō),它就是可以讓任何人獲得信息的公開賬本。它可以幫助B2B轉(zhuǎn)賬,例如供應(yīng)鏈,貨品分布以及庫(kù)存去驗(yàn)證信息。透明性可以幫助企業(yè)例如廣告業(yè),通過(guò)建立廣告公司的更多驗(yàn)證,從而最小化欺詐行為。區(qū)塊鏈,不是說(shuō)大型數(shù)據(jù)記錄就會(huì)有更多的信息驗(yàn)證。比特幣是區(qū)塊鏈?zhǔn)讉€(gè)成功部署,而且它也是作為價(jià)值轉(zhuǎn)移和支付轉(zhuǎn)賬驗(yàn)證的系統(tǒng)。比特幣的成功也提出了雙花問(wèn)題,可以讓用戶針對(duì)同個(gè)代幣花銷兩次。比特幣使用了能夠使用時(shí)間戳順序的來(lái)對(duì)轉(zhuǎn)賬進(jìn)行驗(yàn)證。這就同個(gè)讓系統(tǒng)同時(shí)處理轉(zhuǎn)賬,從而防止雙花,這會(huì)是按照時(shí)間順序來(lái)完成的。
有些項(xiàng)目正在研究區(qū)塊鏈的許可性系統(tǒng),將他們應(yīng)用到投票系統(tǒng)中。由于區(qū)塊鏈可以驗(yàn)證身份以及誰(shuí)來(lái)投票,其實(shí)就會(huì)很有意義。主要的目標(biāo)是防止欺詐,所以區(qū)塊鏈可以保證信任的公平,一些區(qū)塊鏈不需要數(shù)字貨幣或者挖礦,例如企業(yè)級(jí)別的區(qū)塊鏈。在私有和可許可環(huán)境中,使用區(qū)塊鏈科技可以有新級(jí)別的系統(tǒng),有時(shí)候也會(huì)和數(shù)據(jù)庫(kù)整合,完成混合系統(tǒng)。
數(shù)據(jù)庫(kù)管理員會(huì)發(fā)現(xiàn),區(qū)塊鏈?zhǔn)遣幌嚓P(guān)的。你不能在不同的區(qū)塊鏈和相關(guān)數(shù)據(jù)創(chuàng)建聯(lián)系。這就是這兩者重大的不同,所以當(dāng)信息需要相關(guān)性的時(shí)候,區(qū)塊鏈就不適用于這些。
其他區(qū)塊鏈的應(yīng)用,例如以太坊上的智能合約。這些更像是數(shù)據(jù)庫(kù)的存儲(chǔ)流程,其中觸發(fā)器可以用來(lái)執(zhí)行代碼來(lái)處理轉(zhuǎn)賬。在以太坊網(wǎng)絡(luò)中,智能合約會(huì)在網(wǎng)絡(luò)中的所有節(jié)點(diǎn)運(yùn)行代碼。以太坊和其他數(shù)字貨幣,例如EOS和NEO會(huì)使用區(qū)塊鏈作為他們的智能合約生態(tài)。這是區(qū)塊鏈和傳統(tǒng)數(shù)據(jù)庫(kù)區(qū)分的案例。
區(qū)塊鏈適合用于:
? 資金轉(zhuǎn)賬
? 價(jià)值轉(zhuǎn)移
? 可信數(shù)據(jù)的驗(yàn)證(身份,信譽(yù),信用等等)
? 公鑰驗(yàn)證
? 去中心化APP
? 投票系統(tǒng)
關(guān)于區(qū)塊鏈和數(shù)據(jù)庫(kù),還有很多可以討論。我們只是從技術(shù)角度,來(lái)發(fā)現(xiàn)其中的一些情況。其實(shí)數(shù)據(jù)庫(kù)和區(qū)塊鏈,并沒有誰(shuí)比誰(shuí)好。他們都有自己的目標(biāo),以及根據(jù)你想要處理數(shù)據(jù)的方法,來(lái)選擇不同的方案。