TWI829963B - 用於在鍵值鏈中鏈接多個鍵值區塊的方法、系統以及非暫時性電腦可讀媒體 - Google Patents
用於在鍵值鏈中鏈接多個鍵值區塊的方法、系統以及非暫時性電腦可讀媒體 Download PDFInfo
- Publication number
- TWI829963B TWI829963B TW109131608A TW109131608A TWI829963B TW I829963 B TWI829963 B TW I829963B TW 109131608 A TW109131608 A TW 109131608A TW 109131608 A TW109131608 A TW 109131608A TW I829963 B TWI829963 B TW I829963B
- Authority
- TW
- Taiwan
- Prior art keywords
- block
- key
- internal key
- internal
- value
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000011084 recovery Methods 0.000 claims abstract description 73
- 238000013500 data storage Methods 0.000 claims description 16
- 238000012217 deletion Methods 0.000 claims description 12
- 230000037430 deletion Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 14
- 230000007246 mechanism Effects 0.000 description 12
- 238000005259 measurement Methods 0.000 description 3
- 230000003321 amplification Effects 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000005906 menstruation Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1466—Management of the backup or restore process to make the backup process non-disruptive
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- 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/21—Design, administration or maintenance of databases
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- 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
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本發明提供一種在KV鏈中鏈接多個KV區塊以確保資料一致性的方法,方法包含:將內部鍵分配給第一KV區塊及恢復開始內部鍵兩者;分配與內部鍵不同且對應於下一個KV區塊的下一個內部鍵;以及將相應使用者鍵值封裝於第一KV區塊中及下一個KV區塊中,其中第一KV區塊是藉由讀取恢復開始內部鍵來存取,且其中下一個KV區塊是藉由讀取第一KV區塊的下一個內部鍵來存取。
Description
本揭露的一或多個實施例大體上是關於資料儲存(data storage)。
本申請案主張2019年9月20日申請的名稱為具有無預寫式日誌機制的可靠鍵值儲存器(RELIABLE KEY-VALUE STORE WITH WRITE-AHEAD-LOG-LESS MECHANISM)的美國臨時申請案第62/903,651號的優先權及權益,所述申請案的全部內容在此併入本文中。
一些資料庫及檔案系統將相同資料寫入兩次以確保一致性(consistency)。舉例而言,一些鍵值(key-value,KV)儲存器將預寫式日誌(write-ahead log,WAL)用作用於確保資料一致性以支持KV儲存器的可靠性的機制。
亦即,在一些資料庫中,可使用WAL初始地寫入KV區塊,在更新實際資料及用於在系統崩潰/電力中斷(系統故障)的情況下輔助資料恢復的元資料(metadata)之前,此可為支持系統可靠性的顯著瓶頸(significant bottleneck)。此後,當更新對應於KV區塊的元資料時,第二次寫入KV區塊。
關係資料庫及檔案系統亦出於一致性起見而將資料寫入兩次。舉例而言,關係資料庫管理系統可與儲存引擎一起使用雙重寫入(double write),而其他系統可使用日誌記錄檔案系統(journaling file system)。
因此,藉由將資料寫入兩次,系統經歷了增加的開銷(例如使所使用的頻寬加倍),從而導致輸入-輸出(input-output,IO)擁塞且增加寫入放大因數(write amplification factor,WAF)。
本文中所描述的實施例提供對資料儲存的改進。
根據本揭露的一些實施例,提供一種在KV鏈中鏈接多個KV區塊以確保資料一致性的方法,所述方法包含:將內部鍵分配給第一KV區塊及恢復開始內部鍵兩者;分配與內部鍵不同且對應於下一個KV區塊的下一個內部鍵;以及將相應使用者鍵值封裝於第一KV區塊中及下一個KV區塊中,其中第一KV區塊藉由讀取恢復開始內部鍵來存取,且其中下一個KV區塊藉由讀取第一KV區塊的下一個內部鍵來存取。
所述方法可更包含:更新第一KV區塊的全部使用者鍵值;產生或更新元資料表以參考第一KV區塊;將第一KV區塊標
記為有資格自KV裝置中刪除;以及將恢復開始內部鍵更新為第一KV區塊的下一個內部鍵。
所述方法可更包含靜態地指派恢復開始鍵,其中恢復開始內部鍵藉由讀取恢復開始鍵來存取。
所述方法可更包含:在儲存第一KV區塊及下一個KV區塊的KV裝置的系統故障之後,自KV裝置讀取恢復開始鍵;使用恢復開始鍵來檢索恢復開始內部鍵;使用恢復開始內部鍵來定位及讀取第一KV區塊;自第一KV區塊檢索下一個KV區塊的下一個內部鍵;以及使用下一個內部鍵來定位及讀取下一個KV區塊。
所述方法可更包含:讀取額外的下一個內部鍵作為下一個KV區塊的裝置值的部分,額外的下一個內部鍵對應於後續的下一個KV區塊;使用額外的下一個內部鍵來定位及讀取後續的下一個KV區塊;以及在對應的下一個內部鍵對應於未在KV裝置中發現的KV區塊之前一直重複。
所述方法可更包含:判定第一KV區塊不具有有效的使用者鍵;將第一KV區塊標記為有資格刪除;以及將恢復開始內部鍵更新為第一KV區塊的下一個內部鍵,所述下一個內部鍵對應於後續KV區塊。
下一個內部鍵可包含第一KV區塊中的裝置值的部分,且包含下一個KV區塊的裝置鍵。
根據本揭露的其他實施例,提供一種用於藉由在KV鏈中鏈接多個KV區塊來確保資料一致性的系統,所述系統包含鍵值儲存引擎,所述鍵值儲存引擎經組態以:將內部鍵分配給第一KV區塊及恢復開始內部鍵兩者;分配與內部鍵不同且對應於下一
個KV區塊的下一個內部鍵;以及將相應使用者鍵值封裝於第一KV區塊中及下一個KV區塊中,其中第一KV區塊藉由讀取恢復開始內部鍵來存取,且其中下一個KV區塊藉由讀取第一KV區塊的下一個內部鍵來存取。
鍵值儲存引擎可進一步經組態以更新第一KV區塊的全部使用者鍵值;產生或更新元資料表以參考第一KV區塊;將第一KV區塊標記為有資格自KV裝置中刪除;以及將恢復開始內部鍵更新為第一KV區塊的下一個內部鍵。
鍵值儲存引擎可進一步經組態以靜態地指派恢復開始鍵,其中恢復開始內部鍵藉由讀取恢復開始鍵來存取。
鍵值儲存引擎可進一步經組態以在儲存第一KV區塊及下一個KV區塊的KV裝置的系統故障之後,自KV裝置讀取恢復開始鍵;使用恢復開始鍵來檢索恢復開始內部鍵;使用恢復開始內部鍵來定位及讀取第一KV區塊;自第一KV區塊檢索下一個KV區塊的下一個內部鍵;以及使用下一個內部鍵來定位及讀取下一個KV區塊。
鍵值儲存引擎可進一步經組態以讀取額外的下一個內部鍵作為下一個KV區塊的裝置值的部分,額外的下一個內部鍵對應於後續的下一個KV區塊;使用額外的下一個內部鍵來定位及讀取後續的下一個KV區塊;以及在對應的下一個內部鍵對應於未在KV裝置中發現的KV區塊之前一直重複。
鍵值儲存引擎可進一步經組態以判定第一KV區塊不具有有效的使用者鍵;將第一KV區塊標記為有資格刪除;以及將恢復開始內部鍵更新為第一KV區塊的下一個內部鍵,所述下一個
內部鍵對應於後續KV區塊。
下一個內部鍵可包含第一KV區塊中的裝置值的部分,且包含下一個KV區塊的裝置鍵。
根據本揭露的又其他實施例,提供一種實施於用於在KV鏈中鏈接多個KV區塊以確保資料一致性的系統上的非暫時性電腦可讀媒體,所述非暫時性電腦可讀媒體具有電腦程式碼,所述電腦程式碼在處理器上經執行時實施一種資料儲存的方法,所述方法包含:將內部鍵分配給第一KV區塊及恢復開始內部鍵兩者;分配與內部鍵不同且對應於下一個KV區塊的下一個內部鍵;以及將相應使用者鍵值封裝於第一KV區塊中及下一個KV區塊中,其中第一KV區塊藉由讀取恢復開始內部鍵來存取,且其中下一個KV區塊藉由讀取第一KV區塊的下一個內部鍵來存取
電腦程式碼在處理器上經執行時可藉由以下操作進一步實施資料儲存的方法:更新第一KV區塊的全部使用者鍵值;產生或更新元資料表以參考第一KV區塊;將第一KV區塊標記為有資格自KV裝置中刪除;以及將恢復開始內部鍵更新為第一KV區塊的下一個內部鍵。
電腦程式碼在處理器上經執行時可藉由靜態地指派恢復開始鍵進一步實施資料儲存的方法,其中恢復開始內部鍵藉由讀取恢復開始鍵來存取。
在儲存第一KV區塊及下一個KV區塊的KV裝置的系統故障之後,電腦程式碼在處理器上經執行時可藉由以下操作進一步實施資料儲存的方法:自KV裝置讀取恢復開始鍵;使用恢復開始鍵來檢索恢復開始內部鍵;使用恢復開始內部鍵來定位及讀
取第一KV區塊;自第一KV區塊檢索下一個KV區塊的下一個內部鍵;以及使用下一個內部鍵來定位及讀取下一個KV區塊。
電腦程式碼在處理器上經執行時可藉由以下操作進一步實施資料儲存的方法:讀取額外的下一個內部鍵作為下一個KV區塊的裝置值的部分,額外的下一個內部鍵對應於後續的下一個KV區塊;使用額外的下一個內部鍵來定位及讀取後續的下一個KV區塊;以及在對應的下一個內部鍵對應於未在KV裝置中發現的KV區塊之前一直重複。
電腦程式碼在處理器上經執行時可藉由以下操作進一步實施資料儲存的方法:判定第一KV區塊不具有有效的使用者鍵;將第一KV區塊標記為有資格刪除;以及將恢復開始內部鍵更新為第一KV區塊的下一個內部鍵,下一個內部鍵對應於後續KV區塊。
因此,本揭露的實施例的系統能夠由資料儲存裝置藉由減少確保資料一致性所需的寫入的數目而得以改進。
140:恢復範圍
160:開始KV區塊
170、575:元資料表
180a、380a:第一KV區塊
180b、380b:第二KV區塊
180c、380c:第三KV區塊
180d:第四KV區塊
200a、200b:系統
210:資料庫/檔案系統
220a:區塊裝置
220b:KV裝置
230:檔案/鍵
240:寫入請求
250:資料
260:預寫式日誌/日記
270、570:元資料
280、380、380a、380b、380c、480、580、580a、580b、580c、580f:KV區塊
290:恢復開始區塊
310:使用者
320、520:KV裝置
330、430、530:使用者鍵值
340、340a、340b、340c、440、540:內部鍵
345、345a、445、545:下一個iKey
350:KV儲存引擎
360、560:開始iKey
365、565:恢復開始鍵
442:預先分配的iKey
442a:新的預先分配的iKey
490:iKey產生器
580d、580e:中間KV區塊
圖1為描繪根據本揭露的實施例的無WAL恢復機制的總體概念的方塊圖。
圖2A為描繪用於確保系統一致性的機制的方塊圖。
圖2B為描繪根據本揭露的實施例的用於確保系統一致性的無WAL恢復機制的方塊圖。
圖3為描繪根據本揭露的實施例的在KV裝置中產生KV鏈
的方法的方塊圖。
圖4為描繪根據本揭露的實施例的在KV裝置中產生要在KV鏈中使用的KV區塊的方法的方塊圖。
圖5為描繪根據本揭露的實施例的在KV裝置中更新元資料表及開始iKey的方法的方塊圖。
參考實施例的詳細描述及隨附圖式可更易於理解本發明概念及實現本發明概念的方法的特徵。在下文中,將參考隨附圖式詳細地描述實施例。然而,所描述實施例可以各種不同形式體現,且不應解釋為僅限於本文中的所說明實施例。確切而言,提供此等實施例作為實例以使得本揭露將為透徹且完整的,且將向所屬技術領域中具有通常知識者充分傳達本發明概念的態樣及特徵。因此,可能並未描述於所屬技術領域中具有通常知識者完全理解本發明概念的態樣及特徵不需要的程序、元件以及技術。
除非另外指出,否則相似附圖標號貫穿附圖及書面描述表示相似元件,且因此,將不重複其描述。另外,可不展示與實施例的描述無關的部分以使描述清晰。在圖式中,為了清楚起見,可放大元件、層以及區的相對大小。
在詳細描述中,出於解釋之目的,闡述若干具體細節以提供對各種實施例的透徹理解。然而,顯而易見的是,可在不具有此等具體細節或具有一或多個等效配置的情況下實踐各種實施例。在其他情況下,以方塊圖形式展示熟知的結構及裝置以便避免不必要地混淆各種實施例。
應理解,儘管在本文中可使用術語「第一」、「第二」、「第三」等來描述各種元件、組件、區、層及/或區段,但此等元件、組件、區、層及/或區段不應受此等術語限制。此等術語用於區別一個元件、組件、區、層或區段與另一元件、組件、區、層或區段。因此,在不脫離本揭露的精神及範疇的情況下,下文所描述的第一元件、組件、區、層或區段可被稱為第二元件、組件、區、層或區段。
本文中所使用的術語僅出於描述特定實施例的目的,且並不意欲限制本揭露。如本文中所使用,除非上下文另外明確指示,否則單數形式「一(a/an)」亦意欲包含複數形式。應進一步瞭解,術語「包括(comprises/comprising)」、「具有(have/having)」以及「包含(includes/including)」當用於本說明書中時指定存在所陳述特徵、整數、步驟、操作、元件及/或組件,但不排除存在或添加一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組。如本文中所使用,術語「及/或」包含相關聯的所列項目中的一或多者的任何及所有組合。
如本文所使用,術語「實質上」、「約」、「近似」以及類似術語用作表示近似的術語且並不用作表示程度的術語,且意欲考慮將由所屬技術領域中具有通常知識者識別的量測值或計算值的固有偏差。考慮到所討論的量測及與特定數量的量測相關聯的誤差(亦即,量測系統的限制),如本文中所使用的「約」或「近似」包含所陳述值並且意指在如由所屬技術領域中具有通常知識者所判定的特定值的可接受偏差範圍內。舉例而言,「約」可意指在一或多個標準偏差內,或在所陳述值的±30%、±20%、±10%、±5%
內。另外,當描述本揭露的實施例時,「可」的使用指代「本揭露的一或多個實施例」。
當可以不同方式實施實施例時,可以與所描述次序不同的方式執行具體程序次序。舉例而言,可實質上同時執行或以與所描述次序相反的次序執行兩個連續描述的程序。
本文中所描述的根據本揭露的實施例的電子裝置或電氣裝置及/或任何其他相關裝置或組件可利用任何適合的硬體、韌體(例如特殊應用積體電路)、軟體,或軟體、韌體以及硬體的組合來實施。舉例而言,此等裝置的各種組件可形成於一個積體電路(integrated circuit,IC)晶片上或單獨IC晶片上。另外,此等裝置的各種組件可實施於可撓性印刷電路膜、帶載體封裝(tape carrier package,TCP)、印刷電路板(printed circuit board;PCB)上或形成於一個基底上。
另外,此等裝置的各種組件可為程序或執行緒(thread),所述程序或執行緒在一或多個處理器上運行、在一或多個計算裝置中運行、執行電腦程式指令且與其他系統組件交互以用於執行本文中所描述的各種功能性。電腦程式指令儲存於記憶體中,所述記憶體可使用諸如(例如)隨機存取記憶體(random access memory,RAM)的標準記憶體裝置而實施於計算裝置中。電腦程式指令亦可儲存於諸如(例如)CD-ROM、快閃驅動器等的其他非暫時性電腦可讀媒體(non-transitory computer readable media)中。此外,所屬技術領域中具有通常知識者應認識到,在不脫離本揭露的實施例的精神及範疇的情況下,各種計算裝置的功能性可經組合或整合至單個計算裝置中,或特定計算裝置的功能性可橫跨一
或多個其他計算裝置分佈。
除非另有定義,否則本文中所使用的所有術語(包含技術及科學術語)具有與由本發明概念所屬的技術領域中具有通常知識者通常理解的意義相同的意義。應進一步理解,術語(諸如常用詞典中所定義之彼等術語)應解釋為具有與其在相關技術的上下文及/或本說明書中的含義相一致的含義,且不應以理想化或過度正式的意義進行解釋,除非本文中明確地如此定義。
本揭露的實施例能夠在不使用預寫式日誌(WAL)的情況下藉由儲存裝置建構恢復訊息,從而藉由減少開銷(overhead)、輸入-輸出(IO)擁塞(congestion)及/或寫入放大因數(write amplification factor,WAF)來改進資料儲存的領域。
圖1為描繪根據本揭露的實施例的無WAL恢復機制的總體概念的方塊圖。
參看圖1,避免對根據本揭露的實施例的預寫式日誌(WAL)的需求的恢復機制通常可如本文中所描述一般起作用。「開始KV區塊」160可儲存於資料庫/檔案系統(例如圖2A及圖2B中所繪示的資料庫/檔案系統210)中,且寫入至對應KV裝置(例如圖2B中所繪示的KV裝置220b)。開始KV區塊160用於在崩潰或意外的電力中斷(例如系統故障)情況下發起恢復。藉由使用KV儲存引擎(例如圖3的KV儲存引擎350),開始KV區塊160藉由在開始KV區塊160中包含第一KV區塊180a的內部鍵(internal key,iKey)而鏈接至第一KV區塊180a。亦即,KV儲存引擎保留開始KV區塊160,且每當第一KV區塊180a改變時即更新開始KV區塊160。類似地,KV儲存引擎藉由在第一KV
區塊180a中包含第二KV區塊180b的iKey來將第一KV區塊180a鏈接至第二KV區塊180b。第二KV區塊180b隨後以類似方式進一步鏈接至第三KV區塊180c,所述第三KV區塊180c又鏈接至第四KV區塊180d等。因此,第一KV區塊180a至第四KV區塊180d形成KV鏈,且在系統故障的情況下包含於恢復範圍140中。應注意,即使當更新區塊時,恢復範圍140內的KV區塊180a至KV區塊180d中亦無一者可被刪除。相反的,為防止截斷KV鏈,僅可刪除恢復範圍140外部的鍵。此外,恢復範圍140可稍後利用即將出現的KV區塊得以擴展。
此後,舉例而言,第一KV區塊180a及第二KV區塊180b的鍵值可藉由一或多個對應KV裝置的資料庫/檔案系統經更新或寫入。隨後,可更新元資料表170以指示已成功地更新或寫入第一KV區塊180a及第二KV區塊180b。一旦更新元資料表170,即可更新開始KV區塊160以包含第三KV區塊180c的iKey,從而替代地鏈接至第三KV區塊180c。據此,恢復範圍140可經更新為不包含第一KV區塊180a及第二KV區塊180b。隨後可將第一KV區塊180a及第二KV區塊180b標記為有資格(eligible)刪除。
因此,在系統故障的情況下,因為第一KV區塊180a及第二KV區塊180b已在系統故障之前成功地更新或寫入(如藉由元資料表170指出),所以恢復可在不藉由更新開始KV區塊160來冗餘地更新第一KV區塊180a及第二KV區塊180b以對應於第三KV區塊180c從而使得恢復範圍140能夠在第三KV區塊180c處開始的情況下開始。
圖2A為描繪用於確保系統一致性的機制的方塊圖。
參看圖2A,在實例系統200a中,資料庫/檔案系統210及對應區塊裝置220a經初始化,且一或多個檔案/鍵230可在寫入請求240中經提交至資料庫/檔案系統210,以將對應資料250(例如使用者鍵值)寫入至區塊裝置220a。
此後,資料庫/檔案系統210寫入至區塊裝置220a中的預寫式日誌(WAL)/日記(write-ahead-log(WAL)/journal)260,以將資料250及對應於資料250的元資料270寫入至WAL/日記260。
隨後,資料庫/檔案系統210第二次將資料250及元資料270更新或寫入至區塊裝置220a的儲存裝置。最後,在將資料250及元資料270成功地寫入至區塊裝置220a之後,可自WAL/日記260中刪除資料250及元資料270。
圖2B為描繪根據本揭露的實施例的用於確保系統一致性的無WAL恢復機制的方塊圖。
參看圖2B,在根據本揭露的實施例的且與上文所描述的使用區塊裝置220a的系統200a類似的系統200b中,資料庫/檔案系統210及KV裝置220b經初始化,且一或多個檔案/鍵230可向資料庫/檔案系統210提交寫入請求240,以將對應資料250(例如使用者鍵值)寫入至KV裝置220b。
然而,不同於圖2A的使用基於區塊裝置220a實施的預寫式日誌(WAL)/日記的系統200a,各種實施例的系統200b替代地基於KV裝置來實施。圖2B的系統200b能夠實施無WAL機制(例如避免對使用日記或WAL的需要的機制),從而使得能夠消除另外與基於區塊裝置的資料庫/檔案系統相關聯的基於KV裝
置的資料庫/檔案系統中的開銷。
另外,不同於上文所描述的系統200a,本揭露的實施例的系統200b的資料庫/檔案系統210封裝資料250及檔案/鍵230,連同用於指示一或多個相應KV區塊280中所含有的後續KV區塊的iKey(下文進一步參考圖3描述)。另外,系統200b在KV鏈中將KV區塊280鏈接在一起,且隨後藉由使用指示下一個KV區塊的iKey將KV區塊280寫入至KV裝置220b。相應KV區塊280可藉由在緊接在前的KV區塊280的資料內包含後續KV區塊280的iKey(例如,作為裝置值的部分)來在KV鏈中鏈接在一起或連在一起。資料庫/檔案系統210亦可藉由在恢復開始區塊290中包含第一KV區塊的iKey,以使得能夠實現對恢復以下系統故障的發起來將恢復開始區塊290鏈接至KV區塊280的第一KV區塊。
一旦判定已將封裝資料250及KV區塊280成功地寫入至KV裝置220b,資料庫/檔案系統210即可在KV裝置220b中更新對應於經寫入的封裝資料250的元資料270,以指示已成功地寫入KV區塊280及指示其位置。隨後,資料庫/檔案系統210可利用後續KV區塊280的iKey更新恢復開始區塊290,所述後續KV區塊280尚未將對應於其的元資料270更新於KV裝置220b中。
舉例而言,即使在KV鏈中再接下來存在已成功地寫入至KV裝置220b且已更新其對應元資料270的另一KV區塊280,KV鏈中的尚未成功地寫入至KV裝置220b或尚未更新其對應元資料270的第一KV區塊280亦可對應於在恢復開始區塊290中
更新的iKey,從而確保在系統故障的情況下的資料一致性。
因此,如上文所繪示,可根據所揭露實施例而省略系統200a的WAL/日記260。
圖3為描繪根據本揭露的實施例的在KV裝置中產生KV鏈的方法的方塊圖。
參看圖3,使用者310可試圖具有經寫入至KV儲存器/資料庫(例如在KV裝置320中)的一或多個使用者鍵值330。根據使用者的寫入請求,KV儲存引擎350將使用者鍵值330***至KV區塊380中作為第一KV區塊380a的裝置值的部分。亦即,使用者鍵值330可藉由相應KV區塊380來封裝。
KV儲存引擎350亦可分配第一KV區塊380a的iKey340作為第一KV區塊380a的裝置鍵。然而,應注意,在一些實施例中,iKey 340可為使用者鍵,而非裝置鍵。另外,iKey 340可為數目或字串,只要iKey 340為唯一的(即使針對相同的使用者鍵)即可。
在KV裝置320中可將第一KV區塊380a的iKey 340a記錄為開始iKey 360(例如恢復開始內部鍵(recovery begin internal key)),以實現對恢復資料的檢索。同時,恢復開始鍵365可用作恢復資料的鍵。恢復開始鍵365可藉由KV儲存引擎350靜態地指派,且可保持不變。對比地,如下文將要描述的,開始iKey 360為恢復開始鍵365中所包含的恢復資料的值,且可經更新。
除了使用者鍵值330以外,KV儲存引擎350亦可將第二KV區塊380b的iKey 340b的值***至第一KV區塊380a中作為第一KV區塊380a的裝置值的另一部分。亦即,每一KV區塊380
亦可包含用於指示後續KV區塊380的「下一個iKey」345,所述後續KV區塊380在下一個iKey 345經***於KV區塊380中時可能尚未經創建。可在建立資料庫時預先分配下一個iKey 345(比如iKey 340)。
可針對多個KV區塊重複以上程序(例如其中第三KV區塊380c的iKey 340c經包含為裝置值的部分,作為第二KV區塊380b的iKey 345b等)。因此,每一KV區塊380通常含有可在主機端指派的唯一iKey 340、一或多個使用者鍵值330以及用於指示下一個KV區塊380的下一個iKey 345,其中第一KV區塊380a的下一個iKey 345a將以與開始iKey 360在KV鏈中指代第一KV區塊的iKey 340的方式類似的方式指代第二KV區塊380b的iKey 340b。因此,如下文將進一步論述的,KV鏈中的KV區塊380的次序嵌入於KV區塊380中,且下一個iKey 345使得能夠恢復以下系統故障。
藉由包含上文所描述的資訊的每一KV區塊380,每一KV區塊380具有用於將其自身與下一個KV區塊380(例如後續KV區塊)鏈接的鏈路,從而形成KV鏈(例如KV區塊380的鏈)。針對KV鏈中的最後一個KV區塊380,iKey仍然經指派為下一個KV區塊380的iKey 340,即使在KV裝置320中不存在彼下一個KV區塊的iKey 340。因此,若在KV裝置320中不存在KV區塊380,則已到達恢復的結束點。
應注意,由於KV區塊380不必為實體連續的區塊,因此下一個iKey 345不必指代實體鄰近的KV區塊380。舉例而言,在一些實施例中,下一個KV區塊380可由時間次序而非「鍵」次
序來判定。舉例而言,鍵次序可為1->2->3->4->5,而寫入次序(或時間次序)可為3->1->2->5->4。因此,KV鏈次序將為3->1->2->5->4。
因此,一或多個KV區塊380可經恢復且可在系統故障之後藉由使用恢復開始鍵365及分別對應於KV區塊380的各種預先分配的iKey 340經寫入至KV裝置320。因此,KV裝置320使用單KV區塊原子性(atomicity)來確保原子寫入。
圖4為描繪根據本揭露的實施例的在KV裝置中產生要在KV鏈中使用的KV區塊的方法的方塊圖。
總之,且參看圖4,在建立資料庫後,初始的預先分配的iKey 442用作當前KV區塊480的iKey 440。另外,將KV鏈中的第一KV區塊480的iKey 440儲存為KV裝置中的開始iKey(例如,圖3的KV裝置320中的開始iKey 360)。
隨後,iKey產生器490可用於產生新iKey,以更新預先分配的iKey 442,此是因為初始的預先分配的iKey 442無法用於後續KV區塊、由於初始的預先分配的iKey 442已用於當前KV區塊480以及由於新iKey將用於後續/下一個KV區塊480。當前KV區塊480可使用初始的預先分配的iKey 442。
因此,預先分配的iKey 442可用於產生新的預先分配的iKey 442a,使得更新後的預先分配的iKey 442a可用作隨後創建的KV區塊的iKey。舉例而言,iKey產生器490可產生新的預先分配的iKey 442,且隨後可更新預先分配的iKey 442。新的預先分配的iKey 442亦可儲存於「下一個KV區塊的內部鍵」(例如下一個iKey 445)中。亦即,iKey產生器490產生用作KV區塊480
的iKey 440的預先分配的iKey 442,且隨後產生另一預先分配的iKey 442a,作為對應於下一個(未來)KV區塊的iKey的下一個iKey 445。
亦即,iKey產生器490可產生唯一的新iKey,所述唯一的新iKey與先前所提及的初始的預先分配的iKey 442不具有相依性。另外,唯一的新iKey可同時儲存於更新後的預先分配的iKey 442a中及下一個KV區塊的下一個iKey 445中,使得更新後的預先分配的iKey 442a及下一個iKey 445為相同iKey。
iKey產生器490可每次僅產生單個iKey。隨後,所產生的iKey可用於/寫入至預先分配的iKey 442a及下一個iKey 445兩者。另外,所使用的初始iKey 440包含鏈接至初始的預先分配的iKey 442的先前指派的iKey 440。
iKey產生器490隨後可將更新後的預先分配的iKey 442a添加至KV區塊480,作為對應於後續KV區塊的下一個iKey 445,同時亦添加更新後的iKey 442a作為後續KV區塊的後續iKey。亦即,更新後的預先分配的iKey 442a將用於下一個KV區塊的iKey及當前KV區塊480的下一個iKey 445兩者。
此後,在產生及***當前區塊480的初始iKey 440及下一個KV區塊480的下一個iKey 445之後,可將初始iKey 440、下一個iKey 445以及使用者鍵值430***至KV區塊480中。
圖5為描繪根據本揭露的實施例的在KV裝置中更新元資料表及開始iKey(例如恢復開始內部鍵)的方法的方塊圖。
參看圖5,可展現構建KV區塊580的操作。舉例而言,構建KV區塊580的簡要概述如下。首先可附接iKey,隨後可附
接下一個KV區塊的iKey(例如下一個iKey 545),且此後可附接使用者鍵及值(例如使用者KV 530),從而完成KV區塊580。每個KV區塊580包括鏈接到後續KV區塊580的iKey 540的下一個iKey 545,並且KV區塊580(例如,與參考標號100、101、102、103、104、105,...n相對應的KV塊580)鏈接形成一KV鏈。
若一或多個KV區塊580的元資料570(例如,直到對應於參考標號99的KV區塊580的元數據570)儲存於對應元資料表575中,則開始iKey 560將改變為KV鏈中的未在元資料表575中指示的最初KV區塊580(例如,與參考標號100相對應的KV區塊580)的iKey 540。開始iKey 560可因在元資料表575中所參考的KV區塊580可經假設為已成功地寫入至KV裝置520而經更新,且在系統故障的情況下可在不參考KV鏈的情況下經恢復。對比地,若KV區塊580並未在元資料表575中參考,則所述KV區塊580無法在不參看開始iKey 560的情況下被發現。
在更新開始iKey 560之後,在元資料表575中指示且在對應於更新後的開始iKey 560的KV區塊580之前的KV區塊580可經標記為刪除。另外,(例如即使使用者刪除或更新KV區塊580中的全部鍵)亦無法刪除在對應於開始iKey 560的KV區塊580之後或並未在元資料表575中參考的KV區塊580,從而確保不間斷的KV鏈可保留為鏈接清單。
舉例而言,在圖5中,KV區塊580a、KV區塊580b以及KV區塊580c能夠在使用者刪除或更新此等KV區塊580a、KV區塊580b以及KV區塊580c中的全部使用者鍵值530之後經刪
除。然而,即使KV區塊580f經指示為包含於元資料表575中且經指示為已成功地寫入至KV裝置520,亦無法刪除KV區塊580f,此是因為中間KV區塊580d及中間KV區塊580e並未在元資料表575中參考。此將確保其餘KV區塊580的KV鏈不被間斷。亦即,因為開始iKey 560經更新為指向在KV鏈中的KV區塊580f之前的KV區塊580d,所以KV區塊580f仍保持不刪除,以確保KV鏈保持為不間斷的及確保尚未更新或尚未在元資料表中參考的全部KV區塊580可在系統故障的情況下經恢復。
在系統故障的情況下,存取恢復開始鍵565,且自KV裝置520中檢索開始iKey 560以在系統故障之後發起恢復。隨後,藉由使用開始iKey 560,讀取在KV鏈中處於第一的對應KV區塊580。藉由讀取KV鏈的第一KV區塊580,可檢索下一個KV區塊580的iKey 540。因此,可發現及讀取下一個KV區塊580。此程序可在KV裝置520中不存在所讀取的下一個iKey 545的KV區塊580之前一直重複。在檢索未經寫入元資料表575的全部KV區塊580之後,可更新元資料表575,且可改變開始iKey 560。
因為仍未經寫入至元資料表575的全部KV區塊580可僅藉由存取恢復開始鍵565以使用開始iKey 560來定位其餘KV鏈的第一KV區塊580而進行定位,所以歸因於由KV鏈的鏈路鏈接的KV區塊580,可在不具有對資料一致性的任何風險的情況下避免第二次冗餘寫入。另外,相較於全部的未經寫入的KV區塊580的清單(例如相較於圖2A中所繪示的WAL/日記260),僅儲存開始iKey 560。
因此,本揭露的實施例提供具有單個或多個使用者鍵值
的KV鏈,以避免KV儲存器一致性的雙重寫入,且僅可刪除在恢復範圍外部的鍵以防止截斷KV鏈。若系統具有多個寫入/提交執行緒/工作器,則可將多個數目的恢復開始565保持於裝置中。每一寫入/提交執行緒應具有至少一個恢復開始565,以便具有其自身的寫入流(write stream)。否則,鏈可因裝置無法保證寫入次序而中斷。
應注意,KV裝置保證僅一個KV區塊寫入的原子性。另外,本揭露的實施例能夠藉由使用KV鏈機制使KV儲存器(或系統)自系統故障中恢復。另外,本揭露的實施例能夠藉由為KV區塊指派裝置鍵(iKey)且使用用於恢復的KV區塊形成KV鏈的系統來實現以上情形,其中使用者鍵經嵌入於對應KV區塊的值中。
藉由所揭露實施例所提供的優點不包含資料的雙重寫入,且無WAL用於崩潰恢復。因此,可減小歸因於雙重寫入的增加的WAF及增加的IO頻寬,且可增加有效產出量,且可在不犧牲有效IO效能的情況下支持恢復。
140:恢復範圍
160:開始KV區塊
170:元資料表
180a:第一KV區塊
180b:第二KV區塊
180c:第三KV區塊
180d:第四KV區塊
Claims (20)
- 一種在KV鏈中鏈接多個鍵值(key-value,KV)區塊以確保資料一致性的方法,所述方法包括:由處理器將內部鍵分配給第一KV區塊及恢復開始內部鍵兩者;由所述處理器分配與所述內部鍵不同且對應於下一個KV區塊的下一個內部鍵;以及由所述處理器將相應使用者鍵值封裝於所述第一KV區塊中及所述下一個KV區塊中,其中所述第一KV區塊是藉由所述處理器讀取所述恢復開始內部鍵來存取,以及其中所述下一個KV區塊是藉由所述處理器讀取所述第一KV區塊的所述下一個內部鍵來存取。
- 如請求項1所述的方法,更包括:更新所述第一KV區塊的全部所述使用者鍵值;產生或更新元資料表以參考所述第一KV區塊;將所述第一KV區塊標記為有資格自KV裝置中刪除;以及將所述恢復開始內部鍵更新為所述第一KV區塊的所述下一個內部鍵。
- 如請求項1所述的方法,更包括靜態地指派恢復開始鍵,其中所述恢復開始內部鍵是藉由讀取所述恢復開始鍵來存取。
- 如請求項3所述的方法,更包括在儲存所述第一KV區塊及所述下一個KV區塊的KV裝置的系統故障之後: 自所述KV裝置讀取所述恢復開始鍵;使用所述恢復開始鍵來檢索所述恢復開始內部鍵;使用所述恢復開始內部鍵來定位及讀取所述第一KV區塊;自所述第一KV區塊檢索所述下一個KV區塊的所述下一個內部鍵;以及使用所述下一個內部鍵來定位及讀取所述下一個KV區塊。
- 如請求項4所述的方法,更包括:讀取額外的下一個內部鍵作為所述下一個KV區塊的裝置值的部分,所述額外的下一個內部鍵對應於後續的下一個KV區塊;使用所述額外的下一個內部鍵來定位及讀取所述後續的下一個KV區塊;以及在對應的下一個內部鍵對應於未在所述KV裝置中發現的KV區塊之前一直重複。
- 如請求項1所述的方法,更包括:判定所述第一KV區塊不具有有效的使用者鍵;將所述第一KV區塊標記為有資格刪除;以及將所述恢復開始內部鍵更新為所述第一KV區塊的所述下一個內部鍵,所述下一個內部鍵對應於後續KV區塊。
- 如請求項1所述的方法,其中所述下一個內部鍵包括所述第一KV區塊中的裝置值的部分,且包括所述下一個KV區塊的裝置鍵。
- 一種用於藉由實施鍵值(key-value,KV)鏈來確保資料一致性的系統,所述系統包括:處理器,實施包括鍵值儲存引擎的一個或多個KV裝置,經 組態以:將內部鍵分配給第一KV區塊及恢復開始內部鍵兩者;分配與所述內部鍵不同且對應於下一個KV區塊的下一個內部鍵;以及將相應使用者鍵值封裝於所述第一KV區塊中及所述下一個KV區塊中,其中所述第一KV區塊是藉由讀取所述恢復開始內部鍵來存取,以及其中所述下一個KV區塊是藉由讀取所述第一KV區塊的所述下一個內部鍵來存取。
- 如請求項8所述的系統,其中所述鍵值儲存引擎進一步經組態以:更新所述第一KV區塊的全部所述使用者鍵值;產生或更新元資料表以參考所述第一KV區塊;將所述第一KV區塊標記為有資格自所述一個或多個KV裝置的KV裝置中刪除;以及將所述恢復開始內部鍵更新為所述第一KV區塊的所述下一個內部鍵。
- 如請求項8所述的系統,其中所述鍵值儲存引擎進一步經組態以靜態地指派恢復開始鍵,其中所述恢復開始內部鍵是藉由讀取所述恢復開始鍵來存取。
- 如請求項10所述的系統,其中所述鍵值儲存引擎進一步經組態以:判定儲存所述第一KV區塊以及所述下一個KV區塊的所述 一個或多個KV裝置中的KV裝置的系統故障;自所述KV裝置讀取所述恢復開始鍵;使用所述恢復開始鍵來檢索所述恢復開始內部鍵;使用所述恢復開始內部鍵來定位及讀取所述第一KV區塊;自所述第一KV區塊檢索所述下一個KV區塊的所述下一個內部鍵;以及使用所述下一個內部鍵來定位及讀取所述下一個KV區塊。
- 如請求項11所述的系統,其中所述鍵值儲存引擎進一步經組態以:讀取額外的下一個內部鍵作為所述下一個KV區塊的裝置值的部分,所述額外的下一個內部鍵對應於後續的下一個KV區塊;使用所述額外的下一個內部鍵來定位及讀取所述後續的下一個KV區塊;以及判定在所述KV裝置中未發現對應於KV區塊的對應的下一個內部鍵。
- 如請求項8所述的系統,其中所述鍵值儲存引擎進一步經組態以:判定所述第一KV區塊不具有有效的使用者鍵;將所述第一KV區塊標記為有資格刪除;以及將所述恢復開始內部鍵更新為所述第一KV區塊的所述下一個內部鍵,所述下一個內部鍵對應於後續KV區塊。
- 如請求項8所述的系統,其中所述下一個內部鍵包括所述第一KV區塊中的裝置值的部分,且包括所述下一個KV區塊的裝置鍵。
- 一種實施於用於在KV鏈中鏈接多個鍵值(key-value,KV)區塊以確保資料一致性的系統上的非暫時性電腦可讀媒體,所述非暫時性電腦可讀媒體具有電腦程式碼,所述電腦程式碼在處理器上經執行時實施一種資料儲存的方法,所述方法包括:將內部鍵分配給第一KV區塊及恢復開始內部鍵兩者;分配與所述內部鍵不同且對應於下一個KV區塊的下一個內部鍵;以及將相應使用者鍵值封裝於所述第一KV區塊中及所述下一個KV區塊中,其中所述第一KV區塊是藉由讀取所述恢復開始內部鍵來存取,以及其中所述下一個KV區塊是藉由讀取所述第一KV區塊的所述下一個內部鍵來存取。
- 如請求項15所述的非暫時性電腦可讀媒體,其中所述電腦程式碼在所述處理器上經執行時藉由以下操作進一步實施資料儲存的所述方法:更新所述第一KV區塊的全部所述使用者鍵值;產生或更新元資料表以參考所述第一KV區塊;將所述第一KV區塊標記為有資格自KV裝置中刪除;以及將所述恢復開始內部鍵更新為所述第一KV區塊的所述下一個內部鍵。
- 如請求項15所述的非暫時性電腦可讀媒體,其中所述電腦程式碼在所述處理器上經執行時藉由靜態地指派恢復開始鍵來進一步實施資料儲存的所述方法,其中所述恢復開始內部鍵 是藉由讀取所述恢復開始鍵來存取。
- 如請求項17所述的非暫時性電腦可讀媒體,其中在儲存所述第一KV區塊及所述下一個KV區塊的KV裝置的系統故障之後,所述電腦程式碼在所述處理器上經執行時藉由以下操作進一步實施資料儲存的所述方法:自所述KV裝置讀取所述恢復開始鍵;使用所述恢復開始鍵來檢索所述恢復開始內部鍵;使用所述恢復開始內部鍵來定位及讀取所述第一KV區塊;自所述第一KV區塊檢索所述下一個KV區塊的所述下一個內部鍵;以及使用所述下一個內部鍵來定位及讀取所述下一個KV區塊。
- 如請求項18所述的非暫時性電腦可讀媒體,其中所述電腦程式碼在所述處理器上經執行時藉由以下操作進一步實施資料儲存的所述方法:讀取額外的下一個內部鍵作為所述下一個KV區塊的裝置值的部分,所述額外的下一個內部鍵對應於後續的下一個KV區塊;使用所述額外的下一個內部鍵來定位及讀取所述後續的下一個KV區塊;以及在對應的下一個內部鍵對應於未在所述KV裝置中發現的KV區塊之前一直重複。
- 如請求項15所述的非暫時性電腦可讀媒體,其中所述電腦程式碼在所述處理器上經執行時藉由以下操作進一步實施資料儲存的所述方法:判定所述第一KV區塊不具有有效的使用者鍵; 將所述第一KV區塊標記為有資格刪除;以及將所述恢復開始內部鍵更新為所述第一KV區塊的所述下一個內部鍵,所述下一個內部鍵對應於後續KV區塊。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962903651P | 2019-09-20 | 2019-09-20 | |
US62/903,651 | 2019-09-20 | ||
US16/843,809 US11656952B2 (en) | 2019-09-20 | 2020-04-08 | Reliable key-value store with write-ahead-log-less mechanism |
US16/843,809 | 2020-04-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202113623A TW202113623A (zh) | 2021-04-01 |
TWI829963B true TWI829963B (zh) | 2024-01-21 |
Family
ID=74880925
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109131608A TWI829963B (zh) | 2019-09-20 | 2020-09-15 | 用於在鍵值鏈中鏈接多個鍵值區塊的方法、系統以及非暫時性電腦可讀媒體 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11656952B2 (zh) |
KR (1) | KR20210034485A (zh) |
CN (1) | CN112540994A (zh) |
TW (1) | TWI829963B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11635990B2 (en) | 2019-07-01 | 2023-04-25 | Nutanix, Inc. | Scalable centralized manager including examples of data pipeline deployment to an edge system |
US20210089403A1 (en) * | 2019-09-20 | 2021-03-25 | Samsung Electronics Co., Ltd. | Metadata table management scheme for database consistency |
US20220121543A1 (en) * | 2020-10-21 | 2022-04-21 | Nutanix, Inc. | Key value store in a clustered containerized system |
US11726764B2 (en) | 2020-11-11 | 2023-08-15 | Nutanix, Inc. | Upgrade systems for service domains |
US11665221B2 (en) | 2020-11-13 | 2023-05-30 | Nutanix, Inc. | Common services model for multi-cloud platform |
US11736585B2 (en) | 2021-02-26 | 2023-08-22 | Nutanix, Inc. | Generic proxy endpoints using protocol tunnels including life cycle management and examples for distributed cloud native services and applications |
US11614870B2 (en) * | 2021-05-07 | 2023-03-28 | Micron Technology, Inc. | Zoned memory device recovery after a key-value store failure |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9372879B1 (en) * | 2013-12-20 | 2016-06-21 | Amazon Technologies, Inc. | Balanced append tree data structure |
CN108712395A (zh) * | 2018-04-27 | 2018-10-26 | 腾讯科技(深圳)有限公司 | 基于区块链的账号管理方法、装置、服务器及存储介质 |
CN110032883A (zh) * | 2019-01-31 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 区块链中实现隐私保护的方法、***和节点 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100005077A1 (en) | 2008-07-07 | 2010-01-07 | Kickfire, Inc. | Methods and systems for generating query plans that are compatible for execution in hardware |
US8601473B1 (en) | 2011-08-10 | 2013-12-03 | Nutanix, Inc. | Architecture for managing I/O and storage for a virtualization environment |
US20140059552A1 (en) | 2012-08-24 | 2014-02-27 | International Business Machines Corporation | Transparent efficiency for in-memory execution of map reduce job sequences |
US11132328B2 (en) | 2013-12-20 | 2021-09-28 | Rambus, Inc. | High level instructions with lower-level assembly code style primitives within a memory appliance for accessing memory |
US10235374B2 (en) | 2016-03-08 | 2019-03-19 | International Business Machines Corporation | Key-value store for managing user files based on pairs of key-value pairs |
US11210308B2 (en) | 2016-05-13 | 2021-12-28 | Ayla Networks, Inc. | Metadata tables for time-series data management |
US11360863B2 (en) * | 2018-10-26 | 2022-06-14 | Hewlett Packard Enterprise Development Lp | Key-value store on persistent memory |
US11048423B2 (en) * | 2019-04-17 | 2021-06-29 | Verizon Media Inc. | Method and system for synchronizing requests related to key-value storage having different portions |
US11222022B2 (en) * | 2019-04-17 | 2022-01-11 | Verizon Patent And Licensing Inc. | Method and system for searching a key-value storage |
-
2020
- 2020-04-08 US US16/843,809 patent/US11656952B2/en active Active
- 2020-08-31 KR KR1020200110097A patent/KR20210034485A/ko unknown
- 2020-09-15 TW TW109131608A patent/TWI829963B/zh active
- 2020-09-18 CN CN202010985710.XA patent/CN112540994A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9372879B1 (en) * | 2013-12-20 | 2016-06-21 | Amazon Technologies, Inc. | Balanced append tree data structure |
CN108712395A (zh) * | 2018-04-27 | 2018-10-26 | 腾讯科技(深圳)有限公司 | 基于区块链的账号管理方法、装置、服务器及存储介质 |
CN110032883A (zh) * | 2019-01-31 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 区块链中实现隐私保护的方法、***和节点 |
Also Published As
Publication number | Publication date |
---|---|
KR20210034485A (ko) | 2021-03-30 |
US20210089408A1 (en) | 2021-03-25 |
US11656952B2 (en) | 2023-05-23 |
CN112540994A (zh) | 2021-03-23 |
TW202113623A (zh) | 2021-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI829963B (zh) | 用於在鍵值鏈中鏈接多個鍵值區塊的方法、系統以及非暫時性電腦可讀媒體 | |
CN111480149B (zh) | 持久存储器设备中的预写式日志记录 | |
JP6294518B2 (ja) | 不揮発性メモリシステムにおける同期ミラーリング | |
US9183236B2 (en) | Low level object version tracking using non-volatile memory write generations | |
US7873683B2 (en) | File system having transaction record coalescing | |
US6725392B1 (en) | Controller fault recovery system for a distributed file system | |
US8156165B2 (en) | Transaction-safe FAT files system | |
JP5658124B2 (ja) | リダイレクト・オン・ライト・ファイル・システムにおける複数のコンテキストを提供する方法、装置およびコンピュータ・プログラム | |
US11347600B2 (en) | Database transaction log migration | |
CN105677876B (zh) | 一种基于物理级的数据库日志挖掘方法 | |
US20130159257A1 (en) | Systems, Method, and Computer Program Products Providing Sparse Snapshots | |
US11429498B2 (en) | System and methods of efficiently resyncing failed components without bitmap in an erasure-coded distributed object with log-structured disk layout | |
WO2016117022A1 (ja) | ログの管理方法及び計算機システム | |
US8862858B1 (en) | Method and system for fast block storage recovery | |
US20190079828A1 (en) | Database Read Cache Optimization | |
US10241860B2 (en) | Method of executing data scrubbing inside a smart storage device | |
CN111414320B (zh) | 基于日志文件***的非易失内存构建磁盘cache的方法及*** | |
US8595271B1 (en) | Systems and methods for performing file system checks | |
KR20210034478A (ko) | 데이터베이스 일관성을 위한 메타데이터 테이블 관리 방안 | |
CN115617580B (zh) | 基于共享sst文件的增量备份、恢复方法和*** | |
US10802933B1 (en) | Mirrored block with quorum set management for use in tracking valid mirrors of a journal | |
EP2144175A1 (en) | Method for performing a bulk load into a database | |
CN116257531B (zh) | 一种数据库空间回收方法 | |
US20190243727A1 (en) | Efficiently recovering log-structured filesystems from crashes | |
CN118409902A (zh) | 一种基于文件***的航天器载荷任务管理***及方法 |