[發明專利]一種基于區塊鏈的分布式數據庫存儲方法及系統在審
| 申請號: | 202011458013.5 | 申請日: | 2020-12-10 |
| 公開(公告)號: | CN112597241A | 公開(公告)日: | 2021-04-02 |
| 發明(設計)人: | 吳超;胡一帆;周宇航;李皓 | 申請(專利權)人: | 浙江大學 |
| 主分類號: | G06F16/27 | 分類號: | G06F16/27;G06F16/23;G06F9/54 |
| 代理公司: | 杭州求是專利事務所有限公司 33200 | 代理人: | 鄭海峰 |
| 地址: | 310058 浙江*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 區塊 分布式 數據庫 存儲 方法 系統 | ||
1.一種基于區塊鏈的分布式數據庫存儲方法,所述的區塊鏈包括區塊鏈節點,每個區塊鏈節點均與一個數據庫節點連接,其特征在于,所述的分布式數據庫存儲方法包括:
步驟1:用戶通過HTTP或RPC發出指令操作請求;
步驟2:判斷指令操作請求的類型:
若指令操作請求為讀指令,直接從本地區塊鏈節點讀取數據返回結果;
若指令操作請求為寫指令,啟動共識操作,在共識操作期間,各區塊鏈節點會對指令合法性進行校驗;共識通過之后,各區塊鏈節點在本地數據庫上執行寫指令,更新本地數據,將執行結果返回用戶客戶端,并將寫指令和返回結果存入區塊鏈節點中,作為指令執行日志,用于節點宕機之后恢復數據和新節點同步數據。
2.根據權利要求1所述的基于區塊鏈的分布式數據庫存儲方法,其特征在于,所述的本地數據庫包括主存儲數據庫和輔助存儲數據庫,所述的主存儲數據庫用于存儲用戶數據,所述的輔助存儲數據庫用于存儲驗證節點信息和指令執行日志,所述的驗證節點信息以鍵值對PublicKey,Power的形式進行存儲。
3.根據權利要求2所述的基于區塊鏈的分布式數據庫存儲方法,其特征在于,所述的主存儲數據庫采用Redis,輔助存儲數據庫采用Badger。
4.根據權利要求1或2所述的基于區塊鏈的分布式數據庫存儲方法,其特征在于,在所述的步驟1之后還包括驗證指令操作請求對應的數據類型的步驟,所述的數據類型分為私有類型和公共類型;所述私有類型的數據只有創建節點擁有對該數據的讀寫權限,而其余節點僅對該數據擁有讀權限;
若所述指令操作請求對應私有類型的數據,則在步驟2中對所述合法性進行校驗之后,還需要判斷私有數據是否屬于發送指令操作請求的節點,若屬于,則調用Redis客戶端來執行具體的操作指令,如不屬于,則不執行;
若所述指令操作請求對應公共類型的數據,則直接調用Redis客戶端來執行具體的操作指令。
5.根據權利要求1所述的基于區塊鏈的分布式數據庫存儲方法,其特征在于,所述的各區塊鏈節點在本地數據庫上執行寫指令時,有三種可選的寫入模式,分別是:
Commit寫模式:對應的是公共類型數據的寫入,先共識后寫數據庫;
Async寫模式:對應的是公共類型數據的寫入,先共識后寫數據庫;
Private寫模式:對應的是私有類型的數據的寫入,先寫數據庫后共識。
6.根據權利要求1所述的基于區塊鏈的分布式數據庫存儲方法,其特征在于,在所述的共識操作中,對上一輪共識中被認定為拜占庭節點的投票權進行動態調整。
7.一種基于權利要求1-6任一權利要求所述存儲方法的區塊鏈的分布式數據庫系統,所述的區塊鏈包括區塊鏈節點,每個區塊鏈節點均與一個數據庫節點連接;其特征在于,每個數據庫節點包括:
Tendermint模塊,其屬于區塊鏈中的一個區塊鏈節點,用于提供區塊鏈服務;
本地數據庫模塊,其用于存儲本地信息,由主存儲數據庫和輔助存儲數據庫構成;
數據庫服務模塊,其用于提供數據庫存儲服務,包括控制層、服務層以及存儲層;所述的控制層用于實現用戶客戶端與本地數據庫模塊之間的交互,所述交互的方式包括RPC服務和HTTP服務;所述的存儲層用于實現業務數據的存儲,將業務數據存儲至本地數據庫模塊中;所述的服務層承接控制層與存儲層,用于數據庫讀寫、權限控制、區塊鏈信息訪問、用戶插件。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于浙江大學,未經浙江大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011458013.5/1.html,轉載請聲明來源鉆瓜專利網。





