TWI834912B - 資料儲存方法、於執行具有事務分組的合併的系統及非暫時性電腦可讀媒體 - Google Patents
資料儲存方法、於執行具有事務分組的合併的系統及非暫時性電腦可讀媒體 Download PDFInfo
- Publication number
- TWI834912B TWI834912B TW109132289A TW109132289A TWI834912B TW I834912 B TWI834912 B TW I834912B TW 109132289 A TW109132289 A TW 109132289A TW 109132289 A TW109132289 A TW 109132289A TW I834912 B TWI834912 B TW I834912B
- Authority
- TW
- Taiwan
- Prior art keywords
- transaction
- transactions
- key
- key value
- updates
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000013500 data storage Methods 0.000 title claims abstract description 16
- 238000004458 analytical method Methods 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 4
- 230000008685 targeting Effects 0.000 claims description 3
- 238000005192 partition Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 7
- 230000003321 amplification Effects 0.000 description 4
- 238000003199 nucleic acid amplification method Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 235000012431 wafers Nutrition 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Abstract
本發明提供一種資料儲存方法,方法包含:識別未決佇列中的多個事務,事務具有分別對應於多個鍵的一或多個鍵值更新;識別多個鍵中與屬於事務中的不同事務的鍵值更新中的共同相關聯鍵值更新相關聯的共同相關聯鍵;分別基於向事務組ID指派的各別事務ID向事務指派事務組ID;基於所指派事務組ID將事務分組至多個事務組中的各別事務組中;以及針對事務中位於事務組中的同一事務組中的經分組事務合併對應於共同相關聯鍵的共同相關聯鍵值更新的衝突資料寫入。
Description
本揭露的實施例的一或多個態樣大體上係關於資料儲存。
在鍵值儲存的操作中,一給定鍵可覆寫許多次,且各個鍵可實質上同時更新。可將用於更新各個鍵值的多個事務放在未決佇列中。未決佇列內的不同事務可分別對應於衝突的鍵值更新,所述衝突的鍵值更新全都對應於一共同鍵。舉例而言,第一寫入操作或第一事務可能試圖執行一個鍵的鍵值更新,其後第二寫入操作/事務試圖執行同一鍵的不同鍵值更新。
隨著每一事務的處理,依次處理每一鍵值更新。因此,一特定鍵可能僅在用一個鍵值更新之後不久就要用不同鍵值再次更新。亦即,儘管在初始鍵值更新發生之前時間較早事務的鍵值更新由於時間較晚事務而變得無關,但兩個鍵值更新均可發生,此並非必要的。此類情境中的不同事務通常在時間上彼此相對接近地出現。
本文所描述的實施例提供對資料儲存的改良。
根據本揭露的一個實施例,提供一種資料儲存的方法,所述方法包含:識別未決佇列中的多個事務,所述事務具有分別對應於多個鍵的一或多個鍵值更新;識別所述多個鍵中與屬於所述事務中的不同事務的鍵值更新中的共同相關聯鍵值更新相關聯的共同相關聯鍵;分別基於向事務組ID指派的各別事務ID向所述事務指派所述事務組ID;基於所述所指派事務組ID將所述事務分組至多個事務組中的各別事務組中;以及針對所述事務中位於所述事務組中的同一事務組中的經分組事務合併對應於所述共同相關聯鍵的所述共同相關聯鍵值更新的衝突資料寫入。
當所述事務組中的已崩潰事務組中的事務中的已崩潰事務處發生崩潰時,所述方法可更包含僅重新運行所述已崩潰事務組中的所述事務中的經鏈接事務,所述經鏈接事務由於合併衝突資料寫入而與所述已崩潰事務鏈接。
所述方法可更包含移除所述事務中僅具有由於對應於同一各別鍵的一或多個時間較晚鍵值更新而變得無關的一或多個時間較早鍵值更新的一個事務,所述時間較晚鍵值更新位於所述事務中在時間上晚於所述事務中的所述經移除事務出現的一或多個其他事務中。
所述方法可更包含判定一對連續事務沒有對應於所述多個鍵中的共同鍵的任何共同相關聯鍵值更新,以及分別向所述連續事務指派組ID使得所述連續事務位於不同各別事務組中。
所述方法可更包含判定哪對連續事務具有對應於所述多個鍵中的共同鍵的最少數目個共同相關聯鍵值更新,以及分別向所述連續事務指派組ID使得所述連續事務位於不同各別事務組中。
指派所述事務組ID可進一步基於對橫跨不同事務的共同相關聯鍵值更新的總數目的分析。
所述方法可更包含將所述事務組中的一個事務組的衝突資料寫入的所有經合併鍵值更新寫入一或多個儲存裝置中,以及僅當所有所述經合併鍵值更新經證實已寫入所述一或多個儲存裝置中時才更新對應於所述事務組中的所述一個事務組的所述經合併鍵值更新的後設資料。
所述方法可更包含向所述事務指派所述事務ID。
根據本揭露的另一實施例,提供一種用於執行具有事務分組的合併的系統,所述系統包含事務模組及合併模組,所述事務模組用於:識別未決佇列中的多個事務,所述事務具有分別對應於多個鍵的一或多個鍵值更新;識別所述多個鍵中與屬於所述事務中的不同事務的鍵值更新中的共同相關聯鍵值更新相關聯的共同相關聯鍵;分別基於向事務組ID指派的各別事務ID向所述事務指派所述事務組ID;以及基於所述所指派事務組ID將所述事務分組至多個事務組中的各別事務組中;所述合併模組用於:針對所述事務中位於所述事務組中的同一事務組中的經分組事務合併對應於所述共同相關聯鍵的所述共同相關聯鍵值更新的衝突資料寫入。
當所述事務組中的已崩潰事務組中的事務中的已崩潰事務處發生崩潰時,所述事務模組可進一步經組態以僅重新運行所述已崩潰事務組中的所述事務中的經鏈接事務,所述經鏈接事務由於合併衝突資料寫入而與所述已崩潰事務鏈接。
所述合併模組可進一步經組態以移除所述事務中僅具有由於對應於同一各別鍵的一或多個時間較晚鍵值更新而變得無關的一或多個時間較早鍵值更新的一個事務,所述時間較晚鍵值更新位於所述事務中在時間上晚於所述事務中的所述經移除事務出現的一或多個其他事務中。
所述事務模組可進一步經組態以判定一對連續事務沒有對應於所述多個鍵中的共同鍵的任何共同相關聯鍵值更新,且分別向所述連續事務指派組ID使得所述連續事務位於不同各別事務組中。
所述事務模組可進一步經組態以判定哪對連續事務具有對應於所述多個鍵中的共同鍵的最少數目個共同相關聯鍵值更新,且分別向所述連續事務指派組ID使得所述連續事務位於不同各別事務組中。
所述事務模組可進一步經組態以基於對橫跨不同事務的共同相關聯鍵值更新的總數目的分析來指派所述事務組ID。
所述系統可更包含飛行中(inflight)請求緩衝器,所述飛行中請求緩衝器經組態以將所述事務組中的一個事務組的衝突資料寫入的所有經合併鍵值更新寫入一或多個儲存裝置中,且僅當所有所述經合併鍵值更新經證實已寫入所述一或多個儲存裝置中時才更新對應於所述事務組中的所述一個事務組的所述經合併鍵值更新的後設資料。
所述事務模組可進一步經組態以向所述事務指派所述事務ID。
根據本揭露的又一實施例,提供一種實施於用於執行具有事務分組的合併的系統上的非暫時性電腦可讀媒體,所述非暫時性電腦可讀媒體具有電腦程式碼,所述電腦程式碼在處理器上經執行時實施一種資料儲存方法,所述方法包含:識別未決佇列中的多個事務,所述事務具有分別對應於多個鍵的一或多個鍵值更新;識別所述多個鍵中與屬於所述事務中的不同事務的鍵值更新中的共同相關聯鍵值更新相關聯的共同相關聯鍵;分別基於向事務組ID指派的各別事務ID向所述事務指派所述事務組ID;基於所述所指派事務組ID將所述事務分組至多個事務組中的各別事務組中;以及針對所述事務中位於所述事務組中的同一事務組中的經分組事務合併對應於所述共同相關聯鍵的所述共同相關聯鍵值更新的衝突資料寫入。
當所述事務組中的已崩潰事務組中的事務中的已崩潰事務處發生崩潰時,所述電腦程式碼在所述處理器上經執行時可進一步藉由以下操作來實施所述資料儲存方法:僅重新運行所述已崩潰事務組中的所述事務中的經鏈接事務,所述經鏈接事務由於合併衝突資料寫入而與所述已崩潰事務鏈接。
所述電腦程式碼在所述處理器上經執行時可進一步藉由以下操作來實施所述資料儲存方法:移除所述事務中僅具有由於對應於同一各別鍵的一或多個時間較晚鍵值更新而變得無關的一或多個時間較早鍵值更新的一個事務,所述時間較晚鍵值更新位於所述事務中在時間上晚於所述事務中的所述經移除事務出現的一或多個其他事務中。
所述電腦程式碼在所述處理器上經執行時可進一步藉由以下操作來實施所述資料儲存方法:判定一對連續事務沒有對應於所述多個鍵中的共同鍵的任何共同相關聯鍵值更新,以及分別向所述連續事務指派組ID使得所述連續事務位於不同各別事務組中。
因此,本揭露的實施例的系統能夠藉由減少在系統無法確保資料一致性之後必須轉返(由系統重新運行)的事務的數目來改良資料儲存。
參考實施例的詳細描述及附圖可更易於理解本發明概念及實現本發明概念的方法的特徵。在下文中,將參考附圖更詳細地描述實施例。然而,所描述實施例可以各種不同形式體現,且不應解釋為僅限於本文中所說明的實施例。確切而言,提供這些實施例作為實例以使得本發明將為透徹且完整的,且將向本領域的技術人員充分傳達本發明概念的態樣及特徵。因此,可不描述於本領域具有通常知識者完全理解本發明概念的態樣及特徵不需要的過程、元件及技術。
除非另外指出,否則在附圖及書面描述中,類似的圖式元件符號表示類似的元件,且因此將不重複其描述。此外,可不展示與實施例的描述無關的部分以使描述清晰。在圖式中,為了清晰起見,可誇示元件、層以及區域的相對大小。
在詳細描述中,出於解釋之目的,闡述眾多特定細節以提供對各種實施例的透徹理解。然而,顯而易見的是,可在不具有這些特定細節或具有一或多個等效配置的情況下實踐各種實施例。在其他個例中,以方塊圖形式展示熟知的結構及裝置以便避免不必要地混淆各種實施例。
應理解,儘管在本文中可使用術語「第一」、「第二」、「第三」等來描述各種元件、組件、區域、層及/或區段,但這些元件、組件、區域、層及/或區段不應受這些術語限制。這些術語用於區別一個元件、組件、區域、層或區段與另一元件、組件、區域、層或區段。因此,在不脫離本揭露的精神及範疇的情況下,下文描述的第一元件、組件、區域、層或區段可被稱為第二元件、組件、區域、層或區段。
本文中所使用的術語僅出於描述特定實施例之目的,且並不意欲限制本揭露。如本文所使用,除非上下文另外明確指示,否則單數形式「一(a/an)」意欲包含複數形式。應進一步理解,術語「包括(comprise/comprising)」、「具有(have/having)」以及「包含(include/including)」當用於本說明書中時指定所陳述特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或新增。如本文所使用,術語「及/或」包含相關聯所列項目中的一或多者的任何及所有組合。
如本文中所使用,術語「實質上」、「約」、「近似」以及類似術語用作表示近似的術語且並不用作表示程度的術語,且意欲考慮將由本領域中具有通常知識者識別的量測值或計算值的固有偏差。考慮到所討論的量測及與特定數量的量測相關的誤差(亦即,量測系統的限制),如本文所使用的「約」或「近似」包含所陳述值並且意指在如由本領域中具有通常知識者所判定的特定值的可接受偏差範圍內。舉例而言,「約」可意指在一或多個標準偏差內,或在所陳述值的± 30%、20%、10%、5%內。此外,當描述本揭露的實施例時,「可」的使用指代「本揭露的一或多個實施例」。
當可不同地實施某一實施例時,可與所描述次序不同地執行特定程序次序。舉例而言,可實質上同時執行或以與所描述次序相反的次序執行兩個連續所描述程序。
本文中所描述的根據本揭露的實施例的電子裝置或電氣裝置及/或任何其他相關裝置或組件可利用任何適合的硬體、韌體(例如,特殊應用積體電路)、軟體,或軟體、韌體以及硬體的組合來實施。舉例而言,這些裝置的各種組件可形成於一個積體電路(integrated circuit;IC)晶片上或單獨IC晶片上。此外,這些裝置的各種組件可實施於可撓性印刷電路膜、帶載體封裝(tape carrier package;TCP)、印刷電路板(printed circuit board;PCB)上或形成於一個基底上。
此外,這些裝置的各種組件可為程序或執行緒,其在一或多個處理器上運行、在一或多個計算裝置中運行、執行電腦程式指令且與其他系統組件互動以用於執行本文中所描述的各種功能性。電腦程式指令儲存於記憶體中,所述記憶體可使用諸如隨機存取記憶體(random access memory;RAM)的標準記憶體裝置而實施於計算裝置中。電腦程式指令亦可儲存於諸如CD-ROM、快閃驅動器或類似者的其他非暫時性電腦可讀媒體中。此外,本領域的技術人員應理解,在不脫離本揭露的實施例的精神及範疇的情況下,各種計算裝置的功能性可經組合或整合至單個計算裝置中,或特定計算裝置的功能性可橫跨一或多個其他計算裝置分佈。
除非另外定義,否則本文所使用的所有術語(包含技術及科學術語)具有與由在本發明概念所屬的領域中具有通常知識者通常所理解的含義相同的含義。應進一步理解,術語(諸如,常用詞典中所定義的那些術語)應被解釋為具有與其在相關領域及/或本發明的上下文中的含義一致的含義,且不應以理想化或過分正式意義來進行解釋,除非本文中明確地如此定義。
為了藉由減少鍵值更新的數目來改良儲存裝置的寫入效率,可被稱為「原位更新」的「內嵌覆寫合併」或「覆寫合併」允許合併對應於共同鍵且在給定時間框內出現的衝突寫入。所述衝突寫入對應於在給定時間框內出現的不同各別事務,使得所述事務在實質上同一時間存在於未決佇列中。
因此,覆寫合併允許丟棄特定鍵的時間較舊鍵值更新,從而有利於同一鍵的時間較新鍵值更新。亦即,在給定時間框內出現的共同鍵的衝突未決寫入可藉由丟棄無關的時間較早寫入而「合併」,從而有利於時間最近寫入。因此,鍵值更新/寫入的總數目可減少,從而減小系統開銷。
可應用覆寫合併的概念作為與各種鍵值(key-value;KV)儲存方法相關聯的寫入減少方法(例如,與結合鍵值固態驅動器(key-value solid state drive;KVSSD)使用的鍵值儲存相關聯,所述鍵值固態驅動器與諸如RocksDB(由臉書R
(FACEBOOK®)開發)的現有永久鍵值儲存相容且與MyRocks(一種亦由FACEBOOK®開發的RocksDB儲存引擎)相容)。舉例而言,其一個基準為多執行緒順序寫入的能力,其中每一執行緒創建與其他執行緒的鍵重複的鍵。因此,增加簡單覆寫合併的能力可為有益的,且當在儲存媒體空間中應用快閃記憶體時減小寫入放大可為有益的。
儘管覆寫合併可用於減小寫入放大,但覆寫合併通常可不僅用於事物系統。舉例而言,覆寫合併/原位更新在與事物批次處理組合使用時可具有非所要效應。此類非所要效應可起因於由事務相關性引起的一長串未決事務,從而潛在地造成資料不一致性,且使得覆寫合併不能實行。此外,可潛在地打破崩潰一致性。亦即,儘管覆寫合併允許減小寫入放大並且改良效能(例如,改良每秒輸入輸出操作(input-output operations per second;IOPS)),但覆寫合併在存在大量事務時可能無法實行。舉例而言,在存在大量事務時,當多個級聯/鏈接事務中的一者期間發生崩潰時資料一致性可打破。此外,當出現多個覆寫時可出現一長串未決事務。
因此,本揭露的實施例允許對藉由允許內嵌覆寫合併而級聯的事務進行分組(例如,使用事務組)。為了達成所揭露實施例,對應後設資料的寫入可延遲,直至組中的所有事務操作均寫入裝置中。如所提及,儘管根據所呈現實施例的內嵌覆寫合併可用於減小寫入放大,但內嵌覆寫合併可不僅用於事物系統。藉由在快閃記憶體技術的情況下執行本揭露的實施例,一些快閃裝置可展現經改良的寫入耐久度及效能(例如,每秒IO操作(IOPS))。
圖1為描繪覆寫合併及由其引起的事務相關性的方塊圖。
參看圖1,第一事務Trxn1可具有鍵值更新V2,所述鍵值更新V2可與第二事務Trxn2的鍵值更新V3覆寫合併。事務Trxn2可具有鍵值更新V4,所述鍵值更新V4可分別與第三事務Trxn3及第四事務Trxn4的鍵值更新V5及鍵值更新V6覆寫合併。第三事務Trxn3亦可具有鍵值更新V7,所述鍵值更新V7可與第四事務Trxn4的鍵值更新V8覆寫合併。此外,第四事務Trxn4可具有鍵值更新V9,所述鍵值更新V9可與第五事務Trxn5的鍵值更新V10覆寫合併。
因此,由於各個事務因其鍵值更新能夠被覆寫合併而產生的互依性,所述事務可藉由自其產生的互依性鏈而鏈接在一起。因此,在崩潰或非預期斷電的情況下,可能出現由覆寫合併產生的非所要效應。
在本實例中,如圖1中所示,若在第四事務Trxn4的鍵值更新V9之後且在第五事務Trxn5的鍵值更新V10之前發生崩潰,則所有經鏈接事務Trxn1至Trxn5可轉返(roll back)(亦即,由系統重新運行以確保有效性及資料一致性)。亦即,由於發生崩潰,因此第四事務Trxn4的鍵值更新V9無法經判定為有效。由於第四事務Trxn4的鍵值更新V9無法經判定為有效,因此第四事務Trxn4的完成無法經判定為有效。
此外,由於第四事務Trxn4的鍵值更新V6與第二事務Trxn2及第三事務Trxn3的鍵值更新V4及鍵值更新V5覆寫合併,因此鍵值更新V4及鍵值更新V5都無法經證實為已有效寫入。因此,第二事務Trxn2及第三事務Trxn3同樣無法經判定為有效。
最後,由於第一事務Trxn1及第二事務Trxn2的鍵值更新V2及鍵值更新V3經覆寫合併,且由於第二事務Trxn2無法經判定為有效,因此第一事務Trxn1不能經判定為有效且同樣必須轉返。
因此,由於由覆寫合併引起的事務相關性,崩潰可能需要系統重新運行相對較大數目的事務以達成資料一致性。
此外,可存在在崩潰之後事務不可恢復的情形。舉例而言,可存在由於鍵值更新V1的後設資料已寫入儲存裝置中且由於在任何鍵值儲存實施中皆沒有先前後設資料的記錄而不可能轉返第一事務Trxn1的情形(例如參見將在下文進一步描述的圖3中的S380及圖4中的表460)。
本揭露的實施例可藉由組合覆寫合併與本文中稱為「事務分組」的概念而避免可潛在地由覆寫合併引起的問題。亦即,藉由經由事務分組來對事務進行分組,同一鍵的事務寫入即使在發生崩潰的情況下亦能夠可靠地合併,從而改良寫入效率。
圖2為描繪根據本揭露的一些實施例的具有事務分組的覆寫合併的方塊圖。
舉例而言,參看圖2,可藉由向不同事務指派各別事務組識別碼(identifications;ID)(例如,Group1或Group2)來對所述事務進行分組。事務組ID可由一或多個對應的事務ID產生。此外,若沒有出現覆寫合併,則可開始新的事務組ID。舉例而言,若更新數目超過臨限值,則可開始新的事務組ID。
藉由基於每一事務的事務ID來產生事務中的每一者的各別事務組ID,可判定分開各別事務組的一或多個事務組分界。作為實例,在本實施例的一實施方案中,事務組ID可為事務ID的最高有效59位元。若將使用新的事務組ID,則下一事務ID可增加。
在圖2中所示的實例中,連續事務包含於單個事務組中,但所揭露實施例不限於此。此外,每事務組的事務的具體數目不受特定限制。
在圖2中所示的實例中,第一事務至第三事務Trxn1、Trxn2以及Trxn3各自經指派有將放入第一組「Group1」中的第一組事務ID,而第四事務Trxn4及第五事務Trxn5經指派有將放入第二組「Group2」中的第二組事務ID。因此,儘管第三事務Trxn3及第四事務Trxn4包含各自對應於同一各別鍵的各別鍵值更新(例如,對應於鍵「C」的鍵值更新V5及鍵值更新V6以及對應於鍵「D」的鍵值更新V7及鍵值更新V8),但那些鍵值更新由於第三事務Trxn3及第四事務Trxn4分別屬於不同事務組Group1及Group2而不會被覆寫合併。
此外,如上文所描述,分組可解決在崩潰之後事務原本不可恢復的情形。亦即,通常,在由於鍵值更新V1的後設資料已寫入儲存裝置中且由於在任何鍵值儲存實施中皆沒有先前後設資料的記錄而不可能轉返第一事務Trxn1時,事務可為不可恢復的。然而,根據本揭露的實施例的分組避免了此類不可恢復的崩潰,這是因為更新後鍵值的後設資料可僅在更新後鍵值的後設資料寫入儲存裝置中時才更新,以保證在發生崩潰的情況下的資料一致性(例如參見將在下文進一步描述的圖3中的S380及圖4中的表460)。
因此,且不同於上文關於圖1所描述的實例,若在第四事務Trxn4的鍵值更新V9之後且在第五事務Trxn5的鍵值更新V10之前發生崩潰,則僅轉返作為同一事務組Group2的部分的經鏈接事務Trxn4及事務Trxn5。由於第一事務組Group1的事務Trxn1、事務Trxn2以及事務Trxn3經證實為有效,因此不需要由於崩潰而轉返所述事務。
亦即,藉由將連續事務Trxn3及事務Trxn4分至不同事務組中,連續事務Trxn3與事務Trxn4之間原本將由於覆寫合併而出現的鏈接不存在/經移除。因此,第三事務Trxn3可經判定為有效,且可減少由崩潰引起的低效率。
一般而言,由本文所揭露的實施例提供的在覆寫合併的情況下進行事務分組的優勢包含改良在發生崩潰的情況下的寫入效率。如上文所證實,萬一發生崩潰,則系統可不需要轉返越過與崩潰相關聯的給定事務組的開頭。
又,由本文所揭露的實施例提供的在覆寫合併的情況下進行事務分組的優勢可為防止屬於不同各別事務組的不同鄰近事務之間的覆寫合併,同時仍允許共同指派有屬於各別事務組的給定事務組ID的不同事務之間的覆寫合併。
因此,系統可不必轉返至如同在不存在事務分組的情況下那麼遠的距離。然而,系統仍能夠藉由覆寫合併鍵值更新中的一些而至少在一定程度上達成與覆寫合併相關聯的優勢。
在圖2中所示的實例中,可注意,低效率可由於鍵C及鍵D每個必須寫入兩次(針對鍵C寫入鍵值更新V5及鍵值更新V6,且針對鍵D寫入鍵值更新V7及鍵值更新V8)。因此,在一些實施例中,可藉由評估哪些連續事務(若存在)不具有可與彼此覆寫合併的任何鍵值更新而指派事務組分界。在其他實施例中,可藉由評估哪些連續事務具有有資格與彼此覆寫合併的最少鍵值更新而指派事務組分界。
此外,在本揭露的其他實施例中,系統可允許基於對與橫跨不同事務的鍵值更新對應的共同各別鍵的分析而調整事務組ID的產生。
舉例而言,在圖2中所示的實例中,不使用來自第三事務Trxn3的鍵值更新中的任一者(Trxn3的V5及V7兩者由於Trxn4的V6及V8而變得無關)。因此,系統可自第一事務組Group1逐出Trxn3。舉例而言,鍵物件具有與鍵值更新的鏈接,且每一鍵值更新物件含有事務ID。可使用後台執行緒或「寫入工作程序(write worker)」來檢查鍵值更新且尋找可能的覆寫合併。這些後台執行緒可創建新的事務組ID(例如,在更新數目超過臨限值的情況下)。
圖3為描繪根據本揭露的實施例的具有事務分組的覆寫合併方法的流程圖。
參考圖3,根據本揭露的實施例,所揭露系統可首先判定是否有可能進入的事務太大而無法成功地執行具有事務分組的覆寫合併(S310)。若如此,則可向所述事務指派事務ID及後續事務組ID(S320)。否則,可向所述事務指派事務ID及當前事務組ID(S330)。
在向所述事務指派事務ID及事務組ID之後,可向組添加事務操作計數(S340)。隨後,可對包含對象進入事務的事務執行內嵌覆寫合併(S350)。之後,可執行寫入操作以將對應於所述事務的資料寫入一或多個裝置中(S360)。
隨後,所揭露系統可判定組中的所有操作是否已完成(S370)。若組中的所有操作已完成,則可更新其對應的後設資料且清除(S380)。若組中不到全部操作已完成,則可處理下一事務(S390)(例如直至組中的所有操作已完成)。
圖4為描繪根據本揭露的實施例的工作流程的方塊圖。
參看圖4,事務410可由系統400接收以用於執行具有事務分組的覆寫合併,且可引導至事務模組420。事務模組420可向事務410中的每一者分配事務ID及事務組ID。事務模組420可將最新接收的事務添加至時間最新組。一旦最新組變滿,事務模組420即可創建用於後續事務410的新組。
返回參看圖2,Group 1包含事務Trxn1、事務Trxn2以及事務Trxn3,事務Trxn1、事務Trxn2以及事務Trxn3包含分別對應於鍵A、鍵B、鍵C以及鍵D的鍵值更新V1、鍵值更新V2、鍵值更新V3、鍵值更新V4、鍵值更新V5以及鍵值更新V7。
在創建事務組(例如Group 1)之後,合併模組430可執行鍵值更新的覆寫合併。隨後,飛行中請求緩衝器440可將經覆寫合併的鍵值寫入裝置(例如KVSSD)450中。一旦事務組的所有經覆寫合併的鍵值都已成功寫入裝置450中,即可更新含有裝置後設資料的表460。最後,可將後設資料自表460寫入裝置450中。
根據上文,本揭露的實施例能夠對藉由使用內嵌覆寫合併而級聯的事務進行分組,且從而能夠延遲後設資料的相關聯清除,這是因為後設資料寫入操作可延遲到直至相關聯事務組中的所有操作都寫入對應裝置中。由此,本揭露的實施例能夠實現崩潰恢復。
此外,本揭露的實施例可旨在形成具有最大可能數目的級聯事務的事務組,同時避免與後設資料寫入操作相關聯的不適當延遲,且同時亦將非級聯的事務分至不同的各別事務組中。因此,根據所揭露實施例的事務組的實施使得覆寫合併與事務無縫工作,同時實現崩潰一致性且減少未決事務,從而改良資料儲存技術。
400:系統
410:事務
420:事務模組
430:合併模組
440:飛行中請求緩衝器
450:裝置
460:表
A-F:鍵
Group1:第一事務組/事務組
Group2:事務組
S310、S320、S330、S340、S350、S360、S370、S380、S390:步驟
Trxn1:第一事務
Trxn2:第二事務
Trxn3:第三事務
Trxn4:第四事務
Trxn5:第五事務
V1、V2、V3、V4、V5、V6、V7、V8、V9、V10、V11:鍵值更新
參考以下圖式描述本發明實施例的非限制性且非窮盡性實施例,其中除非另外指定,否則各視圖中類似的圖式元件符號指代類似的部件。
圖1為描繪覆寫合併及由其引起的事務相關性的方塊圖。
圖2為描繪根據本揭露的一些實施例的具有事務分組的覆寫合併的方塊圖。
圖3為描繪根據本揭露的實施例的具有事務分組的覆寫合併方法的流程圖。
圖4為描繪根據本揭露的實施例的工作流程的方塊圖。
在圖式的若干視圖中,對應的圖式元件字符指示對應的組件。技術人員將瞭解,圖式中的元件是出於簡單及清晰起見而示出且不一定按比例繪製。舉例而言,圖式中的一些元件、層以及區域的尺寸可相對於其他元件、層以及區域誇示,以幫助改良各個實施例的清晰度及理解。而且,可不展示與實施例的描述無關的常見但充分理解的元件及部分,以便提供這些各個實施例的阻擋程度較低的視圖且使描述清晰。
S310、S320、S330、S340、S350、S360、S370、S380、S390:步驟
Claims (18)
- 一種資料儲存的方法,由處理器所執行,所述方法包括:識別未決佇列中的多個事務,所述多個事務具有分別對應於多個鍵的一或多個鍵值更新;識別所述多個鍵中與屬於所述多個事務中的不同事務的所述一或多個鍵值更新中的共同相關聯鍵值更新相關聯的共同相關聯鍵;基於對橫跨不同事務的共同相關聯鍵值更新的總數目的分析來向所述多個事務指派事務組識別碼;基於所指派的所述事務組識別碼將所述多個事務分組至多個事務組中的事務組中;以及針對所述多個事務中位於所述多個事務組中的同一事務組中的經分組事務合併對應於所述共同相關聯鍵的所述共同相關聯鍵值更新的衝突資料寫入,其中所述合併包括判定對第一鍵的第一鍵值更新和對所述第一鍵的第二鍵值更新並執行所述第二鍵值更新。
- 如請求項1所述的方法,更包括:判定所述多個事務組中的已崩潰事務組中的所述多個事務中的已崩潰事務處發生崩潰;嘗試將所述已崩潰事務組中的所述多個事務中的事務鏈接到所述已崩潰事務鏈接,所述已崩潰事務組由於合併所述衝突資料寫入而鏈接。
- 如請求項1所述的方法,更包括將具有對應於相同鍵的一或多個第一鍵值更新的所述多個事務中的所移除的事務劃 分為一或多個第二鍵值更新,所述第二鍵值更新位於所述多個事務中在所述多個事務中的經劃分的所述事務之外的一或多個其他事務中。
- 如請求項1所述的方法,更包括:判定具有對應於所述多個鍵中的共同鍵的不同共同相關聯鍵值更新的一對的連續事務;以及向所述連續事務指派事務組識別碼使得所述連續事務位於不同事務組中。
- 如請求項1所述的方法,更包括:判定具有對應於所述多個鍵中的共同鍵的最少數目個共同相關聯鍵值更新的一對的連續事務;以及向所述連續事務指派事務組識別碼使得所述連續事務位於不同事務組中。
- 如請求項1所述的方法,更包括:將所述多個事務組中的一個事務組的所述衝突資料寫入的經合併鍵值更新寫入一或多個儲存裝置中;更新對應於所述多個事務組中的所述一個事務組的所述經合併鍵值更新的後設資料;以及判定所述經合併鍵值更新存在於所述一或多個儲存裝置中。
- 如請求項1所述的方法,更包括向所述多個事務指派事務識別碼。
- 一種用於執行具有事務分組的合併的系統,所述系統包括:事務模組,用於: 識別未決佇列中的多個事務,所述多個事務具有對應於多個鍵的一或多個鍵值更新;識別所述多個鍵中與屬於所述多個事務中的不同事務的所述鍵值更新中的共同相關聯鍵值更新相關聯的共同相關聯鍵;基於對橫跨不同事務的共同相關聯鍵值更新的總數目的分析向所述多個事務指派事務組識別碼;以及基於所指派的所述事務組識別碼將所述多個事務分組至多個事務組中的事務組中;以及合併模組,用於針對所述多個事務中位於所述多個事務組中的同一事務組中的經分組事務合併對應於所述共同相關聯鍵的所述共同相關聯鍵值更新的衝突資料寫入,其中所述合併包括判定對第一鍵的第一鍵值更新和對所述第一鍵的第二鍵值更新並執行所述第二鍵值更新。
- 如請求項8所述的系統,其中所述事務模組更經組態以判定所述多個事務組中的已崩潰事務組中的所述多個事務中的已崩潰事務處發生崩潰,並且更經組態以嘗試所述已崩潰事務組中的所述多個事務中的事務鏈接至所述已崩潰事務,所述已崩潰事務組由於合併所述衝突資料寫入而鏈接。
- 如請求項8所述的系統,其中所述合併模組更經組態以將具有對應於相同鍵的一或多個第一鍵值更新的所述多個事務中的所移除的事務劃分為一或多個第二鍵值更新,所述一或多個第二鍵值更新位於所述多個事務中在所述多個事務中的經劃分的所述事務出現之外的一或多個其他事務中。
- 如請求項8所述的系統,其中所述事務模組更經組態以:判定具有對應於所述多個鍵中的共同鍵的不同共同相關聯鍵值更新的一對的連續事務;以及向所述連續事務指派事務組識別碼使得所述連續事務位於不同事務組中。
- 如請求項8所述的系統,其中所述事務模組更經組態以:判定哪一對的連續事務具有對應於所述多個鍵中的共同鍵的最少數目個共同相關聯鍵值更新;以及向所述連續事務指派事務組識別碼使得所述連續事務位於不同事務組中。
- 如請求項8所述的系統,更包括飛行中請求緩衝器,所述飛行中請求緩衝器經組態以:將所述多個事務組中的一個事務組的所述衝突資料寫入的經合併鍵值更新寫入一或多個儲存裝置中;更新對應於所述多個事務組中的所述一個事務組的所述經合併鍵值更新的後設資料;以及判定所述經合併鍵值更新存在於所述一或多個儲存裝置中。
- 如請求項8所述的系統,其中所述事務模組更經組態以向所述多個事務指派事務識別碼。
- 一種非暫時性電腦可讀媒體,實施於用於執行具有事務分組的合併的系統上,所述非暫時性電腦可讀媒體具有電腦程式碼,所述電腦程式碼實施資料儲存的方法,所述方法包括: 識別未決佇列中的多個事務,所述多個事務具有分別對應於多個鍵的一或多個鍵值更新;識別所述多個鍵中與屬於所述多個事務中的不同事務的所述鍵值更新中的共同相關聯鍵值更新相關聯的共同相關聯鍵;基於對橫跨不同事務的共同相關聯鍵值更新的總數目的分析向所述多個事務指派事務組識別碼;基於所指派的所述事務組識別碼將所述多個事務分組至多個事務組中的事務組中;以及針對所述多個事務中位於所述多個事務組中的同一事務組中的經分組事務合併對應於所述共同相關聯鍵的所述共同相關聯鍵值更新的衝突資料寫入,其中所述合併包括判定對第一鍵的第一鍵值更新和對所述第一鍵的第二鍵值更新並執行所述第二鍵值更新。
- 如請求項15所述的非暫時性電腦可讀媒體,其中所述電腦程式碼藉由以下操作更實施所述資料儲存的方法:判定所述多個事務組中的已崩潰事務組中的所述多個事務中的已崩潰事務處發生崩潰,並且嘗試將所述已崩潰事務組中的所述多個事務中的事務鏈接至所述已崩潰事務,所述已崩潰事務組由於合併所述衝突資料寫入而鏈接。
- 如請求項15所述的非暫時性電腦可讀媒體,其中所述電腦程式碼藉由以下操作更實施所述資料儲存的方法:將具有對應於相同鍵的一或多個第一鍵值更新的所述多個事務中的所移除的事務劃分為一或多個第二鍵值更新,所述一或多個第二鍵值更新位於所述多個事務中在所述多個事務中的經劃分的所述事務 之外的一或多個其他事務中。
- 如請求項15所述的非暫時性電腦可讀媒體,其中所述電腦程式碼藉由以下操作更實施所述資料儲存的方法:判定具有對應於所述多個鍵中的共同鍵的不同共同相關聯鍵值更新的一對的連續事務;以及向所述連續事務指派事務組識別碼使得所述連續事務位於不同事務組中。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962903662P | 2019-09-20 | 2019-09-20 | |
US62/903,662 | 2019-09-20 | ||
US16/834,231 | 2020-03-30 | ||
US16/834,231 US11429628B2 (en) | 2019-09-20 | 2020-03-30 | Transaction grouping for overwrite merge |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202113621A TW202113621A (zh) | 2021-04-01 |
TWI834912B true TWI834912B (zh) | 2024-03-11 |
Family
ID=
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190026292A1 (en) | 2014-12-12 | 2019-01-24 | International Business Machines Corporation | Merging database operations for serializable transaction execution |
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190026292A1 (en) | 2014-12-12 | 2019-01-24 | International Business Machines Corporation | Merging database operations for serializable transaction execution |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102013017179B4 (de) | DMA-Integritätsprüfungseinheit | |
CN103729442B (zh) | 记录事务日志的方法和数据库引擎 | |
DE102012210232B4 (de) | Vorbeugende Speicherreparatur auf der Grundlage der Analyse einer Vielzahl von Symbolen und Bereinigungszyklen | |
US20110320892A1 (en) | Memory error isolation and recovery in a multiprocessor computer system | |
DE102017125481A1 (de) | Verfolgung verteilter hardware | |
DE112007001245T5 (de) | Fehlererkennung mit redundanten virtuellen Maschinen | |
US9262279B2 (en) | Classifying and monitoring database operations based on a cost of recovery | |
CN105074656B (zh) | 管理并发谓词表达式的方法和装置 | |
CN111125040A (zh) | 管理重做日志的方法、装置及存储介质 | |
TWI834912B (zh) | 資料儲存方法、於執行具有事務分組的合併的系統及非暫時性電腦可讀媒體 | |
CN106293520A (zh) | 一种io请求的处理方法 | |
DE112007003722B4 (de) | Modifizieren von Systemroutinginformationen in linkbasierenden Systemen | |
CN105138308B (zh) | 一种更新寄存器的方法及装置 | |
JP6643407B2 (ja) | 欠陥関数を検査する方法、装置、サーバ及びプログラム | |
EP1398700A1 (de) | Verfahren und Schaltungsanordnung zur Synchronisation redundanter Verarbeitungseinheiten | |
CN111694508A (zh) | 在基于NVMe的SSD中管理LBA重叠检查的方法和系统 | |
US20140156975A1 (en) | Redundant Threading for Improved Reliability | |
US9990290B2 (en) | Cache coherency verification using ordered lists | |
TW202113621A (zh) | 資料儲存方法、於執行具有事務分組的合併的系統及非暫時性電腦可讀媒體 | |
US10970204B2 (en) | Reducing read-write interference by adaptive scheduling in NAND flash SSDs | |
CN115760405A (zh) | 交易执行方法、装置、计算机设备及介质 | |
US9430677B2 (en) | Memory management systems and methods for embedded systems | |
EP1398699A1 (de) | Verfahren zur Ereignissynchronisation, insbesondere für Prozessoren fehlertoleranter Systeme | |
CN115348276A (zh) | 数据存储方法、装置、计算机设备及存储介质 | |
CN107122489B (zh) | 一种数据对比方法及装置 |