(57)【要約】【課題】データ処理の遅延を抑制しながらデータ処理装置間で処理データを同期できるようにすることを目的とする。【解決手段】第一のデータ処理実行部２１０は第一のデータ処理を実行してマスタデータ２６１を更新する。第二のデータ処理実行部２１０は第一のデータ処理が実行された後に第二のデータ処理を実行する。データ同期部２２０は、第二のデータ処理が実行されているときに、他の冗長化計算機２００から第一のデータ処理を実行して更新された更新データ２８１を受信する。データ同期部２２０は、更新データ２８１とマスタデータ２６１とを比較し、第二のデータ処理を新たに実行するか否かを判定する。第二のデータ処理を新たに実行すると判定した場合、データ同期部２２０は、更新データ２８１を用いてマスタデータ２６１を更新し、第二のデータ処理実行部２１０に第二のデータ処理を新たに実行させる。【選択図】図２
2017027092.tif 000002
【特許請求の範囲】
【請求項１】
第一のデータ処理と第二のデータ処理とを含む複数のデータ処理を実行するデータ処理装置であって、
前記複数のデータ処理に用いられる処理データを記憶する処理データ記憶部と、
前記第一のデータ処理を実行して前記処理データを更新する第一のデータ処理部と、
前記第一のデータ処理が実行された後に前記第二のデータ処理を実行する第二のデータ処理部と、
前記第二のデータ処理が実行されているときに、前記複数のデータ処理を実行する他のデータ処理装置から前記他のデータ処理装置が前記第一のデータ処理を実行して更新した更新データを受信する更新データ受信部と、
前記更新データと前記処理データとを比較し、前記第二のデータ処理を新たに実行するか否かを判定する再実行判定部と、
前記第二のデータ処理を新たに実行すると判定された場合、前記更新データを用いて前記処理データを更新し、前記第二のデータ処理部に前記第二のデータ処理を新たに実行させる再実行制御部と
を備えることを特徴とするデータ処理装置。
【請求項２】
前記再実行制御部は、前記第二のデータ処理部によって実行されている前記第二のデータ処理を中断し、前記更新データを用いて前記処理データを更新し、前記第二のデータ処理部に前記第二のデータ処理を新たに実行させる
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記再実行判定部は、前記更新データのデータ値と前記処理データのデータ値とが異なる場合に前記処理データが前記第二のデータ処理を参照するか否かを判定し、前記処理データが前記第二のデータ処理を参照する場合に前記第二のデータ処理を新たに実行すると判定する
ことを特徴とする請求項１または請求項２に記載のデータ処理装置。
【請求項４】
前記複数のデータ処理の実行結果を出力する出力権があることを意味する出力有りフラグ値と前記複数のデータ処理の実行結果を出力する出力権がないことを意味する出力無しフラグ値とのいずれかを示す出力権フラグを記憶する出力権フラグ記憶部を備え、
前記再実行判定部は、前記出力権フラグが前記出力有りフラグ値を示す場合、前記第二のデータ処理を新たに実行すると判定しない
ことを特徴とする請求項１から請求項３のいずれかに記載のデータ処理装置。
【請求項５】
前記出力権フラグが前記出力有りフラグ値を示し、前記第一のデータ処理が実行されているときに前記更新データが受信された場合、前記出力権フラグのフラグ値を前記出力無しフラグ値に変更し、前記出力権を譲渡することを通知する出力権譲渡データを前記他のデータ処理装置に送信する出力権譲渡部を備える
ことを特徴とする請求項４に記載のデータ処理装置。
【請求項６】
前記出力権フラグが前記出力無しフラグ値を示し、前記他のデータ処理装置から前記出力権譲渡データを受信した場合、前記出力権フラグのフラグ値を前記出力有りフラグ値に変更する出力権取得部を備える
ことを特徴とする請求項５に記載のデータ処理装置。
【請求項７】
第一のデータ処理と第二のデータ処理とを含む複数のデータ処理を実行するコンピュータによって実行されるデータ処理プログラムであって、
前記コンピュータは、前記複数のデータ処理に用いられる処理データを記憶し、
前記第一のデータ処理を実行して前記処理データを更新する第一のデータ処理実行処理と、
前記第一のデータ処理が実行された後に前記第二のデータ処理を実行する第二のデータ処理実行処理と、
前記第二のデータ処理が実行されているときに、前記複数のデータ処理を実行する他のコンピュータから前記他のコンピュータが前記第一のデータ処理を実行して更新した更新データを受信する更新データ受信処理と、
前記更新データと前記処理データとを比較し、前記第二のデータ処理を新たに実行するか否かを判定する再実行判定処理と、
前記第二のデータ処理を新たに実行すると判定された場合、前記更新データを用いて前記処理データを更新し、前記第二のデータ処理を新たに実行する再実行制御処理と
をコンピュータに実行させるためのデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置を冗長化するための技術に関するものである。
【背景技術】
【０００２】
計算機の障害発生時にシステムの瞬停を避ける方式として、デュアル・アクティブ型の冗長化方式がある。
デュアル・アクティブ型の冗長化方式は、２つの計算機でアプリケーションプログラム（以下、アプリケーションという）を実行する方式である。そして、アプリケーションを先に完了した計算機がアプリケーションの実行結果を入出力装置に出力し、そのアプリケーションの実行結果を他方の計算機に転送する。これにより、２つの計算機の状態を同期させることができる。
デュアル・アクティブ型の冗長化方式の特徴は、いずれの計算機もマスタとして動作する可能性があることである。
デュアル・アクティブ型の冗長化方式の効果は、一方の計算機に障害が発生し、その計算機が停止した場合であっても、他方の計算機がアプリケーションの実行結果を出力することによって、システムの瞬停を回避できることである。
【０００３】
デュアル・アクティブ型の冗長化方式が適用されるシステムとして、データベースシステム（例えば、特許文献１）およびロードバランサシステム（例えば、特許文献２）が挙げられる。
このデュアル・アクティブ型のデータベースシステムは、複数の計算機に個別にデータベースを構築し、各データベースに同一のデータ処理を行わせる。これにより、データベースの冗長化が実現される。
また、デュアル・アクティブ型のロードバランサシステムは、従来のロードバランサのように計算機の負荷に応じて単一の計算機にデータ処理を割り当てることはせずに、複数の計算機にデータ処理を割り当てて複数の計算機にデータ処理を同時に実行させる。これにより、データ処理の冗長化が実現される。
【０００４】
しかし、データ処理の結果がその他のデータ処理に影響を与えるようなシステムにデュアル・アクティブ型の冗長化方式を適用する場合、以下のようにシステムの処理性能に関する課題がある。
第一のデータ処理の結果を用いて第二のデータ処理が実行される場合、２つの計算機に同一の第二のデータ処理を実行させるために、第二のデータ処理が実行される前に２つの計算機の第一のデータ処理の結果が同一であることを確認する必要がある。このように、２つの計算機のデータ処理の結果について逐次に整合性を確認する仕組みをロックステップと呼ぶ。システムがロックステップを行う場合、データ処理の結果の整合性が確認されるまで次のデータ処理が実行されないため、システムの処理性能が低下する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２７１７３３号公報
【特許文献２】特開２００４−０３０２０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、データ処理の遅延を抑制しながらデータ処理装置間で処理データを同期できるようにすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明のデータ処理装置は、第一のデータ処理と第二のデータ処理とを含む複数のデータ処理を実行する。
前記データ処理装置は、
前記複数のデータ処理に用いられる処理データを記憶する処理データ記憶部と、
前記第一のデータ処理を実行して前記処理データを更新する第一のデータ処理部と、
前記第一のデータ処理が実行された後に前記第二のデータ処理を実行する第二のデータ処理部と、
前記第二のデータ処理が実行されているときに、前記複数のデータ処理を実行する他のデータ処理装置から前記他のデータ処理装置が前記第一のデータ処理を実行して更新した更新データを受信する更新データ受信部と、
前記更新データと前記処理データとを比較し、前記第二のデータ処理を新たに実行するか否かを判定する再実行判定部と、
前記第二のデータ処理を新たに実行すると判定された場合、前記更新データを用いて前記処理データを更新し、前記第二のデータ処理部に前記第二のデータ処理を新たに実行させる再実行制御部とを備える。
【発明の効果】
【０００８】
本発明によれば、第一のデータ処理の実行後に処理データの同期を待たずに第二のデータ処理を実行することができる。したがって、第二のデータ処理の遅延を抑制しながらデータ処理装置間で処理データを同期させることができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１における計算機システム１００の構成図である。
【図２】実施の形態１における冗長化計算機２００の機能構成図である。
【図３】実施の形態１における参照フラグテーブル２７２およびデータ処理制御テーブル２９２の一例を示す図である。
【図４】実施の形態１におけるデータ処理制御部２３０のデータ処理制御処理を示すフローチャートである。
【図５】実施の形態１におけるデータ処理制御部２３０のデータ処理制御処理を示すフローチャートである。
【図６】実施の形態１におけるデータ処理制御部２３０のデータ処理制御処理を示すフローチャートである。
【図７】実施の形態１におけるデータ処理実行部２１０のデータ処理実行処理を示すフローチャートである。
【図８】実施の形態１におけるデータ同期部２２０のデータ同期処理（出力権有り）を示すフローチャートである。
【図９】実施の形態１におけるデータ同期部２２０のデータ同期処理（出力権無し）を示すフローチャートである。
【図１０】実施の形態１におけるデータ同期部２２０のデータ同期処理（出力権無し）を示すフローチャートである。
【図１１】実施の形態１における出力権譲渡部２４０の出力権譲渡処理を示すフローチャートである。
【図１２】実施の形態１における冗長化計算機２００のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１０】
実施の形態１．
データ処理の遅延を抑制しながらデータ処理装置間で処理データを同期できるようにする形態を説明する。
【００１１】
図１は、実施の形態１における計算機システム１００の構成図である。
実施の形態１における計算機システム１００の構成について、図１に基づいて説明する。
【００１２】
計算機システム１００は、冗長化した複数の計算機（２００Ａ、２００Ｂ）を備える。以下、この複数の計算機（２００Ａ、２００Ｂ）を冗長化計算機２００（データ処理装置の一例）という。
さらに、計算機システム１００は、冗長化計算機２００ではない計算機である非冗長化計算機１０１と、ディスプレイまたはプリンタなどの入出力装置１０２とを備える。
複数の冗長化計算機２００のうちの一つの冗長化計算機２００が、非冗長化計算機１０１または入出力装置１０２にデータを出力する出力権を有する。
複数の冗長化計算機２００と非冗長化計算機１０１と入出力装置１０２とはネットワーク１０９を介して通信を行う。ネットワーク１０９を複数設けることにより、ネットワーク１０９を冗長化してもよい。ローカルエリアネットワーク（ＬＡＮ）はネットワーク１０９の一例である。
【００１３】
図２は、実施の形態１における冗長化計算機２００の機能構成図である。
実施の形態１における冗長化計算機２００の機能構成について、図２に基づいて説明する。
【００１４】
冗長化計算機２００（データ処理装置の一例）は、複数のデータ処理実行部２１０（第一のデータ処理部、第二のデータ処理部の一例）と、データ同期部２２０（更新データ受信部、再実行判定部、再実行制御部、出力権取得部の一例）と、データ処理制御部２３０と、出力権譲渡部２４０とを備える。
さらに、冗長化計算機２００は補助記憶部２６０（処理データ記憶部の一例）と主記憶部２９０（処理データ記憶部、出力権フラグ記憶部の一例）とを備える。
【００１５】
複数のデータ処理実行部２１０は、一つ以上のアプリケーションプログラム（以下、アプリケーションまたはＡＰＰという）を構成する複数のデータ処理のうちのいずれかのデータ処理を実行する。例えば、第一のデータ処理と第二のデータ処理と外部出力処理とで構成されるアプリケーションを実行するために、最初に第一のデータ処理実行部２１０が第一のデータ処理を実行し、次に第二のデータ処理実行部２１０が第二のデータ処理を実行し、最後に外部出力処理部２１１（データ処理実行部２１０の一例）が外部出力処理を実行する。外部出力処理は、データの出力権を有する冗長化計算機２００が非冗長化計算機１０１または入出力装置１０２にデータを出力するデータ処理である。
複数のデータ処理実行部２１０のそれぞれに複製データ領域２７０および更新データ領域２８０が割り当てられる。そして、それぞれのデータ処理実行部２１０は、割り当てられた複製データ領域２７０に使用するマスタデータ２６１を複製し、複製したマスタデータ２６１（以下、複製データ２７１という）を用いてデータ処理を実行する。また、それぞれのデータ処理実行部２１０は、データ処理が終了したときに更新した複製データ２７１（以下、更新データ２８１という）を更新データ領域２８０に複製する。
【００１６】
データ同期部２２０は、複数の冗長化計算機２００のそれぞれのマスタデータ２６１を同じデータにするために、更新データ２８１を他の冗長化計算機２００に送信し、他の冗長化計算機２００の更新データ２８１を受信する。そして、データ同期部２２０は、送信した更新データ２８１または受信した更新データ２８１を用いてマスタデータ２６１を更新する。
【００１７】
データ処理制御部２３０は、データ処理制御テーブル２９２に基づいて複数のデータ処理実行部２１０を制御する。
【００１８】
出力権譲渡部２４０は、データ処理が終了する前にデータの出力権が無い冗長化計算機２００から更新データ２８１を受信した場合、更新データ２８１を送信した冗長化計算機２００にデータの出力権を譲渡する。
【００１９】
補助記憶部２６０は、補助記憶装置（例えば、ハードディスク）を用いて複数のマスタデータ２６１を記憶する。
マスタデータ２６１（処理データの一例）はデータ処理に用いられる複製データ２７１の複製元のデータである。マスタデータ２６１はデータ名とデータ値とを有する。
【００２０】
主記憶部２９０は、主記憶装置（例えば、半導体メモリ）を用いて各種データを記憶する。
主記憶部２９０は、データ処理実行部２１０毎に割り当てられる複製データ領域２７０および更新データ領域２８０を備える。
複製データ領域２７０は、複製データ２７１と複製データ２７１の参照状況を示す参照フラグテーブル２７２とが記憶される記憶領域である。複製データ２７１（処理データの一例）はマスタデータ２６１と同様にデータ名とデータ値とを有する。
更新データ領域２８０は、更新データ２８１が記憶される記憶領域である。更新データ２８１（処理データの一例）はマスタデータ２６１と同様にデータ名とデータ値とを有する。
さらに、主記憶部２９０は、出力権の有無を示す出力権フラグ２９１と、データ処理実行部２１０を制御するためのデータ処理制御テーブル２９２とを記憶する。
【００２１】
図３は、実施の形態１における参照フラグテーブル２７２およびデータ処理制御テーブル２９２の一例を示す図である。
実施の形態１における参照フラグテーブル２７２およびデータ処理制御テーブル２９２の一例について、図３に基づいて説明する。
【００２２】
参照フラグテーブル２７２は、複製データ２７１毎に複製データ２７１を識別するデータ名（識別子の一例）と、複製データ２７１の参照状況を示す参照フラグとを対応付ける。
例えば、参照フラグのフラグ値が０である場合、複製データ２７１はまだ参照（更新を含む）されていない。また、参照フラグのフラグ値が１である場合には複製データ２７１が少なくとも一回は参照（更新を除く）されており、参照フラグのフラグ値が２である場合には複製データ２７１は少なくとも一回は更新されている。
【００２３】
データ処理制御テーブル２９２は、データ処理実行部２１０毎にデータ処理部と開始条件と処理内容と次のデータ処理部とを対応付ける。
データ処理部は、データ処理実行部２１０を識別する名称（識別子の一例）を示す。
開始条件は、データ処理実行部２１０が開始される条件を示す。例えば、要求開始条件、周期開始条件、定時開始条件および連続開始条件は開始条件の一例である。要求開始条件は、アプリケーション（ＡＰＰ）の実行が要求されたときに開始される場合のアプリケーション名を示す。周期開始条件は、一定時間毎に開始される場合の一定時間を示す。定時開始条件は、定時に開始される場合の定時を示す。連続開始条件は、他のデータ処理実行部２１０のデータ処理が終了した後に開始される場合の他のデータ処理実行部２１０の名称を示す。
処理内容は、データ処理の内容を示す。つまり、処理内容は、データ処理が外部出力処理であるか否かを示す。
次のデータ処理部は、次に呼び出すデータ処理実行部２１０の名称を示す。
【００２４】
図４、図５および図６は、実施の形態１におけるデータ処理制御部２３０のデータ処理制御処理を示すフローチャートである。
実施の形態１におけるデータ処理制御部２３０のデータ処理制御処理について、図４から図６に基づいて説明する。
【００２５】
データ処理制御部２３０は、データ処理制御テーブル２９２（図３参照）に基づいて開始条件を満たすデータ処理実行部２１０が有るか否かを判定する。
そして、開始条件を満たすデータ処理実行部２１０が有る場合、データ処理制御部２３０はデータ処理制御処理（図４から図６）を実行する。
【００２６】
Ｓ１１０（図４参照）において、データ処理制御部２３０は、開始条件を満たしたデータ処理実行部２１０を呼び出す。
そして、呼び出されたデータ処理実行部２１０によってデータ処理実行処理が実行される。データ処理実行処理はデータ処理を実行する処理である。データ処理実行処理については後述する。
データ処理実行処理が終了した場合、データ処理制御処理はＳ１２０に進む。
【００２７】
Ｓ１２０において、データ処理制御部２３０は、データ処理制御テーブル２９２（図３参照）に基づいて次のデータ処理が有るか否かを判定する。
例えば、一つ前に呼び出されたデータ処理実行部２１０が第一のデータ処理実行部２１０である場合、データ処理制御部２３０は、データ処理制御テーブル２９２に含まれる第一のデータ処理実行部２１０の次のデータ処理の欄を参照し、次のデータ処理が有るか否かを判定する。
次のデータ処理が有る場合（ＹＥＳ）、データ処理制御処理はＳ１２１（図５参照）に進む。
次のデータ処理が無い場合（ＮＯ）、データ処理制御処理はＳ１３０に進む。
【００２８】
Ｓ１３０において、データ処理制御部２３０はデータ同期部２２０を呼び出す。
そして、データ同期部２２０によってデータ同期処理が実行される。複数の冗長化計算機２００のそれぞれのマスタデータ２６１を同じデータにする処理である。データ同期処理については後述する。
データ同期処理が終了した後、データ処理制御処理は終了する。
【００２９】
Ｓ１２１（図５参照）において、データ処理制御部２３０は、データ処理制御テーブル２９２（図３参照）に基づいて、次のデータ処理が外部出力処理であるか否かを判定する。
例えば、次のデータ処理を実行するデータ処理実行部２１０が第二のデータ処理実行部２１０である場合、データ処理制御部２３０は、データ処理制御テーブル２９２に含まれる第二のデータ処理実行部２１０の処理内容の欄を参照し、次のデータ処理が外部出力処理であるか否かを判定する。
次のデータ処理が外部出力処理である場合（ＹＥＳ）、データ処理制御処理はＳ１２４（図６参照）に進む。
次のデータ処理が外部出力処理でない場合（ＮＯ）、データ処理制御処理はＳ１２２およびＳ１２３に進む。
【００３０】
Ｓ１２２において、データ処理制御部２３０は、次のデータ処理（外部出力処理以外のデータ処理）を実行するデータ処理実行部２１０を呼び出す。
そして、呼び出されたデータ処理実行部２１０によって次のデータ処理を実行するためにデータ処理実行処理が実行される。データ処理実行処理については後述する。
【００３１】
Ｓ１２３において、データ処理制御部２３０はデータ同期部２２０を呼び出す。
そして、データ同期部２２０によってデータ同期処理が実行される。データ同期処理については後述する。
【００３２】
Ｓ１２２およびＳ１２３は並列に実行される。これにより、データ同期処理の終了を待たずに、次のデータ処理を実行することができる。
Ｓ１２２でデータ処理実行処理が終了し、Ｓ１２３でデータ同期処理が終了した場合、データ処理制御処理はＳ１２０（図４参照）に戻る。
【００３３】
Ｓ１２４（図６参照）において、データ処理制御部２３０はデータ同期部２２０を呼び出す。
そして、データ同期部２２０によってデータ同期処理が実行される。データ同期処理については後述する。
データ同期処理が終了した後、データ処理制御処理はＳ１２５に進む。
【００３４】
Ｓ１２５において、データ処理制御部２３０は、出力権フラグ２９１に基づいてデータの出力権があるか否かを判定する。
データの出力権がある場合（ＹＥＳ）、データ処理制御処理はＳ１２６に進む。
データの出力権がない場合（ＮＯ）、データ処理制御処理はＳ１２０（図４参照）に戻る。
【００３５】
Ｓ１２６において、データ処理制御部２３０は外部出力処理部２１１を呼び出す。
そして、外部出力処理部２１１は、外部出力処理を実行することによって、出力データ（例えば、マスタデータ２６１）を非冗長化計算機１０１または入出力装置１０２に送信する。
外部出力処理が終了した後、データ処理制御処理はＳ１２０（図４参照）に戻る。
【００３６】
データ処理制御処理（図４から図６）により、複数の冗長化計算機２００が複数のデータ処理（一連のデータ処理）を予め決められた順番で実行し、データ処理毎に複数の冗長化計算機２００のマスタデータ２６１が同期される。
【００３７】
図７は、実施の形態１におけるデータ処理実行部２１０のデータ処理実行処理を示すフローチャートである。
実施の形態１におけるデータ処理実行部２１０のデータ処理実行処理について、図７に基づいて説明する。
図７において、複製データ領域２７０および更新データ領域２８０はデータ処理実行部２１０に割り当てられた複製データ領域２７０および更新データ領域２８０を意味する。
【００３８】
Ｓ２１０において、データ処理実行部２１０は、複製データ領域２７０および更新データ領域２８０を次のように初期化する。
データ処理実行部２１０は、複製データ領域２７０に記憶されている複製データ２７１を削除し、参照フラグテーブル２７２を初期化する。また、データ処理実行部２１０は、更新データ領域２８０に記憶されている更新データ２８１を削除する。
Ｓ２１０の後、データ処理実行処理はＳ２２０に進む。
【００３９】
Ｓ２２０において、データ処理実行部２１０は、データ処理で使用するマスタデータ２６１を複製データ領域２７０に複製する。複製データ領域２７０に複製されたマスタデータ２６１が複製データ２７１である。
Ｓ２２０の後、データ処理実行処理はＳ２３０に進む。
【００４０】
Ｓ２３０において、データ処理実行部２１０は、実行するデータ処理が一連のデータ処理のうちの二番目以降のデータ処理であるか否かを判定する。
例えば、データ処理制御部２３０は、データ処理実行部２１０を呼び出すときに、データ処理実行部２１０によって実行されるデータ処理が二番目以降のデータ処理であるか否かを示す順番情報をデータ処理実行部２１０に通知する。そして、データ処理実行部２１０は通知された順番情報に基づいて判定を行う。
データ処理実行部２１０によって実行されるデータ処理が二番目以降のデータ処理である場合（ＹＥＳ）、データ処理実行処理はＳ２４０に進む。
データ処理実行部２１０によって実行されるデータ処理が二番目以降のデータ処理でない場合（ＮＯ）、データ処理実行処理はＳ２５０に進む。
【００４１】
Ｓ２４０において、データ処理実行部２１０は、一つ前に呼び出されたデータ処理実行部２１０の更新データ領域２８０に記憶されている更新データ２８１のデータ値を用いて、Ｓ２２０で複製した複製データ２７１のうち更新データ２８１とデータ名が同じである複製データ２７１のデータ値を更新する。
例えば、データ処理制御部２３０は、二番目以降のデータ処理を実行するデータ処理実行部２１０を呼び出すときに、一つ前に呼び出したデータ処理実行部２１０に割り当てられた更新データ領域２８０を示すアドレス情報をデータ処理実行部２１０に通知する。そして、データ処理実行部２１０は通知されたアドレス情報に基づいて複製データ２７１を更新する。
Ｓ２４０の後、データ処理実行処理はＳ２５０に進む。
【００４２】
Ｓ２５０において、データ処理実行部２１０はデータ処理を実行する。
データ処理の実行中に複製データ２７１を参照または更新した場合、データ処理実行部２１０は、複製データ領域２７０に記憶されている参照フラグテーブル２７２（図３参照）に含まれる参照フラグのうち参照または更新した複製データ２７１の参照フラグを更新する。
例えば、第一の複製データ２７１を参照し、第一の複製データ２７１の参照フラグに未参照のフラグ値（初期値）が設定されている場合、データ処理実行部２１０は第一の複製データ２７１の参照フラグに参照済みのフラグ値を設定する。
また、第一の複製データ２７１を更新し、第一の複製データ２７１の参照フラグに更新済みのフラグ値が設定されていない場合、データ処理実行部２１０は第一の複製データ２７１の参照フラグに更新済みのフラグ値を設定する。
但し、参照フラグテーブル２７２に含まれる各参照フラグのフラグ値を更新せず、参照フラグテーブル２７２に含まれる各参照フラグに参照フラグ値、更新フラグ値または非参照フラグ値を設定しても構わない。参照フラグ値はデータ処理で参照されることを意味し、更新フラグはデータ処理で更新されることを意味し、非参照フラグはデータ処理で参照および更新されないことを意味する。この場合、Ｓ２１０で参照フラグテーブル２７２を初期化する必要はない。
Ｓ２５０の後、データ処理実行処理はＳ２６０に進む。
【００４３】
Ｓ２６０において、データ処理実行部２１０は、Ｓ２５０で更新した複製データ２７１を更新データ領域２８０に複製する。更新データ領域２８０に複製した複製データ２７１が更新データ２８１である。
例えば、データ処理実行部２１０は、参照フラグテーブル２７２（図３参照）に含まれる参照フラグに基づいて、更新した複製データ２７１を特定する。
Ｓ２６０の後、データ処理実行処理はＳ２７０に進む。
【００４４】
Ｓ２７０において、データ処理実行部２１０は、複製データ領域２７０に記憶されている複製データ２７１とデータ名が同じであるマスタデータ２６１のデータ値を複製データ２７１のデータ値に更新する。
Ｓ２７０の後、データ処理実行処理は終了する。
【００４５】
図８は、実施の形態１におけるデータ同期部２２０のデータ同期処理（出力権有り）を示すフローチャートである。
実施の形態１におけるデータ同期部２２０のデータ同期処理（出力権有り）について、図８に基づいて説明する。
データ処理制御部２３０から呼び出されたデータ同期部２２０は、出力権フラグ２９１に基づいてデータの出力権が有るか否かを判定する。そして、データの出力権が有ると判定した場合、データ同期部２２０は図８に示すデータ同期処理（出力権有り）を実行する。
【００４６】
Ｓ３０１において、データ同期部２２０は、呼び出される前に終了したデータ処理で更新された更新データ２８１があるか否かを判定する。
例えば、データ処理制御部２３０は、データ同期部２２０を呼び出す前に終了したデータ処理を実行したデータ処理実行部２１０に割り当てられた更新データ領域２８０を示すアドレス情報をデータ同期部２２０に通知する。そして、データ同期部２２０は、通知されたアドレス情報が示す更新データ領域２８０を参照し、更新データ２８１が有るか否かを判定する。
更新データ２８１が有る場合（ＹＥＳ）、データ同期処理（出力権有り）はＳ３０２に進む。
更新データ２８１が無い場合（ＮＯ）、データ同期処理（出力権有り）は終了する。
【００４７】
Ｓ３０２において、データ同期部２２０は、他の冗長化計算機２００のデータ同期部２２０、つまり、出力権が無い冗長化計算機２００のデータ同期部２２０に更新データ２８１を送信する。
Ｓ３０２の後、データ同期処理（出力権有り）はＳ３０３に進む。
【００４８】
Ｓ３０３において、データ同期部２２０は、更新データ２８１とデータ名が同じであるマスタデータ２６１のデータ値を更新データ２８１のデータ値に更新する。
Ｓ３０３の後、データ同期処理（出力権有り）は終了する。
【００４９】
データ同期処理（出力権有り）（図８参照）の実行中に出力権が有る冗長化計算機２００のデータ同期部２２０が、出力権が無い冗長化計算機２００のデータ同期部２２０から更新データ２８１を受信した場合、出力権が有る冗長化計算機２００のデータ同期部２２０は受信した更新データ２８１を破棄する。
【００５０】
図９、図１０は、実施の形態１におけるデータ同期部２２０のデータ同期処理（出力権無し）を示すフローチャートである。
実施の形態１におけるデータ同期部２２０のデータ同期処理（出力権無し）について、図９および図１０に基づいて説明する。
データ処理制御部２３０から呼び出されたデータ同期部２２０は、出力権フラグ２９１に基づいてデータの出力権が有るか否かを判定する。そして、データの出力権が無いと判定した場合、データ同期部２２０は図９および図１０に示すデータ同期処理（出力権無し）を実行する。
【００５１】
Ｓ３１０（図９参照）において、データ同期部２２０は、更新データ２８１が有るか否かを判定する（図８のＳ３０１と同様）。
更新データ２８１が有る場合（ＹＥＳ）、データ同期処理（出力権無し）はＳ３２０に進む。
更新データ２８１が無い場合（ＮＯ）、データ同期処理（出力権無し）は終了する。
【００５２】
Ｓ３２０において、データ同期部２２０は、他の冗長化計算機２００のデータ同期部２２０、つまり、出力権が有る冗長化計算機２００のデータ同期部２２０に更新データ２８１を送信する。
Ｓ３２０の後、データ同期処理（出力権無し）はＳ３３０に進む。
【００５３】
Ｓ３３０において、データ同期部２２０は、出力権がある冗長化計算機２００から送信される更新データ２８１または出力権譲渡データを受信する。
データ同期部２２０は、データ同期処理（出力権無し）を開始してから経過した経過時間が受信タイムアウト時間に達するまでに、出力権がある冗長化計算機２００から更新データ２８１と出力権譲渡データとのいずれかを受信したか否かを判定する。
出力権譲渡データとは、出力権が有る冗長化計算機２００が出力権が無い冗長化計算機２００に出力権を譲渡することを通知するデータである。
更新データ２８１と出力権譲渡データとのいずれも受信しなかった場合（ＹＥＳ）、データ同期処理（出力権無し）はＳ３５０に進む。
更新データ２８１と出力権譲渡データとのいずれかを受信した場合（ＮＯ）、データ同期処理（出力権無し）はＳ３４０に進む。
【００５４】
Ｓ３４０において、データ同期部２２０は、更新データ２８１と出力権譲渡データとのいずれを受信したか判定する。
更新データ２８１を受信した場合、データ同期処理（出力権無し）はＳ３４１（図１０参照）に進む。
出力権譲渡データを受信した場合、データ同期処理（出力権無し）はＳ３５０に進む。
【００５５】
Ｓ３５０において、データ同期部２２０は、出力権フラグ２９１のフラグ値を出力権有りを示すフラグ値に変更する。
Ｓ３５０の後、データ同期処理（出力権無し）はＳ３６０に進む。
【００５６】
Ｓ３６０において、データ同期部２２０は、更新データ２８１とデータ名が同じであるマスタデータ２６１のデータ値を更新データ２８１のデータ値に更新する。
Ｓ３６０の後、データ同期処理（出力権無し）は終了する。
【００５７】
Ｓ３４１（図１０参照）において、データ同期部２２０は、呼び出される前に終了したデータ処理で更新された更新データ２８１のデータ値と受信した更新データ２８１のデータ値とが同じであるか否かを判定する。
更新データ２８１のデータ値が同じである場合（ＹＥＳ）、データ同期処理（出力権無し）はＳ３４３に進む。
更新データ２８１のデータ値が同じでない場合（ＮＯ）、データ同期処理（出力権無し）はＳ３４２に進む。
【００５８】
Ｓ３４２において、データ同期部２２０は、呼び出される前に終了したデータ処理で更新された更新データ２８１によって、データ同期処理（出力権無し）と並列に実行されているデータ処理に影響が有るか否かを判定する。
例えば、データ処理制御部２３０は、Ｓ１２３（図５参照）でデータ同期部２２０を呼び出すときに、Ｓ１２２で呼び出すデータ処理実行部２１０に割り当てられた複製データ領域２７０を示すアドレス情報をデータ同期部２２０に通知する。データ同期部２２０は、通知されたアドレス情報が示す複製データ領域２７０に記憶されている参照フラグテーブル２７２を参照する。そして、更新データ２８１とデータ名が同じである複製データ２７１の参照フラグが未参照を示すフラグ値でない場合、データ同期部２２０は、並列に実行されているデータ処理に影響があると判定する。
並列に実行されているデータ処理に影響があると判定した場合（ＹＥＳ）、データ同期処理（出力権無し）はＳ３４４に進む。
並列に実行されているデータ処理に影響がないと判定した場合（ＮＯ）、データ同期処理（出力権無し）はＳ３４３に進む。
【００５９】
Ｓ３４３において、データ同期部２２０は、受信した更新データ２８１とデータ名が同じであるマスタデータ２６１のデータ値を受信した更新データ２８１のデータ値に更新する。
Ｓ３４３の後、データ同期処理（出力権無し）は終了する。
【００６０】
Ｓ３４４において、データ同期部２２０と並列に呼び出されたデータ処理実行部２１０、つまり、Ｓ１２２（図５参照）で呼び出されたデータ処理実行部２１０は実行しているデータ処理を中断する。つまり、データ処理実行部２１０はデータ処理を強制終了する。
例えば、データ処理制御部２３０は、Ｓ１２３（図５参照）でデータ同期部２２０を呼び出すときに、Ｓ１２２で呼び出すデータ処理実行部２１０の名称をデータ同期部２２０に通知する。そして、データ同期部２２０は通知された名称に基づいてデータ処理実行部２１０にデータ処理の中断を要求し、データ処理実行部２１０はデータ処理を中断する。
Ｓ３４４の後、データ同期処理（出力権無し）はＳ３４５に進む。
【００６１】
Ｓ３４５において、データ同期部２２０は、受信した更新データ２８１とデータ名が同じであるマスタデータ２６１のデータ値を受信した更新データ２８１のデータ値に更新する。
Ｓ３４５の後、データ同期処理（出力権無し）はＳ３４６に進む。
【００６２】
Ｓ３４６において、データ同期部２２０と並列に呼び出されたデータ処理実行部２１０、つまり、Ｓ１２２（図５参照）で呼び出されたデータ処理実行部２１０はデータ処理を再実行する。つまり、データ処理実行部２１０はデータ処理実行処理（図７参照）を新たに実行する。
Ｓ３４６の後、データ同期処理（出力権無し）は終了する。
【００６３】
図１１は、実施の形態１における出力権譲渡部２４０の出力権譲渡処理を示すフローチャートである。
実施の形態１における出力権譲渡部２４０の出力権譲渡処理について、図１１に基づいて説明する。
出力権が有る冗長化計算機２００のデータ処理制御部２３０は、データ処理が実行されているときに、出力権が無い冗長化計算機２００から更新データ２８１を受信した場合、出力権譲渡部２４０を呼び出す。そして、出力権譲渡部２４０は出力権譲渡処理（図１１参照）を実行する。図１１において、データ処理はデータ処理実行処理と読み替えても構わない。
【００６４】
Ｓ４１０において、出力権譲渡部２４０は、更新データ２８１を送信した冗長化計算機２００のデータ同期部２２０に出力権譲渡データを送信する。出力権譲渡データは、出力権を譲渡することを通知するデータである。
出力権譲渡データを受信したデータ同期部２２０は、データ同期処理（出力権無し）（図９参照）において出力権フラグ２９１のフラグ値を出力権有りを意味するフラグ値に変更する（Ｓ３５０）。
Ｓ４１０の後、出力権譲渡処理はＳ４２０に進む。
【００６５】
Ｓ４２０において、出力権譲渡部２４０は、出力権フラグ２９１のフラグ値を出力権無しを意味するフラグ値に変更する。
Ｓ４２０の後、出力権譲渡処理はＳ４３０に進む。
【００６６】
Ｓ４３０において、データ処理を実行しているデータ処理実行部２１０は実行しているデータ処理を中断する。つまり、データ処理実行部２１０はデータ処理を強制終了する。
例えば、データ処理制御部２３０は、出力権譲渡部２４０を呼び出すときに、Ｓ１１０（図４参照）またはＳ１２３（図５参照）で呼び出したデータ処理実行部２１０の名称を出力権譲渡部２４０に通知する。そして、出力権譲渡部２４０は通知された名称に基づいてデータ処理実行部２１０にデータ処理の中断を要求し、データ処理実行部２１０はデータ処理を中断する。
Ｓ４３０の後、出力権譲渡処理はＳ４４０に進む。
【００６７】
Ｓ４４０において、出力権譲渡部２４０は、受信した更新データ２８１とデータ名が同じであるマスタデータ２６１のデータ値を受信した更新データ２８１のデータ値に更新する。
Ｓ４４０の後、出力権譲渡処理は終了する。
【００６８】
図１２は、実施の形態１における冗長化計算機２００のハードウェア構成の一例を示す図である。
実施の形態１における冗長化計算機２００のハードウェア構成の一例について、図１２に基づいて説明する。但し、冗長化計算機２００のハードウェア構成は図１２に示す構成と異なる構成であってもよい。
【００６９】
冗長化計算機２００は、演算装置９０１、補助記憶装置９０２、主記憶装置９０３、通信装置９０４および入出力装置９０５を備えるコンピュータである。
演算装置９０１、補助記憶装置９０２、主記憶装置９０３、通信装置９０４および入出力装置９０５はバス９０９に接続している。
【００７０】
演算装置９０１は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
補助記憶装置９０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリまたはハードディスク装置である。
主記憶装置９０３は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
通信装置９０４は、有線または無線でインターネット、ＬＡＮ（ローカルエリアネットワーク）、電話回線網またはその他のネットワークを介して通信を行う。
入出力装置９０５は、例えば、マウス、キーボード、ディスプレイ装置である。
【００７１】
プログラムは、通常は補助記憶装置９０２に記憶されており、主記憶装置９０３にロードされ、演算装置９０１に読み込まれ、演算装置９０１によって実行される。
例えば、オペレーティングシステム（ＯＳ）が補助記憶装置９０２に記憶される。また、「〜部」として説明している機能を実現するプログラムが補助記憶装置９０２に記憶される。そして、ＯＳおよび「〜部」として説明している機能を実現するプログラムは主記憶装置９０３にロードされ、演算装置９０１によって実行される。「〜部」は「〜処理」「〜工程」と読み替えることができる。
【００７２】
「〜の判断」、「〜の判定」、「〜の抽出」、「〜の検知」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の生成」、「〜の入力」、「〜の出力」等の処理の結果を示す情報、データ、ファイル、信号値または変数値が主記憶装置９０３または補助記憶装置９０２に記憶される。また、冗長化計算機２００が使用するその他のデータが主記憶装置９０３または補助記憶装置９０２に記憶される。
【００７３】
実施の形態１により、データ処理の遅延を抑制しながらデータ処理装置（冗長化計算機２００）間で処理データ（マスタデータ２６１）を同期させることができる。
【００７４】
実施の形態１は、計算機システム１００の形態の一例である。
つまり、計算機システム１００は、実施の形態１で説明した構成要素の一部を備えなくても構わない。また、計算機システム１００は、実施の形態１で説明していない構成要素を備えても構わない。
さらに、実施の形態１に係る方法およびプログラムは、実施の形態１においてフローチャート等を用いて説明した処理手順と一部異なる処理手順で実現されても構わない。
【符号の説明】
【００７５】
１００  計算機システム、１０１  非冗長化計算機、１０２  入出力装置、１０９  ネットワーク、２００  冗長化計算機、２１０  データ処理実行部、２２０  データ同期部、２３０  データ処理制御部、２４０  出力権譲渡部、２６０  補助記憶部、２６１  マスタデータ、２７０  複製データ領域、２７１  複製データ、２７２  参照フラグテーブル、２８０  更新データ領域、２８１  更新データ、２９１  出力権フラグ、２９２  データ処理制御テーブル、９０１  演算装置、９０２  補助記憶装置、９０３  主記憶装置、９０４  通信装置、９０５  入出力装置、９０９  バス。
【図１】
2017027092.tif 000003
【図２】
2017027092.tif 000004
【図３】
2017027092.tif 000005
【図４】
2017027092.tif 000006
【図５】
2017027092.tif 000007
【図６】
2017027092.tif 000008
【図７】
2017027092.tif 000009
【図８】
2017027092.tif 000010
【図９】
2017027092.tif 000011
【図１０】
2017027092.tif 000012
【図１１】
2017027092.tif 000013
【図１２】
2017027092.tif 000014