JP2021051743A - データ格納方法及びシステム並びに非一時的なコンピュータ読取可能媒体 - Google Patents
データ格納方法及びシステム並びに非一時的なコンピュータ読取可能媒体 Download PDFInfo
- Publication number
- JP2021051743A JP2021051743A JP2020157555A JP2020157555A JP2021051743A JP 2021051743 A JP2021051743 A JP 2021051743A JP 2020157555 A JP2020157555 A JP 2020157555A JP 2020157555 A JP2020157555 A JP 2020157555A JP 2021051743 A JP2021051743 A JP 2021051743A
- Authority
- JP
- Japan
- Prior art keywords
- transaction
- transactions
- key value
- group
- key
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000013500 data storage Methods 0.000 title claims abstract description 32
- 230000009471 action Effects 0.000 claims description 11
- 238000004458 analytical method Methods 0.000 claims description 5
- 238000005516 engineering process Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000003321 amplification Effects 0.000 description 4
- 238000003199 nucleic acid amplification method Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000001010 compromised effect Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000007787 solid Substances 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/25—Integrating or interfacing systems involving database management systems
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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
-
- 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/235—Update request formulation
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Multimedia (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
多様なキー値をアップデートするための複数のトランザクションが保留キューに配置される。
保留キュー内における異なるトランザクションは、それぞれ競合するキー値アップデートに対応し、競合するキー値アップデートはいずれも共通キーに対応する。
例えば、第1書き込み動作又は第1トランザクションは、その後、第2の書き込み動作/トランザクションが同一のキーに対して異なるキー値アップデートを行おうとする際に、キーへのキー値アップデートを行おうとする。
従って、特定のキーは、異なるキー値ですぐに再アップデートされるようにキー値でアップデートされる。
このようなシナリオでのさまざまなトランザクションは、一般的に、互いに比較的近い時間に発生する。
また、本発明の他の目的は、トランザクショングループ化とマージを実行するためのシステム及びそのシステムに実装された非一時的なコンピュータ読取可能媒体を提供することにある。
同一のそれぞれのキーに対応する1つ以上の後期(later−in−time)キー値アップデートによって、関連していない1つ以上の初期(early−in−time)キー値アップデートのみを有する前記トランザクションの内の1つを除去する段階をさらに有し、前記後期キー値アップデートは、トランザクションの内の除去されたものよりも後に発生する1つ以上の他のトランザクションであることが好ましい。
前記複数のキーの共通キーに対応する任意の共通して関連するキー値アップデートが欠如する連続的なトランザクションのペアを決定する段階と、前記連続的なトランザクションが異なるそれぞれのトランザクショングループに位置するように、前記トランザクショングループIDを前記連続的なトランザクションにそれぞれ割り当てる段階と、をさらに有することが好ましい。
前記トランザクショングループIDを割り当てる段階は、異なるトランザクションにわたって共通して関連するキー値アップデートの総数の分析に更に基づくことが好ましい。
前記競合するデータ書き込みのマージされた全てキー値アップデートを、前記トランザクショングループの内の1つのトランザクショングループの1つ以上のストレージデバイスに書き込む段階と、前記マージされたキー値アップデートの全てが前記1つ以上のストレージデバイスに書き込まれたことが確認された場合にのみ、前記トランザクショングループの内の1つのトランザクショングループの前記マージされたキー値アップデートに対応するメタデータをアップデートする段階と、をさらに有することが好ましい。
前記各トランザクションIDを前記各トランザクションに割り当てる段階をさらに有することが好ましい。
前記マージモジュールは、同一のそれぞれのキーに対応する1つ以上の後期(later−in−time)キー値アップデートによって、関連していない1つ以上の初期(early−in−time)キー値アップデートのみを有する前記トランザクションの内の1つを除去する動作を行うように構成され、前記後期キー値アップデートは、前記トランザクションの内の除去されたものよりも後に発生する1つ以上の他のトランザクションであることが好ましい。
前記トランザクションモジュールは、複数のキーの共通キーに対応する任意の共通して関連するキー値アップデートが欠如する連続的なトランザクションのペアを決定し、前記連続的なトランザクションが異なるそれぞれのトランザクショングループに位置するように、前記トランザクショングループIDを前記連続的なトランザクションにそれぞれ割り当てる動作を行うようにさらに構成されることが好ましい。
前記トランザクショングループIDを前記トランザクションにそれぞれを割り当てる動作は、異なるトランザクションにわたって共通して関連するキー値アップデートの総数の分析にさらに基づくことが好ましい。
インフライト・リクエストバッファ(inflight request buffer)をさらに有し、前記インフライト・リクエストバッファは、前記競合するデータ書き込みのマージされた全てキー値アップデートを、前記トランザクショングループの内の1つのトランザクショングループの1つ以上のストレージデバイスに書き込み、前記マージされたキー値アップデートの全てが前記1つ以上のストレージデバイスに書き込まれたことが確認された場合にのみ、前記トランザクショングループの内の1つのトランザクショングループの前記マージされたキー値アップデートに対応するメタデータをアップデートする動作を行うように構成されることが好ましい。
前記トランザクションモジュールは、前記各トランザクションIDを前記各トランザクションに割り当てるようにさらに構成されることが好ましい。
前記コンピュータコードは、前記プロセッサ上で実行される際に、同一のそれぞれのキーに対応する1つ以上の後期(later−in−time)キー値アップデートによって、関連していない1つ以上の初期(early−in−time)キー値アップデートのみを有するトランザクションの内の1つを除去する段階をさらに有する前記データ格納方法を実装し、前記後期キー値アップデートは、前記トランザクションの内の除去されたものよりも後に発生する1つ以上の他のトランザクションであることが好ましい。
前記コンピュータコードは、前記プロセッサ上で実行される際に、複数のキーの共通キーに対応する任意の共通して関連するキー値アップデートが欠如する連続的なトランザクションのペアを決定する段階と、前記連続的なトランザクションが異なるそれぞれのトランザクショングループに位置するように、前記トランザクショングループIDを前記連続的なトランザクションにそれぞれ割り当てる段階と、をさらに有する前記データ格納方法を実装することが好ましい。
対応する参照符号は、様々な図面にわたって対応する構成要素を示す。
当業者は、図面の要素が単純性や明瞭性のために示しており、必ずしも正確な比率で示していないことを理解するであろう。
例えば、図面において、一部の構成要素、層、領域の面積は、明瞭性や多様な実施形態の理解を助けるために、他の構成要素、層、領域に比べて誇張される。
また、実施形態の説明に関連していない、一般的であるがよく理解される構成要素及び部分は、多様な実施形態の図面が影響を受けないように、且つ説明を明確にするために図示しない場合もある。
以下では、実施形態について添付図面を参照してより詳細に説明する。
しかし、説明する実施形態は、多様な他の形態で実施することができ、本明細書で開示する実施形態に限定して解釈すべきではない。
むしろ、このような実施形態は、本発明が徹底的且つ完全なものになるように例示として提供し、当業者に本発明の態様や特徴を十分に伝える。
よって、本発明の態様や特徴の完全な理解のために、当業者に不要なプロセス、要素、及び技術を説明しないことがあり得る。
また、実施形態の説明と関連のない部分は、説明を明確にするために示さない。
図面において、構成要素、層、領域の相対的なサイズは、明確性のために誇張することがある。
詳細な説明において、説明の目的として、多様な実施形態の徹底した理解のために多数の特定の詳細な説明を提示する。
しかし、多様な実施形態は、このような特定の詳細な説明がなくても実施してもよく、或いは、1つ以上の同等な配列を有して実施してもよいということは明らかである。
他方、よく知られている構造及び装置は、多様な実施形態をむやみに曖昧にすることを避けるために、ブロック図の形で示す。
これらの用語は、単に1つの構成要素、部分品、領域、層又はセクションを他の構成要素、部分品、領域、層又はセクションと区別するために用いる。
従って、以下で説明する第1構成要素、部分品、領域、層又はセクションは、本発明の思想や範囲を逸脱することなく、第2構成要素、部分品、領域、層又はセクションとしてもよい。
本明細書において、「含む」又は「有する」などの用語は、開示する特徴、数字、段階、動作、構成要素、部分品、及び/又はこれらの組み合わせが存在することを指すものであって、1つ以上の他の特徴、数字、段階、動作、構成要素、部分品及び/又はこれらの組み合わせの存在や付加の可能性を排除するものではないことを理解すべきである。
本明細書で用いる「及び/又は」、「及び/若しくは」という用語は、1つ以上の関連して挙げられた項目の任意且つ全ての組み合わせを含む。
本明細書で用いる「約」又は「およそ」は、特定量の測定に関する誤差(即ち、測定システムの限界)を考慮して、当業者によって決定される明示された値を含み、特定値の許容可能な偏差範囲内を意味する。
例えば、「約」は、1つ以上の標準偏差又は明示された値の±30%、20%、10%、5%内を意味する。
更に、本発明の実施形態を説明する際に用いる「し得る」は、本発明の1つ以上の実施形態を指すものである。
例えば、連続して説明する2つのプロセスは、実質的に同時に行ってもよく、或いは、説明する順序と反対の順序で行ってもよい。
例えば、これらの装置の多様な部分品は、1つの集積回路(IC)チップ又は別のICチップ上に形成される。
また、これらの装置の多様な部分品は、フレキシブル印刷回路フィルム、テープキャリアパッケージ(Tape Carrier Package:TCP)、印刷回路基板(Printed Circuit Board:PCB)上に実装されるか、又は1つの基板上に形成される。
コンピュータプログラム命令は、例えば、ランダムアクセスメモリ(Random Access Memory:RAM)などの標準メモリ装置を用いてコンピューティング装置内に実装されるメモリに格納される。
また、コンピュータプログラム命令は、例えば、CD−ROM、フラッシュドライブなどの他の非一時的なコンピュータ読取可能記録媒体(non−transitory computer readable media)に格納される。
更に、当業者は、本発明の実施形態の思想や範囲を逸脱することなく、多様なコンピューティング装置の機能が単一のコンピューティング装置に結合若しくは統合されるか、又は特定のコンピューティング装置の機能が1つ以上の他のコンピューティング装置に分散されるということを認識すべきである。
また、通常用いられる辞典に定義されているような用語は、関連技術及び/又は本明細書の文脈上の意味と一致すると解釈すべきであり、本明細書で明らかに定義しない限り、理想的又は過度に公式的な意味に解釈してはならないことが理解される。
競合する書き込みは、与えられたタイムフレーム内で発生する互いに異なるそれぞれのトランザクションに対応するため、トランザクションは全て実質的に同時に保留キューに存在する。
つまり、与えられたタイムフレーム内に発生する共通キーへの競合する保留書き込みは、最後の書き込みのために、関連のない初期の書き込みを廃棄することにより、「マージ(併合)」される。
従って、キー値アップデート/書き込みの総数が減ることにより、システムオーバーヘッドが減る。
例えば、あるベンチマークは、マルチスレッドのシーケンシャル書き込み能力であり、各スレッドは、他のスレッドのキーと重複するキーを生成する。
従って、簡単なオーバーライトマージ能力を追加することが有利であり、フラッシュメモリをストレージ媒体空間に適用することにより、書き込み増幅(write amplification)の減少は有利になる。
例えば、オーバーライトマージ/インプレースアップデートは、トランザクションの一括処理と共に使用する際に望ましくない影響を与える。
このような望ましくない影響は、トランザクションの依存性による保留中のトランザクションのロングテールが原因であり、そのため、潜在的にデータの不一致が発生し、オーバーライトマージを非実用的にしてしまう。
また、衝突(crash)の一貫性が潜在的に損なわれる。
つまり、オーバーライトマージを使用すると、書き込み増幅を減らし、性能を向上させることができるが(例えば、IOPS(秒あたり入出力動作)の向上)、多数のトランザクションがある場合、オーバーライトマージは行わない。
例えば、多数のトランザクションがある場合、複数のカスケード接続された/リンクされたトランザクションの内の1つで衝突が発生すると、データの一貫性が損なわれる。
また、オーバーライトが複数回発生する場合、保留中のトランザクションのロングテールが発生する。
本発明の実施形態を達成するために、対応するメタデータの書き込みは、グループ内の全てのトランザクション動作がデバイスに書き込まれるまで遅延する。
記載の通り、本発明の実施形態によるインライン・オーバーライトマージを、書き込み増幅を減らすことに使用するが、インライン・オーバーライトマージはトランザクションシステムに単独では使用しない。
フラッシュメモリ技術で本発明の実施形態を行うことにより、一部のフラッシュデバイスは、改善した書き込み耐久性及び性能(例えば、IOPS)を示す。
図1を参照すると、第1トランザクション(Trxn1)は、第2トランザクション(Trxn2)のキー値アップデート(V3)と、オーバーライトマージされるキー値アップデート(V2)と、を有する。
第3トランザクション(Trxn3)は、第4トランザクション(Trxn4)のキー値アップデート(V8)と、オーバーライトマージされるキー値アップデート(V7)と、を有する。
更に、第4トランザクション(Trxn4)は、第5トランザクション(Trxn5)のキー値アップデート(V10)と、オーバーライトマージされるキー値アップデート(V9)と、を有する。
そのため、衝突又は予期しない停電が発生した場合、オーバーライトマージにより望ましくない影響が生じる。
即ち、衝突により、第4トランザクション(Trxn4)のキー値アップデート(V9)が有効と判断されない。
第4トランザクション(Trxn4)のキー値アップデート(V9)が有効と判断されないため、第4トランザクション(Trxn4)の完了が有効と判断されない。
従って、第2及び第3トランザクション(Trxn2及びTrxn3)も同様に有効と判断されない。
従って、オーバーライトマージから発生するトランザクションの依存性により、衝突はシステムにおけるデータの一貫性を達成するために比較的多数のトランザクションを要求する。
例えば、キー値アップデート(V1)のメタデータがストレージデバイスに既に書き込まれており、且つ、任意のキー値ストアの実行における前回のメタデータの記録がないため(例えば、下記で更に説明する図3のステップS380及び図4のテーブル460参照)、第1トランザクション(Trxn1)がロールバックされない状況が存在する。
つまり、トランザクショングループ化を通じてトランザクションをグループ化することにより、衝突の際にも、同一のキーに対するトランザクションの書き込みを安定的にマージするため、書き込みの効率性が向上する。
例えば、図2を参照すると、それぞれのトランザクショングループID(例えば、Group1又はGroup2)をトランザクションに割り当てることにより、異なるトランザクションがグループ化される。
また、オーバーライトマージが発生しなければ、新たなトランザクショングループIDがスタートする。
例えば、複数のアップデートが臨界値を超えれば、新たなトランザクショングループIDがスタートする。
例えば、本実施形態の実行において、トランザクショングループIDは、トランザクションIDの最上位59ビットである。
新たなトランザクショングループIDを使用する場合、次のトランザクションIDが増加する。
図2に示すように、連続的なトランザクションは単一のトランザクショングループに含まれるが、本発明の実施形態は、これに制限されない。
また、トランザクショングループ当たりのトランザクションの具体的な数は、特に制限されない。
従って、第3及び第4トランザクション(Trxn3及びTrxn4)は、それぞれ、それぞれの同じキーに対応するそれぞれのキー値アップデートを含んでいても(例えば、キー「C」に対応するキー値アップデート(V5及びV6)、及びキー「D」に対応するキー値アップデート(V7及びV8))、このようなキー値アップデートは、第3及び第4トランザクション(Trxn3及びTrxn4)が互いに異なるトランザクショングループ(Group1及びGroup2)にそれぞれ属するため、オーバーライトマージされない。
つまり、従来は、キー値アップデート(V1)のメタデータがストレージデバイスに既に書き込まれており、どのキー値ストアの実行でも前回のメタデータの記録がないため、第1トランザクション(Trxn1)がロールバックされない場合、トランザクションは復旧不可能である。
しかし、本発明の実施形態によるグループ化は、復旧不可能な衝突を避けることができるが、衝突が発生した際に(例えば、下記で更に説明する図3のステップS380及び図4のテーブル460参照)、データの一貫性を保証するために、アップデートされたキー値に対するメタデータがストレージデバイスに書き込まれる場合にのみ、アップデートされたキー値に対するメタデータがアップデートされるからである。
第1トランザクショングループ(Group1)のトランザクション(Trxn1、Trxn2、及びTrxn3)が有効と確認されたため、衝突によりロールバックする必要はない。
従って、第3トランザクション(Trxn3)が有効と判断され、衝突による非効率性が減る。
上述のように、衝突が発生すると、システムは衝突と関連する与えられたトランザクショングループの開始を過ぎてロールバックする必要がない。
従って、システムは、トランザクショングループ化のない限り、ロールバックしなくてもよい。
しかし、システムは、キー値アップデートの一部をオーバーライトマージすることにより、オーバーライトマージに関するメリットを依然としてある程度まで達成する。
従って、一実施形態において、トランザクショングループの境界は、連続的なトランザクションがあったとしても、互いにオーバーライトマージされるキー値アップデートがない場合に評価することで割り当てられる。
他の実施形態において、トランザクショングループの境界は、どの連続的なトランザクションが互いにオーバーライトマージするのに適格であるキー値アップデートが最も少ないかを評価することで割り当てられる。
例えば、図2に示すように、第3トランザクション(Trxn3)からのキー値アップデートは、使用しない(Trxn3のV5及びV7は、Trxn4のV6及びV8により関係なく両方ともレンダリングされる)。
例えば、キー対象は、キー値アップデートに対するリンクを有し、各キー値アップデートの対象は、トランザクションIDを含む。
バックグラウンドスレッド、又は「書き込み作業者」によりキー値アップデートを検査し、可能なオーバーライトマージを見つける。
このようなバックグラウンドスレッドは、新たなトランザクショングループIDを生成する(例えば、複数のアップデートが臨界値を超える場合)。
図3を参照すると、本発明の実施形態によるシステムは、入ってくるトランザクションが、トランザクショングループとのオーバーライトマージを正しく行うにあたって、大きすぎるものが可能か否かを初期に判断する(ステップS310)。
もし大きすぎれば、トランザクションID及びそれに続くトランザクショングループIDがトランザクションに割り当てられる(ステップS320)。
もしそうでなければ、トランザクションID及び現在のトランザクショングループIDがトランザクションに割り当てられる(ステップS330)。
次に、インライン・オーバーライトマージが、入ってくるトランザクションである対象を含むトランザクションに対して行われる(ステップS350)。
その後、トランザクションに対応するデータを1つ以上の装置に書き込むための書き込み動作が行われる(ステップS360)。
グループ内の全ての動作が完了した場合、それに対応するメタデータは、アップデートされ、そしてフラッシュされる(ステップS380)。
グループ内の全ての動作が完了していない場合、次のトランザクションが処理される(ステップS390)(例えば、グループ内の全ての動作が完了するまで)。
図4を参照すると、トランザクショングループ化とのオーバーライトマージを行うために、トランザクション410がシステム400により受信され、トランザクションモジュール420に送られる。
トランザクションモジュール420は、直近に受信したトランザクションを最新のグループに追加する。
直近のグループがフルになると、トランザクションモジュール420は、それに続くトランザクション410のための新たなグループを生成する。
トランザクショングループ(例えば、Group1)を生成した後、マージモジュール430は、キー値アップデートのオーバーライトマージを行う。
トランザクショングループにおけるマージされたキー値が全てデバイス450に正しく書き込まれると、デバイスメタデータを含むテーブル460がアップデートされる。
最後に、メタデータは、テーブル460からデバイス450に書き込まれる(フラッシュされる)。
従って、本発明の実施形態は、衝突の復旧を達成する。
従って、本発明の実施形態によるトランザクショングループの実現は、衝突の一貫性を可能にし、保留中のトランザクションを減らすと同時に、トランザクションと共にオーバーライトマージ作業をスムーズにし、これによりデータ格納技術を向上させることができる。
410 トランザクション
420 トランザクションモジュール
430 マージモジュール
440 インフライト・リクエストバッファ
450 デバイス
460 テーブル
Claims (20)
- データ格納方法であって、
保留中のキューで、複数のキーにそれぞれ対応する1つ以上のキー値アップデートを有する複数のトランザクションを識別する段階と、
前記トランザクションの内で異なるものに属している前記キー値アップデートに共通して関連するキー値アップデートに関する前記複数のキーに共通して関連するキーを識別する段階と、
複数のトランザクショングループIDに割り当てられたそれぞれのトランザクションIDに基づいて、トランザクショングループIDを前記トランザクションにそれぞれ割り当てる段階と、
前記割り当てられたトランザクショングループIDに基づいて、前記トランザクションを前記複数のトランザクションのそれぞれのトランザクショングループにグループ化する段階と、
前記トランザクショングループの同じ1つにあるトランザクションの内のグループ化されたトランザクションに対して、共通して関連するキーの、共通して関連するキー値アップデートに対応する競合する(conflicting)データ書き込みをマージ(merge)する段階と、を有することを特徴とするデータ格納方法。 - 衝突(crash)が、前記トランザクショングループの内の衝突したトランザクショングループ内で前記トランザクションの内の衝突したトランザクションで発生する場合、
前記競合するデータ書き込みをマージすることにより、リンクされた前記衝突したトランザクショングループ内のトランザクションの内、リンクされた前記トランザクションのみを、前記衝突したトランザクションに再試行する段階をさらに有することを特徴とする請求項1に記載のデータ格納方法。 - 同一のそれぞれのキーに対応する1つ以上の後期(later−in−time)キー値アップデートによって、関連していない1つ以上の初期(early−in−time)キー値アップデートのみを有する前記トランザクションの内の1つを除去する段階をさらに有し、
前記後期キー値アップデートは、トランザクションの内の除去されたものよりも後に発生する1つ以上の他のトランザクションであることを特徴とする請求項1に記載のデータ格納方法。 - 前記複数のキーの共通キーに対応する任意の共通して関連するキー値アップデートが欠如する連続的なトランザクションのペアを決定する段階と、
前記連続的なトランザクションが異なるそれぞれのトランザクショングループに位置するように、前記トランザクショングループIDを前記連続的なトランザクションにそれぞれ割り当てる段階と、をさらに有することを特徴とする請求項1に記載のデータ格納方法。 - 前記複数のキーの共通キーに対応する最も少ない数の、共通して関連するキー値アップデートを有する連続的なトランザクションのペアを決定する段階と、
前記連続的なトランザクションが異なるそれぞれのトランザクショングループに位置するように、前記トランザクショングループIDを前記連続的なトランザクションにそれぞれ割り当てる段階と、をさらに有することを特徴とする請求項1に記載のデータ格納方法。 - 前記トランザクショングループIDを割り当てる段階は、異なるトランザクションにわたって共通して関連するキー値アップデートの総数の分析に更に基づくことを特徴とする請求項1に記載のデータ格納方法。
- 前記トランザクショングループの内の1つの前記競合するデータ書き込みにおけるマージされたキー値アップデートを全て1つ以上のストレージデバイスに書き込む段階と、
前記マージされたキー値アップデートの全てが前記1つ以上のストレージデバイスに書き込まれたことが確認された場合にのみ、前記トランザクショングループの内の1つのトランザクショングループの前記マージされたキー値アップデートに対応するメタデータをアップデートする段階と、をさらに有することを特徴とする請求項1に記載のデータ格納方法。 - 前記各トランザクションIDを前記各トランザクションに割り当てる段階をさらに有することを特徴とする請求項1に記載のデータ格納方法。
- トランザクショングループ化とマージを実行するためのシステムであって、
トランザクションモジュールと、
マージモジュールと、を有し、
前記トランザクションモジュールは、保留中のキューで、複数のキーにそれぞれ対応する1つ以上のキー値アップデートを有する複数のトランザクションを識別し、
前記トランザクションの内で異なるものに属している前記キー値アップデートに共通して関連するキー値アップデートに関する前記複数のキーに共通して関連するキーを識別し、
複数のトランザクショングループIDに割り当てられたそれぞれのトランザクションIDに基づいて、トランザクショングループIDを前記トランザクションにそれぞれ割り当て、
前記割り当てられたトランザクショングループIDに基づいて、前記トランザクションを前記複数のトランザクションのそれぞれのトランザクショングループにグループ化する動作を行うように構成され、
前記マージモジュールは、前記トランザクショングループの同じ1つにあるトランザクションの内のグループ化されたトランザクションに対して、前記共通して関連するキーの、前記共通して関連するキー値アップデートに対応する競合する(conflicting)データ書き込みをマージ(merge)する動作を行うように構成されることを特徴とするシステム。 - 衝突(crash)が、前記トランザクショングループの内の衝突したトランザクショングループ内で前記トランザクションの内の衝突したトランザクションで発生する場合、
前記トランザクションモジュールは、前記競合するデータ書き込みをマージすることにより、リンクされた前記衝突したトランザクショングループ内のトランザクションの内、リンクされた前記トランザクションのみを、前記衝突したトランザクションに再試行するようにさらに構成されることを特徴とする請求項9に記載のシステム。 - 前記マージモジュールは、同一のそれぞれのキーに対応する1つ以上の後期(later−in−time)キー値アップデートによって、関連していない1つ以上の初期(early−in−time)キー値アップデートのみを有する前記トランザクションの内の1つを除去する動作を行うように構成され、
前記後期キー値アップデートは、前記トランザクションの内の除去されたものよりも後に発生する1つ以上の他のトランザクションであることを特徴とする請求項9に記載のシステム。 - 前記トランザクションモジュールは、複数のキーの共通キーに対応する任意の共通して関連するキー値アップデートが欠如する連続的なトランザクションのペアを決定し、
前記連続的なトランザクションが異なるそれぞれのトランザクショングループに位置するように、前記トランザクショングループIDを前記連続的なトランザクションにそれぞれ割り当てる動作を行うようにさらに構成されることを特徴とする請求項9に記載のシステム。 - 前記トランザクションモジュールは、複数のキーの共通キーに対応する最も少ない数の、共通して関連するキー値アップデートを有する連続的なトランザクションのペアを決定し、
前記連続的なトランザクションが異なるそれぞれのトランザクショングループに位置するように、前記トランザクショングループIDを前記連続的なトランザクションにそれぞれ割り当てる動作を行うようにさらに構成されることを特徴とする請求項9に記載のシステム。 - 前記トランザクショングループIDを前記トランザクションにそれぞれを割り当てる動作は、異なるトランザクションにわたって共通して関連するキー値アップデートの総数の分析にさらに基づくことを特徴とする請求項9に記載のシステム。
- インフライト・リクエストバッファ(inflight request buffer)をさらに有し、
前記インフライト・リクエストバッファは、前記トランザクショングループの内の1つの前記競合するデータ書き込みにおけるマージされたキー値アップデートを全て1つ以上のストレージデバイスに書き込み、
前記マージされたキー値アップデートの全てが前記1つ以上のストレージデバイスに書き込まれたことが確認された場合にのみ、前記トランザクショングループの内の1つのトランザクショングループの前記マージされたキー値アップデートに対応するメタデータをアップデートする動作を行うように構成されることを特徴とする請求項9に記載のシステム。 - 前記トランザクションモジュールは、前記各トランザクションIDを前記各トランザクションに割り当てるようにさらに構成されることを特徴とする請求項9に記載のシステム。
- トランザクショングループ化とマージを実行するためのシステム上に実装された非一時的なコンピュータ読取可能媒体であって、
前記非一時的なコンピュータ読取可能媒体は、プロセッサ上で実行される際、データ格納方法を実行するコンピュータコードを有し、
前記データ格納方法は、保留中のキューで、複数のキーにそれぞれ対応する1つ以上のキー値アップデートを有する複数のトランザクションを識別する段階と、
前記トランザクションの内で異なるものに属している前記キー値アップデートに共通して関連するキー値アップデートに関する前記複数のキーに共通して関連するキーを識別する段階と、
複数のトランザクショングループIDに割り当てられたそれぞれのトランザクションIDに基づいて、トランザクショングループIDを前記トランザクションにそれぞれ割り当てる段階と、
前記割り当てられたトランザクショングループIDに基づいて、前記トランザクションを前記複数のトランザクションのそれぞれのトランザクショングループにグループ化する段階と、
前記トランザクショングループの同じ1つにあるトランザクションの内のグループ化されたトランザクションに対して、共通して関連するキーの、共通して関連するキー値アップデートに対応する競合する(conflicting)データ書き込みをマージ(merge)する段階と、を有することを特徴とする非一時的なコンピュータ読取可能媒体。 - 衝突(crash)が、前記トランザクショングループの内の衝突したトランザクショングループ内でトランザクションの内の衝突したトランザクションで発生する場合、
前記コンピュータコードは、前記プロセッサ上で実行される際に、前記競合するデータ書き込みをマージすることにより、リンクされた前記衝突したトランザクショングループ内のトランザクションの内、リンクされた前記トランザクションのみを、前記衝突したトランザクションに再試行する段階をさらに有する前記データ格納方法を実装することを特徴とする請求項17に記載の非一時的なコンピュータ読取可能媒体。 - 前記コンピュータコードは、前記プロセッサ上で実行される際に、同一のそれぞれのキーに対応する1つ以上の後期(later−in−time)キー値アップデートによって、関連していない1つ以上の初期(early−in−time)キー値アップデートのみを有するトランザクションの内の1つを除去する段階をさらに有する前記データ格納方法を実装し、
前記後期キー値アップデートは、前記トランザクションの内の除去されたものよりも後に発生する1つ以上の他のトランザクションであることを特徴とする請求項17に記載の非一時的なコンピュータ読取可能媒体。 - 前記コンピュータコードは、前記プロセッサ上で実行される際に、複数のキーの共通キーに対応する任意の共通して関連するキー値アップデートが欠如する連続的なトランザクションのペアを決定する段階と、
前記連続的なトランザクションが異なるそれぞれのトランザクショングループに位置するように、前記トランザクショングループIDを前記連続的なトランザクションにそれぞれ割り当てる段階と、をさらに有する前記データ格納方法を実装することを特徴とする請求項17に記載の非一時的なコンピュータ読取可能媒体。
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 US11429628B2 (en) | 2019-09-20 | 2020-03-30 | Transaction grouping for overwrite merge |
US16/834,231 | 2020-03-30 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2021051743A true JP2021051743A (ja) | 2021-04-01 |
JP2021051743A5 JP2021051743A5 (ja) | 2023-09-27 |
JP7495312B2 JP7495312B2 (ja) | 2024-06-04 |
Family
ID=
Also Published As
Publication number | Publication date |
---|---|
KR20210034481A (ko) | 2021-03-30 |
US11429628B2 (en) | 2022-08-30 |
TW202113621A (zh) | 2021-04-01 |
US20210089549A1 (en) | 2021-03-25 |
CN112540859A (zh) | 2021-03-23 |
KR102613518B1 (ko) | 2023-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113778785A (zh) | 分布式硬件跟踪 | |
JP2012533796A5 (ja) | ||
CN111125040A (zh) | 管理重做日志的方法、装置及存储介质 | |
US10310909B2 (en) | Managing execution of computer operations with non-competing computer resource requirements | |
EP3933639B1 (en) | Transaction processing method, apparatus, and electronic device for blockchain | |
CN105138308B (zh) | 一种更新寄存器的方法及装置 | |
TW201820169A (zh) | 多工處理器及多工處理器系統 | |
JP2021051743A (ja) | データ格納方法及びシステム並びに非一時的なコンピュータ読取可能媒体 | |
JP7495312B2 (ja) | データ格納方法及びシステム並びに非一時的なコンピュータ読取可能媒体 | |
TWI834912B (zh) | 資料儲存方法、於執行具有事務分組的合併的系統及非暫時性電腦可讀媒體 | |
CN108509154B (zh) | 一种根据坏块分布动态重组raid的方法和装置 | |
US10970204B2 (en) | Reducing read-write interference by adaptive scheduling in NAND flash SSDs | |
CN108491546A (zh) | 一种页面切换方法及电子设备 | |
US9886411B2 (en) | Data transfer device and data transfer method | |
KR20130021637A (ko) | 멀티 코어 시스템의 인터럽트 할당 방법 및 장치 | |
CN115348276A (zh) | 数据存储方法、装置、计算机设备及存储介质 | |
JP4900680B2 (ja) | 半導体メモリ試験装置 | |
CN113360448A (zh) | 数据包处理方法及装置 | |
CN113342698A (zh) | 一种测试环境调度方法、计算设备及存储介质 | |
US8473705B2 (en) | Memory access apparatus | |
CN108572881A (zh) | 一种在运算器中校验数据的方法 | |
CN109885402B (zh) | 测试函数输出数据溢出的方法、终端设备及存储介质 | |
EP4009191A1 (en) | Dag-awtc ledger system using bft verification consensus mechanism | |
RU2427900C1 (ru) | Устройство для оценки предпочтительного уровня унификации технических систем | |
DE112022003379T5 (de) | Testfehlerszenario-erzeugung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230919 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230919 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20230919 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20231121 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20240220 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20240430 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240523 |