面向區塊鏈的高效物化視圖維護和可信查詢論文學習

物化視圖介紹

  • 如何維護物化視圖仍舊是一個開放問題.在關系數據庫中,增量刷新的物化視圖維護策略可劃分為立即維護和延遲維護兩大類.
  • 立即維護策略的優點是實現較為簡單,在單數據源下不 存在一致性問題;然而該策略將物化視圖維護過程嵌入到更新事務之中,延長了更新事務的提交時間,這在高并發的情況下易發生死鎖.
  • 延遲維護策略解耦合視圖維護和更新事務,OLTP 場景下,可以通過合并無關更新的方法縮短視圖維護時間;但是此策略存在一致性問題,若視圖未更新完畢則不可使用.在延遲維護策略的諸多實現方法中,按需維護較為常見,:等待查詢到來之后,只維護與查詢相關的物化視圖.

將物化視圖應用到區塊鏈的可行性分析

  • 在關系語義的區塊數據,采用關系數據庫,普遍使用物化視圖的方式來提升查詢的性能。在區塊鏈中,系統需要查詢某張表的時候需要掃描所有的數據塊,當數據量龐大的時候,即使采用掃描索引也會造成巨大的查詢開銷,因此將物化視圖應用到區塊鏈上,可以優化查詢的處理效率。

問題與挑戰

  • 因為區塊鏈和關系數據庫系統的存儲模型和更新系統不一樣,比如,區塊鏈以區塊為單位進行更新,單個區塊包含多條交易,并且內部的交易需要通過共識來完成。因此,在區塊鏈條建立、維護物化視圖將面臨以下的挑戰
  • (1)如何選擇物化視圖的寫入時機.區塊鏈的寫入性能受到分布式共識、智能合約執行限制,而物化視圖的維護開銷對系統的性能帶來額外影響.因此,如何合理選擇視圖維護的時機來降低視圖維護對系統 整體性能的影響,是一個需要考慮的問題
  • (2)如何以區塊為單位維護視圖.區塊是區塊鏈的基本數據追加單位,各區塊包含多種類型的交易,對于 一個區塊可能需要同時維護多個視圖.因此,設計的方案必須支持批量的物化視圖維護,并且使得物 化視圖維護的開銷盡可能小
  • (3)如何確保查詢結果的可信性.由于數據上鏈需要經過較為昂貴的共識過程,為了提升查詢效率,物化視圖并不保存在區塊鏈上.與此同時,將物化視圖保存在本地會面臨數據被篡改的風險,需要實施相應措施來確保查詢結果可信

本文的成果

  • 首次將物化視圖運用于區塊鏈,提出了一種視圖維護和共識過程并行的方法,降低物化視圖的維護開銷.
  • 區塊鏈的共識過程主要消耗網絡帶寬,在此期間,CPU 和 I/O 資源消耗相對較少,而視圖維護過程卻主要消耗 CPU I/O 資源.因此,將視圖維護和共識過程并行執行可減少視圖維護對寫入性能的影響.
  • 提出了基于字典樹的方法,以區塊為單位批量維護視圖,并且支持多種維護策略.本文使用字典樹作為索引加快查找不同表名的更新記錄,可對相同表名的更新記錄只進行一次視圖維護操作.并且本文支持閑時維護和按需維護的維護策略.
  • 提出了基于默克爾樹的查詢結果驗證方法,確保結果可信.為物化視圖構造默克 爾樹.當查詢使用物化視圖時,系統掃描物化視圖建立默克爾樹,并與預先保存的默克爾樹根進行比較,以此確保物化視圖的正確性與完整性

