JP7423534B2 - 共有ジャーナルを含むキーバリューストア間のコンシステンシー - Google Patents

共有ジャーナルを含むキーバリューストア間のコンシステンシー Download PDF

Info

Publication number
JP7423534B2
JP7423534B2 JP2020541339A JP2020541339A JP7423534B2 JP 7423534 B2 JP7423534 B2 JP 7423534B2 JP 2020541339 A JP2020541339 A JP 2020541339A JP 2020541339 A JP2020541339 A JP 2020541339A JP 7423534 B2 JP7423534 B2 JP 7423534B2
Authority
JP
Japan
Prior art keywords
transaction
store
committed
persistent
changes
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.)
Active
Application number
JP2020541339A
Other languages
English (en)
Other versions
JP2020536339A (ja
Inventor
アレックス リャカス
ヴィー. シアム カウシク
Original Assignee
ザダラ ストレージ インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ザダラ ストレージ インコーポレイテッド filed Critical ザダラ ストレージ インコーポレイテッド
Publication of JP2020536339A publication Critical patent/JP2020536339A/ja
Application granted granted Critical
Publication of JP7423534B2 publication Critical patent/JP7423534B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/80Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in storage media based on magnetic or optical technology, e.g. disks with sectors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

この発明は、キーバリューストアに関し、特に、キーバリューストアがシステムクラッシュまたはストレージの故障に耐えるためのジャーナリングに関する。
キーバリュー(KV)ストアは、単一のデータベースと見ることができる。データをテーブルおよびカラムに配列する構造化照会言語(SQL)と異なり、KVストアは単に、キーバリューペアの集合である。キーは、任意であり得、例えば、整数またはストリングであり得る。唯一の要件は、KVストアが、任意の2つのキーをどのように比較するかを知っていることである。バリューも任意であり得、KVストアは、それをバイナリ・ラージ・オブジェクト(BLOB)として扱う。唯一の要件は、KVストアがそれをディスク上に記憶することができるようにバリューサイズを知っていることである。
典型的には、KVストアは、トランザクションにより動作する。新しいトランザクションは、アプリケーションが、例えば新しいキーを挿入するような、KVストア上で何等かの変更を実行したいときオープンされる。後で、このトランザクションのために、さらなる変更を行うことができる。いくつかのポイントで、KVストアは、現在実行しているトランザクションが、十分な変更を累積したと決定する。次に、KVストアは現在のトランザクションをコミットし、トランザクションのためのすべての変更がディスクに保持される。これで、新しい実行中のトランザクションを開くことができる。各トランザクションは、単調に増加する整数のような、ある種のトランザクションIDを有する。
アプリケーションの観点から、典型的なフローは、以下の通りである。
1.KVストアトランザクションに参加する。
2.変更のセットを実行する。例えば、新しいキーバリューペアを挿入する、キーバリューペアを削除する、いくつかのキーを変更する、いくつかの値を変更する等である。
3.KVストアトランザクションをデタッチ(detach)する。
それに参加するアプリケーションスレッドが依然としてある間、トランザクションはコミット(commit)することができない。一度だけ、すべてのアプリケーションスレッドがトランザクションからデタッチされると、トランザクションは、コミットを開始することができる。典型的には、アプリケーションスレッドは、KVストアに対するインメモリ変更(in-memory modifications)を実行するためにのみ、非常に短い時間、トランザクションにアタッチされる。
このモデルは、変更のセット全体がディスクに保持されるか、まったく保持されないことを保証する。例えば、トランザクションがコミットする前に、システムがクラッシュした場合、このトランザクションがこれまで集めた、いかなる変更も保持されないであろう。しかしながら、トランザクションからデタッチした後、アプリケーションは、いつ変更のセットが保持されるかを正確に知らない。さらに、クラッシュまたはストレージの故障がある場合、変更のセットは、完全に失われるであろう。
いくつかのアプリケーションの場合、一部のアプリケーションでは、一連の変更を時々失うことは、受け入れられない。このようなアプリケーションは、システムクラッシュやストレージ障害に耐えるために、ジャーナリング(journaling)を使用する必要がある。典型的に、ジャーナリングは、KVストア自体によりインプリメントされるので、任意のアプリケーションが、それを使用することができる。
上記のステップ1で、アプリケーションがID=5で実行中のトランザクションに参加すると仮定する。これは、ID=4の従前のトランザクションが成功裏にコミットしたことを意味する。ステップ2で、アプリケーションは、新しいキーバリューペア[K1、V1]を挿入すると仮定する。これに応答してジャーナルエントリが作られる。
Insert [K1、V1]、Trans ID=5
次に、このジャーナルエントリは、ディスクに書かれる。この時点で、アプリケーションは、トランザクションからデタッチすることができ、キーインサーションが失われないことが保証され得る。次に、トランザクション5がコミットする機会を得る前にシステムがクラッシュすると仮定する。システムがリスタートした後、システムは、最新のコミットされたトランザクションがID=4を有することを知る。従って、4より高いトランザクションIDsを保持するジャーナルエントリに対してスキャンされる。それゆえ、上記ジャーナルエントリは、関連があるとみなされる。従って、[K1、V1]ペアは、トランザクション5に再挿入され、従って失われない。このプロセスは、「ジャーナルのリプレイ」と呼ばれる。
今、トランザクション5が成功裏に完了したと仮定する。この場合、システムがその後クラッシュした場合、上記ジャーナルエントリは、関連しているとは、みなされないであろう。これは、ジャーナルエントリが、既にコミットされているトランザクションに代わって、変更を記述しているためである。
この開示の1つまたは複数の例において、ストレージシステムは、各々が独自のトランザクションを有するディスクリートKVストアを含む。ストレージシステムにおいて、単一の入出力(IO)パスフローは、1つまたは複数のKVストアに対して変更を行うことができる。
IOパスフローをハンドリングすることに関して、異なるKVストアに対して一貫したシステムステートを持たせるために、以下を行うようにグローバルジャーナリングメカニズムが設けられる。個別のKVストアのトランザクションを結合する。これにより、KVストアがパーシステント媒体(persistent media)(ディスクなど)のメモリ内の変更をコミットできなくなる。結合したすべてのKVストアトランザクションに変更を挿入する。結合したジャーナルエントリをアロケートする。KVストア変更毎に、ジャーナル「サブエントリ」を結合したジャーナルエントリに追加する。ここで、ジャーナルサブエントリは、変更が印加されたKVストアのトランザクションIDを保持する。結合されたジャーナルエントリは、パーシステント媒体への単一のアトミックな書き込みで書き込まれる。ジャーナル書き込みが完了すると、KVストアからトランザクションをデタッチする。
KVストアは、それ自体如何なるジャーナルも有さないことに留意する必要がある。各KVストアは、メモリ内の変更を維持し、それらをパーシステント媒体に定期的にコミットする。この時点で、対応するジャーナルサブエントリは、無効になる。対応するKVストアトランザクションのすべてのサブエントリの変更がコミットされると、結合されたジャーナルエントリを解放することができる。システムがクラッシュすると、ジャーナルの各サブエントリのトランザクションIDは、対応するKVストアにコミットされたかどうかが、チェックされる。
この開示のいくつかの例にけるストレージシステムである。 この開示のいくつかの例において、第1の構成における、トランザクションマネージャ、キーバリュー(KV)データベースマネージメントシステム(DBMSs)、およびグローバルジャーナル間の相互作用を図示するブロック図である。 この開示のいくつかの例における複数のKVストアにわたってコンシステンシーを提供するための、図1のシステムに関する方法のフローチャートであり、特に、図2の第1の構成におけるトランザクションマネージャである。 この開示のいくつかの例において、システムクラッシュ、またはストレージ故障からのコミットされなかったトランザクションをリカバーするための、図1のトランザクションマネージャに関する方法のフローチャートである。 この開示のいくつかの例において、トランザクションマネージャ、複数のKVストアのためのKV DBMSs、およびグローバルジャーナルとの間の相互作用を例示するブロック図である。
異なる図面における同じ参照符号の使用は、類似または同一のエレメントを指す。いくつかのケースにおいて、1つのアプリケーションは、2以上のKVストアに対して作用する。アプリケーションが変更[K1、V1]をKVストア1に挿入し、変更[K2、V2]をKVストア2に挿入したいと仮定する。さらに、アプリケーションには、KVストア間のコンシステンシー(consistency)を必要とする。言い換えれば、上述した変更の両方が保持されるか、または両方とも保持されない。
これを達成するための可能な例示フローは、以下の如くである。
1.KVストア1のトランザクションに参加する。
2.KVストア2のトランザクションに参加する。
3.変更[K1、V1」をKVストア1に挿入する。
4.変更[K2、V2]をKVストア1に挿入する。
5.KVストア1のトランザクションをデタッチする。
6.KVストア2のトランザクションをデタッチする。
そのようなフローと上述したモデルの場合、KVストア間のコンシステンシーは、可能ではない。各KVストアは、別個のジャーナルを有する。2つの別個のジャーナルエントリは、2つの変更に関して作成されるであろう。ジャーナルエントリの1つは、ディスクに書き込むことはできるが、他のジャーナルエントリは、クラッシュにより書き込むことができないかもしれない。その場合、システムリスタート時に、ジャーナルエントリの1つのみがリプレイされるであろう。この結果は、コンシステンシーの無いKVストア間の状態であろう。
この開示の例では、KVストア毎のジャーナルではなく、グローバルジャーナルが提供される。グローバルジャーナルは、以下に示すように、サブエントリからなる、結合されたジャーナルエントリを含む。新しいアプリケーションフローは、
1.KVストア1のトランザクションに参加する(このトランザクションのトランザクションIDをT1と仮定する)。
2.KVストア2のトランザクションに参加する(このトランザクションのトランザクションIDをT2と仮定する)。
3.変更[K1、V1]をKVストア1に挿入する。
4.変更[K2、V2]をKVストア2に挿入する。
5.両方の変更を記載する結合されたジャーナルエントリを作成する。
Insert into KV store 1:[K1, V1], Trans ID=T1;
Insert into KV store 2:[K2, V2], Trans ID=T2
6.結合されたジャーナルエントリをパーシステント媒体(例えば、ディスク)に書き込み、書き込みが完了するのを待つ。
7.KVストア1のトランザクションをデタッチする。
8.KVストア2のトランザクションをデタッチする。
結合されたジャーナルエントリは、単一のアトミックな書き込み(例えば、1回のディスク書き込み動作)として書き込まれる。それゆえ、両方のサブエントリは、一緒に書き込まれる。両方のトランザクションからのデタッチは、結合されたジャーナルエントリがディスクに保持された後でのみ生じる。これは、関与するKVストアトランザクションのいずれも、結合されたジャーナルエントリがディスク上に保持されるまで、コミットすることは、できないことを保証する。結合されたジャーナルエントリが書き込まれる前にトランザクションの、いずれか、または両方が生じる場合、以下の例示フローが起こり得る。
-KVストア1は、結合されたジャーナルエントリが、ディスク上にある前に、そのトランザクションをコミットする可能性がある。
-結合されたジャーナルエントリが、ディスク上にある前に、クラッシュする可能性がある。
-システムがリスタートした後、KVストア1は、その関連する変更を、コミットしたトランザクションT1の一部として保持する。
しかしながら、KVストア2は、トランザクションT2をコミットしなかった。さらに、ディスク上には、結合されたジャーナルエントリは無く、それは、トランザクションT2において変更を再び印加するために使用された可能性がある。この結果、トランザクションT1における変更は、保持されるが、トランザクションT2における変更は、失われる。それゆえ、システムの状態は不一致となる。
今、上述した8つのステップのすべてが実行されたと仮定する。今、結合されたジャーナルエントリは、ディスク上にあり、各KVストアは、いつでもトランザクションをコミットすることができる。今、以下の例示フローが起こり得ると仮定する。
9.KVストア1は、トランザクションT1をコミットする。
10.KVストア2が、トランザクションT2をコミットすることができる前に、システムがクラッシュする。
11.システムリスタート時に、ステップ6で書き込まれた結合されたジャーナルエントリが調べられる。
12.第1のサブエントリは、これ以上関連しないと決定される。なぜならば、KVストア1は、トランザクションT1が、すでにコミットされており、トランザクションT1を示す任意のサブエントリは、もはや関連しないことを認識しているからである。
13.第2のサブエントリは、依然として関連すると決定される。なぜなら、KVストア2は、トランザクションT2をコミットしていないことを認識しているからである。KVストア2は、最後にコミットしたトランザクションがT2-1(トランザクションT2の前のトランザクション)であったことを認識している。
14.第2のサブエントリのみがリプレイされ、変更[K2、V2]をKVストア2のトランザクションT2に再度インサートするか、またはディスク上のKVストア2に変更[K2、V2]を直接コミットする。
15.システムは整合状態に戻る。
上記モデルは、2つのKVストアに限定されない。結合されたジャーナルエントリが単一の書き込み動作に書き込むことができる限り、任意の数のKVストアに対してコンシステンシーを達成することができる。
図1は、この開示のいくつかの例におけるデータベースシステム100である。システム100は、プロセッサ102、メイン(非パーシステント)メモリ104、および第2の(パーシステント)メモリ106を含む。メインメモリ104(例えば、ランダムアクセスメモリ)は、トランザクションマネージャ、第1のKVストア120を管理するための固有のトランザクション(例えば、トランザクションID=T1を有する現在のトランザクション112)を管理するための固有のトランザクションを有する第1のKVデータベースマネージメントシステム(DBMS)110、第2のKVストア122を管理するための固有のトランザクション(例えば、トランザクションID=T2を有する現在のトランザクション)を有する第2のKV DBMS114に関するプログラム命令とデータを記憶する。「KV DBMS」と「KVストア」は、交換可能に使用され、しばしば一緒にして1つのエンティティとしてみなされる。オプションとして、メインメモリ104は、第1のKVストア120と第2のKVストア122をアクセスするアプリケーションに関するプログラム命令とデータを記憶する。代替アプリケーション118は、第1のKVストア120と第2のKVストア122にアクセスするために、ネットワークによってストレージシステム100に接続された、他のシステムに配置することができる。
二次メモリ106(例えば、ディスク)は、第1のKVストア120、第2のKVストア122、およびグローバルジャーナル124を記憶する。代替的に、第1のKVストア120、第2のKVストア122、およびグローバルジャーナル124は、異なる第2のメモリに配置することができる。プロセッサ102,メインメモリ104、および第2のメモリ106は、単一のサーバであり得るか、または、プロセッサ102とメインメモリ104は、ストレージエリアネットワーク(SAN)またはネットワークを介してネットワークにアタッチしたストレージ(NAS)のような、ストレージシステムである、第2のメモリ106をアクセスするサーバであり得る。
図2は、この開示のいくつかの例における構成200内のトランザクションマネージャ108、第1のKV DBMS110、第2のKV DBMS114、およびグローバルジャーナル124を図示するブロック図である。構成200において、アプリケーション118は、トランザクションマネージャ108に、変更のセット202を発行する。あるいは、トランザクションマネージャ108は、変更のセット202をインターセプト(intercept)することができる。説明のために、セット202は、第1のKVストア120に対する変更と、第2のKVストア122に対する変更[K2、V2]を含む。すべてを保持する必要がある、または全く保持する必要が無い、複数のKVストアへの変更のセットをハンドリングする際に、トランザクションマネージャ108は、KVストアのトランザクションに参加し、変更を対応するトランザクションに挿入し、変更および対応するトランザクションを記載するサブエントリを有する、結合されたジャーナルエントリを作成し、書き込み、KVストアのトランザクションからデタッチする。システムクラッシュの場合、トランザクションマネージャ108は、コミットされなかった任意のサブエントリをリプレイまたはコミットする。
図3は、この開示のいくつかの例における複数のKVストア間にコンシステンシーを提供する、システム100(図1)、特に、構成200(図2)のトランザクションマネージャ108に関する方法300のフローチャートである。方法300は、およびここに記載された他の方法は、1つまたは複数のブロックにより説明される、1つまたは複数の動作、機能、または行動を含むことができる。ブロックは、シーケンシャルな順番に説明されるけれども、これらのブロックは、また、並列におよび/またはここに記載した順番とは異なる順番で実行することができる。また、種々のブロックは、より少ないブロックに結合したり、さらなるブロックに分割したり、および/または所望のインプリメンテーションに基づいて消去したりすることが可能である。方法300は、第1のKVストア120(図2)に対する変更[K1、V1]および第2のKVストア120に対する変更[K2、V2」のセット202(図2)を受信するか、またはインターセプトした後、ブロック302で開始することができる。
ブロック302において、トランザクションマネージャ108は、第1のKVストア120のトランザクション112に参加する。トランザクションマネージャ108は、既存のトランザクションに参加することができ、あるいは、トランザクションが存在しないなら、コマンドを第1のKVDBMS110に発行して、新しいトランザクション112を作成することができる。これに応答して、トランザクションマネージャ108は、第1のKV DBMS110からトランザクション112のトランザクションID(T1)を受信することができ、あるいは、トランザクションIDに関して第1のKV DBMS 110にアクティブに問い合わせを行うことができる。ブロック302の次にブロック304が続く。ブロック304において、トランザクションマネージャ108は、ブロック302に記載したのと同様な方法で第2のKVストア122のトランザクション116に参加する。ブロック304の次にブロック306が続く。
ブロック306において、トランザクションマネージャ108は、適切なインサートコマンドを、第1のKV DBMS110に挿入することにより、第1のKVストア120のトランザクション112に変更[K1、V1]を挿入する。それに応じて、第1のKV DBMS110は、変更をトランザクション112に追加する。いくつかのKV DBMSに関して、トランザクションマネージャ108は、1つのステップでブロック302と306を実行することができる。ブロック306の次に、ブロック308が続く。
ブロック308において、トランザクションマネージャ108は、ブロック306に記載したのと同様の方法で、第2のKVストア122のトランザクション116に変更[K2、V2]を挿入する。いくつかのKV DBMSに関して、トランザクションマネージャ108は、1つのステップで、ブロック304と308を実行することができる。ブロック308の次にブロック310が続く。
ブロック310において、トランザクションマネージャ108は、第1のKVストア120のトランザクションT1に挿入された変更[K1、V1]と、第2のKVストア122のトランザクションに挿入された変更[K2、V2]を記載する、結合されたジャーナルエントリ204を作成する。次に、トランザクションマネージャ108は、結合されたジャーナルエントリ204をグローバルジャーナル124(図2)に書き込む。ブロック310の次にブロック312が続く。
ブロック312において、トランザクションマネージャ108は、結合されたジャーナルエントリ204の書き込みを待って、グローバルジャーナル124で完了する。結合されたジャーナルエントリ204の書き込みが完了した後で、トランザクションマネージャ108は、適切なデタッチコマンドを、第1のKV DBMS110に発行することにより第1のKVストア120のトランザクション112からデタッチする。これは、適切であるとみなすとき、例えば、トランザクション112が十分な変更を累積したとき、第1のKV DBMS110が、トランザクション112をコミットすることを可能にする。ブロック312の次にブロック314が続く。
ブロック314では、トランザクションマネージャ108は、ブロック312に記載したのと同様の方法で第2のKVストア122のトランザクション116からデタッチする。この場合も、これは、適切とみなすとき、例えば、トランザクション116が十分な変更を累積したとき、トランザクション116をコミットすることを可能にする。
図4は、この開示の例において、システムクラッシュ、またはストレージの故障によりコミットされなかったトランザクションをリカバーするために、システム100(図1)、特に、構成200(図2)のトランザクションマネージャ108の方法のフローチャートである。方法400を示すために、最初のKV DBMS110がトランザクション112(トランザクションID=T1)を最初のKVストア120にコミットし、2番目のKV DBMS 114がトランザクション116(トランザクションID=T2)を2番目のKVストア122にコミットする前に、システム100がクラッシュすると仮定する。方法400は、ブロック402において開始することができる。
ブロック402において、システム100がリスタートしたことを検出すると、トランザクションマネージャ108は、グローバルジャーナル124(図2)内の結合されたジャーナルを調べる。ブロック402の次にブロック404が続く。
ブロック404において、トランザクションマネージャ108は、対応するKVストアにコミットされなかった、結合されたジャーナルエントリ204内の任意のサブエントリを決定する。トランザクションマネージャ108は、適切なコマンドを、それぞれ第1のKV DBMS110と第2のKV DBMS114に適切な問い合わせコマンドを発行することにより、それぞれ、第1のKVストア120と第2のKVストア122に、最後にコミットされたトランザクションのIDsを決定する。各KVストアは、最後にコミットしたトランザクションのIDを記録する。
次に、トランザクションマネージャ108は、結合されたジャーナルエントリ204のサブエントリに記録されたトランザクションに対して最後にコミットしたトランザクションのIDsを比較する。トランザクションマネージャ108は、トランザクションT1がすでにコミットされているので、第1のKVストア120に対する変更に関する第1のサブエントリは、関係ないと決定する(すなわち、第1のKVストア上のリターンした、最後にコミットした、トランザクションはT1またはそれより高次である)。トランザクションマネージャは、トランザクションT2がコミットされなかったので、第2のKVストア120への返納に関する第2のサブエントリは、関係があると決定する(例えば、第2のKVストア122上のリターンした、最後にコミットした、トランザクションは、T2未満である)。ブロック404の次にブロック406が続く。
ブロック406において、トランザクションマネージャ108は、対応するKVストアにコミットされなかった、任意の関連するサブエントリをリプレイし、サブエントリ内の変更を、対応するKVストアに再度インサートする。結合されたジャーナルエントリ204内の第2のサブエントリは、関連するので、トランザクションマネージャ108は、第2のKVストア122のトランザクションに参加し、変更[K2、V2]をトランザクションにインサートし、トランザクションからデタッチすることにより、変更[K2、V2]を第2のKVストア122に、再度インサートする。結合されたジャーナルエントリ204は、グローバルジャーナル124に維持されるので、新しい結合されたジャーナルエントリは、作られない。
この開示のいくつかの例において、トランザクションマネージャ108は、コミットされたトランザクションIDsを有する、すべてのサブエントリを有する、任意の結合されたジャーナルエントリを周期的に削除する。トランザクションマネージャ108は、最後にコミットしたトランザクションのIDsをKVストアに問い合わせ、それらをすべての結合したジャーナルエントリのサブエントリ内のIDsと比較する。
図5は、この開示のいくつかの例における構成500において、トランザクションマネージャ108、第1のKV DBMS110、第2のKV DBMS114、およびグローバルジャーナル124との間の相互作用を説明するブロック図である。構成500において、トランザクションマネージャ108は、アプリケーション118と統合される。さもなければ、構成500は、構成200と類似の方法で動作する。開示された実施形態の特徴の種々の他の適応と組み合わせは、この発明の範囲内である。多くの実施形態が、以下の特許請求の範囲により包含される。

Claims (12)

  1. すべてをパーシスト(persist)するか、あるいは全くしないパーシステントKVストアへの変更のために、各々が独自の非パーシステントトランザクションを有する、複数のパーシステントキーバリュー(KV)間にコンシステンシー(consistency)を提供するためのデータベースシステムにおけるトランザクションマネージャによって実行される方法において、
    第1のKVストアのトランザクションに参加するステップと、
    第2のKVストアのトランザクションに参加するステップと、
    すべてパーシストするか、あるいは全くしない、前記第1のKVストアへの第1の変更と前記第2のKVストアへの第2の変更を含む変更のセットに関して、
    前記第1の変更を、前記第1のKVストアのトランザクションにインサートするステップと、
    前記第2の変更を前記第2のKVストアのトランザクションにインサートするステップと、
    前記第1の変更および前記第2の変更の記述をそれぞれ記録する第1のサブエントリおよび第2のサブエントリを備えた結合されたジャーナルエントリを作成し、作成した前記結合されたジャーナルエントリをパーシステントグローバルジャーナルに書き込むステップと、
    前記結合されたジャーナルエントリの、前記パーシステントグローバルジャーナルへの書き込みの完了を待つステップと、
    前記結合されたジャーナルエントリが、前記パーシステントグローバルジャーナルに書き込まれた後で、
    前記第1のKVストアのトランザクションからデタッチして、当該デタッチの後の時点での当該トランザクションのコミットを可能にするステップと、
    前記第2のKVストアのトランザクションからデタッチして、当該デタッチの後の時点での当該トランザクションのコミットを可能にするステップと、
    を備えた、方法。
  2. ストレージシステムが、リスタートするのを検出した後で、
    前記第1及び第2のKVストアの最後にコミットされたトランザクションを決定するステップと、
    前記パーシステントグローバルジャーナル内の前記結合されたジャーナルエントリを調べて、対応するKVストアにコミットされなかった任意のサブエントリを決定するステップと、
    対応するKVストアにコミットされなかった任意のサブエントリをリプレイするステップと、
    をさらに備えた、請求項1に記載の方法。
  3. 前記第1および第2のKVストアのトランザクションに参加する前に、アプリケーションから、変更のセットを受信するステップをさらに備えた、請求項1に記載の方法。
  4. 前記第1および前記第2の変更がすべてコミットされたと決定した後で、前記結合されたジャーナルエントリを削除するステップをさらに備えた、請求項1に記載の方法。
  5. パーシステントである少なくとも2つのKVストアと、
    前記少なくとも2つのKVストアのそれぞれを管理する少なくともつのキーバリュー(KV)ストアデータベースマネージメントシステム(DBMS)であって、前記少なくともつのKVストアDBMSのそれぞれは、対応するKVストアにパーシステントではない独自のトランザクションを提供する、前記少なくともつのKVストアDBMSと、
    パーシステントであるグローバルジャーナルと、
    すべてがパーシステントであるか、あるいは全くパーシステントでない少なくとも2つのKVストアへの変更に関する少なくとも2つのKVストア間のコンシステンシーを提供するトランザクションマネージャであって、
    第1のKVストアのトランザクションに参加するように、
    第2のKVストアのトランザクションに参加するように、
    すべてがパーシステントであるか、あるいは全くパーシステントでない、前記第1のKVストアへの第1の変更と、前記第2のKVストアへの第2の変更を含む、変更のセットに関して、
    前記第1の変更を前記第1のKVストアのトランザクションにインサートするように、
    前記第2の変更を前記第2のKVストアのトランザクションにインサートするように、
    前記第1および第2の変更の記述をそれぞれ記録する第1および第2のサブエントリを備えた、結合されたジャーナルエントリを作成し、該結合されたジャーナルエントリを前記グローバルジャーナルに書き込むように
    前記結合されたジャーナルエントリの、前記グローバルジャーナルへの書き込みの完了を待つように、
    前記結合されたジャーナルエントリが、前記グローバルジャーナルに書き込まれた後で、
    前記第1のKVストアのトランザクションからデタッチし、デタッチの後の時点での当該トランザクションのコミットを可能にするように、
    前記第2のKVストアのトランザクションからデタッチし、デタッチの後の時点での当該トランザクションのコミットを可能にするように、
    構成される、前記トランザクションマネージャと、
    を備えた、データベースシステム。
  6. 前記トランザクションマネージャは、
    ストレージシステムがリスタートするのを検出した後で、
    前記第1及び第2のKVストアの最後にコミットされたトランザクションを決定するように、
    前記グローバルジャーナル内の前記結合されたジャーナルエントリを調べて、対応するKVストアにコミットされなかった任意のサブエントリを決定するように、
    対応するKVストアにコミットされなかった任意のサブエントリをリプレイするように、
    さらに構成された、請求項5に記載のデータベースシステム。
  7. 前記トランザクションマネージャは、前記変更のセットを発行したアプリケーション、及び前記少なくとも2つのKVストアDBMSとは異なる、請求項6に記載のデータベースシステム。
  8. 前記トランザクションマネージャは、前記変更のセットを発行したアプリケーションの一部である、請求項6に記載のデータベースシステム。
  9. 前記トランザクションマネージャは、前記第1および第2の変更がすべてコミットされたと決定した後で、前記結合されたジャーナルエントリを削除するようにさらに構成された、請求項5に記載のデータベースシステム。
  10. すべてがパーシステントであるか、あるいは全くそうでないパーシステントKVストアへの変更のために、各KVストアが独自の非パーシステントトランザクションを有する、データベースシステム内の複数のパーシステントキーバリュー(KV)ストア間に、コンシステンシーを提供するトランザクションマネージャをインプリメントするために、プロセッサにより実行可能なプログラムを格納する非一時的コンピュータ可読記録媒体において、前記プログラムを実行するとき、前記プロセッサは、
    第1のKVストアのトランザクションに参加するステップと、
    第2のKVストアのトランザクションに参加するステップと、
    すべてがパーシステントであるか、または全くそうではない前記第1のKVストアに対する第1の変更と、前記第2のKVストアに対する第2の変更を含む変更のセットに関して、
    前記第1の変更を前記第1のKVストアのトランザクションに挿入するステップと、
    前記第2の変更を前記第2のKVストアのトランザクションに挿入するステップと、
    前記第1および第2の変更の記述をそれぞれ記録する第1および第2のサブエントリを備える結合されたジャーナルエントリを作成し、該結合されたジャーナルエントリをパーシステントグローバルジャーナルに書き込むステップと、
    前記結合されたジャーナルエントリの、前記パーシステントグローバルジャーナルへの書き込みの完了を待つステップと、
    前記結合されたジャーナルエントリが、前記パーシステントグローバルジャーナルに書き込まれた後で、
    前記第1のKVストアのトランザクションからデタッチして、当該デタッチの後の時点での当該トランザクションのコミットを可能にするステップと、
    前記第2のKVストアのトランザクションからデタッチして、当該、デタッチの後の時点での当該トランザクションのコミットを可能にするステップと、
    を実行する、非一時的コンピュータ可読記録媒体。
  11. 前記プロセッサが前記プログラムを実行するとき、前記プロセッサは、
    ストレージシステムがリスタートしたことを検出した後で、
    前記第1および第2のKVストアの最後にコミットされたトランザクションを決定するステップと、
    前記パーシステントグローバルジャーナル内の前記結合されたジャーナルエントリを調べて対応するKVストアにコミットしなかった任意のサブエントリを決定するステップと、
    対応するKVストアにコミットされなかった任意のサブエントリをリプレイするステップと、
    をさらに実行する、請求項10に記載の非一時的コンピュータ可読記録媒体。
  12. 前記プロセッサが前記プログラムを実行するとき、前記プロセッサは、前記第1および第2の変更がコミットされたことを判断した後で、前記結合されたジャーナルエントリを削除するステップをさらに実行する、請求項11に記載の非一時的コンピュータ可読記憶媒体。
JP2020541339A 2017-10-05 2018-09-25 共有ジャーナルを含むキーバリューストア間のコンシステンシー Active JP7423534B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/726,104 2017-10-05
US15/726,104 US10754995B2 (en) 2017-10-05 2017-10-05 Consistency across key value stores with shared journals
PCT/US2018/052538 WO2019070447A1 (en) 2017-10-05 2018-09-25 COHERENCE BETWEEN KEY-VALUE PAIR STORAGE WITH SHARED NEWSPAPERS

Publications (2)

Publication Number Publication Date
JP2020536339A JP2020536339A (ja) 2020-12-10
JP7423534B2 true JP7423534B2 (ja) 2024-01-29

Family

ID=64564951

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020541339A Active JP7423534B2 (ja) 2017-10-05 2018-09-25 共有ジャーナルを含むキーバリューストア間のコンシステンシー

Country Status (5)

Country Link
US (1) US10754995B2 (ja)
EP (1) EP3692452B1 (ja)
JP (1) JP7423534B2 (ja)
ES (1) ES2962495T3 (ja)
WO (1) WO2019070447A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12066903B2 (en) * 2019-08-01 2024-08-20 Teradata Us, Inc. Transaction recovery from a failure associated with a database server
US11614870B2 (en) * 2021-05-07 2023-03-28 Micron Technology, Inc. Zoned memory device recovery after a key-value store failure

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004055674A1 (ja) 2002-12-18 2004-07-01 Fujitsu Limited 分散トランザクション処理装置、分散トランザクション処理プログラム、分散トランザクション処理方法および分散トランザクション処理システム
US20130218840A1 (en) 2012-02-17 2013-08-22 Charles Smith System and method for building a point-in-time snapshot of an eventually-consistent data store
WO2014141343A1 (ja) 2013-03-13 2014-09-18 日本電気株式会社 データ多重化システム
JP2015526832A (ja) 2012-12-03 2015-09-10 ヴイエムウェア インコーポレイテッドVMware,Inc. 分散キーバリューストア
US20160321294A1 (en) 2015-04-30 2016-11-03 Vmware, Inc. Distributed, Scalable Key-Value Store

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3006491B2 (ja) * 1996-06-03 2000-02-07 日本電気株式会社 トランザクション実行状態管理システム、管理方法、および管理プログラムを記憶する媒体
WO2010114006A1 (ja) * 2009-03-31 2010-10-07 日本電気株式会社 ストレージシステムとストレージアクセス方法とプログラム
JP2013033345A (ja) * 2011-08-01 2013-02-14 Internatl Business Mach Corp <Ibm> トランザクション処理システム、方法及びプログラム
US8572379B2 (en) * 2011-08-08 2013-10-29 Xerox Corporation Private access to hash tables
US9378179B2 (en) * 2012-11-21 2016-06-28 International Business Machines Corporation RDMA-optimized high-performance distributed cache
US10152607B2 (en) * 2013-06-07 2018-12-11 A9.Com Inc. Secure access to hierarchical documents in a sorted, distributed key/value data store

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004055674A1 (ja) 2002-12-18 2004-07-01 Fujitsu Limited 分散トランザクション処理装置、分散トランザクション処理プログラム、分散トランザクション処理方法および分散トランザクション処理システム
US20130218840A1 (en) 2012-02-17 2013-08-22 Charles Smith System and method for building a point-in-time snapshot of an eventually-consistent data store
JP2015526832A (ja) 2012-12-03 2015-09-10 ヴイエムウェア インコーポレイテッドVMware,Inc. 分散キーバリューストア
WO2014141343A1 (ja) 2013-03-13 2014-09-18 日本電気株式会社 データ多重化システム
US20160321294A1 (en) 2015-04-30 2016-11-03 Vmware, Inc. Distributed, Scalable Key-Value Store

Also Published As

Publication number Publication date
US10754995B2 (en) 2020-08-25
JP2020536339A (ja) 2020-12-10
US20190108365A1 (en) 2019-04-11
EP3692452A1 (en) 2020-08-12
EP3692452B1 (en) 2023-08-02
ES2962495T3 (es) 2024-03-19
WO2019070447A1 (en) 2019-04-11

Similar Documents

Publication Publication Date Title
US11874746B2 (en) Transaction commit protocol with recoverable commit identifier
US11314716B2 (en) Atomic processing of compound database transactions that modify a metadata entity
US11429641B2 (en) Copying data changes to a target database
US9063969B2 (en) Distributed transaction management using optimization of local transactions
KR102579190B1 (ko) 일관된 데이터베이스 스냅샷들을 이용한 분산 데이터베이스에서의 백업 및 복원
US10235375B1 (en) Persistent file system objects for management of databases
US8768977B2 (en) Data management using writeable snapshots in multi-versioned distributed B-trees
US11132350B2 (en) Replicable differential store data structure
US11010262B2 (en) Database system recovery using preliminary and final slave node replay positions
CN104793988B (zh) 跨数据库分布式事务的实现方法和装置
US7996363B2 (en) Real-time apply mechanism in standby database environments
US10754854B2 (en) Consistent query of local indexes
JP7101566B2 (ja) 不揮発性メモリにおけるマルチバージョン同時実行制御(mvcc)
CN102073739A (zh) 带有快照功能的分布式文件系统中的数据读与数据写方法
US20240028598A1 (en) Transaction Processing Method, Distributed Database System, Cluster, and Medium
JP7423534B2 (ja) 共有ジャーナルを含むキーバリューストア間のコンシステンシー
CN114816224A (zh) 数据管理方法和数据管理装置
WO2024098363A1 (zh) 一种基于多核处理器的并发事务处理方法及其系统
US7542983B1 (en) Delaying automated data page merging in a B+tree until after committing the transaction
Haroon Challenges of concurrency control in object oriented distributed database systems
US20240256398A1 (en) Redo avoidance during database recovery
Kim Hbase Based Multi-row Transaction Management Techniques

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210916

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221102

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230302

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230620

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230912

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240117

R150 Certificate of patent or registration of utility model

Ref document number: 7423534

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150