關(guān)于數據庫和區塊鏈,總會(huì )有很多的困惑。區塊鏈其實(shí)是一種數據庫,因為他是數字賬本,并且在區塊的數據結構上存儲信息。數據庫中存儲信息的結構被稱(chēng)為表格。但是,區塊鏈是數據庫,數據庫可不是區塊鏈。他們雖然都是存儲信息的,但是設計卻完全不同,所以不可以互換。而且,這兩者存在的目標也不同,所以對于很多人來(lái)說(shuō),他們不是很清楚為什么區塊鏈是需要的,以及為什么數據庫更適合存儲某些數據。首先,我們來(lái)看看數據庫和區塊鏈之間的區別。
數據庫
傳統數據庫是用來(lái)存儲信息的數據結構。這包含能夠用來(lái)制作支持各類(lèi)商業(yè),金融和管理決定的報告,所需要的數據。政府也會(huì )使用數據庫來(lái)存儲大型數據,可以會(huì )有幾百萬(wàn)個(gè)記錄。數據庫從文件分級系統開(kāi)始,提供了最基本的信息獲取和存儲功能。然后,數據庫使用相關(guān)的模型,通過(guò)將多個(gè)數據庫進(jìn)行相關(guān),可以有更多復雜的方式來(lái)獲得數據。存儲在數據庫中的信息可以使用管理系統來(lái)進(jìn)行管理。簡(jiǎn)單的數據庫被存儲在數據行列中,被稱(chēng)為表格。表格中包含不同領(lǐng)域,用來(lái)定義不同記錄的種類(lèi),存儲數據被稱(chēng)為屬性。每個(gè)領(lǐng)域包含列和航,代表存儲的記錄。

數據庫是被管理員可以修改,管理和控制的。數據庫總是會(huì )有管理員,并且可以完全控制數據庫。他們可以創(chuàng )建,刪除,修改數據庫中的任何記錄。他們能優(yōu)化數據庫的性能和大小。越大的數據庫就會(huì )有更慢的性能,所以管理員可以使用方法來(lái)優(yōu)化。管理員也可以把這個(gè)身份轉給別人。例如,管理員可以把身份轉給另外的用戶(hù),讓他們來(lái)進(jìn)行數據庫備份。但是,問(wèn)題也會(huì )有,例如服務(wù)器跨了,唯一的方法就是從備份恢復。數據庫也是遞歸的,也就是說(shuō)你可以回去重復某個(gè)任務(wù),或者說(shuō)刪除任務(wù)。如果信息已經(jīng)備份,那么管理員就會(huì )刪除之前的記錄和其他過(guò)期信息。比如你在現在數據庫寫(xiě)入了“John Smith”,現在需要更新住址。但是現在已經(jīng)有“John Smith”的備份了,所以你可以通過(guò)現有數據庫的新地址進(jìn)行更新。

數據庫可以通過(guò)服務(wù)器架構來(lái)實(shí)現。這是因為計算機需要連接服務(wù)器,它們管理數據庫,從而可以獲得信息和存儲的數據。最初地時(shí)候,數據庫客戶(hù)端使用ODBC連接,這是由管理員設定的,然后連接到數據庫。這個(gè)客戶(hù)端軟件然后就會(huì )運行,來(lái)完成加密連接,但是必須要有權限才能進(jìn)入。這個(gè)權限能夠被管理員設置,或者用戶(hù)通過(guò)密碼也可以進(jìn)入。這就是為什么用戶(hù)賬號會(huì )被創(chuàng )造,可以讓認證的用戶(hù)進(jìn)入,同時(shí)拒絕那些沒(méi)有認證的。現在大多數系統,都會(huì )使用網(wǎng)頁(yè)接口。但是對于私人信息,還是需要認證,但是公開(kāi)數據庫就可以很容易地通過(guò)網(wǎng)頁(yè)進(jìn)入。
我們可以看出,數據庫需要足夠的控制,這會(huì )讓它高度中心化。同時(shí),這也是需要允許的,也就是說(shuō)需要管理員來(lái)設定如何讓用戶(hù)進(jìn)入。在生產(chǎn)環(huán)境下,DB管理員需要設定只讀權限,他們也需要給用戶(hù)設定更新和寫(xiě)入的權限。傳統數據庫的中心化會(huì )保證系統的安全和信任。很多數據庫都會(huì )在私人網(wǎng)絡(luò )下運行,同時(shí)背后是大公司的防火墻。其他也有數據庫是基于云服務(wù)器。但是他們仍然是需要管理員來(lái)控制他們。
區塊鏈
對于區塊鏈的描述,我們會(huì )想到比特幣。但是也有很多在企業(yè)環(huán)境下運行的私有鏈。區塊鏈在2009年誕生,比特幣是基于它的第一個(gè)系統。在比特幣系統中,區塊鏈是不可更改的數字賬本,并且也是逐漸增長(cháng)的加密分布式數據庫。區塊鏈會(huì )在同等大小的區塊中存儲信息。每個(gè)區塊都會(huì )包含前個(gè)區塊的哈希信息,從而提供加密安全性。這個(gè)哈希的信息就是前個(gè)區塊中的數據和簽名,并且前個(gè)區塊的哈希會(huì )回到區塊鏈的首個(gè)區塊,被稱(chēng)為“創(chuàng )世區塊”。整個(gè)信息就會(huì )通過(guò)哈希通過(guò),并且指向下個(gè)區塊的地址。區塊鏈數據結構,例如默克爾樹(shù),是很有效地數據驗證方式。