系統架構

  • 本文原型系統架構如圖所示,包括應用層、查詢層、存儲層、共識層和網絡層:應用層包括查詢 API、訪問控制和智能合約;查詢層具有查詢引擎,負責對查詢的解析、優化、執行,包括物化視圖的維護;存儲層包括區塊鏈和鏈下數據(物化視圖、索引等);共識層負責交易的共識,運用的協議為 PBFT[8];最后,網絡層采用 Gossip協議.本文專注于查詢層、存儲層和共識層:物化視圖的更新記錄來自于共識返回的結果,查詢層負責物化視圖的維護工作,并將更新后的物化視圖存于存儲層.此外,查詢的結果來源于存儲層的區塊數據或物化視圖.

  • 在此架構下,面向添加了關系語義的聯盟鏈,我們首次提出一種高效的物化視圖維護方法以提高查詢的效率,并且提出一種驗證方法來確保查詢結果的正確性.當系統應用層接收到客戶端發來的智能合約調用請求時,查詢層處理請求,然后調用智能合約產生一條新的交易,交易通過共識后被打包進區塊保存在區塊鏈中.另一方面,查詢層獲取共識成功的交易進行視圖維護,視圖維護完畢后,將更新后的物化視圖存于存儲層的磁盤中.而當系統接收到客戶端的查詢請求時,查詢層判斷該請求是否可以運用物化視圖:若可以,則獲取物化視圖數據返回給應用層;若不能使用物化視圖,則需掃描區塊鏈查找結果.接下來我們將回答 3 個問題:何時進行物化視圖的維護、如何進行物化視圖的維護以及如何保證物化視圖結果的正確性

?


?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/447021.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447021.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447021.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java基礎知識(一)

一、接口 類描述了一個實體,包括實體的狀態,也包括實體可能發出的動作。 接口定義了一個實體可能發出的動作。但是只是定義了這些動作的原型,沒有實現,也沒有任何狀態信息。 所以接口有點象一個規范、一個協議,是一個…

密碼學數字信封的介紹

對稱密碼和非對稱密碼 對稱密碼:加解密運算非常快,適合處理大批量數據,但其密碼的分發與管理比較復雜非對稱密碼:公鑰和私鑰分離,非常適合密鑰的分發和管理 數字信封的定義 如果將對稱密碼算法和非對稱密碼算法的優點…

Android設計模式之——狀態模式

一、介紹 狀態模式中的行為是由狀態來決定的,不同的狀態下有不同的行為。狀態模式和策略模式的結構幾乎完全一樣,但它們的目的、本質卻完全不一樣。狀態模式的行為是平行的、不可替換的,策略模式的行為是彼此獨立、可相互替換的。用一句話來…

Android設計模式之——責任鏈模式

一、介紹 責任鏈模式(Iterator Pattern),是行為型設計模式之一。什么是”鏈“?我們將多個節點首尾相連所構成的模型稱為鏈,比如生活中常見的鎖鏈,就是由一個個圓角長方形的鐵環串起來的結構。對于鏈式結構…

目前基于區塊鏈的檔案防篡改系統的設計如何實現防篡改

架構設計圖 分析 為了保障檔案數據的安全性和隱私性,存儲檔案附件和檔案屬性存儲加密存儲在私有IPFS集群,檔案的IPFS地址和數字指紋存儲在私有區塊鏈上。公有區塊鏈定期存儲和檢查私有區塊鏈最新不可逆區塊的高度和哈希值,以保障私有區塊鏈上…

IPFS的文件存儲模式

IPFS是如何進行文件存儲的 IPFS采用的索引結構是DHT(分布式哈希表),數據結構是MerkleDAG(Merkle有向無環圖) DHT(分布式哈希表) 參考鏈接MerkleDAG(Merkle有向無環圖) 參考鏈接MerkleDAG功能…

Android設計模式之——解釋器模式

一、介紹 解釋器模式(Interpreter Pattern)是一種用的比較少的行為型模式,其提供了一種解釋語言的語法或表達式的方式,該模式定義了一個表達式接口,通過該接口解釋一個特定的上下文。在這么多的設計模式中&#xff0c…

在Docker里面安裝Ubuntu,并且使用ssh進行連接

創建Ubuntu鏡像 1,拉取Ubuntu系統的鏡像 docker pull ubuntu2、查看拉取是否成功 docker images3,運行容器 docker run --name 新建的容器的名字 -ti -v /AAA:/BBB -d -p 3316:22 ubuntu(這個是鏡像的名字)宿主機根目錄中的AAA文件夾就映射到了容器…

Android設計模式之——命令模式

