説明

データ処理方法、計算機、及びデータ処理プログラム

【課題】実行系計算機で更新されたデータを待機系計算機に反映させるための時間の増大を抑制し、待機系計算機でデータを回復させるための時間の増大を抑制する。
【解決手段】データを格納し、当該データの処理要求を受け付ける実行系計算機と、実行系計算機に替わってデータを処理可能な待機系計算機とを含む計算機システムで、実行系計算機は、データの更新要求を受け付けた場合には、データの更新内容を含む更新後ログを生成し、所定のタイミングで待機系計算機に送信し、待機系計算機は、実行系計算機から送信された更新後ログ及び格納しているデータに基づいて、更新前のデータを含む更新前ログを生成し、更新前ログの生成後、更新後ログに基づいて格納されたデータを更新し、更新されたデータの回復要求を受け付けた場合には、生成された更新前ログに基づいてデータを更新前の状態に回復させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の計算機を含む計算機システムに関し、特に、計算機システムの可用性を向上させる技術に関する。
【背景技術】
【0002】
情報化社会の発展に伴い、システム障害などによるサービスの停止によって大きな損害が発生するおそれがあるため、システムに大きな信頼性が要求されている。そこで、サービスを提供する第1計算機(実行系の計算機)に加えて、第1計算機に何らかの障害が発生した場合に処理を代行する第2計算機(待機系の計算機)を待機させてシステムを冗長化することによって、システム全体の信頼性を高めたり、第1計算機に格納されたデータと第2計算機に格納されたデータとを定期的に同期させることによって可用性を高めたりする技術が提案されている。例えば、ホットスタンバイ、ディザスタリカバリなどがこれに該当する。
【0003】
また、冗長化されたシステム全体を効率よく利用するために、第2計算機を単なる予備系として待機させているだけでなく、別の用途で利用することも一般的となっている。
【0004】
このように冗長化されたシステムでは、第1計算機に障害が発生した場合に第2計算機を第1計算機として代替させるまでの時間を短縮するため、あるいは、第2計算機におけるデータ処理の関係で、第1計算機における更新結果をできるだけ早く、かつ、トランザクションの整合性が保たれた状態で第2計算機に反映することが求められる。
【0005】
第1計算機に格納されたデータと第2計算機に格納されたデータとを同期させる技術として、トランザクションに多くの更新要求が含まれる場合には、第2計算機に送信する更新後ログをトランザクションごとではなく、トランザクションの途中で送信する技術が開示されている(特許文献1参照)。
【0006】
特許文献1に開示された技術によれば、トランザクション決着時のデータ送信量を抑制し、第2計算機でデータを同期させるため必要な更新時間を抑制することができる。
【0007】
また、第1計算機の更新後ログをトランザクションとは無関係に第2計算機に送信し、トランザクションとは無関係に第2計算機に格納されたデータを更新する技術が開示されている(特許文献2参照)。
【0008】
特許文献2に開示された技術によれば、第2計算機は第1計算機から送信された更新後ログを第2計算機に反映する機能のみ有しており、第1計算機がトランザクションの決着及び回復を制御する。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2004−133598号公報
【特許文献2】特開2000−259505号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
特許文献1に開示された技術では、第2計算機においてトランザクション単位に更新後ログを再構築してから反映するため、トランザクションによるデータの更新量が多い場合には、第1計算機のトランザクションが終了した後、第2計算機の更新が終了するまで多くの時間を必要とする。
【0011】
また、特許文献2に開示された技術は、第1計算機が回復用の更新前ログを送信するため、更新量が多いトランザクションを回復する場合に多くの時間が必要となる。
【0012】
このように、可用性を高める技術では、トランザクションによるデータの更新量が多い場合、トランザクション決着時又は回復時に、第2計算機でデータ同期させるために多くの時間が必要となる。
【0013】
この結果、例えば第1計算機に障害が発生し、第2計算機が処理を引き継ぐ場合に、第2計算機のデータを第1計算機が完了したところまで更新する時間、または第2計算機のデータをトランザクション実行前の状態に回復するために時間がかかり、高い可用性を保てない。
【0014】
本発明は、第2計算機において、データの更新量が多いトランザクションを決着させるために必要な時間の増大を抑えつつ、トランザクションが取り消された場合にデータを回復させるために必要な時間の増大を抑える技術の両立を提案することを目的とする。
【課題を解決するための手段】
【0015】
本発明の代表的な一形態では、複数の計算機を含む計算機システムにおけるデータ処理方法であって、前記複数の計算機には、データを格納し、当該データの処理要求を受け付ける第1計算機と、前記第1計算機に格納されたデータに対応するデータを格納する第2計算機とが含まれ、前記第1計算機は、前記第2計算機に接続する第1インタフェースと、前記第1インタフェースに接続される第1プロセッサと、前記第1プロセッサに接続される第1記憶部と、を備え、前記第2計算機は、前記第1計算機に接続する第2インタフェースと、前記第2インタフェースに接続される第2プロセッサと、前記第2プロセッサに接続される第2記憶部と、を備え、前記方法は、前記第2計算機が、前記第1記憶部に格納されたデータと、前記第2記憶部に格納されたデータとを同期させ、前記第1計算機が、前記データの更新要求を受け付けた場合には、更新後のデータを含む更新後ログを生成し、前記第1計算機が、前記生成された更新後ログを所定のタイミングで前記第2計算機に送信し、前記第2計算機が、前記第1計算機によって送信された更新後ログ、及び前記第2記憶部に格納されたデータに基づいて、更新前のデータを含む更新前ログを生成し、前記第2計算機が、前記更新前ログの生成後、前記第1計算機によって送信された更新後ログに基づいて、前記第2記憶部に格納されたデータを更新し、前記第1計算機が、更新されたデータの回復要求を受け付けた場合には、前記第2計算機に前記回復要求を送信し、前記第2計算機が、前記更新前ログに基づいて、前記第2記憶部に格納されたデータを更新前の状態に回復させる。
【発明の効果】
【0016】
本発明の一形態によれば、特に、データの更新量が多い場合に、第1計算機(実行系の計算機)で決着したデータ更新要求を第2計算機(待機系の計算機)に反映させるために必要な時間を抑えることができる。これにより、たとえば第1計算機に障害が発生した場合、第2計算機が処理を引き継ぐまでの時間を抑えることができる。さらに、データの更新が取り消された場合に、第2計算機でデータを回復させるために必要な時間を抑えることができる。これにより、たとえば第1計算機に障害が発生した場合、第2計算機のデータ更新を取り消してから処理をやり直すときの時間を抑えることができる。
【図面の簡単な説明】
【0017】
【図1】本発明の実施の形態のデータベースシステムの構成の一例を示すブロック図である。
【図2】本発明の実施の形態の第1計算機及び第2計算機の主記憶装置に記憶された情報の構成を示す図である。
【図3】本発明の実施の形態の実行系である第1計算機の更新後ログの一例を示す図である。
【図4】本発明の実施の形態の待機系である第2計算機の更新後ログの一例を示す図である。
【図5A】本発明の実施の形態の待機系の第2計算機の更新前ログの一例を示す図である。
【図5B】本発明の実施の形態の待機系の第2計算機の更新前ログの別の例を示す図である。
【図6】本発明の実施の形態の更新トランザクションを実行する際の第1計算機及び第2計算機の処理の概要を説明する図である。
【図7】本発明の実施の形態の更新トランザクションを実行する際の第1計算機及び第2計算機において各処理を実行するタイミングを説明する図である。
【図8】本発明の実施の形態の更新トランザクションを決着させる際の第1計算機及び第2計算機の処理の概要を説明する図である。
【図9】本発明の実施の形態の更新トランザクションを決着させる際の第1計算機及び第2計算機において各処理を実行するタイミングを説明する図である。
【図10】本発明の実施の形態の更新トランザクションを取り消してDBデータを回復させる際の第1計算機及び第2計算機の処理の概要を説明する図である。
【図11】本発明の実施の形態の更新トランザクションを取り消してDBデータを回復させる際の第1計算機及び第2計算機において各処理を実行するタイミングを説明する図である。
【図12】本発明の実施の形態のデータベースシステムの起動から終了までの手順を示すフローチャートである。
【図13】本発明の実施の形態の待機系の第2計算機で実行されるDBデータ更新処理の手順を示すフローチャートである。
【図14】本発明の実施の形態の待機系の第2計算機における同期点処理の手順を示すフローチャートである。
【図15A】本発明の実施の形態の待機系の第2計算機における更新トランザクション決着時の処理の手順を示すフローチャートである。
【図15B】本発明の実施の形態の待機系の第2計算機における更新トランザクション回復時の処理の手順を示すフローチャートである。
【発明を実施するための形態】
【0018】
以下、本発明が適用されるデータベースシステムの一実施形態について、図面を参照しながら説明する。
【0019】
図1は、本発明の実施の形態のデータベースシステムの構成の一例を示すブロック図である。
【0020】
本発明のデータベースシステムには、入力装置1、第1計算機3A及び第2計算機3Bが含まれる。入力装置1、第1計算機3A及び第2計算機3Bは、ネットワーク2を介して互いに接続されている。
【0021】
入力装置1は、データベース操作要求の入力を受け付け、第1計算機3Aに送信する。第1計算機3Aは、要求された処理を実行する実行系の計算機である。第2計算機3Bは、第1計算機3Aに障害が発生した場合に、処理を代行する待機系の計算機である。
【0022】
なお、データベースシステムには、複数の第1計算機3Aが含まれていてもよい。例えば、入力装置1ごとに接続される第1計算機3Aが設定され、第1計算機3Aのいずれかに障害が発生した場合には、第2計算機3Bの代わりに正常に稼動している他の第1計算機3Aが要求された処理を実行するようにしてもよい。
【0023】
第1計算機3Aは、CPU(中央演算装置、Central Processing Unit)4A、主記憶装置5A及びインタフェース6Aを含む。
【0024】
CPU4Aは、主記憶装置5Aに記憶されたプログラムを実行することによって、要求された処理を実行する。
【0025】
主記憶装置5Aは、CPU4Aによって実行されるプログラム及び当該プログラムによって処理されるデータが格納される。具体的には、主記憶装置5Aにデータベース管理システムが記憶されている。また、本発明の実施の形態のデータベースシステムは、管理対象のデータがすべて主記憶装置5Aに記憶される。
【0026】
インタフェース6Aは、ネットワーク2に接続される。第1計算機3Aは、インタフェース6Aを介して、入力装置1から送信されたデータベース操作要求を受信したり、第2計算機3Bにデータの更新情報などを送信したりする。
【0027】
第1計算機3Aは、入力装置1から送信されたデータベース操作要求を受け付け、主記憶装置5Aに記憶されたデータに対して要求された操作を実行する。また、第1計算機3Aは、待機系の計算機としても機能することができる。
【0028】
第2計算機3Bは、前述のように、第1計算機3Aの待機系として動作する。すなわち、第1計算機3Aが実行系として動作している間は待機し、第1計算機3Aに障害が発生すると、第1計算機3Aの処理を代行し、その後、実行系として動作することができる。したがって、第2計算機3Bは、第1計算機3Aの構成と同様に、CPU4B、主記憶装置5B及びインタフェース6Bを含む。また、各構成の機能については、第1計算機3Aと同様である。
【0029】
図2は、本発明の実施の形態の第1計算機3A及び第2計算機3Bの主記憶装置に記憶された情報の構成を示す図である。
【0030】
第1計算機3Aの主記憶装置5Aには、更新ログ送信契機管理部10A、DB管理部20A、更新ログ管理部30A、及び送受信部40Aが記憶される。更新ログ送信契機管理部10A、DB管理部20A、更新ログ管理部30A、及び送受信部40Aは、CPU4Aによって実行されるプログラムである。
【0031】
第1計算機3Aの主記憶装置5Aには、さらに、更新ログ送信契機50A、DBデータ60A、及び更新ログ70Aが記憶される。
【0032】
更新ログ送信契機管理部10Aは、更新ログを第2計算機3Bに送信する契機を管理する。DB管理部20Aは、入力装置1から送信されたデータベース操作要求を、送受信部40Aを介して受信し、要求された処理を実行する。
【0033】
更新ログ管理部30Aは、DB管理部20Aが要求された処理を実行した際に、DBデータ60Aが更新された場合には更新ログを作成し、作成された更新ログを更新ログ70Aに格納する。
【0034】
送受信部40Aは、入力装置1から送信されたデータベース操作要求を受信する。また、第2計算機3Bに更新後のデータなどを送信する。
【0035】
更新ログ送信契機50Aは、更新ログを第2計算機3Bに送信する契機を示す情報である。DBデータ60Aは、本発明の実施の形態のデータベースシステムによって管理されるデータである。更新ログ70Aは、DBデータ60Aに対する更新ログが格納される。更新ログ70Aには、更新後ログ71A及び更新前ログ72Aが含まれる。
【0036】
第2計算機3Bの主記憶装置5Bには、更新ログ送信契機管理部10B、DB管理部20B、更新ログ管理部30B、及び送受信部40Bが記憶される。更新ログ送信契機管理部10B、DB管理部20B、更新ログ管理部30B、及び送受信部40Bは、CPU4Bによって実行されるプログラムである。
【0037】
第2計算機3Bの主記憶装置5Bには、第1計算機3Aの主記憶装置5Aと同様に、更新ログ送信契機50B、DBデータ60B、及び更新ログ70Bが記憶される。
【0038】
更新ログ送信契機管理部10Bは、送受信部40Bを介して第1計算機3Aから通知された更新ログ送信契機を受信し、更新ログ送信契機50Bに記憶する。
【0039】
DB管理部20Bは、実行系として第2計算機3Bが機能する場合に、DB管理部20Aと同様の処理を実行する。
【0040】
更新ログ管理部30Bは、第1計算機3Aから送信された更新ログを処理する。更新ログ管理部30Bは、更新前ログ生成部31B、更新後ログ反映部32B及び更新前ログ反映部33Bを含む。
【0041】
更新前ログ生成部31Bは、DBデータ60B及び第1計算機3Aから送信された更新後ログに基づいて、更新前ログを生成し、更新ログ70Bの更新前ログ72Bに記憶する。
【0042】
更新後ログ反映部32Bは、第1計算機3Aから送信された更新後ログをDBデータ60Bに適用することによって、DBデータ60AとDBデータ60Bとを同期させる。
【0043】
更新前ログ反映部33Bは、更新前ログ72BをDBデータ60Bに適用することによって、更新されたデータを更新前の状態に戻す。
【0044】
送受信部40Bは、第1計算機3Aから送信された更新後ログを受信し、更新ログ管理部30Bに引き渡す。
【0045】
更新ログ送信契機50B、DBデータ60B、及び更新ログ70Bは、第1計算機3Aの主記憶装置5Aに記憶された更新ログ送信契機50A、DBデータ60A、及び更新ログ70Aと同様である。
【0046】
更新ログ70Bには、更新後ログ71B及び更新前ログ72Bが含まれる。更新後ログ71B及び更新前ログ72Bに格納される情報について説明すると、本発明の実施の形態では、第1計算機3Aは、データの更新要求を受け付けた場合には、トランザクションの決着要求(コミット要求)を受け付けるまではDBデータ60Aを更新せずに、更新後ログ71Aに更新内容を格納する。そして、所定のタイミングで、更新後ログ71Aを第2計算機3Bに送信する。
【0047】
第2計算機3Bは、更新後ログ71Aを受信すると、更新ログ管理部30Bの更新後ログ反映部32Bによって、受信した更新後ログ71Aを更新後ログ71Bに反映させる。さらに、第1計算機3Aから送信された更新後ログ71A及びDBデータ60Bに基づいて、更新前ログ生成部31Bによって更新前ログ72Bを生成する。
【0048】
なお、第1計算機3Aを実行系、第2計算機3Bを待機系としてそれぞれの構成について説明したが、前述のように、第1計算機3A及び第2計算機3Bは実行系としても待機系としても機能することが可能である。
【0049】
以下、図3〜図15を参照しながら、図2に示した各構成の詳細について説明する。
【0050】
図3は、本発明の実施の形態の実行系である第1計算機3Aの更新後ログ71Aの一例を示す図である。
【0051】
更新後ログ71Aは、位置情報716、更新内容717及び送信情報718を含む。また、図3に示す例では、更新後ログ71Aには、レコード711A、712A、713A、714A及び715Aの5つが含まれているが、レコード数に制限は無い。
【0052】
位置情報716は、DBデータ60Aの更新データが格納された物理的又は論理的な位置を一意に示す値である。例えば、更新データを格納する行のアドレス、行を一意に特定可能な通し番号、ページ番号などが該当する。L1、L2、L3、L4及びL5は、それぞれ、DBデータ60Aの更新データが格納された位置を示す値である。
【0053】
更新内容717は、更新後のデータ内容、操作内容を記録したものである。AFTER1、AFTER2、AFTER3、AFTER4及びAFTER5は、それぞれDBデータ60Aの位置L1、L2、L3、L4及びL5に格納されたデータの更新後の値である。
【0054】
送信情報718は、第2計算機3Bへの送信状況を管理する情報である。T1、T2、T3、T4及びT5は、それぞれ、レコード711A、712A、713A、714A及び715Aが第2計算機3Bに送信済みであるか未送信であるかを示す値である。例えば、T1〜T5の値に“0”又は“1”が設定され、“0”の場合は「未送信」、“1”の場合は「送信済み」とする。また、「送信準備完了」といった他の状態を示す値を設定するようにしてもよい。
【0055】
図4は、本発明の実施の形態の待機系である第2計算機3Bの更新後ログ71Bの一例を示す図である。
【0056】
更新後ログ71Bは、図3に示した更新後ログ71Aと同様に、位置情報716、更新内容717及び送信情報718を含む。また、図4に示す例では、更新後ログ71Bには、レコード711B、712B、713B、714B及び715Bの5つが含まれている。
【0057】
なお、待機系の第2計算機3Bから他の計算機に更新後ログを転送するように実装されていない場合には、送信情報718に値を設定しなくてもよい。
【0058】
図5A及び図5Bは、本発明の実施の形態の待機系の第2計算機の更新前ログ72Bの一例を示す図である。
【0059】
更新前ログ72Bは、前述のように、実行系の第1計算機3Aから待機系の第2計算機3Bに送信された更新後ログ、及びDBデータ60Bに基づいて、待機系の第2計算機3Bの更新前ログ生成部31Bによって生成される。更新前ログ72Bを利用して、トランザクションが取り消される場合に更新前のデータを回復させる。
【0060】
図5Aは、同じ位置情報を有するデータが二回以上更新された場合に、最も古い情報のみを記録する。図5Aに示す更新前ログ72Bには、位置情報726及び更新前内容727が含まれる。
【0061】
位置情報726は、更新されたデータの位置情報が記録され、図3の位置情報と同様である。更新前内容727には、位置情報726に対応するデータの更新前の内容、操作内容が記憶されている。図5Aに示した更新前ログ72Bには、レコード721B、722B、723B、724B及び725Bの5つのレコードを含んでいるが、レコード数に制限は無い。BEFORE1、BEFORE2、BEFORE3、BEFORE4及びBEFORE5は、それぞれDBデータ60Bの位置L1、L2、L3、L4及びL5に対応するデータの更新前の値である。
【0062】
一般的に、トランザクションが確定されるまでの間に複数回同じレコードが更新されても、当該トランザクションによる更新を取り消して更新前データに回復するには、トランザクション開始直前のデータに回復させる。したがって、最初にデータが更新された場合に取得された更新前データを保持しておけばよい。具体的には、更新前ログ生成部31Bによって、データ更新時に更新対象のデータの位置情報と一致するレコードが更新前ログ72Bに存在するか否かを判定し、存在しない場合にのみ更新前ログ72Bにレコードを追加する。
【0063】
図5Bは、図5Aに示した更新前ログ72Bとは別の例を示している。図5Bに示す更新前ログ72Bでは、図5Aに示した更新前ログ72Bの構成に加え、蓄積順序728が含まれており、同じ位置のレコードを2回以上更新する場合には出現した順に記録する。更新前のデータに回復させる場合には、最も古いデータを適用するようにしてもよいし、蓄積順序が新しい順にすべての更新前内容を適用してもよい。
【0064】
また、更新前ログ72Bに含まれている蓄積順序728は、順序が特定できれば、省略してもよい。
【0065】
図5Aに示す更新前ログ72Bでは、図5Bに示す更新前ログ72Bを利用した場合と比較して、更新前ログ72Bの容量を少なくすることができる。また、適用する更新前ログを最小限に抑えることができる。一方、図5Bに示す更新前ログ72Bでは、以前にデータが更新されたか否かを判定する必要がないという利点がある。本発明の実施の形態では、図5Aに示した形式の更新前ログ72Bを採用する。
【0066】
図6は、本発明の実施の形態の更新トランザクションを実行する際の第1計算機3A及び第2計算機3Bの処理の概要を説明する図である。
【0067】
トランザクション111には、更新操作121、122、123、124及び125が含まれている。更新操作には、状態、更新前のデータ及び更新後のデータが含まれる。「状態」は、更新操作が「実行済み」、「実行中」又は「未実行」のいずれかを示す値が設定される。「更新前」は、更新操作によるDBデータ60Aの更新前の値を表している。「更新後」は、更新操作によるDBデータ60Aの更新後の値を表している。
【0068】
トランザクション111に示す状態は、更新操作121、122、123及び124までが入力済みであって、更新操作124が実行されている途中となっている。
【0069】
また、更新操作121及び122について、対応する更新後ログのレコード711A及び712Aが、第2計算機3Bに既に送信済みとなっている。さらに、第2計算機3Bは、受信した更新後のデータの値をDBデータ60Bに反映させ、更新操作121及び122に対応する更新前ログ(レコード721B及び722B)を生成し、更新前ログ72Bに格納している。
【0070】
第1計算機3Aでは、更新操作123及び124によって、更新後ログのレコード713A及び714Aが更新後ログ71Aに蓄積されている。そして、第1計算機3Aは、更新ログ管理部30Aによって、更新ログ送信契機50Aを参照し、更新後ログ71Aの送信契機を検知する。送信契機を検知すると、更新ログ管理部30Aによって、更新後ログ71Aの各レコードの送信情報の値を参照し、レコード713A及び714Aが未送信であることを判定し、送受信部40Aに通知する。
【0071】
第1計算機3Aは、送受信部40Aを介して、未送信の更新後ログ71Aのレコード713A及び714Aを第2計算機3Bに送信する。その後、送信された各レコードの送信情報の値を「転送済み」に設定する。
【0072】
第2計算機3Bは、送受信部40Bを介して、第1計算機3Aの更新後ログ71Aのレコード713A及び714Aを受信し、更新後ログ71Bのレコード713B及び714Bとして格納する。
【0073】
第2計算機3Bは、更新ログ管理部30Bの更新前ログ生成部31Bによって、更新後ログ71Bのレコード713B及び714Bの位置情報を参照し、DBデータ60BのL3及びL4の位置から、更新前の値BEFORE3及びBEFORE4を取得する。そして、更新前ログ72Bのレコード723B及び724Bを生成し、蓄積する。
【0074】
また、第2計算機3Bの更新ログ管理部30Bの更新後ログ反映部32Bは、更新後ログ71Bのレコード713B及び714Bの更新内容を、DBデータ60BのL3及びL4の位置に反映する。その後、更新後ログ71Bのレコード713B及び714Bを破棄する。
【0075】
図7は、本発明の実施の形態の更新トランザクションを実行する際の第1計算機3A及び第2計算機3Bにおいて各処理を実行するタイミングを説明する図である。
【0076】
図7に示す各処理は、図6にて説明した各処理に対応する。処理P1及びP3は第1計算機3Aによって実行される処理であり、処理P2及びP4は第2計算機3Bによって実行される処理である。
【0077】
処理P1において、第1計算機3Aは、更新後ログ71Aのレコード711A及び712Aを生成し、第2計算機3Bに送信する。その後、処理P3を実行する。
【0078】
第2計算機3Bは、第1計算機3Aから、更新後ログ71Aのレコード711A及び712Aを受信すると、処理P2において、更新後ログ71Aのレコード711A及び712Aを、第2計算機3Bの更新後ログ71Bのレコード711B及び712Bとして格納する。さらに、更新前ログ72Bのレコード721B及び722Bを生成し、その後、DBデータ60Bに更新後ログ71Bのレコード711B及び712Bを反映する。処理P2は、第1計算機3Aにおける処理P3と並列して実行される。
【0079】
処理P3において、第1計算機3Aは、更新後ログ71Aのレコード713A及び714Aを生成し、第2計算機3Bに送信する。その後、処理を続行する。
【0080】
第2計算機3Bは、更新後ログ71Aのレコード713A及び714Aを第1計算機3Aから受信すると、処理P4において、更新後ログ71Bのレコード713B及び714Bとして格納する。さらに、更新前ログ72Bのレコード723B及び724Bを生成し、その後、DBデータ60Bに更新後ログ71Bのレコード713B及び714Bを反映させる。
【0081】
従来の方法では、実行系の第1計算機3Aでトランザクションが完了するまで、待機系の第2計算機3Bに更新後データが反映されなかったが、本発明の実施の形態では、待機系で更新前ログ72Bを生成するため、トランザクションの処理中であっても所定のタイミング(更新ログ送信契機)で待機系の第2計算機3Bに更新データを反映する。このようにすることによって、第1計算機3Aにおける処理P3と、第2計算機3Bにおける処理P2とを、並列して実行することが可能となる。したがって、並列して処理を実行する分だけトランザクションの結果を待機系の計算機に反映させる時間を短縮させることができる。これにより、たとえば第1計算機に障害が発生したり計画的に停止させたときに、第1計算機が更新した内容を第2計算機に反映させて処理を引き継ぐまでの時間を抑えることができる。
【0082】
以下、図6に示した状態から処理を継続し、すべての更新操作が正常に終了し、トランザクションを決着させる場合(コミット)、及び処理に失敗した場合などトランザクションを取り消して回復させる場合(ロールバック)についてそれぞれ説明する。トランザクションを決着させる場合については、図8及び図9を参照しながら説明する。また、トランザクションを取り消して回復させる場合については、図10及び図11を参照しながら説明する。
【0083】
図8は、本発明の実施の形態の更新トランザクションを決着させる際の第1計算機3A及び第2計算機3Bの処理の概要を説明する図である。
【0084】
トランザクション211には、更新操作221、222、223、224及び225が含まれている。図8には、図6に示した処理が実行された後の状態を示している。更新操作221、222、223、224及び225は、それぞれ図6の更新操作121、122、123、124及び125に対応する。図8に示す状態では、すべての更新操作が実行済みとなっており、更新操作225までの更新結果がDBデータ60Bに反映済みであり、トランザクションを決着させている状態となっている。
【0085】
第1計算機3Aは、この状態でトランザクションの決着要求を受け付けると、更新ログ管理部30Aによって、更新後ログ71Aのすべてのレコードの更新内容を第1計算機3AのDBデータ60Aに反映する。その後、送受信部40Aによって第2計算機3Bに決着要求を通知する。
【0086】
第2計算機3Bは、第1計算機3Aからの決着通知を受信すると、データの更新が確定するため、更新前ログ72Bが不要となるため、更新ログ管理部30Bによって蓄積された更新前ログ72Bを破棄する。
【0087】
図9は、本発明の実施の形態の更新トランザクションを決着させる際の第1計算機3A及び第2計算機3Bにおいて各処理を実行するタイミングを説明する図である。
【0088】
図9には、更新トランザクションの最初の処理(P1)から各処理を示しており、処理P1からP4は、図7と共通である。
【0089】
処理P5において、第1計算機3Aは、更新後ログ71Aのレコード715Aを生成した後、トランザクションの決着要が通知されると、送受信部40Aを介して、更新後ログ71Aのレコード715A及びトランザクションの決着通知を第2計算機3Bに送信する。なお、このとき、第1計算機3Aで実行されている処理P5と並列して第2計算機3Bで処理P4が実行されている。
【0090】
第2計算機3Bは、第1計算機3Aから、更新後ログ71Aのレコード715Aを受信すると、処理P6において、レコード715Aを更新後ログ71Bのレコード715Bとして格納する。さらに、更新前ログ72Bのレコード725Bを生成する。その後、更新後ログ71Bのレコード715BをDBデータ60Bに反映し、更新後ログ71Bのレコード715Bを破棄する。
【0091】
さらに、第2計算機3Bは、トランザクションの決着通知を受信し、トランザクション開始前の状態に戻す必要がなくなったため、更新前ログ72Bを破棄する。
【0092】
このように、第1計算機3Aにおいてトランザクションを処理している間に、第2計算機3Bで更新処理を開始するため、トランザクションの決着時には、第2計算機3BのDBデータ60Bの更新処理の少なくとも一部は完了している。したがって、多くの更新処理が含まれるトランザクションであっても、トランザクション決着時に待機系の計算機に更新結果を反映させるために必要な時間を抑制することができる。また、トランザクションの決着時に、第1計算機が生成し転送する情報量は従来技術どおりであるため、第1計算機のトランザクション決着時における処理時間は従来技術のままである。
【0093】
図10は、本発明の実施の形態の更新トランザクションを取り消してDBデータを回復させる際の第1計算機3A及び第2計算機3Bの処理の概要を説明する図である。
【0094】
トランザクション311には、更新操作321、322、323及び324と、回復通知325が含まれている。図10には、図6に示した処理が実行された後の状態を示している。更新操作321、322、323及び324は、それぞれ図6の更新操作121、122、123及び124に対応する。図10に示す状態では、更新操作324までの処理が実行済みとなっており、更新操作324までの更新結果がDBデータ60Bに反映済みであり、トランザクションを回復させている状態となっている。
【0095】
第1計算機3Aは、トランザクションの回復要求を受け付けると、更新ログ管理部30Aによって、更新後ログ71Aを破棄する。第1計算機3Aでは、トランザクションの決着要求を受け付けてからDBデータ60Aに更新結果を反映させるため、トランザクションの回復は、更新後ログ71Aを破棄するだけでよい。この場合には、更新前ログ72Aを生成せずに、トランザクションを取り消し、DBデータ60Aを更新前の状態に回復させることができる。第1計算機3Aは、その後、送受信部40Aによって第2計算機3Bに回復を通知する。
【0096】
第2計算機3Bは、第1計算機3Aから回復通知を受信すると、更新前ログ反映部33Bによって蓄積された更新前ログ72Bを第2計算機3BのDBデータ60Bに反映することによって、第2計算機3BのDBデータ60Bをトランザクション開始前の状態に回復させる。
【0097】
図11は、本発明の実施の形態の更新トランザクションを取り消してDBデータを回復させる際の第1計算機3A及び第2計算機3Bにおいて各処理を実行するタイミングを説明する図である。
【0098】
図11には、更新トランザクションの最初の処理(P1)から各処理を示しており、処理P1からP4は、図7と共通である。
【0099】
処理P7において、第1計算機3Aは、トランザクションの回復要求を受け付けると、送受信部40Aを介して、トランザクションの回復通知を第2計算機3Bに送信する。このとき、更新後ログ71Aを破棄する。
【0100】
処理P8において、第2計算機3Bは、第1計算機3Aからトランザクション回復通知を受信すると、蓄積した更新前ログ72BをDBデータ60Bに反映し、トランザクション開始前の状態にDBデータ60Bを回復させる。
【0101】
以上のように、本発明の実施の形態では、第2計算機3Bが第1計算機3Aから更新後ログ71Aを受信したタイミングで更新前ログを生成するため、トランザクション回復時などに更新前ログを第1計算機3Aからあらためて取得する必要がない。したがって、第2計算機3Bは、既に生成されている更新前ログをDBデータ60Bに適用することによって、DBデータ60Bをトランザクション開始前の状態に戻すことが可能となり、回復に必要な時間を抑制することができる。これにより、第1計算機に障害が発生したり計画的に停止させたときに、第2計算機のデータをトランザクション実行前に戻してから処理を引き継ぐまでの時間を抑えることができる。
【0102】
図12は、本発明の実施の形態のデータベースシステムの起動から終了までの手順を示すフローチャートである。
【0103】
本発明の実施の形態のデータベースシステムにおける処理を開始するために、まず、実行系の計算機(第1計算機3A)及び待機系の計算機(第2計算機3B)が起動される。
【0104】
第1計算機3AのCPU4Aは、新たに待機系の計算機(第2計算機3B)が追加された場合には、追加された計算機にDBデータ60Aを送信し、データを同期させる。また、第2計算機3BにDBデータ60Bが格納されている場合には、更新ログ管理部30Aによって、更新ログ70Aを待機系の計算機に送信し、当該ログをDBデータ60Bに適用することによって、DBデータを同期させる(S101A)。なお、待機系の第2計算機3Bは、一台であってもよいし、複数台であってもよい。複数台の第2計算機3Bに、更新ログ70Aを送信する場合には、マルチキャスト通信などによって一括して送信すると効率がよい。
【0105】
第2計算機3BのCPU4Bは、データ同期処理として、第1計算機3Aの更新後ログ71Aを受信すると、更新ログ管理部30Bによって、受信した更新後ログ71Aのレコードを更新後ログ71Bに格納する(S101B)。また、DBデータ60Aを受信した場合には、DBデータ60Bとして格納する。
【0106】
第1計算機3AのCPU4Aは、更新ログ送信契機管理部10Aによって、更新ログ送信契機情報を作成する。さらに、生成された更新ログ送信契機情報を更新ログ送信契機50Bに格納するとともに、第2計算機3Bの更新ログ送信契機管理部10Bに送信する(S102A)。
【0107】
更新ログ送信契機情報は、第1計算機3Aが更新後ログ71Aを送信する契機である。例えば、未送信の更新後ログ71Aの量が所定の容量に達した場合、一定の時間間隔、若しくは特定の操作が実行された場合などである。入力装置1からユーザが指定するようにしてもよいし、データベースシステムがシステム環境に基づいて自動的に決定するようにしてもよい。
【0108】
未送信の更新後ログ71Aの量が所定の容量に達した場合に第1計算機3Aが更新後ログ71Aを送信することによって、待機系の計算機に過剰な負荷を与えることを防ぐことができる。また、一定の時間間隔で第1計算機3Aが更新後ログ71Aを送信することによって、トランザクションの開始から終了までの時間が長く、更新頻度が少ない場合であっても周期的に待機系の計算機のDBデータを更新することができる。また、複数の契機を設定し、いずれか一方の契機となった場合に更新後ログを送信するようにしてもよい。例えば、更新後ログの容量と一定時間間隔とを併用すれば、トランザクションの実行時間が比較的長く、特定のタイミングに集中してデータが更新される場合などに対応することができる。
【0109】
第2計算機3BのCPU4Bは、更新ログ送信契機情報を受信すると、更新ログ送信契機管理部10Bによって、受信した更新ログ送信契機情報を更新ログ送信契機50Bに格納する(S102B)。
【0110】
第1計算機3AのCPU4Aは、更新ログ管理部30Aによって、入力装置1から入力された更新操作に基づいて更新後ログを生成し、更新後ログ71Aに格納する(S103A)。さらに、更新ログ管理部30Aによって、更新ログ送信契機50Aを参照し、更新後ログ71Aの送信契機になった場合には、更新後ログ71Aに格納された未送信のレコードを第2計算機3Bに送信する。
【0111】
第2計算機3BのCPU4Bは、更新ログ管理部30Bによって、受信した更新後ログ71Aを更新後ログ71Bに格納する(S103B)。その後、更新前ログ生成部31Bによって更新前ログ72Bを生成し、さらに、更新後ログ反映部32Bによって更新後ログ71BをDBデータ60Bに反映させる。なお、待機系の計算機(第2計算機3B)におけるDBデータ更新処理(S103B)の詳細については、図13にて説明する。
【0112】
第1計算機3AのCPU4Aは、同期点処理を実行する(S104A)。同期点処理には、「決着(コミット)」又は「回復(ロールバック)」の2種類がある。
【0113】
第1計算機3AのCPU4Aは、同期点処理が「決着」の場合には、更新ログ管理部30Aによって、更新後ログ71Aのうち未送信のレコードを、送受信部40Aを介して第2計算機3Bに送信する。さらに、同期点処理が「決着」であることを第2計算機3Bに通知する。
【0114】
第2計算機3BのCPU4Bは、トランザクションの決着通知を受信すると、更新後ログ71Bが存在する場合には、更新ログ管理部30Bによって、S103Bに相当する処理を実行して未処理の更新ログを適用する。そして、蓄積した更新前ログ72Bを破棄する(S104B)。
【0115】
なお、待機系の計算機(第2計算機3B)における同期点処理(S104B)の詳細については、図14にて説明する。また、待機系の計算機における同期点処理が「決着」の場合の処理については、図15Aにて説明する。
【0116】
一方、第1計算機3AのCPU4Aは、同期点処理が「回復」の場合には、更新ログ管理部30Aによって、更新後ログ71Aを破棄する(S104A)。また、送受信部40Aを介して同期点処理が「回復」であることを第2計算機3Bに通知する。
【0117】
第2計算機3BのCPU4Bは、トランザクションの回復通知を受信すると、更新ログ管理部30Bの更新前ログ反映部33Bによって、更新前ログ72BをDBデータ60Bに反映し、トランザクションを回復させる(S104B)。また、待機系の計算機における同期点処理が「回復」の場合の処理については、図15Bにて説明する。
【0118】
第1計算機3AのCPU4Aは、同期点処理(S104A)が終了すると、処理を終了するか否かを判定する(S105A)。処理対象のデータが残っている場合、新たに処理要求を受け付ける場合など、処理を継続する場合には(S105Aの結果が「No」)、S103A以降の処理を実行する。一方、すべての要求の処理を完了し、システムを終了させる場合には(S105Aの結果が「Yes」)、本処理を終了する。
【0119】
図13は、本発明の実施の形態の待機系の第2計算機3Bで実行されるDBデータ更新処理(S103B)の手順を示すフローチャートである。
【0120】
本処理では、更新ログ管理部30Bによって、更新処理実行時に更新前ログ72Bを生成し、更新後ログ71BをDBデータ60Bに反映させる。
【0121】
第2計算機3BのCPU4Bは、まず、更新ログ管理部30Bによって、第1計算機3Aによって送信された更新後ログ71Aのレコードを第2計算機3Bの更新後ログ71Bに格納する(S311)。
【0122】
第2計算機3BのCPU4Bは、更新ログ管理部30Bによって、更新後ログ71Bの各レコードについて、以下に示すS313からS318の処理を実行する(S312)。
【0123】
第2計算機3BのCPU4Bは、更新ログ管理部30Bによって、更新後ログ71Bから取得されたレコードの位置情報を取得し、DBデータ60Bにおける更新対象のレコードの位置を特定する(S313)。
【0124】
第2計算機3BのCPU4Bは、更新ログ管理部30Bの更新前ログ生成部31Bによって、対応する位置の更新前ログ72Bを検索し、同じ位置情報のレコードが存在するか否かを判定する(S314)。すでに同じ位置情報のレコードが存在する場合には(S314の結果が「Yes」)、更新前ログを生成せずに、S317以降の処理を実行する。
【0125】
第2計算機3BのCPU4Bは、更新対象のレコードと同じ位置情報のレコードが更新前ログ72Bに存在しない場合には(S314の結果が「No」)、DBデータ60Bから当該位置情報のレコードの内容を取得し、更新前の内容とする(S315)。
【0126】
第2計算機3BのCPU4Bは、更新ログ管理部30Bの更新前ログ生成部31Bによって、S313の処理で特定した更新位置情報と、S315の処理で取得した更新前の内容とを含むレコードを生成し、更新前ログ72Bに格納する(S316)。
【0127】
第2計算機3BのCPU4Bは、更新ログ管理部30Bの更新後ログ反映部32Bによって、S315の処理で特定したDBデータ60Bの更新位置に、更新後ログ71Bの内容を反映する(S317)。さらに、処理対象の更新後ログ71Bのレコードを破棄する(S318)。このように、待機系の計算機(第2計算機3B)では、トランザクションの同期方法にかかわらず、更新データをDBデータ60Bに反映させる。
【0128】
第2計算機3BのCPU4Bは、更新ログ管理部30Bによって、次に処理する更新後ログ71Bのレコードの存在を判定し、処理するレコードが存在する場合にはS313からS318までの処理を繰り返し、存在しない場合には本処理を終了する(S319)。
【0129】
以上の処理によって、第2計算機3Bにおいて、DBデータ60Bが反映され、更新前ログ72Bが生成される。
【0130】
図14は、本発明の実施の形態の待機系の第2計算機3Bにおける同期点処理(S104B)の手順を示すフローチャートである。
【0131】
同期点処理には、前述のように、「決着」及び「回復」の2種類がある。「決着」は、いわゆるコミット処理であり、トランザクションに含まれる更新処理をDBデータに反映させる。一方、「回復」は、いわゆるロールバックであり、トランザクションに含まれる更新処理を取り消し、DBデータをトランザクション開始前の状態に戻す処理である。
【0132】
第2計算機3BのCPU4Bは、第1計算機3Aから通知された同期点処理が「決着」であるか否かを判定する(S401)。同期点処理が「決着」である場合には(S401の結果が「Yes」)、対応する同期点処理「決着」を実行する(S402)。更新トランザクション決着時の処理の詳細については、図15Aにて説明する。同期点処理が「回復」である場合には(S401の結果が「No」)、対応する同期点処理「回復」を実行する(S403)。更新トランザクション回復時の処理の詳細については、図15Bにて説明する。
【0133】
図15Aは、本発明の実施の形態の待機系の第2計算機3Bにおける更新トランザクション決着時の処理(S402)の手順を示すフローチャートである。
【0134】
第2計算機3BのCPU4Bは、まず、第1計算機3Aから同期点処理が「決着」である旨の通知とともに未更新の更新後ログを受信した場合には、DBデータ更新処理を実行する(S411)。DBデータ更新処理は、図13のS311からS319までの処理と同じである。
【0135】
第2計算機3BのCPU4Bは、受信した更新後ログをDBデータ60Bにすべて反映させると、更新ログ管理部30Bによって、更新前ログ72Bのレコードをすべて破棄する(S412)。データの更新が確定したため、更新前にデータを戻す必要がなくなったからである。その後、本処理を終了する。
【0136】
図15Bは、本発明の実施の形態の待機系の第2計算機3Bにおける更新トランザクション回復時の処理(S403)の手順を示すフローチャートである。
【0137】
第2計算機3BのCPU4Bは、更新ログ管理部30Bによって、更新前ログ72Bに含まれる各レコードに対し、S422からS425までの処理を実行する(S421)。
【0138】
第2計算機3BのCPU4Bは、更新ログ管理部30Bの更新前ログ反映部33Bによって、更新前ログ72Bの処理対象のレコードの更新位置情報に基づいて、DBデータ60Bの更新前位置を取得する(S422)。
【0139】
第2計算機3BのCPU4Bは、更新ログ管理部30Bの更新前ログ反映部33Bによって、更新前ログ72Bの処理対象のレコードの更新前内容を取得し、S422の処理で取得されたDBデータ60Bの更新前位置に反映させる(S423)。このようにして、トランザクション開始前のデータを更新前ログ72Bから取得し、DBデータ60Bを更新前の状態に戻す。
【0140】
第2計算機3BのCPU4Bは、更新ログ管理部30Bの更新前ログ反映部33Bによって、次に処理する対象の更新前ログ72Bのレコードが存在するか否かを判定し(S424)、処理するレコードが残っている場合にはS421の処理に戻る。
【0141】
第2計算機3BのCPU4Bは、更新前ログ72Bのすべてのレコードについて処理が完了すると、更新ログ管理部30Bの更新前ログ反映部33Bによって、更新前ログ72Bを破棄する(S425)。
【0142】
本発明の実施の形態では、実行系の計算機(第1計算機3A)は、トランザクションの同期処理が実行されたか否かにかかわらず、更新ログ送信契機に基づいて更新ログが待機系の計算機(第2計算機3B)に送信される。第2計算機3Bは、第1計算機3Aから送信された更新後ログ71Aを更新後ログ71Bとして格納し、更新後ログ71B及び更新前のDBデータ60Bに基づいて更新前ログ72Bを生成する。そして、トランザクションの同期処理の実行に関わらず更新後ログ71BをDBデータ60Bに反映させる。
【0143】
本発明の実施の形態によれば、トランザクション決着時にすべてのデータを更新する必要がないため、データの更新量が多い場合であっても、第1計算機3A及び第2計算機3Bに格納されたデータを迅速に同期させることができる。さらに、更新ログ送信契機に基づいて更新ログが周期的に第2計算機3Bに送信されるため、第1計算機3Aにおける更新処理を並列して更新前ログ72Bを第2計算機3Bで生成することが可能となる。したがって、第1計算機3Aでトランザクションを決着させ、更新結果を第2計算機3Bに反映させるために必要な時間をさらに短縮することが可能となる。
【0144】
また、本発明の実施の形態によれば、第2計算機3Bで生成された更新前ログ72BをDBデータ60Bに反映することによって更新前の状態に回復させることができる。したがって、第1計算機3Aが更新前ログ72Aを第2計算機3Bに送信する必要がなく、トランザクションの回復を通知すればよい。よって、トランザクション回復時において、更新前ログ72Aの送受信に必要な時間を削減することができ、特に更新データが多い場合には、ネットワークトラフィックを削減することができる。
【0145】
以上より、本発明の実施の形態によれば、トランザクション決着時間の増大を抑えるとともに、トランザクション回復時に待機系の計算機(第2計算機3B)における回復時間の増大を抑えることができる。
【0146】
本発明の実施の形態では、第1計算機3Aにおいて更新前ログ72Aが生成されないが、トランザクション決着時までDBデータ60Aに更新操作が反映されないため、更新前ログ72Aを必要としない。
【0147】
本発明の実施の形態の変形例として、第1計算機3Aにおいて、更新後ログ71Aを作成しながら、DBデータ60Aに更新結果を随時反映させるようにしてもよい。こうすることによって、トランザクション決着時に更新後ログ71AをDBデータ60Aに反映させる時間が不要となるため、トランザクションの決着時間をさらに短縮することができる。この場合には、トランザクション回復時に更新前ログ72Aが必要となるが、第2計算機3Bで生成された更新前ログ72Bを取得し、更新前ログ72Aとして格納するようにしてもよい。このとき、更新ログ送信契機に連動して、随時、更新前ログ72Bを取得するようにすれば、トランザクションの回復時に第1計算機3Aがまとめて取得する必要がなく、トランザクションの回復に必要な時間の増大も抑えることができる。
【0148】
さらに、本発明の実施の形態の別の変形例として、通常状態において、トランザクションが取り消されることがまれな場合には、実行系の計算機が何らかの要因で不安定になっている可能性がある。そこで、トランザクションの回復後、待機系の計算機が処理要求を受け付けるように、実行系の計算機を切り替えるように制御してもよい。
【符号の説明】
【0149】
1 入力装置
2 ネットワーク
3A 第1計算機
3B 第2計算機
4A、4B CPU
5A、5B 主記憶装置
10A、10B 更新ログ転送契機管理部
20A、20B DBデータ
30A、30B 更新ログ管理部
31B 更新前ログ生成部
32B 更新後ログ反映部
33B 更新前ログ反映部
40A、40B 送受信部
70A、70B 更新ログ
71A、71B 更新後ログ
71A、72B 更新前ログ

