JP2019036353A - 索引更新パイプライン - Google Patents

索引更新パイプライン Download PDF

Info

Publication number
JP2019036353A
JP2019036353A JP2018207253A JP2018207253A JP2019036353A JP 2019036353 A JP2019036353 A JP 2019036353A JP 2018207253 A JP2018207253 A JP 2018207253A JP 2018207253 A JP2018207253 A JP 2018207253A JP 2019036353 A JP2019036353 A JP 2019036353A
Authority
JP
Japan
Prior art keywords
instructions
computing node
index
partition
instruction
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.)
Pending
Application number
JP2018207253A
Other languages
English (en)
Inventor
シャオ ウェイ
Wei Xiao
シャオ ウェイ
ウィン イン ン クラレンス
Wing Yin Ng Clarence
ウィン イン ン クラレンス
ダワン メダヴィ
Dhawan Medhavi
ダワン メダヴィ
アンドルー ラース ティモシー
Andrew Rath Timothy
アンドルー ラース ティモシー
ステファニ ステファノ
Stefano Stefani
ステファニ ステファノ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
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 Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of JP2019036353A publication Critical patent/JP2019036353A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/2358Change logging, detection, and notification

Abstract

【課題】分散型データベースのデータ更新により、複数パーティションのデータ配置が変更される場合、分散インデックスを高信頼に変更する技術を提供する。【解決手段】分散型データベース管理システムは、複数のパーティションに及ぶ項目の集合を維持する。索引構造は、1つのパーティション上の項目に、または、複数のパーティション上の項目に対応する。項目集合および索引は、複製される。分散型データベース管理システムによって維持されるデータに対する変更は、結果として、複数の索引構造の更新を生じる。変更は、索引構造に適用可能な命令セットに編成される。メモリ内バッファは、影響されたパーティションに対する伝送前に、命令を含む。複製ログは、影響されたパーティションに対する命令の信頼性のある伝送のために、確認応答機構と組み合わされる。【選択図】なし

Description