為了讓區塊能夠加入到區塊鏈上,整個(gè)過(guò)程中包含了博弈論。網(wǎng)絡(luò )中作為節點(diǎn)的計算機被稱(chēng)為“礦工”,必須要競爭來(lái)從nonce中找出正確的數值。礦工必須要用計算資源來(lái)解決這個(gè)數值,而且這也需要計算機硬件。區塊鏈內置的協(xié)議,可以通過(guò)全網(wǎng)算力來(lái)得出解決難題的難易程度。這意味著(zhù)如果有越多的礦工,解決問(wèn)題的難度也就越高。這是因為如果有更多礦工,網(wǎng)絡(luò )上就會(huì )有更多的計算資源,同時(shí)提高了哈希力,也就是h/s。一旦礦工驗證了區塊,他們會(huì )因為提供算力而獲得獎勵。這部分激勵就是推動(dòng)節點(diǎn)來(lái)挖礦的動(dòng)力,因為他們會(huì )獲得交易費用和代幣。在比特幣中,這也被稱(chēng)為工作量證明算法。
就像我們看到的,區塊鏈使用去中心化的分布式網(wǎng)絡(luò )。去中心化意味著(zhù)網(wǎng)絡(luò )所有的節點(diǎn)都會(huì )存儲區塊鏈的備份。節點(diǎn)存儲全節點(diǎn)的備份,或者是挖礦,或者他們兩者都可以做到。沒(méi)有任何的管理員來(lái)驗證區塊轉賬。你需要能夠解決加密問(wèn)題的礦工,但是這是基于全網(wǎng)算力的比例。一旦區塊被加入到鏈上,那么這些信息就是不可改變以及透明的。區塊鏈轉賬是不可以逆轉的,這也意味著(zhù)一旦驗證了區塊,他們就不能重復使用。區塊鏈是可以容錯的,因為如果一個(gè)或者多個(gè)節點(diǎn)宕機,總是會(huì )有其他節點(diǎn)在運行區塊鏈。去中心化的另個(gè)優(yōu)勢,就可以讓那些不認識或者不信任的人獲得透明性。區塊鏈會(huì )通過(guò)記錄轉賬來(lái)提高信任,并且提供加密安全算法來(lái)交易數據。

區塊鏈是P2P的網(wǎng)絡(luò )架構。它并不需要中心化的數據庫,而是網(wǎng)絡(luò )所有的節點(diǎn)都會(huì )互相連接起來(lái)。所以,沒(méi)人可以控制所有的節點(diǎn)。區塊鏈上無(wú)需管理員。如果節點(diǎn)中有人欺詐呢?這會(huì )影響整個(gè)網(wǎng)絡(luò )嗎?理論上的答案是如果他們獲得大多數算力,那么就是可能的。理論上,如果有人可以控制51%的算力,就可以控制網(wǎng)絡(luò )。這需要非常多的計算資源,所以產(chǎn)生攻擊是非常昂貴的。使用計算資源挖礦是有利可圖的。能夠保證區塊鏈安全的本質(zhì)就是去中心化,如果有人想修改區塊鏈上的任何信息,就需要其他人的幫助來(lái)驗證。這就會(huì )從主鏈中分割出新的鏈,并且只有比主鏈長(cháng)才會(huì )有效。類(lèi)似比特幣有幾千個(gè)節點(diǎn),所以如果需要進(jìn)行欺詐,就需要改變網(wǎng)絡(luò )中的所有節點(diǎn)。實(shí)際上,這是需要大量計算和電力的,也非常困難完成。這是一種監管的方式,為了保證沒(méi)人可以欺騙任何人。這就是為何區塊鏈是不可更改的。同時(shí),由于轉賬信息任何人都能看到,因此這也是透明的。
這就是區塊鏈和數據庫,在底層架構上的區別。

