(57)【要約】      （修正有）【課題】依存関係を有する複数の更新対象の一部のみが更新されることを防ぐ情報処理装置、システム、方法及びプログラムを提供する。【解決手段】依存関係を有する複数のデータを更新した他のコンピュータから、更新後の複数のデータから生成された第１のハッシュ値を受信した場合、データ格納部に格納された、更新前の複数のデータのバックアップを生成し、更新後の複数のデータを他のコンピュータから受信することを開始し、受信したデータで、データ格納部に格納されている複数のデータを更新する。他のコンピュータとの通信中に他のコンピュータがダウンした場合、データ格納部に格納されている複数のデータから第２のハッシュ値を生成し、第１のハッシュ値と第２のハッシュ値とが一致しない場合、生成されたバックアップによって、データ格納部に格納された複数のデータをリストアする。【選択図】図８
2017162062.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
依存関係を有する複数のデータを更新した他のコンピュータから、更新後の当該複数のデータから生成された第１のハッシュ値を受信した場合、データ格納部に格納された、更新前の前記複数のデータのバックアップを生成し、
更新後の前記複数のデータを前記他のコンピュータから受信することを開始し、受信したデータで、前記データ格納部に格納されている前記複数のデータを更新し、
前記他のコンピュータとの通信中に前記他のコンピュータがダウンした場合、前記データ格納部に格納されている前記複数のデータから第２のハッシュ値を生成し、
前記第１のハッシュ値と前記第２のハッシュ値とが一致しない場合、生成された前記バックアップによって、前記データ格納部に格納された前記複数のデータをリストアする、
処理を実行させるプログラム。
【請求項２】
前記コンピュータに、
前記コンピュータが管理するデータの中から前記複数のデータを特定するための情報を、前記他のコンピュータから受信する、
処理をさらに実行させる請求項１記載のプログラム。
【請求項３】
コンピュータが、
依存関係を有する複数のデータを更新した他のコンピュータから、更新後の当該複数のデータから生成された第１のハッシュ値を受信した場合、データ格納部に格納された、更新前の前記複数のデータのバックアップを生成し、
更新後の前記複数のデータを前記他のコンピュータから受信することを開始し、受信したデータで、前記データ格納部に格納されている前記複数のデータを更新し、
前記他のコンピュータとの通信中に前記他のコンピュータがダウンした場合、前記データ格納部に格納されている前記複数のデータから第２のハッシュ値を生成し、
前記第１のハッシュ値と前記第２のハッシュ値とが一致しない場合、生成された前記バックアップによって、前記データ格納部に格納された前記複数のデータをリストアする、
処理を実行する情報処理方法。
【請求項４】
依存関係を有する複数のデータを更新した他の情報処理装置から、更新後の当該複数のデータから生成された第１のハッシュ値を受信した場合、データ格納部に格納された、更新前の前記複数のデータのバックアップを生成する生成部と、
前記生成部により前記複数のデータのバックアップが生成された後、更新後の前記複数のデータを前記他の情報処理装置から受信することを開始し、受信したデータで、前記データ格納部に格納されている前記複数のデータを更新する更新部と、
前記他の情報処理装置との通信中に前記他の情報処理装置がダウンした場合、前記データ格納部に格納されている前記複数のデータから第２のハッシュ値を生成し、前記第１のハッシュ値と前記第２のハッシュ値とが一致しない場合、生成された前記バックアップによって、前記データ格納部に格納された前記複数のデータをリストアする復元部と、
を有する情報処理装置。
【請求項５】
第１の情報処理装置と、
第２の情報処理装置と、
を有し、
前記第１の情報処理装置は、
依存関係を有する複数のデータを更新する更新部と、
更新後の前記複数のデータから第１のハッシュ値を生成する生成部と、
前記第１のハッシュ値を前記第２の情報処理装置に送信する第１送信部と、
前記第１のハッシュ値が前記第２の情報処理装置に送信された後、更新後の前記複数のデータを前記第２の情報処理装置に送信する第２送信部と、
を有し、
前記第２の情報処理装置は、
前記第１の情報処理装置から前記第１のハッシュ値を受信した場合、データ格納部に格納された、更新前の前記複数のデータのバックアップを生成する生成部と、
更新後の前記複数のデータを前記第１の情報処理装置から受信することを開始し、受信したデータで、前記データ格納部に格納されている前記複数のデータを更新する更新部と、
前記第１の情報処理装置との通信中に前記第１の情報処理装置がダウンした場合、前記データ格納部に格納されている前記複数のデータから第２のハッシュ値を生成し、前記第１のハッシュ値と前記第２のハッシュ値とが一致しない場合、生成された前記バックアップによって、前記データ格納部に格納された前記複数のデータをリストアする復元部と、
を有する情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レプリケーション技術に関する。
【背景技術】
【０００２】
ウェブアプリケーションサーバにおいては、事業継続計画（ＢＣＰ：Business Continuity Planning）及び災害復旧（ＤＲ：Disaster Recovery）の観点からレプリケーションと呼ばれる技術が採用されることがある。レプリケーションとは、マスタのデータと同じ内容のレプリカを生成して常時同期する技術であり、マスタのデータが更新された場合、更新がレプリカにリアルタイムで反映される。
【０００３】
ウェブアプリケーションサーバにおける様々な種類のデータ（例えば、ファイルやテーブルなど）がレプリケーションの対象となるが、その中には、関連性を有する他のデータが存在しなければ機能を実現することができないものが存在する。以下では、データ間のこのような関係を依存関係と呼ぶ。
【０００４】
図１に、依存関係を有するデータの一例を示す。図１においては、セットアップウィザード画面１０００を使用してメール設定を変更する例が示されている。管理者等によってＳＭＴＰ（Simple Mail Transfer Protocol）サーバ名及びポート番号が入力されると、その入力に応じてメール設定１００１乃至１００３が生成される。メール設定１００１は、テナントを管理する機能から送信されるメール設定であり、メール設定１００２は、プラットフォームを管理する機能から送信されるメール設定であり、メール設定１００３は、利用料金を計算する機能から送信されるメール設定である。メール設定１００１乃至１００３の各々は、実質的に同じ内容を表す情報を含んでいるが、メール設定１００１乃至１００３は依存関係を有するため、１つでも失われるとメール機能が正常に動作しない。
【０００５】
図２に、依存関係を有するデータの他の例を示す。図２においては、ポータルサイト２０００のレイアウトを変更する例が示されている。ポータルサイト２０００内の矩形図形はユーザインタフェースコンポーネントを表し、ユーザインタフェースコンポーネントの配置はウェブサイト上で管理される。図２に示すように、コンポーネント「予定表」がコンポーネント「タスク一覧」に変更され、さらにコンポーネントの配置が変更されたとする。また、コンポーネント「画像表示」によって表示される画像が変更されたとする。この場合、更新されるデータは、ポータルサイト２０００のウェブテンプレート、ポータルサイト２０００と配置パーツとを関連付けるための情報及び画像ファイルである。このようなデータは依存関係を有するため、いずれかのデータの更新が行われなかった場合にはポータルサイト２０００は正常に表示されない。
【０００６】
図３及び図４を用いて、依存関係を有するデータの更新について説明する。図３及び図４においては、マスタサーバにおいてマスタのデータが管理されており、レプリカサーバにおいてレプリカが管理されている。図３に示すように、クライアント装置からのリクエストによって依存関係を有するデータＡ乃至Ｃが更新されたとする（更新後のデータをデータＡu乃至Ｃuとする）。この場合、図４に示すように、データＡu、データＢu及びデータＣuの順にレプリカサーバにデータが送信されるが、データＣuの送信中にマスタサーバがダウンした場合、データＣuのレプリカは不完全な状態である。従って、レプリカサーバにおいては更新後のデータが揃わないため機能が正常に実現されないことになる。
【０００７】
このような問題には、レプリケーションに関する従来技術によっては対処することができない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−２７７１５８号公報
【特許文献２】特開２００４−８６７６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、１つの側面では、依存関係を有する複数の更新対象の一部のみが更新されることを防ぐための技術を提供することである。
【課題を解決するための手段】
【００１０】
本発明に係る情報処理方法は、依存関係を有する複数のデータを更新した他のコンピュータから、更新後の当該複数のデータから生成された第１のハッシュ値を受信した場合、データ格納部に格納された、更新前の複数のデータのバックアップを生成し、更新後の複数のデータを他のコンピュータから受信することを開始し、受信したデータで、データ格納部に格納されている複数のデータを更新し、他のコンピュータとの通信中に他のコンピュータがダウンした場合、データ格納部に格納されている複数のデータから第２のハッシュ値を生成し、第１のハッシュ値と第２のハッシュ値とが一致しない場合、生成されたバックアップによって、データ格納部に格納された複数のデータをリストアする処理を含む。
【発明の効果】
【００１１】
１つの側面では、依存関係を有する複数の更新対象の一部のみが更新されることを防げるようになる。
【図面の簡単な説明】
【００１２】
【図１】図１は、依存関係を有するデータの一例を示す図である。
【図２】図２は、依存関係を有するデータの一例を示す図である。
【図３】図３は、依存関係を有するデータの更新について説明するための図である。
【図４】図４は、依存関係を有するデータの更新について説明するための図である。
【図５】図５は、バックアップによるリストアについて説明するための図である。
【図６】図６は、リワインド機能について説明するための図である。
【図７】図７は、本実施の形態におけるシステムの概要を示す図である。
【図８】図８は、マスタサーバが実行する処理の処理フローを示す図である。
【図９】図９は、スレッドの監視および依存関係リストについて説明するための図である。
【図１０】図１０は、依存関係リストの一例を示す図である。
【図１１】図１１は、スレーブサーバが実行する処理の処理フローを示す図である。
【図１２】図１２は、本実施の形態の処理について説明するための図である。
【図１３】図１３は、コンピュータ装置の機能ブロック図である。
【発明を実施するための形態】
【００１３】
図３及び図４に示した例において、更新前のデータであるデータＡ乃至Ｃのバックアップを生成しておけば、たとえ更新が不完全であったとしてもバックアップを使用して元の状態に戻すことができる。すなわち、図５に示すように、レプリカサーバがアクセス可能な記憶装置（例えばＨＤＤ（Hard Disk Drive）など）にデータのバックアップを保存しておく。そして、データの更新中にマスタサーバがダウンした場合には、記憶装置に保存されたバックアップによってデータを更新前の状態に戻す（すなわちリストアする）ことで、依存関係を有するデータの一部のみが更新された状態になることを防ぐことができる。但し、通常バックアップは定期的に実行され、リアルタイムでは実行されない。そのため、前回のバックアップ時点の状態に戻ることになり、それによって復旧すべきデータ以外のデータまで元に戻ってしまうことがある。
【００１４】
その他の方法として、リワインド機能によってリワインドポイントまで状態を戻すことが考えられる。例えば図６に示すように、データＢuの送信後Ｃuの送信前にマスタサーバがダウンしたとする。この場合、データＣuのみが更新されていない状態であるが、リワインドポイントＰ１乃至Ｐ３のうちリワインドポイントＰ１まで状態を戻せば、データＡu乃至Ｃuが更新されていない状態になる。しかし、データ間の依存関係を把握できていない場合、どのリワインドポイントまで戻せばよいか判断することができない。なお、データの依存関係を、アプリケーションに関係するデータの構造から推定することも考えられるが、推定される依存関係のパターンが多数である場合があり、データの構造だけから推定を行うことは容易ではない。
【００１５】
そこで以下では、データの依存関係を適切に推定し、推定した依存関係に基づいてデータをリストアする方法について説明する。
【００１６】
図７に、本実施の形態におけるシステムの概要を示す。ウェブアプリケーションサーバであるマスタサーバ１と、マスタサーバ１のダウン時にマスタサーバ１の代わりに処理を実行するレプリカサーバ２とが、ＬＡＮ（Local Area Network）等を介して接続される。クライアント装置３は、例えばインターネット等を介してマスタサーバ１に接続されており、マスタサーバ１にウェブアプリケーションサーバとしての処理を実行させる。なお、クライアント装置３はレプリカサーバ２にも接続されるが、本実施の形態の説明においてはクライアント装置３とレプリカサーバ２との通信は行われないため、クライアント装置３とレプリカサーバ２との接続は図示されていない。
【００１７】
マスタサーバ１は、ウェブアプリケーション部１１と、レプリケーション部１２と、スレッド監視部１３と、ネットワーク監視制御部１４と、リスト生成部１５と、リスト送信部１６と、データ格納部１７と、リスト格納部１８とを含む。
【００１８】
ウェブアプリケーション部１１は、ウェブアプリケーションプログラムによる処理を実行する。レプリケーション部１２は、マスタサーバ１のデータ格納部１７に格納されているデータと、レプリカサーバ２のデータ格納部２７に格納されているデータとを常時同期する処理を実行する。スレッド監視部１３は、ウェブアプリケーション部１１のスレッドを監視する。ネットワーク監視制御部１４は、クライアント装置３からのリクエストの受信を監視する。リスト生成部１５は、依存関係を有するデータのリスト（以下、依存関係リストと呼ぶ）を生成する。リスト送信部１６は、リスト生成部１５により生成された依存関係リストをレプリカサーバ２に送信する。データ格納部１７は、マスタサーバ１が処理する種々のデータ（例えばファイル又はテーブルなど）を格納する。リスト格納部１８は、依存関係リストを格納する。
【００１９】
レプリカサーバ２は、ウェブアプリケーション部２１と、レプリケーション部２２と、更新監視部２３と、ネットワーク監視制御部２４と、リスト受信部２５と、バックアップ処理部２６と、データ格納部２７と、リスト格納部２８と、バックアップ格納部２９とを含む。
【００２０】
ウェブアプリケーション部２１は、ウェブアプリケーションプログラムによる処理を実行する。レプリケーション部２２は、マスタサーバ１のデータ格納部１７に格納されているデータと、レプリカサーバ２のデータ格納部２７に格納されているデータとを常時同期する処理を実行する。更新監視部２３は、レプリケーション部２２によるデータの更新を監視する。ネットワーク監視制御部２４は、マスタサーバ１との通信を監視する。リスト受信部２５は、依存関係リストをマスタサーバ１から受信する。バックアップ処理部２６は、依存関係リストに基づきデータをバックアップする。データ格納部２７は、レプリカサーバ２が処理する種々のデータ（例えばファイル又はテーブルなど）を格納する。リスト格納部２８は、依存関係リストを格納する。バックアップ格納部２９は、バックアップ処理部２６により生成されたバックアップを格納する。
【００２１】
次に、図８乃至図１２を用いて、本実施の形態のシステムにおいて実行される処理について説明する。まず、図８乃至図１０を用いて、マスタサーバ１が実行する処理について説明する。
【００２２】
マスタサーバ１のスレッド監視部１３は、ウェブアプリケーション部１１のスレッドの監視を開始する。なお、ウェブアプリケーション部１１のスレッドが生成されていない場合には、スレッド監視部１３はウェブアプリケーション部１１のスレッドが生成されるまで待機する。また、ネットワーク監視制御部１４は、クライアント装置３からのリクエストの受信を監視することを開始する。
【００２３】
そして、ウェブアプリケーション部１１は、データ格納部１７に格納されているデータに対する処理の命令を含むリクエストをクライアント装置３から受信する（図８：ステップＳ１）。ステップＳ１においてウェブアプリケーション部１１のスレッドが生成されるので、スレッド監視部１３は、ウェブアプリケーション部１１のスレッドの監視を開始する。スレッド監視部１３による監視は、スレッドが終了するまで続く。
【００２４】
スレッド監視部１３は、ウェブアプリケーション部１１のスレッドにて実行される、データ格納部１７に格納されているデータの更新を監視し、更新されたデータ（以下では、更新データと呼ぶ）を特定する（ステップＳ３）。本実施の形態においては、依存関係を有するデータは同じスレッド内で処理されると仮定して以降の処理が実行される。よって、ステップＳ３においてデータＡ乃至Ｃがスレッド監視部１３によって特定された場合、データＡ乃至Ｃは依存関係を有するデータであるとして取り扱われる。
【００２５】
スレッド監視部１３は、ウェブアプリケーション部１１のスレッドが終了したか判定する（ステップＳ５）。ウェブアプリケーション部１１のスレッドが終了していない場合（ステップＳ５：Ｎｏルート）、リクエストに含まれる命令に従ったデータ更新が続いているので、ステップＳ３の処理に戻る。
【００２６】
一方、ウェブアプリケーション部１１のスレッドが終了した場合（ステップＳ５：Ｙｅｓルート）、スレッド監視部１３は、データ格納部１７から更新データを読み出し、読み出した更新データをリスト生成部１５に出力する。
【００２７】
リスト生成部１５は、更新データからハッシュ値を算出する（ステップＳ７）。例えば更新データがデータＡ乃至Ｃである場合、データＡからハッシュ値が算出され、データＢからハッシュ値が算出され、データＣからハッシュ値が算出される。
【００２８】
リスト生成部１５は、ステップＳ７において算出されたハッシュ値と、更新データの識別情報とを含む依存関係リストを生成し（ステップＳ９）、生成した依存関係リストをリスト格納部１８に格納する。
【００２９】
図９を用いて、スレッドの監視および依存関係リストについて説明する。マスタサーバ１においては、クライアント装置３からリクエストを受信すると、ウェブアプリケーション部１１のスレッドが生成される。スレッド監視部１３は、スレッドが生成されてから、実行可能状態に遷移し、更新を実行中の状態に遷移し、そして終了するまでのライフサイクルを監視する。スレッドが終了する際には、クライアント装置３にレスポンスが送信される。スレッド監視部１３は、スレッドによって更新されたデータ（すなわち更新データ）をリスト生成部１５に出力する。これに応じ、リスト生成部１５は、依存関係リストを生成する。
【００３０】
図１０に、依存関係リストの一例を示す。図１０の例では、依存関係リストは、データから生成されたハッシュ値と、データの識別情報（図１０の例では、ファイル名）とを含む。
【００３１】
リスト送信部１６は、ステップＳ９において生成された依存関係リストをリスト格納部１８から読み出し、読み出した依存関係リストをレプリカサーバ２に送信する（ステップＳ１１）。
【００３２】
その後、レプリケーション部１２は、データ格納部１７に格納されている更新データを読み出し、読み出した更新データをレプリカサーバ２に送信する（ステップＳ１３）。すなわち、更新データについてのレプリケーションが実行される。そして処理は終了する。
【００３３】
以上のような処理を実行すれば、データの依存関係が特定されるので、特定された依存関係に基づいたリストアをレプリカサーバ２が実行することができるようになる。
【００３４】
次に、図１１及び図１２を用いて、レプリカサーバ２が実行する処理について説明する。
【００３５】
まず、レプリカサーバ２の更新監視部２３は、レプリケーション部２２による、データ格納部２７に格納されたデータの更新を監視することを開始する。また、ネットワーク監視制御部２４は、マスタサーバ１からの依存関係リストの受信を監視することを開始する。
【００３６】
そして、レプリカサーバ２におけるリスト受信部２５は、依存関係リストをマスタサーバ１から受信し（図１１：ステップＳ２１）、受信した依存関係リストをリスト格納部２８に格納する。
【００３７】
これに応じ、ネットワーク監視制御部２４は、今回受信した依存関係リストとは別の依存関係リスト（すなわち、前回の依存関係リスト）がリスト格納部２８に残っているか判定する（ステップＳ２３）。
【００３８】
前回の依存関係リストがリスト格納部２８に残っている場合（ステップＳ２３：Ｙｅｓルート）、前回の更新がまだ終了していないので、ステップＳ２３の処理に戻る。前回の依存関係リストがリスト格納部２８に残っていない場合（ステップＳ２３：Ｎｏルート）、ネットワーク監視制御部２４は、更新が開始することをバックアップ処理部２６に通知する。
【００３９】
これに応じ、バックアップ処理部２６は、依存関係リストをリスト格納部２８から読み出し、依存関係リストによって特定される更新データに対応する、更新前のデータをデータ格納部２７から特定する。そして、バックアップ処理部２６は、特定した更新前のデータのバックアップを生成し（ステップＳ２５）、生成したバックアップをバックアップ格納部２９に格納する。例えば、データＡ乃至ＣがデータＡu乃至Ｃuに更新される場合、ステップＳ２５においてはデータＡ乃至Ｃがデータ格納部２７から特定される。バックアップの生成が完了すると、バックアップ処理部２６は、バックアップの生成が完了したことをレプリケーション部２２に通知する。
【００４０】
これに応じ、レプリケーション部２２は、マスタサーバ１からの更新データの受信を開始し（ステップＳ２７）、データ格納部２７に格納する。例えば更新前のデータであるデータＡ乃至Ｃがデータ格納部２７に格納されており、更新データがデータＡu乃至Ｃuである場合、データＡ乃至ＣはデータＡu乃至Ｃuで置換される。
【００４１】
なお、更新データは所定のサイズを有するパケットの形で送信されるため、データＡ乃至Ｃの更新は徐々に進むことになる。従って、データＡ乃至Ｃの更新が完了する前にマスタサーバ１がダウンすると、一部のデータのみが更新された状態になる。
【００４２】
レプリケーション部２２による更新が開始すると、更新監視部２３は、更新データの受信を監視する。一方で、レプリケーション部２２は、マスタサーバ１との通信が停止した場合、マスタサーバ１との通信が停止したことを更新監視部２３に通知する。そして、更新監視部２３は、マスタサーバ１との通信が停止した場合又は更新データの受信が完了した場合、データ格納部２７に格納されている、更新対象のデータからハッシュ値を計算する（ステップＳ２９）。例えばデータＡ乃至ＣがデータＡu乃至Ｃuに更新されるケースにおいて、更新データの受信が完了した場合には、データＡu乃至Ｃuからハッシュ値が生成される。これに対し、更新データの受信が完了せず更新が不完全である場合又は更新の途中でマスタサーバ１がダウンした場合には、データＡ乃至Ｃの一部のみが更新された状態でハッシュ値が算出されることになる。この場合、算出されるハッシュ値は、データＡu乃至Ｃuから算出されたハッシュ値とは異なる。
【００４３】
更新監視部２３は、リスト格納部２８に格納されている依存関係リストからハッシュ値を読み出す。そして、更新監視部２３は、読み出したハッシュ値と、ステップＳ２９において算出したハッシュ値とを比較し（ステップＳ３１）、読み出したハッシュ値と、ステップＳ２９において算出したハッシュ値とが一致するか判定する（ステップＳ３３）。
【００４４】
読み出したハッシュ値と、ステップＳ２９において算出したハッシュ値とが一致する場合（ステップＳ３３：Ｙｅｓルート）、データの更新は完了したので、ステップＳ３７の処理に移行する。一方、読み出したハッシュ値と、ステップＳ２９において算出したハッシュ値とが一致しない場合（ステップＳ３３：Ｎｏルート）、更新監視部２３は、更新対象のデータのバックアップをバックアップ格納部２９から読み出す。そして、更新監視部２３は、更新対象のデータをバックアップによってリストアする（ステップＳ３５）。ステップＳ３５の処理により、更新対象のデータは更新前の状態に戻る。よって、一部のみが更新された状態になることを防げる。
【００４５】
なお、たとえマスタサーバ１との通信が停止したとしても、必ずしもデータの更新が未完了であるわけではない。マスタサーバ１との通信においては、更新データ以外のデータの転送等も行われるので、マスタサーバ１との通信中であってもデータの更新が既に完了している場合が有る。よって、上で述べたように、マスタサーバ１との通信が停止した場合においてもハッシュ値の比較を行うことで、リストアを実行すべきか否かを適切に判断することができるようになる。
【００４６】
更新監視部２３は、今回の依存関係リストをリスト格納部２８から削除する（ステップＳ３７）。また、バックアップ処理部２６は、今回のバックアップをバックアップ格納部２９から削除する（ステップＳ３９）。そして処理は終了する。
【００４７】
図１２を用いて、本実施の形態の処理について説明を追加する。図１２においては、更新前のデータはデータＡ乃至Ｃであり、更新データはデータＡu乃至Ｃuである。上で述べたように、マスタサーバ１において生成された依存関係リストはレプリカサーバ２に送信される。この依存関係リストはデータＡu乃至Ｃuから算出されたハッシュ値を含むので、このハッシュ値と一致するハッシュ値をレプリカサーバ２において算出されない場合には、データＡ乃至Ｃの一部のみが更新された状態である。そして、一部のデータのみが更新された状態である場合には、データは更新前の状態に戻される。これにより、依存関係を有するデータが機能を実現できない状態になることを防げるので、正常な状態のレプリカサーバ２がマスタサーバ１の処理を引き継げるようになる。
【００４８】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明したマスタサーバ１及びレプリカサーバ２の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【００４９】
また、上で説明したデータ構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【００５０】
また、上で述べた例において、データＡのバックアップが終了した段階でデータＡuの受信を開始し、データＢのバックアップが終了した段階でデータＢuの受信を開始し、・・・、というように、バックアップとデータの更新とを交互に行うようにしてもよい。
【００５１】
また、データを一意に識別可能な情報としてハッシュ値以外の情報を使用してもよい。
【００５２】
なお、上で述べたマスタサーバ１及びレプリカサーバ２は、コンピュータ装置であって、図１３に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【００５３】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【００５４】
本実施の形態の第１の態様に係る情報処理方法はコンピュータにより実行される。そして、本情報処理方法は、（Ａ）依存関係を有する複数のデータブロックを更新した他のコンピュータから、更新後の当該複数のデータブロックから生成された第１のハッシュ値を受信した場合、データ格納部に格納された、更新前の複数のデータブロックのバックアップを生成し、（Ｂ）更新後の複数のデータブロックを他のコンピュータから受信することを開始し、受信したデータブロックで、データ格納部に格納されている複数のデータブロックを更新し、（Ｃ）他のコンピュータとの通信中に他のコンピュータがダウンした場合、データ格納部に格納されている複数のデータブロックから第２のハッシュ値を生成し、（Ｄ）第１のハッシュ値と第２のハッシュ値とが一致しない場合、生成されたバックアップによって、データ格納部に格納された複数のデータブロックをリストアする処理を含む。
【００５５】
これにより、複数のデータブロックの更新が完了していないにも関わらず他のコンピュータがダウンした場合には、バックアップされた更新前の複数のデータブロックでリストアが行われるので、複数のデータブロックの一部のみが更新されることを防げるようになる。
【００５６】
また、本情報処理方法は、（Ｅ）コンピュータが管理するデータブロックの中から複数のデータブロックを特定するための情報を、他のコンピュータから受信する処理をさらに含んでもよい。これにより、依存関係を有する複数のデータブロックをコンピュータが特定することができるようになる。
【００５７】
本実施の形態の第２の態様に係る情報処理システムは、（Ｆ）第１の情報処理装置と、（Ｇ）第２の情報処理装置とを有する。そして、第１の情報処理装置は、（ｆ１）依存関係を有する複数のデータブロックを更新する更新部と、（ｆ２）更新後の複数のデータブロックから第１のハッシュ値を生成する生成部と、（ｆ３）第１のハッシュ値を第２の情報処理装置に送信する第１送信部と、（ｆ４）第１のハッシュ値が第２の情報処理装置に送信された後、更新後の複数のデータブロックを第２の情報処理装置に送信する第２送信部とを有する。そして、第２の情報処理装置は、（ｇ１）第１の情報処理装置から第１のハッシュ値を受信した場合、データ格納部に格納された、更新前の複数のデータブロックのバックアップを生成する生成部と、（ｇ２）更新後の複数のデータブロックを第１の情報処理装置から受信することを開始し、受信したデータブロックで、データ格納部に格納されている複数のデータブロックを更新する更新部と、（ｇ３）第１の情報処理装置との通信中に第１の情報処理装置がダウンした場合、データ格納部に格納されている複数のデータブロックから第２のハッシュ値を生成し、第１のハッシュ値と第２のハッシュ値とが一致しない場合、生成されたバックアップによって、データ格納部に格納された複数のデータブロックをリストアする復元部とを有する。
【００５８】
なお、上記方法による処理をコンピュータに実行させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【００５９】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００６０】
（付記１）
コンピュータに、
依存関係を有する複数のデータを更新した他のコンピュータから、更新後の当該複数のデータから生成された第１のハッシュ値を受信した場合、データ格納部に格納された、更新前の前記複数のデータのバックアップを生成し、
更新後の前記複数のデータを前記他のコンピュータから受信することを開始し、受信したデータで、前記データ格納部に格納されている前記複数のデータを更新し、
前記他のコンピュータとの通信中に前記他のコンピュータがダウンした場合、前記データ格納部に格納されている前記複数のデータから第２のハッシュ値を生成し、
前記第１のハッシュ値と前記第２のハッシュ値とが一致しない場合、生成された前記バックアップによって、前記データ格納部に格納された前記複数のデータをリストアする、
処理を実行させるプログラム。
【００６１】
（付記２）
前記コンピュータに、
前記コンピュータが管理するデータの中から前記複数のデータを特定するための情報を、前記他のコンピュータから受信する、
処理をさらに実行させる付記１記載のプログラム。
【００６２】
（付記３）
コンピュータが、
依存関係を有する複数のデータを更新した他のコンピュータから、更新後の当該複数のデータから生成された第１のハッシュ値を受信した場合、データ格納部に格納された、更新前の前記複数のデータのバックアップを生成し、
更新後の前記複数のデータを前記他のコンピュータから受信することを開始し、受信したデータで、前記データ格納部に格納されている前記複数のデータを更新し、
前記他のコンピュータとの通信中に前記他のコンピュータがダウンした場合、前記データ格納部に格納されている前記複数のデータから第２のハッシュ値を生成し、
前記第１のハッシュ値と前記第２のハッシュ値とが一致しない場合、生成された前記バックアップによって、前記データ格納部に格納された前記複数のデータをリストアする、
処理を実行する情報処理方法。
【００６３】
（付記４）
依存関係を有する複数のデータを更新した他の情報処理装置から、更新後の当該複数のデータから生成された第１のハッシュ値を受信した場合、データ格納部に格納された、更新前の前記複数のデータのバックアップを生成する生成部と、
前記生成部により前記複数のデータのバックアップが生成された後、更新後の前記複数のデータを前記他の情報処理装置から受信することを開始し、受信したデータで、前記データ格納部に格納されている前記複数のデータを更新する更新部と、
前記他の情報処理装置との通信中に前記他の情報処理装置がダウンした場合、前記データ格納部に格納されている前記複数のデータから第２のハッシュ値を生成し、前記第１のハッシュ値と前記第２のハッシュ値とが一致しない場合、生成された前記バックアップによって、前記データ格納部に格納された前記複数のデータをリストアする復元部と、
を有する情報処理装置。
【００６４】
（付記５）
第１の情報処理装置と、
第２の情報処理装置と、
を有し、
前記第１の情報処理装置は、
依存関係を有する複数のデータを更新する更新部と、
更新後の前記複数のデータから第１のハッシュ値を生成する生成部と、
前記第１のハッシュ値を前記第２の情報処理装置に送信する第１送信部と、
前記第１のハッシュ値が前記第２の情報処理装置に送信された後、更新後の前記複数のデータを前記第２の情報処理装置に送信する第２送信部と、
を有し、
前記第２の情報処理装置は、
前記第１の情報処理装置から前記第１のハッシュ値を受信した場合、データ格納部に格納された、更新前の前記複数のデータのバックアップを生成する生成部と、
更新後の前記複数のデータを前記第１の情報処理装置から受信することを開始し、受信したデータで、前記データ格納部に格納されている前記複数のデータを更新する更新部と、
前記第１の情報処理装置との通信中に前記第１の情報処理装置がダウンした場合、前記データ格納部に格納されている前記複数のデータから第２のハッシュ値を生成し、前記第１のハッシュ値と前記第２のハッシュ値とが一致しない場合、生成された前記バックアップによって、前記データ格納部に格納された前記複数のデータをリストアする復元部と、
を有する情報処理システム。
【符号の説明】
【００６５】
１  マスタサーバ    １１  ウェブアプリケーション部
１２  レプリケーション部    １３  スレッド監視部
１４  ネットワーク監視制御部    １５  リスト生成部
１６  リスト送信部    １７  データ格納部
１８  リスト格納部
２  レプリカサーバ    ２１  ウェブアプリケーション部
２２  レプリケーション部    ２３  更新監視部
２４  ネットワーク監視制御部    ２５  リスト受信部
２６  バックアップ処理部    ２７  データ格納部
２８  リスト格納部    ２９  バックアップ格納部
３  クライアント装置
【図１】
2017162062.tif 000003
【図２】
2017162062.tif 000004
【図３】
2017162062.tif 000005
【図４】
2017162062.tif 000006
【図５】
2017162062.tif 000007
【図６】
2017162062.tif 000008
【図７】
2017162062.tif 000009
【図８】
2017162062.tif 000010
【図９】
2017162062.tif 000011
【図１０】
2017162062.tif 000012
【図１１】
2017162062.tif 000013
【図１２】
2017162062.tif 000014
【図１３】
2017162062.tif 000015