関連出願の相互参照
本出願は、2013年5月20日に出願された米国特許出願第13,898,151号に対する利益を主張するものであり、その開示は、参照によりその全体が本明細書に組み込まれる。
分散型データベース管理システム(「DBMS」)は、複数のコンピューティングデバイス間で分散されるデータの記憶および取り出しを可能にし得る。分散型DBMS中のデータはテーブルに構成され、これらのテーブルが次に、ときにパーティションとして説明される項目の集合を含み得る。システムの性能、信頼性、および利用可能性を改善するために、各パーティションは各々、それが格納する項目を記憶するおよび取り出す要求を処理する別個のコンピューティングノード上に格納され得る。分散型データベースはまた、システム障害があった場合に用いられ得る待機パーティションを維持するために複製を用い得る。
索引は、分散型DBMS中に記憶された項目を位置特定することを可能にするデータ構造として説明され得る。それらは、例えば、データの特定の範囲に入る項目が、パーティションのうちの1つ以上に記憶された項目の全てにわたって検索するのではなくて索引をスキャンすることによって位置特定されることを可能にする。分散型DBMSは、ローカル索引およびグローバル索引を含み得る。ローカル索引は、1つのパーティション上に記憶された項目を指す索引として説明することが可能である。グローバル索引という用語は、テーブルによって維持されるデータの全てを指す索引を説明するために用いられ得る。複製のため、分散型DBMSは、ローカル索引およびグローバル索引各々の複数のバージョンを含み得る。これらの索引のいくつかは、分散型DBMSによって維持されるデータが追加、削除、または変更されたときに更新され得る。
本明細書に提供する図面は、例となる実施形態を例示するために描かれており、本開示の範囲を限定することを意図するものではない。
コンピューティングノードに対応するデータパーティションにアクセスするためにハッシュ関数および範囲キー関数を用いる、分散型DBMSの実施形態を図示するブロック図である。 クォーラムベースのトランザクションに関与するパーティションのセットに対して動作が実施される、分散型DBMSの実施形態を図示するブロック図である。 関連付けられた複製パートナーおよび索引構造を持つパーティション化されたテーブルを図示するブロック図である。 2つの関連付けられた索引パーティションを持つテーブルパーティションを図示するブロック図である。 索引付けられた値に対する変更の結果として生じる複数の索引更新の例示の実施例を図示する図である。 索引構造を更新する命令を含む複製ログの実施形態を図示する。 命令を記録して、1つのパーティションから1つ以上の影響されたパーティションに送信するための実施形態を図示するフローチャートである。 命令の伝送および索引構造に対する命令の実行のための送信バッファおよび受信バッファを構成するための実施形態を図示するブロック図である。 システム障害後に受信バッファの内容を回復するための実施形態を図示するフローチャートである。 パーティションによって実行された最後の命令を記録するためのデータ構造の実施形態を図示する図である。 パーティションを分割するログされた命令を利用するための実施形態を図示するフローチャートである。 命令を処理する受信パーティションの容量に基づいて命令の伝送に対してフロー制御を適用するための実施形態を図示するフローチャートである。 本開示の態様が実施され得るコンピューティング環境の実施形態を図示するブロック図である。
分散型DBMSは、各々が項目の集合を含むテーブルによって構成されたデータを維持し得る。項目は各々が、名称と値の対のセット、列名称によって定義された値、または未定義値のセットを含み得る。様々な実施形態では、個々の項目は任意の特定のスキーマに適合し得ず、各々の項目は、したがって、各々が異なる倫理的な意味および種類を有し得る異なる数の値を含み得る。同一の名称または列によって識別されるものなどの、同一の論理的意味および種類を有する値は、利便性のため、列と呼ばれ得る。DBMSの他の実施形態は、行および列の形式、一意性制約、一次キーと外部キーとの関係などの特定の構造要件を実施し得る。分散型DBMSの例は、キー値データベース、リレーショナルデータベース、非構造化クエリ言語(「NoSQL」)データベース、オブジェクト指向データベースなどを含む。
テーブル中の項目は、一次キー値によって識別され得る。各々の一次キー値は、全体として見ると、テーブル中に記憶された項目を一意に識別する。項目にアクセスするために、分散型DBMSのクライアントは、その項目に対応する一次キー値を含む要求を発行し得る。実施形態はまた、テーブル中の1つの項目に必ずしも正確に対応し得ない二次キーを用いるアクセスをサポートし得る。
一次キーは、テーブルが作成されたときに定義され得る。一次キーの記述は、任意の必要な列、値に対する制約などを含み得るテーブルのスキーマの他の特徴とともに記憶され得る。一次キーの場合、スキーマは、長さの記述および一次キーの値を含み得る。例えば、一次キーは、256ビットのバイナリ値としてまたは可変長の文字ストリングとして定義され得る。
一次キーはまた、内部構造を有するものとして定義され得る。いくつかの実施形態では、一次キーの構造は、1つの値のみから成り得るが、実施形態は、一次キーが2つ以上の値の複合を含むことをサポートするか要求し得る。例えば、一次キーは、2つの部分、すなわち、ハッシュキーおよび範囲キーに分割され得る。一緒にすると、一次キーのこれらの部分は、項目の集合内の階層的関係を反映または定義し得る。ハッシュキーは階層内の項目の群を識別し得るが、範囲キーは群内の特定の項目を識別し得る。
一次キーはまた、分散型DBMS中でパーティション化と共に用いられ得る。大量のデータおよび高い作業負荷需要をサポートするために、分散型DBMSは、いくつかのコンピューティングノードにわたるテーブル中のデータのパーティション化をサポートし得る。様々な形態のパーティション化がサポートされ得る。水平方向パーティション化では、各々のコンピューティングノードが、項目の集合のサブセットを維持し得る。垂直方向パーティション化では、データは列またはフィールドに基づいて分割され得、各々のコンピューティングノードが、テーブル上で定義された列のサブセットを含みこととなる。いくつかの分散型DBMSは、2つの形態のパーティション化を組み合わせ得る。
本明細書で用いられる水平方向および垂直方向パーティション化という用語は、前述の段落と首尾一貫するデータセットの分割を指す。実施形態は、別個のコンピューティングノード上で各々の水平方向または垂直方向のパーティションをホストし得る。本明細書で用いられるパーティションという用語は、一般には、コンピューティングノード上でホストされる水平方向または垂直方向のパーティションのことであるが、この用語はまた、ただ1つのパーティションしか持たないテーブルを含み得る。本明細書で用いられるファンアウトパーティション、非投票メンバー、および複製パートナーは、パーティションのサブカテゴリを指す。
水平方向パーティション化の1つの方法には、様々なコンピューティングノード間でランダムにまたはセミランダムにデータを分散する方法を適用することを伴う。図1Aに、そのような1つの方法を示す。一次キー100は、ハッシュキー構成要素102および範囲キー構成要素104を含む。パーティション108、110、および112上でのデータのランダムにまたはセミランダムの分散は、分散型DBMS114の製造を向上させ得る。したがって、項目は、ハッシュキー構成要素102に対するハッシュ関数106の適用に基づいてパーティション108、110、および112のうちの1つ上に記憶され得る。
ハッシュ関数106は、一次キー値を、キー空間と記述され得るものの中で、整数などの別の値に変換するコンピュータコードであり得る。ハッシュ関数106は、入力された一次値を、キー空間中でセミランダムポイントに変換するように構成され得るが、所与の入力値は、関数が呼び出されるごとに、キー空間中の同一のポイントに変換される。所与のハッシュ関数は、入力値から、キー空間中のポイントの有限のセット、すなわち、バケットにマッピングし得る。様々な実施形態では、ハッシュ関数106は、あるポイントの周りのマッピングをクラスタ化し得る。いくつかのハッシュ関数の場合、これは、入力値が類似しているときに発生し得る。スキューイングは性能を劣化させ得るが、その理由は、それが結果として、特定のコンピューティングノード上に項目の不均一な分布を生じさせ得るからである。この問題を防ぐ1つの手法は、多数の離散的なポイントをキー空間内にマッピングするハッシュ関数を用いることである。すると、キー空間の領域が、コンピューティングノードに割り当てることが可能となる。代替例では、キー空間の領域を、コンピューティングノードを参照する中間データ構造に割り当てることが可能である。異なる領域が、同一のコンピューティングノードまたは中間データ構造にマッピングされ得る。
図1Aに戻ると、一次キー100のハッシュキー102が、ハッシュ関数106に対する入力値として供給され得る。ハッシュキー102の所与の値に対して、ハッシュ関数106の適用は、ハッシュキー116に対応する出力を生成する。ハッシュ関数106の出力は、所与の入力値に対して一定である。ハッシュ関数106に対する他の値の適用は、他の可能性のある出力118を生成し得るが、任意の入力値に対する結果は、首尾一貫している。首尾一貫した出力116は、一次キー100に対応する項目を最初にどこに記憶するかを決定するために用いられ得る。加えて、ハッシュ関数106の出力は、所与の入力値に対して首尾一貫しているため、ハッシュキー102が、項目が直前にどこに記憶されたかを決定するために、ハッシュ関数106に適用され得る。
テーブルは複数の水平方向パーティションに分割することが可能であるが、各々の水平方向パーティションは、同一の項目が2つ以上のコンピューティングノード上に記憶されるように、または、ほぼ同一の水平方向パーティションが2つ以上のコンピューティングノード上でホストされるように、コンピューティングノード間で複製化され得る。これがシステムの利用可能性を向上させ得、その理由は、コンピューティングノードのうちの1つが、利用不可能になると、複製されたデータを有する別のコンピューティングノードが、割って入ってしかるべき地位を占めることが可能となり得るからである。複製化は、負荷を複数のコンピューティングノード間で共有することを可能にすることによってシステムのスケーラビリティを向上させ得る。
複製されたパーティション間の首尾一貫性は、複製されたパーティション間のクォーラムまたは合意を伴う技法を用いて維持され得る。実施形態は、現在アクティブなコンピューティングノード間のクォーラムしか必要とし得ず、これが利用可能性を向上させ得、その理由は、それが、コンピューティングノードの全てがオンラインであることを必要とはしないからである。
いくつかの実施形態では、クォーラムは、最小の数のコンピューティングノードが読み出し動作または書き込み動作に参加することを決定することを伴い得る。読み出し動作の場合、少なくとも最小数のコンピューティングノードが、項目を読み出す要求に応答しなければならない。データは必ずしも即座には複製されるわけではないため、2つの所与のコンピューティングノードが同一の項目に対して異なる値を有するわけである。そうであれば、いくつかの実施形態は、データの各々のバージョンを、バージョンを記述する情報と共に返送し得る。書き込み動作の場合、クォーラムは、最小の数のコンピューティングノードが、書き込み動作の成功に確認応答することを伴い得る。例えば、3つのコンピューティングノードが複製されたデータを共有する場合、3つのコンピューティングノードのうちの2つの書き込み動作が、必要とされなければならない。実施形態は、伴う動作の種類に基づいて異なるクォーラム要件を課し得る。例えば、書き込み動作は、クォーラムを達成するために、より高い閾値数のコンピューティングノードを伴い得る。
図1Bは、マスター154ならびにクォーラムパートナー152および156から成る分散型DBMS158の実施形態を図示する。これらの各々は、別個のコンピューティングノード上でホストされ得るし、また、別個のデータセンター内に位置付けされ得る。クライアントアプリケーション150は、データの読み出しまたは書き込みなどの様々な動作をマスターパーティションに対して実施する要求を発行し得る。いくつかの実施形態は、全ての動作に対して同一のマスターを用い得るが、他の実施形態は、コンピューティングノードの任意のものがマスターとして機能することを許容し得る。要求を受信すると、マスター154は、クォーラムパートナー152および156の関与を保証する。関与するクォーラムパートナーの数は、クォーラムにとって必要とされる数に依存し得る。代替例では、マスター154は、現在動作しているクォーラムパートナーの過半数の関与に基づいて、クォーラムが存在すると決定し得る。クォーラムにとって必要とされるように、いったん要求が十分な数のコンピューティングノード上で成功裏に処理されると、動作の結果がクライアントアプリケーション150に返送され得る。
分散型データベースは、広範囲の様々な動作をサポートし得る。非限定的な実施例は、項目を記憶するまたは更新することを伴うプット動作と、項目に対応する値を伴う読み出し動作を含む。両方の動作は、分散型DBMSが項目を識別する際に用いる一次キー値を供給し得る。いくつかの実施形態によってサポートされ得る動作の別の実施例は、範囲クエリである。範囲クエリは、固定された基準の一部のセットに適合する項目の範囲を返送することを伴う。例えば、分散型DBMSは、クライアントが特定のジップコードに対応する全ての項目を取り出すことを望むアドレス情報を含む項目のテーブルを含み得る。一次キーの先端部分を用いてデータをランダムに分散するためにハッシュ関数を用いる分散型DBMSでは、範囲クエリは、一次キーの先端部分が固定されている場合には、効率的ではないことがあり得る。
データに対する様々な動作は、一次索引に加えて索引構造を用いることによってより効率的にされ得る。キー値データベースでは、二次索引が、潜在的に一意でないキー値によってアドレス指定可能である1つ以上のデータ構造を含む。一次キー値とは異なって、二次キー値は、必ずしも一意ではない。言い換えれば、1つの二次キー値は、二次索引中の1つ以上のエントリを参照し得る。
所与の項目に対して、二次索引キーは、項目を構成する値のうちの1つ以上を含み得る。様々な実施形態では、二次索引はまた、二次キー値によってアクセス可能であるそのエントリから項目の記憶位置へのマッピングを含み得る。しかしながら、いくつかの実施形態では、このマッピングは省略され得る。二次索引エントリは、項目ストアから全項目を取り出すために用いられ得る、一次キー値のコピーまたは一次索引への直接的参照を含み得る。ベーステーブルとも呼ばれ得る項目ストアは、記憶デバイス上で維持される項目の集合を含む。項目ストア中に記憶された項目は、項目に関連付けられた値または名称値対の全てを含み得る。項目ストア中のデータは、水平方向または垂直方向にパーティション化され、そうである場合には、項目ストアのサブセットは、2つ以上のコンピューティングデバイス上に存在し得る。
索引構造は2つ以上のパーティションにおよび得る。図2Aは、テーブルの2つのパーティションを示し、第1のパーティション200が、文字Aから始まってMまで及ぶキー値を持つデータを含み、第2のパーティション202がN〜Zを含む。各々のパーティションはまた、パーティション上に記憶された項目の索引を含み得る。パーティション200上の索引212は、A〜Mに対応するエントリを含み、パーティション202上の索引214は、N〜Zに対応するエントリを含む。一緒にすると、索引212および214はグローバル索引であるとみなされ得、その理由は、それらは一緒に、テーブル中の項目の全てを参照するからである。
図2Aもまた、第1のパーティション200が、複製パートナー204および206とペアリングされているところを示す。複製パートナー204および206はまた、第1のパーティション200を持つクォーラムメンバーであり得る。同様に、第2のパーティション202は、複製パートナー208および210とペアリングされているところが示されている。
図示する実施例では、第1のパーティション200または第2のパーティション202上のデータの更新は、他のパーティション上に記憶されているデータおよび作新に影響し得る。1つの実施例として、第1のパーティション200上に記憶されている項目の更新は、複製パートナー204および206に複製され、同様に、索引216および218の更新を必要とし得る。別の実施例として、第1のパーティション200上に記憶された項目が変更され、そのため、それが今度は、第2のパーティション202上に記憶されているはずであるような場合、パーティション200および202、複製パートナー204、206、208、および210、ならびに索引212、214、216、218、220、および222が、第1のパーティション200から除去され第2のパーティション202に追加されている項目を反映するように更新され得る。
図2Bは、テーブルパーティション250ならびに索引パーティション254および256の配列を示す例示の実施例である。索引パーティションは、索引構造、多分その一部分(すなわち、パーティション化された索引)をホストするコンピューティングノードを含み得る。図示する実施例では、第1の索引パーティション254は、A〜Mの範囲内に入るテーブルパーティション250上に記憶された項目に対する索引エントリを含み、第2の索引パーティション256は、N〜Zの範囲の項目に対する索引を含む。
テーブルパーティション250上の項目の集合252内に記憶された項目の更新は、索引パーティション254上の第1の索引258と、索引パーティション256上の第2の索引260とに対する対応する変化を必要とし得る。これは、値が変化するときに発生し得るが、その値は、索引によって用いられるキーに対応する。例えば、そのような値がNからEに変化した場合、それに対応するエントリは、第1の索引258から削除されて、第2の索引260に追加される必要があるであろう。
図3は、索引付けられた値に対する変更の結果として生じる複数の索引更新を示す例示の実施例である。例示目的で、テーブルは、図2Bに示すように、第1の索引パーティション254および第2の索引パーティション256を含むものと想定される。図3は、項目の値のうちの1つに対する変更の前および後の、項目の集合および関連付けられた索引の状態を示す。例示目的で、図2Bに示すパーティション化方式が想定され得る。したがって、第1の索引308aは、A〜Mの範囲のキー値をマッピングし、第2の索引310aは、N〜Zの範囲のキー値をマッピングする。項目306aが変更される前では、Nというその値に対応するエントリは、第2の索引310a内の索引エントリ312中に見出される。
項目304aのセットの項目306aは、項目306bによって示されるように最初は、Nという値を有するが、次にEに変更される。変更された値は、更新された項目304bに反映される。第1の索引308bもまた変更され、新たなエントリ314を有し、項目306bの新たな状態を反映する。同様に、索引エントリ312が、第2の索引310bから削除される。
直前で説明した変更は、いくつかの離散的な行為を含むものとして見なされ得る。第一に、値Nを含む項目の集合中の項目が、Eという新たな値を反映するように更新された。第二に、削除動作が索引に対して実施されて、古いN値に対応するエントリを除去した。第三に、エントリが索引に追加されて、新たなE値を反映した。本明細書に開示する様々な実施形態では、これらのような変更を表す命令が、更新パイプラインを介して分散型DBMSの様々な構成要素に分散され得る。
分散型DBMSでは、各々のパーティションは、そのパーティションに加えられた変更を記述する複製ログを有し得る。複製ログは、パーティション上に記憶された項目の追加、削除、または修正などの、そのパーティション上に記憶されたデータに加えられた変更を記述し得る。複製ログに追加された全ての変更は、パーティションが最初に作成されたときの1から始まり、連続的に増加するログの通し番号(「LSN」)を含み得る。加えて、各々のパーティションは、パーティションを識別するパーティションID(「PID」)によって識別され得る。LSNとPIDとの組み合わせを用いて、パーティションに加えられた変更を一意に識別し得る。
分散型DBMSは、項目の値が変化したことを示すエントリを複製ログ中に記録し得る。変更のコンパクトな表現は、一次キー値と、変化した任意のさらなる値とを供給し得る。実施形態はまた、グローバルおよびローカルの二次索引に対して更新を実施することと組み合わせて、複製ログを用い得る。図2Aを例として用いると、項目の更新は、エントリを索引212から削除して、エントリを索引214に追加することを伴い得る。第1のパーティション200からの複製ログは、クォーラムメンバー204および206に送り出され得、第2のパーティション202からの複製ログは、クォーラムメンバー208および210に送り出され得る。
複製パートナーメンバー204は、複製ログの処理の1つの方法を解説するための実施例として用いられ得る。複製ログを受信すると、クォーラムメンバー204は、ログ中の各々のエントリを処理して、エントリがどの種類の変更を表すかを決定し得る。各々のエントリに対して、複製パートナー204は、その記憶ロケーション中の項目を更新することによって変更を適用し、どの索引構造を更新すべきかを決定し、次にこれらの変更を適用し得る。
第1のパーティション200などのパーティションから取得された複製ログは、204および206などの複製パートナーに送り出され得る。分散型DBMSの実施形態は、変更のコンパクトな表現を含む複製ログを送出し得る。そうであれば、複製パートナー204および206は、どの索引構造を更新する必要があるかを決定するなどのステップを実施することを含み、他の更新に対してと同様に、更新を処理し得る。
しかしながら、実施形態は、複製ログエントリが、更新中にマスターパーティションによって実施される動作に対応する命令のセットを含むように拡張される代替の手法を用い得る。この手法は、マスターパーティションが、どの索引構造が更新する必要があるかを決定することを可能にし、その情報を複製ログに含むことによって、性能を向上させ得る。実施例として再度複製パートナー204を用いると、それは、第1のパーティション200から複製ログを受信し得る。ログ中の各々のエントリは、記憶されている項目と、影響された任意の索引構造とを更新するために実施することが可能な動作の順序を記述する情報を含み得る。
図4は、索引構造を更新する命令を含む複製ログの実施形態を図示する。ログエントリ418は、複製ログ中のエントリを表す。複製ログを記述する1つの方法は、行および列を持つテーブルという観点からのものである。ログエントリ418は、PID列400、ログ通し番号(「LSN」)列402、ISN列404、および変更記述列406を含む。PID列400は、要求を処理している送信パーティションを示し得る。この列からの値が、送信者を識別するために受信パーティションに送信され得る。
示されるログエントリ418の全てが、示されるログエントリ418の全てに対して同等である、パーティションid列400およびログ通し番号列402の値によって示されるように、1つの変更に対応する。3つの命令が示される。項目更新408は、ディスク上に記憶されている項目の{INDEX KEY=“E”}の新たな値への更新を表し、式中、INDEX KEYは、これまた索引中で用いられるキーである項目中の値のことである。さらなる項目もまた、変更され得るが、図4には示されていない。索引削除410は、最新ではない値{INDEX KEY=“N”}に対応するエントリを二次索引から除去する動作を表す。索引追加412は、新たな値{INDEX KEY=“E”}に対応するエントリを二次索引に追加する動作を表す。実施形態は、各々の命令を、ISN列404に示すようなものなどのISN値に関連付け得る。ISN値は、命令を実施すべき順序を示すために用いられ得る、または、命令を一意に識別するために用いられ得る。
様々な実施形態では、要求された修正を適用するパーティションは、ローカルデータ構造と遠隔データ構造との両方が、更新を完了するために変更する必要があることを決定し得る。したがって、ログエントリ400は、動作414と対象416との両方を含み得る。図4では、項目更新408は、テーブルパーティション、すなわち、索引ではなく項目の集合を保持するパーティションと、命令を処理する同一のパーティションとを対象とするものと想定され得る。索引削除410および索引追加412は、各々が、索引データしか保持しないパーティションであり得る索引パーティションを対象とし得る。しかしながら、実施形態は、同一のパーティション上でホストされる索引および項目の集合と、様々な順列での異なるパーティションまたは複数のパーティションと、に関与し得る。ある実施形態では、対象指定は、パーティション識別子を含み得る。更新されていると特定の索引または他の構造の識別子などの他の要素もまた、含まれ得る。
変更を処理することは、結果として、2つ以上のパーティション上に位置付けされた構造に対する動作を生じ得るため、実施形態は、命令を他の影響されたパーティションに分配するための様々な機構を用い得る。このような1つの機構は、送信バッファおよび受信バッファに関与し得る。あるパーティション上では、送信バッファが、命令が送信され得る各々のパーティションに対して確立され得、受信バッファが、命令が受信され得る各々のパーティションに対して確立され得る。
様々な命令種類が、複製ログ中に含まれ得るおよび/または処理目的で他のパーティションに送信され得る。非限定的な実施例は、挿入、更新、および削除などの、項目または索引に対する様々な変更を含む。組み合わされた索引挿入および削除などの組み合わされた動作もまた、示され得る。命令もまた、動作のセットをアトミックなトランザクションとして実施すべきであるとの指示を含み得る。
図5は、命令を記録して、1つのパーティションから1つ以上の影響されたパーティションに送信するための実施形態を図示するフローチャートである。一連の動作のとして示されているが、当業者は、示される動作の少なくとも一部は、変更され、省略され、記録され、または並行して実施され得ることを理解するであろう。
動作500は、変更要求を受信することを示す。変更要求は、新たな項目を追加すること、項目を成す1つ以上の既存の値を更新すること、さらなる値を追加すること、項目を削除することなどを含み得る。変更要求は、次に、何の構造が影響されるかを決定するおよび複製ログに書き込む命令の一覧を編成するために、動作502によって示されるように分析され得る。いくつかの実施形態では、命令は、例えば、索引および他の命令に対する修正を、それらが発生するに連れて補足して記録することによって、一覧を編成することと同時に並行して実施され得る。他の実施形態は、索引および他の構造を修正する前に、変更要求を分析し得る。例えば、クエリオプティマイザまたは他のデータベース構成要素が、命令の一覧が取得され得る要求のための実行プランを決定し得る。
命令の一覧は、動作504によって示されるように、複製ログファイルに書き込まれ得る。いったん書き込まれると、命令は、それらがシステム障害後でも依然として処理され得るため、持続するものとみなされ得る。ログファイルは、どのエントリがローカルで処理されたか、および、どのエントリが成功裏に他のパーティションに送信されたかの指示を含み得る。
命令は持続するものとみなされる得るため、変更要求は、動作505によって示されるように、変更要求のイニシエータに対して、変更要求は、最終的に首尾一貫しているものとして確認応答され得る。言い換えれば、変更された項目または索引エントリを対象とする次の読み出し動作は、それでも古い値を返し得るが、新たな状態を反映するように最終的に更新される。実施形態は、例えば、命令が504でログに書き込まれた後、ローカル命令が508で実施された後、全ての命令が510で確認応答されたときなどの様々なレベルの首尾一貫性に対して、確認応答を、変更要求のイニシエータに送信されることを可能とし得る。変更要求のイニシエータは、終局的または即座の首尾一貫性などのなんのレベルの首尾一貫性が望まれるかを示し得る。
動作506は、複製ログ中の命令を影響されたパーティションに伝送することを示す。実施形態は、命令を送信バッファに書き込むことに関与する技法を用い得、この送信バッファは、命令を、それらが影響されたパーティションに送信され、命令の受信が確認応答されるまで保持し得る。別個の送信バッファが、各々の宛先パーティションに対して用いられ得る。実施形態はまた、命令をそれらの対応する宛先パーティションに相関させる情報を含む1つの送信バッファを用い得る。
他のパーティションに送信される命令の一部または全ては、変更要求を受信したパーティションに適用可能であり得る。動作508は、変更要求を受信したパーティション上でこれらの命令を実施することを示す。加えて、動作508は、非ローカルな索引または他の命令を変更する命令を実施することに関与し得る。例えば、図2Aでは、第1のパーティション200は、遠隔に位置付けされたパーティションまたは他のコンピューティングノード上の索引構造を修正する命令を実施し得る。他の実施形態は、非ローカルな命令を、構造をホストしているパーティションに命令を送信することによって実施されるようにし得る。
動作508は、図5に示す順序で実施され得る、または、それは、変更要求の処理に応答して別の時間で実施され得る。例えば、図5に示す動作は、実行の1つのスレッド上で実施され得るが、動作508は例外であって、実行の別個のスレッド上で同時並行に実施され得る。実施形態は、508が開始された後でまたは508が完了される前として示されるステップを実施し得る。動作508で実施される命令が完了されたとき、それらは、変更要求を受信したパーティションに関してコミットされたものとして印付けられ得る。
命令を送信バッファに書き込んだ後のある時点で、パーティションは、命令がパーティションによって受信され、受信したパーティション上で持続性があると考えられ得るとの確認応答を、動作510に示すように、受信し得る。いくつかの実施形態では、命令は、確認応答が受信されたときには実施されていないことがあり得る。しかしながら、これらの実施形態の場合、確認応答は、宛先パーティションが、確認応答された命令を実施する責任を容認したことを確認する。これは、例えば、受信された命令を、宛先パーティションによって維持されるログファイルに書き込むことによって行われ得る。他の実施形態は、命令が処理されるまで、確認応答を遅延させ得る。確認応答は、送信パーティションに伝送されるメッセージに含まれて、最後に実行された命令のLSN値を含み得る。命令を順番に処理する実施形態の場合、これは、より低いLSN値を持つ命令もまた実行されたことを示すに十分である。
パーティションによって受信された確定応答は、命令が成功裏に実施された、命令が効果的に実施された(例えば、実施されたであろうが、冗長であった)、または、それらの処理中にエラーが発生した、という確認応答であり得る。本明細書で用いられる、実施されたまたは実施するという用語は、これらの状態の任意のものを含み得る。エラーの場合、実施形態は、たとえエラー状態が発生してもログファイルから命令をコミットまたは除去し得るが、その理由は、さもなければ、エラーを引き起こした命令が繰り返し再送され得るからである。実施形態は、受信された確認応答の種類に関するさらなる情報でログを更新し得るが、様々な報告が、技術要員がエラー状態を診断してデータの矛盾を補正するのを支援するために生成され得る。実施形態は、ログファイル中の命令をエラー有りもしくは無しで実施されたものとして印付けるまたは命令をログファイルから除去するなどのステップを実施し得る。
実施形態はまた、予期される期間を超えて確認応答されなかったまま残ったログファイル中の命令を検出する技法を用い得る。実施形態は、そのようなエントリをログファイルから除去するまたは、後の診断もしくはデータ矛盾の補正のために、ステータス情報でエントリを印付け得る。用いられ得る技法は、複製ログ中の命令をスキャンすること、命令が送信された時間を検討すること、および、確認応答されなかった命令を含む複製ログの領域を追跡することの様々な組み合わせである。
動作512で、確認応答された命令に対応するログファイル中の命令は、それらの宛先パーティションに関してコミットされたものとして印付けられ得る。動作508もまた完了された場合、命令は完全にコミットされたものとして印付けられ得る。障害およびマスターの再指定などの他の事象から回復すると、ログファイル中のエントリが再生される。再生プロセスは、コミットされていない命令を再送信するが、コミットされた命令をスキップし得る。
いくつかの実施形態は、ログファイル中の対応するエントリを更新することによって、コミットされたものとして得る。他の実施形態は、ログファイルを更新しない場合がある。例えば、いくつかの実施形態は、最後に実行された命令の記録に基づいて、ログファイルから命令を再生し得る。最後に実行された命令に続く命令はコミットされていないものとみなされ、一方、最後に実行された命令の前の命令は、最後に実行された命令を含んで、コミットされたとして印付けられているとみなされる。
図6は、送信バッファおよび受信バッファを構成するための実施形態を図示する。送信パーティション600は、ログファイル612ならびに2つの送信バッファ608および610を含み、それらは揮発性メモリに記憶され得る。ログファイル618ならびに送信バッファ614および616を含む送信パーティション602は、送信パーティション600と同様に構成され、類似した様式で動作する。
いくつかの実施形態では、パーティションは、全ての受信パーティションに対してそれぞれ1つの送信バッファを利用し得る。例示説明の目的で、送信パーティション600および602は、各々が、変更要求を受信したものと想定する。さらに、各々の変更要求は、命令を受信パーティション604および606の各々に伝送することを暗示するものと想定する。これらの想定は、矢印付きの命令632および634によって図6に反映されている。
送信パーティション600をより詳しく検討すると、前の段落で説明した例となる変更要求が受信されたときに、送信パーティションは、受信パーティション604および606に向けられた命令をログファイル612に書き込ませて、対応するメモリ内送信バッファ608および610中に配置させて、最終的に受信パーティション604および606に伝送されるようにし得る。送信バッファ中に配置された命令は、実施される命令の記述、命令が適用するデータ構造の指示、および送信パーティションのLSN、PIDなどの情報などを含み得る。この情報は、受信パーティション604および606などの受信パーティションが、要求の源を識別して、命令が処理されるべき順序を決定することを可能にし得る。情報はまた、図7に関連して本明細書に記載されるように、確認応答を送信し、どの命令が既に実施されているかを追跡するために用いられ得る。
命令632がログファイル612に書き込まれた後で、しかし、それらが成功裏に送信されて、受信パーティション604および606によって処理される前に、システムがクラッシュするということであり得る。そうであれば、システムが回復するとき、ログファイル612中のエントリが再生され、したがって、命令632は、再度送信バッファ608および610中に配置される。
受信パーティション604は、索引624を含み、それは解説目的で、命令632および634の対象のうちの1つとみなされ得る。受信パーティション604はまた、それが命令を受信し得る各々のパーティションに対して1つの受信バッファを含み得る。したがって、図6は、送信パーティション600および602に対応する2つの受信バッファ620および622を示す。受信バッファ626および628ならびに索引630を含む受信パーティション606は、受信パーティション604と同様に構成され、類似した様式で動作する。
受信バッファ620および622は、揮発性メモリ中に保持され得るし、結果として、バッファ中に保持される命令は、システム障害の際に失われ得る。しかしながら、実施形態は、システムログエントリを再生することによってシステム障害を回復し得る。図6に示すシステムが故障した場合、回復すると、ログファイル612および618を再生することが可能であり、したがって、ログファイル162および618中の確認応答されていない命令は、再度、受信パーティション604に送信されて、バッファ620および622中に記憶され得る。
いったんバッファ620および622中に配置されると、命令は実行され得る。命令を実行することは、索引624中のエントリを挿入すること、更新すること、さもなければ修正することを伴い得る。いったん命令が実行されると、それは、受信バッファから除去され得る。実施形態は、アトミックなトランザクションの文脈で、命令を実行し、それを受信バッファから除去して、命令が失われるまたは重複されることを回避する支援となり得る。
図7Aは、システム障害後に受信バッファの内容を回復する実施形態を図示する。一連の動作として示されているが、当業者は、示される動作のうちの少なくともいくつかは、変更され、省略され、順序が変えられ、または並行して実施され得ることを理解するであろう。
動作700で、第1の命令は、送信パーティションから受け取られ、受信バッファ内に配置され得る。受信された命令は、PID、LSNなどの識別情報を伴い得る。実施形態はまた、グローバル一意識別子(「GUID」)または類似した機構を用い得る。
受信後、命令は、動作702によって示されるように実行され得る。命令を実行することは、受信パーティション上の索引および他のデータ構造に対する様々な修正を実施することを含み得る。例えば、命令は、索引からエントリを削除すること、エントリを索引に挿入すること、索引中の値を更新すること、項目値を更新することなどを含み得る。本明細書で用いられる命令という用語は、複数のサブ命令を含み得る。実施形態は、アトミックなセットとして命令を実施し得るため、サブ命令の全てが完全に実行されるか、または、どれも発効することを許容されないかのどちらかである。
受信された命令の成功裏の実行後は、命令の成功裏の処理を反映する記録が、動作704によって示されるように更新され得る。図7Bは、実施形態がこの目的のために用い得る構造の1つの非限定的な実施例を示す。テーブル750は、PID列752およびLSN列754から成り得る。実施形態は、テーブルを表すため、Bツリー、配列などの様々なデータ構造を用い得る。図7Bに示す実施形態の場合、テーブルは、その内容がシステム障害の際に回復されるように、持続的にすべきである。
PID値とLSN値との組み合わせは、命令を一意に識別し得る。本明細書に記載されるように、PID値は送信パーティションを一意に識別するために用いられ、LSN値は送信パーティションから発する命令の順序を示し得る。組み合わされたとき、2つの値は、命令を一意に識別する。
送信パーティションによって提供されたLSN値は、順次増加され得る。送信パーティションの実施形態は、宛先パーティションとは無関係にLSN値を増加させ得る。結果として、様々な実施形態では、所与のPID値に対して、送信パーティションによって生成されたLSN値は順次増加し得るが、受信値によって見るLSN値は、単調に増加するものの、必ずしも順次ではない。
2つの送信パーティションを含む例示説明の実施形態の場合、テーブル750は、成功裏に実行された第1のパーティションからの最新の命令に対応する行756を含み得る。いくつかの実施形態は、いったん命令が持続的になると、命令が完全に実行されることを要求するのではなくて、行756を更新し得る。行758は行756に類似しているが、第2のパーティションに対応する。
図7Aに戻ると、動作706は、送信パーティションから第2の命令を受信することを示す。しかしながら、実行する前に、システム障害708が発生し得、第2の命令が、実施される前に受信コンピューティングノードのメモリから消去される結果となる。
図7Bに示す記録されたPIDおよびLSN値が、図7Aに見るように、システム障害708から回復する際に用いられ得る。システム障害は、受信パーティションの再開始を必要とし得る様々な事象を含み得る。再開始すると、受信パーティションの受信バッファに直前に含まれた命令が、消去されている。
図7Aの動作710は、回復プロセスの開始を示す。停電などのいくつかの場合では、回復は、いったん電力が回復して、パーティションをホストしているコンピューティングノードが再ブートすると、開始し得る。いくつかの場合、新たなマスターパーティションが選択されて得るが、この場合、複製ログが、回復を開始する前に、新たなマスターに移送され得る。
動作712で、受信パーティションは、実行されなかった命令を取得するために回復要求を伝送し得る。例えば、図7Bのテーブル750は、処理されていないかもしれない命令を有する2つの送信パーティションとの関連付けを示す。受信パーティションは、PIDを用いて送信パーティションを識別して、要求をそれに送信し得る。例えば、行756は、送信パーティションのインターネットプロトコル(「IP」)アドレスを決定するために用いられ得るPID値を含む。テーブル750に示す値は例示説明であり、多くの異なる種類の値を含み得る。
要求もまた、LSN値を含み得る。LSN値は、各々のパーティションで発生し、例えば、各々の生成された命令によって1つだけ増加し得る。LSN値は単調に増加するため、それらは、処理されなかった命令を識別するために用いられ得る。例えば、行756は、12のLSN値を含む。送信パーティションが12を超えるLSN値を持つ命令を有する場合、それは、それらの命令が受信パーティションによって実行されていないことを示し得る。したがって、送信パーティションは、要求に含まれる値を超えるLSN値を有する受信パーティションに対する命令を送信することによって、要求に応答し得る。命令は、送信パーティションに関連付けられたログファイル中に保持され得る。
図7Aの動作714は、回復要求を発行した結果として受信された命令を受信することおよび実行することとを示す。プロセスは、受信パーティションに関連付けられた各々の送信パーティションに対して繰り返され得る。
実施形態は、命令が、それらが送信されたのと同一の順序で実行されることを保証するように機能し得る。いくつかの実施形態の場合、送信パーティションレベルで順序付けを課す、すなわち、命令が送信されたのと同一の順序で実行される、ことで十分であり得る。送信パーティションは、例えば、それが、より低いLSN値を持つ命令を送信した後で、より高いLSN値を持つ命令だけを送信し得る。
他の実施形態は、因果関係で関連する命令が順番に実行されることを保証するように機能し得る。例えば、図6に示す例となる実施形態を考慮する。受信パーティション604は、送信パーティション600および送信パーティション602から命令を受信し得る。これらの事象に対する論理的順序付けが、これらの命令が同一の事象から起因した場合には、必要とされ得る。例えば、テーブル自身がまだ修正されていない場合には、テーブルの位置を参照する索引を更新することは可能ではあり得ない。実施形態は、したがって、ベクトルクロック、論理クロック、Lamport時間スタンプなどの技法を用い得る。
実施形態はまた、パーティションを分割するために本開示の態様を用い得る。図8は、そのような実施形態の1つの実施例である。一連の動作として示されているが、当業者は、示された動作の少なくとも一部を、変更、省略、順序が変えられ、または並行して実施され得ることを理解するであろう。
パーティションは、記憶要件または作業負荷をより良好に分散するために、2つ以上のパーティションに分割され得る。新たなパーティションは、各々が、元のパーティションによって保持されたデータの一部分を含み得る。実施形態は、データの重複しない範囲が各々のパーティション上に配置されるようにデータ内の分割点を識別し得る。例えば、文字「A」〜「M」で始まる一次キー値を持つ項目は第1のパーティション上に記憶され、「N」〜「Z」は第2のパーティション上に記憶され得る。パーティションはまた、2つのパーティション間にランダムにデータを分散し得る。例えば、実施形態は、どのパーティションが項目を記憶すべきであるかを決定するために、ハッシュ関数を一次キー値に適用し得る。
動作800は、パーティションの定常動作中に複製ログを記憶することを示す。複製ログは、空のパーティションもしくは既知の開始点からのデータを事前投入されたパーティションから初めて、パーティションおよび関連付けられたデータ構造に加えられた変更の完全な記録を含み得る。動作802で、2つ以上の新たなパーティションが構成され得る。元のパーティションは、パーティションが分割されている間、動作可能のままであり得る。
いくつかの実施形態では、複製ログは、新たなパーティション上に再構成することが可能な開始点から加えられた変更の記録を含み得る。例えば、初期のデータセットを含むファイルは、記憶デバイスから新たなパーティションに転送され得る。複製ログは、次に、この開始点に次いで加えられた変更を反映するデータを含み得る。例えば、開始点においてデータで構成されたパーティションを有する仮想マシンスナップショットを用いる、最初にパーティションに投入する様々な他の手段もまた、用いられ得る。
複製ログは、動作804によって示されるように、ログ中に含まれる命令が新たなパーティションに送信されるように、再生され得る。実施形態は、新たなパーティションの各々に対して送信バッファを利用し得る。送信する必要がある命令の数を減少させるために、いくつかの実施形態は、同一の項目に適用可能な命令を併合し得る。例えば、複製ログは、特定の項目の値を修正する一連の命令を含み得る。項目の終了状態は、どの値が更新によって影響されるかと、更新が発生した順序とに基づいて決定され得る。別の実施例は、削除命令を伴う。複製ログは、項目に対するいくつかの更新およびそれに続く削除を含む一連の命令を含み得る。そのような場合、一連の命令全体がスキップされ得る、または、削除だけが送信され得る。
実施形態はまた、動作806で示すように、再生された命令を、新たな命令に対してルーティングまたは多重化し得る。命令をルーティングすることは、命令を受信する新たなパーティションのうちの1つを、それが関連する項目に基づいて選択することを伴う。例えば、パーティションが範囲に基づく場合、「A」〜「M」で始まる一次キー値を持つ項目に関連する命令は、第1のパーティションの送信バッファ中に配置され得、一方で「N」〜「Z」の項目は、第2のパーティションに伝送するために送信バッファ中に配置され得る。
多重化は、2つ以上の宛先パーティションへの伝送のための命令を重複させることを伴う。信頼性のために、パーティションは、パーティション上にデータのコピーを維持する1つ以上の複製パートナーと結合され得る。パーティションが分割されたとき、新たなパーティションは各々が、1つ以上の複製パートナーと結合され得る。新たなパーティションに送信された命令は、複製パートナーが同一のデータを新たなパーティションとして含むようにセットアップされるように多重化され得る。
動作808は、新たなパーティションが、それら各々が受信する命令を受信して実行するところを示す。実施形態は、特に、実施形態が上に説明したように要求を実施しない場合には、適用不可能な命令をフィルタリングし得る。元のパーティションの複製ログからの命令の全てが実行された後、新たなパーティションは、元のパーティションによって管理された同一のデータを群として含む。元のパーティションが、分割プロセスが実行中に動作可能のままであれば、それは、起動解除され、新たなパーティションが起動され得る。
図7Aおよび7Bに関連して説明したフェイルオーバ回復の実施形態は、パーティションを分割している間に発生し得るフェイルオーバ事象から回復するために用いられ得る。入力する命令を処理している間に、新たなパーティションの各々は、最後に実行された命令の記録を維持し得る。システム障害のとき、最後に実行された命令を示す情報が、元のパーティションに伝送され得るが、それが、次の命令から初めて命令の再生を再開し得る。
分散型DBMSへのアクセスは、ホスト企業の顧客のために、様々なクライアントアプリケーションに提供され得る。クライアントアプリケーションによって引き起こされた作業負荷を管理するために、および、それが、それが提供するサービスを適切に補償することを保証することを支援するために、ホスト企業は、固定したまたは制御された容量を各々の顧客に割り当て得る。プロビジョニングされた容量と呼ばれるこの容量は、テーブルまたはパーティションごとにさらに割り当てられ得る。実施形態は、例えば、トークン割り当ておよび消費技法を用いて、パーティション上での容量利用を制御し得る。トークンは、作業がパーティションに対して実施されたときに、ある時間単位にわたって、固定されたまたは可変の速度でパーティションに割り当てられて、差し引かれ得る。トークンが何も利用可能でない場合、パーティションに対して作業を実施する要求は拒絶または延期され得る。
実施形態は、通常動作、フェイルオーバ、およびパーティションの分割化中を含み、受信パーティションによって実施される作業に対して制限を課し得る。図9は、プロビジョニングされた容量制限を適用するための実施形態を図示する。一連の動作のとして示すが、当業者は、示す動作の少なくとも一部は、変更、省略、順序を変える、または並行して実施され得ることを理解するであろう。
図9の動作900は、容量の決定を含む、受信された命令を実行するために準備することを示す。明瞭さのため、図9に示す動作の次の記述は、上で説明したトークン割り当ておよび消費方式という点での容量決定を説明する。しかしながら、多くの他の方法を用い得る。
動作902で、受信パーティションに関連付けられたトークンのプール中のトークンの数が決定され得る。少なくとも1つのトークンが利用可能であれば、命令は処理され、トークンがプールから差し引かれ得る。トークンが利用可能でない場合、他の動作が用いられ得る。
例えば、動作904は、送信パーティションと容量を共有することを示す。送信パーティションは、利用可能なトークンの大きいプールを有し得るが、受信パーティションには何も残っていない。1つ以上のトークンが、送信パーティションのトークンプールから受信パーティションのプールに転送され得る、または、より具体的には、トークンが、送信パーティションのトークンプールから差し引かれて、受信パーティションのプールに追加され得る。これは、予測的に実行され得る。送信パーティションは受信パーティションに送信される命令にアクセスするので、実施形態は、そのアクセスを用いて、要求を処理するために必要とされる容量の推定値を計算し得る。送信パーティションは、したがって、受信パーティションのトークンプールを拡大させ、それ自身のトークンプールを減少させ得る。他の実施形態では、受信パーティションは、送信パーティションから受信パーティションにトークンの転送を要求する送信パーティションにメッセージを送信し得る。
動作906は、フロー制御機構を利用することを示す。様々な実施形態が、送信バッファと受信バッファとの間での命令の伝送を制御するためにスライディングウインドウ技法を利用し得る。一般論として、スライディングウインドウ技法は、受信バッファが容認可能な待ち状態の命令の数に対する制限を伴う。これは、ウインドウサイズとして知られる。いったんウインドウがいっぱいになると、送信バッファは、命令が受信バッファから除去されるまたはウインドウサイズが増加するまで、命令を送信することを停止する。
ウインドウサイズは、様々な要因に基づき得る。実施形態は、初期のウインドウサイズを、可能性として、送信パーティションから借りることが可能な容量を含む、受信パーティションに割り当てられた容量に基づかせ得る。ウインドウサイズはまた、要求が処理され得る速度と、命令を処理することによって消費され得る容量の推定値とを考慮に入れ得る。他の実施形態は、最初にウインドウサイズを任意の値に設定し得る。
送信パーティションは、確認応答を受信することなく、ウインドウサイズに等しい命令の数を送信し得る。命令が処理されるに連れて、受信パーティションは、受信バッファからの1つ以上の命令が処理された後で、確認応答を送信し得る。受信パーティションはまた、ウインドウサイズが増加または減少されるべきであることを、その時点でそれに対して利用可能な容量、容量が用いられている速度、未処理の命令が受信バッファ中に累積されている速度などの要因に基づいて示し得る。ウインドウサイズを調整することを、動作908で示す。本明細書に記載されるフロー制御確認応答は、命令が処理されたという確認応答を含め、受信パーティションが送信パーティションに伝送する他のメッセージと組み合わされ得る。
様々な他のフロー制御機構が用いられ得る。実施形態は、例えば、受信バッファが、命令を実施する受信パーティションの容量に対して多数の命令を格納することを可能にし得る。容量ベースの抑圧が、次に受信パーティションによって制御され得る。受信パーティションまたは、容量のためまたは受信バッファがいっぱいであるためにそれが現在処理不可能である任意の命令を無視し得る。受信バッファは、成功裏に処理された最後の命令のLSN番号を含むメッセージを送信することによって回復し得る。
本開示の実施形態は、多くの種類のDBMSと共に用いられ得る。DBMSは、構成されたデータの集合を維持するためのソフトウェアおよびハードウェアシステムである。DBMSでは、データ、一般的には、キー値とさらなるデータとの間の関連付けによって構成される。関連付けの性質は、データの集合中に存在する実世界関係に基づき得る、または、それは任意であり得る。データ定義、クエリ、更新、および管理を含む様々な動作が、DBMSによって実施され得る。一部のDBMSは、構造化クエリ言語(「SQL」)などのクエリ言語を用いるデータベースとの相互作用を提供し、他のものは、プットおよびゲットなどの動作を含むAPIを用いる。データベースとのやりとりはまた、ハイパーテキストマークアップ言語(「HTML」)および拡張マークアップ言語(「XML」)などの様々なプロトコルまたは基準に基づき得る。DBMSは、ソリッドステートドライブなどのまたは以上の記憶デバイス上にデータを記憶するように機能する記憶エンジンなどの様々なアーキテクチャ的構成要素を含み得る。
DBMSは、テーブルまたは項目の集合などの集合を、パーティションに分割し得る。パーティションという用語は、テーブルまたは項目の集合のサブセットを指すために用いられ得る。しかしながら、パーティションは、コンピューティングノードと一対一で対応し得るため、パーティションという用語はまた、パーティションをホストするコンピューティングノードを指すために用いられ得る。
図10は、本発明の態様が実施され得る分散型コンピューティング環境の実施例を図示するブロック図である。様々なユーザ1000aは、任意の種類のコンピューティングデバイス1002a上で動作する様々なクライアントアプロケーションとやりとりして、データセンター1020内の様々なコンピューティングデバイス1010a、1010b、および1010c上で実行中のプロセスと、通信ネットワーク1004上で通信し得る。代替例では、クライアントアプリケーション1002bは、ユーザの介入なしで通信し得る。通信ネットワーク1004は、インターネット、有線および無線のローカルエリアネットワーク、光ファイバネットワーク、衛星通信などを含む通信技術の任意の組み合わせを含み得る。任意の数のネットワークプロトコルが用いられ得る。
データセンター1020内で動作するコンピューティングノード1010a、1010b、および1010c上で実行中のプロセスとの通信は、ゲートウエイ1006およびルータ1008を介して提供され得る。多くの他のネットワーク構成もまた用いられ得る。図10には明示的に示されていないが、様々な認証機構、ウェブサービス層、ビジネスオブジェクト、または他の中間層が、コンピューティングノード1010a、1010b、および1010c上で実行中のプロセスとの媒体通信に提供され得る。これらの中間層のうちのいくつかは、それら自身が、コンピューティングノードのうちの1つ以上の上で実行中のプロセスを含み得る。コンピューティングノード1010a、1010b、および1010cならびにそれらの上で実行中のプロセスもまた、ルータ1008を介して互と通信し得る。代替例では、別個の通信経路が用いられ得る。いくつかの実施形態では、データセンター1020は、さらなるデータセンターと通信するように構成され得、コンピューティングノードおよびそれらの上で実行中のプロセスは、他のデータセンター内で動作するコンピューティングノードおよびプロセスと通信し得ることとなる。
コンピューティングノード1010aは、1つ以上のプロセッサ1016、1つ以上のメモリ1018、および1つ以上の記憶デバイス1014を含む物理的ハードウェア上に存在するものとして示される。コンピューティングノード1010a上のプロセスは、オペレーティングシステムと共に実行され得る、または代替的には、プロセッサ1016、メモリ1018、または記憶デバイス1014などの物理的リソースと直接にやりとりするベアメタルプロセスとして実行され得る。
コンピューティングノード1010bおよび1010cは、物理的プロセッサ、メモリ、および記憶デバイスなどの様々な物理的リソースに共有アクセスし得る仮想マシンホスト1012上で動作するものとして示される。任意の数の仮想化機構を、コンピューティングノードをホストするために用いられ得る。コンピューティングノード1010bおよび1010cは、仮想メモリ、仮想プロセッサ、および、コンピューティングリソースの他の仮想化された表現を含み得る。本開示の実施形態は、したがって、本明細書に開示する技法と首尾一貫した動作を実施するように構成された仮想プロセッサおよび仮想メモリを含み得る。
図10に示す様々なコンピューティングノードは、ウェブサービス、データベース、管理システム、ビジネスオブジェクト、監視設備および診断設備などをホストするように構成され得る。コンピューティングノードとは、パソコン、サーバ、クラスタ化されたコンピューティングデバイスなどの様々な種類のコンピューティングリソースのことであり得る。ハードウェア形態で実装されたとき、コンピューティングノードは、一般に、コンピュータ可読命令を記憶するように構成された1つ以上のメモリおよび命令を読み出して実行するように構成された1つ以上のプロセッサに関連付けられる。ハードウェアベースのコンピューティングノードはまた、1つ以上の記憶デバイス、ネットワークインターフェース、通信バス、ユーザインターフェースデバイスなどを含み得る。コンピューティングノードはまた、ハイパーバイザ有りまたは無しで実装された仮想マシン、仮想化されたベアメタル環境などの仮想化されたコンピューティングリソースを範囲に収め得る。仮想化ベースのコンピューティングノードは、ハードウェアリソースに対する仮想化されたアクセスおよび仮想化されていないアクセスを有し得る。コンピューティングノードは、オペレーティングシステムおよび1つ以上のアプリケーションプログラムを実行するように構成され得る。いくつかの実施形態では、コンピューティングノードはまた、ベアメタルアプリケーションプログラムを含み得る。
先行する節で説明されたプロセス、方法、およびアルゴリズムの各々は、1つ以上のコンピュータまたはコンピュータプロセッサによって実行されるコードモジュール中に具現化され得る、および完全にもしくは部分的に自動化され得る。コードモジュールは、ハードドライブ、ソリッドステートメモリ、光メモリなどの任意の種類の非一時的コンピュータ可読媒体またはコンピュータ記憶デバイス上に記憶され得る。プロセスおよびアルゴリズムは、特定用途向け回路に部分的にまたは完全に実装され得る。開示されたプロセスおよびプロセスステップの結果が、持続的に、さもなければ、例えば、揮発性または不揮発性のストレージなどの任意の種類の非一時的コンピュータストレージ中に記憶され得る。
前記は、次の付記に鑑みればさらに理解され得る:
1.分散型データベース管理システムであって、
第1の1つ以上の記憶デバイスを含む第1のコンピューティングノードであって、前記第1の1つ以上の記憶デバイスが、ログファイルと、第1の索引に対応する第1の項目の集合とをその上に記憶した、第1のコンピューティングノードと、
メモリおよび第2の1つ以上の記憶デバイスを含む第2のコンピューティングノードであって、前記第2の1つ以上の記憶デバイスが、第2の索引をその上に記憶しており、前記第2の索引が、前記第1の集合の少なくともサブセットのバージョンに対応する、第2のコンピューティングノードと、
コンピュータ可読命令を上に記憶した1つ以上のメモリであって、実行されると、前記システムに、少なくとも、
前記第1の索引に対する第1の動作に対応する命令を前記ログファイルに書き込むことであって、前記第1の動作が前記第1の項目の集合を修正する第1の要求に対応する、書き込むことと、
前記第1のコンピューティングノードから受信され、前記第2のコンピューティングノードによって前記第2の索引に対して実施された最後の命令の記録に少なくとも部分的に基づいて、前記命令を前記ログファイルから前記第2のコンピューティングノードに送信することと、
前記第2のコンピューティングノードによって、第2の動作を前記第2の索引に対して実施することであって、前記第2の動作が前記命令に少なくとも部分的に基づく、実施することと、を行わせるコンピュータ可読命令を上に記憶した1つ以上のメモリと、
を備える、前記システム。
2.コンピュータ可読命令を上に記憶した1つ以上のメモリであって、実行されると、前記システムに、少なくとも、
前記第1のコンピューティングノードによって、前記第2のコンピューティングノードから確認応答を受信することであって、前記確認応答が、前記第2の動作を実行することに少なくとも部分的に基づく、受信すること、を行わせるコンピュータ可読命令を上に記憶した1つ以上のメモリをさらに備える、付記1に記載の前記システム。
3.コンピュータ可読命令を上に記憶した1つ以上のメモリであって、実行されると、前記システムに、少なくとも、
前記命令を前記第2のコンピューティングノードの前記メモリ中に記憶することと、
前記命令が実施されるときに、前記メモリから前記命令を除去することと、を行わせる、コンピュータ可読命令を上に記憶した1つ以上のメモリをさらに備える、付記1に記載の前記システム。
4.実施された前記最後の命令が、システム障害の前に実施されたものであり、コンピュータ可読命令を上に記憶した1つ以上のメモリであって、実行されると、前記システムに、少なくとも、
前記システム障害から回復すると、前記命令を、前記第2のコンピューティングノードに送信させることを行わせる、コンピュータ可読命令を上に記憶した1つ以上のメモリをさらに備える、付記1に記載の前記システム。
5.データを記憶するおよび取り出すためのコンピュータ実装方法であって、
第1の項目の集合の第1の索引に対する第1の動作に対応する命令を示す情報を、第1のコンピューティングノードのログファイル中に記録することであって、前記第1の動作が、前記第1の項目の集合を修正する第1の要求に対応する、記録することと、
前記第2のコンピューティングノードによって実施された最後の命令の記録に少なくとも部分的に基づいて、前記第1のコンピューティングノードによって、前記命令を示す前記情報を第2のコンピューティングノードに送信することと、
前記第2のコンピューティングノードによって、第2の索引に対して第2の動作を実施することであって、前記第2の索引が、前記第1の集合の少なくともサブセットのバージョンに対応し、前記第2の動作が、前記命令を示す前記情報に少なくとも部分的に基づく、実施することと、
を含む、前記方法。
6.前記第1のコンピューティングノードによって、前記第2のコンピューティングノードから確認応答を受信することをさらに含み、前記確認応答が、前記第2の動作を実施することに少なくとも部分的に基づく、付記5に記載の前記方法。
7.前記確認応答がエラー状態に対応する、付記6に記載の前記方法。
8.前記確認応答を受信すると、前記命令を示す前記情報を、前記第1のコンピューティングノードのメモリ中のデータ構造から除去すること、をさらに含む、付記6に記載の前記方法。
9.1つ以上の確認応答されていない命令を前記ログファイル中で位置特定することをさらに含む、付記5に記載の前記方法。
10.前記命令を前記ログファイルから除去するステップ、前記命令を実施されたものとして印付けるステップ、および前記命令にエラー状態の指示を印付けるステップのうちの1つ以上を実施することをさらに含む、付記9に記載の前記方法。
11.前記最後に実施された命令が、システム障害の前に実施されている、付記5に記載の前記方法。
12.前記第1のコンピューティングノードから命令を受信する要求を、前記第2のコンピューティングノードによって送信することをさらに含み、前記命令受信要求が、前記第2のコンピューティングノードによって実施された最後の命令の前記記録を含む、付記5に記載の前記方法。
13.前記命令を示す前記情報を前記第2のコンピューティングノードのメモリ中に記憶することをさらに含む、付記5に記載の前記方法。
14.前記命令を実行すると、前記第2のコンピューティングノードの前記メモリから前記命令を示す前記情報を除去することをさらに含む、付記13に記載の前記方法。
15.確認応答を受信する前に、送信する命令の最大数を示す、前記第1のコンピューティングノードで受信することをさらに含む、付記5に記載の前記方法。
16.命令を上に記憶した非一時的コンピュータ可読記憶媒体であって、コンピューティングデバイスによって実行されると、前記コンピューティングデバイスに、少なくとも、
命令を示す情報を第1のコンピューティングノードから受信することであって、前記命令が第1の索引に対する第1の動作に対応し、前記第1の動作が、第1の項目の集合を修正する第1の要求に対応する、受信することと、
第2の索引に対して第2の動作を実施することであって、前記第2の動作が、前記命令を示す前記情報に少なくとも部分的に基づき、第2の索引が、前記第1の項目の集合の少なくともサブセットのバージョンに対応する、実施することと、
前記コンピューティングデバイスに対して実施された最後の命令の記録を更新することであって、前記記録が、前記第1のコンピューティングノードの指示を含む、更新することと、を行わせる命令を上に記憶した、前記非一時的コンピュータ可読記憶媒体。
17.前記コンピューティングデバイスによって実行されると、前記コンピューティングデバイスに、少なくとも、
前記第2の動作を実施することであって、前記動作を実施することが、前記第1のコンピューティングノードに関連付けられた第1の容量指示と、前記第2のコンピューティングノードに関連付けられた第2の容量指示と、に少なくとも部分的に基づく、実施すること、を行わせるさらなる命令を含む、付記16に記載の前記コンピュータ可読記憶媒体。
18.前記コンピューティングデバイスによって実行されると、前記コンピューティングデバイスに、少なくとも、
前記第2のコンピューティングノードによって受信することが可能な確認応答されなかった命令の最大数の指示を、前記第1の前記コンピューティングノードに送信すること、を行わせるさらなる命令を含む、付記16に記載の前記コンピュータ可読記憶媒体。
19.前記最大数が、プロビジョニングされた容量に少なくとも部分的に基づく、付記18に記載の前記コンピュータ可読記憶媒体。
20.実施された最後の命令の前記記録が、前記第1のコンピューティングノードが前記命令を送信したことを示す情報を含む、付記16に記載の前記コンピュータ可読記憶媒体。
21.前記第1の項目の集合の少なくとも前記サブセットの前記バージョンが、第1の項目の集合からの複製されたデータを含む、付記16に記載の前記コンピュータ可読記憶媒体。
22.データを記憶するおよび取り出すためのシステムであって、
第1のメモリおよび第1の1つ以上の記憶デバイスを含む第1のコンピューティングノードであって、前記第1の1つ以上の記憶デバイスが、第1の項目の集合に関連付けられた第1の索引を上に記憶した、第1のコンピューティングノードと、
第2のメモリおよび第2の1つ以上の記憶デバイスを含む第2のコンピューティングノードであって、前記第2の1つ以上の記憶デバイスが第2の索引を上に記憶した、第2のコンピューティングノードと、
前記第1の項目の集合中の項目を変更する要求を受信するように構成された1つ以上のプロセッサと、
1つ以上の命令を前記要求に少なくとも部分的に基づいて決定する1つ以上のプロセッサであって、前記1つ以上の命令が、前記第1の索引に対する1つ以上の動作を示す、1つ以上のプロセッサと、
前記第1のコンピューティングノード上の前記第1の索引を、前記1つ以上の命令に少なくとも部分的に基づいて更新するように構成された1つ以上のプロセッサと、
前記第2のコンピューティングノード上の前記第2の索引を、前記1つ以上の命令に少なくとも部分的に基づいて更新するように構成された1つ以上のプロセッサと、
を備える、前記システム。
23.前記命令を示す前記情報を前記第2のコンピューティングノードに送信する前に、前記第1のメモリ中の前記命令を示す情報を記憶するように構成された1つ以上のプロセッサと、
前記第2のコンピューティングノード上の前記第2の索引を更新する前に、前記第2のメモリ中の前記命令を示す前記情報を記憶するように構成された1つ以上のプロセッサと、
更新されている前記第2の索引を示す確認応答を、前記第1のコンピューティングノードで受信するように構成された1つ以上のプロセッサと、
をさらに備える、付記22に記載の前記システム。
24.前記第1の索引が項目の集合に対応し、前記第2の索引が、前記項目の集合の少なくともサブセットのバージョンに対応する、付記22に記載の前記システム。
25.前記第1の索引が項目の集合の第1のサブセットに対応し、前記第2の索引が前記項目の集合の第2のサブセットに対応する、付記22に記載の前記システム。
26.前記1つ以上の命令をログファイル中に記憶するように構成された1つ以上のプロセッサと、
前記1つ以上の命令を前記ログファイルから除去するステップ、前記1つ以上の命令を完了されたものとして印付けるステップ、および前記1つ以上の命令に確認応答されていないものとして印付けるステップのうちの1つ以上を実施するように構成された1つ以上のプロセッサと、
を備える、付記22に記載の前記システム。
上に説明した様々な特性およびプロセスは、互いに独立に用いられ得る、または、様々な方法で組み合わされ得る。可能な全ての組み合わせおよびサブ組み合わせが、この開示の範囲内に入ることを意図するものである。加えて、ある方法またはプロセスブロックが、一部の実装例では省略され得る。本明細書に記載される方法およびプロセスはまた、いかなる特定の順序にも限定されず、それに関連するブロックまたは状態は、適切な他の順序で実施することが可能である。例えば、説明されたブロックまたは状態は、具体的に開示されたもの以外の順序で実施され得る、または、複数のブロックもしくは状態は、1つのブロックもしくは状態に組み合わされ得る。実施例のブロックまたは状態は、直列、並列、または一部の他の様式で実施され得る。ブロックまたは状態は、開示された例となる実施形態に追加またはこれから除去し得る。本明細書に記載される実施例のシステムおよび構成要素は、説明するものとは異なるように構成され得る。例えば、要素は、開示する例となる実施形態と比較して追加、これから除去、または再配列され得る。
また、様々な項目が、メモリ中にまたはストレージ上に、使用中に記憶されるものと図示されており、また、これらの項目またはそれらの部分が、メモリ管理およびデータ保全の目的のために、メモリと他の記憶デバイスとの間で転送され得ることが理解されるであろう。そうする代わりに、他の実施形態では、ソフトウェアモジュールおよび/またはシステムの一部または全てが、別のデバイス上のメモリ中で実行されて、図示するコンピューティングシステムとコンピュータ間通信を介して通信し得る。さらにその上、いくつかの実施形態では、システムおよび/またはモジュールの一部または全てが、これに限られないが、例えば、1つ以上の特定用途向け集積回路(ASIC)、標準集積回路、コントローラ(例えば、適切な命令を実行することと、マイクロコントローラおよび/埋め込み式コントローラを含むことによる)、フィールドプログラム可能ゲートアレイ(FPGA)、複雑プログラム可能論理デバイス(CPLD)などを含む、ファームウェアおよび/またはハードウェア中に少なくとも部分的になど、他の方法で実装または提供され得る。モジュール、システム、およびデータ構造のいくつかまたは全部もまた、適切なドライブによってまたは適切な接続を介して読み出されるハードディスク、メモリ、ネットワーク、または携帯可能媒体品目などのコンピュータ可読媒体上に(例えば、ソフトウェア命令または構造化データとして)記憶され得る。システム、モジュール、およびデータ構造もまた、生成されたデータ信号として(例えば、搬送波または他のアナログもしくはデジタル式の伝播信号の一部として)無線ベースまたは有線/ケーブルベースの媒体を含む様々なコンピュータ可読伝送媒体上で伝送され得る、かつ、(例えば、単一もしくは多重化されたアナログ信号の一部として、または、複数の離散的なデジタルパケットもしくはフレームとして)様々な形態を取り得る。このようなコンピュータ製品はまた、他の実施形態では他の形態を取り得る。したがって、本発明は、他のコンピュータシステム構成で実施され得る。
具体的にそうでないと述べられたまたは使用された文脈内でそうでないと理解される場合を除き、とりわけ、「can」、「could」、「might」、「may」などの、本明細書で用いられる条件付きの語は、一般に、ある実施形態はある特性、要素、および/またはステップを含むが、他の実施形態は含まないことを伝達することを意図するものである。したがって、そのような条件付きの語は、一般には、特性、要素、および/またはステップが1つ以上の実施形態によってなんらかの仕方で必要とされ得る、または、1つ以上の実施形態は、これらの特性、要素、および/またはステップが含まれるかまたは任意の特定の実施形態で実施されるかを、著者の入力または督促有りまたは無しで、判定するための論理を必然的に含むことを暗示することを意図するものではない。「comprising」、「including」、「having」などの用語は、同義語であり、包括的に、オープンエンド形式で用いられ、さらなる要素、特性、行為、動作などを排除しない。また、「or」という用語は、その包括的な意味で用いられ(かつ、その排他的な意味では用いられず)、例えば、要素の一覧を接続するために、「or」という用語は、一覧中の要素のうちの1つ、一部、または全てを意味する。
ある特定の例となる実施形態を説明したが、これらの実施形態は、例として提示されたものにすぎず、本明細書に開示する本発明の範囲を限定する意図はない。したがって、上述の記載中でも、特定の特徴、特性、ステップ、モジュール、またはブロックが必要であるまたは不可欠であることを暗示することを意図するものではない。実際、本明細書に記載される新規の方法およびシステムは、様々な他の形態で具現化され得るが、さらにその上、本明細書に記載される方法およびシステムの形態の様々な省略、置き換え、および変更が、本明細書に記載される本発明の趣旨から逸脱することなく行われ得る。添付の特許請求の範囲およびそれらの均等物は、本明細書に開示する本発明のある特定のものの範囲および趣旨内に入るような形態または修正を網羅することが意図される。