【特許請求の範囲】
【請求項1】
複数の計算機を含む計算機システムにおけるデータ処理方法であって、
前記複数の計算機には、データを格納し、当該データの処理要求を受け付ける第1計算機と、前記第1計算機に格納されたデータに対応するデータを格納する第2計算機とが含まれ、
前記第1計算機は、前記第2計算機に接続する第1インタフェースと、前記第1インタフェースに接続される第1プロセッサと、前記第1プロセッサに接続される第1記憶部と、を備え、
前記第2計算機は、前記第1計算機に接続する第2インタフェースと、前記第2インタフェースに接続される第2プロセッサと、前記第2プロセッサに接続される第2記憶部と、を備え、
前記方法は、
前記第1計算機が、前記第1記憶部に格納されたデータを、前記第2記憶部に格納されたデータと同期させ、
前記第1計算機が、前記データの更新要求を受け付けた場合には、更新後のデータを含む更新後ログを生成し、
前記第1計算機が、前記生成された更新後ログを所定のタイミングで前記第2計算機に送信し、
前記第2計算機が、前記第1計算機によって送信された更新後ログ、及び前記第2記憶部に格納されたデータに基づいて、更新前のデータを含む更新前ログを生成し、
前記第2計算機が、前記更新前ログの生成後、前記第1計算機によって送信された更新後ログに基づいて、前記第2記憶部に格納されたデータを更新し、
前記第1計算機が、更新されたデータの回復要求を受け付けた場合には、前記第2計算機に前記回復要求を送信し、
前記第2計算機が、前記更新前ログに基づいて、前記第2記憶部に格納されたデータを更新前の状態に回復させることを特徴とするデータ処理方法。
【請求項2】
前記第1計算機及び前記第2計算機には、前記データを管理するデータベースが稼動しており、
前記第2計算機は、前記第1計算機に替わって前記データの処理要求を受け付け可能であり、
前記第1計算機に受け付けられたデータ更新要求は、少なくとも一以上の更新操作を含むトランザクションであって、
前記方法は、
前記第1計算機が、前記トランザクションの決着要求を受け付けた場合には、前記生成された更新後ログに基づいて、前記第1記憶部に格納されたデータを更新し、
前記第1計算機が、前記第2計算機に前記決着要求を送信し、
前記第2計算機が、前記更新前ログを削除し、
前記第1計算機が、前記トランザクションの回復要求を受け付けた場合には、前記生成された更新後ログを削除し、
前記第1計算機が、前記第2計算機に前記回復要求を送信し、
前記第2計算機が、前記更新前ログに基づいて、前記第2記憶部に格納されたデータを回復させることを特徴とする請求項1に記載のデータ処理方法。
【請求項3】
前記所定のタイミングは、前記生成された更新後ログの容量が所定の容量を超えたタイミングであることを特徴とする請求項1に記載のデータ処理方法。
【請求項4】
前記所定のタイミングは、所定の時間間隔で周期的に発生するタイミングであることを特徴とする請求項1に記載のデータ処理方法。
【請求項5】
前記更新後ログは、さらに、前記更新後のデータが格納された位置情報とを含み、
前記方法は、
前記第2計算機が、前記第1計算機から前記更新後ログを受信した場合には、前記更新後ログに含まれる更新後のデータの位置情報を取得し、
前記第2計算機が、前記取得された位置情報に基づいて、前記第2記憶部から更新前のデータを取得し、
前記第2計算機が、前記更新前ログとして、前記更新前のデータと、前記取得された位置情報とを前記第2記憶部に記録することを特徴とする請求項1に記載のデータ処理方法。
【請求項6】
前記方法は、
前記第2計算機が、前記取得した更新後のデータの位置情報が前記更新前ログに含まれているか否かを判定し、
前記取得した更新後のデータの位置情報が前記更新前ログに含まれていない場合に、前記第2計算機が、当該位置情報に対応する更新前ログを生成することを特徴とする請求項5に記載のデータ処理方法。
【請求項7】
前記方法は、
前記第2計算機が、前記第1計算機が前記データの更新要求を受け付けた順に、前記更新前ログを生成し、
前記回復要求を受け付けた場合には、前記第2計算機が、前記更新前ログが生成された順序とは逆の順序で前記更新前ログを前記第2記憶部に格納されたデータに反映させることによって、前記第2記憶部に格納されたデータを回復させることを特徴とする請求項5に記載のデータ処理方法。
【請求項8】
前記方法は、
前記回復要求を受け付けた場合には、前記第1計算機が、前記第2計算機によって生成された更新前ログを、前記第2計算機から取得し、
前記第1計算機が、前記取得した更新前ログに基づいて、前記第1記憶部に格納されたデータを回復させることを特徴とする請求項1に記載のデータ処理方法。
【請求項9】
前記複数の計算機には、複数の前記第1計算機が含まれ、
前記方法は、
前記第1計算機が、前記生成された更新後ログを所定のタイミングで他の第1計算機に送信し、
前記第1計算機が、前記他の第1計算機によって送信された更新後ログ、及び前記第1計算機の第1記憶部に格納されたデータに基づいて、更新前のデータを含む更新前ログを生成し、
前記第1計算機が、前記更新前ログの生成後、前記他の第1計算機によって送信された更新後ログに基づいて、前記第2記憶部に格納されたデータを更新し、
前記第1計算機が、前記更新されたデータの回復要求を前記他の第1計算機から受信した場合には、前記更新前ログに基づいて、前記第1計算機の第1記憶部に格納されたデータを、前記他の第1計算機による更新の前の状態に回復させることを特徴とする請求項1に記載のデータ処理方法。
【請求項10】
前記方法は、前記第1計算機が前記回復要求を受け付けた場合には、前記第2記憶部に格納されたデータの回復が完了した後に、前記第2計算機が、前記第1計算機の替わりに管理するデータの処理要求を受け付けることを特徴とする請求項1に記載のデータ処理方法。
【請求項11】
データを格納し、当該データを他の計算機に格納されたデータと同期させる計算機であって、
前記他の計算機に接続するインタフェースと、前記インタフェースに接続されるプロセッサと、前記プロセッサに接続され、前記データを格納する記憶部と、を備え、
前記プロセッサは、
前記記憶部に格納されたデータを前記他の計算機に格納されたデータと同期させ、
前記記憶部に格納されたデータの更新要求を受け付けた場合に、更新後のデータを含む更新後ログを生成し、
前記生成された更新後ログを所定のタイミングで前記他の計算機に送信し、
前記更新後ログを受信した場合には、前記受信した更新後ログ及び前記記憶部に格納されたデータに基づいて、更新前のデータを含む更新前ログを生成し、
前記更新前ログの生成後、前記受信した更新後ログに基づいて、前記記憶部に格納されたデータを更新し、
更新されたデータの回復要求を受け付けた場合には、前記更新前ログに基づいて、前記記憶部に格納されたデータを更新前の状態に回復させることを特徴とする計算機。
【請求項12】
記憶部に格納されたデータを他の計算機に格納されたデータと同期させる計算機で実行されるデータ処理プログラムであって、
前記格納されたデータを前記他の計算機に格納されたデータと同期させる手順と、
前記格納されたデータの更新要求を受け付けた場合に、更新後のデータを含む更新後ログを生成する手順と、
前記生成された更新後ログを所定のタイミングで前記他の計算機に送信する手順と、
前記更新後ログを受信した場合には、前記受信した更新後ログ及び前記記憶部に格納されたデータに基づいて、更新前のデータを含む更新前ログを生成する手順と、
前記更新前ログの生成後、前記受信した更新後ログに基づいて、前記記憶部に格納されたデータを更新する手順と、
更新されたデータの回復要求を受け付けた場合には、前記更新前ログに基づいて、前記記憶部に格納されたデータを更新前の状態に回復させる手順と、を含むことを特徴とするデータ処理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5A】
image rotate

【図5B】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15A】
image rotate

【図15B】
image rotate


【公開番号】特開2010−257284(P2010−257284A)
【公開日】平成22年11月11日(2010.11.11)
【国際特許分類】
【出願番号】特願2009−107481(P2009−107481)
【出願日】平成21年4月27日(2009.4.27)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】