欧美一区2区三区4区公司二百,国产精品婷婷午夜在线观看,自拍偷拍亚洲精品,国产美女诱惑一区二区

歡迎來到云服務器

區塊鏈

一文詳解區塊鏈的存儲體系

從數據庫的角度看待區塊鏈存儲機制會簡單直觀很多。在一個標準的關系型數據庫中,存儲一般分為日志存儲、用戶數據存儲、以及索引存儲三大類(有些數據庫可能還包含大對象存儲等)。而區塊鏈項目中基本所有的“賬本”存儲其本質就是交易日志存儲。用戶數據存儲則根據項目不同而有選擇性地采用。譬如說對于UTXO結構的區塊鏈項目來說,其每個賬號對應的余額直接保存在內存哈希表中(或類似LevelDB等嵌入式KV數據庫中),因此不需要一個獨立的外接用戶數據存儲模塊。而類似Hyperledger等通用區塊鏈框架則一般包含類似State Store等存儲最終結果數據的模塊。索引存儲則在當前大部分區塊鏈項目中均不存在。

1.賬本格式

區塊鏈的鏈式結構筆者在這里不再贅述,其每個塊包含上一個塊的哈希值,而內容則使用默克爾樹進行校驗以實現快速驗證,每條記錄則使用數字簽名的方式保證其一定來自擁有私鑰的用戶。

(圖1:區塊鏈數據結構)

對比傳統數據庫的日志結構,區塊鏈結構并不復雜。一般來說,所有傳統數據庫日志結構都比較相似,每個日志文件包含日志頭與多個日志數據頁,其中日志頭代表其起始交易號(Oracle中叫做SCN,DB2中叫做LSN),也就是該日志文件中第一條日志記錄在整個日志空間中的起始字節數,以及日志文件大小,日志頁大小等元數據信息。緊接著真實的日志記錄則以二進制碼流的方式依次存放在文件中,每一條日志記錄頭包含該條記錄的交易號、事務號、同一事務中上一條記錄的交易號(反向指針),以及變更前與變更后的數據(滿足回滾要求)。

因此,從結構上來看,區塊鏈賬本與數據庫日志本質上沒有任何區別,僅僅在數據結構上為了滿足一些特定要求做了部分優化。

2. 存儲內容

通用型數據庫與當前大部分區塊鏈賬本項目(例如比特幣、以太坊等,而Hyperledger這類區塊鏈平臺則不包含在內)從日志的角度看,最大的區別在于區塊鏈賬本項目對于日志格式進行了高度定制化與業務綁定。

一般來說,傳統的數據庫日志包含的是數據頁的變更信息,我們叫做“寫前鏡像”和“寫后鏡像”,代表新的數據寫入前這條記錄長什么樣子,同時新數據寫入后這個記錄長什么樣子。通過這種方式,可以很輕易地在磁盤中的某個數據頁的指定偏移上進行數據前滾與回滾操作。

譬如說一條數據庫日志并不會記錄一個INSERT操作的具體命令,而是以“X數據頁的第Y個槽位,其所對應的偏移地址數據由ABC變化為DEF,總長度Z”的方式體現出來。因此,數據庫的日志幾乎可以記錄任何信息,這也是為什么通用數據庫可以被用來實現任何業務邏輯的原因。

而大部分的賬本項目則高度定制化其日志結構,例如以太坊的每一條交易信息都會包含輸入金額、輸出金額、燃料等信息,然后每一個節點在進行驗證時必須判斷其符合某種規則,否則不予通過。這種機制可以看做是一個完全高度定制化的數據庫業務,服務器租用,每一條日志記錄不僅僅記錄數據內容的變更,而是與業務邏輯緊密耦合,記錄每個賬戶的余額變化。

因此,從可擴展性來看,盡管以太坊等項目支持“智能合約”,但是其核心本質還是一個高度定制化的賬本系統,其業務邏輯與交易結算進行了非常緊密的綁定。

3. 設計思路

從設計哲學上看,當前的區塊鏈與數據庫在對通用業務的支持上采用了兩種不同的策略。對于傳統數據庫來說,其秉承的設計理念是“業務與數據分離”的思路,也就是說數據庫僅負責數據的存放,通過提供一種靈活的查詢語言能夠讓應用程序直接訪問數據庫進行增刪改查,但是基本所有的業務邏輯由應用程序自行定義。

但是,對于區塊鏈來說則是存儲與業務邏輯緊耦合的思路。在區塊鏈,尤其是公鏈的設計哲學中,因為每個存儲節點和應用都是不可信的,云服務器租用,因此大部分業務邏輯需要在協議層進行高度定制。一個區塊鏈節點即需要對協議層進行解析和封裝,同時也需要負責對數據本地化落盤和存儲。

因而,盡管站在高層面可以將區塊鏈看做是多活數據庫,但是如果從具體實現層面來看,每個區塊鏈節點又不能簡單地看做是一個傳統數據庫的多活替代品,而是一套包含協議解析封裝和一部分業務邏輯的應用軟件。

4. 用戶數據存儲

騰訊云代理

Copyright © 2003-2021 MFISP.COM. 國外vps服務器租用 夢飛云服務器租用 版權所有 ? 粵ICP備11019662號

主站蜘蛛池模板: 鹰潭市| 龙门县| 奇台县| 乃东县| 紫云| 榕江县| 浪卡子县| 平顺县| 思茅市| 九龙坡区| 浦东新区| 延长县| 乌兰浩特市| 阿坝| 长泰县| 瑞丽市| 黑河市| 平果县| 吴桥县| 方山县| 景洪市| 正宁县| 淮滨县| 罗甸县| 洛浦县| 临海市| 武城县| 济宁市| 鄂州市| 泰兴市| 大洼县| 渭南市| 安福县| 商丘市| 通化市| 恩施市| 健康| 平度市| 山丹县| 义乌市| 元朗区|