Claims (15)

  1. 分散型データベース管理システムであって、前記システムは、
    1つ以上の第1の記憶デバイスを含む第1のコンピューティングノードであって、前記1つ以上の第1の記憶デバイスには、ログファイルと、第1の索引に対応する第1の項目の集合と、が記憶されている第1のコンピューティングノードと、
    メモリと、1つ以上の第2の記憶デバイスと、を含む第2のコンピューティングノードであって、前記1つ以上の第2の記憶デバイスには、第2の索引が記憶され、前記第2の索引が、前記第1の集合の少なくともサブセットのバージョンに対応する第2のコンピューティングノードと、
    コンピュータ可読命令が記憶されている1つ以上のメモリと、
    を具え、
    前記1つ以上のメモリは、前記コンピュータ可読命令の実行時に、前記システムに、少なくとも、
    前記第1の索引に対する第1の動作であって、前記第1の項目の集合を修正する第1の要求に対応する第1の動作に対応する命令を、前記ログファイルに書き込むステップと、
    前記第1のコンピューティングノードから受信され、前記第2のコンピューティングノードによって前記第2の索引に対して実施された最後の命令の記録に少なくとも部分的に基づいて、前記命令を前記ログファイルから前記第2のコンピューティングノードに送信するステップと、
    前記第2のコンピューティングノードによって、前記命令に少なくとも部分的に基づく第2の動作を前記第2の索引に対して実施するステップと、
    を行わせる、
    システム。
  2. 前記システムは、コンピュータ可読命令が記憶されている1つ以上のメモリをさらに具え、
    前記1つ以上のメモリは、前記コンピュータ可読命令の実行時に、前記システムに、少なくとも、
    前記第1のコンピューティングノードによって、前記第2のコンピューティングノードから、前記第2の動作を実施するステップに少なくとも部分的に基づく確認応答を受信するステップを行わせる、
    請求項1に記載のシステム。
  3. 前記システムは、コンピュータ可読命令が記憶されている1つ以上のメモリをさらに具え、
    前記1つ以上のメモリは、前記コンピュータ可読命令の実行時に、前記システムに、少なくとも、
    前記命令を前記第2のコンピューティングノードの前記メモリ中に記憶するステップと、
    前記命令が実施されるときに、前記メモリから前記命令を除去するステップと、
    を行わせる、
    請求項1に記載のシステム。
  4. 実施された前記最後の命令が、システム障害の前に実施されたものであり、
    前記システムは、コンピュータ可読命令が記憶されている1つ以上のメモリをさらに具え、
    前記1つ以上のメモリは、前記コンピュータ可読命令の実行時に、前記システムに、少なくとも、
    前記システム障害から回復すると、前記命令を、前記第2のコンピューティングノードに送信するステップを行わせる、
    請求項1に記載のシステム。
  5. データを記憶および取り出すためのコンピュータ実装方法であって、前記方法は、
    第1の項目の集合の第1の索引に対する第1の動作であって、前記第1の項目の集合を修正する第1の要求に対応する第1の動作に対応する命令を示す情報を、第1のコンピューティングノードのログファイル中に記録するステップと、
    前記第2のコンピューティングノードによって実施された最後の命令の記録に少なくとも部分的に基づいて、前記第1のコンピューティングノードによって、前記命令を示す前記情報を第2のコンピューティングノードに送信するステップと、
    前記第2のコンピューティングノードによって、前記第1の集合の少なくともサブセットのバージョンに対応する第2の索引に対して、前記命令を示す前記情報に少なくとも部分的に基づく第2の動作を実施するステップと、
    を含む方法。
  6. 前記第1のコンピューティングノードによって、前記第2のコンピューティングノードから確認応答を受信するステップをさらに含み、前記確認応答が、前記第2の動作を実施することに少なくとも部分的に基づく、
    請求項5に記載の方法。
  7. 前記確認応答を受信するステップに応じて、前記命令を示す前記情報を、前記第1のコンピューティングノードのメモリ中のデータ構造から除去するステップをさらに含む、
    請求項6に記載の方法。
  8. 1つ以上の確認応答されていない命令を前記ログファイル中で位置特定するステップをさらに含む、
    請求項5に記載の方法。
  9. 前記命令を前記ログファイルから除去するステップと、
    前記命令を実施されたものとして印付けるステップと、
    前記命令にエラー状態の指示を印付けるステップと、
    のうちの1つ以上を実施するステップをさらに含む、
    請求項8に記載の方法。
  10. 前記第2のコンピューティングノードによって、前記第1のコンピューティングノードから命令を受信する要求を送信するステップをさらに含み、前記命令を受信する要求が、前記第2のコンピューティングノードによって実施された前記最後の命令の前記記録を含む、
    請求項5に記載の方法。
  11. 前記命令を実施するステップに応じて、前記第2のコンピューティングノードの前記メモリから前記命令を示す前記情報を除去するステップをさらに含む、
    請求項10に記載の方法。
  12. データを記憶および取り出すためのシステムであって、
    第1のメモリと、1つ以上の第1の記憶デバイスと、を含む第1のコンピューティングノードであって、前記1つ以上の第1の記憶デバイスには、第1の項目の集合に関連付けられた第1の索引が記憶されている第1のコンピューティングノードと、
    第2のメモリと、1つ以上の第2の記憶デバイスと、を含む第2のコンピューティングノードであって、前記1つ以上の第2の記憶デバイスには、第2の索引が記憶されている第2のコンピューティングノードと、
    前記第1の項目の集合中の項目を変更する要求を受信するように構成された1つ以上のプロセッサと、
    前記要求に少なくとも部分的に基づいて、前記第1の索引に対する1つ以上の動作を示す1つ以上の命令を決定する1つ以上のプロセッサと、
    前記第1のコンピューティングノード上の前記第1の索引を、前記1つ以上の命令に少なくとも部分的に基づいて更新するように構成された1つ以上のプロセッサと、
    前記第2のコンピューティングノード上の前記第2の索引を、前記1つ以上の命令に少なくとも部分的に基づいて更新するように構成された1つ以上のプロセッサと、
    を具えるシステム。
  13. 前記命令を示す前記情報を前記第2のコンピューティングノードに送信する前に、前記第1のメモリ中の前記命令を示す情報を記憶するように構成された1つ以上のプロセッサと、
    前記第2のコンピューティングノード上の前記第2の索引を更新する前に、前記第2のメモリ中の前記命令を示す前記情報を記憶するように構成された1つ以上のプロセッサと、
    更新されている前記第2の索引を示す確認応答を、前記第1のコンピューティングノードで受信するように構成された1つ以上のプロセッサと、
    をさらに具える、
    請求項12に記載のシステム。
  14. 前記第1の索引が項目の集合に対応し、前記第2の索引が前記項目の集合の少なくともサブセットのバージョンに対応する、
    請求項12に記載のシステム。
  15. 前記1つ以上の命令をログファイル中に記憶するように構成された1つ以上のプロセッサと、
    前記1つ以上の命令を前記ログファイルから除去するステップと、前記1つ以上の命令を完了されたものとして印付けるステップと、前記1つ以上の命令に確認応答されていないものとして印付けるステップと、のうちの1つ以上を実施するように構成された1つ以上のプロセッサと、
    を具える、
    請求項12に記載のシステム。
