JP6400695B2 - データユニットの集合のチェックポイント作成 - Google Patents

データユニットの集合のチェックポイント作成 Download PDF

Info

Publication number
JP6400695B2
JP6400695B2 JP2016523189A JP2016523189A JP6400695B2 JP 6400695 B2 JP6400695 B2 JP 6400695B2 JP 2016523189 A JP2016523189 A JP 2016523189A JP 2016523189 A JP2016523189 A JP 2016523189A JP 6400695 B2 JP6400695 B2 JP 6400695B2
Authority
JP
Japan
Prior art keywords
data
data units
computing system
checkpoint
units
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
JP2016523189A
Other languages
English (en)
Other versions
JP2016540285A (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 JP2016540285A publication Critical patent/JP2016540285A/ja
Application granted granted Critical
Publication of JP6400695B2 publication Critical patent/JP6400695B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Retry When Errors Occur (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

関連出願の相互参照
本出願は、2013年10月21日に出願した米国特許出願第61/893,439号明細書の優先権を主張するものである。
本明細書は、データユニットの集合のチェックポイント作成に関する。
障害又はその他の予期しない事態に応じてリカバリ又は再始動する能力が役立つさまざまな種類のデータ処理システムが、存在する。例えば、リアルタイムストリーム処理又は複合イベント処理システムにおいては、入力データ及び/又は入力データに対して実行される計算に関する状態情報などのシステム情報を保存することが役立つ。チェックポイント作成は、システムが最近保存された一貫性のある状態からリカバリすることができるようにシステム情報を周期的に保存する方法の例である。データの連続するフローに対して動作するデータ処理システムのためのチェックポイント作成技術の一例が、参照により本明細書に組み込まれている米国特許第6,584,581号明細書に記載されている。
米国特許第6,584,581号明細書
一態様においては、概して、記憶されたデータを管理するためのコンピューティングシステムが、複数のデータユニットを含む作業データ(working data)を記憶するように構成されたメモリモジュールと、1又は2以上のデータユニットの複数の組を含むリカバリデータを記憶するように構成されたストレージシステムと、メモリモジュールとストレージシステムとの間のデータユニットの転送を管理するように構成された少なくとも1つのプロセッサとを含む。管理することは、作業データに含まれる複数のデータユニットの間の順序を維持することであって、順序が、複数のデータユニットのうちの1又は2以上を含む第1の連続する部分及び複数のデータユニットのうちの1又は2以上を含む第2の連続する部分を規定する、維持することと、複数の時間間隔のそれぞれに関して、時間間隔中に作業データからアクセスされたデータユニットを特定し、アクセスされたデータユニットを含む第1の連続する部分からの1又は2以上のデータユニット及びリカバリデータに既に追加された少なくとも1つのデータユニットを含む第2の連続する部分からの1又は2以上のデータユニットを含む2又は3以上のデータユニットの組をリカバリデータに追加することとを含む。
態様は、以下の特徴のうちの1又は2以上を含み得る。
管理することは、時間の複数の間隔のそれぞれに関して、作業データにやはり含まれる任意のデータユニットが1又は2以上のデータユニットの少なくとも1つのその他の組に記憶される1又は2以上のデータユニットの少なくとも1つの組をリカバリデータから削除することをさらに含む。
管理することは、複数の時間間隔のそれぞれに関して、時間間隔中に作業データから削除されたデータユニットを特定することをさらに含む。
第2の連続する部分は、削除されたデータユニットを除外する。
管理することは、時間の複数の間隔のそれぞれに関して、削除されたデータユニットを特定する情報をリカバリデータに追加することをさらに含む。
時間間隔中に作業データからアクセスされたデータユニットを特定することは、時間間隔中に作業データからアクセスされたデータユニットを第1の連続する部分に移すことを含む。
作業データに含まれる複数のデータユニットの間の順序は、データユニットがどれだけ最近にアクセスされたかに基づく。
第1の連続する部分は、作業データに含まれる複数のデータユニットのすべてのうちの最も最近アクセスされた(most-recently-accessed)データユニットと、自身の最も最近のアクセス以降にリカバリデータに追加されていない複数のデータユニットのサブセットのうちの最も最近アクセスされていない(least-recently-accessed)データユニットとを含む。
第2の連続する部分は、第1の連続する部分と重ならない。
第2の連続する部分は、自身の最も最近のアクセス以降にリカバリデータに追加された少なくとも1つのデータユニットを含む。
第2の連続する部分からの1又は2以上のデータユニットは、第1の連続する部分からの1又は2以上のデータユニット内のデータユニットの数の約半分と第1の連続する部分からの1又は2以上のデータユニット内のデータユニットの数の約2倍との間であるデータユニットの数に制限される。
第1の連続する部分は、第2の連続する部分のデータユニットのいずれよりも最近アクセスされたデータユニットを含む。
データユニットがどれだけ最近にアクセスされたかを示す時間が、データユニットへの排他的なアクセスが開始された時間に対応する。
データユニットがどれだけ最近にアクセスされたかを示す時間が、データユニットへの排他的なアクセスが終了した時間に対応する。
管理することは、障害に応じてリカバリデータを用いて作業データの状態を復元することをさらに含む。
作業データに含まれる複数のデータユニットは、それぞれ、キー値に関連付けられる。
作業データに含まれるデータユニットのうちの少なくとも1つは、データユニットに関連するキー値に基づいてアクセス可能な1又は2以上の値を含む。
作業データに含まれる異なるデータユニットに関連する異なるキー値の総数は、約1,000を超える。
時間間隔は、互いに重ならない。
時間間隔中に作業データからアクセスされたデータユニットを特定することは、時間間隔中に作業データに追加されたデータユニット、時間間隔中に作業データから読まれたデータユニット、又は時間間隔中に作業データ内で更新されたデータユニットのうちの少なくとも1つを特定することを含む。
メモリモジュールは、揮発性メモリデバイスを含む。
ストレージシステムは、不揮発性ストレージデバイスを含む。
別の態様においては、概して、コンピューティングシステムのメモリモジュールとコンピューティングシステムのストレージシステムとの間のデータユニットの転送を管理するための方法が、メモリモジュールに、複数のデータユニットを含む作業データを記憶するステップと、ストレージシステムに、1又は2以上のデータユニットの複数の組を含むリカバリデータを記憶するステップと、作業データに含まれる複数のデータユニットの間の順序を維持するステップであって、順序が、複数のデータユニットのうちの1又は2以上を含む第1の連続する部分及び複数のデータユニットのうちの1又は2以上を含む第2の連続する部分を規定する、維持するステップと、複数の時間間隔のそれぞれに関して、時間間隔中に作業データからアクセスされたデータユニットを特定し、アクセスされたデータユニットを含む第1の連続する部分からの1又は2以上のデータユニット及びリカバリデータに既に追加された少なくとも1つのデータユニットを含む第2の連続する部分からの1又は2以上のデータユニットを含む2又は3以上のデータユニットの組をリカバリデータに追加するステップとを含む。
別の態様においては、概して、コンピューティングシステムのメモリモジュールとコンピューティングシステムのストレージシステムとの間のデータユニットの転送を管理するためのソフトウェアが、コンピュータ可読媒体上に非一時的形態で記憶される。ソフトウェアは、コンピューティングシステムに、メモリモジュールに、複数のデータユニットを含む作業データを記憶することと、ストレージシステムに、1又は2以上のデータユニットの複数の組を含むリカバリデータを記憶することと、作業データに含まれる複数のデータユニットの間の順序を維持することであって、順序が、複数のデータユニットのうちの1又は2以上を含む第1の連続する部分及び複数のデータユニットのうちの1又は2以上を含む第2の連続する部分を規定する、維持することと、複数の時間間隔のそれぞれに関して、時間間隔中に作業データからアクセスされたデータユニットを特定し、アクセスされたデータユニットを含む第1の連続する部分からの1又は2以上のデータユニット及びリカバリデータに既に追加された少なくとも1つのデータユニットを含む第2の連続する部分からの1又は2以上のデータユニットを含む2又は3以上のデータユニットの組をリカバリデータに追加することとを行わせるための命令を含む。
態様は、以下の利点のうちの1又は2以上を含む可能性がある。
一部のデータ処理システムにおいて、システムによって維持される情報は、処理が進むときに定期的に更新されているデータユニットの集合を含む作業データを含む。例えば、複合イベント処理(CEP,complex event processing)システムにおいては、イベントのストリームが処理され、集約される一方、同時に、結果に基づいてアクションが行われる。CEPシステムのための作業データの組は、異なる株式記号(stock symbol)に関連する価格などのデータの異なるそれぞれのストリームが受信されているエントリを表す複数のデータユニットに関する状態を含む可能性がある。特定のデータユニットによって表される状態は、一意キー(例えば、数値)によってアクセス可能である状態オブジェクトとして記憶される可能性がある。株式記号の例において、システムは、株式記号毎に1つの状態オブジェクトを維持する。各状態オブジェクトは、(例えば、株式に関連する値に関する)スカラ、ベクトル(例えば、履歴的な価格データ)などの値を記憶する1又は2以上のフィールドを有する可能性がある。一部の例において、状態オブジェクトのフィールドは、対応する株式記号に関するそれぞれの新しい価格値に関して増加的に更新される、集約関数(例えば、合計、カウント、最大、及び平均)などの適用された関数の結果を表す計算された値を記憶する可能性がある。システム内に状態オブジェクトの複数の集合が、存在する可能性があり、各集合が、フィールドの特定の組を有する状態オブジェクトを含む可能性がある。集合は、新しい状態オブジェクトが追加されること及び古い状態オブジェクトが削除されることによってサイズが変わる可能性があるが、集合内の変化するデータのほとんどは、状態オブジェクトのある一部に記憶された実際のデータが更新されることが原因である可能性がある。
一部の実装形態において、システムのための作業データは、揮発性メモリ(例えば、ダイナミックランダムアクセスメモリ(DRAM,Dynamic Random Access Memory))であってもよい多量の比較的高速なメモリに記憶される。作業データの永続性を保証するために、必要とされるリソース(例えば、データ転送時間及びデータストレージ空間)の観点でのコストが効率的に管理されることを同時に保証しながら、より安定しており、信頼性のあるストレージデバイス(例えば、ハードディスクドライブ、ソリッドステートドライブ、又はその他の不揮発性ストレージ媒体)に各状態オブジェクトの最新のバージョンを定期的に記憶するためのチェックポイント作成方式を使用することが特に有用である可能性がある。作業データは(上述の状態オブジェクトなどの)多数のデータユニットを含む可能性があるが、(「チェックポイント間隔」と呼ばれる)チェックポイント動作間の任意の所与の期間に、それらのデータユニットのわずかな部分が変わる可能性がある。チェックポイント作成方式は、最近変わったデータユニット及び最近変わっていないデータユニットを含め、各データユニットの最も最近の状態が障害の場合にリカバリされることを可能にすべきである。
そのようなシステムにおいて効率的にチェックポイントを作成するための技術は、特に、管理されるデータユニットの数が特別多いとき、難しい可能性がある。例えば、1つの筋書きにおいては、作業データがそれぞれ数バイトの約10億個のデータユニットの集合を含み、各チェックポイント間隔中に、1パーセントの約10分の1(100万個のデータユニット)が変更される。もちろん、各チェックポイント間隔で、変わったデータユニットの組は、異なる(しかし重なる可能性がある)組である可能性がある。リカバリのために、任意の特定のデータユニットの最も最近の状態だけが必要とされることがさらに仮定される。
第1の手法は、データユニットの集合全体をそれぞれのチェックポイントファイルへの各チェックポイント間隔でストレージデバイスに記憶することである。その集合内の各データユニットの最新の状態をリカバリするために、システムは、単に(1又は2以上の)チェックポイントファイルを読む可能性がある。この第1の手法は、データ転送のコストが法外に高い可能性があり、数ギガバイトの作業データ及び数秒のチェックポイント間隔では、ストレージデバイスにデータユニットのすべてを書き込むのに十分な時間さえない可能性がある。
第2の手法は、最後のチェックポイント間隔以降に変わったデータユニットだけをそれぞれのチェックポイントファイルへの各チェックポイント間隔でストレージデバイスに記憶することである。この第2の手法は各チェックポイントにおける転送時間を削減するが、各データユニットの最新の状態をリカバリするためには、第1のチェックポイントファイルが書き込まれてから変わらなかった可能性がある何らかのデータユニットの最新の状態がリカバリされることを保証するために、システムがチェックポイント作成プロセスの初めからあらゆるチェックポイントファイルを読む必要があるので、リカバリは、時間が進むにつれてより一層コストがかかるようになる。
第2の手法のあり得る改良は、システムがストレージデバイス内のチェックポイントファイルを走査し、最も最近記憶されたチェックポイントファイル内に表されたより新しい状態を有するデータユニットの古いコピーだけで構成されるチェックポイントファイルを削除するオフラインプロセスをシステムが実行することである。第2の手法の別の改良は、プロセスがチェックポイントファイルを走査し、データユニットのそのような古いコピーを削除するためにチェックポイントファイルを書き直し、少なくとも1つのより新しいチェックポイントファイルにそれぞれの削除されるデータユニットの少なくとも1つのより最近のコピーを残すことである。チェックポイントファイルは、ゼロ個のデータユニットに減るとき、ストレージ空間を解放するためにストレージデバイスから削除される可能性がある。この改良のいくつかの潜在的な課題は、(a)統合プロセスが、概してシステムをより信頼できなくする可能性がある、管理されるべき別のプロセスを導入すること、及び(b)統合プロセスが、チェックポイントファイル内に表されたチェックポイントデータを読む少なくとも1つの段階を含むが、チェックポイントデータを読み、書き込むいくつかの段階を含む可能性がある計算時間のコストを有することである。
第3の手法は、システムがあらゆるデータユニットに関して別々のチェックポイントファイルを記憶することである。各チェックポイント間隔において、特定の更新されたデータユニットに関して書き込まれた新しいチェックポイントファイルが、そのデータユニットに関する前のチェックポイントファイルを置き換える可能性がある。これは、(変更されたエントリだけが記憶される必要があるので)膨大なデータ転送のコストを避け、(ほとんど失効したデータのチェックポイントファイルが際限なく蓄積されないので)膨大なデータストレージのコストを避け、(これはクリーンアッププロセスを必要としないので)複雑性を減らす。しかし、この第3の手法では法外にコストがかかる可能性がある潜在的な理由は、ファイルがストレージ空間に関して比較的コストが高いことである。作業データがそれぞれ数バイトだけの数10億個のデータユニットからなる場合、ファイルシステムが、ファイル作成及び管理動作によって圧倒される可能性があり、ファイルシステムのメタデータのためのオーバーヘッドストレージ空間が、結局データユニットの実際の中身よりも多くのストレージ空間を消費することになる可能性がある。
以下で説明されるチェックポイントを作成するための技術の一部は、上記の手法及び改良の利点の少なくとも一部を有する。例えば、(ファイルシステムのオーバーヘッドを含む)データストレージのコスト及びデータ転送時間は、リカバリデータが同じチェックポイントファイル内に、潜在的に変更されるデータユニットの新しいコピーと(異なる)チェックポイントファイルに前に追加されたデータユニットの古いコピーとの両方を含む可能性があるという認識に基づいて制限される可能性がある。増加的に古いコピーをより新しいチェックポイントファイルにマイグレーションするこのプロセスは、チェックポイント間隔内に行われる追加的な仕事の量を制限し、古いチェックポイントファイルがデータユニットの冗長なバックアップコピーだけを記憶するので、それらの古いチェックポイントファイルが破棄され得るまで、最も最近アクセスされていないデータユニットのより古いコピーを徐々に統合するようにして行われ得る。この統合プロセスは、チェックポイントファイルを記憶する同じチェックポイント作成プロセスによって実行され、したがって、オフラインの統合プロセスよりも潜在的に単純で、より信頼性がある可能性がある。古いチェックポイントファイルを削除しなくても、同じチェックポイントファイル内の複数のデータユニット(すなわち、異なるキーを有するデータユニット)に関する最新の状態を記憶することが、特に、データユニットに割り振られた異なるキーの数が多い(例えば、約1,000を超えるか、約1,000,000を超えるか、又は約1,000,000,000を超える)とき、ファイルシステムのオーバーヘッドが原因である潜在的なデータストレージのコストを削減する。
本発明のその他の特徴及び利点は、以下の説明及び請求項から明らかになるであろう。
データ処理システムのブロック図である。 チェックポイント作成及びデータ処理動作のタイムラインを示す図である。 それぞれチェックポイント作成及びリカバリアルゴリズムの流れ図である。 作業データの状態の概略図である。 チェックポイントファイルの概略図である。 作業データの状態の概略図である。 経時的なポインタの動きの概略図である。
図1は、チェックポイント技術が使用され得るデータ処理システム100の例を示す。システム100は、ストレージデバイス又はオンラインデータソースなどのデータの1又は2以上のソースを含み得るデータソース102を含み、それらの1又は2以上のソースのそれぞれは、さまざまなフォーマット(例えば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、又はメインフレームによって使用されるネイティブフォーマット)のいずれかでデータを記憶又は提供し得る。実行環境104は、処理モジュール106(例えば、1又は2以上の処理コアを有する少なくとも1つの中央演算処理装置)及びメモリモジュール108(例えば、DRAM又はその他の形態の比較的高速なメモリ媒体などの1又は2以上のメモリデバイス)を含む。実行環境104は、例えば、UNIXオペレーティングシステムのバージョンなど好適なオペレーティングシステムの制御下の1又は2以上の汎用コンピュータでホストされる可能性がある。例えば、実行環境104は、ローカルの(例えば、対称型マルチプロセッシング(SMP,symmetric multi-processing)コンピュータなどのマルチプロセッサシステム)又はローカルに分散された(例えば、クラスタ若しくは超並列処理(MPP,massively parallel processing)システムとして接続された複数のプロセッサか、或いは遠隔の又は遠隔に分散された(例えば、ローカルエリアネットワーク(LAN,local area network)及び/若しくは広域ネットワーク(WAN,wide-area network)を介して接続された複数のプロセッサ)か、或いはこれらの任意の組合せかのいずれかの複数の中央演算処理装置(CPU,central processing unit)或いはプロセッサコアを用いるコンピュータシステムの構成を含むマルチノード並列コンピューティング環境を含む可能性がある。
データソース102を提供するストレージデバイスは、実行環境104のローカルにあり、例えば、実行環境104をホストするコンピュータに接続されたストレージ媒体110に記憶される可能性があり、又は実行環境104のリモートにあり、例えば、リモート接続(例えば、データフィードをストリーミングするサーバ接続)を介して実行環境104をホストするコンピュータと通信するリモートシステム(例えば、メインフレーム112)でホストされる可能性がある。実行環境104内のデータ処理から生成される出力データは、データソース102若しくはその他のストレージ媒体に記憶し直されるか、又はそうでなければ使用される可能性がある。
処理モジュール106は、さまざまな応用(例えば、複合イベント処理)のいずれかのためにデータソース102からのデータを処理し、処理中に、メモリモジュール108に記憶された作業データ114にアクセスする。また、処理モジュール106は、実行環境104内のアクセス可能なデータストレージシステム116(例えば、実行環境104をホストするコンピュータのハードドライブ)に作業データ114の一部を記憶するチェックポイント作成プロセスを周期的に実行する。チェックポイント作成プロセスは、作業データ114の特定の一部をそっくりそのまま記憶する可能性があり、一方、その他の部分は、最後のチェックポイント間隔以降に変わっていない特定のデータを重複してバックアップすることを避けるために選択的に記憶されるのみである。例えば、作業データ114は、チェックポイント作成プロセスがデータユニットの間で維持される順序に従って1組のチェックポイントファイル120に選択的に記憶する1組のデータユニットを含み得る。データ処理に関連するその他のインメモリ状態(in-memory state)などの作業データ114のその他の部分は、別個のチェックポイントファイルに記憶される可能性がある。
データユニットの間の順序は、より大きなデータ処理プログラムの一部である可能性があり又は作業データ114を管理する別個のプロセスであってもよい管理プログラムによって維持される。一部の実装形態において、データユニットは、メモリモジュール108において、最も最近アクセスされていない(LRA,least-recently-accessed)ものから最も最近アクセスされた(MRA,most-recently-accessed)ものに向かう順序で編成されたキー値対のエントリの連想配列内に記憶される。例えば、連想配列は、ハッシュテーブルとして実装される可能性があり、テーブルのエントリは、維持された順序に従って双方向連結リストポインタ構成を用いて一緒に数珠つなぎにされる可能性がある。テーブルの各エントリは、一意キーに基づいてアクセスされ、上述のキーの付いた状態オブジェクトなどの囲い込むデータオブジェクト内の(任意の数の変数の個々の値又はその他の状態情報を表す)そのキーに対応するデータを記憶することができる。管理プログラムは、テーブルのMRAエントリを指すMRAポインタと、テーブルのLRAエントリを指すLRAポインタとを維持する。管理プログラムは、最も最近チェックポイントを作成されていない(LRC,least-recently-checkpointed)ポインタ及び最も最近チェックポイントを作成された(MRC,most-recently-checkpointed)ポインタも維持する。また、テーブルの各エントリは、(もしあれば)そのエントリが最後に保存されたチェックポイントファイルに対応するチェックポイント番号(CPN,checkpoint number)を記憶する関連するプロパティを有する。これらのポインタ及びフィールドは、以下でより詳細に説明されるように、任意の所与のチェックポイント間隔においてエントリのうちのどれが新しいチェックポイントファイルにコピーされるのかを選択的に決定するために使用される。
エントリは、アクセスされる度に、最も最近アクセスされたエントリになる−−つまり、MRAポインタが、そのエントリのメモリアドレスに割り振られ、(例えば、テーブル内のその古いロケーションの隣接するエントリに関する)連結リスト内のその他のポインタが、適切に調節される。一部の実装形態において、エントリは、エントリのキーがそのエントリに記憶されたデータを取り出すために使用される場合に、又はエントリがテーブルに追加されたときにアクセスされたと考えられる。そのような実装形態においては、プログラムがエントリのデータを読むためにそのエントリのデータを変更することなく取り出すとき、エントリは、やはりアクセスされたと考えられる。一部の実装形態において、管理プログラムは、いつエントリが実際に変更された(例えば、最も最近変更されたか又は最も最近変更されていない)かに基づいて順序を維持し、エントリのデータを変更することなく読むことが順序に影響を与えると考えない。そのような実装形態は、例えば、各エントリのデータをそのエントリのアクセスによって変更した各エントリに関する「ダーティビット」を使用する可能性がある。下の例においては、アクセスがエントリに記憶されたデータを変更した可能性があると仮定する、より単純な方式が使用される。また、管理プログラムは、いつエントリがもはや必要とされず、テーブルから削除されるべきであるかを決定する。例えば、一部の実装形態においては、メモリ又は時間の制約によって決まるとき、最も最近アクセスされていないエントリをはじめとしてテーブルからエントリが削除される。
データ処理システム100は、定期的なチェックポイント間隔でチェックポイント作成プロセスを実行することによって増分チェックポイント作成(incremental checkpointing)方式を提供する。例えば、チェックポイント作成プロセスは、予め決められた量の時間の後、又はシステムが予め決められた数の入力レコードを受信した後にトリガされる可能性がある。チェックポイント作成プロセスは、トリガされるとき、最も最近のチェックポイント間隔中にアクセスされたデータユニットの「新しい」コピーと、最も最近のチェックポイント間隔中にアクセスされておらず、チェックポイントファイルに既に記憶されているデータユニットの同様の数の「古い」コピーとを有するチェックポイントファイルを記憶し、以下でより詳細に説明されるように、MRCポインタを調節する。チェックポイント作成プロセスによって実行されるこれらのチェックポイント作成動作は、管理プログラムがデータ処理動作のための作業データ114へのアクセスを管理し続ける間に行われる可能性があり、又はチェックポイント作成プロセスが実行される間、作業データ114へのアクセスを一時的に遮断する可能性がある。図2A及び2Bは、最も最近のチェックポイント間隔に関するチェックポイント処理動作のタイミングの例の(時間が右に向かって増加する)タイムラインを示す。図2Aの例において、チェックポイント作成プロセスは、チェックポイント間隔202Bの間継続するデータ処理動作204と同時に、前のチェックポイント間隔202Aの間に行われた活動の作業データの状態を保存するためのチェックポイント作成動作200を実行する。代替的に、図2Bの例において、チェックポイント作成プロセスは、チェックポイント間隔202Bの間にデータ処理動作204’が再開する前に、前のチェックポイント間隔202Aの間に行われた活動に関するチェックポイント作成動作200’を完了する。リカバリ中に作業データ114の適切な再構築を可能にするために、チェックポイント作成プロセスは、(例えば、各データユニットに関するフラグを用いて、又は別々のセクションのチェックポイントファイルにデータユニットを書き込んで)新しいコピーが古いコピーと区別されることを可能にするようにしてデータユニットを記憶する。チェックポイント作成プロセスは、古いデータユニットをより新しいチェックポイントファイルに書き込むので、以下でより詳細に説明されるように、特定の条件が満たされるとき、(より新しいチェックポイントファイルに今や記憶されている)それらのデータユニットを前に記憶したチェックポイントファイルを削除することができる。
管理プログラムは、通常のデータ処理中に作業データ114にアクセスするとき、次のチェックポイント間隔で行われるチェックポイント作成プロセスを準備するためにMRAポインタ及びMRCポインタを適切に更新する。例えば、連結リストとして編成された上述のエントリのテーブルに関して、MRCエントリがアクセスされる場合、MRCエントリは、テーブルの一端のMRAエントリになり、MRCポインタは、テーブルのLRA端の方に1段階進んだエントリを指すように調節される。次のチェックポイント作成プロセスが行われるとき、MRA(包含的)ポインタとMRC(排他的)ポインタとの間のエントリのみが、記憶される必要がある。MRCポインタとMRAポインタとの間のエントリがチェックポイントファイルに記憶された後、チェックポイント作成プロセスは、次のチェックポイント間隔を準備するために、MRCポインタをMRAポインタによって特定されるエントリに設定する。
リカバリ中のテーブルの適切な再構築に関連する作業データ114及びチェックポイントファイル120を管理する別の態様は、作業データ114から削除された(又はもはや使用されていないと示される)データユニット(例えば、テーブルのエントリ)を追跡することである。削除されたデータユニットを含め、データ処理のはじめから存在した各データユニットを曖昧性なく特定する目的で、一意識別子(ID,identifier)が、各データユニットに割り振られる。テーブルのエントリに関するキーは、一意であるので、削除されたエントリに関するキーが再利用されない限りこの一意IDとして使用され得る。そうではなく、キーが再利用される場合、別の一意IDが、各エントリに割り振られる可能性がある。以下の例においては、新しいエントリがテーブルに追加される度に増大する8バイトの整数が、この一意IDとエントリのキーとの両方として働く。チェックポイント間隔中にエントリがテーブルから削除されるとき、管理プログラムは、その管理プログラムがチェックポイントファイルの一部として記憶する、そのチェックポイント間隔に関する削除されたエントリのリストにそのエントリのIDを追加する。
したがって、特定のチェックポイント間隔に関するチェックポイントファイルは、以下の2種類のアイテムを記憶するデータ構造(例えば、テーブル)を含み得る。
(1)最後のチェックポイント間隔以降に削除されたエントリのキーを記憶するアイテム、及び
(2)最後のチェックポイント間隔以降にアクセスされたエントリ(キーと対応するデータとの両方)のコピーを記憶するアイテム。
1つのあり得るリカバリ手順は、あらゆるチェックポイントファイルをそれらの作成順に読むことを含む。各チェックポイントファイルに関して、処理モジュール106によって実行されるリカバリプロセスは、以下のステップを実行する。
(1)キーがチェックポイントファイルの種類(1)のアイテムに記憶されるエントリを削除し、それから、
(2)チェックポイントファイルの種類(2)のアイテムに記憶されたエントリを追加又は更新する。
これまでに記憶された第1のチェックポイントファイルからのあらゆるチェックポイントファイルを読むことは正しい挙動につながるが、リカバリプロセスが、リカバリ時にあらゆるチェックポイントファイルを読み、チェックポイント作成のはじめからテーブルへのあらゆる変更を再現するように要求されないようになされ得る改善がある。古いチェックポイントファイルに前にコピーされたエントリを新しいチェックポイントファイルに増分コピーすることによって、チェックポイント作成プロセスは、最後には、もはや必要とされないより古いチェックポイントファイルを削除することができる。これは、より迅速なリカバリプロセスを可能にし、データストレージのコストを削減する。
(最も最近完了したチェックポイント間隔の時点で)古いチェックポイントファイルが、テーブルの各エントリの最も最近の状態をリカバリするために必要ないかなる保存された状態も失わずに安全に削除され得ることを保証するために、管理プログラム及びチェックポイント作成プロセスは、一緒に、どの古いエントリがより新しいチェックポイントファイルにコピーされたかを追跡するために、LRCポインタがLRA端からMRA端に向かって資格のあるエントリを増加的にくまなく巡ることを可能にする。各チェックポイント間隔に関して、チェックポイント作成プロセスは、そのチェックポイント作成プロセスが保存するMRA端からの新しいエントリと同じだけ多くのLRA端からの古いエントリを保存する。このようにして、チェックポイント作成プロセスは、データ転送のコストを、最後のチェックポイント間隔以降にアクセスされたエントリの数に比例するように制限する。チェックポイント作成プロセスは、LRA端からの古いエントリをより新しいチェックポイントファイルに書き込むとき、それらの古いエントリが前に一部をなしていたチェックポイントファイルを、それらのチェックポイントファイルがより新しいチェックポイントファイルにまだコピーされていない古いエントリをさらに記憶しない限り削除することができる。そのとき、リカバリは、最も古いものから最も新しいものに向かう順序で残りのチェックポイントファイルを読むことによって最も最近のテーブルを復元することができる。
データ処理システム100がデータの処理と、メモリモジュール108に記憶された作業データ114の管理を開始するとき、最初のチェックポイント作成プロセスが新しいデータユニットのみを有する1又は2以上のチェックポイントファイル120の最初の組を構築する最初のいくつかのチェックポイント作成間隔が存在する可能性がある。例えば、この最初のチェックポイント作成プロセスは、MRCポインタ(排他的)とMRAポインタ(包含的)との間のテーブルのMRA端の新しいエントリを記憶する。LRCポインタは、この最初のチェックポイント作成プロセスのために使用されない。いくつかの最初のチェックポイントファイル120が記憶された後、新しいデータユニットと同様古いデータユニット(すなわち、テーブルのエントリ)も記憶する通常の(定常状態の)チェックポイント作成プロセスが始まる。通常のチェックポイント作成プロセスが始まるとき、LRCポインタは、最初、LRAポインタに設定される。そして、チェックポイント作成プロセスは、どちらがより小さいかに拘わらず、LRCポインタ(包含的)とMRCポインタ(排他的)との間の又はLRCポインタ(包含的)からチェックポイントを作成される新しいエントリの数までのテーブルのLRA端の限られた数の古いエントリを記憶する。
擬似コードで書かれた、チェックポイント作成プロセスによって使用されるアルゴリズムの以下の例。擬似コードは、擬似コードのステートメント及び関数の機能を説明するコメントを含む。擬似コードは、条件ステートメント(例えば、「if」ステートメント)及びループ(例えば、「while」及び「for」ループ)並びに(プレフィックス「//」が前に置かれる)コメントに関して標準的なCプログラミング言語の構文を用いる。この擬似コードのリストにおいて、MRAポインタは、変数「mra」内にあり、LRAポインタは、変数「lra」内にあり、MRCポインタは、変数「mrc」内にあり、LRCポインタは、変数「lrc」内にある。これらのポインタによって特定されるエントリの部分を表すために、これらの変数と共にドット表記が用いられる。特に、ドット表記「pointer.prev」及び「pointer.next」は、「pointer」によって指し示されるエントリからMRA端及びLRA端に1段階近いテーブル内の位置をそれぞれ表すために使用され、ドット表記「pointer.checkpoint_number」及び「pointer.key」及び「pointer.data」は、「pointer」によって指し示されるエントリのCPN及びキー及びデータをそれぞれ表すために使用される。ドット表記は、変数「item」によって表されるアイテムがプロパティ「<property>」を有するかどうかを試験するための「item.is_<property>()」など、変数に関連する特定の関数を呼び出すことを表すためにやはり使用される。以下のアルゴリズムが、各チェックポイント間隔に関してチェックポイント作成プロセスによって実行され得る。
// 削除するチェックポイントファイルの空のリストから開始する
files_to_remove = empty_list();
// 新しい(空の)チェックポイントファイルを開く
// (現在のチェックポイント番号を用いて命名される)
checkpoint_file = open_checkpoint_file(checkpoint_number);
// (第1の新しいエントリを見つけるために)MRCポインタを進める
mrc = mrc.prev;
// whileループが最も最近のチェックポイント間隔中に
// アクセスされたすべてのエントリ
// 及び等しい数の古いエントリをコピーする
while (mrc != mra) {
// 現在のチェックポイントファイルに現在の新しいエントリを書き込む
// 「New?」を真に設定する
write(checkpoint_file, checkpointed_entry(mrc, true));
// 現在の新しいエントリにチェックポイント番号を記録する
mrc.checkpoint_number = checkpoint_number;
// MRCポインタを進める
mrc = mrc.prev;
// LRCがMRCに追いついていない場合...
if (lrc != mrc) {
// ...現在のチェックポイントファイルにLRCエントリを書き込む
// 「New?」を偽に設定する
write(checkpoint_file, checkpointed_entry(lrc, false));
// LRCエントリがそのエントリの古いチェックポイントファイルにおいて
// 最も最近のエントリであった場合、そのファイルを削除する
if (lrc.checkpoint_number != lrc.prev.checkpoint_number)
files_to_remove.add(lrc.checkpoint_number);
// 新しいチェックポイント番号を記録する
lrc.checkpoint_number = checkpoint_number;
// LRCポインタを進める
lrc = lrc.prev;
}
}
// (whileループの出口から)MRCは今やMRAである
// LRCがMRCに追いついた場合、LRCをLRAに戻す
if (lrc == mrc)
lrc = lra;
// この間隔中に削除されたすべてのエントリのキーを用いて削除タイプのアイテムを記録する
for (key in removed_keys)
write(checkpoint_file, checkpointed_removal(key));
// LRCキーを用いてLRCタイプのアイテムを記録する
write(checkpoint_file, checkpointed_lrc(lrc.key));
// チェックポイント番号を進める
checkpoint_number++;
// 削除のために挙げられたファイルを削除する
for (file in files_to_remove)
remove_checkpoint_file(file);
上のアルゴリズムは、図3Aの流れ図にも表される。チェックポイント作成プロセスは、削除するチェックポイントファイルの空のリスト及び新しい空のチェックポイントファイル、並びに第1の新しいエントリへと進められたMRCポインタによってチェックポイントファイルを初期化する(300)。プロセスは、MRCポインタがMRAポインタと等しくなるまでループを続けるループ条件を有するwhileループ302を実行する。whileループ302において、プロセスは、現在のチェックポイントファイルに現在の新しいエントリを書き込み(304)、現在のMRCエントリに現在のCPNを記録し(306)、MRCポインタを進める(308)。プロセスは、LRCがMRCに達したかどうかを判定するために検査を行い(310)、達している場合、次のwhileループの反復のために元に戻り、達していない場合、先に進む。whileループ302内を進む場合、プロセスは、現在のチェックポイントファイルにLRCエントリを書き込む(312)。それから、プロセスは、LRCエントリがその古いチェックポイントファイルの最も最近のエントリであったかどうかを判定するために検査を行い(314)、最も最近のエントリであった場合、そのLRCエントリを削除されるチェックポイントファイルのリストに追加することによって、そのチェックポイントファイルに削除のための印を付ける(316)。そして、プロセスは、現在のLRCエントリに現在のCPNを記録し(318)、次のwhileループの反復に戻る前にLRCポインタを進める(320)。whileループ302を抜けた後、プロセスは、LRCがMRCに達したかどうかを判定するために検査を行い(322)、達している場合、LRCをLRAに戻す。そして、プロセスは、このチェックポイント間隔中に削除されたすべてのエントリのキーを用いて削除タイプのアイテムを記録し(326)、LRCタイプのアイテムを記録し(328)、CPNを進め(330)、削除のために印を付けられたチェックポイントファイルを削除する(332)。
以下は、擬似コードで書かれた、リカバリプロセスによって使用されるアルゴリズムの例である。以下のアルゴリズムが、障害の後にエントリのテーブルの最も最近の一貫性のある状態(つまり、最も最近チェックポイントを作成された状態)をリカバリするために実行され得る。
mra = null;
lra = null;
// 各チェックポイントファイル(最も古いものから最も新しいものまで)に関する外側のForループ
for (checkpoint_file in checkpoint_file_list) {
// チェックポイントファイルの各アイテムに関する内側のForループ
for (item in checkpoint_file) {
// アイテムが削除タイプである場合、指定されたキーを有するエントリを削除する
if (item.is_removal())
remove(item.key);
// アイテムがエントリタイプである場合、それを作成又は更新する
if (item.is_entry()) {
// 指定されたキーを有するエントリを発見し(及びテーブルから削除し)、
// 指定されたデータを用いてエントリを更新するか、
// 又は見つからない場合、指定されたキー/データを有するエントリを作成する
entry = get_entry(item.key, item.data);
// ポインタを設定することによってテーブルの適切な位置に更新された/作成されたエントリを挿入する
if (item.is_new()) {
entry.next = mra;
if (mra != null)
mra.prev = entry;
mra = entry;
} else {
if (lra == null)
lra = entry;
else {
lra.prev = entry;
entry.next = lra;
}
}
}
// アイテムがLRCキーを有するLRCタイプのアイテムである場合、LRCを設定する
if (item.is_lrc())
lrc = get_entry(item.key);
}
}
// MRCをMRAに設定する
mrc = mra;
上のアルゴリズムは、図3Bの流れ図にも表される。リカバリプロセスは、MRAポインタ及びLRAポインタをヌル値に初期化する(340)。そして、リカバリプロセスは、チェックポイントファイル(最も古いものから最も新しいものまで)に関して反復する外側のforループ344及び各チェックポイントファイルのアイテムに関して反復する内側のforループ346による入れ子にされたforループを実行する。内側のforループ346の中で、プロセスは、アイテムが削除タイプである場合、そのアイテムを削除する。それから、プロセスは、アイテムがエントリタイプであるかどうかを検査し(350)、エントリタイプである場合、指定されたキーを有するエントリを発見し(352)、指定されたデータを用いてエントリを更新するか、又はそのエントリが見つからない場合、指定されたキー及びデータを有するエントリを作成する。そして、更新又は作成されたエントリが、ポインタを設定することによってテーブルの適切な位置に挿入される(354)。挿入の後、又はアイテムがエントリタイプではない場合、プロセスは、そのアイテムがLRCタイプである場合、LRCを、指定されたキーを有するエントリに設定する(356)。そして、両方のforループが、次の反復のために元に戻る。両方のforループが終了した後、プロセスは、MRCをMRAに設定する。
チェックポイント作成プロセスによって使用され得るアルゴリズムのその他の例は、その他のステップを含む可能性がある。例えば、チェックポイントファイルが、圧縮される可能性がある。チェックポイントファイルは、チェックポイント間隔毎に1つに満たない物理ファイルに組み合わされる可能性がある。例えば、一定時間の動作によってチェックポイント作成プロセスがより新しいコピーを既に記憶させたテーブルのエントリのより古いコピーを削除することを可能にする周期的な移行があり得る。エントリの順序付けられたリストが、単なるアクセスではなくエントリの修正に基づいて維持される可能性がある。LRCポインタが進められているときに削除されることになるチェックポイントファイルのそれぞれのチェックポイント番号を記録するのではなく、プロセスは、単純に、最後のLRCエントリに関するチェックポイント番号よりも小さいチェックポイント番号に関連するすべてのチェックポイントファイルを削除する可能性がある。チェックポイントファイル内で新しいエントリ及び古いエントリをインターリーブし、フラグを用いてそれらのエントリを区別するのではなく、プロセスは、新しいエントリをそれらのエントリが書き込まれているときに数え、同じ(又は同様の)数の古いエントリを、新しいエントリが書き込まれた後にチェックポイントファイルの別々のセクションに書き込む可能性がある(例えば、新しいエントリのためのセクション、古いエントリのためのセクション、削除されたキーを有するアイテムのためのセクション、及びLRCエントリのキーを有するアイテムのためのセクション)。
図4A〜4Fは、エントリのテーブルの異なる状態及び作業データ114内のその他のインメモリ状態の例と、チェックポイントファイル120の異なる状態の例との図を示す。図4Aは、キー/データの対のエントリを、そのキー/データの対が記憶される最新のチェックポイントファイルを特定するCPNと一緒に記憶するテーブル400の一部と、MRAポインタ、LRAポインタ、MRCポインタ、及びLRCポインタの位置とを示す。図4Aは、削除されたキーのリスト402も示す。テーブル400及びリスト402は、チェックポイント作成プロセスがCPN201を有するチェックポイントファイルを生成する直前の状態に関して示される。簡単にするために、所与のキーに関するデータの内容は、示される例において単一の文字によって表される。
図4B及び4Cは、CPN201を有するチェックポイントファイルが生成される直前の(CPN193〜200を有する)既存のチェックポイントファイルの組の一部を示す。図4Bは、以前のチェックポイントファイル193〜194を示し、図4Cは、最新のチェックポイントファイル198〜200を示す。この例において、チェックポイントファイルは、テーブルの行としてアイテムを有するテーブルとして示される。各アイテムは、「Type」フィールドの3つのあり得る値、すなわち、E(エントリタイプ)、R(削除タイプ)、又はL(LRCタイプ)のうちの1つを有する。エントリタイプのアイテムは、「Key」フィールドのキー値、「Data」フィールドのデータ値、及びエントリが「新しい」エントリであるか又は「古い」エントリであるかをそれぞれ示す「New?」フィールドのT(真)か又はF(偽)かのどちらかを有する。上述のように、「古い」エントリは、以前のチェックポイントファイルに既に記憶され、より新しいチェックポイントファイルに今再び記憶されているエントリである。削除タイプのアイテム及びLRCタイプのアイテムは、「Key」フィールドのキー値を有するが、「Data」フィールド又は「New?」フィールドの値を持たない。
上の擬似コードで記述された例示的なアルゴリズムを実行して、図4Aに示されたテーブル400及びリスト402及び図4B〜4Cに示されたチェックポイントファイルで終わったチェックポイント間隔に関して、チェックポイント作成プロセスは、図4Dに示されたCPN201を有する新しいチェックポイントファイルを記憶する。また、チェックポイント作成プロセスは、CPN193を有するチェックポイントファイルに最後にチェックポイントを作成されたエントリからCPN194を有するチェックポイントファイルに最後にチェックポイントを作成されたエントリへのLRCポインタの遷移が、CPN193を有するチェックポイントファイル内に必要とされるエントリのいかなるコピーももはや存在しないことを示したので、CPN193を有するチェックポイントファイルを削除する。チェックポイント作成プロセスがCPN201を有するチェックポイントファイルを記憶した後、及び図4Aの状態以降にいずれかのエントリがアクセスされる機会を持つより前に、テーブル400及びリスト402は、図4Eに示された状態を有する。
CPN201を有するチェックポイントファイルの記憶後にシステム障害が起こる場合、システムは、(CPN194〜201を有する)残りのチェックポイントファイルのみをそれらのチェックポイントファイルのCPNの順序で処理することによって、リカバリプロセスを実行して(図4Eに示された)テーブル400及びリスト402の状態をリカバリすることができる。図4Fは、テーブル400が再構築されているときのテーブル400の状態の一連のスナップショットを示す。第1のチェックポイントファイル194の処理の後、及び各チェックポイントファイル198〜200の処理の後のテーブル400の状態の一部が、示される。そして、チェックポイントファイル201を処理した後、(図4Eに示された)テーブル400へのポインタを含む、テーブル400の完全にリカバリされた状態が復元される。MRAポインタ及びMRCポインタは、テーブル400の第1のエントリに設定され、LRAポインタは、テーブル400の最後のエントリに設定される。LRCポインタの値は、この例においてはチェックポイントファイル201であるチェックポイントファイルのうちの最後のチェックポイントファイルのLRCタイプのアイテムを用いて復元される。
図5は、各チェックポイント間隔に関する棒がテーブルの異なるセクションを表すために模様分けされるようにして、異なるポインタが一連の9つの異なるチェックポイント間隔の間に経時的にどのように移動するかの図を示す。経時的な異なるセクションの変化するサイズは、LRCポインタがMRCポインタに追いつき、LRAポインタに循環して戻ることを示す。この例においては、この一連のチェックポイント間隔中にアクセスされた安定した数のデータユニット及び安定したサイズのテーブルが存在する。それぞれの棒の下にあるのは、そのチェックポイント間隔の間に書き込まれるチェックポイントファイルに関する現在のCPNであり、現在のCPNの下にあるのは、(古いチェックポイントファイルが削除された後の)テーブルの状態を記憶する残りのアクティブなチェックポイントファイルのCPNのリストである。この例を含むほとんどの使用事例において、1組の残りのチェックポイントファイルは非常に安定しており、チェックポイント間隔毎に平均で1つのチェックポイントファイルが削除される。
上述のチェックポイント作成手法は、例えば、好適なソフトウェア命令を実行するプログラミング可能なコンピューティングシステムを用いて実装される可能性があり、又はフィールドプログラマブルゲートアレイ(FPGA,field-programmable gate array)などの好適なハードウェアで、若しくは何らかの混成の形態で実装される可能性がある。例えば、プログラミングされる手法において、ソフトウェアは、それぞれが少なくとも1つのプロセッサ、(揮発性及び/又は不揮発性メモリ及び/又はストレージ要素を含む)少なくとも1つのデータストレージシステム、(少なくとも1つの入力デバイス又はポートを用いて入力を受け取るため、及び少なくとも1つの出力デバイス又はポートを用いて出力を与えるための)少なくとも1つのユーザインターフェースを含む(分散、クライアント/サーバ、又はグリッドなどのさまざまなアーキテクチャであってもよい)1又は2以上のプログラミングされた又はプログラミング可能なコンピューティングシステムで実行される1又は2以上のコンピュータプログラムの手順を含み得る。ソフトウェアは、例えば、データフローグラフの設計、構成、及び実行に関連するサービスを提供する、より大きなプログラムの1又は2以上のモジュールを含む可能性がある。プログラムのモジュール(例えば、データフローグラフの要素)は、データリポジトリに記憶されたデータモデルに準拠するデータ構造又はその他の編成されたデータとして実装され得る。
ソフトウェアは、CD−ROM又は(例えば、汎用若しくは専用のコンピューティングシステム若しくはデバイスによって読み取り可能な)その他のコンピュータ可読媒体などの有形の非一時的媒体で提供されるか、或いはそのソフトウェアが実行されるコンピューティングシステムの有形の非一時的媒体にネットワークの通信媒体を介して配信される(例えば、伝播信号で符号化される)可能性がある。処理の一部又はすべては、専用のコンピュータで、又はコプロセッサ若しくはフィールドプログラマブルゲートアレイ(FPGA)若しくは専用の特定用途向け集積回路(ASIC,application-specific integrated circuit)などの専用のハードウェアを用いて実行される可能性がある。処理は、ソフトウェアによって指定された計算の異なる部分が異なる計算要素によって実行される分散された方法で実装される可能性がある。それぞれのそのようなコンピュータプログラムは、本明細書において説明された処理を実行するためにストレージデバイスの媒体がコンピュータによって読み取られるときにコンピュータを構成し、動作させるために、汎用又は専用のプログラミング可能なコンピュータによってアクセス可能なストレージデバイスのコンピュータ可読ストレージ媒体(例えば、ソリッドステートメモリ若しくは媒体、又は磁気式若しくは光学式媒体)に記憶されるか又はダウンロードされることが好ましい。本発明のシステムは、コンピュータプログラムで構成された有形の非一時的媒体として実装されると考えられる可能性もあり、そのように構成された媒体は、本明細書において説明された処理ステップのうちの1又は2以上を実行するために特定の予め定義された方法でコンピュータを動作させる。
本発明のいくつかの実施形態が、説明された。しかしながら、上述の説明は、添付の請求項の範囲によって規定される本発明の範囲を例示するように意図されており、限定するように意図されていないことを理解されたい。したがって、その他の実施形態も、添付の請求項の範囲内にある。例えば、本発明の範囲を逸脱することなくさまざまな修正がなされ得る。さらに、上述のステップの一部は、順序に依存しない可能性があり、したがって、説明された順序とは異なる順序で実行され得る。

Claims (24)

  1. 記憶されたデータを管理するためのコンピューティングシステムであって、
    複数のデータユニットを含む作業データを記憶するように構成されたメモリモジュールと、
    1又は2以上のデータユニットの複数の組を含むリカバリデータを記憶するように構成されたストレージシステムと、
    前記メモリモジュールと前記ストレージシステムとの間のデータユニットの転送を管理するように構成された少なくとも1つのプロセッサとを含み、管理することが、
    前記作業データに含まれる前記複数のデータユニットの間の順序を維持することであって、前記順序が、前記複数のデータユニットのうちの1又は2以上を含む第1の連続する部分及び前記複数のデータユニットのうちの1又は2以上を含む第2の連続する部分を規定する、維持すること、並びに
    複数の時間間隔のそれぞれに関して、前記時間間隔中に前記作業データからアクセスされたデータユニットを特定し、アクセスされたデータユニットを含む前記第1の連続する部分からの1又は2以上のデータユニット及び前記リカバリデータに既に追加された少なくとも1つのデータユニットを含む前記第2の連続する部分からの1又は2以上のデータユニットを含む2又は3以上のデータユニットの組を前記リカバリデータに追加することを含む、コンピューティングシステム。
  2. 管理することが、時間の複数の間隔のそれぞれに関して、作業データにやはり含まれるいずれかのデータユニットが1又は2以上のデータユニットの少なくとも1つのその他の組に記憶される1又は2以上のデータユニットの少なくとも1つの組をリカバリデータから削除することをさらに含む、請求項1に記載のコンピューティングシステム。
  3. 管理することが、複数の時間間隔のそれぞれに関して、前記時間間隔中に作業データから削除されたデータユニットを特定することをさらに含む、請求項1に記載のコンピューティングシステム。
  4. 第2の連続する部分が、削除されたデータユニットを除外する、請求項2又は3に記載のコンピューティングシステム。
  5. 管理することが、時間の複数の間隔のそれぞれに関して、削除されたデータユニットを特定する情報をリカバリデータに追加することをさらに含む、請求項2〜4のいずれかに記載のコンピューティングシステム。
  6. 時間間隔中に作業データからアクセスされたデータユニットを特定することが、前記時間間隔中に前記作業データからアクセスされたデータユニットを第1の連続する部分に移すことを含む、請求項1〜5のいずれかに記載のコンピューティングシステム。
  7. 作業データに含まれる複数のデータユニットの間の順序が、データユニットがどれだけ最近にアクセスされたかに基づく、請求項1〜6のいずれかに記載のコンピューティングシステム。
  8. 第1の連続する部分が、作業データに含まれる複数のデータユニットのすべてのうちの最も最近アクセスされたデータユニットと、自身の最も最近のアクセス以降にリカバリデータに追加されていない前記複数のデータユニットのサブセットのうちの最も最近アクセスされていないデータユニットとを含む、請求項1〜7のいずれかに記載のコンピューティングシステム。
  9. 第2の連続する部分が第1の連続する部分と重ならない、請求項1〜8のいずれかに記載のコンピューティングシステム。
  10. 第2の連続する部分が、自身の最も最近のアクセス以降にリカバリデータに追加された少なくとも1つのデータユニットを含む、請求項1〜9のいずれかに記載のコンピューティングシステム。
  11. 第2の連続する部分からの1又は2以上のデータユニットが、第1の連続する部分からの1又は2以上のデータユニット内のデータユニットの数の約半分と前記第1の連続する部分からの前記1又は2以上のデータユニット内のデータユニットの数の約2倍との間であるデータユニットの数に制限される、請求項1〜10のいずれかに記載のコンピューティングシステム。
  12. 第1の連続する部分が、第2の連続する部分のデータユニットのいずれよりも最近アクセスされたデータユニットを含む、請求項1〜11のいずれかに記載のコンピューティングシステム。
  13. データユニットがどれだけ最近にアクセスされたかを示す時間が、前記データユニットへの排他的なアクセスが開始された時間に対応する、請求項1に記載のコンピューティングシステム。
  14. データユニットがどれだけ最近にアクセスされたかを示す時間が、前記データユニットへの排他的なアクセスが終了した時間に対応する、請求項1に記載のコンピューティングシステム。
  15. 管理することが、障害に応じてリカバリデータを用いて作業データの状態を復元することをさらに含む、請求項1に記載のコンピューティングシステム。
  16. 作業データに含まれる複数のデータユニットが、それぞれ、キー値に関連付けられる、請求項1に記載のコンピューティングシステム。
  17. 作業データに含まれるデータユニットのうちの少なくとも1つが、前記データユニットに関連するキー値に基づいてアクセス可能な1又は2以上の値を含む、請求項16に記載のコンピューティングシステム。
  18. 作業データに含まれる異なるデータユニットに関連する異なるキー値の総数が、約1,000を超える、請求項16に記載のコンピューティングシステム。
  19. 時間間隔が互いに重ならない、請求項1に記載のコンピューティングシステム。
  20. 時間間隔中に作業データからアクセスされたデータユニットを特定することが、前記時間間隔中に前記作業データに追加されたデータユニット、前記時間間隔中に前記作業データから読まれたデータユニット、又は前記時間間隔中に前記作業データ内で更新されたデータユニットのうちの少なくとも1つを特定することを含む、請求項1に記載のコンピューティングシステム。
  21. メモリモジュールが揮発性メモリデバイスを含む、請求項1に記載のコンピューティングシステム。
  22. ストレージシステムが不揮発性ストレージデバイスを含む、請求項1に記載のコンピューティングシステム。
  23. コンピューティングシステムのメモリモジュールと前記コンピューティングシステムのストレージシステムとの間のデータユニットの転送を管理するための方法であって、
    前記メモリモジュールに、複数のデータユニットを含む作業データを記憶するステップと、
    前記ストレージシステムに、1又は2以上のデータユニットの複数の組を含むリカバリデータを記憶するステップと、
    前記作業データに含まれる前記複数のデータユニットの間の順序を維持するステップであって、前記順序が、前記複数のデータユニットのうちの1又は2以上を含む第1の連続する部分及び前記複数のデータユニットのうちの1又は2以上を含む第2の連続する部分を規定する、維持するステップと、
    複数の時間間隔のそれぞれに関して、前記時間間隔中に前記作業データからアクセスされたデータユニットを特定し、アクセスされたデータユニットを含む前記第1の連続する部分からの1又は2以上のデータユニット及び前記リカバリデータに既に追加された少なくとも1つのデータユニットを含む前記第2の連続する部分からの1又は2以上のデータユニットを含む2又は3以上のデータユニットの組を前記リカバリデータに追加するステップとを含む、方法。
  24. コンピューティングシステムのメモリモジュールと前記コンピューティングシステムのストレージシステムとの間のデータユニットの転送を管理するための、コンピュータ可読媒体上に非一時的形態で記憶されるソフトウェアであって、前記コンピューティングシステムに、
    前記メモリモジュールに、複数のデータユニットを含む作業データを記憶することと、
    前記ストレージシステムに、1又は2以上のデータユニットの複数の組を含むリカバリデータを記憶することと、
    前記作業データに含まれる前記複数のデータユニットの間の順序を維持することであって、前記順序が、前記複数のデータユニットのうちの1又は2以上を含む第1の連続する部分及び前記複数のデータユニットのうちの1又は2以上を含む第2の連続する部分を規定する、維持することと、
    複数の時間間隔のそれぞれに関して、前記時間間隔中に前記作業データからアクセスされたデータユニットを特定し、アクセスされたデータユニットを含む前記第1の連続する部分からの1又は2以上のデータユニット及び前記リカバリデータに既に追加された少なくとも1つのデータユニットを含む前記第2の連続する部分からの1又は2以上のデータユニットを含む2又は3以上のデータユニットの組を前記リカバリデータに追加することとを行わせるための命令を含む、ソフトウェア。
JP2016523189A 2013-10-21 2014-09-26 データユニットの集合のチェックポイント作成 Active JP6400695B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361893439P 2013-10-21 2013-10-21
US61/893,439 2013-10-21
PCT/US2014/057624 WO2015060991A1 (en) 2013-10-21 2014-09-26 Checkpointing a collection of data units

Publications (2)

Publication Number Publication Date
JP2016540285A JP2016540285A (ja) 2016-12-22
JP6400695B2 true JP6400695B2 (ja) 2018-10-03

Family

ID=51752165

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016523189A Active JP6400695B2 (ja) 2013-10-21 2014-09-26 データユニットの集合のチェックポイント作成

Country Status (9)

Country Link
US (1) US9354981B2 (ja)
EP (1) EP3060991B1 (ja)
JP (1) JP6400695B2 (ja)
KR (1) KR102179669B1 (ja)
CN (1) CN105659214B (ja)
AU (1) AU2014340626B2 (ja)
CA (1) CA2926935C (ja)
SG (1) SG11201603105VA (ja)
WO (1) WO2015060991A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017123849A1 (en) 2016-01-14 2017-07-20 Ab Initio Technology Llc Recoverable stream processing
US10146642B1 (en) * 2016-03-24 2018-12-04 EMC IP Holding Company LLC Fault resilient distributed computing using virtual machine continuous data protection
US10073746B2 (en) * 2016-07-12 2018-09-11 Advanced Micro Devices, Inc. Method and apparatus for providing distributed checkpointing

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03171242A (ja) * 1989-11-30 1991-07-24 Oki Electric Ind Co Ltd ファイルバックアップ方法
JP3148099B2 (ja) * 1995-05-31 2001-03-19 株式会社東芝 入出力制御方式及び入出力制御方法
US5819021A (en) 1995-12-11 1998-10-06 Ab Initio Software Corporation Overpartitioning system and method for increasing checkpoints in component-based parallel applications
US5712971A (en) 1995-12-11 1998-01-27 Ab Initio Software Corporation Methods and systems for reconstructing the state of a computation
JPH10240630A (ja) * 1997-02-28 1998-09-11 Toshiba Corp コンピュータシステム及び同システムに適用するメモリ制御方法
JP2000163294A (ja) * 1998-11-30 2000-06-16 Nec Corp データベース管理方法及びその装置並びにプログラムを記録した機械読み取り可能な記録媒体
US6584581B1 (en) 1999-12-06 2003-06-24 Ab Initio Software Corporation Continuous flow checkpointing data processing
JP2002132561A (ja) * 2000-10-20 2002-05-10 Fuji Xerox Co Ltd 差分バックアップ方法および装置
EP1298536A1 (en) * 2001-10-01 2003-04-02 Partec AG Distributed file system and method of operating a distributed file system
US7111136B2 (en) * 2003-06-26 2006-09-19 Hitachi, Ltd. Method and apparatus for backup and recovery system using storage based journaling
US7296008B2 (en) * 2004-08-24 2007-11-13 Symantec Operating Corporation Generation and use of a time map for accessing a prior image of a storage device
US7577807B2 (en) * 2003-09-23 2009-08-18 Symantec Operating Corporation Methods and devices for restoring a portion of a data store
US7406489B2 (en) * 2005-01-28 2008-07-29 Solid Information Technology Oy Apparatus, system and method for persistently storing data in a data synchronization process
US7865684B2 (en) 2005-06-27 2011-01-04 Ab Initio Technology Llc Managing message queues
JP5021929B2 (ja) * 2005-11-15 2012-09-12 株式会社日立製作所 計算機システム及びストレージシステムと管理計算機並びにバックアップ管理方法
US8229902B2 (en) 2006-11-01 2012-07-24 Ab Initio Technology Llc Managing storage of individually accessible data units
JP5008991B2 (ja) * 2007-01-24 2012-08-22 株式会社日立製作所 データのリカバリを制御する装置及び方法
JP2009169515A (ja) 2008-01-11 2009-07-30 Denso Corp コンピュータシステム及びシステム回復装置
US8392370B1 (en) 2008-03-28 2013-03-05 Emc Corporation Managing data on data storage systems
US8539179B1 (en) * 2009-03-31 2013-09-17 Symantec Corporation Methods and systems for creating full backups
US9021299B2 (en) 2011-02-18 2015-04-28 Ab Initio Technology Llc Restarting processes
US8370310B2 (en) * 2011-03-04 2013-02-05 Microsoft Corporation Managing database recovery time
US8949517B2 (en) * 2011-10-05 2015-02-03 Lsi Corporation Self-journaling and hierarchical consistency for non-volatile storage
US9747293B2 (en) * 2012-02-28 2017-08-29 Deep Information Sciences, Inc. Method and system for storage and retrieval of information
US9185235B2 (en) 2012-08-02 2015-11-10 Ab Initio Technology Llc Aggregating data in a mediation system
US9116819B2 (en) * 2012-10-17 2015-08-25 Datadirect Networks, Inc. Reducing metadata in a write-anywhere storage system

Also Published As

Publication number Publication date
SG11201603105VA (en) 2016-05-30
KR102179669B1 (ko) 2020-11-17
US20150113325A1 (en) 2015-04-23
CA2926935C (en) 2022-05-31
CA2926935A1 (en) 2015-04-30
JP2016540285A (ja) 2016-12-22
EP3060991B1 (en) 2017-09-06
KR20160074587A (ko) 2016-06-28
WO2015060991A1 (en) 2015-04-30
US9354981B2 (en) 2016-05-31
CN105659214A (zh) 2016-06-08
AU2014340626B2 (en) 2019-05-16
EP3060991A1 (en) 2016-08-31
CN105659214B (zh) 2019-01-15

Similar Documents

Publication Publication Date Title
JP6118515B2 (ja) 連想メモリ更新のためのシステム
US10891264B2 (en) Distributed, scalable key-value store
CN104040481B (zh) 用于融合、存储和检索增量式备份数据的方法和系统
CN103092905B (zh) 使用虚拟文件数据对象的列式数据库
US6898688B2 (en) Data management appliance
US7340645B1 (en) Data management with virtual recovery mapping and backward moves
US8060713B1 (en) Consolidating snapshots in a continuous data protection system using journaling
WO2017190604A1 (zh) 数据库系统中事务恢复的方法与数据库管理系统
EP2590078B1 (en) Shadow paging based log segment directory
US10089320B2 (en) Method and apparatus for maintaining data consistency in an in-place-update file system with data deduplication
JP6387399B2 (ja) データ操作のための、メモリ及びストレージ空間の管理
CN109871386A (zh) 非易失性存储器中的多版本并发控制(mvcc)
US20140310253A1 (en) Out-of-order execution of strictly-ordered transactional workloads
CN111949445B (zh) 一种增量备份数据存储方法、装置、设备、产品
US20170212902A1 (en) Partially sorted log archive
JP6400695B2 (ja) データユニットの集合のチェックポイント作成
JP6293709B2 (ja) ストレージシステムおよびストレージシステム用プログラム
AU2014340626A1 (en) Checkpointing a collection of data units
US20140250078A1 (en) Multiphase deduplication
Brandstatter et al. Novoht: a lightweight dynamic persistent NoSQL key/value store
CN111026764B (zh) 一种数据存储方法、装置、电子产品及存储介质
US12111734B2 (en) Protection groups for backing up cloud-based key-value stores
Liu et al. Khronos: A Real-Time Indexing Framework for Time Series Databases on Large-Scale Performance Monitoring Systems
KR20180027993A (ko) 전자 장치 및 제어 방법
JPH0259837A (ja) データリカバリ処理方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170823

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180727

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: 20180808

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180905

R150 Certificate of patent or registration of utility model

Ref document number: 6400695

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250