- 區(qū)塊鏈社會(huì):區(qū)塊鏈助力國家治理能力現(xiàn)代化
- 王煥然等
- 1489字
- 2021-03-23 16:36:33
5.5 數(shù)據(jù)存儲(chǔ)的探索方向
數(shù)據(jù)信息上鏈意味著:第一,數(shù)據(jù)在區(qū)塊鏈上的每個(gè)節(jié)點(diǎn)都要進(jìn)行存儲(chǔ);第二,數(shù)據(jù)僅可讀寫,不可改刪,因此數(shù)據(jù)被永久存儲(chǔ)。因此,區(qū)塊鏈數(shù)據(jù)存儲(chǔ)的成本巨大,任何構(gòu)建在鏈上的現(xiàn)實(shí)應(yīng)用都需要優(yōu)化存儲(chǔ)解決方案。“分片”是目前區(qū)塊鏈數(shù)據(jù)存儲(chǔ)的主要探索方向。
1.分片的種類
分片是一種水平分區(qū),是一種廣泛使用的數(shù)據(jù)庫設(shè)計(jì)原則,將大型數(shù)據(jù)庫中的數(shù)據(jù)劃分成很多數(shù)據(jù)分片(Shard),再將這些數(shù)據(jù)分片分別存放在不同的服務(wù)器中,以減小每個(gè)服務(wù)器的數(shù)據(jù)訪問壓力,從而提高整個(gè)數(shù)據(jù)庫系統(tǒng)的性能。區(qū)塊鏈引入分片技術(shù),是為了解決可擴(kuò)展性和交易確認(rèn)延遲問題。
區(qū)塊鏈分片按技術(shù)劃分為網(wǎng)絡(luò)分片(Network Sharding)、交易分片(Transaction Sharding)、狀態(tài)分片(State Sharding)三種。
網(wǎng)絡(luò)分片:將整個(gè)區(qū)塊鏈網(wǎng)絡(luò)劃分成多個(gè)子網(wǎng)絡(luò),也就是多個(gè)分片。網(wǎng)絡(luò)中的所有分片并行處理網(wǎng)絡(luò)中不同的交易。在區(qū)塊鏈中實(shí)現(xiàn)分片,網(wǎng)絡(luò)被分成不同的團(tuán)隊(duì)(分片)。分片可以并行處理事務(wù)。每個(gè)節(jié)點(diǎn)只擁有區(qū)塊鏈上的部分?jǐn)?shù)據(jù),而不是全部信息。因此,可以同時(shí)處理更多的事務(wù)。例如,想象一個(gè)有1000個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò),可以將網(wǎng)絡(luò)分成10個(gè)分片,每個(gè)分片由100個(gè)節(jié)點(diǎn)組成,速度可以提升10倍。
交易分片:由于網(wǎng)絡(luò)分片是其他所有分片的基礎(chǔ),因此交易分片的前提是先進(jìn)行網(wǎng)絡(luò)分片。交易分片主要涉及的問題是哪些交易應(yīng)該按照特定的屬性被分配到哪些分片當(dāng)中。
狀態(tài)分片:狀態(tài)分片的關(guān)鍵是將整個(gè)存儲(chǔ)區(qū)分開,讓不同的分片存儲(chǔ)不同的部分,每個(gè)節(jié)點(diǎn)只負(fù)責(zé)托管自己的分片數(shù)據(jù),而不是存儲(chǔ)完整的區(qū)塊鏈狀態(tài)。狀態(tài)分片可以減少狀態(tài)的冗余存儲(chǔ),使得整個(gè)區(qū)塊鏈網(wǎng)絡(luò)具有存儲(chǔ)的可擴(kuò)展性。
2.分片面臨的挑戰(zhàn)
在私有區(qū)塊鏈部署中,分片可能是有效策略,但在公共區(qū)塊鏈網(wǎng)絡(luò)使用區(qū)塊鏈分片并不容易。最大的挑戰(zhàn)之一是分片間的通信。當(dāng)節(jié)點(diǎn)分配給分片時(shí),與該節(jié)點(diǎn)相關(guān)的用戶和應(yīng)用程序會(huì)將分片視為獨(dú)立的區(qū)塊鏈系統(tǒng),而不是大型系統(tǒng)的一部分。分片之間的通信可能難以建立,并且需要特定的開發(fā)工作來部署通信機(jī)制。即使有這種機(jī)制,分片間通信也會(huì)導(dǎo)致更大的開銷,這會(huì)讓分片的優(yōu)勢大打折扣。
分片也可能破壞更傳統(tǒng)的區(qū)塊鏈接帶來的制衡。通過分片,用戶不再下載和驗(yàn)證整個(gè)交易歷史記錄,因此他們無法確定數(shù)據(jù)的可靠性和不變性,這通常是根據(jù)交易塊的鏈?zhǔn)叫蛄衼泶_定。如果沒有這些安全機(jī)制,黑客就可以更容易地操縱或控制分片,這種情況被稱為單一分片攻擊,可能導(dǎo)致數(shù)據(jù)丟失或受損。
區(qū)塊鏈分片的另一個(gè)挑戰(zhàn)是共識(shí)和驗(yàn)證。不同的區(qū)塊鏈方法依賴于不同的算法來跨節(jié)點(diǎn)達(dá)成共識(shí)。兩種常見的算法是POW和POS。這兩者都可確定如何在分布式網(wǎng)絡(luò)中驗(yàn)證交易,但它們是以不同方式完成驗(yàn)證。一般來說,POS被認(rèn)為比POW更適合分片。
對于如何部署分片,尚未標(biāo)準(zhǔn)化。可以通過不同的方法來進(jìn)行分片,并且很多方法仍然在研究、開發(fā)或測試中。每種分片方法都有其優(yōu)點(diǎn)和缺點(diǎn),這使得難以確定行業(yè)標(biāo)準(zhǔn)。
3.分片的未來
對于公共區(qū)塊鏈部署,可擴(kuò)展性仍然是重大挑戰(zhàn),而分片正在成為解決此問題的主要方法之一。必須謹(jǐn)慎應(yīng)用分片技術(shù),以確保它不會(huì)對區(qū)塊鏈過程產(chǎn)生負(fù)面影響或使數(shù)據(jù)置于風(fēng)險(xiǎn)之中。事實(shí)證明,區(qū)塊鏈分片必須與其他技術(shù)結(jié)合使用,以提供必要的可擴(kuò)展性,例如支持分片通信的新協(xié)議。在此之前,公共區(qū)塊鏈存儲(chǔ)可能仍然保持目前的整體性,直到隨著它變得越來越大,性能逐漸下降。
4.現(xiàn)有數(shù)據(jù)存儲(chǔ)與分片的案例
Swarm[2]是以太坊采用的點(diǎn)對點(diǎn)文件共享協(xié)議,允許用戶將數(shù)據(jù)存在鏈下的Swarm節(jié)點(diǎn),并在主鏈上交換數(shù)據(jù)。Storj是一種數(shù)據(jù)分片解決方案,將數(shù)據(jù)分片、加密、分散到多個(gè)節(jié)點(diǎn),使用SCJX幣支付激勵(lì)節(jié)點(diǎn)的存儲(chǔ)操作。IPFS[3]是一種P2P超媒體協(xié)議,是以內(nèi)容尋址超鏈接為基礎(chǔ)的、提供高吞吐量和內(nèi)容尋址的塊存儲(chǔ)模型。
- 一步一步學(xué)Spring Boot 2:微服務(wù)項(xiàng)目實(shí)戰(zhàn)
- C語言程序設(shè)計(jì)實(shí)踐教程(第2版)
- Hands-On Machine Learning with scikit:learn and Scientific Python Toolkits
- Java 開發(fā)從入門到精通(第2版)
- Building a RESTful Web Service with Spring
- Machine Learning with R Cookbook(Second Edition)
- R語言游戲數(shù)據(jù)分析與挖掘
- 軟件測試綜合技術(shù)
- 移動(dòng)增值應(yīng)用開發(fā)技術(shù)導(dǎo)論
- Solutions Architect's Handbook
- Python 3 數(shù)據(jù)分析與機(jī)器學(xué)習(xí)實(shí)戰(zhàn)
- Unity Character Animation with Mecanim
- Mastering Docker
- Java7程序設(shè)計(jì)入門經(jīng)典
- 算法設(shè)計(jì)與分析:基于C++編程語言的描述