JP2018207253A 2013-05-20 2018-11-02 索引更新パイプライン Pending JP2019036353A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/898,151 2013-05-20
US13/898,151 US11841844B2 (en) 2013-05-20 2013-05-20 Index update pipeline

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2016514993A Division JP2016524750A (ja) 2013-05-20 2014-05-19 索引更新パイプライン

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2020150062A Division JP2021002369A (ja) 2013-05-20 2020-09-07 索引更新パイプライン

Publications (1)

Publication Number Publication Date
JP2019036353A true JP2019036353A (ja) 2019-03-07

Family

ID=51896615

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2016514993A Pending JP2016524750A (ja) 2013-05-20 2014-05-19 索引更新パイプライン
JP2018207253A Pending JP2019036353A (ja) 2013-05-20 2018-11-02 索引更新パイプライン
JP2020150062A Pending JP2021002369A (ja) 2013-05-20 2020-09-07 索引更新パイプライン

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2016514993A Pending JP2016524750A (ja) 2013-05-20 2014-05-19 索引更新パイプライン

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2020150062A Pending JP2021002369A (ja) 2013-05-20 2020-09-07 索引更新パイプライン

Country Status (6)

Country Link
US (1) US11841844B2 (ja)
EP (1) EP3000034A4 (ja)
JP (3) JP2016524750A (ja)
CN (1) CN105359099B (ja)
CA (1) CA2913036C (ja)
WO (1) WO2014189851A1 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9633074B1 (en) * 2014-01-03 2017-04-25 Amazon Technologies, Inc. Querying data set tables in a non-transactional database
US10303796B2 (en) * 2015-01-09 2019-05-28 Ariba, Inc. Updating distributed shards without compromising on consistency
JP6464771B2 (ja) * 2015-01-22 2019-02-06 日本電気株式会社 情報処理装置、情報処理システム、情報処理方法、および、コンピュータ・プログラム
CN105260136B (zh) * 2015-09-24 2019-04-05 北京百度网讯科技有限公司 数据读写方法及分布式存储系统
US10666574B2 (en) * 2015-09-28 2020-05-26 Amazon Technologies, Inc. Distributed stream-based database triggers
US10169391B2 (en) * 2015-10-21 2019-01-01 International Business Machines Corporation Index management
US10853182B1 (en) * 2015-12-21 2020-12-01 Amazon Technologies, Inc. Scalable log-based secondary indexes for non-relational databases
KR101736406B1 (ko) 2016-05-30 2017-05-29 주식회사 인피니플럭스 데이터 복제 방법 및 그 장치
US10339014B2 (en) * 2016-09-28 2019-07-02 Mcafee, Llc Query optimized distributed ledger system
US20180097748A1 (en) * 2016-09-30 2018-04-05 Microsoft Technology Licensing, Llc Partitioned Topic Based Queue with Automatic Processing Scaling
US10565228B2 (en) * 2017-03-06 2020-02-18 Sap Se Testing database replication with multi-container system architecture
KR101826828B1 (ko) * 2017-08-16 2018-03-22 주식회사 마크베이스 로그 데이터 관리 시스템 및 방법
US10606829B1 (en) * 2018-04-17 2020-03-31 Intuit Inc. Methods and systems for identifying data inconsistencies between electronic record systems using data partitioning
US11200256B2 (en) 2019-04-11 2021-12-14 International Business Machines Corporation Record replication for multi-column partitioning on distributed database systems
CN111857539B (zh) * 2019-04-25 2024-04-12 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机可读介质
CN110134695B (zh) * 2019-05-21 2022-08-16 电子科技大学 一种面向流水线结构化数据查询的数据库智能分区方法
US11645424B2 (en) * 2020-04-27 2023-05-09 International Business Machines Corporation Integrity verification in cloud key-value stores
US11481371B2 (en) * 2020-07-27 2022-10-25 Hewlett Packard Enterprise Development Lp Storage system capacity usage estimation
US11586439B2 (en) 2020-10-20 2023-02-21 Micron Technology, Inc. Detecting infinite loops in a programmable atomic transaction
US11403023B2 (en) * 2020-10-20 2022-08-02 Micron Technology, Inc. Method of organizing a programmable atomic unit instruction memory
US11740929B2 (en) 2020-10-20 2023-08-29 Micron Technology, Inc. Registering a custom atomic operation with the operating system
US11436187B2 (en) 2020-10-20 2022-09-06 Micron Technology, Inc. Method of notifying a process or programmable atomic operation traps
US11693690B2 (en) 2020-10-20 2023-07-04 Micron Technology, Inc. Method of completing a programmable atomic transaction by ensuring memory locks are cleared
CN113704279A (zh) * 2021-08-04 2021-11-26 城乡院(广州)有限公司 一种地下管线数据更新方法、装置及设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11327982A (ja) * 1998-04-07 1999-11-30 Lucent Technol Inc 分散デ―タベ―スシステム障害回復方法
JP2001043119A (ja) * 1999-07-27 2001-02-16 Hitachi Telecom Technol Ltd データベース登録元装置及び登録先装置並びにデータベース同期化装置
EP1498815A2 (en) * 2003-06-30 2005-01-19 Gravic, Inc. Methods for ensuring referential integrity in multi-threaded replication engines
JP2007164523A (ja) * 2005-12-14 2007-06-28 Nec Corp 情報処理装置、分散同期型情報システム、情報同期方法、及び、プログラム
US7558883B1 (en) * 2002-06-28 2009-07-07 Microsoft Corporation Fast transaction commit
US20090210429A1 (en) * 2008-02-19 2009-08-20 Yahoo! Inc. System and method for asynchronous update of indexes in a distributed database
JP2010039746A (ja) * 2008-08-05 2010-02-18 Hitachi Ltd データ同期方法、データ同期プログラム、データベースサーバ装置、および、データベースシステム

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001513926A (ja) 1997-02-28 2001-09-04 シーベル システムズ,インコーポレイティド 複数レベルのリモート・クライアントを持つ部分的複製分散データベース
US6785696B2 (en) * 2001-06-01 2004-08-31 Hewlett-Packard Development Company, L.P. System and method for replication of distributed databases that span multiple primary nodes
US20030101183A1 (en) 2001-11-26 2003-05-29 Navin Kabra Information retrieval index allowing updating while in use
US20050138081A1 (en) * 2003-05-14 2005-06-23 Alshab Melanie A. Method and system for reducing information latency in a business enterprise
US7961650B2 (en) 2004-02-16 2011-06-14 Christopher Michael Davies Network architecture
US7769770B2 (en) * 2004-07-14 2010-08-03 Microsoft Corporation Secondary index and indexed view maintenance for updates to complex types
US7668962B2 (en) * 2005-02-07 2010-02-23 Symantec Operating Corporation System and method for connection failover using redirection
US8554758B1 (en) * 2005-12-29 2013-10-08 Amazon Technologies, Inc. Method and apparatus for monitoring and maintaining health in a searchable data service
US7840618B2 (en) * 2006-01-03 2010-11-23 Nec Laboratories America, Inc. Wide area networked file system
US7620721B2 (en) * 2006-02-28 2009-11-17 Microsoft Corporation Pre-existing content replication
US7925624B2 (en) * 2006-03-31 2011-04-12 Amazon Technologies, Inc. System and method for providing high availability data
US8407765B2 (en) * 2006-08-22 2013-03-26 Centurylink Intellectual Property Llc System and method for restricting access to network performance information tables
US20080104022A1 (en) * 2006-10-31 2008-05-01 Bank Of America Corporation Document indexing and delivery system
CN101089857B (zh) 2007-07-24 2011-05-11 中兴通讯股份有限公司 一种内存数据库事务管理方法及系统
US7779010B2 (en) 2007-12-12 2010-08-17 International Business Machines Corporation Repartitioning live data
US8650155B2 (en) * 2008-02-26 2014-02-11 Oracle International Corporation Apparatus and method for log based replication of distributed transactions using globally acknowledged commits
US8229945B2 (en) * 2008-03-20 2012-07-24 Schooner Information Technology, Inc. Scalable database management software on a cluster of nodes using a shared-distributed flash memory
US8386540B1 (en) 2008-03-31 2013-02-26 Amazon Technologies, Inc. Scalable relational database service
US8090710B2 (en) * 2008-04-22 2012-01-03 International Business Machines Corporation Index maintenance in a multi-node database
US8417679B1 (en) * 2008-05-21 2013-04-09 Translattice, Inc. Fast storage writes
US8239389B2 (en) * 2008-09-29 2012-08-07 International Business Machines Corporation Persisting external index data in a database
US8170997B2 (en) * 2009-01-29 2012-05-01 Microsoft Corporation Unbundled storage transaction services
US8380702B2 (en) * 2009-03-10 2013-02-19 Oracle International Corporation Loading an index with minimal effect on availability of applications using the corresponding table
US9323775B2 (en) 2010-06-19 2016-04-26 Mapr Technologies, Inc. Map-reduce ready distributed file system
US8666939B2 (en) 2010-06-28 2014-03-04 Sandisk Enterprise Ip Llc Approaches for the replication of write sets
US10452629B2 (en) * 2010-07-13 2019-10-22 International Business Machines Corporation Automatic maintenance of a set of indexes with different currency characteristics in a database management system
US9805108B2 (en) 2010-12-23 2017-10-31 Mongodb, Inc. Large distributed database clustering systems and methods
US9519555B2 (en) 2011-05-23 2016-12-13 Microsoft Technology Licensing, Llc Synchronous replication in a distributed storage environment
US8601000B1 (en) * 2011-06-27 2013-12-03 Amazon Technologies, Inc. System and method for conditionally updating an item with attribute granularity
US20130151535A1 (en) * 2011-12-09 2013-06-13 Canon Kabushiki Kaisha Distributed indexing of data
US8930347B2 (en) 2011-12-14 2015-01-06 International Business Machines Corporation Intermediate result set caching for a database system
US8612706B1 (en) * 2011-12-21 2013-12-17 Western Digital Technologies, Inc. Metadata recovery in a disk drive
US20130311488A1 (en) 2012-01-06 2013-11-21 Citus Data Bilgi Islemleri Ticaret A.S. Time Stamp Bounded Addition of Data to an Append-Only Distributed Database Table
US9489434B1 (en) 2012-01-17 2016-11-08 Amazon Technologies, Inc. System and method for replication log branching avoidance using post-failover rejoin
US8620924B2 (en) 2012-03-06 2013-12-31 International Business Machines Corporation Refreshing a full-text search index in a partitioned database
US9286339B2 (en) 2012-04-30 2016-03-15 Hewlett Packard Enterprise Development Lp Dynamic partitioning of a data structure
US9430343B1 (en) * 2012-05-07 2016-08-30 Emc Corporation Using affinity to mediate bias in a distributed storage system
US8965921B2 (en) 2012-06-06 2015-02-24 Rackspace Us, Inc. Data management and indexing across a distributed database
US8959301B2 (en) * 2012-11-09 2015-02-17 International Business Machines Corporation Accessing data in a storage system
CN103077222B (zh) 2012-12-31 2016-01-27 中国科学院计算技术研究所 机群文件系统分布式元数据一致性保证方法及系统
US8959528B2 (en) 2013-03-13 2015-02-17 International Business Machines Corporation Acknowledging incoming messages

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11327982A (ja) * 1998-04-07 1999-11-30 Lucent Technol Inc 分散デ―タベ―スシステム障害回復方法
JP2001043119A (ja) * 1999-07-27 2001-02-16 Hitachi Telecom Technol Ltd データベース登録元装置及び登録先装置並びにデータベース同期化装置
US7558883B1 (en) * 2002-06-28 2009-07-07 Microsoft Corporation Fast transaction commit
EP1498815A2 (en) * 2003-06-30 2005-01-19 Gravic, Inc. Methods for ensuring referential integrity in multi-threaded replication engines
JP2007164523A (ja) * 2005-12-14 2007-06-28 Nec Corp 情報処理装置、分散同期型情報システム、情報同期方法、及び、プログラム
US20090210429A1 (en) * 2008-02-19 2009-08-20 Yahoo! Inc. System and method for asynchronous update of indexes in a distributed database
JP2010039746A (ja) * 2008-08-05 2010-02-18 Hitachi Ltd データ同期方法、データ同期プログラム、データベースサーバ装置、および、データベースシステム

