TWI759789B - 電腦實現的方法、非暫態的電腦可讀儲存媒體及儲存系統 - Google Patents
電腦實現的方法、非暫態的電腦可讀儲存媒體及儲存系統 Download PDFInfo
- Publication number
- TWI759789B TWI759789B TW109123250A TW109123250A TWI759789B TW I759789 B TWI759789 B TW I759789B TW 109123250 A TW109123250 A TW 109123250A TW 109123250 A TW109123250 A TW 109123250A TW I759789 B TWI759789 B TW I759789B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- distributed ledger
- processing
- storage system
- ledger system
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本文公開了用於處理資料請求的方法、系統和裝置,包括編碼在電腦儲存設備上的電腦程式。方法之一包括:儲存系統接收針對分散式帳本系統的資料的處理請求。所述分散式帳本系統的多種資料類型包括區塊資料、交易資料、狀態資料和索引資料。所述儲存系統確定所述資料屬於所述分散式帳本系統的多種資料類型中的一種資料類型,以及應用被指定用於處理該種資料類型的處理引擎類型。
Description
本文涉及電腦實現的方法、非暫態的電腦可讀儲存媒體及儲存系統,進一步涉及日誌結構儲存系統。
分散式帳本系統(Distributed Ledger System,DLS),也可稱為共識網路及/或區塊鏈網路,使得參與的實體能夠安全且不可篡改地儲存資料。在不引用任何特定用例的情況下,DLS通常被稱為區塊鏈網路。區塊鏈網路類型的示例可以包括公共區塊鏈網路、私有區塊鏈網路和聯盟區塊鏈網路。為選定的實體群組提供聯盟區塊鏈網路,所述實體控制共識處理,並且所述聯盟區塊鏈網路包括存取控制層。
通常,DLS的每個節點(例如,區塊鏈網路節點)儲存或具有區塊鏈網路資料的完整備份,使得每個節點可以是
獨立的,並且每個節點處的本地資料可以被信任以提供服務。然而,這種儲存方案提出了苛刻的儲存要求,並增加了每個節點的儲存成本,尤其是隨著DLS達到規模。因此,期望用於提高效率並降低儲存系統成本的解決方案。
本文描述了用於將資料儲存在例如分散式帳本系統(例如,區塊鏈網路)及/或基於區塊鏈的中心化帳本系統(例如,通用可審計帳本服務系統)中的日誌結構儲存系統的技術,所述分散式帳本系統及/或基於區塊鏈的中心化帳本系統採用區塊鏈的資料結構以利用儲存在區塊鏈上的資料的不可變性、可靠性以及可信性。
本文還提供了耦接到一個或多個處理器並且其上儲存有指令的一個或多個非暫態電腦可讀儲存媒體,當所述指令由所述一個或多個處理器執行時,所述指令將促使所述一個或多個處理器按照本文提供的方法的實施例執行操作。
本文還提供了用於實施本文提供的所述方法的系統。日誌結構儲存系統300包括一個或多個處理器以及耦接到所述一個或多個處理器並且其上儲存有指令的電腦可讀儲存媒體,當所述指令由所述一個或多個處理器執行時,所述指令將促使所述一個或多個處理器按照本文提供的方法的實施例執行操作。
應瞭解,依據本文的方法可以包括本文描述的方面和
特徵的任意組合。也就是說,根據本文的方法不限於本文具體描述的方面和特徵的組合,還包括所提供的方面和特徵的任意組合。
以下在附圖和描述中闡述了本文的一個或多個實施方式的細節。根據說明書和圖式以及申請專利範圍,本文的其他特徵和優點將顯現。
100:環境
102:聯盟區塊鏈網路
106:計算設備
108:計算設備
110:網路
200:架構
202:參與者系統
204:參與者系統
206:參與者系統
212:區塊鏈網路
214:節點
216:區塊鏈
216',216",216''':副本
300:日誌結構儲存系統
310:前端I/O子系統
312:增量索引對映
313:記憶體快取
314:不可變索引對映
315:記憶體
316:基本索引對映
317:區塊快取
320:多層儲存子系統
330:後端資料管理子系統
340:分散式儲存系統
350:第一層儲存設備
355:熱資料
360:第二層儲存設備
362:資料日誌文件
364:資料日誌文件
365:暖資料
366:資料日誌文件
370:第三層儲存設備
372:資料日誌文件
374:資料日誌文件
375:冷資料
376:資料日誌文件
380:索引日誌文件
390:資料日誌文件
400:分層儲存系統
402:第一級池
404:第二級池
406:第三級池
408:第四級池
410:熱日誌文件
412:暖日誌文件
414:冷日誌文件
416:存檔文件
418:分層池管理器
420:遷移任務管理器
422:遷移調度器
423:QoS管理器
424:快取
426:磁碟快取
500:程序
502~512:步驟
600:程序
602~622:步驟
700:程序
702~716:步驟
800:程序
802~816:步驟
900:程序
902~916:步驟
1000:程序
1002~1008:步驟
1100:程序
1102~1118:步驟
1200:程序
1202~1208:步驟
1300:程序
1302~1308:步驟
1400:程序
1402~1414:步驟
1500:裝置
1502:接收模組
1504:確定模組
1506:應用模組
[圖1]是示出可用於執行本文實施例的環境的示例的圖。
[圖2]是示出根據本文實施例的架構的示例的圖。
[圖3]是示出根據本文實施例的基於區塊鏈的日誌結構儲存系統的示例的圖。
[圖4]是示出根據本文實施例的分層儲存系統的示例的圖。
[圖5]是示出根據本文實施例的用於執行日誌結構儲存系統的寫入操作的程序的示例的流程圖。
[圖6]是示出根據本文實施例的用於產生與日誌結構儲存系統的寫入操作有關的索引的程序的示例的流程圖。
[圖7]是示出根據本文實施例的用於執行日誌結構儲存系統的讀取操作的程序的示例的流程圖。
[圖8]是示出根據本文實施例的用於改善日誌結構儲存系統的讀取操作的程序的示例的流程圖。
[圖9]是示出根據本文實施例的用於管理儲存在日誌
結構儲存系統中的資料日誌文件的程序的示例的流程圖。
[圖10]是示出根據本文實施例的用於在日誌結構儲存系統中執行資料遷移的程序的示例的流程圖。
圖11]是示出根據本文實施例的用於在日誌結構儲存系統中執行資料流控制的程序的示例的流程圖。
[圖12]是示出可根據本文實施例執行的程序的示例的流程圖。
[圖13]是示出可根據本文實施例執行的程序的示例的流程圖。
[圖14]是示出可根據本文實施例執行的程序的示例的流程圖。
[圖15]是示出根據本文實施例的裝置的模組的示例的圖。
在各個圖式中,相像的圖式標記和名稱表示相像的元件。
本文描述了用於將資料儲存在例如分散式帳本系統(例如,區塊鏈網路)及/或基於區塊鏈的中心化帳本系統(例如,通用可審計帳本服務系統)中的日誌結構儲存系統的技術,所述分散式帳本系統及/或基於區塊鏈的中心化帳本系統採用區塊鏈的資料結構以利用儲存在區塊鏈上的資料的不可變性、可靠性以及可信性。在一些實施例中,分散式帳本系統和基於區塊鏈的中心化帳本系統可以統稱
為基於區塊鏈的帳本系統。
在一些實施例中,基於區塊鏈的中心化帳本系統可以是基於中心化的帳本系統,其可以提供具有時間關鍵性審計(具有不可否認性和防篡改性)的、密碼學可驗證的與狀態無關的資料帳本儲存。在一些實施例中,基於區塊鏈的中心化帳本系統可以基於雲端平臺提供帳本服務,該雲端平臺的特徵在於具有可信度和中立性的中心化背書。基於區塊鏈的中心化帳本系統可以提供高可靠性和高性能的可審計流水帳本服務,其組合了區塊鏈系統的高可信度以及中心化系統的高性能和低延遲,以處理具有審計要求、可追溯性和跟蹤的各種類型的資料和日誌。
本文中描述的技術產生若干技術效果。在一些實施例中,所描述的技術可以被應用在各種應用和場景中,以提供有效的、可信的、可擴展的、成本有效的和高性能的資料儲存和管理。所描述的技術可以為包括例如交易資料、區塊資料、狀態資料和索引資料的區塊鏈資料提供簡單且定義良好的應用程式介面(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中的多個內部儲存器索引對映。在一些實施例中,內部儲存器索引對映可以被認為是用於維護前端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操作的影響。
通常,在確定資料日誌文件的壓縮大小或容量時,可能需要考慮壓縮和讀取放大的有效性並達到平衡。例如,在一些情況下,如果資料日誌文件的壓縮大小或容量太小(例如,小於4KB),則由於壓縮而節省的空間可能會受到限制,並且壓縮性能可能不是最佳的。另一方面,如果資料日誌文件的壓縮大小或容量太大,則讀取放大也可能變得更大(例如,要讀取交易條目,則包括交易條目的整個壓縮資料日誌文件需要首先解壓縮)。在一些實施例中,資料日誌文件的壓縮大小可以被設置為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的性能和效率。在一些實施例中,可以基於寫時重定向(redirect on write;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”表示可以只針對分散式帳本系統執行對特定類型資料的操作。“都不”表示可以針對分散式帳本系統和基於區塊鏈的中心化
帳本系統都不執行對特定類型資料的操作。
例如,如表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已經達到最大長度或大小,或者已經針對特定批次數的寫入操作進行了更新時,可以將索引日誌文件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,用於確定所述資料屬於分散式帳本系統的多種資料類型中的一種資料類型;應用模組1506,用於應用被指定用於處理所述一種資料類型的處理引擎類型。
在可選實施例中,裝置1500還包括以下:接收子模組,用於接收多個處理引擎的配置,其中,該配置根據分散式帳本系統的每種資料類型的特性對用於處理這種資料類型的對應的處理引擎類型進行配置。
在可選實施例中,裝置1500可以包括:被指定用於處理區塊資料的處理引擎類型;被指定用於處理交易資料的處理引擎類型;被指定用於處理狀態資料的處理引擎類型;被指定用於處理索引資料的處理引擎類型。
在可選實施例中,狀態資料可以包括當前狀態資料和歷史狀態資料,並且儲存系統可以包括:被指定用於處理當前狀態資料的處理引擎類型;以及被指定用於處理歷史狀態資料的處理引擎類型。
在可選實施例中,裝置1500還包括接收子模組,用於接收針對分散式帳本系統的資料的輸入/輸出(I/O)請求。被指定用於處理分散式帳本系統的所述一種資料類型的相應的處理引擎類型可以包括被指定用於對分散式帳本系統的所述一種資料類型執行讀取或寫入操作的相應的I/O處理引擎類型。
在可選實施例中,裝置1500還包括接收子模組,用於接收針對分散式帳本系統的資料的資料管理請求。被指定用於處理所述一種資料類型的相應的處理引擎類型可以包括被指定用於對儲存系統中的所述一種資料類型執行資料管理操作的相應的資料管理處理引擎類型。管理操作包括分層、壓緊、壓縮、糾刪編碼或快照中的一個或多個。
在可選實施例中,所述一種資料類型是區塊資料或交易資料,並且被指定用於處理所述一種資料類型的處理引擎類型配置有包括對儲存系統中的區塊資料或交易資料進行分層、糾刪編碼和壓縮的功能。
在可選實施例中,所述一種資料類型是狀態資料,並且被指定用於處理所述一種資料類型的處理引擎類型配置有包括對儲存系統中的狀態資訊進行快照和壓緊的功能。
在可選實施例中,所述一種資料類型是當前狀態資料,並且配置用於處理所述一種資料類型的處理引擎類型配置有包括對儲存系統中當前狀態資料進行分層、糾刪編碼、壓縮、快照和壓緊的功能。
在可選實施例中,所述一種資料類型是歷史狀態交易
資料,並且被指定用於處理所述一種資料類型的處理引擎類型配置有包括對儲存系統中的歷史狀態資料進行分層、糾刪編碼和壓縮的功能。
在先前實施中示出的系統、裝置、模組或單元可以藉由使用電腦晶片或實體來實現,或者可以藉由使用具有特定功能的產品來實現。典型的實施設備是電腦,電腦可以是個人電腦、筆記型電腦、行動電話、相機電話、智慧型電話、個人數位助理、媒體播放器、導航設備、電子郵件接收和發送設備、遊戲控制台、平板電腦、可穿戴設備或這些設備的任意組合。
對於裝置中各個單元的功能和角色的實施過程,可以參考前一方法中相應步驟的實施過程。為簡單起見,這裡省略了細節。
由於裝置實施例基本上與方法實施例相對應,因此對於相關部分,可以參考方法實施例中的相關描述。前述裝置實施例僅僅是示例。被描述為單獨部分的模組可以或可以不是實體上分離的,並且顯示為模組的部分可以是或可以不是實體模組,可以位於一個位置,或者可以分佈在多個網路模組上。可以基於實際需求來選擇一些或所有模組,以實現本文方案的目標。本領域具有通常知識者無需付出創造性努力就能理解和實現本申請的實施例。
再次參見圖15,它可以被解釋為示出了資料處理和儲存裝置的內部功能模組和結構。資料處理和儲存裝置可以是日誌結構儲存系統(例如,圖3的日誌結構儲存系統300)
的示例。本質上,執行主體實質上可以是電子設備,該電子設備包括以下:一個或多個處理器;一個或多個電腦可讀記憶體,其被配置為儲存一個或多個處理器的可執行指令。在一些實施例中,一個或多個電腦可讀記憶體耦接到一個或多個處理器並且具有儲存在其上的程式指令,所述指令可由一個或多個處理器執行以執行本文描述的演算法、方法、功能、處理、流程和程序。
所描述的主題的實施例可單獨地或組合地包括一個或多個特徵。例如,在第一實施例中,一種方法包括:儲存系統接收針對分散式帳本系統的資料的處理請求,其中,所述分散式帳本系統的多種資料類型包括區塊資料、交易資料、狀態資料和索引資料;所述儲存系統確定所述資料屬於所述分散式帳本系統的多種資料類型中的一種資料類型。所述儲存系統應用被指定用於處理所述一種資料類型的處理引擎類型。
前述和其它描述的實施例可以各自可選地包括一個或多個以下特徵:
第一特徵,可與以下任意特徵組合,指定所述方法還包括:所述儲存系統接收多個處理引擎的配置,其中,所述配置根據所述分散式帳本系統的每種資料類型的特性對用於處理這種資料類型的對應的處理引擎類型進行配置。
第二特徵,可與任意先前或以下特徵組合,指定所述儲存系統還包括:被指定用於處理區塊資料的處理引擎類型;被指定用於處理交易資料的處理引擎類型;被指定用
於處理狀態資料的處理引擎類型;以及被指定用於處理索引資料的處理引擎類型。
第三特徵,可與任意先前或以下特徵組合,指定所述狀態資料包括當前狀態資料和歷史狀態資料,並且所述儲存系統包括:被指定用於處理所述當前狀態資料的處理引擎類型;以及被指定用於處理所述歷史狀態資料的處理引擎類型。
第四特徵,可與任意先前或以下特徵組合,指定所述儲存系統接收針對所述分散式帳本系統的資料的處理請求包括:所述儲存系統接收針對所述分散式帳本系統的資料的輸入/輸出(I/O)請求;以及被指定用於處理所述分散式帳本系統的所述一種資料類型的所述相應的處理引擎類型可以包括被指定用於對所述分散式帳本系統的所述一種資料類型執行讀取或寫入操作的相應的輸入/輸出(I/O)處理引擎類型。
第五特徵,可與任意先前或以下特徵組合,指定所述儲存系統接收針對所述分散式帳本系統的資料的處理請求包括所述儲存系統接收針對所述分散式帳本系統的資料的資料管理請求;被指定用於處理所述一種資料類型的所述相應的處理引擎類型包括被指定用於對所述儲存系統中的所述一種資料類型執行資料管理操作的相應的資料管理處理引擎類型。所述管理操作包括分層、壓緊、壓縮、糾刪編碼或快照中的一個或多個。
第六特徵,可與任意先前或以下特徵組合,指定所述
一種資料類型是區塊資料或交易資料,並且被指定用於處理所述一種資料類型的處理引擎類型配置有包括對所述儲存系統中的所述區塊資料或交易資料進行分層、糾刪編碼和壓縮的功能。
第七特徵,可與任意先前或以下特徵組合,指定所述一種資料類型是狀態資料,並且被指定用於處理所述一種資料類型的處理引擎類型被配置為具有包括對所述儲存系統中的所述狀態資料進行快照和壓緊的功能。
第八特徵,可與任意先前或以下特徵組合,指定所述一種資料類型是當前狀態資料,並且被配置用於處理所述一種資料類型的處理引擎類型被配置為具有包括對所述儲存系統中的所述當前狀態資料進行分層、糾刪編碼、壓縮、快照和壓緊的功能。
第九特徵,可與任意先前特徵組合,指定所述一種資料類型是歷史狀態資料,並且被配置用於處理所述一種資料類型的處理引擎類型被配置為具有包括對所述儲存系統中的所述歷史狀態資料進行分層、糾刪編碼和壓縮的功能。
本文中描述的主題、動作和操作的實施例可以在數位電子電路中、有形體現的電腦軟體或韌體中、包括本文中公開的結構及其結構等同物的電腦硬體中,或者它們中的一個或多個的組合中實現。本文中描述的主題的實施例可以實現為一個或多個電腦程式,例如,一個或多個電腦程式指令模組,編碼在電腦程式載體上,用於由資料處理裝
置執行或控制資料處理的操作。例如,電腦程式載體可以包括具有一個或多個電腦可讀儲存媒體,其上編碼或儲存有指令。載體可以是有形的非暫態電腦可讀媒體,例如磁碟、磁光碟或光碟、固態硬碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)或其他媒體類型。可選地或附加地,載體可以是人工產生的傳播信號,例如,機器產生的電、光或電磁信號,其被產生以編碼用於傳輸到合適的接收器裝置以供資料處理裝置執行的資訊。電腦儲存媒體可以是或可以部分是機器可讀儲存設備、機器可讀儲存基板、隨機或串行存取記憶體設備或它們中的一個或多個的組合。電腦儲存媒體不是傳播信號。
電腦程式也可以被稱為或描述為程式、軟體、軟體應用程式、app、模組、軟體模組、引擎、腳本或程式碼,可以以任何形式的程式化語言編寫,包括編譯或演繹性語言、說明或程式性語言;它可以配置為任何形式,包括作為獨立程式,或者作為模組、組件、引擎、子程式或適合在計算環境中執行的其他單元,該環境可包括由資料通訊網路互連的在一個或多個位置一台或多台電腦。
電腦程式可以但非必須對應於文件系統中的文件。電腦程式可以儲存在:保存其他程式或資料的文件的一部分中,例如,儲存在標記語言文件中的一個或多個腳本;專用於所討論的程式的單個文件;或者多個協調文件,例如,儲存一個或多個模組、子程式或程式碼部分的多個文件。
舉例來說,用於執行電腦程式的處理器包括通用和專用微處理器,以及任何類型的數位電腦的任何一個或多個處理器。通常,處理器將接收用於執行的電腦程式的指令、以及接收來自耦接到處理器的非暫態電腦可讀媒體的資料。
術語“資料處理裝置”包括用於處理資料的所有類型的裝置、設備和機器,包括例如可程式化處理器、電腦或多個處理器或電腦。資料處理設備可包括例如FPGA(現場可程式閘陣列),ASIC(特定應用積體電路)或GPU(圖形處理單元)的專用邏輯電路。除了硬體,該裝置還可以包括為電腦程式創建執行環境的程式碼,例如,構成處理器韌體、協定棧、資料庫管理系統、作業系統、或者它們一個或多個的組合的程式碼。
本文中描述的程序和邏輯流程可以由一台或多台電腦或處理器執行一個或多個電腦程式進行,以藉由對輸入資料進行運算並產生輸出來執行操作。過程和邏輯流程也可以由例如FPGA、ASIC或GPU等的專用邏輯電路或專用邏輯電路與一個或多個程式化電腦的組合來執行。
適合於執行電腦程式的電腦可以基於通用及/或專用微處理器,或任何其他種類的中央處理單元。通常,中央處理單元將從唯讀記憶體及/或隨機存取記憶體接收指令和資料。電腦的元件可包括用於執行指令的中央處理單元和用於儲存指令和資料的一個或多個儲存設備。中央處理單元和記憶體可以補充有專用邏輯電路或集成在專用邏輯
電路中。
通常,電腦還將包括或可操作地耦接至一個或多個大容量儲存設備,以從一個或多個儲存設備接收資料或將資料傳輸到一個或多個大容量儲存設備。儲存設備可以是例如磁碟、磁光碟或光碟、固態硬碟或任何其他類型的非暫態電腦可讀媒體。然而,電腦不需要具有這樣的設備。因此,電腦可以耦接到區域及/或遠端的例如一個或多個記憶體的一個或多個儲存設備。例如,電腦可以包括作為電腦的集成組件的一個或多個本地記憶體,或者電腦可以耦接到雲端網路中的一個或多個遠端記憶體。此外,電腦可以嵌入在另一個設備中,例如行動電話,個人數位助理(PDA),行動音檔或影片播放器,遊戲控制台,全球定位系統(GPS)接收器或例如通用串列匯流排(USB)快閃記憶體驅動器的便攜式儲存設備,僅舉幾例。
組件可以藉由諸如直接地連接、或藉由一個或多個中間組件彼此電學連接或光學連接可通訊地連接而彼此“耦接”。如果其中一個組件被集成到另一個組件中,組件也可以彼此“耦接”。例如,集成到處理器(例如,L2快取組件)中的儲存組件“耦接到”處理器。
為了提供與用戶的互動,本文中所描述的主題的實施例可以在電腦上實現或配置為與該電腦通訊,該電腦具有:顯示設備,例如,LCD(液晶顯示器)監視器,用於向用戶顯示資訊;以及輸入設備,用戶可以藉由該輸入設備向該電腦提供輸入,例如鍵盤和例如滑鼠、軌跡球或觸摸
面板等的指針設備。其他類型的設備也可用於提供與用戶的互動;例如,提供給用戶的回饋可以是任何形式的感覺回饋,例如視覺回饋、聽覺回饋或觸覺回饋;並且可以接收來自用戶的任何形式的輸入,包括聲音、語音或觸覺輸入。此外,電腦可以藉由向用戶使用的設備發送文件和從用戶使用的設備接收文件來與用戶互動;例如,藉由向用戶設備上的web瀏覽器發送web頁面以響應從web瀏覽器收到的請求,或者藉由與例如智慧型電話或電子平板電腦等的用戶設備上運行的應用程式(app)進行互動。此外,電腦可以藉由向個人設備(例如,運行消息應用的智慧型手機)輪流發送文本消息或其他形式的消息來並接收來自用戶的響應消息來與用戶互動。
本文使用與系統,裝置和電腦程式組件有關的術語“配置為”。對於被配置為執行特定操作或動作的一個或多個電腦的系統,意味著系統已在其上安裝了在運行中促使該系統執行操作或動作的軟體、韌體、硬體或它們的組合。對於被配置為執行特定操作或動作的一個或多個電腦程式,意味著一個或多個程式包括當被資料處理裝置執行時促使該裝置執行所述操作或動作的指令。對於被配置為執行特定操作或動作的專用邏輯電路,意味著該電路具有執行所述操作或動作的電子邏輯。
儘管本文包含許多具體實施細節,但這些不應被解釋為由請求項本身限定的對要求保護的範圍的限制,而是作為對特定實施例的具體特徵的描述。在本文單獨實施例的
上下文中描述的某些特徵也可以在單個實施例中組合實現。相反,在單個實施例的上下文中描述的各種特徵也可以單獨地或以任何合適的子組合在多個實施例中實現。此外,儘管上面的特徵可以描述為以某些組合起作用並且甚至最初如此要求保護,但是在一些情況下,可以從要求保護的組合中刪除來自該組合的一個或多個特徵,並且要求保護可以指向子組合或子組合的變體。
類似地,雖然以特定順序在圖式中描繪了操作並且在請求項中敘述了操作,但是這不應該被理解為:為了達到期望的結果,要求以所示的特定順序或依次執行這些操作,或者要求執行所有示出的操作。在某些情況下,多任務和並行處理可能是有利的。此外,上述實施例中的各種系統模組和組件的劃分不應被理解為所有實施例中都要求如此劃分,而應當理解,所描述的程式組件和系統通常可以一起集成在單個軟體產品中或打包成多個軟體產品。
已經描述了主題的特定實施例。其他實施例在以下請求項的範圍內。例如,請求項中記載的動作可以以不同的順序執行並且仍然實現期望的結果。作為一個示例,附圖中描繪的過程無需要求所示的特定順序或次序來實現期望的結果。在一些情況下,多任務和並行處理可能是有利的。
1200:程序
Claims (24)
- 一種電腦實現的方法,包括:由儲存系統接收針對分散式帳本系統產生的第一資料的處理請求,其中,該分散式帳本系統將資料儲存在區塊鏈中的一或多個區塊,並且產生該分散式帳本系統的二或更多類型的資料,包括區塊資料和狀態資料,其中該區塊資料包括區塊鏈中的至少一區塊,且該至少一區塊包括該區塊鏈中前一個區塊的雜湊值,其中該狀態資料包括該分散式帳本系統的世界狀態,並且其中該狀態資料包括當前狀態資料和歷史狀態資料;回應於確定由該分散式帳本系統產生的該第一資料的類型為該分散式帳本系統的二或更多類型的資料中的區塊資料,由該儲存系統使用指定用於處理該區塊資料的相應類型的處理引擎,其中,基於該區塊資料的特性,將一或多個第一功能配置指定用於處理該區塊資料的該相應類型的該處理引擎;由該儲存系統接收該分散式帳本系統產生的第二資料的處理請求;回應於確定由該分散式帳本系統產生的該第二資料的類型為該分散式帳本系統的二或更多類型的資料中的當前狀態資料,由該儲存系統使用指定用於處理該當前狀態資料的相應類型的處理引擎,其中,基於該當前狀態資料的特性,將一或多個第二功能配置指定用於處理該當前狀態資料的該相應類型的該處理引擎,並且該一或多個第一功 能不同於該一或多個第二功能;以及回應於確定由該分散式帳本系統產生的該第二資料的該類型為該分散式帳本系統的二或更多類型的資料中的該歷史狀態資料,由該儲存系統使用指定用於處理該歷史狀態資料的相應類型的處理引擎,其中,基於該歷史狀態資料的特性,將一或多個第三功能配置指定用於處理該歷史狀態資料的該相應類型的該處理引擎。
- 如請求項1所述的電腦實現的方法,其中,該分散式帳本系統的該二或更多類型的資料更包括交易資料,並且該方法還包括:由該儲存系統接收該分散式帳本系統產生的第三資料的處理請求;以及回應於確定由該分散式帳本系統產生的該第三資料的類型為該分散式帳本系統的二或更多類型的資料中的該交易資料,由該儲存系統使用指定用於處理該交易資料的相應類型的處理引擎,其中,基於該交易資料的特性,將一或多個第四功能配置指定用於處理該交易資料的該相應類型的該處理引擎。
- 如請求項2所述的電腦實現的方法,還包括:由該儲存系統接收複數個處理引擎的配置,其中,該配置設定相應類型的處理引擎,用於根據每個該資料的該二或更多的類型的特徵處理該分散式帳本系統的該資料的該二或更多類型中的每一者。
- 如請求項1所述的電腦實現的方法,其中:由該儲存系統接收該分散式帳本系統產生的該第一資料的該處理請求包括由該儲存系統接收針對該分散式帳本系統產生的該區塊資料的輸入/輸出(I/O)請求;被指定用於處理該分散式帳本系統的該區塊資料的相應類型的該處理引擎包括相應類型的輸入/輸出(I/O)處理引擎,被指定用於基於該區塊資料的特徵執行該分散式帳本系統的該區塊資料的讀取或寫入操作;由該儲存系統接收該分散式帳本系統產生的該第二資料的該處理請求,包括由該儲存系統接收該分散式帳本系統產生的該狀態資料的輸入/輸出(I/O)請求;以及被指定用於處理該分散式帳本系統的該狀態資料的相應類型的該處理引擎包括相應類型的輸入/輸出(I/O)處理引擎,被指定用於基於該狀態資料的特徵執行該分散式帳本系統的該狀態資料的讀取或寫入操作。
- 如請求項1所述的電腦實現的方法,其中:由該儲存系統接收該分散式帳本系統產生的該第一資料的處理請求包括:由該儲存系統接收該分散式帳本系統產生的該區塊資料的資料管理請求;被指定用於處理該分散式帳本系統的該區塊資料的相應類型的該處理引擎包括相應類型的資料管理處理引擎,被指定用於基於該區塊資料的特徵執行該分散式帳本系統 的該區塊資料的第一資料管理操作;由該儲存系統接收該分散式帳本系統產生的該第二資料的該處理請求,包括由該儲存系統接收該分散式帳本系統產生的該狀態資料的資料管理請求;以及被指定用於處理該分散式帳本系統的該狀態資料的該相應類型的該處理引擎包括相應類型的資料管理處理引擎,被指定用於基於該狀態資料的特徵執行該分散式帳本系統的該狀態資料的第二資料管理操作。
- 如請求項1所述的電腦實現的方法,其中,該一或多個第一功能包括對該儲存系統中的該區塊資料進行分層、糾刪編碼和壓縮。
- 如請求項1所述的電腦實現的方法,其中,該一或多個第二功能包括對該儲存系統中的該當前狀態資料進行分層、糾刪編碼、壓縮、狀態快照和壓緊。
- 如請求項1所述的電腦實現的方法,其中,該一或多個第四功能包括對該儲存系統中的該歷史狀態資料進行分層、糾刪編碼和壓縮。
- 一種非暫態的電腦可讀儲存媒體,儲存有一或多個電腦系統可執行的指令,以便執行用於處理資料請求的操作,該操作包括:由儲存系統接收分散式帳本系統產生的第一資料的處 理請求,其中,該分散式帳本系統將資料儲存在區塊鏈的一或多個區塊中,並產生包括區塊資料和狀態資料的二或更多類型的該分散式帳本系統的資料,其中該區塊資料包括區塊鏈中的至少一區塊,且該至少一區塊包括該區塊鏈中前一個區塊的雜湊值,其中該狀態資料包括該分散式帳本系統的世界狀態,並且其中該狀態資料包括當前狀態資料和歷史狀態資料;回應於確定由該分散式帳本系統產生的該第一資料的類型為該分散式帳本系統的二或更多類型的資料中的區塊資料,由該儲存系統使用指定用於處理該區塊資料的相應類型的處理引擎,其中,基於該區塊資料的特性,將一或多個第一功能配置指定用於處理該區塊資料的該相應類型的該處理引擎;由該儲存系統接收該分散式帳本系統產生的第二資料的處理請求;回應於確定由該分散式帳本系統產生的該第二資料的類型為該分散式帳本系統的二或更多類型的資料中的當前狀態資料,由該儲存系統使用指定用於處理該當前狀態資料的相應類型的處理引擎,其中,基於該當前狀態資料的特性,將一或多個第二功能配置指定用於處理該當前狀態資料的該相應類型的該處理引擎,並且該一或多個第一功能不同於該一或多個第二功能;以及回應於確定由該分散式帳本系統產生的該第二資料的該類型為該分散式帳本系統的二或更多類型的資料中的該 歷史狀態資料,由該儲存系統使用指定用於處理該歷史狀態資料的相應類型的處理引擎,其中,基於該歷史狀態資料的特性,將一或多個第三功能配置指定用於處理該歷史狀態資料的該相應類型的該處理引擎。
- 如請求項9所述的非暫態的電腦可讀儲存媒體,其中,該分散式帳本系統的該二或更多類型的資料更包括索引資料,並且該操作更包括:由該儲存系統接收該分散式帳本系統產生的第三資料的處理請求;以及回應於確定由該分散式帳本系統產生的該第三資料的類型為該分散式帳本系統的二或更多類型的資料中的該索引資料,由該儲存系統使用指定用於處理該索引資料的相應類型的處理引擎,其中,基於該索引資料的特性,將一或多個第四功能配置指定用於處理該索引資料的該相應類型的該處理引擎。
- 如請求項10所述的非暫態的電腦可讀儲存媒體,該操作更包括:由該儲存系統接收複數個處理引擎的配置,其中,該配置設定相應類型的處理引擎,用於根據每個該資料的該二或更多的類型的特徵處理該分散式帳本系統的該資料的該二或更多類型中的每一者。
- 如請求項9所述的非暫態的電腦可讀儲存媒體,其中:由該儲存系統接收該分散式帳本系統產生的該第一資料的該處理請求,包括由該儲存系統接收該分散式帳本系 統產生的該區塊資料的輸入/輸出(I/O)請求;被指定用於處理該分散式帳本系統的該區塊資料的相應類型的該處理引擎包括相應類型的輸入/輸出(I/O)處理引擎,被指定用於基於該區塊資料的特徵執行該分散式帳本系統的該區塊資料的讀取或寫入操作;由該儲存系統接收該分散式帳本系統產生的該第二資料的該處理請求,包括由該儲存系統接收該分散式帳本系統產生的該狀態資料的輸入/輸出(I/O)請求;以及被指定用於處理該分散式帳本系統的該狀態資料的相應類型的該處理引擎包括相應類型的輸入/輸出(I/O)處理引擎,被指定用於基於該狀態資料的特徵執行該分散式帳本系統的該狀態資料的讀取或寫入操作。
- 如請求項11所述的非暫態的電腦可讀儲存媒體,其中:由該儲存系統接收該分散式帳本系統產生的該第一資料的該處理請求,包括由該儲存系統接收該分散式帳本系統產生的該區塊資料的資料管理請求;被指定用於處理該分散式帳本系統的該區塊資料的相應類型的該處理引擎包括相應類型的資料管理處理引擎,被指定用於基於該區塊資料的特徵執行該分散式帳本系統的該區塊資料的第一資料管理操作;由該儲存系統接收該分散式帳本系統產生的該第二資料的該處理請求,包括由該儲存系統接收該分散式帳本系統產生的該狀態資料的資料管理請求;以及 被指定用於處理該分散式帳本系統的該狀態資料的該相應類型的該處理引擎包括相應類型的資料管理處理引擎,被指定用於基於該狀態資料的特徵執行該分散式帳本系統的該狀態資料的第二資料管理操作。
- 如請求項9所述的非暫態的電腦可讀儲存媒體,其中,該一或多個第一功能包括對該儲存系統中的該區塊資料進行分層、糾刪編碼及壓縮。
- 如請求項9所述的非暫態的電腦可讀儲存媒體,其中,該一或多個第二功能包括對該儲存系統中的該當前狀態資料進行分層、糾刪編碼、壓縮、狀態快照及壓緊。
- 如請求項9所述的非暫態的電腦可讀儲存媒體,其中,該一或多個第四功能包括對該儲存系統中的歷史狀態資料進行分層、糾刪編碼及壓縮。
- 一種用於處理資料請求的儲存系統,包括:一個或多個處理器;以及耦接至該一個或多個處理器且其上儲存有指令的一個或多個電腦可讀記憶體,該指令能由該一個或多個處理器執行以執行包括以下的操作:由該儲存系統接收分散式帳本系統產生的第一資料的處理請求,其中,該分散式帳本系統將資料儲存在區塊鏈的一或多個區塊中,並產生包括區塊資料和狀態資料的二或更多類型的該分散式帳本系統的資料,其中該區塊資料 包括區塊鏈中的至少一區塊,且該至少一區塊包括該區塊鏈中前一個區塊的雜湊值,其中該狀態資料包括該分散式帳本系統的世界狀態,並且其中該狀態資料包括當前狀態資料和歷史狀態資料;回應於確定由該分散式帳本系統產生的該第一資料的類型為該分散式帳本系統的二或更多類型的資料中的區塊資料,由該儲存系統使用指定用於處理該區塊資料的相應類型的處理引擎,其中,基於該區塊資料的特性,將一或多個第一功能配置指定用於處理該區塊資料的該相應類型的處理引擎;由該儲存系統接收該分散式帳本系統產生的第二資料的處理請求;回應於確定由該分散式帳本系統產生的該第二資料的類型為該分散式帳本系統的二或更多類型的資料中的當前狀態資料,由該儲存系統使用指定用於處理該當前狀態資料的相應類型的處理引擎,其中,基於該當前狀態資料的特性,將一或多個第二功能配置指定用於處理該當前狀態資料的該相應類型的該處理引擎,並且該一或多個第一功能不同於該一或多個第二功能;以及回應於確定由該分散式帳本系統產生的該第二資料的該類型為該分散式帳本系統的二或更多類型的資料中的該歷史狀態資料,由該儲存系統使用指定用於處理該歷史狀態資料的相應類型的處理引擎,其中,基於該歷史狀態資料的特性,將一或多個第三功能配置指定用於處理該歷史 狀態資料的該相應類型的該處理引擎。
- 如請求項17所述的儲存系統,其中,該分散式帳本系統的該二或更多類型的資料更包括交易資料和索引資料,並且該操作更包括:由該儲存系統接收該分散式帳本系統產生的第三資料的處理請求;回應於確定由該分散式帳本系統產生的該第三資料的類型為該分散式帳本系統的二或更多類型的資料中的該交易資料,由該儲存系統使用指定用於處理該交易資料的相應類型的處理引擎,其中,基於該交易資料的特性,將一或多個第四功能配置指定用於處理該交易資料的該相應類型的該處理引擎;由該儲存系統接收該分散式帳本系統產生的第四資料的處理請求;以及回應於確定由該分散式帳本系統產生的該第四資料的類型為該分散式帳本系統的二或更多類型的資料中的該索引資料,由該儲存系統使用指定用於處理該索引資料的相應類型的處理引擎,其中,基於該索引資料的特性,將一或多個第五功能配置指定用於處理該索引資料的該相應類型的該處理引擎。
- 如請求項18所述的儲存系統,該操作更包括:由該儲存系統接收複數個處理引擎的配置,其中,該配置設定相應類型的處理引擎,用於根據每個該資料的該二或更多的類型的特徵處理該分散式帳本系統的該資料 的該二或更多類型中的每一者。
- 如請求項17所述的儲存系統,其中:由該儲存系統接收該分散式帳本系統產生的該第一資料的該處理請求,包括由該儲存系統接收該分散式帳本系統產生的該區塊資料的輸入/輸出(I/O)請求;被指定用於處理該分散式帳本系統的該區塊資料的相應類型的該處理引擎包括相應類型的輸入/輸出(I/O)處理引擎,被指定用於基於該區塊資料的特徵執行該分散式帳本系統的該區塊資料的讀取或寫入操作;由該儲存系統接收該分散式帳本系統產生的該第二資料的該處理請求,包括由該儲存系統接收該分散式帳本系統產生的該狀態資料的輸入/輸出(I/O)請求;以及被指定用於處理該分散式帳本系統的該狀態資料的相應類型的該處理引擎包括相應類型的輸入/輸出(I/O)處理引擎,被指定用於基於該狀態資料的特徵執行該分散式帳本系統的該狀態資料的讀取或寫入操作。
- 如請求項17所述的儲存系統,其中:由該儲存系統接收該分散式帳本系統產生的該第一資料的該處理請求,包括由該儲存系統接收該分散式帳本系統產生的該區塊資料的資料管理請求;被指定用於處理該分散式帳本系統的該區塊資料的相應類型的該處理引擎包括相應類型的資料管理處理引擎,被指定用於基於該區塊資料的特徵執行該分散式帳本系統的該區塊資料的第一資料管理操作; 由該儲存系統接收該分散式帳本系統產生的該第二資料的該處理請求,包括由該儲存系統接收該分散式帳本系統產生的該狀態資料的資料管理請求;以及被指定用於處理該分散式帳本系統的該狀態資料的該相應類型的該處理引擎包括相應類型的資料管理處理引擎,被指定用於基於該狀態資料的特徵執行該分散式帳本系統的該狀態資料的第二資料管理操作。
- 如請求項17所述的儲存系統,其中,該一或多個第一功能包括對該儲存系統中的區塊資料進行分層、糾刪編碼及壓縮。
- 如請求項17所述的儲存系統,其中,該一或多個第二功能包括對該儲存系統中的該當前狀態資料進行分層、糾刪編碼、壓縮、狀態快照及壓緊。
- 如請求項17所述的儲存系統,其中,該一或多個第五功能包括對該儲存系統中的該歷史狀態資料進行分層、糾刪編碼及壓縮。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2019/105679 WO2019228568A2 (en) | 2019-09-12 | 2019-09-12 | Log-structured storage systems |
WOPCT/CN2019/105679 | 2019-09-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202117529A TW202117529A (zh) | 2021-05-01 |
TWI759789B true TWI759789B (zh) | 2022-04-01 |
Family
ID=68699023
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109123250A TWI759789B (zh) | 2019-09-12 | 2020-07-09 | 電腦實現的方法、非暫態的電腦可讀儲存媒體及儲存系統 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11423015B2 (zh) |
EP (1) | EP3695328A4 (zh) |
CN (1) | CN111886582A (zh) |
SG (1) | SG11202002614XA (zh) |
TW (1) | TWI759789B (zh) |
WO (1) | WO2019228568A2 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11204911B2 (en) * | 2020-03-20 | 2021-12-21 | Sap Se | Efficient and non-disruptive online defragmentation with record locking |
US11467746B2 (en) | 2020-04-07 | 2022-10-11 | Vmware, Inc. | Issuing efficient writes to erasure coded objects in a distributed storage system via adaptive logging |
US11625370B2 (en) * | 2020-04-07 | 2023-04-11 | Vmware, Inc. | Techniques for reducing data log recovery time and metadata write amplification |
CN113590020A (zh) * | 2020-04-30 | 2021-11-02 | 伊姆西Ip控股有限责任公司 | 用于数据管理的方法、设备和计算机程序产品 |
CN111737265B (zh) * | 2020-07-24 | 2020-12-04 | 支付宝(杭州)信息技术有限公司 | 区块数据访问方法、区块数据存储方法及装置 |
CN112398481B (zh) * | 2020-11-20 | 2024-03-19 | 南京轨道交通系统工程有限公司 | 反馈式匹配预测多级实时压缩系统及方法 |
CN112527896B (zh) * | 2020-11-30 | 2024-06-04 | 东软集团股份有限公司 | 区块链账本数据的处理方法、装置、存储介质及电子设备 |
US20220173889A1 (en) * | 2020-11-30 | 2022-06-02 | Motional Ad Llc | Secure Safety-Critical System Log |
CN112291372B (zh) * | 2020-12-28 | 2021-04-13 | 腾讯科技(深圳)有限公司 | 区块链的异步落账方法、装置、介质及电子设备 |
US11474719B1 (en) | 2021-05-13 | 2022-10-18 | Vmware, Inc. | Combining the metadata and data address spaces of a distributed storage object via a composite object configuration tree |
US11789617B2 (en) * | 2021-06-29 | 2023-10-17 | Acronis International Gmbh | Integration of hashgraph and erasure coding for data integrity |
US11789936B2 (en) * | 2021-08-31 | 2023-10-17 | Lemon Inc. | Storage engine for hybrid data processing |
US11841845B2 (en) | 2021-08-31 | 2023-12-12 | Lemon Inc. | Data consistency mechanism for hybrid data processing |
CN114442962B (zh) * | 2022-02-15 | 2024-07-02 | 北京百度网讯科技有限公司 | 一种数据读方法、装置、设备以及存储介质 |
CN116074388B (zh) * | 2023-03-28 | 2023-06-27 | 武汉卓鹰世纪科技有限公司 | 一种基于日志队列的流量转发方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201732666A (zh) * | 2016-02-23 | 2017-09-16 | 恩鏈控股有限公司 | 使用分散式雜湊表與區塊鏈來保護電腦軟體之方法與系統 |
US20180268151A1 (en) * | 2017-03-19 | 2018-09-20 | International Business Machines Corporation | Automatic generating analytics from blockchain data |
CN109144414A (zh) * | 2018-07-27 | 2019-01-04 | 阿里巴巴集团控股有限公司 | 区块链数据的多级存储方法和装置 |
US10296258B1 (en) * | 2018-03-09 | 2019-05-21 | Pure Storage, Inc. | Offloading data storage to a decentralized storage network |
TW201933204A (zh) * | 2018-01-29 | 2019-08-16 | 香港商阿里巴巴集團服務有限公司 | 產生智能合約的方法及裝置 |
Family Cites Families (114)
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 |
US5276835A (en) | 1990-12-14 | 1994-01-04 | International Business Machines Corporation | Non-blocking serialization for caching data in a shared cache |
US5287473A (en) | 1990-12-14 | 1994-02-15 | International Business Machines Corporation | Non-blocking serialization for removing data from a shared cache |
EP0976034B1 (en) | 1996-01-24 | 2005-10-19 | Sun Microsystems, Inc. | Method and apparatus for stack caching |
JP3747525B2 (ja) | 1996-08-28 | 2006-02-22 | 株式会社日立製作所 | 並列データベースシステム検索方法 |
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 |
US7822749B2 (en) | 2005-11-28 | 2010-10-26 | Commvault Systems, Inc. | Systems and methods for classifying and transferring information in a storage network |
US7660800B2 (en) | 2005-11-28 | 2010-02-09 | Commvault Systems, Inc. | Systems and methods for classifying and transferring information in a storage network |
WO2008008863A2 (en) | 2006-07-12 | 2008-01-17 | Sipera Systems, Inc. | System, method and apparatus for troubleshooting an ip network |
US9135322B2 (en) | 2006-09-18 | 2015-09-15 | Emc Corporation | Environment classification |
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 |
US8600939B2 (en) * | 2011-10-24 | 2013-12-03 | Oracle International Corporation | Writable snapshots |
WO2013070803A1 (en) | 2011-11-07 | 2013-05-16 | 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 |
CN102880704A (zh) * | 2012-09-25 | 2013-01-16 | 上海证券交易所 | 一种新型的并发内存数据组织与访问方法 |
US20140181438A1 (en) | 2012-12-21 | 2014-06-26 | Commvault Systems, Inc. | Filtered reference copy of secondary storage data in a data storage system |
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 |
US9501501B2 (en) | 2013-03-15 | 2016-11-22 | Amazon Technologies, Inc. | Log record management |
US9514007B2 (en) | 2013-03-15 | 2016-12-06 | Amazon Technologies, Inc. | Database system with database engine and separate distributed storage service |
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 |
CN110825324B (zh) * | 2013-11-27 | 2023-05-30 | 北京奥星贝斯科技有限公司 | 混合存储的控制方法及混合存储系统 |
US9223843B1 (en) | 2013-12-02 | 2015-12-29 | Amazon Technologies, Inc. | Optimized log storage for asynchronous log updates |
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 |
US11301457B2 (en) * | 2015-06-29 | 2022-04-12 | Microsoft Technology Licensing, Llc | Transactional database layer above a distributed key/value store |
US11074236B2 (en) | 2015-09-24 | 2021-07-27 | Hewlett Packard Enterprise Development Lp | Hierarchical index involving prioritization of data content of interest |
US20170213221A1 (en) * | 2016-01-26 | 2017-07-27 | Bank Of America Corporation | System for tracking and validation of multiple instances of an entity in a process data network |
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 |
WO2017142528A1 (en) * | 2016-02-17 | 2017-08-24 | General Mills, Inc. | Paperboard carton |
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 |
US10853268B2 (en) | 2016-06-15 | 2020-12-01 | Hitachi, Ltd. | Parity generating information processing system |
CN106201338B (zh) * | 2016-06-28 | 2019-10-22 | 华为技术有限公司 | 数据存储方法及装置 |
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 |
US10445302B2 (en) | 2017-01-03 | 2019-10-15 | International Business Machines Corporation | Limiting blockchain size to optimize performance |
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 |
CN108733313B (zh) | 2017-04-17 | 2021-07-23 | 伊姆西Ip控股有限责任公司 | 利用预备盘建立多级闪速缓存的方法、设备和计算机可读介质 |
US11064001B2 (en) | 2017-05-09 | 2021-07-13 | EMC IP Holding Company LLC | Atomically committing related streaming data across multiple distributed resources |
CN110612697B (zh) | 2017-05-09 | 2023-11-07 | 埃森哲环球解决方案有限公司 | 用于高效信息检索的数据存储层索引的方法和系统 |
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 |
CN107526630A (zh) * | 2017-07-31 | 2017-12-29 | 杭州安恒信息技术有限公司 | 一种解决分布式引擎通信的方法 |
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 |
US11386044B2 (en) * | 2017-08-16 | 2022-07-12 | Hewlett Packard Enterprise Development Lp | Tiered storage in a distributed file system |
US20190370225A1 (en) * | 2017-08-16 | 2019-12-05 | Mapr Technologies, Inc. | Tiered storage in a distributed file system |
CN107608773B (zh) * | 2017-08-24 | 2020-08-04 | 阿里巴巴集团控股有限公司 | 任务并发处理方法、装置及计算设备 |
US10868673B2 (en) * | 2017-09-25 | 2020-12-15 | Sap Se | Network access control based on distributed ledger |
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 |
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 |
US11243945B2 (en) | 2017-12-11 | 2022-02-08 | International Business Machines Corporation | Distributed database having blockchain attributes |
US10949303B2 (en) * | 2017-12-11 | 2021-03-16 | Fungible, Inc. | Durable block storage in data center access nodes with inline erasure coding |
US10592411B2 (en) | 2018-01-09 | 2020-03-17 | Rubrik, Inc. | Garbage collection of expired snapshots |
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 |
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 |
US10673943B2 (en) | 2018-05-02 | 2020-06-02 | Commvault Systems, Inc. | Network storage backup using distributed media agents |
CN108646983B (zh) | 2018-05-08 | 2021-04-06 | 北京融链科技有限公司 | 在区块链上存储业务数据的处理方法和装置 |
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 |
CN109194708B (zh) * | 2018-07-24 | 2021-07-13 | 哈尔滨工程大学 | 一种基于区块链技术的分布式存储系统及其身份认证方法 |
CN109034809B (zh) | 2018-08-16 | 2021-08-17 | 北京京东尚科信息技术有限公司 | 区块链的生成方法、装置、区块链节点及存储介质 |
CN109241359A (zh) | 2018-08-18 | 2019-01-18 | 深圳市网心科技有限公司 | 区块链节点设备、区块链系统、区块数据处理系统和方法 |
US10901957B2 (en) | 2018-08-29 | 2021-01-26 | International Business Machines Corporation | Checkpointing for increasing efficiency of a blockchain |
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 |
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 |
CN109491996A (zh) | 2018-09-27 | 2019-03-19 | 上海点融信息科技有限责任公司 | 用于区块链网络的区块生成方法、区块数据访问方法、计算设备、存储介质 |
CN110138753B (zh) * | 2019-04-26 | 2021-07-23 | 中国工商银行股份有限公司 | 分布式消息服务系统、方法、设备及计算机可读存储介质 |
CN110187993A (zh) * | 2019-05-14 | 2019-08-30 | 广州欧科信息技术股份有限公司 | 一种异常运行的处理方法、系统、电子设备及存储介质 |
-
2019
- 2019-09-12 SG SG11202002614XA patent/SG11202002614XA/en unknown
- 2019-09-12 CN CN201980004712.1A patent/CN111886582A/zh active Pending
- 2019-09-12 EP EP19811039.7A patent/EP3695328A4/en not_active Withdrawn
- 2019-09-12 WO PCT/CN2019/105679 patent/WO2019228568A2/en unknown
- 2019-12-12 US US16/712,506 patent/US11423015B2/en active Active
-
2020
- 2020-07-09 TW TW109123250A patent/TWI759789B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201732666A (zh) * | 2016-02-23 | 2017-09-16 | 恩鏈控股有限公司 | 使用分散式雜湊表與區塊鏈來保護電腦軟體之方法與系統 |
US20180268151A1 (en) * | 2017-03-19 | 2018-09-20 | International Business Machines Corporation | Automatic generating analytics from blockchain data |
TW201933204A (zh) * | 2018-01-29 | 2019-08-16 | 香港商阿里巴巴集團服務有限公司 | 產生智能合約的方法及裝置 |
US10296258B1 (en) * | 2018-03-09 | 2019-05-21 | Pure Storage, Inc. | Offloading data storage to a decentralized storage network |
CN109144414A (zh) * | 2018-07-27 | 2019-01-04 | 阿里巴巴集团控股有限公司 | 区块链数据的多级存储方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US20210081403A1 (en) | 2021-03-18 |
WO2019228568A2 (en) | 2019-12-05 |
EP3695328A4 (en) | 2020-12-09 |
EP3695328A2 (en) | 2020-08-19 |
US11423015B2 (en) | 2022-08-23 |
TW202117529A (zh) | 2021-05-01 |
CN111886582A (zh) | 2020-11-03 |
SG11202002614XA (en) | 2020-04-29 |
WO2019228568A3 (en) | 2020-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI759789B (zh) | 電腦實現的方法、非暫態的電腦可讀儲存媒體及儲存系統 | |
TWI766309B (zh) | 日誌結構儲存系統 | |
TWI737395B (zh) | 日誌結構儲存系統及方法 | |
CN111183420B (zh) | 日志结构存储系统 | |
EP3673376B1 (en) | Log-structured storage systems | |
TWI733514B (zh) | 儲存系統、區塊鏈網路的網路節點以及基於區塊鏈的日誌結構儲存系統 | |
CN111183450B (zh) | 日志结构存储系统 | |
EP3695303B1 (en) | Log-structured storage systems | |
EP3695304B1 (en) | Log-structured storage systems | |
US10942852B1 (en) | Log-structured storage systems |