TW202111564A - 日誌結構儲存系統 - Google Patents

日誌結構儲存系統 Download PDF

Info

Publication number
TW202111564A
TW202111564A TW109123213A TW109123213A TW202111564A TW 202111564 A TW202111564 A TW 202111564A TW 109123213 A TW109123213 A TW 109123213A TW 109123213 A TW109123213 A TW 109123213A TW 202111564 A TW202111564 A TW 202111564A
Authority
TW
Taiwan
Prior art keywords
data
index
storage
log file
blockchain
Prior art date
Application number
TW109123213A
Other languages
English (en)
Other versions
TWI733514B (zh
Inventor
田世坤
Original Assignee
開曼群島商創新先進技術有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 開曼群島商創新先進技術有限公司 filed Critical 開曼群島商創新先進技術有限公司
Publication of TW202111564A publication Critical patent/TW202111564A/zh
Application granted granted Critical
Publication of TWI733514B publication Critical patent/TWI733514B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors

Abstract

本文揭示了用於資料處理和儲存的方法、系統和裝置,包括編碼在電腦儲存設備上的電腦程式。系統之一包括:包括多層儲存設備層的多層儲存子系統;輸入/輸出(I/O)子系統,其被配置為執行將區塊鏈資料寫入資料日誌檔的操作;以及後端資料管理子系統,其被配置為對儲存在多層儲存設備中的一層儲存設備內的資料日誌檔執行管理操作。

Description

日誌結構儲存系統
本文有關日誌結構儲存系統。
分散式帳本系統(DLS),也可稱為共識網路和/或區塊鏈網路,使得參與的實體能夠安全且不可篡改地儲存資料。在不引用任何特定用例的情況下,DLS通常被稱為區塊鏈網路。區塊鏈網路類型的示例可以包括公共區塊鏈網路、私有區塊鏈網路和聯盟區塊鏈網路。為選定的實體群組提供聯盟區塊鏈網路,所述實體控制共識處理,並且所述聯盟區塊鏈網路包括存取控制層。
通常,DLS的每個節點(例如,區塊鏈網路節點)儲存或具有區塊鏈網路資料的完整備份,使得每個節點可以是獨立的,並且每個節點處的本地資料可以被信任以提供服務。然而,這種儲存方案提出了苛刻的儲存要求,並增加了每個節點的儲存成本,尤其是隨著DLS達到規模。因此,期望用於提高效率並降低儲存系統成本的解決方案。
本文描述了用於將資料儲存在例如分散式帳本系統(例如,區塊鏈網路)和/或基於區塊鏈的中心化帳本系統(例如,通用可審計帳本服務系統)中的日誌結構儲存系統的技術,所述分散式帳本系統和/或基於區塊鏈的中心化帳本系統採用區塊鏈的資料結構以利用儲存在區塊鏈上的資料的不可變性、可靠性以及可信性。
本文還提供了耦接到一個或多個處理器並且其上儲存有指令的一個或多個非暫態電腦可讀儲存媒體,當所述指令由所述一個或多個處理器執行時,所述指令將促使所述一個或多個處理器按照本文提供的方法的實施例執行操作。
本文還提供了用於實施本文提供的所述方法的系統。日誌結構儲存系統包括一個或多個處理器以及耦接到所述一個或多個處理器並且其上儲存有指令的電腦可讀儲存媒體,當所述指令由所述一個或多個處理器執行時,所述指令將促使所述一個或多個處理器按照本文提供的方法的實施例執行操作。
應瞭解,依據本文的方法可以包括本文描述的方面和特徵的任意組合。也就是說,根據本文的方法不限於本文具體描述的方面和特徵的組合,還包括所提供的方面和特徵的任意組合。
以下在圖式和描述中闡述了本文的一個或多個實施方式的細節。根據說明書和圖式以及申請專利範圍,本文的其他特徵和優點將顯現。
本文描述了用於將資料儲存在例如分散式帳本系統(例如,區塊鏈網路)和/或基於區塊鏈的中心化帳本系統(例如,通用可審計帳本服務系統)中的日誌結構儲存系統的技術,所述分散式帳本系統和/或基於區塊鏈的中心化帳本系統採用區塊鏈的資料結構以利用儲存在區塊鏈上的資料的不可變性、可靠性以及可信性。在一些實施例中,分散式帳本系統和基於區塊鏈的中心化帳本系統可以統稱為基於區塊鏈的帳本系統。
在一些實施例中,基於區塊鏈的中心化帳本系統可以是基於中心化的帳本系統,其可以提供具有時間關鍵性審計(具有不可否認性和防篡改性)的、密碼學可驗證的與狀態無關的資料帳本儲存。在一些實施例中,基於區塊鏈的中心化帳本系統可以基於雲平台提供帳本服務,該雲平台的特徵在於具有可信度和中立性的中心化背書。基於區塊鏈的中心化帳本系統可以提供高可靠性和高性能的可審計流水帳本服務,其組合了區塊鏈系統的高可信度以及中心化系統的高性能和低延遲,以處理具有審計要求、可追溯性和跟蹤的各種資料和日誌。
本文中描述的技術產生若干技術效果。在一些實施例中,所描述的技術可以被應用在各種應用和場景中,以提供有效的、可信的、可擴展的、成本有效的和高性能的資料儲存和管理。所描述的技術可以為包括例如交易資料、區塊資料、狀態資料和索引資料的區塊鏈資料提供簡單且定義良好的應用程式設計介面(API)集。
所描述的技術提供了一種日誌結構儲存系統,該系統不僅提供I/O服務,還考慮了成本和個性化需求,以提供諸如分層、資料壓縮、共用儲存、糾錯編碼和狀態快照的功能,尤其是在儲存在區塊鏈系統中的資料量達到規模之後。日誌結構儲存系統可以提供諸如日誌結構資料儲存以及非同步和/或併發處理等特徵,以實現性能優化、高效處理、可信環境、通用性(例如,分散式帳本系統和基於區塊鏈的中心化帳本系統均可用)和改進的儲存方案。所描述的技術可以提供用於提供這樣的功能和特徵的總體框架或架構。
通常,在分散式帳本系統(例如,區塊鏈網路)中產生和/或儲存的資料可以被稱為區塊鏈資料。區塊鏈資料可以包括或分類為交易資料、區塊資料、狀態資料和索引資料。在一些實施例中,在基於區塊鏈的中心化帳本系統(例如,通用可審計帳本服務系統)中產生和/或儲存的資料可以包括或分類為交易資料、區塊資料和索引資料。
在一些實施例中,可以以表示為<hash (value), value>的鍵值對(KVP)的形式來接收各種區塊鏈資料。該值可以是表示區塊、交易或區塊鏈網路狀態中一個或多個的實際資料。鍵可以是該值的雜湊值。
在一些實施例中,對於區塊資料,每個區塊可以包括區塊頭和區塊體。區塊頭可以包括特定區塊的身分資訊,並且區塊體可以包括用該區塊確認的交易。在一些實施例中,區塊資料是區塊鏈系統中的資料結構,並且通常具有以下一個或多個特性。例如,(1)在區塊鏈網路中達成共識後,儲存在區塊鏈網路中的每個節點中的區塊資料的內容在理論上是一致的。(2)區塊號密集地增加。(3)連續區塊之間存在雜湊糾纏(hash entanglement)。(4)區塊資料是僅追加(append-only)的。也就是說,一旦達成共識,歷史區塊資料將不會被修改。(5)區塊資料的存取頻率通常較低。區塊資料佔用的儲存空間通常很大。
在一些實施例中,狀態資料可以被組裝(assemble)為全域共用狀態(也稱為世界狀態)。世界狀態可以包括帳戶位址和帳戶狀態之間的映射。世界狀態可以儲存在諸如默克爾派特麗夏樹(Merkle Patricia tree,MPT)的資料結構中。在一些實施例中,例如,在智能合約場景中,可以基於默克爾樹的內容來設計狀態資料。它是一個增量式的內容定址資料集。狀態資料佔用的儲存空間通常很大。
在一些實施例中,狀態資料可以進一步分類為當前狀態和歷史狀態。在一些實施例中,當前狀態是與最新區塊相對應的狀態資料,並且是在區塊鏈網路上執行最新交易時的資料來源。在一些實施例中,歷史狀態是儲存從創世區塊到最新區塊的所有狀態資料的內容定址資料集。在一些實施例中,歷史狀態資料被儲存在歷史狀態樹中。歷史狀態樹可以將狀態資訊儲存為內容可定址的表示為<hash (node value), node value>的鍵值對(KVP)。值或節點值可以是與區塊鏈節點關聯的帳戶的帳戶狀態,而鍵可以是相應帳戶狀態的雜湊值。在一些實施例中,當前狀態資料被儲存在當前狀態樹中。在一些實施例中,可以基於一個或多個位置相關標識(ID)來對當前狀態樹進行位置定址。例如,當前狀態樹可以將狀態資訊儲存為表示為<node ID, node value>的KVP,其中可以根據相應的節點ID來定址節點值。
在一些實施例中,交易資料可以包括與一系列操作的輸入和輸出有關的資料。在一些實施例中,交易資料可以包括與有價物(例如,資產、產品、服務、貨幣)的交換有關的資料。
在一些實施例中,索引資料可以指示資料(例如,交易資料、區塊資料和狀態資料)與儲存該資料以用於定址或檢索該資料的資料日誌檔之間的映射對應關係。在一些實施例中,索引資料可以指示對應資料儲存在儲存系統中的實體位置。在一些實施例中,索引資料可以包括以下中的一個或多個:指示從區塊雜湊值到區塊號的對應關係的索引、指示從區塊雜湊值到儲存位置的對應關係的索引、指示從交易雜湊值到交易的對應關係的索引、或指示從收據雜湊值到收據的對應關係的索引。在一些實施例中,索引資料不包括區塊鏈資料的內容。
當越來越多的交易輸入到區塊鏈中時,區塊鏈資料(例如狀態資料和區塊資料)的大小會越來越大。在DLS中,DLS的每個節點儲存區塊鏈的整個副本,即使某些舊區塊資料或狀態資料不經常被存取,也可能佔用大量儲存空間。
在一些實施例中,區塊鏈資料由日誌結構系統儲存在資料檔案中,並且資料檔案基於時間被連續地追加和劃分。在一些實施例中,可以不根據鍵的分類來重新排列資料(例如,資料不是按鍵值或其他度量排列的,使得熱資料和冷資料不被混合在多個資料日誌檔中),從而大大降低了分層實現的技術挑戰。
在一些實施例中,日誌結構儲存系統使用兩種僅追加資料檔案來儲存區塊鏈資料以提供資料持久性:資料日誌檔和索引日誌檔。例如,區塊資料、交易資料、狀態資料和附加自描述資料可以被儲存在資料日誌檔中,而指示交易資料、區塊資料和狀態資料的儲存位置的索引資料(例如,資料日誌檔的標識和偏移量)可以儲存在索引日誌檔中。
在區塊鏈資料中,交易資料和區塊資料可以是日誌結構友好的,可以包括僅追加資料,使得可以透過直接將這些資料添加或追加到相應的資料日誌檔中來將其寫入資料日誌檔中。在一些實施例中,交易資料和區塊資料的寫入不需要大量壓合(compaction)。例如,它可能需要相對少量的交易重現,並且可能不需要區塊轉返(rollback)。在一些實施例中,狀態資料可以是日誌結構友好的資料,使得歷史狀態資料可以在不需要壓合的情況下增加。
在一些實施例中,日誌結構儲存系統可以支援多級資料分層,並支援多種儲存設備,例如雲碟、網路連接系統(NAS)和物件儲存服務(OSS)(低頻,存檔)。例如,日誌檔可以儲存在基於雲的儲存系統、NAS或OSS設備、或自建的分散式儲存系統中。
在一些實施例中,不同類型的日誌檔可以具有不同的儲存策略。例如,可以將相對較長時間未被存取的資料日誌檔儲存在廉價且速度相對較低的例如NAS/OSS的儲存設備中,並可以使用壓縮和糾錯編碼進行處理以用於儲存。作為另一示例,索引日誌檔可以儲存在諸如雲碟的高速儲存設備上。
在一些實施例中,日誌結構儲存系統可以透過使用最近最少使用的(LRU)記憶體快取和磁片快取來執行資料分層,以優化低速儲存設備的讀取性能。
在一些實施例中,日誌結構儲存系統可以提供管理多級的儲存設備池的分層池管理器。在一些實施例中,每個池支援集群中的多個磁片或儲存設備。分層池管理器可以管理池的空間、壓力和運行狀況。在一些實施例中,日誌結構儲存系統可以提供遷移任務管理員,該遷移任務管理員管理不同級的儲存設備之間的資料的雙向遷移任務;管理結果回檔、統計資訊、遷移任務的生命週期等。在一些實施例中,日誌結構儲存系統可以提供支援可插拔策略的遷移排程器、管理資料遷移策略並提供資料創建/查詢/更新/刪除介面。
所揭示的日誌結構儲存系統採用了合併樹(LSM-Tree)架構的思想。在一些實施例中,日誌結構儲存系統可以包括多個日誌結構儲存實例(或流),其中每個日誌結構儲存實例負責儲存和管理分散式帳本系統(例如,區塊鏈系統)或基於區塊鏈的中心化帳本系統的資料。在一些實施例中,日誌結構儲存系統可以將隨機寫入操作轉換為有序追加操作,以減輕由於大量隨機寫入操作引起的頻繁的“髒”頁刷新而導致的寫入放大問題。在一些實施例中,日誌結構儲存系統可以延遲高性能場景中的寫入刷新操作並減少同步操作的次數,以提高整個系統的效率和性能。
為了提供本文實施例的進一步的背景,並且如上所述,分散式帳本系統(DLS),也可以被稱為共識網路(例如,由點對點節點組成)和區塊鏈網路,使得參與實體能夠安全地並且不可篡改地進行交易並儲存資料。儘管術語區塊鏈通常與特定網路和/或用例相關聯,但是在不參考任何特定用例的情況下,本文中使用的區塊鏈通常是指DLS。
區塊鏈是以交易不可篡改的方式儲存交易的資料結構。因此,區塊鏈上記錄的交易是可靠且可信的。區塊鏈包括一個或多個區塊。鏈中的每個區塊透過包含鏈中其緊前的前一區塊的加密雜湊值(cryptographic hash)連結到該前一區塊。每個區塊還包括時間戳記、自身的加密雜湊值以及一個或多個交易。已經被區塊鏈網路中的節點驗證的交易經雜湊處理並編入默克爾(Merkle)樹中。Merkle樹是一種資料結構,對樹的葉節點處的資料進行雜湊處理,並且在樹的每個分支中的所有雜湊值在該分支的根處級聯。沿著樹持續該處理一直到整個樹的根,在整個樹的根處儲存了代表樹中所有資料的雜湊值。透過確定雜湊值是否與該樹的結構一致而可快速驗證該雜湊值是否為儲存在該樹中的交易的雜湊值。
在一些實施例中,例如,在作為計算節點網路的區塊鏈網路中,可以以分散式或去中心化或至少部分去中心化的方式來實現區塊鏈以用於儲存交易。每個計算節點(又稱為區塊鏈網路節點)可以透過廣播交易、驗證交易和確認交易有效性等來管理、更新和維護一個或多個區塊鏈。如上所述,區塊鏈網路可作為公有區塊鏈網路、私有區塊鏈網路或聯盟區塊鏈網路被提供。在本文中參考聯盟區塊鏈網路進一步詳細描述本文實施例。然而,可以預期,本文實施例可以在任何適當類型的區塊鏈網路中實現。
通常,聯盟區塊鏈網路在參與的實體中是私有的。在聯盟區塊鏈網路中,共識處理由授權的節點集控制,該節點集可以被稱為共識節點,一個或多個共識節點由相應實體(例如,金融機構、保險公司)操作。例如,由10個實體(例如,金融機構、保險公司)組成的聯盟可以操作聯盟區塊鏈網路,每個實體操作聯盟區塊鏈網路中的至少一個節點。
在一些示例中,在聯盟區塊鏈網路內,提供全域區塊鏈作為跨所有節點複製的區塊鏈。也就是說,對於全域區塊鏈,所有的共識節點處於完全共識狀態。為了達成共識(例如,同意將區塊添加到區塊鏈),在聯盟區塊鏈網路內實施共識協定。例如,聯盟區塊鏈網路可以實施實用拜占庭容錯(PBFT)共識,下面將進一步詳細描述。
在一些實施例中,中心化帳本系統還可以採用區塊鏈的資料結構,以利用儲存在區塊鏈上的資料的不可變性、可靠性和可信性。在一些實施例中,例如中心化帳本系統可以被稱為基於區塊鏈的中心化帳本系統或通用可審計帳本服務系統。在一些實施例中,基於區塊鏈的中心化帳本系統可以包括中央可信機構,該中央可信機構提供儲存在區塊鏈資料結構的區塊中的透明、不可變且可密碼驗證的資料。所儲存的資料可以是日誌格式,例如不僅包括交易日誌,還包括其他交易資料和區塊資料。由於中央信任機構的存在,基於區塊鏈的中心化帳本系統無需執行共識處理即可建立信任。在一些實施例中,與典型基於區塊鏈的分散式或去中心化帳本系統相比,基於區塊鏈的中心化帳本系統可以更高效。在一些實施例中,基於區塊鏈的中心化帳本系統可以提供具有增強的信任、效率和儲存性能的基於雲的儲存服務。
圖1是示出了可用於執行本文實施例的環境100的示例的圖。在一些示例中,環境100使得實體能夠參與聯盟區塊鏈網路102。環境100包括計算設備106、108和網路110。在一些示例中,網路110包括區域網路(LAN)、廣域網路(WAN)、網際網路或其組合,並且連接網站、使用者設備(例如,計算設備)和後端系統。在一些示例中,可以透過有線和/或無線通訊鏈路來存取網路110。在一些示例中,網路110使得能夠與聯盟區塊鏈網路102通訊或在聯盟區塊鏈網路102內部通訊成為可能。通常,網路110表示一個或多個通訊網路。在一些情況下,計算設備106、108可以是雲計算系統(未示出)的節點,或者每個計算設備106、108可以是單獨的雲計算系統,其包括透過網路互連並且用作分散式處理系統的多個電腦。
在所描繪的示例中,計算設備106、108可以各自包括能夠作為節點參與至聯盟區塊鏈網路102中的任何適當的計算系統。計算設備的示例包括(但不限於)伺服器、桌上型電腦、筆記型電腦、平板電腦和智慧型手機。在一些示例中,計算設備106、108承載用於與聯盟區塊鏈網路102交互的一個或多個由電腦實施的服務。例如,計算設備106可以承載第一實體(例如,使用者A)的由電腦實施的、例如交易管理系統的服務,例如,第一實體使用該交易管理系統管理其與一個或多個其他實體(例如,其他使用者)的交易。計算設備108可以承載第二實體(例如,使用者B)的由電腦實施的、例如交易管理系統的服務,例如,第二實體使用該交易管理系統管理其與一個或多個其他實體(例如,其他使用者)的交易。在圖1的示例中,聯盟區塊鏈網路102被表示為節點的點對點網路(Peer-to-Peer network),並且計算設備106、108分別提供參與聯盟區塊鏈網路102的第一實體和第二實體的節點。
圖2是示出根據本文實施例的架構200示例的圖。示例性概念架構200包括分別對應於參與者A、參與者B和參與者C的參與者系統202、204、206。每個參與者(例如,用戶、企業)參與到作為點對點網路提供的區塊鏈網路212中,該點對點網路包括多個節點214,至少一些節點將資訊不可篡改地記錄在區塊鏈216中。如圖中進一步詳述,儘管在區塊鏈網路212中示意性地描述了單個區塊鏈216,但是在區塊鏈網路212上提供並維護了區塊鏈216的多個副本。
在所描繪的示例中,每個參與者系統202、204、206分別由參與者A、參與者B和參與者C提供或代表參與者A、參與者B和參與者C,並且在區塊鏈網路中作為各自的節點214發揮作用。如這裡所使用的,節點通常是指連接到區塊鏈網路212且使相應的參與者能夠參與到區塊鏈網路中的個體系統(例如,電腦、伺服器)。在圖2的示例中,參與者對應於每個節點214。然而,可以預期,一個參與者可以操作區塊鏈網路212內的多個節點214,和/或多個參與者可以共用一個節點214。在一些示例中,參與者系統202、204、206使用協定(例如,超文字傳輸協定安全(HTTPS))和/或使用遠端程序呼叫(RPC)與區塊鏈網路212通訊或透過區塊鏈網路212進行通訊。
節點214可以在區塊鏈網路212內具有不同的參與程度。例如,一些節點214可以參與共識處理(例如,作為將區塊添加到區塊鏈216的監視節點),而其他節點214不參與此共識處理。作為另一示例,一些節點214儲存區塊鏈216的完整的副本,而其他節點214僅儲存區塊鏈216的一部分的副本。例如,資料存取特權可以限制相應的參與者在其相應系統儲存的區塊鏈資料。在圖2的示例中,參與者系統202、204和206儲存區塊鏈216的相應的完整副本216'、216''和216'''。
區塊鏈(例如,圖2的區塊鏈216)由一系列區塊組成,每個區塊儲存資料。資料的示例包括表示兩個或更多參與者之間的交易的交易資料。儘管本文透過非限制性示例使用了“交易”,但是可以預期,任何適當的資料可以儲存在區塊鏈中(例如,文檔、圖像、視頻、音訊)。交易的示例可以包括(但不限於)有價物(例如,資產、產品、服務、貨幣)的交換。交易資料不可篡改地儲存在區塊鏈中。也就是說,交易資料不能改變。
在將交易資料儲存在區塊中之前,對交易資料進行雜湊處理。雜湊處理是將交易資料(作為字串資料提供)轉換為固定長度雜湊值(也作為字串資料提供)的過程。不可能對雜湊值進行去雜湊處理(un-hash)以獲取交易資料。雜湊處理可確保即使交易資料輕微改變也會導致完全不同的雜湊值。此外,如上所述,雜湊值具有固定長度。也就是說,無論交易資料的大小如何,雜湊值的長度都是固定的。雜湊處理包括透過雜湊函數處理交易資料以產生雜湊值。雜湊函數的示例包括(但不限於)輸出256位雜湊值的安全雜湊演算法(SHA)-256。
多個交易的交易資料被雜湊處理並儲存在區塊中。例如,提供兩個交易的雜湊值,並對它們本身進行雜湊處理以提供另一個雜湊值。重複此過程,直到針對所有要儲存在區塊中的交易提供單個雜湊值為止。該雜湊值被稱為Merkle根雜湊值,並儲存在區塊的頭中。任何交易中的更改都會導致其雜湊值發生變化,並最終導致Merkle根雜湊值發生變化。
透過共識協議將區塊添加到區塊鏈。區塊鏈網路中的多個節點參與共識協議,並競相將區塊添加到區塊鏈中。這種節點稱為共識節點。上面介紹的PBFT用作共識協議的非限制性示例。共識節點執行共識協定以將交易添加到區塊鏈,並更新區塊鏈網路的整體狀態。
更詳細地,共識節點產生區塊頭,對區塊中的所有交易進行雜湊處理,並將所得的雜湊值成對地組合以產生進一步的雜湊值,直到為區塊中的所有交易提供單個雜湊值(Merkle根雜湊值)。將此雜湊值添加到區塊頭中。共識節點還確定區塊鏈中最新區塊(即,添加到區塊鏈中的最後一個區塊)的雜湊值。共識節點還向區塊頭添加亂數(nonce)和時間戳記。
通常,PBFT提供容忍拜占庭故障(例如,故障節點、惡意節點)的實用拜占庭狀態機複製。這透過在PBFT中假設將發生故障(例如,假設存在獨立節點故障和/或由共識節點發送的操縱訊息)而實現。在PBFT中,以包括主共識節點和備共識節點的順序提供共識節點。主共識節點被週期性地改變。透過由區塊鏈網路內的所有共識節點對區塊鏈網路的全域狀態達成一致,將交易添加到區塊鏈中。在該處理中,訊息在共識節點之間傳輸,並且每個共識節點證明訊息是從指定的對等節點(peer node)接收的,並驗證在傳輸期間訊息未被篡改。
在PBFT中,共識協議是在所有共識節點以相同的狀態開始的情況下分多個階段提供的。首先,用戶端向主共識節點發送調用服務操作(例如,在區塊鏈網路內執行交易)的請求。回應於接收到請求,主共識節點將請求組播到備共識節點。備共識節點執行請求,並且各自向用戶端發送回覆。用戶端等待直到接收到閾值數量的回覆。在一些示例中,用戶端等待直到接收到f+1個回覆,其中f是區塊鏈網路內可以容忍的錯誤共識節點的最大數量。最終結果是,足夠數量的共識節點就將記錄添加到區塊鏈的順序達成一致,並且該記錄或被接受或被拒絕。
在一些區塊鏈網路中,用密碼學來維護交易的隱私。例如,如果兩個節點想要保持交易隱私,以使得區塊鏈網路中的其他節點不能看出交易的細節,則這兩個節點可以對交易資料進行加密處理。加密處理的示例包括但不限於對稱加密和非對稱加密。對稱加密是指使用單個金鑰既進行加密(從明文產生密文)又進行解密(從密文產生明文)的加密過程。在對稱加密中,同一金鑰可用於多個節點,因此每個節點都可以對交易資料進行加密/解密。
非對稱加密使用金鑰對,每個金鑰對包括私密金鑰和公開金鑰,私密金鑰僅對於相應節點是已知的,而公開金鑰對於區塊鏈網路中的任何或所有其他節點是已知的。節點可以使用另一個節點的公開金鑰來加密資料,並且該加密的資料可以使用其他節點的私密金鑰被解密。例如,再次參考圖2,參與者A可以使用參與者B的公開金鑰來加密資料,並將加密資料發送給參與者B。參與者B可以使用其私密金鑰來解密該加密資料(密文)並提取原始資料(明文)。使用節點的公開金鑰加密的訊息只能使用該節點的私密金鑰解密。
非對稱加密用於提供數位簽章,這使得交易中的參與者能夠確認交易中的其他參與者以及交易的有效性。例如,節點可以對訊息進行數位簽章,而另一個節點可以根據參與者A的該數位簽章來確認該訊息是由該節點發送的。數位簽章也可以用於確保訊息在傳輸過程中不被篡改。例如,再次參考圖2,參與者A將向參與者B發送訊息。參與者A產生該訊息的雜湊值,然後使用其私密金鑰加密該雜湊值以提供作為加密雜湊值的數位簽章。參與者A將該數位簽章附加到該訊息上,並將該具有數位簽章的訊息發送給參與者B。參與者B使用參與者A的公開金鑰解密該數位簽章,並提取雜湊值。參與者B對該訊息進行雜湊處理並比較雜湊值。如果雜湊值相同,參與者B可以確認該訊息確實來自參與者A,且未被篡改。
圖3是示出根據本文實施例的日誌結構儲存系統的示例的圖。日誌結構儲存系統300可以儲存將資料儲存在一個或多個區塊鏈上的分散式帳本系統(例如,區塊鏈網路)和/或基於區塊鏈的中心化帳本系統(例如,通用可審計帳本服務系統)(統稱為基於區塊鏈的帳本系統)的資料。
在一些實施例中,日誌結構儲存系統300可以由區塊鏈網路的每個共識節點或基於區塊鏈的中心化帳本系統的中央節點來實現。在一些實施例中,日誌結構儲存系統300可以連接到由基於區塊鏈的帳本系統的用戶端節點構建的分散式儲存系統340。如圖所示,日誌結構儲存系統300包括前端輸入/輸出(I/O)子系統310、多層儲存子系統320和後端資料管理子系統330。在一些實施例中,前端I/O子系統310可以執行寫入操作以將資料寫入到儲存在多層儲存子系統320中的資料檔案(例如,資料日誌檔和索引日誌檔)中,並執行讀取操作,以存取來自儲存在多層儲存子系統320中的資料檔案的資料。在一些實施例中,後端資料管理子系統330可以根據不同的需求對資料檔案中的資料進行處理、重組和管理,以提高整個系統的效率和性能。
前端I/O子系統310可以包括任何合適的計算元件(例如,處理器、記憶體315等中的一個或多個)以執行本文所述的方法。在一些實施例中,前端I/O子系統310可以對多種資料元素執行包括各種讀寫操作(例如,插入、更新、刪除、查詢等)的前端I/O操作。
在一些實施例中,前端I/O子系統310處理的所有資料元素(例如,交易資料、區塊資料和狀態資料)可以以日誌檔案格式被儲存,無論該日誌檔是根據寫入操作產生的還是根據後端資料管理子系統330的例如儲存分層、壓合、資料壓縮、糾刪編碼等的操作產生的檔。
在一些實施例中,前端I/O子系統310處理的資料可以被儲存在以下兩種日誌檔中:(1)儲存諸如區塊鏈資料(例如,交易資料、區塊資料、狀態資料)的實質資料和自描述元資料的資料日誌檔(例如,資料日誌檔390、362、364、366、372、374和376);以及(2)儲存指示資料的實體位置的索引資訊(例如,資料日誌檔的識別字和偏移量)的索引日誌檔(例如,索引日誌檔380)。在一些實施例中,資料日誌檔不儲存索引資訊,而索引資訊由單獨的索引日誌檔維護。
在一些實施例中,前端I/O子系統310可以被配置為執行寫入操作以將區塊鏈資料寫入到資料日誌檔390中。在一些實施例中,區塊鏈資料可以包括由區塊鏈網路或分散式帳本系統產生的區塊資料、交易資料或狀態資料。在一些實施例中,區塊鏈資料可以包括由基於區塊鏈的中心化帳本系統產生的區塊資料和交易資料。在一些實施例中,寫入資料日誌檔390的資料可以包括描述資料區塊的元資料,諸如交易雜湊值和序列值、區塊雜湊值和區塊號、快照版本號、迴圈冗餘校驗(CRC)碼、加密資訊等。在一些實施例中,資料日誌檔390可以是僅追加檔。
在一些實施例中,前端I/O子系統310可以被配置為產生指示相應資料儲存在日誌結構儲存系統300中(例如,多層儲存子系統320中的資料日誌檔中)的實體位置的索引。在一些實施例中,索引可以被儲存在索引日誌檔380中。在一些實施例中,資料日誌檔和索引日誌檔可以被儲存在多層儲存子系統320中。在一些實施例中,索引可以被儲存在索引日誌檔380中,該索引日誌檔380被儲存在多層儲存子系統320的儲存設備中存取速度最高的一個儲存設備中。
在一些實施例中,可以基於資料寫入或追加操作來持續更新資料日誌檔。在一些實施例中,資料日誌檔可具有可配置的最大長度,例如在512MB和2GB之間。在一些實施例中,如果確定資料日誌檔已經達到最大長度或大小,則可以將資料日誌檔密封或設定為唯讀,並且可以為新寫入操作分配新資料日誌檔。
在一些實施例中,前端I/O子系統310可執行寫入操作,包括對儲存在日誌結構儲存系統300中的資料的修改。在一些實施例中,前端I/O子系統310透過以日誌格式將資料添加或追加到資料日誌檔中,來處理對資料的修改,從而不覆蓋原始資料。在一些實施例中,資料日誌檔可以形成可用於崩潰恢復的預寫日誌(WAL)層。
在一些實施例中,前端I/O子系統310將索引資訊儲存在記憶體315中,該索引資訊指示資料(例如,交易資料、區塊資料和狀態資料)與儲存該資料的資料日誌檔之間的映射對應關係,以定址或檢索資料。在一些實施例中,可以使用日誌結構合併(LSM)方法來組織記憶體中的索引資料。在一些實施例中,新寫入的資料的索引可以被儲存在記憶體315中,並在記憶體使用率(memory usage)超過預定閾值時被刷新(flush)到索引日誌檔380中。這樣,舊資料的索引可以被儲存在磁片儲存設備或硬碟驅動器儲存設備中的索引日誌檔380中,從而釋放出空間以在記憶體315中快取新的熱點資料的索引。
在一些實施例中,索引資料可以包括以下中的一個或多個:指示從區塊雜湊值到區塊號的對應關係的索引、指示從區塊雜湊值到儲存位置的對應關係的索引、指示從交易雜湊值到交易的對應關係的索引、或指示從收據雜湊值到收據的對應關係的索引。在一些實施例中,用於基於區塊鏈的中心化帳本系統的索引資料可以包括一或更多指示從序列到交易儲存位置的對應關係的索引,和/或指示從時序到交易雜湊值的對應關係的索引。
在一些實施例中,前端I/O子系統310可以包括儲存在記憶體315中的多個記憶體內(in-memory)索引映射。在一些實施例中,記憶體內索引映射可以被認為是用於維護前端I/O子系統310的記憶體中的索引資料的任何合適的元件、單元、模組或資料結構(例如,表或結構)。記憶體內索引映射可以是前端I/O子系統310的關鍵元件,其確定前端I/O子系統310和整個日誌結構儲存系統300的可擴展性和性能。在一些實施例中,因為區塊鏈資料的時間敏感性較強,並且最近寫入的交易資料和區塊資料被再次訪問的機會相對較高,所以日誌結構儲存系統300可以將熱資料的索引儲存在記憶體315中的索引映射中,以改善整個日誌結構儲存系統300的性能。
在一些實施例中,記憶體內索引映射可以維護一或更多指示從交易雜湊值到序列值的映射的索引和/或指示從區塊雜湊值和區塊號到資料的實體位置的映射的索引。在一些實施例中,前端I/O子系統310將記憶體315中的索引映射的檢查點定期持久化到索引日誌檔中。例如,前端I/O子系統310可以週期性地或在某個時間點捕獲記憶體315中的索引資料的快照,並將快照儲存在多層儲存子系統320中的索引日誌檔380中。這可以創建一個時間點,在日誌結構儲存系統300意外關閉或崩潰之後的恢復過程中,日誌結構儲存系統300可以在該時間點應用包含在索引日誌檔380中的更改。在一些實施例中,前端I/O子系統310可以透過查詢記憶體內索引映射並確定所請求資料的當前位置來讀取資料(例如,交易資料、區塊資料和狀態資料)。
在一些實施例中,可以在創建索引日誌檔時將記憶體內索引映射的完整檢查點寫入索引日誌檔。在一些實施例中,可以透過批量處理寫入操作的索引來更新索引日誌檔。在一些實施例中,批大小可以是動態可配置的,例如數千個交易寫入操作或幾百萬位元組(MB)的寫入操作。在一些實施例中,當已經針對特定批次數的寫入操作更新了索引日誌檔時,可以將索引日誌檔密封或設定為唯讀,並且可以創建新索引日誌檔以寫入新資料。
在一些實施例中,為了從異常崩潰中恢復,前端I/O子系統310可以將索引日誌檔(例如,索引日誌檔380)載入到記憶體315中,並且掃描資料日誌檔390的頁底部以確保資料日誌檔390和索引日誌檔380的一致性。在一些實施例中,索引日誌檔可能落後於資料日誌檔幾個批次,因此恢復時間可能佔用有限的I/O資源和時間。
在一些實施例中,可以將新寫入的交易資料和區塊資料的索引添加到索引映射和索引日誌檔中,但是除了在重放攻擊和區塊轉返場景中之外,可以不修改現有交易資料和區塊資料的索引。在一些實施例中,為了實現讀寫操作的高併發性,可以將記憶體內索引映射分為唯讀基本索引映射316和讀寫增量索引映射312。在一些實施例中,基本索引映射316可以儲存冷資料的索引,而增量索引映射312可以儲存新寫入的資料的索引。在一些實施例中,雜湊值索引可以儲存在雜湊值表中,而序列索引可以儲存在B樹(B-tree)中。
在一些實施例中,在前端I/O子系統310的寫入操作期間,可以首先將資料的索引資訊更新到增量索引映射312。在讀取操作期間,前端I/O子系統310可以首先在增量索引映射312中搜尋所請求的資料。如果在增量索引映射312中未找到所請求的資料,則前端I/O子系統310可以隨後搜尋基本索引映射316。
在一些實施例中,前端I/O子系統310可以定期將索引資料從記憶體315刷到索引日誌檔380。在一些實施例中,索引刷新的基本過程可以包括以下操作:(1)組合增量索引映射312和基本索引映射316;(2)對基本索引映射316進行持久化處理(例如,將基本索引映射儲存到索引日誌檔中);(3)從記憶體315釋放基本索引映射316的部分或全部;(4)透過讀取請求的索引資料將索引資料交換到記憶體315。
在一些實施例中,前端I/O子系統310可以將記憶體315中的增量索引映射312轉換為不可變索引映射314,然後將它們刷到索引日誌檔380,並創建新增量索引映射以接收根據新請求產生的索引。這樣,可以減少增量索引映射的儲存佔用,以改善日誌結構儲存系統300的性能。
在一些實施例中,為了減少對前端I/O的影響,記憶體中的索引映射可以在後端非同步地合併。在一些實施例中,可以透過以下兩個條件中的至少一個來觸發合併處理:(1)增量索引映射的大小超過預定閾值;(2)新快照被創建。在一些實施例中,前端I/O子系統310可以產生合併索引映射以包括要被刷到索引日誌檔380中的不可變索引映射314。在一些實施例中,前端I/O子系統310可以將合併索引映射與當前基本索引映射316組合以產生新基本索引映射。
在一些實施例中,在操作期間,前端I/O子系統310可以與多個基本索引映射和索引日誌檔一起運行。在一些實施例中,當在某些情況下需要壓合時,可以透過將所有基本索引映射和增量索引映射組合成一個基本索引映射來定期執行次要壓合(minor compaction)和主要壓合(major compaction)。主要壓合主要合併和管理索引,這可用於例如快照、垃圾回收載入和索引檔管理的場景。
在一些實施例中,可以透過合併基本索引映射和增量索引映射並產生新基本索引映射,並且將其儲存到新索引日誌檔中來執行主要壓合。在一些實施例中,可以透過組合若干索引日誌檔並產生新索引日誌檔來執行次要壓合,這可以減少索引日誌檔的數量。在一些實施例中,如果當前索引日誌檔的大小達到預定閾值,則可以將當前索引日誌檔設定為密封或不可變狀態並關閉,並且可以為新索引資料創建新索引日誌檔。
在一些實施例中,在讀取操作期間,如果在記憶體內索引映射中的搜尋失敗,則可能需要兩個或多個I/O操作,這可能給日誌結構儲存系統300帶來負擔。在一些實施例中,前端I/O子系統310可以提供具有記憶體快取313和區塊快取317的多級快取機制(例如,使用快閃記憶體媒體(例如,SSD雲碟))。
在一些情況下,日誌結構儲存系統300可以接收較大的讀取請求,使得日誌結構儲存系統300需要存取多個資料日誌檔從而為用戶端獲取完整的請求資料。然而,存取多個資料日誌檔可能會導致不小的開銷。在一些實施例中,後端資料管理子系統330可以執行壓合操作以級聯邏輯上相鄰的資料區塊從而減少碎片。在一些實施例中,壓合操作可能具有開銷,並且可以在資料碎片嚴重時執行。
在一些實施例中,多層儲存子系統320可以包括多層儲存設備。儲存設備可以包括儲存媒體以及相應的軟體和/或硬體介面。在一些實施例中,多層儲存設備可以包括具有不同性能特性(例如存取速度)的多個儲存設備。例如,多層儲存設備可以包括雲碟、網路附加儲存(NAS)設備和物件儲存服務(OSS)設備。在一些實施例中,多層儲存設備是按根據一個或多個性能特性的分層結構分層的。在一些實施例中,一個或多個性能特性可以包括存取速度、存取頻寬或存取延遲。例如,多層儲存設備可以包括具有第一性能特性(例如,存取速度)的第一層儲存設備和具有低於第一性能特性的第二性能特性(例如,相對於第一層儲存設備而言相對較低的存取速度)的第二層儲存設備等。如圖3所示,多層儲存子系統320的示例可以包括第一層儲存設備350、第二層儲存設備360和第三層儲存設備370,該第一層儲存設備350包括雲碟或基於雲的儲存設備(例如,固態驅動器(SSD)雲碟、嵌入式SSD(ESSD)雲碟),該第二層儲存設備360包括NAS設備,該第三層儲存設備370包括OSS設備。
在一些實施例中,多層儲存設備可以儲存不同類型的資料。在一些實施例中,可以基於例如資料被產生或接收的時間或資料被存取的頻率將資料分類為熱資料355、暖資料365和冷資料375。例如,最新交易的資料可以是熱資料;昨天的交易資料可以是暖資料,而一周前進行的歷史交易資料可以是冷資料。又例如,區塊鏈中最近產生的10個區塊中的資料可以是熱資料;最近產生的11〜20個區塊中的資料可以是暖資料,其他較早的區塊中的資料可以是冷資料。然而,在一些實施例中,區塊鏈的創世區塊可以被視為熱資料,因為其頻繁被存取。
在一些實施例中,多層儲存子系統320可以將熱資料355、暖資料365和冷資料375分別儲存到多層儲存設備中。例如,第一層儲存設備350可以儲存熱資料355;第二層儲存設備360可以儲存暖資料365;第三層儲存設備370可以儲存冷資料375。在一些實施例中,一層儲存設備可以例如基於儲存空間和成本來儲存一種或多種資料。例如,第一層儲存設備350可以儲存熱資料355和一些暖資料365,而第二層儲存設備360可以儲存其餘的暖資料365和一些冷資料375。
在一些實施例中,儲存設備的每一層可以儲存資料日誌檔,該資料日誌檔包括由基於區塊鏈的帳本系統(例如,分散式帳本系統和/或基於區塊鏈的中心化帳本系統)產生的區塊鏈資料。例如,第一層儲存設備350可以儲存包括由基於區塊鏈的帳本網路產生的第一區塊鏈資料的第一資料日誌檔390,並且第二層儲存設備360可以儲存包括由基於區塊鏈的帳本系統產生的第二區塊鏈資料的第二資料日誌檔362,等等。
在一些實施例中,相比於儲存在儲存設備的相對較高層中的資料日誌檔中的區塊鏈資料,儲存在儲存設備的相對較低層中的資料日誌檔中的區塊鏈資料可以更早地被寫入。例如,相比於儲存在第一層儲存設備350上的第一資料日誌檔390中的第一區塊鏈資料,儲存在第二層儲存設備360上的第二資料日誌檔362中的第二區塊鏈資料可以更早地被寫入。
在一些實施例中,第一層儲存設備350可以進一步儲存一個或多個索引日誌檔380,該索引日誌檔380包括索引資料,該索引資料用於指示多層儲存設備350、360和370儲存的資料日誌檔390、362、364、366、372、374和376中資料的實體儲存位置。例如,如圖3所示,第一層儲存設備350可以儲存索引日誌檔380,該索引日誌檔380包括的索引資料指示第一層儲存設備350儲存的資料日誌檔390中區塊鏈資料的實體儲存位置、第二層儲存設備360儲存的資料日誌檔362、364和366中區塊鏈資料的實體儲存位置、以及第三層儲存設備370儲存的資料日誌檔372、374和376中區塊鏈資料的實體儲存位置。
在一些實施例中,一個或多個索引日誌檔可以被儲存在一或更多第二層儲存設備360和/或第三層儲存設備370。
在一些實施例中,儲存在多層儲存子系統320上的索引日誌檔和資料日誌檔是僅追加日誌檔。在一些實施例中,儲存在資料日誌檔中的區塊鏈資料可以包括區塊資料、交易資料和歷史狀態資料。
在一些實施例中,較高層的儲存設備可以儲存包括從較低層的儲存設備遷移來的區塊鏈資料的資料日誌檔。例如,第一層儲存設備可以儲存包括這樣的區塊鏈資料的資料日誌檔:該區塊鏈資料比第二層儲存設備的資料日誌檔中的區塊鏈資料和從第二層儲存設備遷移來的區塊鏈資料更頻繁地被存取。
在一些實施例中,儲存系統300可以進一步包括分散式儲存系統340,該分散式儲存系統340包括諸如非易失性記憶體快速(non-volatile memory express,NVME)、SSD、硬碟驅動器(HDD)和疊片式磁記錄(SMR)的儲存媒體。在一些實施例中,分散式儲存系統340可以由基於區塊鏈的帳本系統的用戶端節點產生或擴展,以具有更好的可用性、分區容忍度、靈活性和成本。例如,分散式儲存系統340可以透過添加更多伺服器或儲存節點並由此線性地增加容量和性能來允許擴展。它可以使用價格便宜的標準伺服器、驅動器和網路。在一些實施例中,分散式儲存系統340可以提高標準伺服器的利用率,因此導致更少的功耗、更好的冷卻效率、更好的空間利用率、更少的維護成本等。
前端I/O子系統310可以對區塊鏈資料執行寫入操作並產生索引日誌檔380以及儲存在多層儲存子系統320上的資料日誌檔390、362、364、366、372、374和376。隨著時間的流逝,儲存在多層儲存子系統320上的資料可能會累積和聚集,並且可能會降低日誌結構儲存系統300的性能。後端資料管理子系統330可以根據不同的需求來處理和重組資料,例如,從而提高日誌結構儲存系統300的性能並降低其成本。在一些實施例中,後端資料管理子系統330可以獨立於前端I/O子系統310來管理資料。例如,後端資料管理子系統330可以在後端對密封索引日誌檔或唯讀索引日誌檔以及資料日誌檔執行諸如分層、壓縮、糾刪編碼、狀態快照、壓合和驗證的資料管理操作。在一些實施例中,後端資料管理子系統330可以實施流控制以最小化對前端I/O子系統310的前端I/O處理的影響。
在一些實施例中,後端資料管理子系統330的任務可以包括對儲存的資料進行重寫和與該重寫的資料相對應的索引的替換。在一些實施例中,後端資料管理子系統330可以在後端上自動確定是否需要重寫資料日誌檔。在一些實施例中,後端資料管理子系統330可以基於諸如分層、壓縮和糾刪編碼的配置來確定重寫的放置。在一些實施例中,後端資料管理子系統330可以從一個或多個來源資料日誌檔讀取資料,並將資料重寫到目標資料日誌檔。在一些實施例中,當重寫完成時,後端資料管理子系統330可以將目標資料日誌檔設定為密封或不可變狀態,並產生對應的目標索引日誌檔。在一些實施例中,目標索引日誌檔可以包括可被安全刪除的資料日誌檔的清單,以及目標索引日誌檔所引用的資料日誌檔。在一些實施例中,後端資料管理子系統330不回收仍然可以由前端I/O子系統310的即時實例使用的舊資料日誌檔。
在一些實施例中,後端資料管理子系統330可以處理根據前端I/O子系統310的I/O操作產生的唯讀索引日誌檔和對應的唯讀資料日誌檔。在一些實施例中,後端資料管理子系統330可以分析索引日誌檔並確定例如資料的熱、暖或冷的水準、資料量、垃圾率和/或碎片量。在一些實施例中,基於垃圾率、磁片使用率和/或系統請求,後端資料管理子系統330可以執行以下一項或多項任務:
(1)資料分層。例如,當儲存媒體使用率接近安全上限時,可能需要將資料遷移到下一層或更低層儲存設備的儲存媒體中。
(2)資料壓縮。例如,當儲存媒體使用率接近安全上限時,可能需要壓縮資料檔案。
(3)糾刪編碼(EC)。例如,當儲存媒體使用率接近安全上限時,可能需要透過糾刪編碼來釋放儲存空間。
(4)狀態快照。例如,當存在狀態修改(例如,在資料刪除後回收儲存空間)時,可以對區塊鏈狀態執行快照。
(5)資料壓合。例如,如果資料日誌檔中的垃圾或碎片增長到一定大小從而明顯影響日誌結構儲存系統300的性能,則可能需要清理垃圾或碎片。
(6)驗證。例如,可以定期或按需在儲存媒體上對資料執行迴圈冗餘校驗(CRC)。
資料分層:
在一些實施例中,對於需要相對較高性能的寫入請求,可以將寫入請求寫入到多個不同儲存設備中的更快的儲存設備(例如,SSD雲碟、ESSD雲碟、NVME等)。對於需要較低性能以換取較低開銷的寫入請求,可以將寫入請求寫入儲存設備媒體(例如,NAS等)。在一些實施例中,後端資料管理子系統330可以使用一組混合的慢速和快速儲存設備來進行資料分層和資料遷移。例如,區塊鏈網路產生的新區塊資料的存取頻率可能比舊區塊資料相對更高,並且新區塊資料可以儲存在更快的儲存設備中。在一些實施例中,可以將存取頻率最高的新區塊資料的一部分儲存在記憶體快取(例如,記憶體快取313)和/或高速的磁片快取(例如,區塊快取317)中。
在一些實施例中,分散式帳本系統和基於區塊鏈的中心化帳本系統均具有強的冷熱特性,這使其適於分層儲存。例如,諸如多層儲存子系統320的分層儲存系統可用於包括以下一項或多項特徵:(1)具有較小儲存空間的快速儲存媒體和具有較大儲存空間的慢速儲存媒體的組合提高了空間使用率而不犧牲性能;(2)支援冷遷移(例如,冷資料自動從快速媒體遷移到慢速媒體)和預熱(例如,資料從慢速媒體遷移到快速媒體);(3)可擴展性,以在規模增加時減少維護成本;(4)支援基於使用者需求的靈活配置;(5)支援多媒體儲存池;或(6)快速遷移到新儲存媒體。
圖4是示出根據本文實施例的分層儲存系統400的示例的圖。在一些實施例中,分層儲存系統可以例如基於儲存設備的存取速度來包括多個級或多個層的儲存設備。例如,參考圖4,用於分層的多個儲存設備可以分為四個層或級,包括熱、暖、冷和用於基於日誌檔的熱和冷特性來儲存日誌檔的存檔。例如,分層儲存系統400的儲存設備可以分為用於分別儲存熱日誌檔410、暖日誌檔412、冷日誌檔414和存檔檔416的四個層或級。
在一些實施例中,儲存設備的每個層或級可以被視為虛擬池,並且每個池可以支援多個實體或虛擬檔案系統(也稱為儲存設備)。例如,分層儲存系統400可以包括第一級池402、第二級池404、第三級池406以及第四級池408。在一些實施例中,池中支援的檔案系統可以包括以下短期檔案系統中的一個或多個:雲碟(例如,安裝在ext4/xfs檔案系統上的虛擬機器(VM)的區塊設備);NAS(例如,具有posix介面的nfs檔案系統);OSS低頻(適用於虛擬檔案系統、軟體開發套件(SDK)系統、代表性狀態傳輸(REST)介面等格式);和OSS存檔(適用於虛擬檔案系統、SDK系統、REST介面等格式)。
例如,如圖4所示,第一級池402可以包括雲儲存系統(例如,多層儲存子系統320)中儲存熱日誌檔410的ESSD和SSD設備。第二級池404可以包括雲儲存系統中儲存暖日誌檔412的NAS設備和雲碟。第三級池406可包括雲儲存系統中儲存冷日誌檔414的OSS低頻設備。第四級池408可以包括雲儲存系統中儲存檔檔416的OSS存檔設備。
在一些實施例中,檔案系統還可以包括長期檔案系統,諸如自建分散式系統(例如,由基於區塊鏈的帳本系統的用戶端節點構建的分散式儲存系統340)。例如,第一級池402還可以包括由區塊鏈網路的用戶端節點產生的分散式儲存系統的儲存熱日誌檔410的NVME設備(例如,作為分散式儲存系統340的一部分)。第二級池404還可包括分散式儲存系統的儲存熱日誌檔412的SSD設備。第三級池406還可包括分散式儲存系統的儲存冷日誌檔414的HDD設備。第四級池408還可以包括分散式儲存系統的儲存檔檔416的SMR設備。在一些實施例中,可以為所有檔案系統提供與整個日誌結構儲存系統300的統一介面。
在一些實施例中,分層儲存系統400可以包括一個或多個子系統或元件,諸如(1)分層池管理器418、(2)遷移任務管理員420、(3)用於管理資料分層的遷移排程器422、或(4)服務品質(QoS)管理器423。在一些實施例中,每個管理器可以包括任何合適的計算元件(例如,處理器、記憶體等中的一個或多個)以執行本文所述的功能。例如,這些管理器可以管理不同性能和成本的多個儲存設備之間的資料流程,例如,透過利用不同儲存設備之間的性能和成本差異來提高整個日誌結構儲存系統的性能和效率。
在一些實施例中,分層池管理器418可以被配置為管理儲存設備的每個層。在一些實施例中,分層池管理器418可以執行以下功能中的一項或多項:管理多層儲存設備的儲存空間和壓力;提供指定層的檔創建、刪除和統計分析功能(例如,根據系統請求選擇儲存設備以創建資料日誌檔);維護層檔映射表,該表指示資料檔案的對應關係,它們在儲存設備的相應層中的儲存位置以及資料檔案的熱度或冷度等。
在一些實施例中,遷移任務管理員420可以管理不同儲存設備之間的雙向資料遷移任務、管理任務生命週期、回檔結果、執行統計分析、執行遷移任務等等。
在一些實施例中,遷移排程器422可以支援可插拔遷移策略、管理資料遷移策略並提供資料創建/查詢/更新/刪除介面。在一些實施例中,遷移排程器422可以對遷移任務執行調度管理,以實現對遷移任務的有效流控制。在一些實施例中,遷移排程器422可以在後端對資料日誌檔進行打分或以其他方式分配相應得分,並且根據得分排名和遷移策略來產生資料日誌檔的遷移任務。在一些實施例中,可以根據評分公式對資料日誌檔進行打分,該評分公式考慮了儲存設備的層、存取頻率、原始資料創建時間、遷移成本和/或其他因素。在一些實施例中,遷移排程器422可以與分層儲存系統400的其他子系統或元件一起工作以快速驗證不同的遷移策略。
在一些實施例中,可以根據預定的資料遷移策略自動執行資料遷移。例如,可以根據預定的評分方案對高速儲存設備中的不同資料進行打分,並基於不同資料的相應得分在後端將其遷移到低速設備中,以釋放快取空間。在一些實施例中,在某些應用中,低速設備中的一些資料可以被確定為熱資料。可以將熱資料首先保存在磁片快取中,如果資料日誌檔的得分滿足要求,則可以將其遷移到高速設備。在一些實施例中,在資料檔案從源儲存設備遷移到目標儲存設備之後,原始資料可以在源儲存設備中被刪除或可以不被刪除。例如,如果目標儲存設備是頂層儲存設備,則不需要刪除磁片快取中的資料日誌檔,而是可以自動將其替換為其他資料。
在一些實施例中,QoS管理器423可以被配置為管理分層儲存系統400的資料流程或其他性能指標以改善QoS。例如,在一些情況下,對高速儲存設備突發的I/O寫入可能導致較高層中的高速儲存設備被大量佔用或使用。在一些實施例中,QoS管理器423可以以高使用率(例如85%或另一閾值)來控制進入儲存池的資料流程,以避免儲存池被過快填滿。流控制可以防止分層儲存系統400的性能下降,並可以釋放儲存空間以進行資料遷移。為了提高資料遷移的效率,同時減少對前端I/O操作(例如,透過前端I/O子系統310)的影響,可以在後端(例如,透過後端資料管理子系統330)執行流控制資料遷移。在一些實施例中,遷移速度可以與儲存設備的使用率正相關。例如,如果儲存設備的使用率較低,則可以減少流控制,以避免對前端I/O產生過多影響。如果儲存設備的使用率較高,則可以取消流控制以加速資料遷移。
在一些情況下,高速儲存設備的使用率可能已滿,並且前端I/O操作可能受到嚴重限制。在一些實施例中,可以將資料直接寫入較低層儲存設備,而無需將資料從較高層儲存設備遷移到較低層儲存設備。例如,如果圖3中的第一層儲存設備350已滿或達到使用率閾值,則可以將資料直接寫入第二層儲存設備360。在一些實施例中,像區塊鏈區塊資料這樣的大(例如,具有大於閾值的大小)的資料可以被直接寫入低層儲存設備中的資料日誌檔中,以節省由於資料遷移引起的成本。
在一些實施例中,為了進一步減少由於資料遷移引起的網路資源、硬碟輸送量、儲存空間和其他資源的消耗,並且為了減小對前端I/O操作的影響,當資料被遷移到低層儲存設備時可以透過預設設定執行壓縮和糾刪編碼。
與高速儲存設備相比,低速或存檔儲存設備的性能相對較差。通常,大部分資料最終會寫入儲存設備的低速層。根據資料的熱特性和冷特性在高速儲存設備上快取熱資料並將其遷移到高速儲存設備有助於提高讀取性能。在一些實施例中,可以實現以下兩種或更多種快取以提高讀取性能:(1)記憶體快取(例如,最近最少使用(LRU)快取424);(2)快速磁片快取(例如,高速儲存設備上的最不常用(LFU)磁片快取426)。在一些實施例中,可以例如以數百MB到幾GB來動態地配置記憶體快取424的總大小。類似地,可以例如以1GB到數十GB動態地配置快速磁片快取的總大小。
在一些實施例中,可以將已經頻繁被存取的一些歷史資料,例如區塊鏈的創世區塊,放置在快速儲存設備的LFU快取中。
資料壓縮:
對於分散式帳本系統和基於區塊鏈的中心化帳本系統,對資料區塊的壓縮可以有效降低成本並提高日誌結構儲存系統的性能。日誌結構由於其固有的特性和特徵,可以便於日誌結構儲存系統中的壓縮。
在一些實施例中,寫入前端上的資料可以不被壓縮,並且可以例如透過將資料追加在資料日誌檔中而直接寫入到高速儲存設備(例如,SSD雲碟)。在一些實施例中,當資料日誌檔達到一定大小時,可以將其設定為不可變的。在一些實施例中,後端資料管理子系統330可以在後端上壓縮原始資料日誌檔,並將原始資料日誌檔替換為壓縮後的資料檔案。這樣,由於壓縮操作是在後端執行的,因此可以減少或最小化壓縮操作對前端I/O操作的影響。
通常,在確定資料日誌檔的壓縮大小或容量時,可能需要考慮壓縮和讀取放大的有效性並達到平衡。例如,在一些情況下,如果資料日誌檔的壓縮大小或容量太小(例如,小於4 KB),則由於壓縮而節省的空間可能會受到限制,並且壓縮性能可能不是最佳的。另一方面,如果資料日誌檔的壓縮大小或容量太大,則讀取放大也可能變得更大(例如,要讀取交易條目,則包括交易條目的整個壓縮資料日誌檔需要首先解壓縮)。在一些實施例中,資料日誌檔的壓縮大小可以被設定為16KB-128KB。
在一些實施例中,壓縮資料日誌檔可以包括多個記錄,其中每個記錄可以包括壓縮頭和壓縮資料體。在一些實施例中,壓縮資料的元資料可以包括版本資訊、壓縮演算法、長度和CRC等。
對於加密的資料,加密本身的隨機性會使資料壓縮的性能不理想。因此,在一些實施例中,對於需要加密的資料(例如在可信執行環境(TEE)中),可以在加密之前或解密之後對資料進行壓縮。
在一些實施例中,對於壓縮日誌檔,基本索引映射可以對壓縮日誌檔的實體資料大小進行編碼、修改並記錄相應的索引,並且記錄日誌檔的檔ID、日誌檔的偏移量和日誌檔的壓縮資料大小。
糾刪編碼
在一些實施例中,後端資料管理子系統330可以對資料日誌檔中的資料執行糾刪編碼。例如,後端資料管理子系統330可以在後端使用糾刪編碼將進入的資料寫入資料日誌檔。
對於分散式帳本系統,為了在區塊鏈網路的共識節點之間實現拜占庭容錯日誌檔層,可以執行糾刪編碼以減少儲存在分散式帳本系統的每個共識節點上的冷資料量。例如,對於4個共識節點,可以在執行糾刪編碼之前寫入4個資料副本。在執行糾刪編碼(例如,8+3糾刪編碼方案)之後,這4個節點可以儲存少於2個資料副本(例如,1.375個資料副本)。
對於基於區塊鏈的中心化帳本系統,中心化結構不需要由於多個節點的備份而導致的資料冗餘。在一些實施例中,可以在基於區塊鏈的中心化帳本系統中的分層儲存系統中執行糾刪編碼,以減少資料冗餘,例如,在頂層儲存設備或分散式儲存系統中的資料備份中。
資料壓合
在一些實施例中,交易資料、區塊資料和歷史狀態資料是僅追加的,並且不能被刪除或覆蓋,因此不對這些資料執行壓合。在一些實施例中,可以使用資料壓合來處理當前狀態資料。資料壓合通常包括垃圾收集和資料磁碟重組。
在一些實施例中,後端資料管理子系統330可以根據資料日誌檔各自的垃圾率對它們進行排序,並且以從高垃圾率到低垃圾率的降冪排列它們。在一些實施例中,後端資料管理子系統330可以重寫具有相對較高的垃圾率的資料日誌檔。例如,後端資料管理子系統330可以重寫垃圾率超過預定閾值的資料日誌檔。在一些實施例中,資料日誌檔創建得越早,資料日誌檔中的資料就越有可能被覆蓋,這意味著較早的資料日誌檔的垃圾率可能高於新資料日誌檔的垃圾率。
在一些實施例中,後端資料管理子系統330可以實現垃圾回收機制,該垃圾回收機制可以為每次重寫設定最大資料量。在一些實施例中,例如可以由前端I/O子系統310的多個即時實例流並行地執行多個回收程式,以提高垃圾收集的整體效率。
在一些實施例中,前端I/O子系統310的即時實例流可以獲得垃圾率,並將獲得的垃圾率報告給後端資料管理子系統330,後端資料管理子系統330可以確定適當或最佳的流來重寫資料。
磁碟重組通常是以下處理:定位儲存在儲存設備上的不連續資料碎片,然後重新排列這些碎片並將其還原為更少的碎片或整個文件。磁碟重組可以減少資料存取時間,並可以更有效地使用儲存。在一些實施例中,後端資料管理子系統330可以週期性地、不時地或根據請求執行磁碟重組。
在一些實施例中,對於某些類型的資料,例如世界狀態資料或狀態物件資料,這些資料的鍵具有一定水準的雜湊特性。如果鍵具有首碼(例如,不同的狀態物件具有不同的首碼),則透過將資料放入同一檔或相鄰檔中來對此類資料執行壓合可以提高讀取性能。
狀態快照
狀態快照可以捕獲系統(例如,分散式帳本系統)在特定時間點的狀態。在一些實施例中,後端資料管理子系統330可以執行狀態快照操作以產生和儲存日誌結構儲存系統300的狀態資料。在一些實施例中,狀態資料可以包括歷史狀態資料和當前狀態資料。歷史狀態資料可以包括分散式帳本系統的歷史狀態以用於回溯,而當前狀態資料可以包括分散式帳本系統的最新狀態資料。隨著時間的流逝,歷史狀態資料的大小可能會變大,並佔用大量儲存空間。在一些實施例中,為了改善歷史資料回溯和儲存空間使用率,後端資料管理子系統330可以對當前狀態資料執行快照操作。
日誌結構儲存系統300的日誌結構設計可以有助於快照操作並提高日誌結構儲存系統300的性能和效率。在一些實施例中,可以基於寫時重定向(ROW)方法來執行快照操作,該方法為與快照相對應的資料集提供了高效索引。
在一些實施例中,日誌結構儲存系統300的快照功能可以支援快閃記憶體創建(例如,秒級)和轉返,這可能對前端I/O操作僅具有有限或最小的影響。在一些實施例中,後端資料管理子系統330可以創建資料日誌檔和索引日誌檔的硬連結以避免資料複製。
在一些實施例中,當來自寫入請求的資料被儲存到資料日誌檔時,可以產生記錄以包括指示快照版本的快照標識(ID)。在一些實施例中,後端資料管理子系統330可以回應於接收到狀態快照請求而執行以下操作中的一個或多個:
(1)寫入與快照創建相對應的操作日誌(op log);
(2)將快照版本增加1;
(3)將所有新快照寫入請求寫入新記憶體增量索引映射中(重定向);
(4)與舊快照關聯的所有寫入請求完成後,將索引刷到當前索引日誌檔,對所有索引檔執行壓合,將索引檔合併為單個索引日誌檔,並將合併的單個索引日誌檔設定為密封狀態(資料日誌檔在壓合處理期間也被密封);
(5)基於新快照版本創建新索引檔;以及
(6)創建與快照相對應的目錄,並為與快照相關聯的資料日誌檔和索引日誌檔創建到該目錄的硬連結。
在一些實施例中,後端資料管理子系統330可以在後端上執行壓合以恢復被刪除的快照。
在一些實施例中,如果需要快照上傳,則可以維護快照的資料結構(例如具有1位元的點陣圖表示資料範圍)。例如,在創建快照時創建的索引日誌檔中,可以將與快照相對應的點陣圖設定為全0。在接收到寫入請求後,點陣圖可以更新為1,指示該快照版本中的資料被修改。
在一些實施例中,快照版本號可以對應於索引日誌檔,該快照版本號指示與索引日誌檔中的所有索引相對應的寫入請求。
驗證
在一些實施例中,後端資料管理子系統330可以對記錄在日誌檔中的資料執行CRC校驗。在一些實施例中,後端資料管理子系統330可以週期性地、不時地或根據請求執行CRC校驗。
在一些實施例中,當將由後端資料管理子系統330產生的索引檔導入到前端I/O子系統310的即時實例流中時,即時實例流的記憶體內索引映射可以比後端資料管理子系統330產生的索引檔更新,並且可以包括新資料區塊和舊資料區塊的位置資訊。在一些實施例中,即時實例流可以遍歷記憶體基本映射,替換相應的索引條目,然後產生沒有引用舊資料日誌檔的新索引日誌檔。然後,即時實例流可以安全地刪除舊資料日誌檔和索引日誌檔。
在一些實施例中,在日誌結構儲存框架(例如,日誌結構儲存系統300)中,流可以被用於作為處理I/O請求的處理引擎、元件、單元或模組來操作。每個流可以透過不同的配置適應不同的業務場景。在一些實施例中,流可以由與軟體耦接的一個或多個處理器來實現以執行諸如管理資料日誌檔、索引日誌檔、清單檔、請求佇列等的操作。在一些實施例中,即時流可以指代處理前端I/O子系統310的前端I/O操作的即時實例。在一些實施例中,可以存在由後端資料管理子系統330在後端管理由即時流寫入的資料的對應dredger流。
在一些實施例中,流可以包括管理介面,該管理介面允許針對不同類型的資料的例如快照、統計和故障恢復的不同操作的不同配置。例如,用於處理區塊資料、狀態資料和交易資料的流可以根據區塊資料、狀態資料和交易資料的各自的特性採用不同的配置。例如,可以將與區塊相對應的流配置為具有分層和/或壓縮功能,但不具有壓合、快照或表格功能。
在一些實施例中,可以透過對應自訂的或以其他方式配置的流來處理不同類型的資料。例如,可以透過與區塊相對應的流來處理寫入區塊的請求。
在一些實施例中,可以將多個流組合成束(bundle)以提供適合於分散式帳本系統和/或基於區塊鏈的中心化帳本系統的特定應用的靈活的實施方式。所描述的技術可以支援分散式帳本系統(例如,區塊鏈網路)和/或基於區塊鏈的中心化帳本系統中的服務。在一些實施例中,兩種系統可以具有根據兩種日誌結構儲存系統300的需要自訂的或以其他方式配置的不同的流。例如,分散式帳本系統可以具有四種資料:交易共識日誌、區塊、狀態和索引。因此,可以將四種流配置為分別處理四種資料。基於區塊鏈的中心化帳本系統可以具有三種資料:交易、區塊和索引,而沒有狀態(或複雜合約狀態)。因此,可以將三種流配置為分別處理三種資料。
在一些實施例中,每種流可以被分別配置為處理不同類型的資料。例如,區塊、交易共識日誌、索引不需要快照。因此,用於處理區塊、交易共識日誌和索引的流不需要配置快照功能。另一方面,狀態資料流程可以配置有快照功能。作為另一示例,索引資料相對較小,但是它需要良好的性能,並且不需要分層分級儲存。長期操作和大量區塊資料可能需要分層分級儲存、共用儲存和糾刪編碼。
在一些實施例中,分散式帳本系統和基於區塊鏈的中心化帳本系統可以對流具有不同的要求,以執行諸如分層、壓縮、糾刪編碼、狀態快照、壓合和資料驗證等操作。
表1提供了不同場景下的配置示例。如圖所示,“兩者”表示可以針對分散式帳本系統和基於區塊鏈的中心化帳本系統都執行對特定類型資料的操作。“DLS”表示可以只針對分散式帳本系統執行對特定類型資料的操作。“都不”表示可以針對分散式帳本系統和基於區塊鏈的中心化帳本系統都不執行對特定類型資料的操作。
Figure 02_image001
例如,如表1所示,可以針對分散式帳本系統和基於區塊鏈的中心化帳本系統執行對交易資料和/或區塊資料的分層操作。可以只針對分散式帳本系統執行對當前狀態資料和/或歷史狀態的分層操作。可以針對分散式帳本系統和基於區塊鏈的中心化帳本系統都不執行對交易資料的快照操作。
在一些實施例中,日誌結構儲存系統採用基於每個執行緒一個迴圈一個佇列和併發的多執行緒全非同步機制,從而提供了高效的非同步模式和便捷的併發同步程式設計模式。在一些實施例中,不同的流可以並行處理不同類型的資料。例如,為區塊資料配置的流可以將區塊資料寫入被分配以儲存區塊資料的資料日誌檔中,而為交易資料配置的流可以從包括交易資料的資料日誌檔中讀取特定請求交易資料。
圖5是示出根據本文實施例的用於執行日誌結構儲存系統的寫入操作的處理500的流程圖。在一些實施例中,處理500的一些或全部操作可以是由前端I/O子系統(例如,圖3的前端I/O子系統310)執行的寫入程式的示例。為了方便,處理500將被描述為由圖3的前端I/O子系統310系統執行。然而,處理500可以由位於一個或多個位置的一個或多個電腦的系統執行,並且根據本文被適當地程式設計。例如,適當程式設計的資料處理和儲存系統(例如,圖3的日誌結構儲存系統300)可以執行處理500。
在502,在資料儲存系統(例如,日誌結構儲存系統300)中維護資料日誌檔(例如,資料日誌檔390、362、364、366、372、374或376)。在一些實施例中,資料日誌檔可以儲存包括交易資料、區塊資料、狀態資料和自描述元資料的資料。例如,資料日誌檔可以儲存由區塊鏈網路產生的區塊鏈資料,包括區塊資料、交易資料和/或狀態資料。在一些實施例中,資料日誌檔中的元資料可以包括描述資料區塊的元資料,諸如交易雜湊值和序列值、區塊雜湊值和區塊號、快照版本號、迴圈冗餘校驗(CRC)碼、加密資訊等。在一些實施例中,一個資料日誌檔儲存單一類型的區塊鏈資料,因此多種區塊鏈資料不混合在單個資料檔案中。例如,資料儲存系統可以維護用於交易資料的資料日誌檔、用於區塊資料的資料日誌檔和用於狀態資料的資料日誌檔中的一個或多個。在一些實施例中,資料日誌檔可以是僅追加檔。在一些實施例中,資料日誌檔不儲存索引資訊。在一些實施例中,資料日誌檔可以被儲存在多層儲存子系統(例如,多層儲存子系統320)中。
在504,資料儲存系統的前端I/O子系統(例如,前端I/O子系統310)接收用於將資料寫入資料儲存系統的寫入請求。在一些實施例中,前端I/O子系統310可以處理寫入操作,包括對儲存在日誌結構儲存系統300上的資料的修改。在一些實施例中,對資料的修改由前端I/O子系統310處理,從而不覆蓋原始資料。取而代之的,可以透過以日誌形式向資料日誌檔添加或追加資料來處理修改。
在506,前端I/O子系統310將資料追加到資料日誌檔。在一些實施例中,可以基於資料寫入或追加操作來持續更新資料日誌檔。在一些實施例中,資料日誌檔可以具有在512MB和2GB之間的可配置的最大長度,或者取決於儲存系統的需求或應用的其他大小。
在508,前端I/O子系統310確定是否滿足用於產生新資料日誌檔的條件。在一些實施例中,前端I/O子系統310可以確定資料日誌檔是否已經達到預定的最大長度或大小。如果確定資料日誌檔已經達到預定的最大長度或大小,則前端I/O子系統310可以確定滿足了用於產生新資料日誌檔的條件。如果確定滿足了用於產生新資料日誌檔的條件,則處理進行到步驟510。如果確定沒有滿足用於產生新資料日誌檔的條件,則處理返回到步驟504。
在510,如果確定滿足了用於產生新資料日誌檔的條件,則前端I/O子系統310密封資料日誌檔。在一些實施例中,如果確定滿足了用於產生新資料日誌檔的條件(例如,資料日誌檔已達到最大長度或大小),則前端I/O子系統310可以將資料日誌檔設定為密封的、不可變的或唯讀狀態。
在512,前端I/O子系統310產生新資料日誌檔。在一些實施例中,新資料日誌檔也可以是僅追加的,並儲存在多層儲存子系統320中。
在一些實施例中,前端I/O子系統310可以確定在寫入請求中被請求寫入的資料的類型(例如,交易資料、區塊資料、狀態資料)。回應於該確定,前端I/O子系統310將資料追加到與資料的類型相對應的資料日誌檔中。在一些實施例中,前端I/O子系統310可以使用與資料類型相對應的相應處理引擎來執行處理500中的一些或全部。
例如,回應於確定資料是交易資料,前端I/O子系統310使用針對處理交易資料指定的處理引擎,以將該資料追加到用於交易資料的資料日誌檔中。在一些實施例中,回應於確定資料是區塊資料,前端I/O子系統310使用針對處理區塊資料指定的處理引擎,以將該資料追加到用於區塊資料的資料日誌檔中。在一些實施例中,回應於確定資料是狀態資料,前端I/O子系統310使用針對處理狀態資料指定的處理引擎,以將該資料追加到用於狀態資料的資料日誌檔中。
圖6是示出根據本文實施例的用於產生與日誌結構儲存系統的寫入操作有關的索引的處理600的流程圖。在一些實施例中,處理600的一些或全部操作可以是由前端I/O子系統(例如,圖3的前端I/O子系統310)執行的寫入程式的示例。為了方便,處理600將被描述為由圖3的前端I/O子系統310執行。然而,處理600可以由位於一個或多個位置的一個或多個電腦的系統執行,並且根據本文被適當地程式設計。例如,適當程式設計的資料處理和儲存系統(例如,圖3的日誌結構儲存系統300)可以執行處理600。
在602,成功將資料寫入儲存系統(例如,日誌結構儲存系統300)。在一些實施例中,資料儲存系統的前端I/O子系統(例如,前端I/O子系統310)可以將資料區塊寫入儲存在資料儲存系統的多層儲存子系統(例如,多層儲存子系統320)的資料日誌檔中。
在604,前端I/O子系統310產生指示資料在日誌結構儲存系統300中的實體儲存位置的索引。在一些實施例中,索引資料可以包括:指示從區塊雜湊值到區塊號的對應關係的索引、指示從區塊雜湊值到儲存位置的對應關係的索引、指示從交易雜湊值到交易的對應關係的索引、和指示從收據雜湊值到收據的對應關係的索引。在一些實施例中,用於基於區塊鏈的中心化帳本系統的索引資料可以包括指示從序列到交易儲存位置的對應關係的索引或指示從時序到交易雜湊值的對應關係的索引。
在606,前端I/O子系統將索引保存到前端I/O子系統310的記憶體(例如,記憶體315)中的增量索引映射(例如,增量索引映射312)中。在一些實施例中,前端I/O子系統310可以包括儲存在記憶體315中的多個記憶體內索引映射。在一些實施例中,記憶體內索引映射可以分為唯讀基本索引映射316和讀寫增量索引映射312。在一些實施例中,基本索引映射316可以儲存冷資料(例如,舊資料和/或較不頻繁被存取的資料)的索引,而增量索引映射312可以儲存新寫入的資料的索引。
在608,前端I/O子系統310確定是否發生觸發事件。觸發事件可以包括導致密封當前增量索引映射並產生新增量索引映射的一個或多個事件。觸發事件可包括,例如,當前增量索引映射的大小達到閾值、記憶體315的儲存使用率達到閾值、或指定的時間到來(例如,日誌結構儲存系統300可以定期密封增量索引映射)。如果確定觸發事件發生,則處理進行到步驟610。如果確定觸發事件未發生,則處理返回到步驟602。
在610,如果確定觸發事件發生,則前端I/O子系統310將增量索引映射312設定為不可變的。在一些實施例中,前端I/O子系統可以將記憶體315中的增量索引映射312設定為不可變索引映射314,將它們刷到索引日誌檔(例如,索引日誌檔380),並創建新增量索引映射312以接收根據新寫入請求產生的索引。
在612,在儲存系統300中維護索引日誌檔380。在一些實施例中,可以將新寫入的交易資料和區塊資料的索引添加到索引映射312和316以及索引日誌檔390,但是可以不修改現有交易資料和區塊資料的索引。在一些實施例中,索引日誌檔390可以與資料日誌檔一起儲存在多層儲存子系統320中。
在614,前端I/O子系統310例如將增量索引映射312刷到索引日誌檔380中,以釋放增量索引映射312所使用的記憶體。在一些實施例中,前端I/O子系統310可以創建新增量索引映射312以接收根據新請求產生的索引。在一些實施例中,前端I/O子系統310可以組合增量索引映射312和基本索引映射316,並產生新基本索引映射316,並將產生的基本索引映射316刷到索引日誌檔380。
在一些實施例中,在616,前端I/O子系統310將熱資料的索引保存在記憶體快取(例如,記憶體快取313)中。例如,如果將特定資料確定為具有頻繁被存取可能性的熱資料,則可以將資料的索引保存到記憶體快取中以提高讀取速度。
在618,前端I/O子系統310確定是否滿足用於產生新的索引日誌檔380的條件。在一些實施例中,用於產生新索引日誌檔的條件可以包括索引日誌檔380的最大長度或大小。在一些實施例中,用於產生新索引日誌檔380的條件可以包括由前端I/O子系統執行的寫入操作的批次數。例如,在一些實施例中,可以透過批量處理寫入操作的索引來更新索引日誌檔380。在一些實施例中,當已經針對特定批次數的寫入操作更新了索引日誌檔380時,可以將索引日誌檔380密封或設定為唯讀,並且可以創建新的索引日誌檔380以寫入新資料。如果確定滿足了用於產生新的索引日誌檔380的條件,則處理進行到步驟620。
在620,如果確定滿足了用於產生新的索引日誌檔380的條件,則前端I/O子系統310密封索引日誌檔。例如,當索引日誌檔380已經達到最大長度或大小,或者已經針對特定批次數的寫入操作進行了更新時,可以將索引日誌檔380密封或設定為唯讀。
在622,前端I/O子系統310在密封舊索引日誌檔380之後,產生新的索引日誌檔380,以儲存後續的索引資料。
圖7是示出了根據本文實施例的用於執行日誌結構儲存系統的讀取操作的處理700的流程圖。在一些實施例中,處理700的一些或全部操作可以是由前端I/O子系統(例如,圖3的前端I/O子系統310)執行的讀取程式的示例。為了方便,處理700將被描述為由前端I/O子系統310執行。然而,處理700可以由位於一個或多個位置的一個或多個電腦的系統執行,並且根據本文被適當地程式設計。例如,適當程式設計的資料處理和儲存系統(例如,圖3的日誌結構儲存系統300)可以執行處理700。
在702處,儲存系統(例如,日誌結構儲存系統300)的前端I/O子系統(例如,前端I/O子系統310)接收用於從儲存系統讀取資料的讀取請求。
在704,前端I/O子系統310在前端I/O子系統310的記憶體(例如,記憶體315)中的增量索引映射(例如,增量索引映射312)中搜尋與資料相對應的索引。在一些實施例中,與資料相對應的索引可以包括資料的實體位置資訊。在一些實施例中,前端I/O子系統310的記憶體315可以儲存包括唯讀基本索引映射316和讀寫增量索引映射312的多個記憶體內索引映射。
在706,前端I/O子系統310確定是否在增量索引映射312中找到了與資料相對應的索引。如果在增量索引映射312中找到了與資料相對應的索引,則處理進行到步驟708,其中,前端I/O子系統310可以基於由索引指示的實體位置來定位資料。如果在增量索引映射312中未找到與資料相對應的索引,則處理進行到步驟710。
在710,如果確定在增量索引映射312中未找到與資料相對應的索引,則前端I/O子系統310在記憶體315中的基本索引映射316中搜尋與資料相對應的索引。
在712,前端I/O子系統310確定是否在基本索引映射316中找到了與資料相對應的索引。如果確定在基本索引映射316中找到了與資料相對應的索引,則處理進行到步驟714,其中,前端I/O子系統310可以基於由索引指示的實體位置資訊來定位資料。如果在基本索引映射316中未找到與資料相對應的索引,則處理進行到步驟716。
在716,如果確定在基本索引映射316中未找到與資料相對應的索引,則前端I/O子系統310在磁片儲存設備中的索引日誌檔(例如,索引日誌檔380)中搜尋與資料相對應的索引。例如,前端I/O子系統310可以在儲存在儲存系統300的多層儲存子系統(例如,多層儲存子系統320)中的索引日誌檔380中搜尋與資料相對應的索引。
在一些實施例中,前端I/O子系統310可以確定在讀取請求中被請求讀取的資料的類型(例如,交易資料、區塊資料、狀態資料)。回應於該確定,前端I/O子系統310可以使用與資料類型相對應的相應處理引擎來執行處理700中的一些或全部。
圖8是示出根據本文實施例的用於改善日誌結構儲存系統的讀取操作的處理800的流程圖。在一些實施例中,處理800的一些或全部操作可以是由日誌結構儲存系統(例如,圖3的日誌結構儲存系統300)執行的I/O操作的示例。為了方便,處理800將被描述為由日誌結構儲存系統300執行。然而,處理800可以由位於一個或多個位置的一個或多個電腦的系統執行,並且根據本文被適當地程式設計。例如,適當程式設計的資料處理和儲存系統可以執行處理800。
在802,儲存系統(例如,日誌結構儲存系統300或分層儲存系統400)維護多層儲存設備(例如,多層儲存子系統320的儲存設備350、360和370)和一層或多層快取(例如,記憶體快取313和區塊快取317)。在一些實施例中,多層儲存設備是按基於一個或多個性能特性(例如,存取速度、存取頻寬或存取延遲)的分層結構分層的。例如,多層儲存設備可以包括具有不同存取速度並儲存具有不同特性的資料的多個儲存設備。例如,第一層儲存設備可以儲存比第二層儲存設備中儲存的區塊鏈資料更頻繁被存取的區塊鏈資料。
在804,例如前端I/O子系統(例如,前端I/O子系統310)或後端資料管理系統(例如,儲存系統300的後端資料管理子系統330)確定儲存在較低層儲存設備(例如,儲存設備350、360和370)中的資料日誌檔(例如,資料日誌檔362、364、366、372、374、376、390)中的資料物件是活躍資料物件。在一些實施例中,資料物件可以包括交易資料、區塊資料和狀態資料。在一些實施例中,例如,如果資料物件最近已經被存取一定次數(例如,在預定時間窗內被存取一定次數)或者如果資料物件已經被識別為具有特定優先順序,則可以基於一個或多個活躍性或熱度策略將資料物件確定為活躍資料物件。
在806,將資料物件寫入快取(例如,記憶體快取313和區塊快取317)。例如,前端I/O子系統310可以將資料物件寫入高速儲存媒體的記憶體快取313或磁片區塊快取317中。
在808,產生指示資料物件在快取中的實體儲存位置的索引。在一些實施例中,可以使用LSM方法來組織記憶體315中的索引資料。
在810,可以將索引保存到記憶體315中的增量索引映射(例如,增量索引映射312)。在一些實施例中,記憶體315可以維護多個記憶體內索引映射,包括唯讀基本索引映射316和讀寫增量索引映射312。在一些實施例中,增量索引映射312可以被配置為儲存比儲存在基本索引映射316中的索引更頻繁被存取和/或更新的資料的索引。
在812,前端I/O子系統310接收針對資料物件的讀取請求。
在814,前端I/O子系統310在記憶體315中的增量索引映射312中搜尋與資料物件相對應的索引。在一些實施例中,前端I/O子系統310可以首先搜尋增量索引映射312。如果在增量索引映射312中未找到索引,則前端I/O子系統310可以隨後在基本索引映射316中搜尋與資料相對應的索引。
在816,前端I/O子系統310從快取返回資料物件,與需要從下一快取級、主記憶體或多層儲存子系統320的儲存設備的較低層獲取所請求的資料物件的情況相比,這可以提供對所請求的資料物件的更快存取。例如,如果前端I/O子系統310成功地識別出與增量索引映射312或基本索引映射316中的資料相對應的索引,則前端I/O子系統310可以使用該索引來識別資料在快取中的實體位置,並從快取中檢索資料。
在一些實施例中,前端I/O子系統310可以確定在讀取請求中被請求讀取的資料的類型(例如,交易資料、區塊資料、狀態資料)。回應於該確定,前端I/O子系統310可以使用與資料類型相對應的相應處理引擎來執行處理800中的一些或全部。
圖9是示出根據本文實施例的用於管理儲存在日誌結構儲存系統中的資料日誌檔的處理900的流程圖。在一些實施例中,處理900的一些或全部操作可以是由日誌結構儲存系統的後端資料管理系統(例如,圖3的日誌結構儲存系統300的後端資料管理子系統330)執行的重寫放置程式的示例。為了方便,處理900將被描述為由後端資料管理子系統330執行。然而,處理900可以由位於一個或多個位置的一個或多個電腦的系統執行,並且根據本文被適當地程式設計。例如,適當程式設計的資料處理和儲存系統(例如,圖3的日誌結構儲存系統300)可以執行處理900。
在902,後端資料管理系統(例如,後端資料管理子系統330)根據索引日誌檔(例如,索引日誌檔380)確定儲存在儲存設備(例如,儲存設備350、360和370)中的資料日誌檔(例如,資料日誌檔390、362、364、366、372、374和376)的資訊。在一些實施例中,儲存設備中的資料日誌檔的資訊可以包括資料日誌檔的活躍性(例如,存取頻率)、大小、垃圾率或碎片水準中的一個或多個。
在904,後端資料管理系統330確定儲存設備的資訊。在一些實施例中,儲存設備的資訊可以包括儲存設備的使用率、垃圾率、碎片水準或輸入/輸出(I/O)請求中的一個或多個。
在906,後端資料管理系統330確定資料日誌檔是否需要重寫放置。在一些實施例中,後端資料管理子系統330可以基於儲存在儲存設備中的資料日誌檔的資訊和/或儲存設備的資訊來確定重寫放置。在一些實施例中,重寫放置可以包括分層、壓縮、糾刪編碼、狀態快照、壓合或驗證中的至少一個。如果確定資料日誌檔需要重寫放置,則處理進行到步驟908。如果確定資料日誌檔不需要重寫放置,則處理返回到步驟902。
在908,後端資料管理系統330從源位置讀取資料日誌檔,並且如果確定資料日誌檔需要重寫放置,則將資料日誌檔重寫到目標位置。
在910,後端資料管理系統330將資料日誌檔密封在目標位置中。例如,後端資料管理系統330可以在重寫放置完成之後將資料日誌檔設定為密封狀態或唯讀。
在912,後端資料管理系統330產生與目標位置中的資料日誌檔相對應的目標索引日誌檔。在一些實施例中,目標索引日誌檔可以包括可被安全刪除的資料日誌檔的清單,和/或目標索引日誌檔所引用的資料日誌檔的清單。
在914,後端資料管理系統330密封目標索引日誌檔。例如,後端資料管理系統330可以將目標索引日誌檔設定為不可變的或唯讀的。
在916,將目標索引日誌檔導入到記憶體中的可讀索引映射中。例如,可以將目標索引日誌檔導入到增量索引映射或基本索引映射,使得可以定址或讀取目標位置中的資料日誌檔。
圖10是示出根據本文實施例的用於在日誌結構儲存系統中執行資料遷移的處理1000的流程圖。在一些實施例中,處理1000的一些或全部操作可以是由日誌結構儲存系統的後端資料管理系統(例如,圖3的日誌結構儲存系統300的後端資料管理子系統330)執行的分層/遷移程式的示例。為了方便,處理1000將被描述為由後端資料管理子系統330執行。然而,處理1000可以由位於一個或多個位置的一個或多個電腦的系統執行,並且根據本文被適當地程式設計。例如,適當程式設計的資料處理和儲存系統(例如,圖3的日誌結構儲存系統300)可以執行處理1000。
在1002,後端資料管理系統(例如,後端資料管理子系統330)識別資料日誌檔(例如,資料日誌檔390、362、364、366、372、374和376)的一個或多個特性和儲存設備(例如,儲存設備350、360和370)的一個或多個特性。在一些實施例中,資料日誌檔的一個或多個特性可以包括資料日誌檔的資料類型(例如,區塊資料、狀態資料和交易資料)、創建時間、資料大小、活躍性、垃圾率或碎片水準等。在一些實施例中,儲存設備的一個或多個特性可以包括儲存設備的存取速度、存取頻寬、存取延遲、使用率、垃圾率、碎片水準或輸入/輸出(I/O)請求。
在1004,後端資料管理系統330基於所述特性確定資料日誌檔的遷移度量。在一些實施例中,後端資料管理系統330可以將得分分配給資料日誌檔,並根據得分排名和預定的遷移策略來產生遷移任務。在一些實施例中,可以根據評分公式對資料日誌檔進行打分或分配得分,該評分公式考慮了媒介水準、存取頻率、原始資料創建時間和遷移成本等。
在1006,後端資料管理系統330確定是否遷移資料日誌檔。例如,可以根據預定的評分方案對資料日誌檔進行評分。如果資料日誌檔的得分超過預定閾值,則後端資料管理系統330可以確定需要遷移資料日誌檔。如果確定需要遷移資料日誌檔,則處理進行到步驟1008。如果確定不需要遷移資料日誌檔,則處理返回到步驟1002。
在1008,如果確定需要遷移資料日誌檔,則後端資料管理系統330將資料日誌檔從源位置遷移到目標儲存設備。在一些實施例中,可以根據預定的評分方案對高速儲存設備中的資料日誌檔進行打分,並基於得分將其遷移到低速儲存設備(例如,在對資料日誌檔的得分進行排序或排名之後),以釋放儲存空間。在一些實施例中,低速儲存設備中儲存的資料日誌檔中的熱資料可以首先保存在磁片快取中,如果資料日誌檔的得分達到預定閾值,則可以將其遷移到高速儲存設備中。
圖11是示出根據本文實施例的用於在日誌結構儲存系統中執行資料流程控制的處理1100的流程圖。在一些實施例中,處理1100的一些或全部操作可以是由日誌結構儲存系統(例如,圖3的日誌結構儲存系統300)執行的流控制/優化程式的示例。為了方便,處理1100將被描述為由日誌結構儲存系統執行。然而,處理1100可以由位於一個或多個位置的一個或多個電腦的系統執行,並且根據本文被適當地程式設計。例如,適當程式設計的資料處理和儲存系統可以執行處理1100。
在1102,儲存系統(例如,日誌結構儲存系統300)維護多層儲存設備(例如,儲存設備350、360和370)。在一些實施例中,多層儲存設備是按基於一個或多個性能特性(例如,存取速度、存取頻寬或存取延遲)的分層結構來分層的。例如,多層儲存設備可以包括具有不同存取速度的多個儲存設備,並且可以儲存具有對應特性的資料(例如,第一層儲存設備可以儲存比儲存在第二層儲存設備中的區塊鏈資料更頻繁被存取的區塊鏈資料)。
在一些實施例中,日誌結構儲存系統300可以將流控制策略分配給多層儲存設備。例如,日誌結構儲存系統300可以基於第一層儲存設備和第二層儲存設備的一個或多個特性(例如,存取速度、存取頻寬、存取延遲、使用率、垃圾率、碎片水準),將第一流控制策略分配給第一層儲存設備,將第二流控制策略分配給第二層儲存設備。在一些實施例中,第一流控制策略可以包括以下一項或多項:將資料寫入第一層儲存設備的第一速度,或用於調整將資料寫入第一層儲存設備的第一速度的一個或多個第一閾值,並且第二流控制策略可以包括以下一項或多項:將資料寫入第一層儲存設備的第二速度,或用於調整將資料寫入第二層儲存設備的第二速度的一個或多個第二閾值。
在1104,日誌結構儲存系統300接收針對帳本資料的寫入請求。在一些實施例中,帳本資料可以包括例如交易資料、區塊資料和狀態資料等的區塊鏈資料。
在1106,日誌結構儲存系統300識別帳本資料的類型。例如,後端資料管理子系統330可以確定帳本資料是交易資料、區塊資料還是狀態資料。在1108,日誌結構儲存系統300確定帳本資料是否是區塊資料。在一些實施例中,區塊資料具有比其他類型的區塊鏈資料(例如,交易資料、狀態資料或索引資料)更大的大小,並且可能對日誌結構儲存系統300的I/O操作的吞吐量具有更大的影響。如果確定帳本資料是區塊資料,則處理進行到步驟1110,其中後端資料管理子系統330將資料直接寫入第二層儲存設備(例如,儲存設備360),並跳過第一層儲存設備,例如,以節省之後執行遷移的成本。在一些實施例中,第二層儲存設備位於比第一層儲存設備低的層。例如,第二層儲存設備的存取速度可以比第一層儲存設備的存取速度更低。在一些實施例中,第二層儲存設備的成本可以比第一層儲存設備的成本更低。在一些實施例中,第二層儲存設備的儲存空間可以比第一層儲存設備的儲存空間更大。如果確定帳本資料不是區塊資料,則處理進行到步驟1112。
在1112,如果確定帳本資料不是區塊資料,則日誌結構儲存系統300確定第一層儲存設備的使用率。
在1114,日誌結構儲存系統300確定使用率是否達到或超過預定閾值。在一些實施例中,預定閾值用於確定第一層儲存設備是否基本上已滿。例如,如果確定使用率達到或超過閾值(例如,85%),則日誌結構儲存系統300可以確定第一層儲存設備基本上已滿。如果確定使用率達到或超過預定閾值,則處理進行到步驟1116,在步驟1116,將資料寫入第二層儲存設備。如果確定使用率低於預定閾值,則處理進行到步驟1118。
在1118,日誌結構儲存系統300在確定使用率低於預定閾值的情況下,將資料寫入第一層儲存設備。
在一些實施例中,日誌結構儲存系統300可以基於第一層儲存設備的使用率來調整將資料寫入第一層儲存設備的速度。例如,如果確定第一層儲存設備的使用率達到或超過第一預定閾值(例如65%),則日誌結構儲存系統300可以降低將資料寫入第一層儲存設備的速度。在一些實施例中,日誌結構儲存系統300可以基於第一層儲存設備的使用率來降低將資料寫入第一層儲存設備的速度。在一些實施例中,日誌結構儲存系統300可以隨著第一層儲存設備的使用率的增加來持續降低將資料寫入第一層儲存設備的速度。例如,當第一層儲存設備的使用率是第一值(例如,70%)時,日誌結構儲存系統300可以將資料寫入第一層儲存設備中的速度降低到第一速率(例如,500MB/s),以及當第一層儲存設備的使用率為比第一值大的第二值(例如,75%)時,將資料寫入第一層儲存設備的速度降低到低於第一速率的第二速率(例如400MB/s)。
在一些實施例中,如果確定第一層儲存設備的使用率低於第二預定閾值(例如,35%),則日誌結構儲存系統300可以提高將資料寫入第一層儲存設備的速度。在一些實施例中,日誌結構儲存系統300可以基於第一層儲存設備的使用率來提高將資料寫入第一層儲存設備的速度。在一些實施例中,日誌結構儲存系統300可以隨著第一層儲存設備的使用率的降低來持續提高將資料寫入第一層儲存設備的速度。例如,當第一層儲存設備的使用率是第三值(例如,30%)時,日誌結構儲存系統300可以將資料寫入第一層儲存設備中的速度提高到第三速率(例如,550MB/s),以及當第一層儲存設備的使用率為比第三值小的第四值(例如,20%)時,將資料寫入第一層儲存設備的速度提高到高於第三速率的第四速率(例如600MB/s)。
圖12是示出可根據本文實施例執行的處理1200的流程圖。為了方便,處理1200將被描述為由圖3的日誌結構儲存系統300執行。然而,處理1200可以由位於一個或多個位置的一個或多個電腦的系統執行,並且根據本文被適當地程式設計。例如,適當程式設計的資料處理和儲存系統可以執行處理1200。
在1202,儲存系統(例如,日誌結構儲存系統300)接收多個處理引擎的配置。在一些實施例中,所述配置可以根據例如表1的分散式帳本系統的多種資料類型中的每種資料類型的特性,配置用於處理這種資料類型的相應的處理引擎類型。在一些實施例中,儲存系統300可以包括被指定用於處理區塊資料的處理引擎類型;被指定用於處理交易資料的處理引擎類型;被指定用於處理狀態資料的處理引擎類型;被指定用於處理索引資料的處理引擎類型。
在一些實施例中,狀態資料可以包括當前狀態資料和歷史狀態資料,並且儲存系統300可以包括被指定用於處理當前狀態資料的處理引擎類型和被指定用於處理歷史狀態資料的處理引擎類型。
在1204,儲存系統300接收針對分散式帳本系統的資料的處理請求。在一些實施例中,分散式帳本系統的資料類型可以包括區塊資料、交易資料、狀態資料和索引資料。
在一些實施例中,儲存系統300可以接收針對分散式帳本系統的資料的I/O請求。在一些實施例中,被指定用於處理分散式帳本系統的一種資料類型的相應的處理引擎類型可以包括被指定用於對分散式帳本系統的一種資料類型執行讀取或寫入操作的相應的I/O處理引擎類型。
在一些實施例中,儲存系統300可以接收針對分散式帳本系統的資料的資料管理請求。在一些實施例中,被指定用於處理一種資料類型的相應的處理引擎類型可以包括被指定用於對儲存系統中的一種資料類型執行資料管理操作的相應的資料管理處理引擎類型。在一些實施例中,管理操作包括分層、壓合、壓縮、糾刪編碼或快照中的一個或多個。
在1206,儲存系統300確定資料屬於分散式帳本系統的多種資料類型中的一種資料類型。在一些實施例中,所述一種資料類型可以是區塊資料或交易資料。在一些實施例中,所述一種資料類型可以是狀態資料。
在1208,儲存系統300應用被指定用於處理所述一種資料類型的處理引擎類型。在一些實施例中,被指定用於處理所述一種資料類型的所述處理引擎類型可以被配置為具有包括對儲存系統300中的區塊資料或交易資料進行分層、糾刪編碼和壓縮的功能。在一些實施例中,被指定用於處理所述一種資料類型的處理引擎類型可以被配置為具有包括對儲存系統300中的狀態資料進行快照和壓縮的功能。
圖13是示出可根據本文實施例執行的處理1300的流程圖。為了方便,處理1300將被描述為由圖3的日誌結構儲存系統300執行。然而,處理1300可以由位於一個或多個位置的一個或多個電腦的系統執行,並且根據本文被適當地程式設計。例如,適當程式設計的資料處理和儲存系統可以執行處理1300。
在1302,儲存系統(例如,日誌結構儲存系統300)接收多個處理引擎的配置。在一些實施例中,所述配置可以根據例如表1的基於區塊鏈的中心化帳本系統的多種資料類型中的每種資料類型的特性,配置用於處理這種資料類型的相應的處理引擎類型。
在一些實施例中,儲存系統300可以包括被指定用於處理區塊資料的處理引擎類型;被指定用於處理交易資料的處理引擎類型;被指定用於處理索引資料的處理引擎類型。
在1304,儲存系統300接收針對基於區塊鏈的中心化帳本系統的資料的處理請求。在一些實施例中,基於區塊鏈的中心化帳本系統的資料類型可以包括區塊資料、交易資料和索引資料。
在一些實施例中,儲存系統300可以接收針對基於區塊鏈的中心化帳本系統的資料的I/O請求。在一些實施例中,被指定用於處理基於區塊鏈的中心化帳本系統的一種資料類型的相應的處理引擎類型可以包括被指定用於對基於區塊鏈的中心化帳本系統的所述一種資料類型執行讀取或寫入操作的相應的I/O處理引擎類型。例如,根據處理500、600、700、1100和1400的部分或全部操作,對基於區塊鏈的中心化帳本系統的資料進行分析。
在一些實施例中,儲存系統300可以接收針對基於區塊鏈的中心化帳本系統的資料的資料管理請求。在一些實施例中,被指定用於處理所述一種資料類型的相應的處理引擎類型可以包括被指定用於對儲存系統中的所述一種資料類型執行資料管理操作的相應的資料管理處理引擎類型。在一些實施例中,管理操作可以包括分層、壓合、壓縮、糾刪編碼或快照中的一個或多個。
在1306,儲存系統300確定所述資料屬於基於區塊鏈的中心化帳本系統的資料類型中的一種資料類型。在一些實施例中,所述一種資料類型可以是區塊資料或交易資料。
在1308,儲存系統300根據一種資料類型的特性應用被指定用於處理所述一種資料類型的處理引擎類型。在一些實施例中,被指定用於處理所述一種資料類型的處理引擎類型可以被配置為具有包括對儲存系統中的區塊資料或交易資料進行分層、糾刪編碼和壓縮的功能。在一些實施例中,儲存系統300根據處理800、900、1000和1400的一些或全部操作來應用被指定用於處理所述一種資料類型的處理引擎類型。
圖14是示出可根據本文實施例執行的處理1400的流程圖。為了方便,處理1400將被描述為由圖3的日誌結構儲存系統300執行。然而,處理1400可以由位於一個或多個位置的一個或多個電腦的系統執行,並且根據本文被適當地程式設計。例如,適當程式設計的資料處理和儲存系統可以執行處理1400。
在1402,儲存系統(例如,日誌結構儲存系統300)接收用於在儲存系統中儲存相應的多個區塊鏈資料的多個寫入請求。在一些實施例中,多個區塊鏈資料中的每個可以包括區塊、交易或區塊鏈網路的狀態中的一個或多個的值以及與該值相對應的鍵。在一些實施例中,鍵可以包括與該值相對應的雜湊值。
在1404,儲存系統300根據多個區塊鏈資料的時間順序將多個區塊鏈資料追加到資料日誌檔(例如,資料日誌檔390、362、364、366、372、374和376)。例如,之後接收到的區塊鏈資料將被追加到已儲存在資料日誌檔中的先前接收到的資料中。在一些實施例中,資料日誌檔可以是僅追加檔。在一些實施例中,資料日誌檔可以儲存在日誌結構儲存系統300的包括多層儲存設備的多層儲存子系統(例如,多層儲存子系統320)中的第一層儲存設備(例如,儲存設備350)中,並且第一層儲存設備的存取速度在多層儲存設備中最高。
在1406,日誌結構儲存系統300被限制根據任何其他度量,例如根據多個區塊鏈資料中的值的對應鍵(例如,在KVP中)對資料日誌檔中的多個區塊鏈資料進行排序。在一些實施例中,不同於現有儲存系統將根據多個區塊鏈資料中的值的對應鍵對資料日誌檔中的多個區塊鏈資料進行重新排列,日誌結構儲存系統300的資料日誌檔中的多個區塊鏈資料是根據日誌結構儲存系統300產生或接收到所述多個區塊鏈資料的時間來排列的。在1408,日誌結構儲存系統300例如根據處理600的相應操作產生指示資料日誌檔中的多個區塊鏈資料的對應實體儲存位置的索引。
在1410,日誌結構儲存系統300例如根據處理600的相應操作將索引寫入第一層儲存設備中。
在1412,日誌結構儲存系統300例如根據處理1000的相應操作,確定多個區塊鏈資料的對應遷移優先順序、得分或度量。在一些實施例中,日誌結構儲存系統300根據多個區塊鏈資料的時間順序確定對應的遷移優先順序。在一些實施例中,較舊的區塊鏈資料的遷移優先順序可以高於較新區塊鏈資料的遷移優先順序。
在1414,日誌結構儲存系統300根據對應的遷移優先順序將儲存在第一層儲存設備中的多個區塊鏈資料遷移到第二層儲存設備(例如,儲存設備360)中。在一些實施例中,第二層儲存設備的存取速度可以比第一層儲存設備的存取速度更低。
圖15描繪了根據本文的實施例的裝置1500的模組的示例。裝置1500可以是儲存系統(例如,圖3的日誌結構儲存系統300)的實施例的示例。裝置1500可以對應於上述實施例,裝置1500包括:寫入模組1502,用於將區塊鏈資料寫入資料日誌檔,其中,資料日誌檔是儲存在多層儲存設備中的一層儲存設備內的僅追加檔,其中,區塊鏈資料包括區塊鏈網路產生的區塊資料、交易資料或狀態資料中的一個或多個;以及管理模組1504,用於管理儲存在多層儲存設備中的該層儲存設備內的資料日誌檔。
在可選實施例中,多層儲存設備包括具有不同存取速度的多層儲存設備。裝置1500還包括1506,用於將儲存在多層儲存設備中的一層儲存設備內的資料日誌檔遷移至多層儲存設備中的另一層儲存設備。
在可選實施例中,多層儲存設備包括:雲碟、網路附加儲存(NAS)設備或物件儲存服務(OSS)設備中的一個或多個。
在可選實施例中,管理模組1504執行包括以下的操作中的一個或多個:分層、壓合、壓縮、糾錯編碼或快照。
在可選實施例中,裝置1500還包括產生子模組,用於產生指示資料日誌檔儲存在多層儲存設備中的該層儲存設備內的實體位置的索引。
在可選實施例中索引被儲存在索引日誌檔中,該索引日誌檔被儲存在多層儲存設備中存取速度最高的一層儲存設備中。
在可選實施例中,管理模組1504獨立於寫入模組1502執行的寫入操作執行對資料日誌檔的管理操作。
在可選實施例中,裝置1500由區塊鏈網路的每個共識節點實現。
在可選實施例中,裝置1500被連接至區塊鏈網路的用戶端節點構建的分散式儲存系統。
在先前實施中示出的系統、裝置、模組或單元可以透過使用電腦晶片或實體來實現,或者可以透過使用具有特定功能的產品來實現。典型的實施設備是電腦,電腦可以是個人電腦、膝上型電腦、蜂窩電話、相機電話、智慧型電話、個人數位助理、媒體播放機、導航設備、電子郵件接收和發送設備、遊戲控制台、平板電腦、可穿戴設備或這些設備的任意組合。
對於裝置中各個單元的功能和角色的實施過程,可以參考前一方法中相應步驟的實施過程。為簡單起見,這裡省略了細節。
由於裝置實施例基本上與方法實施例相對應,因此對於相關部分,可以參考方法實施例中的相關描述。前述裝置實施例僅僅是示例。被描述為單獨部分的模組可以或可以不是實體上分離的,並且顯示為模組的部分可以是或可以不是實體模組,可以位於一個位置,或者可以分佈在多個網路模組上。可以基於實際需求來選擇一些或所有模組,以實現本文方案的目標。本發明所屬技術領域中具有通常知識者無需付出創造性努力就能理解和實現本申請的實施例。
再次參見圖15,它可以被解釋為示出了資料處理和儲存裝置的內部功能模組和結構。資料處理和儲存裝置可以是日誌結構儲存系統(例如,圖3的日誌結構儲存系統300)的示例。本質上,執行主體實質上可以是電子設備,該電子設備包括以下:一個或多個處理器;一個或多個電腦可讀記憶體,其被配置為儲存一個或多個處理器的可執行指令。在一些實施例中,一個或多個電腦可讀記憶體耦接到一個或多個處理器並且具有儲存在其上的程式指令,所述指令可由一個或多個處理器執行以執行本文描述的演算法、方法、功能、處理、流程和程式。
所描述的主題的實施例可單獨地或組合地包括一個或多個特徵。例如,在第一實施例中,一種儲存系統包括:包括多層儲存設備的多層儲存子系統;輸入/輸出(I/O)子系統,其包括:一個或多個第一處理器;以及耦接至所述一個或多個第一處理器且其上儲存有第一指令的一個或多個第一電腦可讀記憶體,所述第一指令可由所述一個或多個第一處理器執行以執行將區塊鏈資料寫入到資料日誌檔中的操作,其中,所述資料日誌檔是儲存在多層儲存設備中的一層儲存設備內的僅追加檔,所述區塊鏈資料包括區塊鏈網路產生的區塊資料、交易資料或狀態資料中的一個或多個;以及後端資料管理子系統,其包括:一個或多個第二處理器;以及耦接至所述一個或多個第二處理器且其上儲存有第二指令的一個或多個第二電腦可讀記憶體,所述第二指令可由所述一個或多個第二處理器執行以執行將資料日誌檔儲存在多層儲存設備中的該層儲存設備內的管理操作。
前述和其它描述的實施例可以各自可選地包括一個或多個以下特徵:
第一特徵,可與以下任意特徵組合,指定多層儲存設備包括具有不同存取速度的多層儲存設備;以及儲存在後端資料管理子系統上的第二指令可由所述一個或多個第二處理器執行,以將儲存在多層儲存設備中的該層儲存設備內的資料日誌檔遷移至多層儲存設備中的另一層儲存設備。
第二特徵,可與任意先前或以下特徵組合,指定多層儲存設備包括雲碟、網路附加儲存(NAS)設備或物件儲存服務(OSS)設備中的一個或多個。
第三特徵,可與任意先前或以下特徵組合,指定管理操作包括分層、壓合、壓縮、糾刪編碼或快照中的一個或多個。
第四特徵,可與任意先前或以下特徵組合,指定儲存在所述I/O子系統上的所述第一指令可由所述一個或多個第二處理器執行,以產生指示所述資料日誌檔儲存在多層儲存設備中的該層儲存設備內的實體位置的索引。
第五特徵,可與任意先前或以下特徵組合,指定所述索引被儲存在索引日誌檔中,所述索引日誌檔被儲存在多層儲存設備中存取速度最高的一層儲存設備內。
第六特徵,可與任意先前或以下特徵組合,指定儲存在後端資料管理子系統上的第二指令可由一個或多個第二處理器執行以獨立於I/O子系統的寫入操作執行對資料日誌檔的管理操作。
第七特徵,可與任意先前或以下特徵組合,指定儲存系統由所述區塊鏈網路的每個共識節點實現。
第八特徵,可與任意先前特徵組合,指定儲存系統被連接至由所述區塊鏈網路的用戶端節點構建的分散式儲存系統。
本文中描述的主題、動作和操作的實施例可以在數位電子電路中、有形體現的電腦軟體或固件中、包括本文中揭示的結構及其結構等同物的電腦硬體中,或者它們中的一個或多個的組合中實現。本文中描述的主題的實施例可以實現為一個或多個電腦程式,例如,一個或多個電腦程式指令模組,編碼在電腦程式載體上,用於由資料處理裝置執行或控制資料處理的操作。例如,電腦程式載體可以包括具有一個或多個電腦可讀儲存媒體,其上編碼或儲存有指令。載體可以是有形的非暫態電腦可讀媒體,例如磁片、磁光碟或光碟、固態驅動器、隨機存取記憶體(RAM)、唯讀記憶體(ROM)或其他媒體類型。可選地或附加地,載體可以是人工產生的傳播信號,例如,機器產生的電、光或電磁信號,其被產生以編碼用於傳輸到合適的接收器裝置以供資料處理裝置執行的資訊。電腦儲存媒體可以是或可以部分是機器可讀儲存設備、機器可讀儲存基板、隨機或串列存取記憶體設備或它們中的一個或多個的組合。電腦儲存媒體不是傳播信號。
電腦程式也可以被稱為或描述為程式、軟體、軟體應用、app、模組、軟體模組、引擎、腳本或代碼,可以以任何形式的程式設計語言編寫,包括編譯或演繹性語言、說明或程式性語言;它可以配置為任何形式,包括作為獨立程式,或者作為模組、元件、引擎、副程式或適合在計算環境中執行的其他單元,該環境可包括由資料通訊網路互連的在一個或多個位置一台或多台電腦。
電腦程式可以但非必須對應於檔案系統中的檔。電腦程式可以儲存在:保存其他程式或資料的檔的一部分中,例如,儲存在標記語言文檔中的一個或多個腳本;專用於所討論的程式的單個檔;或者多個協調檔,例如,儲存一個或多個模組、副程式或代碼部分的多個檔。
舉例來說,用於執行電腦程式的處理器包括通用和專用微處理器,以及任何類型的數位電腦的任何一個或多個處理器。通常,處理器將接收用於執行的電腦程式的指令、以及接收來自耦接到處理器的非暫態電腦可讀媒體的資料。
術語“資料處理裝置”包括用於處理資料的所有類型的裝置、設備和機器,包括例如可程式設計處理器、電腦或多個處理器或電腦。資料處理設備可以包括例如FPGA(現場可程式設計閘陣列),ASIC(專用積體電路)或GPU(圖形處理單元)的專用邏輯電路。除了硬體,該裝置還可以包括為電腦程式創建執行環境的代碼,例如,構成處理器固件、協定棧、資料庫管理系統、作業系統、或者它們一個或多個的組合的代碼。
本文中描述的處理和邏輯流程可以由一台或多台電腦或處理器執行一個或多個電腦程式進行,以透過對輸入資料進行運算並產生輸出來執行操作。過程和邏輯流程也可以由例如FPGA、ASIC或GPU等的專用邏輯電路或專用邏輯電路與一個或多個程式設計電腦的組合來執行。
適合於執行電腦程式的電腦可以基於通用和/或專用微處理器,或任何其他種類的中央處理單元。通常,中央處理單元將從唯讀記憶體和/或隨機存取記憶體接收指令和資料。電腦的元件可包括用於執行指令的中央處理單元和用於儲存指令和資料的一個或多個儲存設備。中央處理單元和記憶體可以補充有專用邏輯電路或集成在專用邏輯電路中。
通常,電腦還將包括或可操作地耦接至一個或多個大型存放區設備,以從一個或多個儲存設備接收資料或將資料傳輸到一個或多個大型存放區設備。儲存設備可以是例如磁片、磁光碟或光碟、固態驅動器或任何其他類型的非暫態電腦可讀媒體。然而,電腦不需要具有這樣的設備。因此,電腦可以耦接到本地和/或遠端的例如一個或多個記憶體的一個或多個儲存設備。例如,電腦可以包括作為電腦的集成元件的一個或多個本機存放區器,或者電腦可以耦接到雲網路中的一個或多個遠端存放器。此外,電腦可以嵌入在另一個設備中,例如行動電話,個人數位助理(PDA),行動音訊或視頻播放機,遊戲控制台,全球定位系統(GPS)接收器或例如通用序列匯流排(USB)快閃記憶體驅動器的可擕式儲存設備,僅舉幾例。
元件可以透過諸如直接地連接、或透過一個或多個中間元件彼此電學連接或光學連接可通訊地連接而彼此“耦接”。如果其中一個元件被集成到另一個元件中,元件也可以彼此“耦接”。例如,集成到處理器(例如,L2快取元件)中的儲存元件“耦接到”處理器。
為了提供與用戶的交互,本文中所描述的主題的實施例可以在電腦上實現或配置為與該電腦通訊,該計算機具有:顯示裝置,例如,LCD(液晶顯示器)監視器,用於向使用者顯示資訊;以及輸入裝置,使用者可以透過該輸入裝置向該電腦提供輸入,例如鍵碟和例如滑鼠、軌跡球或觸控板等的指標裝置。其他類型的設備也可用於提供與用戶的交互;例如,提供給用戶的回饋可以是任何形式的感覺回饋,例如視覺回饋、聽覺回饋或觸覺回饋;並且可以接收來自用戶的任何形式的輸入,包括聲音、語音或觸覺輸入。此外,電腦可以透過向使用者使用的設備發送文檔和從使用者使用的設備接收文檔來與用戶交互;例如,透過向使用者設備上的web瀏覽器發送web頁面以回應從web瀏覽器收到的請求,或者透過與例如智慧型電話或電子平板電腦等的使用者設備上運行的應用程式(app)進行交互。此外,電腦可以透過向個人設備(例如,運行訊息應用程式的智慧型手機)輪流發送文本訊息或其他形式的訊息來並接收來自使用者的回應訊息來與用戶交互。
本文使用與系統,裝置和電腦程式元件有關的術語“配置為”。對於被配置為執行特定操作或動作的一個或多個電腦的系統,意味著系統已經在其上安裝了在運行中促使該系統執行所述操作或動作的軟體、固件、硬體或它們的組合。對於被配置為執行特定操作或動作的一個或多個電腦程式,意味著一個或多個程式包括當被資料處理裝置執行時促使該裝置執行所述操作或動作的指令。對於被配置為執行特定操作或動作的專用邏輯電路,意味著該電路具有執行所述操作或動作的電子邏輯。
儘管本文包含許多具體實施細節,但這些不應被解釋為由申請專利範圍本身限定的對要求保護的範圍的限制,而是作為對特定實施例的具體特徵的描述。在本文單獨實施例的上下文中描述的某些特徵也可以在單個實施例中組合實現。相反,在單個實施例的上下文中描述的各種特徵也可以單獨地或以任何合適的子組合在多個實施例中實現。此外,儘管上面的特徵可以描述為以某些組合起作用並且甚至最初如此要求保護,但是在一些情況下,可以從要求保護的組合中刪除來自該組合的一個或多個特徵,並且要求保護可以指向子組合或子組合的變體。
類似地,雖然以特定順序在圖式中描繪了操作並且在申請專利範圍中敘述了操作,但是這不應該被理解為:為了達到期望的結果,要求以所示的特定順序或依次執行這些操作,或者要求執行所有示出的操作。在某些情況下,多工和並行處理可能是有利的。此外,上述實施例中的各種系統模組和元件的劃分不應被理解為所有實施例中都要求如此劃分,而應當理解,所描述的程式元件和系統通常可以一起集成在單個軟體產品中或打包成多個軟體產品。
已經描述了主題的特定實施例。其他實施例在以下申請專利範圍的範圍內。例如,申請專利範圍中記載的動作可以以不同的循序執行並且仍然實現期望的結果。作為一個示例,圖式中描繪的過程無需要求所示的特定順序或次序來實現期望的結果。在一些情況下,多工和並行處理可能是有利的。
100:環境 102:聯盟區塊鏈網路 106:計算設備 108:計算設備 200:架構 202:參與者系統 204:參與者系統 206:參與者系統 212:區塊鏈網路 214:節點 216:區塊鏈 216':副本 216'':副本 216'':副本 300:日誌結構儲存系統 320:雲儲存 340:分散式儲存 350:第一層儲存設備/雲碟 355:熱資料 360:第二層儲存設備/NAS 362:資料日誌檔 364:資料日誌檔 365:暖資料 366:資料日誌檔 370:第三層儲存設備/OSS 372:資料日誌檔 374:資料日誌檔 375:冷資料 376:資料日誌檔 380:索引日誌檔 390:資料日誌檔 400:分層儲存系統 402:第一級池/L1池 404:第二級池/L2池 406:第三級池/L3池 408:第四級池/L4池 410:熱日誌檔 412:暖日誌檔 414:冷日誌檔 416:存檔檔 418:分層池管理器 420:遷移任務管理員 422:遷移排程器 423:服務品質/QoS 424:最近最少使用(LRU)快取/LRU記憶體快取 500:處理 502:步驟 504:步驟 506:步驟 508:步驟 510:步驟 512:步驟 600:處理 602:步驟 604:步驟 606:步驟 608:步驟 610:步驟 612:步驟 614:步驟 616:步驟 618:步驟 620:步驟 622:步驟 700:處理 702:步驟 704:步驟 706:步驟 708:步驟 710:步驟 712:步驟 714:步驟 716:步驟 800:處理 802:步驟 804:步驟 806:步驟 808:步驟 810:步驟 812:步驟 814:步驟 816:步驟 900:處理 902:步驟 904:步驟 906:步驟 908:步驟 910:步驟 912:步驟 914:步驟 916:步驟 1000:處理 1002:步驟 1004:步驟 1006:步驟 1008:步驟 1100:處理 1102:步驟 1104:步驟 1106:步驟 1108:步驟 1110:步驟 1112:步驟 1114:步驟 1116:步驟 1118:步驟 1200:處理 1202:步驟 1204:步驟 1206:步驟 1208:步驟 1300:處理 1302:步驟 1304:步驟 1306:步驟 1308:步驟 1400:處理 1402:步驟 1404:步驟 1406:步驟 1408:步驟 1410:步驟 1412:步驟 1414:步驟 1502:寫入模組 1504:管理模組 1506:遷移模組 1508:產生模組
[圖1]是示出可用於執行本文實施例的環境的示例的圖。
[圖2]是示出根據本文實施例的架構的示例的圖。
[圖3]是示出根據本文實施例的基於區塊鏈的日誌結構儲存系統的示例的圖。
[圖4]是示出根據本文實施例的分層儲存系統的示例的圖。
[圖5]是示出根據本文實施例的用於執行日誌結構儲存系統的寫入操作的處理的示例的流程圖。
[圖6]是示出根據本文實施例的用於產生與日誌結構儲存系統的寫入操作有關的索引的處理的示例的流程圖。
[圖7]是示出根據本文實施例的用於執行日誌結構儲存系統的讀取操作的處理的示例的流程圖。
[圖8]是示出根據本文實施例的用於改善日誌結構儲存系統的讀取操作的處理的示例的流程圖。
[圖9]是示出根據本文實施例的用於管理儲存在日誌結構儲存系統中的資料日誌檔的處理的示例的流程圖。
[圖10]是示出根據本文實施例的用於在日誌結構儲存系統中執行資料遷移的處理的示例的流程圖。
[圖11]是示出根據本文實施例的用於在日誌結構儲存系統中執行資料流程控制的處理的示例的流程圖。
[圖12]是示出可根據本文實施例執行的處理的示例的流程圖。
[圖13]是示出可根據本文實施例執行的處理的示例的流程圖。
[圖14]是示出可根據本文實施例執行的處理的示例的流程圖。
[圖15]是示出根據本文實施例的裝置的模組的示例的圖。
在各個圖式中,相似的圖式標記和名稱表示相似的元件。
300:日誌結構儲存系統
310:前端I/O子系統
312:增量索引映射
313:記憶體快取
314:不可變索引映射
315:記憶體
316:基本索引映射
317:區塊快取
320:雲儲存
330:後端資料管理子系統
340:分散式儲存
350:第一層儲存設備/雲碟
355:熱資料
360:第二層儲存設備/NAS
362:資料日誌檔
364:資料日誌檔
365:暖資料
366:資料日誌檔
370:第三層儲存設備/OSS
372:資料日誌檔
374:資料日誌檔
375:冷資料
376:資料日誌檔
380:索引日誌檔
390:資料日誌檔

Claims (11)

  1. 一種儲存系統,包括: 包括多層儲存設備的多層儲存子系統; 輸入/輸出I/O子系統,其包括: 一個或多個第一處理器;以及 耦接至該一個或多個第一處理器且其上儲存有第一指令的一個或多個第一電腦可讀記憶體,該第一指令能夠由該一個或多個第一處理器執行以執行將區塊鏈資料寫入到資料日誌檔中的操作,其中,該資料日誌檔是儲存在該多層儲存設備中的一層儲存設備內的僅追加檔,其中該區塊鏈資料包括區塊鏈網路產生的區塊資料、交易資料或狀態資料中的一個或多個;以及 後端資料管理子系統,其包括: 一個或多個第二處理器;以及 耦接至該一個或多個第二處理器且其上儲存有第二指令的一個或多個第二電腦可讀記憶體,該第二指令能夠由該一個或多個第二處理器執行以執行將該資料日誌檔儲存在該多層儲存設備中的該層儲存設備內的管理操作。
  2. 如請求項1之儲存系統,其中: 該多層儲存設備包括具有不同存取速度的多層儲存設備;以及 儲存在該後端資料管理子系統上的該第二指令能夠由該一個或多個第二處理器執行,以將儲存在該多層儲存設備中的該層儲存設備的該資料日誌檔遷移至該多層儲存設備中的另一層儲存設備。
  3. 如請求項1之儲存系統,其中,該多層儲存設備包括雲碟、網路附加儲存(NAS)設備、或物件儲存服務(OSS)設備中的一個或多個。
  4. 如請求項1之儲存系統,其中,該管理操作包括分層、壓合、壓縮、糾刪編碼或快照中的一個或多個。
  5. 如請求項1之儲存系統,其中,儲存在該I/O子系統上的該第一指令能夠由該一個或多個第一處理器執行,以產生索引以指示該資料日誌檔儲存在該多層儲存設備中的該層儲存設備內的實體位置。
  6. 如請求項5之儲存系統,其中,該索引被儲存在索引日誌檔中,該索引日誌檔被儲存在該多層儲存設備中存取速度最高的一層儲存設備中。
  7. 如請求項1之儲存系統,其中,儲存在該後端資料管理子系統上的該第二指令能夠由該一個或多個第二處理器執行,以獨立於該I/O子系統的該寫入操作執行對該資料日誌檔的該管理操作。
  8. 如請求項1之儲存系統,其中,該儲存系統由該區塊鏈網路的每個共識節點實現。
  9. 如請求項1之儲存系統,其中,該儲存系統被連接至由該區塊鏈網路的用戶端節點構建的分散式儲存系統。
  10. 一種區塊鏈網路的網路節點,包括如請求項1至9中任一項之儲存系統。
  11. 一種區塊鏈網路,包括: 多個共識節點,其中,該多個共識節點各自包括如請求項1至9中任一項之儲存系統。 說明書摘要 本文揭示了用於資料處理和儲存的方法、系統和裝置,包括編碼在電腦儲存設備上的電腦程式。系統之一包括:包括多層儲存設備層的多層儲存子系統;輸入/輸出(I/O)子系統,其被配置為執行將區塊鏈資料寫入資料日誌檔的操作;以及後端資料管理子系統,其被配置為對儲存在多層儲存設備中的一層儲存設備內的資料日誌檔執行管理操作。
TW109123213A 2019-09-12 2020-07-09 儲存系統、區塊鏈網路的網路節點以及基於區塊鏈的日誌結構儲存系統 TWI733514B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
WOPCT/CN2019/105690 2019-09-12
PCT/CN2019/105690 WO2019228569A2 (en) 2019-09-12 2019-09-12 Log-structured storage systems

Publications (2)

Publication Number Publication Date
TW202111564A true TW202111564A (zh) 2021-03-16
TWI733514B TWI733514B (zh) 2021-07-11

Family

ID=68699025

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109123213A TWI733514B (zh) 2019-09-12 2020-07-09 儲存系統、區塊鏈網路的網路節點以及基於區塊鏈的日誌結構儲存系統

Country Status (6)

Country Link
US (1) US10885022B1 (zh)
EP (1) EP3695586A4 (zh)
CN (1) CN115398874A (zh)
SG (1) SG11202002732TA (zh)
TW (1) TWI733514B (zh)
WO (1) WO2019228569A2 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10515233B2 (en) 2017-03-19 2019-12-24 International Business Machines Corporation Automatic generating analytics from blockchain data
CN110989934B (zh) * 2019-12-05 2023-08-25 达闼机器人股份有限公司 区块链节点数据存储方法、区块链系统及区块链节点
CN113010480B (zh) * 2020-03-26 2024-03-19 腾讯科技(深圳)有限公司 日志处理方法、装置、电子设备及计算机可读存储介质
CN111507720B (zh) * 2020-04-22 2022-03-11 腾讯科技(深圳)有限公司 基于区块链的数据快照方法、装置及计算机可读存储介质
CN113590020A (zh) * 2020-04-30 2021-11-02 伊姆西Ip控股有限责任公司 用于数据管理的方法、设备和计算机程序产品
CN111737265B (zh) 2020-07-24 2020-12-04 支付宝(杭州)信息技术有限公司 区块数据访问方法、区块数据存储方法及装置
CN112015337A (zh) * 2020-08-05 2020-12-01 苏州皆有网络科技有限公司 基于区块链技术连接分布式nas存储设备的系统
US11652604B2 (en) * 2020-11-12 2023-05-16 Paypal, Inc. Blockchain data compression and storage
CN113824757A (zh) * 2020-12-23 2021-12-21 京东科技控股股份有限公司 数据获取方法、系统和计算机可读存储介质
CN113572812A (zh) * 2021-06-21 2021-10-29 中盾创新档案管理(北京)有限公司 一种基于分布式云平台的档案块同步方法
CN115348160A (zh) * 2022-07-15 2022-11-15 深圳手回科技集团有限公司 回溯数据存储方法、装置及计算机设备

Family Cites Families (121)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4774654A (en) 1984-12-24 1988-09-27 International Business Machines Corporation Apparatus and method for prefetching subblocks from a low speed memory to a high speed memory of a memory hierarchy depending upon state of replacing bit in the low speed memory
US5287473A (en) 1990-12-14 1994-02-15 International Business Machines Corporation Non-blocking serialization for removing data from a shared cache
US5276835A (en) 1990-12-14 1994-01-04 International Business Machines Corporation Non-blocking serialization for caching data in a shared cache
DE69734399D1 (de) 1996-01-24 2006-03-02 Sun Microsystems Inc Verfahren und vorrichtung zur stapel-cachespeicherung
US6021408A (en) 1996-09-12 2000-02-01 Veritas Software Corp. Methods for operating a log device
US6289418B1 (en) 1997-03-31 2001-09-11 Sun Microsystems, Inc. Address pipelined stack caching method
US5926834A (en) 1997-05-29 1999-07-20 International Business Machines Corporation Virtual data storage system with an overrun-resistant cache using an adaptive throttle based upon the amount of cache free space
US5890154A (en) 1997-06-06 1999-03-30 International Business Machines Corp. Merging database log files through log transformations
US6941338B1 (en) 1999-09-01 2005-09-06 Nextwave Telecom Inc. Distributed cache for a wireless communication system
US8862718B2 (en) 2006-07-12 2014-10-14 Avaya Inc. System, method and apparatus for troubleshooting an IP network
US7801864B2 (en) * 2005-11-28 2010-09-21 Commvault Systems, Inc. Systems and methods for using metadata to enhance data identification operations
US7822749B2 (en) * 2005-11-28 2010-10-26 Commvault Systems, Inc. Systems and methods for classifying and transferring information in a storage network
US10394849B2 (en) * 2006-09-18 2019-08-27 EMC IP Holding Company LLC Cascaded discovery of information environment
US7600073B2 (en) 2006-09-26 2009-10-06 International Business Machines Corporation Cache disk storage upgrade
US20130227653A1 (en) 2008-11-29 2013-08-29 Yu Yung Choi System and method for streamlined registration of products over a communication network and for verification and management of information related thereto
US8315995B1 (en) 2008-09-09 2012-11-20 Peer Fusion, Inc. Hybrid storage system
US8321645B2 (en) 2009-04-29 2012-11-27 Netapp, Inc. Mechanisms for moving data in a hybrid aggregate
US8452932B2 (en) 2010-01-06 2013-05-28 Storsimple, Inc. System and method for efficiently creating off-site data volume back-ups
US9665442B2 (en) 2010-03-29 2017-05-30 Kaminario Technologies Ltd. Smart flushing of data to backup storage
US9355109B2 (en) 2010-06-11 2016-05-31 The Research Foundation For The State University Of New York Multi-tier caching
US10216651B2 (en) 2011-11-07 2019-02-26 Nexgen Storage, Inc. Primary data storage system with data tiering
US8751725B1 (en) 2012-01-27 2014-06-10 Netapp, Inc. Hybrid storage aggregate
US10210167B1 (en) 2012-05-07 2019-02-19 Amazon Technologies, Inc. Multi-level page caching for distributed object store
US9665630B1 (en) 2012-06-18 2017-05-30 EMC IP Holding Company LLC Techniques for providing storage hints for use in connection with data movement optimizations
US9319265B2 (en) * 2013-02-22 2016-04-19 Hitachi Data Systems Engineering UK Limited Read ahead caching of data from cloud storage and method thereof
US9304901B2 (en) 2013-03-14 2016-04-05 Datadirect Networks Inc. System and method for handling I/O write requests
US9514007B2 (en) 2013-03-15 2016-12-06 Amazon Technologies, Inc. Database system with database engine and separate distributed storage service
US9501501B2 (en) 2013-03-15 2016-11-22 Amazon Technologies, Inc. Log record management
WO2014155553A1 (ja) 2013-03-27 2014-10-02 富士通株式会社 分散処理のための情報処理方法、情報処理装置及びプログラム、並びに分散処理システム
US20140351505A1 (en) 2013-05-21 2014-11-27 International Business Machines Corporation Providing data attributes to a storage manager to use to select a storage tier to use for a data set management operation
US20140351515A1 (en) 2013-05-21 2014-11-27 International Business Machines Corporation Providing data attributes to a storage manager to use to select a storage tier to use for a data set management operation
US9697213B1 (en) * 2013-06-12 2017-07-04 EMC IP Holding Company LLC Cluster file system comprising object storage server tier and scale-out network attached storage tier
US9218142B2 (en) 2013-08-22 2015-12-22 International Business Machines Corporation Log data store that stores data across a plurality of storage devices using non-disjoint layers
US9552242B1 (en) 2013-09-25 2017-01-24 Amazon Technologies, Inc. Log-structured distributed storage using a single log sequence number space
US9880933B1 (en) * 2013-11-20 2018-01-30 Amazon Technologies, Inc. Distributed in-memory buffer cache system using buffer cache nodes
CN104679661B (zh) 2013-11-27 2019-12-10 阿里巴巴集团控股有限公司 混合存储的控制方法及混合存储系统
US9223843B1 (en) 2013-12-02 2015-12-29 Amazon Technologies, Inc. Optimized log storage for asynchronous log updates
US9671977B2 (en) * 2014-04-08 2017-06-06 International Business Machines Corporation Handling data block migration to efficiently utilize higher performance tiers in a multi-tier storage environment
US9323462B2 (en) * 2014-04-08 2016-04-26 International Business Machines Corporation File system snapshot data management in a multi-tier storage environment
WO2015162752A1 (ja) 2014-04-24 2015-10-29 株式会社日立製作所 データベース演算部を備えるフラッシュモジュール、及びストレージ装置
US9785510B1 (en) 2014-05-09 2017-10-10 Amazon Technologies, Inc. Variable data replication for storage implementing data backup
US9612964B2 (en) * 2014-07-08 2017-04-04 International Business Machines Corporation Multi-tier file storage management using file access and cache profile information
US9734021B1 (en) 2014-08-18 2017-08-15 Amazon Technologies, Inc. Visualizing restoration operation granularity for a database
US9836419B2 (en) 2014-09-15 2017-12-05 Microsoft Technology Licensing, Llc Efficient data movement within file system volumes
US10417190B1 (en) 2014-09-25 2019-09-17 Amazon Technologies, Inc. Log-structured file system for zone block devices with small zones
US10078639B1 (en) * 2014-09-29 2018-09-18 EMC IP Holding Company LLC Cluster file system comprising data mover modules having associated quota manager for managing back-end user quotas
US10176212B1 (en) 2014-10-15 2019-01-08 Seagate Technology Llc Top level tier management
US10013440B1 (en) 2014-10-31 2018-07-03 Amazon Technologies, Inc. Incremental out-of-place updates for index structures
US9952808B2 (en) 2015-03-26 2018-04-24 International Business Machines Corporation File system block-level tiering and co-allocation
US20160321751A1 (en) * 2015-04-28 2016-11-03 Domus Tower, Inc. Real-time settlement of securities trades over append-only ledgers
US10180954B2 (en) 2015-05-29 2019-01-15 Nuodb, Inc. Disconnected operation within distributed database systems
US10379958B2 (en) 2015-06-03 2019-08-13 Axxana (Israel) Ltd. Fast archiving for database systems
WO2017052672A1 (en) * 2015-09-24 2017-03-30 Hewlett Packard Enterprise Development Lp Hierarchical index involving prioritization of data content of interest
US20170236120A1 (en) 2016-02-11 2017-08-17 Oracle International Corporation Accountability and Trust in Distributed Ledger Systems
US20170236123A1 (en) 2016-02-16 2017-08-17 Blockstack Inc. Decentralized processing of global naming systems
US9946657B1 (en) 2016-03-01 2018-04-17 Nutanix, Inc. Spilling small cache entries to a solid state device
US10509932B2 (en) 2016-03-07 2019-12-17 ShoCard, Inc. Large data transfer using visual codes with feedback confirmation
US20170271030A1 (en) 2016-03-18 2017-09-21 Alibaba Group Holding Limited Method and system for using downgraded flash die for cache applications
US10552038B2 (en) * 2016-05-13 2020-02-04 International Business Machines Corporation Object storage architecture based on file_heat
WO2017216887A1 (ja) 2016-06-15 2017-12-21 株式会社日立製作所 情報処理システム
US10178173B2 (en) 2016-08-02 2019-01-08 International Business Machines Corporation Cloud service utilization
US10339014B2 (en) 2016-09-28 2019-07-02 Mcafee, Llc Query optimized distributed ledger system
US10523421B2 (en) 2016-11-30 2019-12-31 International Business Machines Corporation Checkpoints for permissionless blockchains
US20180157700A1 (en) * 2016-12-06 2018-06-07 International Business Machines Corporation Storing and verifying event logs in a blockchain
FR3061330B1 (fr) * 2016-12-28 2019-05-24 Bull Sas Systeme et procede pour la creation et la gestion d'autorisations decentralisees pour des objets connectes
US10445302B2 (en) 2017-01-03 2019-10-15 International Business Machines Corporation Limiting blockchain size to optimize performance
CN106682530A (zh) * 2017-01-10 2017-05-17 杭州电子科技大学 一种基于区块链技术的医疗信息共享隐私保护方法及装置
EP3355513B1 (en) 2017-01-31 2020-10-14 Sony Corporation Electronic node and method for maintaining a distributed ledger
US10474656B1 (en) * 2017-02-21 2019-11-12 Nutanix, Inc. Repurposing log files
US10515233B2 (en) 2017-03-19 2019-12-24 International Business Machines Corporation Automatic generating analytics from blockchain data
CN108733313B (zh) 2017-04-17 2021-07-23 伊姆西Ip控股有限责任公司 利用预备盘建立多级闪速缓存的方法、设备和计算机可读介质
US10489073B2 (en) * 2017-04-28 2019-11-26 Netapp Inc. Multi-tier write allocation
WO2018205137A1 (en) 2017-05-09 2018-11-15 Accenture Global Solutions Limited Data storage layer index for efficient information retrieval
US10944807B2 (en) 2017-05-09 2021-03-09 EMC IP Holding Company LLC Organizing present and future reads from a tiered streaming data storage layer
CN107147735B (zh) * 2017-05-12 2020-08-11 北京博晨技术有限公司 一种基于分层结构的分布式账本系统
CN108323232B (zh) * 2017-05-16 2020-01-24 北京大学深圳研究生院 一种多层级区块链系统之间索引与链拓扑结构的维护方法
US10976962B2 (en) 2018-03-15 2021-04-13 Pure Storage, Inc. Servicing I/O operations in a cloud-based storage system
US20180374094A1 (en) 2017-06-22 2018-12-27 Mastercard International Incorporated Method and system for indexing consumer enrollment using blockchain
US10601665B2 (en) 2017-07-26 2020-03-24 International Business Machines Corporation Using blockchain smart contracts to manage dynamic data usage requirements
US11281644B2 (en) * 2017-07-28 2022-03-22 Hitachi, Ltd. Blockchain logging of data from multiple systems
US10565192B2 (en) 2017-08-01 2020-02-18 International Business Machines Corporation Optimizing queries and other retrieve operations in a blockchain
US10552556B2 (en) 2017-08-03 2020-02-04 Liquineq AG System and method for performance testing of scalable distributed network transactional databases
US20190050831A1 (en) * 2017-08-03 2019-02-14 Liquineq AG System and method for multi-tiered distributed network transactional database
CN111417939A (zh) 2017-08-16 2020-07-14 慧与发展有限责任合伙企业 分布式文件系统中的分层存储
US20190370225A1 (en) 2017-08-16 2019-12-05 Mapr Technologies, Inc. Tiered storage in a distributed file system
US20190095879A1 (en) * 2017-09-26 2019-03-28 Cornell University Blockchain payment channels with trusted execution environments
US10360214B2 (en) * 2017-10-19 2019-07-23 Pure Storage, Inc. Ensuring reproducibility in an artificial intelligence infrastructure
US10484174B1 (en) * 2017-11-01 2019-11-19 Pure Storage, Inc. Protecting an encryption key for data stored in a storage system that includes a plurality of storage devices
US10868865B2 (en) * 2017-11-20 2020-12-15 Moshe Shadmon System and apparatus to manage data using a peer-to-peer network and the blockchain
US20190158270A1 (en) * 2017-11-21 2019-05-23 International Business Machines Corporation Exchanging Asset, Maintenance, And Spares Parts Information Via Blockchain
US10936238B2 (en) 2017-11-28 2021-03-02 Pure Storage, Inc. Hybrid data tiering
US10949303B2 (en) 2017-12-11 2021-03-16 Fungible, Inc. Durable block storage in data center access nodes with inline erasure coding
US11243945B2 (en) * 2017-12-11 2022-02-08 International Business Machines Corporation Distributed database having blockchain attributes
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10592411B2 (en) 2018-01-09 2020-03-17 Rubrik, Inc. Garbage collection of expired snapshots
US10956075B2 (en) * 2018-02-02 2021-03-23 Bank Of America Corporation Blockchain architecture for optimizing system performance and data storage
US11438139B2 (en) * 2018-02-07 2022-09-06 Raouf Boutaba Blockchain based secure naming and update verification
US10430100B2 (en) 2018-02-28 2019-10-01 International Business Machines Corporation Transactional operations in multi-master distributed data management systems
US10296258B1 (en) 2018-03-09 2019-05-21 Pure Storage, Inc. Offloading data storage to a decentralized storage network
CN108519862B (zh) 2018-03-30 2020-03-17 百度在线网络技术(北京)有限公司 区块链系统的存储方法、装置、系统和存储介质
US20190303579A1 (en) 2018-04-02 2019-10-03 Ca, Inc. Decentralized, immutable, tamper-evident, directed acyclic graphs documenting software supply-chains with cryptographically signed records of software-development life cycle state and cryptographic digests of executable code
CN108806795A (zh) * 2018-04-26 2018-11-13 周玉芳 一种基于诊断日志的医疗大数据分析方法及系统
US10673943B2 (en) 2018-05-02 2020-06-02 Commvault Systems, Inc. Network storage backup using distributed media agents
US10834095B2 (en) 2018-05-17 2020-11-10 International Business Machines Corporation Post-commit validation in a distributed ledger
WO2019226986A1 (en) 2018-05-24 2019-11-28 Walmart Apollo, Llc Nested blockchain system
US11436023B2 (en) * 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US10819503B2 (en) 2018-07-03 2020-10-27 International Business Machines Corporation Strengthening non-repudiation of blockchain transactions
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
CN109086388B (zh) * 2018-07-26 2020-12-29 百度在线网络技术(北京)有限公司 区块链数据存储方法、装置、设备及介质
CN109144414B (zh) 2018-07-27 2020-07-07 阿里巴巴集团控股有限公司 区块链数据的多级存储方法和装置
US10896195B2 (en) 2018-07-29 2021-01-19 International Business Machines Corporation Automatic generation of smart contracts
CN109242453B (zh) * 2018-08-07 2021-03-23 创新先进技术有限公司 一种基于中心化结算与区块链存证的交易方法及系统
US11196542B2 (en) 2018-08-29 2021-12-07 International Business Machines Corporation Checkpointing for increasing efficiency of a blockchain
US11334439B2 (en) 2018-08-29 2022-05-17 International Business Machines Corporation Checkpointing for increasing efficiency of a blockchain
US10901957B2 (en) 2018-08-29 2021-01-26 International Business Machines Corporation Checkpointing for increasing efficiency of a blockchain
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11133076B2 (en) 2018-09-06 2021-09-28 Pure Storage, Inc. Efficient relocation of data between storage devices of a storage system
US10298395B1 (en) * 2018-09-26 2019-05-21 Accenture Global Solutions Limited Interoperability of zero-knowledge proof enabled blockchains
US10268817B1 (en) * 2018-10-05 2019-04-23 Capital One Services, Llc Methods, mediums, and systems for establishing and using security questions
CN109766312A (zh) * 2019-01-07 2019-05-17 深圳大学 一种区块链存储方法、系统、装置及计算机可读存储介质
CN109886037B (zh) * 2019-01-21 2023-06-09 江汉大学 一种基于区块链的电子证据审计方法

Also Published As

Publication number Publication date
WO2019228569A2 (en) 2019-12-05
WO2019228569A3 (en) 2020-07-09
TWI733514B (zh) 2021-07-11
CN115398874A (zh) 2022-11-25
EP3695586A2 (en) 2020-08-19
EP3695586A4 (en) 2020-12-09
SG11202002732TA (en) 2020-04-29
US10885022B1 (en) 2021-01-05

Similar Documents

Publication Publication Date Title
TWI737395B (zh) 日誌結構儲存系統及方法
TWI733514B (zh) 儲存系統、區塊鏈網路的網路節點以及基於區塊鏈的日誌結構儲存系統
TWI759789B (zh) 電腦實現的方法、非暫態的電腦可讀儲存媒體及儲存系統
CN111183420B (zh) 日志结构存储系统
EP3673376B1 (en) Log-structured storage systems
TWI766309B (zh) 日誌結構儲存系統
CN111183450B (zh) 日志结构存储系统
CN111295649B (zh) 日志结构存储系统
EP3695304B1 (en) Log-structured storage systems
US10942852B1 (en) Log-structured storage systems