Also Published As

Publication number Publication date
US11841844B2 (en) 2023-12-12
CN105359099A (zh) 2016-02-24
CN105359099B (zh) 2020-05-08
WO2014189851A1 (en) 2014-11-27
EP3000034A4 (en) 2017-02-22
US20140344236A1 (en) 2014-11-20
JP2021002369A (ja) 2021-01-07
CA2913036A1 (en) 2014-11-27
EP3000034A1 (en) 2016-03-30
JP2016524750A (ja) 2016-08-18
CA2913036C (en) 2018-09-04

Similar Documents

Publication Publication Date Title
JP2019036353A (ja) 索引更新パイプライン
JP2016524750A5 (ja)
US11755415B2 (en) Variable data replication for storage implementing data backup
US11704290B2 (en) Methods, devices and systems for maintaining consistency of metadata and data across data centers
US10078682B2 (en) Differentiated secondary index maintenance in log structured NoSQL data stores
US20180332088A1 (en) Atomically committing related streaming data across multiple distributed resources
JP6225262B2 (ja) 分散データグリッドにおいてデータを同期させるためにパーティションレベルジャーナリングをサポートするためのシステムおよび方法
JP2013544386A (ja) 分散型データベースにおいてインテグリティを管理するためのシステム及び方法
JP2013544386A5 (ja)
JPWO2011108695A1 (ja) 並列データ処理システム、並列データ処理方法及びプログラム
US11003550B2 (en) Methods and systems of operating a database management system DBMS in a strong consistency mode
US10970177B2 (en) Methods and systems of managing consistency and availability tradeoffs in a real-time operational DBMS
Sajwan et al. The hadoop distributed file system: Architecture and internals
US20240126781A1 (en) Consensus protocol for asynchronous database transaction replication with fast, automatic failover, zero data loss, strong consistency, full sql support and horizontal scalability
WO2024081140A1 (en) Configuration and management of replication units for asynchronous database transaction replication
Mangal et al. Erlang Distributed File System (eDFS)
Oriani et al. The Search for a Highly-Available Hadoop Distributed Filesystem
Rezahanjani Durability for Memory-Based Key-Value Stores

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181102

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181102

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181203

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190827

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190902

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20191121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200203

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20200507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200907

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20200907

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20200915

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20200928

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20201113

C211 Notice of termination of reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C211

Effective date: 20201118

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20210106

C13 Notice of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: C13

Effective date: 20210322

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210622

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20211004

C23 Notice of termination of proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C23

Effective date: 20211117

C03 Trial/appeal decision taken

Free format text: JAPANESE INTERMEDIATE CODE: C03

Effective date: 20211222

C30A Notification sent

Free format text: JAPANESE INTERMEDIATE CODE: C3012

Effective date: 20211222