區塊鏈和數據庫,何時(shí)應該用哪個(gè)?
數據庫由于很好的穩定性,對于企業(yè)網(wǎng)絡(luò )來(lái)說(shuō),是比較適合的。他們對于用戶(hù)來(lái)說(shuō),也更加友好,并且對于管理員和開(kāi)發(fā)人員,也有很多支持性的管理系統。福布斯前500的企業(yè)都會(huì )使用數據庫來(lái)運行高端系統,從而處理大量的數據。數據庫可以擴容到幾百萬(wàn)記錄,而且可以每秒處理幾千個(gè)轉賬。對于處理大量流量,例如零售,數據庫是最好的解決方案。區塊鏈不需要存儲大量的處理來(lái)進(jìn)行分析,數據庫可以存儲更多的數據,并且由于不需要節點(diǎn),處理速度也更快。你也不需要對于每個(gè)數據進(jìn)行加密。通常,數據庫是不加密的,因為加密會(huì )讓數據庫增加很多冗余。傳統數據庫會(huì )通過(guò)授權來(lái)提高加密性。
非結構性數據是不需要區塊鏈的另個(gè)地方,這些更適合數據庫管理系統。數據不需要信任驗證,就好像商店每天的數據都會(huì )記錄在數據庫中。如果使用區塊鏈,來(lái)存儲私密信息,就會(huì )成本很高。只有某些公司才能知道的信息,例如社交安全和病歷都是存儲在數據庫中。能夠通過(guò)公開(kāi)驗證系統使用的信息,都可以基于區塊鏈。這些個(gè)人信息能夠基于公鑰加密算法,來(lái)在區塊鏈上認證。
數據庫適合用于:
- 需要不更新的數據,例如監控和傳感器
- 快速在線(xiàn)轉賬過(guò)程
- 私密信息(不能對公眾開(kāi)放的)
- 需要快速處理的金融數據
- 不需要驗證的數據
- 存儲數據的應用
關(guān)系數據
區塊鏈的需求是建立信任和透明。簡(jiǎn)單來(lái)說(shuō),它就是可以讓任何人獲得信息的公開(kāi)賬本。它可以幫助B2B轉賬,例如供應鏈,貨品分布以及庫存去驗證信息。透明性可以幫助企業(yè)例如廣告業(yè),通過(guò)建立廣告公司的更多驗證,從而最小化欺詐行為。區塊鏈,不是說(shuō)大型數據記錄就會(huì )有更多的信息驗證。比特幣是區塊鏈首個(gè)成功部署,而且它也是作為價(jià)值轉移和支付轉賬驗證的系統。比特幣的成功也提出了雙花問(wèn)題,可以讓用戶(hù)針對同個(gè)代幣花銷(xiāo)兩次。比特幣使用了能夠使用時(shí)間戳順序的來(lái)對轉賬進(jìn)行驗證。這就同個(gè)讓系統同時(shí)處理轉賬,從而防止雙花,這會(huì )是按照時(shí)間順序來(lái)完成的。
有些項目正在研究區塊鏈的許可性系統,將他們應用到投票系統中。由于區塊鏈可以驗證身份以及誰(shuí)來(lái)投票,其實(shí)就會(huì )很有意義。主要的目標是防止欺詐,所以區塊鏈可以保證信任的公平,一些區塊鏈不需要數字貨幣或者挖礦,例如企業(yè)級別的區塊鏈。在私有和可許可環(huán)境中,使用區塊鏈科技可以有新級別的系統,有時(shí)候也會(huì )和數據庫整合,完成混合系統。
數據庫管理員會(huì )發(fā)現,區塊鏈是不相關(guān)的。你不能在不同的區塊鏈和相關(guān)數據創(chuàng )建聯(lián)系。這就是這兩者重大的不同,所以當信息需要相關(guān)性的時(shí)候,區塊鏈就不適用于這些。
其他區塊鏈的應用,例如以太坊上的智能合約。這些更像是數據庫的存儲流程,其中觸發(fā)器可以用來(lái)執行代碼來(lái)處理轉賬。在以太坊網(wǎng)絡(luò )中,智能合約會(huì )在網(wǎng)絡(luò )中的所有節點(diǎn)運行代碼。以太坊和其他數字貨幣,例如EOS和NEO會(huì )使用區塊鏈作為他們的智能合約生態(tài)。這是區塊鏈和傳統數據庫區分的案例。
區塊鏈適合用于:
- 資金轉賬
- 價(jià)值轉移
- 可信數據的驗證(身份,信譽(yù),信用等等)
- 公鑰驗證
- 去中心化APP
- 投票系統
關(guān)于區塊鏈和數據庫,還有很多可以討論。我們只是從技術(shù)角度,來(lái)發(fā)現其中的一些情況。其實(shí)數據庫和區塊鏈,并沒(méi)有誰(shuí)比誰(shuí)好。他們都有自己的目標,以及根據你想要處理數據的方法,來(lái)選擇不同的方案。