(57)【要約】      （修正有）【課題】チェックポイントバッファにおいてアクションを実行した結果を保存する。【解決手段】入力データのバッチ処理は、複数のレコードを含むバッチを読み取ること及びデータフローグラフを通じてバッチを渡すことを含む。チェックポイント処理は、処理を開始するときにチェックポイントバッファを開き２０７、２０８、ワークのユニットに対するアクションを実行した結果が既に保存されていれば２２５；ＹＥＳ、アクションを再び実行することなく、保存されている結果をワークのユニットの処理を完了するために用い２５０、ワークのユニットに対するアクションを実行した結果が保存されていなければ、ワークのユニットの処理を完了するためにアクションを実行し２３０、チェックポイントバッファにおいてアクションを実行した結果を保存する２４０。【選択図】図２
2015143999.tif 000002
【特許請求の範囲】
【請求項１】
一または複数のデータソースからの複数のレコードを含む入力データのバッチを読み取ること、および、
コンポーネント間のデータのフローを表すリンクによって接続された前記コンポーネントを表す２以上のノードを含むデータフローグラフであって、少なくとも１つであり且つ全てよりも少ないコンポーネントが前記レコードの一または複数に関連付けられたワークの複数のユニットのそれぞれに対するアクションについてのチェックポイント処理を含むデータフローグラフ、を通じて前記バッチを渡すこと、を含む、
データのバッチ処理をフォールトトレラントに行う方法において、
前記チェックポイント処理は、
前記バッチの処理を開始するときに不揮発性メモリに格納されたチェックポイントバッファを開くこと、
前記バッチからのワークの各ユニットについて、前記チェックポイントバッファにおいてワークの前記ユニットに対する前記アクションを実行した結果が既に保存されていれば、前記アクションを再び実行することなくワークの前記ユニットの処理を完了するために保存されている結果を用いること、または、前記チェックポイントバッファにワークの前記ユニットに対する前記アクションを実行した結果が保存されていなければ、ワークの前記ユニットの処理を完了するために前記アクションを実行して前記チェックポイントバッファにおいて前記アクションを実行した結果を保存すること、を含む、
データのバッチ処理をフォールトトレラントに行う方法。
【請求項２】
請求項１に記載の方法において、
前記アクションがリモートサーバとの通信を含む、データのバッチ処理をフォールトトレラントに行う方法。
【請求項３】
請求項２に記載の方法において、
前記アクションを実行した結果が、ワークの前記ユニットについての前記リモートサーバとの通信からの情報を含む、データのバッチ処理をフォールトトレラントに行う方法。
【請求項４】
請求項１に記載の方法であって、
前記バッチの処理が完了したときに前記チェックポイントバッファを消去することを更に含む、データのバッチ処理をフォールトトレラントに行う方法。
【請求項５】
請求項２に記載の方法において、
前記リモートサーバとの通信が通知される、データのバッチ処理をフォールトトレラントに行う方法。
【請求項６】
請求項２に記載の方法において、
前記リモートサーバとの通信の結果が、揮発性のメモリに格納され、トリガイベントが生じたときに前記チェックポイントバッファにグループ形式にて保存される、データのバッチ処理をフォールトトレラントに行う方法。
【請求項７】
請求項６に記載の方法において、
前記トリガイベントが、チェックポイントマネージャからの信号である、データのバッチ処理をフォールトトレラントに行う方法。
【請求項８】
請求項６に記載の方法において、
前記トリガイベントが、前記チェックポイントバッファへの最後の書き込みからのレコードの処理の数である、データのバッチ処理をフォールトトレラントに行う方法。
【請求項９】
請求項６に記載の方法において、
前記トリガイベントが、前記チェックポイントバッファへの最後の書き込みからの時間の経過である、データのバッチ処理をフォールトトレラントに行う方法。
【請求項１０】
請求項１に記載の方法において、
前記チェックポイント処理を含むコンポーネントが、複数の処理デバイス上にて並行して実行される、データのバッチ処理をフォールトトレラントに行う方法。
【請求項１１】
請求項１０に記載の方法において、
前記複数の並行した処理デバイス間のデータレコードの割り当てが前記バッチの実行の間にてコンシステントであり、それぞれの処理デバイスが独立したチェックポイントバッファを維持する、データのバッチ処理をフォールトトレラントに行う方法。
【請求項１２】
請求項１０に記載の方法において、
前記複数の並行した処理デバイス間のデータレコードの割り当てが動的であり、前記処理デバイスが、シェアされた不揮発性メモリに格納された単一のチェックポイントバッファへのアクセスを、チェックポイントマネージャによって制御される前記チェックポイントバッファへの書き込みとともに、シェアする、データのバッチ処理をフォールトトレラントに行う方法。
【請求項１３】
請求項１に記載の方法であって、
フォールト状態が生じた後に前記データフローグラフにおける全ての前記コンポーネントを再スタートすること、
一または複数のデータソースからの複数のレコードを含む入力データの前記バッチを読み取ること、
前記データフローグラフを通じて前記バッチを渡すこと、
を更に含む、データのバッチ処理をフォールトトレラントに行う方法。
【請求項１４】
請求項１３に記載の方法において、
前記アクションがリモートサーバと通信することを含む、データのバッチ処理をフォールトトレラントに行う方法。
【請求項１５】
データのバッチ処理をフォールトトレラントに行うためのコンピュータプログラムを格納するコンピュータ読み取り可能な媒体において、前記コンピュータプログラムは、
一または複数のデータソースからの複数のレコードを含む入力データのバッチを読み取ること、および、
コンポーネント間のデータのフローを表すリンクによって接続された前記コンポーネントを表す２以上のノードを含むデータフローグラフであって、少なくとも１つであり且つ全てよりも少ないコンポーネントが前記レコードの一または複数に関連付けられたワークの複数のユニットのそれぞれに対するアクションについてのチェックポイント処理を含むデータフローグラフ、を通じて前記バッチを渡すこと、
をコンピュータに実行させる命令を含み、
前記チェックポイント処理は、
前記バッチの処理を開始するときに不揮発性メモリに格納されたチェックポイントバッファを開くこと、
前記バッチからのワークの各ユニットについて、前記チェックポイントバッファにおいてワークの前記ユニットに対する前記アクションを実行した結果が既に保存されていれば、前記アクションを再び実行することなくワークの前記ユニットの処理を完了するために保存されている結果を用いること、または、前記チェックポイントバッファにワークの前記ユニットに対する前記アクションを実行した結果が保存されていなければ、ワークの前記ユニットの処理を完了するために前記アクションを実行して前記チェックポイントバッファにおいて前記アクションを実行した結果を保存すること、を更に含む、
コンピュータ読み取り可能な媒体。
【請求項１６】
一または複数のデータソースからの複数のレコードを含む入力データのバッチを読み取る手段、および、
コンポーネント間のデータのフローを表すリンクによって接続された前記コンポーネントを表す２以上のノードを含むデータフローグラフであって、少なくとも１つであり且つ全てよりも少ないコンポーネントが前記レコードの一または複数に関連付けられたワークの複数のユニットのそれぞれに対するアクションについてのチェックポイント処理を含むデータフローグラフ、を通じて前記バッチを渡す手段、を含む、
データのバッチ処理をフォールトトレラントに行うためのシステムにおいて、
前記チェックポイント処理は、
前記バッチの処理を開始するときに不揮発性メモリに格納されたチェックポイントバッファを開くこと、
前記バッチからのワークの各ユニットについて、前記チェックポイントバッファにおいてワークの前記ユニットに対する前記アクションを実行した結果が既に保存されていれば、前記アクションを再び実行することなくワークの前記ユニットの処理を完了するために保存されている結果を用いること、または、前記チェックポイントバッファにワークの前記ユニットに対する前記アクションを実行した結果が保存されていなければ、ワークの前記ユニットの処理を完了するために前記アクションを実行して前記チェックポイントバッファにおいて前記アクションを実行した結果を保存すること、を含む、
データのバッチ処理をフォールトトレラントに行うためのシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本記載は、データのバッチ処理をフォールトトレラントに行うことに関連する。
【背景技術】
【０００２】
複雑な計算は、ノード（または頂点）に関連付けられた計算のコンポーネントと、そのコンポーネント間のデータフローに関連付けられたノード間のリンク（または弧、辺）と、を有する有向グラフ（「データフローグラフ」とも称呼される。）として表現し得ることが多い。そのコンポーネントは、データを処理するデータ処理コンポーネントと、データフローのソースまたはシンクとして機能するコンポーネントと、を含む。データ処理コンポーネントは、データの処理を複数のステージにて並行して処理が可能なパイプライン型システムを形成する。このようなグラフベース計算を実行するシステムは、米国特許第５，９６６，０７２号「グラフとして表現される計算の実行」に記載されている。いくつかのケースにおいて、グラフベース計算は、入力データのフローを受け取り、データの連続するフローを処理し、計算がシャットダウンされるまで一または複数のコンポーネントからの結果を無制限に提供する、ように構成される。いくつかのケースにおいて、グラフベース計算は、入力データのバッチを受け取り、データのバッチを処理し、そのバッチへの結果を提供し、バッチが処理された後にシャットダウンまたはアイドル状態に戻る、ように構成される。
【発明の概要】
【０００３】
一の態様において、一般に、データのバッチ処理をフォールトトレラントに行う方法は、一または複数のデータソースからの複数のレコードを含む入力データのバッチを読み取ること、および、コンポーネント間のデータのフローを表すリンクによって接続された前記コンポーネントを表す２以上のノードを含むデータフローグラフであって、少なくとも１つであり且つ全てよりも少ないコンポーネントが前記レコードの一または複数に関連付けられたワークの複数のユニットのそれぞれに対するアクションについてのチェックポイント処理を含むデータフローグラフ、を通じて前記バッチを渡すこと、を含む。前記チェックポイント処理は、前記バッチの処理を開始するときに不揮発性メモリに格納されたチェックポイントバッファを開くこと、前記バッチからのワークの各ユニットについて、前記チェックポイントバッファにおいてワークの前記ユニットに対する前記アクションを実行した結果が既に保存されていれば、前記アクションを再び実行することなくワークの前記ユニットの処理を完了するために保存されている結果を用いること、または、前記チェックポイントバッファにワークの前記ユニットに対する前記アクションを実行した結果が保存されていなければ、ワークの前記ユニットの処理を完了するために前記アクションを実行して前記チェックポイントバッファにおいて前記アクションを実行した結果を保存すること、を含む。
【０００４】
いくつかの態様には、後述する特性の一または複数が含まれ得る。
【０００５】
前記アクションが、リモートサーバとの通信を含む。
【０００６】
前記アクションを実行した結果が、ワークの前記ユニットについての前記リモートサーバとの通信からの情報を含む。
【０００７】
前記方法が、前記バッチの処理が完了したときに前記チェックポイントバッファを消去することを更に含む。
【０００８】
前記リモートサーバとの通信が通知される。
【０００９】
前記リモートサーバとの通信の結果が、揮発性のメモリに格納され、トリガイベントが生じたときに前記チェックポイントバッファにグループ形式にて保存される。
【００１０】
前記トリガイベントが、チェックポイントマネージャからの信号である。
【００１１】
前記トリガイベントが、前記チェックポイントバッファへの最後の書き込みからのレコードの処理の数である。
【００１２】
前記トリガイベントが、前記チェックポイントバッファへの最後の書き込みからの時間の経過である。
【００１３】
前記チェックポイント処理を含むコンポーネントが、複数の処理デバイス上にて並行して実行される。
【００１４】
前記複数の並行した処理デバイス間のデータレコードの割り当てが前記バッチの実行の間にてコンシステントであり、それぞれの処理デバイスが独立したチェックポイントバッファを維持する。
【００１５】
前記複数の並行した処理デバイス間のデータレコードの割り当てが動的であり、前記処理デバイスが、シェアされた不揮発性メモリに格納された単一のチェックポイントバッファへのアクセスを、チェックポイントマネージャによって制御される前記チェックポイントバッファへの書き込みとともに、シェアする。
【００１６】
前記方法が、フォールト状態が生じた後に前記データフローグラフにおける全ての前記コンポーネントを再スタートすること、一または複数のデータソースからの複数のレコードを含む入力データの前記バッチを読み取ること、前記データフローグラフを通じて前記バッチを渡すこと、を更に含む。
【００１７】
前記アクションが、リモートサーバと通信することを含む。
【００１８】
別の態様において、一般に、コンピュータ読み取り可能な媒体は、データのバッチ処理をフォールトトレラントに行うためのコンピュータプログラムを格納する。前記コンピュータプログラムは、一または複数のデータソースからの複数のレコードを含む入力データのバッチを読み取ること、および、コンポーネント間のデータのフローを表すリンクによって接続された前記コンポーネントを表す２以上のノードを含むデータフローグラフであって、少なくとも１つであり且つ全てよりも少ないコンポーネントが前記レコードの一または複数に関連付けられたワークの複数のユニットのそれぞれに対するアクションについてのチェックポイント処理を含むデータフローグラフ、を通じて前記バッチを渡すこと、
をコンピュータに実行させる命令を含む。前記チェックポイント処理は、前記バッチの処理を開始するときに不揮発性メモリに格納されたチェックポイントバッファを開くこと、前記バッチからのワークの各ユニットについて、前記チェックポイントバッファにおいてワークの前記ユニットに対する前記アクションを実行した結果が既に保存されていれば、前記アクションを再び実行することなくワークの前記ユニットの処理を完了するために保存されている結果を用いること、または、前記チェックポイントバッファにワークの前記ユニットに対する前記アクションを実行した結果が保存されていなければ、ワークの前記ユニットの処理を完了するために前記アクションを実行して前記チェックポイントバッファにおいて前記アクションを実行した結果を保存すること、を更に含む。
【００１９】
別の態様において、一般に、データのバッチ処理をフォールトトレラントに行うためのシステムは、一または複数のデータソースからの複数のレコードを含む入力データのバッチを読み取る手段、および、コンポーネント間のデータのフローを表すリンクによって接続された前記コンポーネントを表す２以上のノードを含むデータフローグラフであって、少なくとも１つであり且つ全てよりも少ないコンポーネントが前記レコードの一または複数に関連付けられたワークの複数のユニットのそれぞれに対するアクションについてのチェックポイント処理を含むデータフローグラフ、を通じて前記バッチを渡す手段、を含む。前記チェックポイント処理は、前記バッチの処理を開始するときに不揮発性メモリに格納されたチェックポイントバッファを開くこと、前記バッチからのワークの各ユニットについて、前記チェックポイントバッファにおいてワークの前記ユニットに対する前記アクションを実行した結果が既に保存されていれば、前記アクションを再び実行することなくワークの前記ユニットの処理を完了するために保存されている結果を用いること、または、前記チェックポイントバッファにワークの前記ユニットに対する前記アクションを実行した結果が保存されていなければ、ワークの前記ユニットの処理を完了するために前記アクションを実行して前記チェックポイントバッファにおいて前記アクションを実行した結果を保存すること、を含む。
【００２０】
態様は、一または複数の後述される効果を有する。すなわち、前記データフローグラフにおける異なるコンポーネント間の通信に関連するチェックポイントの必要を排除することができる。フォールトリカバリの間の複数のステップのバッチ処理における複雑な又はコストのかかるステップの繰り返しが、全体のパイプライン型システムのチェックポイントを設ける複雑さ又はコストなしに、選択的に回避される。例えば、この方法は、課金サービスへの繰り返しの呼び出しを避けることによってコストを抑えるように用いられ得る。
【００２１】
本発明の他の特性、目的および利点は、同記述、同図面および請求の範囲から理解され得る。
【図面の簡単な説明】
【００２２】
【図１】入出力チェックポイントを設けたバッチデータ処理システムのブロック図である。
【図２】チェックポイント処理のフローチャートである。
【図３】並列処理において入出力チェックポイント処理を設けたバッチデータ処理システムのブロック図である。
【図４】並列処理においてチェックポイントマネージャを設けるとともに入出力チェックポイント処理を設けたバッチデータ処理システムのブロック図である。
【発明を実施するための形態】
【００２３】
グラフベースデータ処理システムは、データフローグラフにおける１つのコンポーネントの中間的な結果を、フォールト状態に起因して入力データのバッチ処理が再スタートせしめられる場合にそれらを検索および再利用可能なバッファに保存することを含む、フォールトトレラントな入力データのバッチ処理に適用され得る。
【００２４】
図１は、データ処理システム１００の実施例である。データは、一または複数のデータソースから一または複数のデータシンクへのデータフローを処理するデータフローグラフのデータ処理コンポーネントを順に通過する。データフローグラフにおける種々のデータ処理コンポーネントは異なる処理デバイスにて実行される処理によって実装され得る。または、複数のデータ処理コンポーネントは単一の処理デバイスにおいて実行される一または複数の処理によって実装されてもよい。データは、システム１００によって処理される入力データレコードのセットを特定するバッチにおいて処理されてもよい。
【００２５】
システム１００によるデータのバッチ処理は、ユーザ入力またはタイマの終了などの他のイベントによって始動されてもよい。データのバッチ処理が開始されたとき、入力データレコードが一または複数の入力データソースから読み込まれる。例えば、入力データは、データストレージコンポーネント１１０によって表されるようなコンピュータ読み取り可能な記憶装置に格納されている一または複数のファイルから読み込まれる。入力データレコードは、データストレージコンポーネント１１２によって表されるようなサーバにて実行されているデータベースから読み込まれてもよい。結合コンポーネント１２０は、複数のデータソースから順にデータ（例えば、レコード）を読み込み、その入力データを個別のワークユニットの順に配列する。ワークユニットは、例えば、入力レコードに基づく所定のフォーマットにて格納されているレコードを表してもよく、例えば、処理されるトランザクションを表してもよい。いくつかの実装において、各ワークユニットは、処理されたワークユニットの数のようなバッチ内にて固有の番号によって特定されてもよい。ワークユニットは、データフローグラフにおける次のコンポーネントに順に渡される。
【００２６】
システム１００を実装するデータフローグラフの実施例も、データ処理コンポーネント１３０および１４０を含んでいる。データ処理コンポーネント１３０は、通常はバッチ処理の過程にて不揮発性メモリにその処理の状態情報を保存するチェックポイント処理を含む。フォールト状態が生じてバッチが再スタートされる必要があるとき、チェックポイント処理されたコンポーネント１３０は、バッチが繰り返し実行される間に繰り返されるべき処理の量を減少させるべく、保存された状態情報にアクセスする。チェックポイント処理は、不揮発性メモリのリソースを用いることと、データ処理コンポーネント１３０に複雑さを追加することと、によってフォールトトレランスをもたらす。データ処理コンポーネント１４０は、チェックポイント処理を設けていないコンポーネントである。他のデータフローグラフは、より多くの又はより少ないデータ処理コンポーネントを含み得る。必要なだけの数のデータ処理コンポーネントが、チェックポイント処理を設けるように構成されればよい。典型的には、フォールト状態の場合にシステム１００におけるコストの高い処理ステップがバッチにおける全てのワークユニットについて繰り返される必要がないように、ディレイまたは他のメトリックの点にて高いコストを伴うコンポーネントがチェックポイント処理を含むように構成される。
【００２７】
データ処理コンポーネント１３０は、リモートサーバ１５０にアクセスするステップを含む。処理された各ワークユニットについて、第１処理コンポーネント１３０は、リモートサーバ１５０に要求を送り、リモートサーバから結果（データベースからのデータ）を受け取る。この種の処理は、リモートサーバとの通信において生じるネットワークディレイまたはリモートサーバにて提供されるサービスの監視を含む種々の理由によってコストがかかる。結果を受け取った後、コンポーネント１３０は、次のデータ処理コンポーネント１４０への出力を生成する。コンポーネント１３０はチェックポイント処理を含むように構成されているので、ワークユニットへの出力を次のデータ処理コンポーネント１４０に渡して処理を完了して次のワークユニットの処理を開始する前に、リモートサーバ１５０からの結果を処理状態情報の一部として保存する。処理状態情報は、チェックポイント処理を実行している処理デバイスの揮発性メモリに一時的に保存されてもよい。フォールト状態の場合に利用可能であるように、一定の時間毎に、一または複数のワークユニットについての処理状態情報は不揮発性メモリに保存されたチェックポイントバッファに書き込まれる。
【００２８】
ワークユニットがデータフローグラフのデータ処理コンポーネントを通過して前進すると、各ワークユニットに関連する最終結果はデータシンク１６０に移動する。最終結果がデータシンク１６０に移動される前に、ワークユニットは個別に移動され得るし、または、いくつかの実装においてワークユニットは最終結果をインクリメンタルに更新するために用いられ得るし、または、蓄積され得る（例えば、待ち行列をなすように）。データシンク１６０は、例えば、ワークユニットまたはワークユニットに基づいて蓄積された出力を記憶するデータストレージコンポーネントであり得るし、例えば、データシンク１６０はワークユニットがパブリッシュされる待ち行列であり得るし、最終結果を受け取るための他の種のシンクであり得る。バッチにおける全てのワークユニットの結果がデータシンク１６０に移動されたとき、バッチ処理は終了する。この時点にて、データフローグラフのコンポーネントに関連付けられた処理は終了される。チェックポイント処理されたコンポーネントに関連するチェックポイント処理は、終了ルーチンの一部として、チェックポイントバッファを消去してもよい。
【００２９】
図２は、チェックポイント処理されたコンポーネントをチェックポイント処理する処理２００の実施例のフローチャートである。処理２００は、例えばデータフローグラフを通じたバッチ処理を実装しているソフトウェアからの外部呼び出しがあったとき、２０１から処理を開始する。処理開始には、チェックポイント処理されたコンポーネントが実行される処理デバイスにおける処理２００について揮発性メモリを割り当てること及び他の必要なリソースをリザーブすることが含まれ得る。処理２００は、次に、２０５にてこの処理に関連するチェックポイントバッファが既に不揮発性メモリに保存されているか否かをチェックする。チェックポイントバッファが存在しない場合、２０７にて、新しいチェックポイントバッファが不揮発性メモリに生成される。すでにチェックポイントバッファが格納されている場合、２０８にて、それが開かれる。２０８にてチェックポイントバッファを開くことには、不揮発性メモリにおけるチェックポイントバッファの位置を見つけること、または、場合によってチェックポイントバッファの全部または一部を処理デバイスの揮発性メモリにコピーすること、を含み得る。
【００３０】
各ワークユニットを扱うループの最初に、２１０にて、ワークユニットと関連付けられた入力データがデータフローグラフにおける前に位置するコンポーネントから又はソースから受け取られる。事前処理２２０は、ワークユニットに応じて選択的に実行される。事前処理２２０は、例えば、データレコードの再フォーマット、ワークユニットに関連付けられた結果についてのチェックポイントバッファを探すために用いられ得る値の決定、を含み得る。チェックポイント処理２００のチェックポイントバッファは、２２５にて、このワークユニットの結果がチェックポイントバッファに格納されているか否か判定される（例えば、以前の中断されたバッチ処理）。
【００３１】
関連する結果がチェックポイントバッファに格納されていない場合、２３０にて、コストの高いアクションを含む処理がワークユニットに対して行われる。コストの高いアクションの例には、ネットワークを介してリモートサーバ上のリソースにアクセスし、著しいディレイを生じ又は変更を監視することが含まれ得る。この処理の結果は、２４０にて、チェックポイントバッファに保存される。結果は、インクリメント・カウンタを用いて処理されるワークユニットに関連付けられ得る。インクリメント・カウンタは、例えばワークユニットと関連付けられた結果とを同じカウンタ値によって識別する。その結果は、不揮発性メモリに直接に書き込まれてもよく、トリガとなるイベントがそれを不揮発性メモリにコピーすることを引き起こすまで揮発性メモリに一時的に書き込まれてもよい。トリガとなるイベントの例として、特定の数のワークユニットが処理されること、時間が経過すること、外部プロセスからの信号、が含まれる。
【００３２】
関連付けられた結果がチェックポイントバッファに格納されている場合、２５０にて、チェックポイントバッファからその結果が検索される。
【００３３】
事後処理２６０は、ワークユニットの処理を完了するために選択的に実行される。事後処理２６０は、例えば、データの再フォーマット、または、データフローグラフにおける次のコンポーネントにデータを渡すこと、を含み得る。ワークユニットの処理が完了した後、チェックポイント処理２００は、２７０にて、他のワークユニットの処理が残っているか否かをチェックする。
【００３４】
他のワークユニットがあれば、チェックポイント処理２００は、次のワークユニットに関連付けられた入力データを読み込むためにループ・バックする。ワークユニットの処理が残っていなければ、チェックポイント処理２００は、２８０にて、バッチ処理が完了しそれを終了する外部信号を待つ。終了信号を受け取ったとき、チェックポイント処理２００は、２８５にて、終了シーケンス２９０の前にそのチェックポイントバッファを不揮発性メモリから消去する。終了シーケンス２９０が完了することは、処理デバイスの揮発性メモリまたは他のリザーブされたリソースを開放することを含み得る。
【００３５】
図３は、データ処理システム３００の実施例のブロック図である。この図においては、データフローグラフは、分散型のチェックポイント処理を伴う並列コンポーネントを含むシステム３００を実装している。データフローグラフにおける一または複数のコンポーネントは、複数の処理デバイス（例えば、複数のコンピュータまたは複数のプロセッサまたは並列プロセッサのプロセッサコア）にて並列に実行され得る。この例において、チェックポイント処理された並列コンポーネントである複数のインスタンス３３１，３３２，３３３が明示されている。並列コンポーネントの一つのインスタンスは各処理デバイスにて実行され、各インスタンスはバッチのワークユニットのサブセットを処理する。分散型チェックポイント処理のアプローチである本例において、並列コンポーネントの３つのインスタンスのそれぞれについて異なるチェックポイント処理が実行される。
【００３６】
データのバッチ処理が開始されたとき、一または複数の入力データソースから入力データレコードが読み込まれる。例えば、入力データは、データストレージコンポーネント３１０によって表されるようなコンピュータ読み取り可能な記憶装置に格納されている一または複数のファイルから読み込まれる。入力データレコードは、データストレージコンポーネント３１２によって表されるようなサーバにて実行されているデータベースから読み込まれてもよい。結合コンポーネント３２０は、複数のデータソースから順にデータを読み込み、その入力データを個別のワークユニットの順に配列する。ワークユニットは、データフローグラフにおける次のコンポーネントに順に渡される。
【００３７】
データフローグラフにおける次のデータ処理コンポーネントは並列コンポーネントであるので、ワークユニットは、ワークユニットパーティションコンポーネント３３０によって分割されるとともに複数のコンポーネントインスタンスに割り当てられる。この例において、インスタンスへのワークユニットの割り当ては異なるバッチ処理の実行の間にてコンシステントであり、インスタンスが他のインスタンスに割り当てられたワークユニットの状態情報にアクセスする必要がない。ワークユニットパーティションコンポーネント３３０は、フォールト状態が生じてバッチが再び実行される必要があってもコンシステントな結果が得られるように繰り返され得るコンシステントなアルゴリズムに基づき、特定のインスタンスにワークユニットを割り当てる。例えば、ワークユニット割り当てパーティションコンポーネント３３０は、単に、各コンポーネントインスタンスに順に一つずつワークユニットを割り当て、ワークユニットの数が並列インスタンスの数を超えたときに最初のインスタンスにループしてもよい。他の例として、ワークユニットパーティションコンポーネント３３０は、実行間にてコンシステントな割り当てを生じることが保証されておらず不揮発性メモリに割り当て情報を保存するパーティションアルゴリズムを適用してもよく、バッチの繰り返し実行が要求されるときに同じ割り当てが繰り返され得る。
【００３８】
チェックポイント処理された並列コンポーネントである各インスタンス３３１，３３２，３３３は、図１のチェックポイント処理されたコンポーネント１３０に関して説明された方法を用いてそれに割り当てられたワークユニットを、独立して実行する。各インスタンス３３１，３３２，３３３は、そのチェックポイントバッファを不揮発性メモリに生成し維持する。ワークユニットが処理されるとき、インスタンスは、そのチェックポイントバッファをチェックし、そのワークユニットが先行するバッチの実行中に以前に処理されたか否かを判定する。実施例であるシステム３００において、チェックポイント処理された並列コンポーネントは、各ワークユニットの情報を得るためのリモートサーバ３５０との通信のアクションを含む。他の例において、チェックポイント処理された並列コンポーネントは、フォールトトレランスのためにチェックポイントバッファのメンテンナンスを正当化することに関する高いコストのかかる他のアクションを含み得る。
【００３９】
ワークユニットの処理が完了したとき、その結果は、収集コンポーネント３３８に渡される。収集コンポーネント３３８は、複数のインスタンスから結果を集め、データフローグラフにおける次のデータ処理コンポーネントにそれらを渡す。
【００４０】
データ処理コンポーネント３４０は、チェックポイント処理を設けていないコンポーネントである。他の例において、データフローグラフにおいてチェックポイント処理を含むコンポーネントがいくつ存在してもよい。いくつかの例において、コストのかかるアクションが実行されるコンポーネントについてチェックポイント処理を制限することには、利点がある。他のデータフローグラフは、任意のデータ処理コンポーネントについて、並列または並列でなくより多くの又はより少ないデータ処理コンポーネントを含み得る。
【００４１】
ワークユニットがデータフローグラフのデータ処理コンポーネントを通過して前進すると、各ワークユニットに関連する最終結果はデータシンク３６０に移動する。バッチにおける全てのワークユニットの結果がデータシンク３６０に移動されたとき、バッチ処理は終了する。この時点にて、データフローグラフのコンポーネントに関連付けられた処理は終了される。特定のインスタンスに関連するチェックポイント処理は、終了ルーチンの一部として、チェックポイントバッファを消去してもよい。
【００４２】
図４は、データ処理システム４００の実施例を表すブロック図である。ここでは、システム４００を実装しているデータフローグラフが、集中型のチェックポイント処理を行う並列コンポーネントを含む。この例において、チェックポイント処理された並列コンポーネントである複数のインスタンス４３１，４３２，４３３が明示されている。並列コンポーネントの一つのインスタンスは各処理デバイスにて実行され、各インスタンスはバッチのワークユニットのサブセットを処理する。集中型チェックポイント処理のアプローチである本例において、チェックポイントマネージャ４３６は、少なくとも並列コンポーネントの３つのインスタンスのそれぞれに関連するチェックポイント処理のいくつかを、処理する。チェックポイントマネージャ４３６は、並列コンポーネントのインスタンスにおいて実行されている処理デバイスの一つ、または、別の処理デバイスにおいて実行され得る。
【００４３】
データのバッチ処理が開始されたとき、データストレージコンポーネント４１０および４１２から入力データレコードが読み込まれる。結合コンポーネント４２０は、複数のデータソースから順にデータを読み込み、その入力データを個別のワークユニットの順に配列する。ワークユニットは、データフローグラフにおける次のコンポーネントに順に渡される。これが、本実施例におけるチェックポイント処理された並列コンポーネントである。
【００４４】
図４の例において、チェックポイントマネージャ４３６は、インスタンス４３１，４３２，４３３によってシェアされる単一のチェックポイントバッファへのアクセスを制御する。バッチにおいて単一のチェックポイントバッファを全てのワークユニットについてシェアすることにより、バッチの過去の実行から割り当てをマッチすることを必要とすることなく、ワークユニットが動的にインスタンスに割り当てられることが可能となる。シェアされたチェックポイントバッファは、全てのインスタンスがバス或いは通信ネットワークを介して直接的に、または、チェックポイントマネージャ４３６との通信を経由して間接的に、アクセスすることができるシェアされた不揮発性メモリ４３５に格納される。インスタンス４３１，４３２，４３３は、ワークユニットを処理するとき、チェックポイントバッファをチェックするために、シェアされた不揮発性メモリ４３５を読み込み得る。チェックポイントバッファに現在のワークユニットが見つかった場合、コストの高いアクションを繰り返すことを避けるべく、保存されている結果が用いられる。チェックポイントバッファに現在のワークユニットが見つからなかった場合、ワークユニットについてのアクションが実行され、その結果がチェックポイントバッファに格納される。チェックポイントバッファに書き込むために、インスタンス４３１，４３２，４３３は、チェックポイントマネージャ４３６に書き込みリクエストのメッセージを送る。チェックポイントマネージャ４３６は、チェックポイントバッファを更新するべく、シェアされた不揮発性メモリ４３５に書き込む。他の例において、チェックポイントマネージャ４３６は、チェックポイントバッファを更新するため、シェアされた不揮発性メモリ４３５に書き込むことを許可するトークンを、リクエストしているインスタンスに送る。
【００４５】
シェアされたチェックポイントバッファは全てのインスタンス４３１，４３２，４３３に用いられるので、ワークユニットパーティションコンポーネント４３０は、データのバッチのそれぞれの実行中にインスタンス間に動的に異なるようにワークユニットを割り当ててもよい。例えば、ワークユニットパーティションコンポーネント４３０は、ランタイムにおける各処理デバイスの準備可能な容量（実行毎に異なる）に基づき、各ワークユニットを動的に割り当ててもよい。この方法により、ワークユニットパーティションコンポーネント４３０が異なる数の並列インスタンスを用いることが可能となる。例えば、フォールト状態の後、並列コンポーネントの一つのインスタンスを実行している一つの処理デバイス（インスタンス４３３のような）は、実行不能または利用不能とされてもよい。バッチが再スタートされたとき、ワークユニットパーティションコンポーネント４３０は、全てのワークユニットを残りのインスタンス４３１，４３２に割り当ててもよい。それらインスタンス４３１，４３２は、実行不能なインスタンス４３３によって以前に処理されたワークユニットについてのチェックポイントバッファエントリーに、シームレスにアクセス可能である。
【００４６】
チェックポイントマネージャ４３６は、別の処理デバイスにおいて実行される処理によって実装されてもよく、並列コンポーネントのインスタンスが実行されている処理デバイスの一つにおいて実行される処理によって実装されてもよい。インスタンス４３１，４３２，４３３は、チェックポイントバッファの更新イベントの間、チェックポイントバッファの更新をローカルの揮発性メモリにバッファしてもよい。チェックポイントマネージャ４３６は、揮発性メモリにバッファされた情報にてチェックポイントバッファを更新することをインスタンスに開始させることをトリガするインスタンスに、信号を送ってもよい。
【００４７】
ワークユニットの処理が完了したとき、その結果は、収集コンポーネント４３８に渡される。収集コンポーネント４３８は、複数のインスタンスから結果を集め、データフローグラフにおける次のデータ処理コンポーネントにそれらを渡す。
【００４８】
データ処理コンポーネント４４０は、チェックポイント処理を設けていないコンポーネントである。他の例において、データフローグラフにおいてチェックポイント処理を含むコンポーネントがいくつ存在してもよい。いくつかの例において、コストのかかるアクションが実行されるコンポーネントについてチェックポイント処理を制限することには、利点がある。他のデータフローグラフは、任意のデータ処理コンポーネントについて、並列または並列でなくより多くの又はより少ないデータ処理コンポーネントを含み得る。
【００４９】
ワークユニットがデータフローグラフのデータ処理コンポーネントを通過して前進すると、各ワークユニットに関連する最終結果はデータシンク４６０に移動する。バッチにおける全てのワークユニットの結果がデータシンク４６０に移動されたとき、バッチ処理は終了する。この時点にて、データフローグラフのコンポーネントに関連付けられた処理は終了される。チェックポイントマネージャ４３６は、終了ルーチンの一部として、チェックポイントバッファを消去してもよい。
【００５０】
上述したフォールトトレラントなバッチ処理アプローチは、コンピュータにて実行可能なソフトウェアを用いて実装することができる。例えば、ソフトウェアは、各々が少なくとも１つのプロセッサ、少なくとも１つのデータストレージシステム（揮発性または不揮発性のメモリおよび／またはストレージ要素を含む）、少なくとも１つの入力デバイスまたはポート、および、少なくとも１つの出力デバイスまたはポート、を含む一または複数のプログラムされたまたはプログラム可能なコンピュータシステム（分散、クライアント／サーバ、または、グリッドのような種々のアーキテクチャであり得る）において実行する一または複数のコンピュータプログラムにおける手順を構成する。ソフトウェアは、より大きなプログラムの一または複数のモジュール（例えば、デザインおよびグラフ計算の構成に関連する他のサービスを提供する。）を構成してもよい。グラフのノードおよび要素は、コンピュータ読み取り可能な媒体に格納されるデータ構造として、または、データリポジトリに格納されるデータモデルに準拠する他の体系化データとして、実現され得る。
【００５１】
ソフトウェアは、汎用または専用のプログラマブルコンピュータによって読み取り可能な記憶媒体（ＣＤ−ＲＯＭ等）上において提供されてもよく、または、ネットワークの通信媒体を介してソフトウェアが実行されるコンピュータに伝送されてもよい（伝搬信号にエンコードされてもよい。）。関数の全ては、専用コンピュータ上にて、または、コプロセッサなどの専用ハードウエアを用いて、実行され得る。ソフトウェアは、分散方式（ソフトウェアが規定する計算の異なる部分が、異なるコンピュータにより実行される。）にて実行され得る。そのようなコンピュータプログラムの各々は、汎用または専用のプログラマブルコンピュータによって読み取り可能な記録媒体または記憶装置（例えば、固体メモリまたは媒体、あるいは、磁気媒体または光媒体）に格納されるか又はダウンロードされるか、が好ましい。これにより、コンピュータシステムが記憶媒体または記憶装置を読み取ってここに記載されているプロシージャを実行する際、コンピュータが構成されて実行される。本発明のシステムは、コンピュータプログラムにて構成されたコンピュータ読み取り可能な記憶媒体として実施されると考えることもできる。そのように構成された記憶媒体により、コンピュータシステムは、ここに記載した機能を実行する特定の及び所定の方法にて作動する。
【００５２】
本発明のいくつかの実施形態を説明した。しかし、当然のことながら、本発明の精神および範囲を逸脱することなく多様な改変を実施し得る。例えば、上述したいくつかのステップの順序は自由であるので、上記と異なる順序にて実行され得る。
【００５３】
当然のことながら、上記記載は、本発明を説明することを意図したものであって本発明の範囲を限定することを意図するものではない。本発明は、添付される特許請求の範囲によって定義される。例えば、上述したいくつかの機能ステップは、全体のプロセスに実質的な影響を与えることなく異なる順序にて実行され得る。他の態様は以下の特許請求の範囲に含まれる。
【図１】
2015143999.tif 000003
【図２】
2015143999.tif 000004
【図３】
2015143999.tif 000005
【図４】
2015143999.tif 000006
【手続補正書】
【提出日】平成27年3月23日(2015.3.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
一または複数のデータソースからの複数のレコードを含む入力データのバッチを読み取ること、
１つ又は複数の前記レコードに関連付けられたそれぞれのワークユニットとともに、個別のワークユニットの順に入力データの前記バッチを配列すること、および、
前記ワークユニットについての計算を実行することであって、少なくとも１つであり且つ全てよりも少ない計算が前記バッチに関連付けられた前記ワークユニットについてのチェックポイント処理を含む、又は関連付けられる、前記実行すること、を含む、
データのバッチ処理をフォールトトレラントに行う方法において、
前記チェックポイント処理は、
前記バッチの処理を開始するときに不揮発性メモリに格納されたチェックポイントバッファを開くことであって、アクションが実行されるとき、前記チェックポイントバッファは、前記ワークユニットのうちのいずれにおいて前記アクションが実行されるかを特定し、それぞれの前記ワークユニットについての前記アクションの実行を結論付ける、前記開くこと、
前記バッチからの各ワークユニットについて、前記チェックポイントバッファにおいて前記ワークユニットに対する前記アクションを実行した結果が既に保存されていれば、前記アクションを再び実行することなく前記ワークユニットの処理を完了するために保存されている結果を用いること、または、前記チェックポイントバッファに前記ワークユニットに対する前記アクションを実行した結果が保存されていなければ、前記ワークユニットの処理を完了するために前記アクションを実行して前記チェックポイントバッファにおいて、（ｉｉ）いずれの前記アクションが実行されたかについての前記ワークユニットを識別する情報に関連して、（ｉ）前記アクションを実行した結果を保存すること、を含む、
データのバッチ処理をフォールトトレラントに行う方法。
【請求項２】
請求項１に記載の方法において、
前記アクションがリモートサーバとの通信を含む、データのバッチ処理をフォールトトレラントに行う方法。
【請求項３】
請求項２に記載の方法において、
前記アクションを実行した結果が、前記ワークユニットについての前記リモートサーバとの通信からの情報を含む、データのバッチ処理をフォールトトレラントに行う方法。
【請求項４】
請求項１に記載の方法であって、
前記バッチの処理が完了したときに前記チェックポイントバッファを消去することを更に含む、データのバッチ処理をフォールトトレラントに行う方法。
【請求項５】
請求項２に記載の方法において、
前記リモートサーバとの通信が通知される、データのバッチ処理をフォールトトレラントに行う方法。
【請求項６】
請求項２に記載の方法において、
前記リモートサーバとの通信の結果が、揮発性のメモリに格納され、トリガイベントが生じたときに前記チェックポイントバッファにグループ形式にて保存される、データのバッチ処理をフォールトトレラントに行う方法。
【請求項７】
請求項６に記載の方法において、
前記トリガイベントが、チェックポイントマネージャからの信号である、データのバッチ処理をフォールトトレラントに行う方法。
【請求項８】
請求項６に記載の方法において、
前記トリガイベントが、前記チェックポイントバッファへの最後の書き込みからのレコードの処理の数である、データのバッチ処理をフォールトトレラントに行う方法。
【請求項９】
請求項６に記載の方法において、
前記トリガイベントが、前記チェックポイントバッファへの最後の書き込みからの時間の経過である、データのバッチ処理をフォールトトレラントに行う方法。
【請求項１０】
請求項１に記載の方法において、
前記チェックポイント処理を含むコンポーネントが、複数の処理デバイス上にて並行して実行される、データのバッチ処理をフォールトトレラントに行う方法。
【請求項１１】
請求項１０に記載の方法において、
前記複数の並行した処理デバイス間のデータレコードの割り当てが前記バッチの実行の間にてコンシステントであり、それぞれの処理デバイスが独立したチェックポイントバッファを維持する、データのバッチ処理をフォールトトレラントに行う方法。
【請求項１２】
請求項１０に記載の方法において、
前記複数の並行した処理デバイス間のデータレコードの割り当てが動的であり、前記処理デバイスが、シェアされた不揮発性メモリに格納された単一のチェックポイントバッファへのアクセスを、チェックポイントマネージャによって制御される前記チェックポイントバッファへの書き込みとともに、シェアする、データのバッチ処理をフォールトトレラントに行う方法。
【請求項１３】
請求項１に記載の方法であって、
フォールト状態が生じた後に前記データフローグラフにおける全ての前記コンポーネントを再スタートすること、
一または複数のデータソースからの前記複数のレコードを含む入力データの前記バッチに基づく前記ワークユニットを読み取ること、
前記計算に入力として前記ワークユニットを再度渡すこと、
チェックポイントでのコンポーネントに対し、各ワークユニットについて、前記ワークユニットの前記実行から得られる結果が前記チェックポイントバッファにおいて以前保存されたものであるかどうかをチェックすること、
を更に含む、データのバッチ処理をフォールトトレラントに行う方法。
【請求項１４】
一または複数のデータソースからの複数のレコードを含む入力データのバッチを読み取る手段、
１つ又は複数の前記レコードに関連付けられたそれぞれのワークユニットとともに、個別のワークユニットの順に入力データの前記バッチを配列する手段、および、
前記ワークユニットについての計算を実行する手段であって、少なくとも１つであり且つ全てよりも少ない計算が、前記バッチに関連付けられた前記ワークユニットについてのチェックポイント処理を含む、又は関連付けられる、前記実行する手段、を含む、
データのバッチ処理をフォールトトレラントに行うためのシステムにおいて、
前記チェックポイント処理は、
前記バッチの処理を開始するときに不揮発性メモリに格納されたチェックポイントバッファを開くことであって、アクションが実行されるとき、前記チェックポイントバッファは、前記ワークユニットのうちのいずれにおいて前記アクションが実行されるかを特定し、それぞれの前記ワークユニットについての前記アクションの実行を結論付ける、前記開くこと、
前記バッチからの各ワークユニットについて、前記チェックポイントバッファにおいて前記ワークユニットに対する前記アクションを実行した結果が既に保存されていれば、前記アクションを再び実行することなく前記ワークユニットの処理を完了するために保存されている結果を用いること、または、前記チェックポイントバッファに前記ワークユニットに対する前記アクションを実行した結果が保存されていなければ、前記ワークユニットの処理を完了するために前記アクションを実行して前記チェックポイントバッファにおいて、（ｉｉ）いずれの前記アクションが実行されたかについての前記ワークユニットを識別する情報に関連して、（ｉ）前記アクションを実行した結果を保存すること、を含む、
データのバッチ処理をフォールトトレラントに行うためのシステム。
【請求項１５】
請求項１４に記載のシステムにおいて、
前記アクションがリモートサーバとの通信を含む、データのバッチ処理をフォールトトレラントに行うシステム。
【請求項１６】
請求項１５に記載のシステムにおいて、
前記アクションを実行した結果が、前記ワークユニットについての前記リモートサーバとの通信からの情報を含む、データのバッチ処理をフォールトトレラントに行うシステム。
【請求項１７】
請求項１６に記載のシステムであって、
前記バッチの処理が完了したときに前記チェックポイントバッファを消去することを更に含む、データのバッチ処理をフォールトトレラントに行うシステム。
【請求項１８】
請求項１５に記載のシステムにおいて、
前記リモートサーバとの通信が通知される、データのバッチ処理をフォールトトレラントに行うシステム。
【請求項１９】
請求項１５に記載のシステムにおいて、
前記リモートサーバとの通信の結果が、揮発性のメモリに格納され、トリガイベントが生じたときに前記チェックポイントバッファにグループ形式にて保存される、データのバッチ処理をフォールトトレラントに行うシステム。
【請求項２０】
請求項１９に記載のシステムにおいて、
前記トリガイベントが、チェックポイントマネージャからの信号である、データのバッチ処理をフォールトトレラントに行うシステム。
【請求項２１】
請求項１９に記載のシステムにおいて、
前記トリガイベントが、前記チェックポイントバッファへの最後の書き込みからのレコードの処理の数である、データのバッチ処理をフォールトトレラントに行うシステム。
【請求項２２】
請求項１９に記載のシステムにおいて、
前記トリガイベントが、前記チェックポイントバッファへの最後の書き込みからの時間の経過である、データのバッチ処理をフォールトトレラントに行うシステム。
【請求項２３】
請求項１４に記載のシステムにおいて、
前記チェックポイント処理を含むコンポーネントが、複数の処理デバイス上にて並行して実行される、データのバッチ処理をフォールトトレラントに行うシステム。
【請求項２４】
請求項２３に記載のシステムにおいて、
前記複数の並行した処理デバイス間のデータレコードの割り当てが前記バッチの実行の間にてコンシステントであり、それぞれの処理デバイスが独立したチェックポイントバッファを維持する、データのバッチ処理をフォールトトレラントに行うシステム。
【請求項２５】
請求項２３に記載のシステムにおいて、
前記複数の並行した処理デバイス間のデータレコードの割り当てが動的であり、前記処理デバイスが、シェアされた不揮発性メモリに格納された単一のチェックポイントバッファへのアクセスを、チェックポイントマネージャによって制御される前記チェックポイントバッファへの書き込みとともに、シェアする、データのバッチ処理をフォールトトレラントに行うシステム。
【請求項２６】
請求項１４に記載のシステムであって、
フォールト状態が生じた後に前記データフローグラフにおける全ての前記コンポーネントを再スタートすること、
一または複数のデータソースからの前記複数のレコードを含む入力データの前記バッチに基づく前記ワークユニットを読み取ること、
前記計算に入力として前記ワークユニットを再度渡すこと、
チェックポイントでのコンポーネントに対し、各ワークユニットについて、前記ワークユニットの前記実行から得られる結果が前記チェックポイントバッファにおいて以前保存されたものであるかどうかをチェックすること、
を更に含む、データのバッチ処理をフォールトトレラントに行うシステム。
【請求項２７】
データのバッチ処理をフォールトトレラントに行うためのコンピュータプログラムにおいて、前記コンピュータプログラムは、
一または複数のデータソースからの複数のレコードを含む入力データのバッチを読み取ること、
１つ又は複数の前記レコードに関連付けられたそれぞれのワークユニットとともに、個別のワークユニットの順に入力データの前記バッチを配列すること、および、
前記ワークユニットについての計算を実行することであって、少なくとも１つであり且つ全てよりも少ない計算が前記バッチに関連付けられた前記ワークユニットについてのチェックポイント処理を含む、又は関連付けられる、前記実行すること、
をコンピュータに実行させる命令を含み、
前記チェックポイント処理は、
前記バッチの処理を開始するときに不揮発性メモリに格納されたチェックポイントバッファを開くことであって、アクションが実行されるとき、前記チェックポイントバッファは、前記ワークユニットのうちのいずれにおいて前記アクションが実行されるかを特定し、それぞれの前記ワークユニットについての前記アクションの実行を結論付ける、前記開くこと、
前記バッチからの各ワークユニットについて、前記チェックポイントバッファにおいて前記ワークユニットに対する前記アクションを実行した結果が既に保存されていれば、前記アクションを再び実行することなく前記ワークユニットの処理を完了するために保存されている結果を用いること、または、前記チェックポイントバッファに前記ワークユニットに対する前記アクションを実行した結果が保存されていなければ、前記ワークユニットの処理を完了するために前記アクションを実行して前記チェックポイントバッファにおいて、（ｉｉ）いずれの前記アクションが実行されたかについての前記ワークユニットを識別する情報に関連して、（ｉ）前記アクションを実行した結果を保存すること、を含む、
コンピュータプログラム。
【請求項２８】
請求項２７に記載のコンピュータプログラムにおいて、
前記アクションがリモートサーバとの通信を含む、コンピュータプログラム。
【請求項２９】
請求項２８に記載のコンピュータプログラムにおいて、
前記アクションを実行した結果が、前記ワークユニットについての前記リモートサーバとの通信からの情報を含む、コンピュータプログラム。
【請求項３０】
請求項２７に記載のコンピュータプログラムであって、
前記バッチの処理が完了したときに前記チェックポイントバッファを消去することを更にコンピュータに実行させる命令を含む、コンピュータプログラム。
【請求項３１】
請求項２８に記載のコンピュータプログラムにおいて、
前記リモートサーバとの通信が通知される、コンピュータプログラム。
【請求項３２】
請求項２８に記載のコンピュータプログラムにおいて、
前記リモートサーバとの通信の結果が、揮発性のメモリに格納され、トリガイベントが生じたときに前記チェックポイントバッファにグループ形式にて保存される、コンピュータプログラム。
【請求項３３】
請求項３２に記載のコンピュータプログラムにおいて、
前記トリガイベントが、チェックポイントマネージャからの信号である、コンピュータプログラム。
【請求項３４】
請求項３２に記載のコンピュータプログラムにおいて、
前記トリガイベントが、前記チェックポイントバッファへの最後の書き込みからのレコードの処理の数である、コンピュータプログラム。
【請求項３５】
請求項３２に記載のコンピュータプログラムにおいて、
前記トリガイベントが、前記チェックポイントバッファへの最後の書き込みからの時間の経過である、コンピュータプログラム。
【請求項３６】
請求項２７に記載のコンピュータプログラムにおいて、
前記チェックポイント処理を含むコンポーネントが、複数の処理デバイス上にて並行して実行される、コンピュータプログラム。
【請求項３７】
請求項３６に記載のコンピュータプログラムにおいて、
前記複数の並行した処理デバイス間のデータレコードの割り当てが前記バッチの実行の間にてコンシステントであり、それぞれの処理デバイスが独立したチェックポイントバッファを維持する、コンピュータプログラム。
【請求項３８】
請求項３６に記載のコンピュータプログラムにおいて、
前記複数の並行した処理デバイス間のデータレコードの割り当てが動的であり、前記処理デバイスが、シェアされた不揮発性メモリに格納された単一のチェックポイントバッファへのアクセスを、チェックポイントマネージャによって制御される前記チェックポイントバッファへの書き込みとともに、シェアする、コンピュータプログラム。
【請求項３９】
請求項２７に記載のコンピュータプログラムであって、
フォールト状態が生じた後に前記データフローグラフにおける全ての前記コンポーネントを再スタートすること、
一または複数のデータソースからの前記複数のレコードを含む入力データの前記バッチに基づく前記ワークユニットを読み取ること、
前記計算に入力として前記ワークユニットを再度渡すこと、
チェックポイントでのコンポーネントに対し、各ワークユニットについて、前記ワークユニットの前記実行から得られる結果が前記チェックポイントバッファにおいて以前保存されたものであるかどうかをチェックすること、
を更にコンピュータに実行させる命令を含む、コンピュータプログラム。
【外国語明細書】
2015143999000001.pdf