一、介紹 命令模式(Command Pattern),是行為型設計模式之一。命令模式相對于其他的設計模式來說并沒有那么多的條條框框,其實它不是一個很”規范“的模式,不過,就是基于這一點,命令模式相對于其…

C++ 序列化和反序列化學習

定義 程序員在編寫應用程序的時候往往需要將程序的某些數據存儲在內存中,然后將其寫入某個文件或是將它傳輸到網絡中的另一臺計算機上以實現通訊。這些過程將會涉及到程序數據轉化成能被存儲并傳輸的格式,因此被稱為“序列化”(Serializatio…

Android設計模式之——觀察者模式

一、介紹 觀察者模式是一個使用率非常高的模式,它最常用的地方是GUI系統、訂閱——發布系統。因為這個模式的一個重要作用就是解耦,將被觀察者和觀察者解耦,使得它們之間的依賴性更小,甚至做到毫無依賴。以GUI系統來說&#xff0…

Android設計模式之——備忘錄模式

一、介紹 備忘錄模式是一種行為模式,該模式用于保存對象當前狀態,并且在之后可以再次恢復到此狀態,這有點像我們平時說的”后悔藥“。備忘錄模式實現的方式需要保證被保存的對象狀態不能被對象從外部訪問,目的是為了保護好被保存…

c++ memory 頭文件詳細介紹

類 指針特征 pointer_traits (C11) 提供關于指針式類型的信息 (類模板) 垃圾收集器支持 pointer_safety (C11) 列出指針安全模式 (枚舉) 分配器 allocator 默認的分配器 (類模板) allocator_traits (C11) 提供關于分配器類型的信息 (類模板) allocator_arg_t (C11) 標簽類型…

C++ using的三種使用策略以及具體的用法

Using的使用方法 1,命名空間的使用 為了防止代碼沖突,都會使用到命名空間。假設這樣一種情況,當一個班上有兩個名叫 Zara 的學生時,為了明確區分他們,我們在使用名字之外,不得不使用一些額外的信息&#…

Android設計模式之——迭代器模式

一、介紹 迭代器模式(Iterator Pattern)又稱為游標(Cursor)模式,是行為型設計模式之一。迭代器模式算是一個比較古老的設計模式,其源于對容器的訪問,比如Java中的List、Map、數組等&#xff0c…

Android設計模式之——模板方法模式

一、介紹 在面向對象開發過程中,通常會遇到這樣的一個問題,我們知道一個算法所需的關鍵步驟,并確定了這些步驟的執行順序,但是,某些步驟的具體實現是未知的,或者說某些步驟的實現是會隨著環境的變化而改變…

Android設計模式之——訪問者模式

一、介紹 訪問者模式是一種將數據操作與數據結構分離的設計模式,它是《設計模式》中23種設計模式中最復雜的一個,但它的使用頻率并不高,正如《設計模式》的作者GOF對訪問者模式的描述:大多數情況下,你不需要使用訪問者…

C++類模板template <class T>簡單使用方法

一個簡單的例子 兩個數比大小 如果兩個數都是int類型 class Compare_int { public :Compare(int a,int b){xa;yb;}int max( ){return (x>y)?x:y;}int min( ){return (x<y)?x:y;} private :int x,y; }; 如果兩個數是float類型 class Compare_float { public :Compare(…

Android設計模式之——中介者模式

一、介紹 中介者模式&#xff08;Mediator Pattern&#xff09;也稱為調解者模式或調停者模式&#xff0c;Mediator本身就有調停者和調解者的意思。 在日常生活中調停者或調解者這個角色我們見得比較多的是“和事老”&#xff0c;也就是說調解兩個有爭端的人的角色&#xff0…

C++智能指針中unique_ptr部分內容的講解

參考鏈接 std::unique_ptr 介紹 定義位于頭文件<memory>std::unique_ptr 是通過指針占有并管理另一對象&#xff0c;并在 unique_ptr 離開作用域時釋放該對象的智能指針。 在下列兩者之一發生時用關聯的刪除器釋放對象&#xff1a;1&#xff0c;銷毀了管理的 unique_pt…