原文地址:http://tech.ifeng.com/a/20180…
區塊鏈(blockchain)這一概念正因比特幣等虛擬貨幣的興盛而變得火熱起來,實際上,這種技術因為特殊的設計思路也可以應用於很多其他領域中。作為一種容錯率很高的分散式資料儲存模式,區塊鏈與傳統資料庫有哪些不同之處?想要回答這個問題,我們需要看看它們的執行機制。
傳統資料庫
傳統資料庫使用客戶端-伺服器網路架構。在這種結構中,使用者(或稱為客戶端)可以修改儲存在中央伺服器中的資料。資料庫的控制權保留在獲得指定授權的機構處,他們會在使用者試圖接入資料庫前對其身份進行驗證。由於授權機構對於資料庫的管理負責,如果授權機構的安全性受到損害,則資料面臨被修改、甚至被刪除的風險。
傳統資料庫
區塊鏈資料庫
區塊鏈資料庫由數個分散的節點組成。每一個節點都會參與資料管理:所有節點都會驗證新加入區塊鏈的內容,並將新資料寫入資料庫。對於加入區塊鏈的新內容,大多數節點必須達成一致才能成功寫入。這種共識機制保證了網路安全,讓篡改內容變得非常困難。
區塊鏈最引人關注的例項就是比特幣(Bitcoin)了,在比特幣中,共識通過「挖礦」達成(使用計算機計算複雜 hashing 問題的解);而在另一個著名的案例以太坊中,共識機制是由股權證明(POS)來完成的。
完整性與透明度
區塊鏈技術區別於傳統資料庫技術的一大特點就是其具備公開可驗證性,這是通過完整性與透明度來實現的。
完整性:每名使用者都可以得到這樣的保證——他們所檢索的資料自被記錄的那一刻起不會遭到損壞或改寫。
透明度:每名使用者都可以獲知並驗證區塊鏈內容是如何隨著時間推移而變化的。
CRUD vs 讀取 & 寫入操作
傳統資料庫中,客戶可以對資料執行四種操作:建立、讀取、更新和刪除(通稱為 CRUD 命令)。
而區塊鏈只能增加。使用者只能以附加塊的形式新增資料,所有先前的資料被永久儲存,無法更改。因此,區塊鏈僅能執行以下操作:
讀取:用區塊鏈查詢和獲取資料;
寫入:向區塊鏈新增更多資料。
驗證和寫入
區塊鏈具備這兩個功能:交易驗證和新交易寫入。交易是一種改變區塊鏈上資料狀態的操作。區塊鏈上之前的 entries 永遠保持不變,而新的 entry 可以改變之前 entries 中資料的狀態。例如,如果區塊鏈記錄我的比特幣錢包中有一百萬比特幣,該數字永久儲存在區塊鏈中。當我花費 20 萬比特幣時,該交易也被記錄在區塊鏈上,我的餘額為 80 萬比特幣。但是,由於區塊鏈只能不斷加長,因此這次交易之前的餘額 100 萬比特幣仍然永久儲存在區塊鏈上。這就是為什麼區塊鏈通常指不可更改的分散式賬本。
總之,區別在於去中心化控制
去中心化控制消除了中心化控制的風險。任何能夠充分訪問中心化資料庫的人都可以摧毀或破壞其中的資料,因此使用者依賴於資料庫管理員的安全基礎架構。
區塊鏈技術使用去中心化資料儲存來避開這一問題,從而在自己的結構中建立安全性。
區塊鏈技術很適合記錄某些種類的資訊,傳統資料庫更適合記錄另外一些種類的資訊。對於每個組織而言,理解它想從資料庫中獲得什麼非常關鍵,我們需要在選擇資料庫之前,判斷每種資料庫的優缺點。