文章摘要: 不是用於大規模資料記錄的區塊鏈可以更多地用於驗證資訊把資訊儲存於稱為區塊的數據結構中
在談到什麼是區塊鏈及其與資料庫的區別時,我們得到的資訊是非常混亂的。區塊鏈事實上是個資料庫,因為它是一個數字分類賬,把資訊儲存於稱為區塊的數據結構中。資料庫是把資訊儲存於稱為表的數據結構中。然而,雖然區塊鏈是個資料庫,但是資料庫卻不是區塊鏈。從某種意義上說,它們不能互換,儘管兩者都儲存資訊,但在設計上是不同的。兩者的用途也有不同,對那些希望瞭解為什麼需要區塊鏈和為什麼資料庫更適合儲存某些資料的人來說,他們可能並不清楚。
首先,我們來看看資料庫和區塊鏈之間的區別。
資料庫
傳統的資料庫是用於儲存資訊的數據結構。它包括可以查詢的資料,以收集對實體用於支援業務、財務和管理決策的結構化報告的見解。政府還利用資料庫來儲存大量的資料,這些資料可以擴充套件到數百萬條記錄。資料庫以平面檔案分層系統起步,提供簡單的資訊收集和儲存功能。後來,資料庫使用關係模型,該模型允許通過把來自多個數據庫的資訊關聯起來,用更復雜的方式收集資料。這些儲存在資料庫的資訊可以利用資料庫管理系統進行組織。簡單的資料庫儲存在稱為表的資料元素中。表含有定義記錄型別的欄位,這些欄位儲存稱為屬性的資料。每個欄位包含列和行,其中列描述該欄位,行則定義儲存於資料庫中的記錄。
資料庫設計
資料庫可以進行修改,由一位被稱為管理員的使用者管理和控制。資料庫總是有一位行使資料庫管理員職責的使用者,該使用者對資料庫有完全的控制權。該使用者可以建立、刪除、修改和改變任何儲存於資料庫中的記錄。他們還可以在資料庫上行使諸如優化效能和把資料庫的規模控制在可控水平上等管理職能。大型資料庫的效能往往會下降,因此,管理員可以實施優化方法以提高效能。管理員還可以把某些職責委託給其他使用者,允許他們成為管理員或管理資料庫。例如,管理員可以把職責委託給使用者,允許他們為資料庫建立新使用者。一旦出錯,管理員和受他們委託的使用者可以從備份中恢復資料庫。在企業界,這類問題很常見。如果伺服器崩潰,唯一能恢復資料的方法是從備份中恢復資料庫。資料庫也可以遞迴,意思是您可以返回到某個特定的記錄上重複某個任務,並對其進行修改或刪除。管理員常常清除資料庫中的舊記錄,這些記錄不是已經備份到另一個數據庫,就是已經被視為是過時的資訊。比如,如果您在現有的資料庫中有一個「John Smith」的記錄,他的新住址需要更新到該記錄中。在存檔的資料庫中已經有「John Smith」之前的地址備份,因此,該記錄可以用在現有資料庫中的新地址進行更新。
採用客戶端/伺服器架構的資料庫
從小型辦公室/居家辦公室到企業環境,實現的是客戶端/伺服器架構的資料庫。這是因為計算機需要連線到託管資料庫的伺服器上,以獲取資訊或儲存資料。最初,採用ODBC連線的資料庫客戶端由管理員配置,或是由客戶端計算機上的技術人員來連線到資料庫。然後,執行客戶端軟體以建立安全連線,必須進行身份驗證以繼續訪問。該驗證可以使用由管理員配置的訪問字串或給使用者密碼以登入到資料庫。這就是為什麼要建立使用者賬號的原因,以允許那些通過驗證的使用者訪問,並拒絕沒有通過驗證的訪問請求。在如今大多數系統中,用web介面代替。但仍然要求為私有訪問進行驗證,而公共資料庫則可以更容易地從網站訪問。
我們可以看到,資料庫需要大量的控制,這使得資料庫高度集中。它也獲得許可,意味著它從管理員那裏獲取使用者賬號,管理員設定使用者如何訪問資料庫的許可權。在生產環境中,資料庫管理員只給資料庫上的公共資訊設定讀取許可權。然後,他們給使用者設定不同的許可權集,這些使用者可以更新資訊或把資訊寫入到資料庫中。傳統資料庫的集中性給系統設定了安全性和可靠性。許多資料庫都在由大公司運營的資料中心防火牆後面的私有網路中執行。其他資料庫託管在大眾可用的雲上。它們仍然需要由資料庫管理員控制。
區塊鏈
我準備根據用於比特幣的設計來描述區塊鏈。還有用於企業環境的私有區塊鏈,但是我稍後才討論它們。區塊鏈於2009年面世,比特幣成為第一個實施區塊鏈的系統。在比特幣中,區塊鏈是個不可變的數字公共分類賬,是一個不斷增長的分散式資料庫,通過加密保證安全性。區塊鏈儲存資訊於統一大小的區塊中。每個區塊包含一個來自前一個區塊的雜湊資訊以提供加密安全性。這個雜湊資訊是來自前一個區塊的資料和數字簽名,這個前一個區塊的雜湊值可以一直回溯到被稱為「創始塊」的第一個區塊。該資訊是通過雜湊函式執行,然後指向下一個區塊的地址。區塊鏈數據結構是默克爾樹的一個示例,它被用作驗證資料的有效方法。
區塊鏈設計
讓區塊加入到區塊鏈的過程中涉及了博弈理論。在網路中作為節點的計算機稱為「礦工」,必須和其他計算機進行競爭,以找到叫做「nonce(隨機數)」的雜湊函式產生的值。礦工必須利用自己的計算資源求解這個值,這需要強大的計算機硬體。構建在區塊鏈中的一個稱為難度級別的協議決定了基於網路中所謂的全部雜湊能力來求解該值的難易程度。這意味著礦工越多,難易程度的調整就越難。因為礦工越多,在網路中的可用計算能力就越多,提高了以每秒雜湊為單位計算的雜湊能力。一旦礦工驗證了一個區塊,它們將收到獎勵作為把它們的計算能力提供給網路的補償。這種激勵是節點參與挖區塊的動力,因為它們收到以交易費用和代幣的形式出現的獎勵。在比特幣的協議中,這被稱為工作量證明共識演算法。
正如您所看到的,區塊鏈使用去中心化節點的分佈式網絡。去中心化意味著網路上所有的節點都存有該區塊鏈的副本。這些節點要麼儲存該區塊鏈的完整副本,要麼實施挖礦操作,或者兩者兼有。沒有管理員來驗證交易區塊。相反,是由礦工來實施驗證,通過解決基於整個可用雜湊能力的網路難易程度協議的加密難題來進行。一旦區塊加入了區塊鏈,資訊就不可變,並對全體參與者是透明的。區塊鏈交易是非遞迴的,意味著它們在區塊中被驗證後就不能重複。區塊鏈具有很高的容錯性,因為如果有一個或多個節點宕機,總是有其它可用節點來執行該區塊鏈。去中心化的另一個優點是,它可以是無許可權和無信任的,允許在陌生人或互不信任的人之間進行交易。區塊鏈所做的是,通過記錄交易的透明性提供信任,並提供加密的安全方法來交換價值。
區塊鏈使用點對點網路架構
區塊鏈使用點對點網路架構。它不需要訪問中央資料庫,相反,網路中所有參與的節點可以相互連線。沒有「主人」來控制所有的節點。每個節點在如何訪問該區塊鏈上是互相平等的,不需要獲得管理員訪問許可權。因此,如果某個節點有惡意,會影響到網路嗎?從理論上來講,如果它們有多數的雜湊能力,就會影響到網路。在理論上,一個惡意節點可以採用所謂的「51%攻擊」來控制整個網路。這需要大量的計算資源來完成,因為發起攻擊比不攻擊網路的成本更大。在這種情況下,利用計算資源挖礦更有利潤。確保區塊鏈安全的機制是去中心化,如果一個節點試圖修改區塊鏈上的任何資訊,就需要來自其他節點驗證支援。這會建立一個不同於主網的鏈,而且只有在其比主網的鏈還要長時才能被驗證。像比特幣這樣的網路包含數千個節點,因此,如果試圖操縱資料,就需要在該網路中的所有其他節點上進行修改。實際上,這是計算密集型的,需要消耗大量的電力,是極其難以做到的。這是一種治理形式,以確保沒有人可以欺騙別人。這就是區塊鏈防篡改和不可變的原因。同時,它是透明的,因為有證據表明,每個人都可以檢視所發生的交易。
我們可以清楚地看到,正是這種設計讓區塊鏈有別於傳統的資料庫和區塊鏈。我們來做個總結吧。
資料庫和區塊鏈主要特徵的比較
現在,我們來看看它們各自的優缺點。
使用資料庫的優點
使用者友好的可定製性
傳統的集中資料庫可以通過管理員根據業務需要定製。它也可以分發到很多地方,在這些地方根據查詢和報告的需要合併到一個主資料庫中。它們提供強大的功能,允許開發人員建立應用程式以給使用者更多的一致性和使用者友好的介面。
穩定性
管理得當的資料庫系統可以處理大量的資料,每秒可以處理的事務數以千計。它們的速度也很快,因為得到授權,資料庫只對少數幾個特定伺服器授予寫操作許可權,但是資訊可以被很多使用者使用。它沒有在很多節點上執行,只需要一個功能強大的伺服器在後端處理資料,而前端主機提供介面。資料庫的執行速度可以優化,可以通過利用RAID Level 1的硬體進行,也可以通過像分片和縮小的技術來完成。如果發生災難,管理員也可以回滾更改。所有的更新和安全性是由管理這整個系統的管理員處理。
交易速度和交易量
如今的資料庫是為高容量事務處理和資料分析而設計的。這意味著它們是在企業生產環境中實驗過、測試過,對關鍵任務操作來說是正確的。
使用區塊鏈的優點
去中心化
去中心化的系統是高度容錯的。如果比特幣網路中的一個節點崩潰,它不會引起整個系統的宕機。該網路中的其他節點可以執行區塊鏈。去中心化也增加了更多的安全性,因為儲存在一臺計算機上的資訊必須複製到網路中的所有節點上。這意味著,如果一個節點遭到入侵,黑客需要能夠改變所有節點上的資訊來操縱資料。事實證明,這是防止系統被攻擊的一個很好的防護機制。
不可變性
區塊鏈儲存變得不可變的資訊,這意味著一旦區塊被驗證,就不能更改。這也使得資訊不受篡改和操縱,因為資訊被記錄在儲存於很多節點的數字公共分類賬上。要危害它,就意味著在網路的所有節點上更改該資訊。
透明度
區塊鏈給商業帶來好處的一個關鍵特徵是透明度。這讓記錄在區塊鏈上的一切都接受審查。不能隱藏關於交易的資訊,因此,這建立了更多信任,並給系統增加了價值。不需要向任何人申請許可使用區塊鏈,它是一個對公共環境中的所有人開放的平臺。
安全性
因為區塊鏈採用先進的加密技術以及分散式去中心化網路,它們提供了一個安全的環境。在區塊上修改資料需要消耗大量的計算資源。但是,它也不是理想的,因為它需要在網路的所有節點上更改資料。這是阻止攻擊的原因,因為這比挖區塊以獲得獎勵更昂貴。這個特性有助於保護區塊鏈不受惡意礦工和黑客們的危害。
資料庫的問題
單點故障
由於它是集中的,因此有單點故障。資料掌控在單一實體或群體手中,從而無法保證它用於正確的目的,例如來自社交媒體的資料最終落入壞人之手一樣。控制資訊的公司可以把它出賣給第三方使用,但是,有時候它並不符合使用者的最佳利益。當資料庫被黑時,產生了另一個問題,因為這會影響很多使用者的資訊。當資料庫伺服器宕機時,它也會影響到整個系統。如果儲存在該資料庫上的資訊沒有備份,那麼就無法恢復有價值的資料。這就是為什麼在集中系統中失效備援和冗餘是如此重要的原因。
管理員賬戶
由於資料庫需要管理員,如果密碼丟失,則恢復資料庫就會變得很困難。如果資料庫管理員沒有委託另一位管理員,讓他具有資料庫管理系統特權,那麼沒人能夠建立新的資料庫或者修改現有的資料庫。當資料庫管理員離開這家公司時,這會帶來另一個問題,重新設定密碼和提升新管理員的許可權是一個非常冗長乏味的過程。還有可能某人忘了更改密碼或刪去某些許可權或刪除能夠訪問該資料庫的前僱員的賬戶。這些是MIS部門必須要處理的事,以維護他們的資訊保安。
安全問題
在集中系統中,如果管理員忘了打補丁和更新,系統會變得容易受到黑客的安全漏洞攻擊。這使得資料庫很容易被入侵。集中化應該讓管理變得容易,但是,管理不當時, 它會引起非常嚴重的問題,影響到系統中的資料完整性。把我們的資訊託付給一個信任的公司是正常的,但是,如果該公司不遵守資訊保安上的最佳實踐,那麼它就會成一個問題。黑客攻擊已經影響了很多大公司,資料洩露正在變得越來越普遍,因為資訊現在是有價值的資產。這是為什麼要對涉及生產資料庫的資料安全進行第三方審計和嚴格監管的原因。
區塊鏈的問題
能量消耗
首先,用於執行像比特幣這樣的區塊鏈的計算資源要耗費大量的電力。這是在工作量證明演算法中處理交易所需協議的一部分。所有礦工們用掉的能源是爲了解決加密謎題來驗證區塊。隨著難易程度的提高,能量消耗量也增加了,這跟更多來自計算資源的雜湊能力有關。在挖礦的節點越多,驗證交易區塊所需的計算量就越大。這需要大量的能量消耗。據估計,整個比特幣網路消耗的電量和像海地或丹麥這樣的小國家相當。
可擴充套件性
區塊鏈在面對大量交易時的可擴充套件性不好。因為區塊大小是固定的,交易量上升時就會出現問題。延遲也影響交易速度,大多數區塊鏈每秒鐘能處理的交易不超過15個。擴充套件解決方法已經成為很多專案的焦點,要優化效能以處理更多交易並增加處理時間。如果每秒能處理1百萬個交易的宣告能在區塊鏈上得到驗證(在撰寫本文時還未被驗證),那麼會顯著地擾亂整個行業。
規模問題
大多數資料庫,包括區塊鏈在內,都有一個規模大小的問題。當它們的規模變得越來越大的時候,它們會佔用更多的儲存空間,這讓它們的執行速度變慢。比特幣的區塊鏈規模已經超過了100GB,以太坊的區塊鏈規模也超過了1TB(截至本文撰寫時)。這不僅僅是節點的儲存容量問題,網路也有同樣的問題。區塊鏈的規模越大,把資料複製到網路上的新節點所需要耗費的時間越長。根據網路的頻寬,可能需要幾個小時,甚至幾天時間。區塊鏈的規模越大,就需要更大的頻寬來傳送資料到其他節點。這會影響到新節點,或者那些重新聯機並且長時間沒有更新的節點。
昂貴的交易費用
處理交易的費用是比特幣面臨的另一個問題。當需求高企時,交易費用也上升,這對礦工有好處。對區塊鏈的設計者來說,維持較低的交易費用或取消交易費用是個挑戰。昂貴的交易費用阻礙了使用者使用網路。當擴充套件問題解決了交易速度和交易量問題的時候,應該採用更合理的交易費用。
互通性
這是目前遇到的問題,跟傳統的資料庫不同,每個區塊鏈都有自己的生態系統。有些協議旨在讓區塊鏈之間能夠互通。比如,要允許使用者從比特幣向其他區塊鏈(比如以太坊)轉移價值,就需要藉助數字交易所。開發人員在尋找讓不同的區塊鏈互通的方法,以讓轉移價值變得更簡單。
資料庫和區塊鏈的最佳用例
資料庫最適合企業網路,因為它們很穩定。對使用者來說,它們也顯得更友好,並且有很多供管理員和開發人員使用的支撐管理系統。福布斯的500強企業使用執行高階系統的資料庫處理大量的資料。資料庫可以擴充套件到數百萬個記錄,並且每秒鐘能輕鬆地處理數千個事務。對於像零售那樣需要處理高吞吐量的系統,資料庫仍然是最好的解決方案。證券市場採用資料庫更好,因為資料庫能夠快速地儲存資訊,並允許即時檢索,無需礦工驗證資料。區塊鏈不需要儲存大量在分析過程中要用到的數字資料。資料庫能夠更好地儲存這類資料,並且處理它們的速度也更快,因為它不需要多個節點來執行每一個數據。也不需要加密或雜湊存入資料庫的每一個數據。預設情況下,資料庫是不加密的,因為加密給實時資料庫增加了很多開銷。獲得許可是傳統資料庫的安全特徵。但是,可以對歸檔的資料庫進行加密。
資料庫已經證明它們儲存資訊並提供快速查詢以檢索資料用於報告和分析用途的可靠性。非結構化的資料也不需要區塊鏈,它們更適合於資料庫管理系統。資料無需信任驗證才能用,就像到商店打烊時所售出的貨物數量最好存入資料庫。用區塊鏈來儲存那些像私人簿記資訊這樣簡單的事情更昂貴,因為這用一個獨立的資料庫更有效率那些只有特定公司才需要知道的個人資訊,比如社會安全號碼和醫療記錄,最好是存在資料庫中。這些資訊可以通過依賴區塊鏈的公共驗證系統來使用。這些個人資訊可以被隱藏,但可以通過基於公鑰加密的區塊鏈來驗證。
資料庫適合:需要不斷更新的資料,像監控和感測器資料。
- 快速線上交易處理
- 機密資訊(對公眾不透明)
- 來自需要快速處理的市場的財務資訊
- 無需驗證的資料
- 儲存資料的獨立應用程式
- 關係資料
區塊鏈的要求是建立信任和透明度。它只是一個數字公共分類賬,允許大家訪問。在這種情況下,它有助於驗證來自跟供應鏈、分銷和庫存相關的B2B交易資訊。透明度有助於像廣告這樣的行業最大限度地減少欺詐,藉助構建對廣告公司和廣告支出來源的驗證來實現。不是用於大規模資料記錄的區塊鏈可以更多地用於驗證資訊。比特幣是第一個成功實施的區塊鏈,它作為一個用於轉移價值和在交易中驗證支付的系統,工作得很出色。比特幣的成功之處在於,解決了數字支付系統中的雙重支付問題,即允許使用者重複使用同一份資金。比特幣實現了一個協議,該協議使用基於時間順序的時間戳和可用的使用者資金的確認來驗證交易。這有助於通過不允許系統同時處理交易來防止雙重支付,它們將始終按照時間順序來完成。
有些專案在探索區塊鏈是否能用於許可系統,像那些用於投票站的系統。這在紙面上很有意義,因為區塊鏈能夠驗證一個人的身份,也可以驗證一個人進行的投票。目的是防止作弊,因此,區塊鏈旨在無信任和無授權的系統中,以及在一個受信任的和許可的系統中,實現公平。在後一種情況下,有些區塊鏈不需要代幣或挖礦,就像在企業區塊鏈中一樣。這些是新型別的系統,在私人和許可的環境下使用區塊鏈技術,並且,有時候和資料庫整合在一起形成混合系統。
資料庫管理員要注意的是,區塊鏈是非關係型的。您不能建立不同區塊鏈的連線並關聯資料。這是資料庫和區塊鏈之間的主要區別,因此,當需要關係型資料時,不適合使用區塊鏈。
其他區塊鏈實現了一種類似於乙太網上所謂的「智慧合約」。非常類似於在資料庫中使用儲存過程,其中激發器可以用於執行程式碼來處理交易。在乙太網中,智慧合約作為位元組程式碼在網路中的所有節點上執行。乙太網和其他加密貨幣(像EOS和NEO),使用區塊鏈作為其智慧合約生態系統的平臺。這是區塊鏈的使用和傳統資料庫不同的另一個例子。
區塊鏈適用於:
- 貨幣交易
- 轉移價值
- 可信資料(身份、聲譽、信用、完整性等)的驗證
- 公鑰驗證
- 去中心化應用程式(DApps)
- 投票系統
關於資料庫和區塊鏈,還有很多東西可以討論,但是我們沒有,因為話題太廣了。我在這裏介紹的只是一些從技術角度看到的事實和觀察。最後,並不是資料庫比區塊鏈更好或者區塊鏈比資料庫更好的問題。它們各有各的用途,如何使用它們取決於您想對您的資料進行什麼操作。
閱讀英文原文: A blockchain is a database, but a database is not a blockchain
感謝杜小芳對本文的策劃和審校。
http://www.buzzfunnews.com/20180827673.html
每日頭條即時更新,請上:http://www.buzzfunnews.com
沒有留言:
張貼留言