ProvenDB:利用資料庫中的區塊鏈功能

買賣虛擬貨幣
對於傳統資料庫,區塊鏈支援完全不同的範例。在計算曆史中,我們第一次擁有了一個資料儲存,在這個資料儲存中,我們可以絕對確定資料項的建立日期,並且可以絕對肯定該項沒有被修改。我們如何將區塊鏈的強大功能整合到資料庫中?
資料庫已經存在了很長時間,儘管已經發生了一些重大變革——例如關聯式資料庫的出現和隨後的NoSQL反革命——但是從開發人員的角度來看,資料庫操作幾乎沒有什麼變化。通常,應用程式建立一個資料記錄,然後讀取它,可能更新它並最終將其刪除。這個建立-讀取-更新-刪除週期被稱為方便的縮寫“CRUD”。CRUD說明了資料庫儲存的短暫性——資料被建立、修改和刪除。更新會銷燬舊版本的資料,一旦刪除,資料庫記錄將永遠消失(除非我們完全恢復資料庫的舊版本)。此外,我們已經非常習慣於這樣一個事實:資料庫對交易的完整性提供了有限的保證。有特權的開發人員幾乎總是可以覆蓋資料記錄,甚至可以將時間戳設定為他們選擇的任何記錄。在資料庫技術中沒有內在的方法來保證資料元素沒有被複蓋。區塊鏈資料儲存
區塊鏈支援完全不同的範例。在最初的比特幣區塊鏈中,防止重複使用比特幣的必要性是至關重要的,絕對有必要永遠儲存每筆交易的記錄。因此,區塊鏈提供了一個僅限追加的不可變分類賬,一個相對簡單的資料庫,其中可以新增資料元素,但不能刪除或修改。比特幣的工作證明演算法和連續的區塊鏈之間的加密連結使得篡改成為不可能。因此,在計算曆史上,我們第一次有了一個資料儲存,我們可以絕對肯定一個資料項的建立日期,並且可以絕對地肯定該項沒有被修改。這是一場真正的革命!不幸的是,我們不能把區塊鏈作為通用的資料儲存區來使用。與傳統的資料庫相比,它簡單、太慢、昂貴且笨拙。例如,比特幣區塊鏈每十分鐘就會產生一個新的區塊,每秒只能處理27個交易,如果將其用作傳統的資料儲存,每千兆位元組將耗費數百萬美元。如何整合區塊鏈功能如果我們確實想將區塊鏈功能整合到現有的資料庫應用程式中,我們有兩條路可走:
1.構建新的資料庫技術,整合區塊鏈的概念,但仍然可以提供經濟效能。2.在資料庫和現有的區塊鏈之間建立整合層。一些早期的嘗試是建立在區塊鏈基礎上的新資料庫系統。不幸的是,它們不是“兩全之優”,而是冒著“兩全之劣”的風險:與現有資料庫相比,它們更難以使用,功能也更差,而且沒有以太坊和比特幣等公共區塊鏈提供的強大完整性保證。目前,我們只能透過整合層獲得兩個世界的最佳解決方案。幸運的是,有一些技術模式允許我們維護資料庫記錄的不可變副本,並將它們錨定到區塊鏈上。記錄結構的Merge樹和Merkle樹
首先,我們可以將資料構造為日誌結構的Merge 樹(LSM)。在日誌結構化Merge 樹中,所有資料(包括刪除和更新)都作為插入樹中的插入處理。刪除插入一條“tombstone”記錄,該記錄指出資料項已被刪除。更新會原封不動地保留舊記錄,只需插入一個新版本。我們可以使用的第二個資料結構是Merkle樹。Merkle樹是一個雜湊樹,連續的雜湊對本身進行雜湊運算,直到獲得單個根雜湊。這個雜湊可以用來驗證數千個任意大小的資料元素的完整性。如果我們將這個根雜湊儲存在區塊鏈上,那麼這個根雜湊就可以用來證明單個區塊鏈交易中任意數量的資料庫元素的完整性。因此,如果我們將資料庫模式實現為日誌結構化Merge樹,則可以使用Merkle樹將資料庫狀態錨定到區塊鏈。這樣我們就擁有區塊鏈不變性的所有優點,以及我們選擇的任何資料庫的強大功能。如果這聽起來工作量很大,那你就對的。但是,不要絕望。在ProvenDB中,我們已經將這個整合層構建到MongoDB中。使用ProvenDB,您可以照常使用MongoDB,但是在幕後,我們維護了LSM結構,並允許您訪問區塊鏈的完整性和時間戳證明。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;