(57)【要約】【課題】アプリケーションに対する高速応答性と、他方の拠点でのサービス停止に対する柔軟性を得る。【解決手段】アプリケーション処理部１１によりアプリケーションを実行し、メッセージキュー処理部１３により、当該更新で生じた記憶データ１２Ａ，２２Ａの差分情報を含む、アプリケーションからの同期要求を、順次保存し、データ同期送信処理部１４により、メッセージキュー処理部１３から同期要求をそれぞれが保存された順序で順に取得し、通信ネットワーク３０を介して情報処理装置２０へ送信する。データ同期受信処理部２５により、情報処理装置１０からの同期要求を受信し、当該同期要求に含まれる差分情報に基づいて、記憶データ２２Ａを更新する。【選択図】  図１
2011070636.tif 000002
【特許請求の範囲】
【請求項１】
通信ネットワークを介して接続された第１および第２の情報処理装置を含み、これら情報処理装置間で前記通信ネットワークを介してデータ通信を行うことにより、前記第１の情報処理装置に設けられた第１の記憶部で記憶する第１の記憶データと、前記第２の情報処理装置に設けられた第２の記憶部で記憶する第２の記憶データとを同期させるデータ同期システムであって、
前記第１の情報処理装置は、
前記第１の記憶部で記憶する前記第１の記憶データを更新するアプリケーションを実行するアプリケーション処理部と、
前記更新の前後における前記第１の記憶データの差分に相当する差分情報を含む、前記アプリケーションからの同期要求を、順次保存するメッセージキュー処理部と、
データ同期送信処理として、前記メッセージキュー処理部から前記同期要求をそれぞれが保存された順序で順に取得し、前記通信ネットワークを介して前記第２の情報処理装置へ送信する、処理を実行するデータ同期送信処理部と
を備え、
前記第２の情報処理装置は、
データ同期受信処理として、前記通信ネットワークを介して前記第１の情報処理装置からの前記同期要求を受信し、当該同期要求に含まれる前記差分情報に基づいて、前記第２の記憶部で記憶する前記第２の記憶データを更新することにより、前記第１および第２の記憶データを同期させる、処理を実行するデータ同期受信処理部と
を備える
ことを特徴とするデータ同期システム。
【請求項２】
請求項１に記載のデータ同期システムにおいて、
前記メッセージキュー処理部は、前記同期要求の保存に応じて、当該同期要求に対する同期要求受領結果を直ちに前記アプリケーション処理部へ返送することを特徴とするデータ同期システム。
【請求項３】
請求項１または請求項２に記載のデータ同期システムにおいて、
前記データ同期送信処理部は、前記同期要求を送信する際、前記データ同期受信処理部との間で、前記同期要求間の送信順序が受信側で保証されるデータ送信プロトコルを用いることを特徴とするデータ同期システム。
【請求項４】
請求項１〜請求項３のいずれか１つに記載のデータ同期システムにおいて、
前記メッセージキュー処理部は、前記アプリケーション処理部から並列的に出力された前記同期メッセージを順次保存し、
前記データ同期送信処理部は、複数の前記データ同期送信処理を並列的に実行し、
前記データ同期受信処理部は、並列的に実行する複数の処理を排他的に制御する排他制御機能を含み、この排他制御機能を用いて、前記データ同期送信処理部から受信した前記同期要求の処理順序を確保しつつ、複数の前記同期受信処理を並列的に実行する
ことを特徴とするデータ同期システム。
【請求項５】
請求項１〜請求項４のいずれか１つに記載のデータ同期システムにおいて、
前記データ同期送信処理部は、前記メッセージキュー処理部から取得した複数の前記同期要求に含まれる前記差分情報を１つの新たな差分情報に一括し、当該新たな差分情報を含む新たな同期要求を、前記通信ネットワークを介して前記第２の情報処理装置へ送信することを特徴とするデータ同期システム。
【請求項６】
請求項１〜請求項５のいずれか１つに記載のデータ同期システムにおいて、
前記第１の情報処理装置は、前記同期要求ごとに、当該同期要求と対応する排他情報を記憶する同期排他処理部をさらに備え、
前記アプリケーション処理部は、前記同期要求を前記メッセージキュー処理部へ保存する際、当該同期要求と対応する排他情報として当該同期要求の処理種別を示す処理種別情報を含む排他情報を、前記同期排他処理部へ登録し、
前記データ同期送信処理部は、前記メッセージキュー処理部から前記同期要求を取得して前記第２の情報処理装置へ送信する際、前記同期排他処理部により、当該同期要求の処理種別に該当する排他情報のうち、前記データ同期処理が未完了で当該同期要求より先にデータ同期処理すべき同期要求に関する排他情報がないことを確認した後、当該同期要求を前記第２の情報処理装置へ送信する
ことを特徴とするデータ同期システム。
【請求項７】
請求項１〜請求項６のいずれか１つに記載のデータ同期システムにおいて、
前記第２の情報処理装置は、前記第１の情報処理装置から受信した前記同期要求を順次保存する同期要求記憶部をさらに備え、
前記データ同期受信処理部は、前記第２の記憶部のデータ同期処理を行う際、前記同期要求記憶部で保存している前記同期要求のうちから、前記第１の記憶部に対して実行した前記データ更新処理の順序と一致した順序にしたがって、前記第２の記憶部に対して最も先にデータ同期処理すべき同期要求を取得し、当該同期要求に含まれる前記差分情報に基づいて前記第２の記憶部のデータ同期処理を行う
ことを特徴とするデータ同期システム。
【請求項８】
請求項７に記載のデータ同期システムにおいて、
前記データ同期受信処理部は、前記通信ネットワークにおける前記同期要求の最大遅延時間より長い待機時間だけ前記同期要求記憶部で待機させた同期要求のうちから、前記第１の記憶部に対して実行した前記データ更新処理の順序と一致した順序にしたがって、前記最も先にデータ同期処理すべき同期要求を取得することを特徴とするデータ同期システム。
【請求項９】
通信ネットワークを介して接続された第１および第２の情報処理装置を含み、これら情報処理装置間で前記通信ネットワークを介してデータ通信を行うことにより、前記第１の情報処理装置に設けられた第１の記憶部で記憶する第１の記憶データと、前記第２の情報処理装置に設けられた第２の記憶部で記憶する第２の記憶データとを同期させるデータ同期システムで用いられるデータ同期方法であって、
前記第１の情報処理装置において、
アプリケーション処理部が、前記第１の記憶部で記憶する前記第１の記憶データを更新するアプリケーションを実行するアプリケーション処理ステップと、
メッセージキュー処理部が、前記更新の前後における前記第１の記憶データの差分に相当する差分情報を含む、前記アプリケーションからの同期要求を、順次保存するメッセージキュー処理ステップと、
データ同期送信処理部が、データ同期送信処理として、前記メッセージキュー処理部から前記同期要求をそれぞれが保存された順序で順に取得し、前記通信ネットワークを介して前記第２の情報処理装置へ送信する、処理を実行するデータ同期送信処理ステップと
を備え、
前記第２の情報処理装置において、
データ同期受信処理部が、データ同期受信処理として、前記通信ネットワークを介して前記第１の情報処理装置からの前記同期要求を受信し、当該同期要求に含まれる前記差分情報に基づいて、前記第２の記憶部で記憶する前記第２の記憶データを更新することにより、前記第１および第２の記憶データを同期させる、処理を実行するデータ同期受信処理ステップと
を備える
ことを特徴とするデータ同期方法。
【請求項１０】
通信ネットワークを介して他の情報処理装置と接続されて、前記他の情報処理装置との間で前記通信ネットワークを介してデータ通信を行うことにより、自己に設けられた記憶部で記憶する第１の記憶データと、前記他の情報処理装置で記憶する第２の記憶データとを同期させる情報処理装置であって、
前記記憶部で記憶する前記記憶データを更新するアプリケーションを実行するアプリケーション処理部と、
前記更新の前後における前記第１の記憶データの差分に相当する差分情報を含む、前記アプリケーションからの同期要求を、順次保存するメッセージキュー処理部と、
データ同期送信処理として、前記メッセージキュー処理部から前記同期要求をそれぞれが保存された順序で順に取得し、前記通信ネットワークを介して前記他の情報処理装置へ送信する、処理を実行するデータ同期送信処理部と
を備えることを特徴とする情報処理装置。
【請求項１１】
請求項１０に記載の情報処理装置において、
前記メッセージキュー処理部は、前記同期要求の保存に応じて、当該同期要求に対する同期要求受領結果を直ちに前記アプリケーション処理部へ返送することを特徴とする情報処理装置。
【請求項１２】
請求項１０または請求項１１に記載の情報処理装置において、
前記データ同期送信処理部は、前記同期要求を送信する際、前記データ同期受信処理部との間で、前記同期要求間の送信順序が受信側で保証されるデータ送信プロトコルを用いることを特徴とする情報処理装置。
【請求項１３】
請求項１０〜請求項１２のいずれか１つに記載の情報処理装置において、
前記データ同期送信処理部は、前記メッセージキュー処理部から取得した複数の前記同期要求に含まれる前記差分情報を１つの新たな差分情報に一括し、当該新たな差分情報を含む新たな同期要求を、前記通信ネットワークを介して前記他の情報処理装置へ送信することを特徴とする情報処理装置。
【請求項１４】
請求項１０〜請求項１３のいずれか１つに記載の情報処理装置において、
前記同期要求ごとに、当該同期要求と対応する排他情報を記憶する同期排他処理部をさらに備え、
前記アプリケーション処理部は、前記同期要求を前記メッセージキュー処理部へ保存する際、当該同期要求と対応する排他情報として当該同期要求の処理種別を示す処理種別情報を含む排他情報を、前記同期排他処理部へ登録し、
前記データ同期送信処理部は、前記メッセージキュー処理部から前記同期要求を取得して前記第２の情報処理装置へ送信する際、前記同期排他処理部により、当該同期要求の処理種別に該当する排他情報のうち、前記データ同期処理が未完了で当該同期要求より先にデータ同期処理すべき同期要求に関する排他情報がないことを確認した後、当該同期要求を前記第２の情報処理装置へ送信する
ことを特徴とする情報処理装置。
【請求項１５】
通信ネットワークを介して他の情報処理装置と接続されて、前記他の情報処理装置との間で前記通信ネットワークを介してデータ通信を行うことにより、前記他の情報処理装置で記憶する第１の記憶データと、自己に設けられた記憶部で記憶する第２の記憶データとを同期させる情報処理装置であって、
前記他の情報処理装置から受信した前記同期要求を順次保存する同期要求記憶部と、
前記同期要求記憶部の同期要求に含まれる、前記第１の記憶データに対する更新の前後における前記第１の記憶データの差分に相当する差分情報に基づいて、前記記憶部で記憶する前記第２の記憶データを更新することにより、前記第１および第２の記憶データを同期させるデータ同期処理を実行するデータ同期受信処理部と
を備え、
前記データ同期受信処理部は、前記第２の記憶部のデータ同期処理を行う際、前記同期要求記憶部で保存している前記同期要求のうちから、前記１の記憶データに対して実行されたデータ更新処理と一致した順序にしたがって、前記記憶部に対して最も先にデータ同期処理すべき同期要求を取得し、当該同期要求に含まれる前記差分情報に基づいて前記記憶部のデータ同期処理を行う
ことを特徴とする情報処理装置。
【請求項１６】
請求項１５に記載の情報処理装置において、
前記データ同期受信処理部は、前記通信ネットワークにおける前記同期要求の最大遅延時間より長い待機時間だけ前記同期要求記憶部で待機させた同期要求のうちから、前記第１の記憶部に対して実行した前記データ更新処理と一致した順序にしたがって、前記最も先にデータ同期処理すべき同期要求を取得することを特徴とする情報処理装置。
【請求項１７】
通信ネットワークを介して他の情報処理装置と接続されて、前記他の情報処理装置との間で前記通信ネットワークを介してデータ通信を行うことにより、自己に設けられた記憶部で記憶する第１の記憶データと、前記他の情報処理装置で記憶する第２の記憶データとを同期させる情報処理装置で用いられる情報処理方法であって、
アプリケーション処理部が、前記記憶部で記憶する前記記憶データを更新するアプリケーションを実行するアプリケーション処理ステップと、
メッセージキュー処理部が、前記更新の前後における前記第１の記憶データの差分に相当する差分情報を含む、前記アプリケーションからの同期要求を、順次保存するメッセージキュー処理ステップと、
データ同期送信処理部が、データ同期送信処理として、前記メッセージキュー処理部から前記同期要求をそれぞれが保存された順序で順に取得し、前記通信ネットワークを介して前記他の情報処理装置へ送信する、処理を実行するデータ同期送信処理ステップと
を備えることを特徴とする情報処理方法。
【請求項１８】
請求項１７に記載の情報処理方法において、
前記メッセージキュー処理ステップは、前記同期要求の保存に応じて、当該同期要求に対する同期要求受領結果を直ちに前記アプリケーション処理部へ返送することを特徴とする情報処理方法。
【請求項１９】
請求項１７または請求項１８に記載の情報処理方法において、
前記データ同期送信処理ステップは、前記同期要求を送信する際、前記データ同期受信処理部との間で、前記同期要求間の送信順序が受信側で保証されるデータ送信プロトコルを用いることを特徴とする情報処理方法。
【請求項２０】
請求項１７〜請求項１９のいずれか１つに記載の情報処理方法において、
前記データ同期送信処理ステップは、前記メッセージキュー処理部から取得した複数の前記同期要求に含まれる前記差分情報を１つの新たな差分情報に一括し、当該新たな差分情報を含む新たな同期要求を、前記通信ネットワークを介して前記他の情報処理装置へ送信することを特徴とする情報処理方法。
【請求項２１】
請求項１７〜請求項２０のいずれか１つに記載の情報処理方法において、
同期排他処理部が、前記同期要求ごとに、当該同期要求と対応する排他情報を記憶する同期排他処理ステップをさらに備え、
前記アプリケーション処理ステップは、前記同期要求を前記メッセージキュー処理部へ保存する際、当該同期要求と対応する排他情報として当該同期要求の処理種別を示す処理種別情報を含む排他情報を、前記同期排他処理部へ登録し、
前記データ同期送信処理ステップは、前記メッセージキュー処理部から前記同期要求を取得して前記第２の情報処理装置へ送信する際、前記同期排他処理部により、当該同期要求の処理種別に該当する排他情報のうち、前記データ同期処理が未完了で当該同期要求より先にデータ同期処理すべき同期要求に関する排他情報がないことを確認した後、当該同期要求を前記第２の情報処理装置へ送信する
ことを特徴とする情報処理方法。
【請求項２２】
通信ネットワークを介して他の情報処理装置と接続されて、前記他の情報処理装置との間で前記通信ネットワークを介してデータ通信を行うことにより、前記他の情報処理装置で記憶する第１の記憶データと、自己に設けられた記憶部で記憶する第２の記憶データとを同期させる情報処理装置で用いられる情報処理方法であって、
同期要求記憶部が、前記他の情報処理装置から受信した前記同期要求を順次保存する同期要求記憶ステップと、
データ同期受信処理部が、前記同期要求記憶部の同期要求に含まれる、前記第１の記憶データに対する更新の前後における前記第１の記憶データの差分に相当する差分情報に基づいて、前記記憶部で記憶する前記第２の記憶データを更新することにより、前記第１および第２の記憶データを同期させるデータ同期処理を実行するデータ同期受信処理ステップと
を備え、
前記データ同期受信処理ステップは、前記第２の記憶部のデータ同期処理を行う際、前記同期要求記憶部で保存している前記同期要求のうちから、前記１の記憶データに対して実行されたデータ更新処理の順序と一致した順序にしたがって、前記記憶部に対して最も先にデータ同期処理すべき同期要求を取得し、当該同期要求に含まれる前記差分情報に基づいて前記記憶部のデータ同期処理を行う
ことを特徴とする情報処理方法。
【請求項２３】
請求項２２に記載の情報処理方法において、
前記データ同期受信処理ステップは、前記通信ネットワークにおける前記同期要求の最大遅延時間より長い待機時間だけ前記同期要求記憶部で待機させた同期要求のうちから、前記第１の記憶部に対して実行した前記データ更新処理の順序と一致した順序にしたがって、前記最も先にデータ同期処理すべき同期要求を取得することを特徴とする情報処理方法。
【請求項２４】
コンピュータを、請求項１０〜請求項１６のいずれか１つに記載の情報処理装置を構成する各部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ同期技術に関し、特に通信ネットワークを介して接続された情報処理装置間で、データ通信を行うことにより両装置の記憶データを同期する技術に関する。
【背景技術】
【０００２】
近年、ＩＰ技術を使って既存の通信／放送サービスを統合し、安価かつ柔軟にこれらのサービスを提供しようとする試みが広がっている。また、ネットワーク・サービスの拡充に伴い、サービスの可用性を高めることが重要になってきており、災害時でもシステムを停止させないディザスタリカバリ（ＤＲ：Disaster Recovery）技術の重要性が高まってきている。
ＩＰ技術を用いて遠隔地間でデータ通信を行う場合、一般には、パケットの送信から受信までにかかる転送時間が大きい、転送経路の変更などにより送信順序と受信順序が異なることがある、という条件を考慮する必要がある。
【０００３】
従来、このようなデータ同期技術として、ディザスタリカバリ機構を、通信品質が保証されないインターネットを利用して構築する場合、データ複製に遅延が生じ、処理性能が大きく低下することを回避する技術が提案されている（例えば、非特許文献１など参照）。この技術では、プライマリサイトのアプリケーションサーバにおいて、データベース接続ライブラリを多重化し、その１つのデータベース接続をプライマリデータベースのアクセスに使い、別のデータベース接続で、バックアップデータベース用のデータベースドライバを通してバックアップデータベースと接続し、プライマリデータベースとバックアップデータベースに同一のアクセス要求を行うことで、複数のデータベースを論理的に同じ状態に保つようにしている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】中村ほか、「柔軟な復旧要件を満たすデータベース接続層データ複製手法の提案」、情報処理学会シンポジウム論文集巻:2005 号:18 頁:83-90
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、このような従来技術では、拠点内など通信時間が短い環境を想定して、アプリケーションへのアクセスデータをそのまま複製して他拠点へ転送することにより、データ同期を行っているため、拠点間の通信に時間を要する場合には高速な応答を得ることができず、また、一方の拠点のデータベースが停止してサービス提供できない場合、他方の拠点のデータベースでもサービス提供できなくなるという問題があった。このため、要求に対して素早い応答が求められるオンライン系のアプリケーションでは、遠隔地間でデータ同期を行いながら、必要に応じて柔軟に片系だけでサービス提供を行うよう切り替えることが難しかった。
【０００６】
本発明はこのような課題を解決するためのものであり、アプリケーションに対する高速応答性と、他方の拠点でのサービス停止に対する柔軟性を得ることができるデータ同期技術を提供することを目的としている。
【課題を解決するための手段】
【０００７】
このような目的を達成するために、本発明にかかるデータ同期システムは、通信ネットワークを介して接続された第１および第２の情報処理装置を含み、これら情報処理装置間で通信ネットワークを介してデータ通信を行うことにより、第１の情報処理装置に設けられた第１の記憶部で記憶する第１の記憶データと、第２の情報処理装置に設けられた第２の記憶部で記憶する第２の記憶データとを同期させるデータ同期システムであって、第１の情報処理装置に、第１の記憶部で記憶する第１の記憶データを更新するアプリケーションを実行するアプリケーション処理部と、更新の前後における第１の記憶データの差分に相当する差分情報を含む、アプリケーションからの同期要求を、順次保存するメッセージキュー処理部と、データ同期送信処理として、メッセージキュー処理部から同期要求をそれぞれが保存された順序で順に取得し、通信ネットワークを介して第２の情報処理装置へ送信する、処理を実行するデータ同期送信処理部とを備え、第２の情報処理装置に、データ同期受信処理として、通信ネットワークを介して第１の情報処理装置からの同期要求を受信し、当該同期要求に含まれる差分情報に基づいて、第２の記憶部で記憶する第２の記憶データを更新することにより、第１および第２の記憶データを同期させる、処理を実行するデータ同期受信処理部とを備えている。
【０００８】
この際、メッセージキュー処理部で、同期要求の保存に応じて、当該同期要求に対する同期要求受領結果を直ちにアプリケーション処理部へ返送するようにしてもよい。
【０００９】
また、データ同期送信処理部で、同期要求を送信する際、データ同期受信処理部との間で、同期要求間の送信順序が受信側で保証されるデータ送信プロトコルを用いるようにしてもよい。
【００１０】
また、メッセージキュー処理部で、アプリケーション処理部から並列的に出力された同期メッセージを順次保存し、データ同期送信処理部で、複数のデータ同期送信処理を並列的に実行し、データ同期受信処理部で、並列的に実行する複数の処理を排他的に制御する排他制御機能を含み、この排他制御機能を用いて、データ同期送信処理部から受信した同期要求の処理順序を確保しつつ、複数の同期受信処理を並列的に実行するようにしてもよい。
【００１１】
また、データ同期送信処理部で、メッセージキュー処理部から取得した複数の同期要求に含まれる差分情報を１つの新たな差分情報に一括し、当該新たな差分情報を含む新たな同期要求を、通信ネットワークを介して第２の情報処理装置へ送信するようにしてもよい。
【００１２】
また、第１の情報処理装置に、同期要求ごとに、当該同期要求と対応する排他情報を記憶する同期排他処理部をさらに設け、アプリケーション処理部で、同期要求をメッセージキュー処理部へ保存する際、当該同期要求と対応する排他情報として当該同期要求の処理種別を示す処理種別情報を含む排他情報を、同期排他処理部へ登録し、データ同期送信処理部で、メッセージキュー処理部から同期要求を取得して第２の情報処理装置へ送信する際、同期排他処理部により、当該同期要求の処理種別に該当する排他情報のうち、データ同期処理が未完了で当該同期要求より先にデータ同期処理すべき同期要求に関する排他情報がないことを確認した後、当該同期要求を第２の情報処理装置へ送信するようにしてもよい。
【００１３】
また、第２の情報処理装置に、第１の情報処理装置から受信した同期要求を順次保存する同期要求記憶部をさらに設け、データ同期受信処理部で、第２の記憶部のデータ同期処理を行う際、同期要求記憶部で保存している同期要求のうちから、第１の記憶部に対して実行したデータ更新処理と一致した順序にしたがって、第２の記憶部に対して最も先にデータ同期処理すべき同期要求を取得し、当該同期要求に含まれる差分情報に基づいて第２の記憶部のデータ同期処理を行うようにしてもよい。
【００１４】
また、データ同期受信処理部で、通信ネットワークにおける同期要求の最大遅延時間より長い待機時間だけ同期要求記憶部で待機させた同期要求のうちから、第１の記憶部に対して実行したデータ更新処理と一致した順序にしたがって、最も先にデータ同期処理すべき同期要求を取得するようにしてもよい。
【００１５】
また、本発明にかかるデータ同期方法は、通信ネットワークを介して接続された第１および第２の情報処理装置を含み、これら情報処理装置間で通信ネットワークを介してデータ通信を行うことにより、第１の情報処理装置に設けられた第１の記憶部で記憶する第１の記憶データと、第２の情報処理装置に設けられた第２の記憶部で記憶する第２の記憶データとを同期させるデータ同期システムで用いられるデータ同期方法であって、第１の情報処理装置において、アプリケーション処理部が、第１の記憶部で記憶する第１の記憶データを更新するアプリケーションを実行するアプリケーション処理ステップと、メッセージキュー処理部が、更新の前後における第１の記憶データの差分に相当する差分情報を含む、アプリケーションからの同期要求を、順次保存するメッセージキュー処理ステップと、データ同期送信処理部が、データ同期送信処理として、メッセージキュー処理部から同期要求をそれぞれが保存された順序で順に取得し、通信ネットワークを介して第２の情報処理装置へ送信する、処理を実行するデータ同期送信処理ステップとを備え、第２の情報処理装置において、データ同期受信処理部が、データ同期受信処理として、通信ネットワークを介して第１の情報処理装置からの同期要求を受信し、当該同期要求に含まれる差分情報に基づいて、第２の記憶部で記憶する第２の記憶データを更新することにより、第１および第２の記憶データを同期させる、処理を実行するデータ同期受信処理ステップとを備えている。
【００１６】
また、本発明にかかる情報処理装置は、通信ネットワークを介して他の情報処理装置と接続されて、他の情報処理装置との間で通信ネットワークを介してデータ通信を行うことにより、自己に設けられた記憶部で記憶する第１の記憶データと、他の情報処理装置で記憶する第２の記憶データとを同期させる情報処理装置であって、記憶部で記憶する記憶データを更新するアプリケーションを実行するアプリケーション処理部と、更新の前後における第１の記憶データの差分に相当する差分情報を含む、アプリケーションからの同期要求を、順次保存するメッセージキュー処理部と、データ同期送信処理として、メッセージキュー処理部から同期要求をそれぞれが保存された順序で順に取得し、通信ネットワークを介して他の情報処理装置へ送信する、処理を実行するデータ同期送信処理部とを備えている。
【００１７】
この際、メッセージキュー処理部で、同期要求の保存に応じて、当該同期要求に対する同期要求受領結果を直ちにアプリケーション処理部へ返送するようにしてもよい。
【００１８】
また、データ同期送信処理部で、同期要求を送信する際、データ同期受信処理部との間で、同期要求間の送信順序が受信側で保証されるデータ送信プロトコルを用いるようにしてもよい。
【００１９】
また、データ同期送信処理部で、メッセージキュー処理部から取得した複数の同期要求に含まれる差分情報を１つの新たな差分情報に一括し、当該新たな差分情報を含む新たな同期要求を、通信ネットワークを介して他の情報処理装置へ送信するようにしてもよい。
【００２０】
また、同期要求ごとに、当該同期要求と対応する排他情報を記憶する同期排他処理部をさらに設け、アプリケーション処理部で、同期要求をメッセージキュー処理部へ保存する際、当該同期要求と対応する排他情報として当該同期要求の処理種別を示す処理種別情報を含む排他情報を、同期排他処理部へ登録し、データ同期送信処理部で、メッセージキュー処理部から同期要求を取得して第２の情報処理装置へ送信する際、同期排他処理部により、当該同期要求の処理種別に該当する排他情報のうち、データ同期処理が未完了で当該同期要求より先にデータ同期処理すべき同期要求に関する排他情報がないことを確認した後、当該同期要求を第２の情報処理装置へ送信するようにしてもよい。
【００２１】
また、本発明にかかる他の情報処理装置は、通信ネットワークを介して他の情報処理装置と接続されて、他の情報処理装置との間で通信ネットワークを介してデータ通信を行うことにより、他の情報処理装置で記憶する第１の記憶データと、自己に設けられた記憶部で記憶する第２の記憶データとを同期させる情報処理装置であって、他の情報処理装置から受信した同期要求を順次保存する同期要求記憶部と、同期要求記憶部の同期要求に含まれる、第１の記憶データに対する更新の前後における第１の記憶データの差分に相当する差分情報に基づいて、記憶部で記憶する第２の記憶データを更新することにより、第１および第２の記憶データを同期させるデータ同期処理を実行するデータ同期受信処理部とを備え、データ同期受信処理部で、第２の記憶部のデータ同期処理を行う際、同期要求記憶部で保存している同期要求のうちから、１の記憶データに対して実行されたデータ更新処理の順序と一致した順序にしたがって、記憶部に対して最も先にデータ同期処理すべき同期要求を取得し、当該同期要求に含まれる差分情報に基づいて記憶部のデータ同期処理を行うようにしたものである。
【００２２】
この際、データ同期受信処理部で、通信ネットワークにおける同期要求の最大遅延時間より長い待機時間だけ同期要求記憶部で待機させた同期要求のうちから、第１の記憶部に対して実行したデータ更新処理の順序と一致した順序にしたがって、最も先にデータ同期処理すべき同期要求を取得するようにしてもよい。
【００２３】
また、本発明にかかる情報処理方法は、通信ネットワークを介して他の情報処理装置と接続されて、他の情報処理装置との間で通信ネットワークを介してデータ通信を行うことにより、自己に設けられた記憶部で記憶する第１の記憶データと、他の情報処理装置で記憶する第２の記憶データとを同期させる情報処理装置で用いられる情報処理方法であって、アプリケーション処理部が、記憶部で記憶する記憶データを更新するアプリケーションを実行するアプリケーション処理ステップと、メッセージキュー処理部が、更新の前後における第１の記憶データの差分に相当する差分情報を含む、アプリケーションからの同期要求を、順次保存するメッセージキュー処理ステップと、データ同期送信処理部が、データ同期送信処理として、メッセージキュー処理部から同期要求をそれぞれが保存された順序で順に取得し、通信ネットワークを介して他の情報処理装置へ送信する、処理を実行するデータ同期送信処理ステップとを備えている。
【００２４】
この際、メッセージキュー処理ステップで、同期要求の保存に応じて、当該同期要求に対する同期要求受領結果を直ちにアプリケーション処理部へ返送するようにしてもよい。
【００２５】
また、データ同期送信処理ステップで、同期要求を送信する際、データ同期受信処理部との間で、同期要求間の送信順序が受信側で保証されるデータ送信プロトコルを用いるようにしてもよい。
【００２６】
また、データ同期送信処理ステップで、メッセージキュー処理部から取得した複数の同期要求に含まれる差分情報を１つの新たな差分情報に一括し、当該新たな差分情報を含む新たな同期要求を、通信ネットワークを介して他の情報処理装置へ送信するようにしてもよい。
【００２７】
また、同期排他処理部が、同期要求ごとに、当該同期要求と対応する排他情報を記憶する同期排他処理ステップをさらに設け、アプリケーション処理ステップで、同期要求をメッセージキュー処理部へ保存する際、当該同期要求と対応する排他情報として当該同期要求の処理種別を示す処理種別情報を含む排他情報を、同期排他処理部へ登録し、データ同期送信処理ステップで、メッセージキュー処理部から同期要求を取得して第２の情報処理装置へ送信する際、同期排他処理部により、当該同期要求の処理種別に該当する排他情報のうち、データ同期処理が未完了で当該同期要求より先にデータ同期処理すべき同期要求に関する排他情報がないことを確認した後、当該同期要求を第２の情報処理装置へ送信するようにしてもよい。
【００２８】
また、本発明にかかる他の情報処理方法は、通信ネットワークを介して他の情報処理装置と接続されて、他の情報処理装置との間で通信ネットワークを介してデータ通信を行うことにより、他の情報処理装置で記憶する第１の記憶データと、自己に設けられた記憶部で記憶する第２の記憶データとを同期させる情報処理装置で用いられる情報処理方法であって、同期要求記憶部が、他の情報処理装置から受信した同期要求を順次保存する同期要求記憶ステップと、データ同期受信処理部が、同期要求記憶部の同期要求に含まれる、第１の記憶データに対する更新の前後における第１の記憶データの差分に相当する差分情報に基づいて、記憶部で記憶する第２の記憶データを更新することにより、第１および第２の記憶データを同期させるデータ同期処理を実行するデータ同期受信処理ステップとを備え、データ同期受信処理ステップで、第２の記憶部のデータ同期処理を行う際、同期要求記憶部で保存している同期要求のうちから、１の記憶データに対して実行されたデータ更新処理と一致した順序にしたがって、記憶部に対して最も先にデータ同期処理すべき同期要求を取得し、当該同期要求に含まれる差分情報に基づいて記憶部のデータ同期処理を行うようにしたものである。
【００２９】
また、本発明にかかるプログラムは、コンピュータを、前述したいずれか１つに記載の情報処理装置を構成する各部として機能させるためのプログラムである。
【発明の効果】
【００３０】
本発明によれば、アプリケーションの処理負担を、同期要求を出力するという極めて軽微な程度まで削減できるとともに、アプリケーション側拠点でのデータ更新処理と他方の拠点でのデータ同期処理とを分離できる。
これにより、アプリケーションに対するデータ同期のための処理負担を大幅に削減でき、アプリケーションの高速応答性と、他方の拠点でのサービス停止に対する柔軟性を得ることが可能となる。
【図面の簡単な説明】
【００３１】
【図１】第１の実施の形態にかかるデータ同期システムの構成を示すブロック図である。
【図２】第１の実施の形態にかかるデータ同期システムの動作を示すシーケンス図である。
【図３】第１の実施の形態にかかるデータ同期システムの動作を示すフロー図である。
【図４】第２の実施の形態にかかるデータ同期システムの動作を示すシーケンス図である。
【図５】第２の実施の形態にかかるデータ同期システムの動作を示すフロー図である。
【図６】第３の実施の形態にかかるデータ同期システムの動作を示すシーケンス図である。
【図７】第３の実施の形態にかかるデータ同期システムの動作を示すフロー図である。
【図８】第４の実施の形態にかかるデータ同期システムの動作を示すフロー図である。
【図９】第５の実施の形態にかかるデータ同期システムの構成を示すブロック図である。
【図１０】第６の実施の形態にかかるデータ同期システムの構成を示すブロック図である。
【図１１】第６の実施の形態にかかるデータ同期システムの動作を示すシーケンス図である。
【図１２】第６の実施の形態にかかるデータ同期システムの動作を示すフロー図である。
【図１３】同期要求の構成例である。
【図１４】排他情報の構成例である。
【図１５】排他情報登録処理を示すフローチャートである。
【図１６】排他情報の登録状態を示す説明図である。
【図１７】排他情報の他の登録状態を示す説明図である。
【図１８】排他情報確認処理を示すフローチャートである。
【図１９】更新種別の詳細を示す説明図である。
【図２０】排他確認要求での同期要求指定例である。
【図２１】排他情報確認処理時における同期排他テーブルの検索状態を示す説明図である。
【図２２】排他情報無効化処理を示すフローチャートである。
【図２３】無効化要求での同期要求指定例である。
【図２４】排他情報無効化処理時における同期排他テーブルの検索状態を示す説明図である。
【図２５】第７の実施の形態にかかるデータ同期システムの構成を示すブロック図である。
【図２６】第７の実施の形態にかかるデータ同期システムの動作を示すフロー図である。
【図２７】第７の実施の形態にかかるデータ同期システムの動作を示すシーケンス図である。
【図２８】同期要求取得処理を示すフローチャートである。
【図２９】同期要求取得処理を示す説明図である。
【図３０】第８の実施の形態にかかるデータ同期システムの構成を示すブロック図である。
【図３１】第８の実施の形態にかかるデータ同期システムの動作を示すフロー図である。
【図３２】切替データの構成例である。
【発明を実施するための形態】
【００３２】
次に、本発明の実施の形態について図面を参照して説明する。
［第１の実施の形態］
まず、図１を参照して、本発明の第１の実施の形態にかかるデータ同期システムについて説明する。図１は、第１の実施の形態にかかるデータ同期システムの構成を示すブロック図である。
【００３３】
このデータ同期システム１は、通信ネットワーク３０を介して相互に接続された情報処理装置（第１の情報処理装置）１０と情報処理装置（第２の情報処理装置）２０とを含んでいる。
データ同期システム１は、これら情報処理装置１０，２０間で通信ネットワーク３０を介してパケットデータ通信を行うことにより、情報処理装置１０に設けられた記憶部（第１の記憶部）１２で記憶する記憶データ（第１の記憶データ）１２Ａと、情報処理装置２０に設けられた記憶部（第２の記憶部）２２で記憶する記憶データ（第２の記憶データ）２２Ａとを同期させる機能を有している。
【００３４】
本実施の形態は、情報処理装置１０において、記憶部１２で記憶する記憶データ１２Ａを更新するアプリケーションを実行し、この更新の前後における記憶データ１２Ａの差分に相当する差分情報を含む、アプリケーションからの同期要求を、順次保存し、これら同期要求をそれぞれが保存された順序で順に取得して、通信ネットワーク３０を介して情報処理装置２０へ送信し、情報処理装置２０において、通信ネットワーク３０を介して情報処理装置１０からの同期要求を受信し、当該同期要求に含まれる差分情報に基づいて、記憶部２２で記憶する記憶データ２２Ａを更新することにより、記憶データ１２Ａ，２２Ａを同期させる。
【００３５】
［第１の実施の形態の構成］
次に、図１を参照して、本実施の形態にかかるデータ同期システムの構成について詳細に説明する。
情報処理装置１０は、全体としてサーバー装置やワークステーションなど、コンピュータを含む情報処理装置から構成されており、主な機能部として、アプリケーション処理部１１、記憶部１２、メッセージキュー処理部１３、およびデータ同期送信処理部１４が設けられている。
【００３６】
アプリケーション処理部１１は、各種アプリケーションを実行する機能を有している。このアプリケーションは、外部装置（図示せず）やキーボード操作により入力された要求に応じて、記憶部１２で記憶する記憶データ１２Ａを用いた各種情報処理を行う機能と、この情報処理に応じて記憶データ１２Ａの更新が必要となった場合に、記憶データ１２Ａの更新を指示する更新要求を出力する機能と、当該更新による記憶データ１２Ａと記憶データ２２Ａとのデータ同期を指示する同期要求を出力する機能と、当該情報処理結果を当該外部装置や画面表示部（図示せず）へ出力する機能を有している。
【００３７】
同期要求と更新要求は、ともに処理制御メッセージの１つである。同期要求には、記憶部１２での更新前後における記憶データ１２Ａの差分に相当する差分情報、例えばアプリケーションからの更新要求において記憶データ１２Ａの更新に用いた更新データからなる差分情報を含んでいる。更新要求には、上記更新データに加えて、より詳細な更新指示、例えば記憶データ１２Ａで構築されるデータベースのテーブル形式やデータ書式に合わせた更新指示が含まれている。
【００３８】
記憶部１２は、ハードディスクなどの記憶装置からなり、アプリケーション処理部１１で実行するアプリケーションで処理する各種処理情報を記憶データ１２Ａとして記憶する機能を有している。データ同期システム１では、１つの同期要求で、記憶部１２内のすべての記憶データ１２Ａをデータ同期の対象としてもよく、データファイル単位など、個別の記憶データ１２Ａをデータ同期の対象としてもよい。また、記憶データ１２Ａは、データベースを構築するデータであってもよく、単純なリストデータであってもよい。
【００３９】
メッセージキュー処理部１３は、半導体メモリやハードディスクなどの記憶装置からなるメッセージキューを有し、アプリケーションからの同期要求を、順次、メッセージキューへ保存する機能を有している。
【００４０】
データ同期送信処理部１４は、データ同期送信処理を実行する機能を有している。このデータ同期送信処理は、メッセージキュー処理部１３のメッセージキューに保存されている同期要求を、それぞれが保存された順序で順に取得する処理と、取得した同期要求を通信ネットワーク３０を介して情報処理装置２０へ送信する、処理を実行する処理とを含んでいる。
【００４１】
記憶データ１２Ａ，２２Ａのデータ同期を行う際、各同期要求間において処理順序の制御を必要とする場合がある。例えば、処理Ａによって記憶データを保存した後、処理Ｂによって記憶データを更新した場合、処理Ａ，Ｂの処理順序に基づき記憶データに対する更新順序を制御する必要がある。
【００４２】
このような場合には、データ同期送信処理部１４で、一連の同期要求を送信する際、後述する情報処理装置２０のデータ同期受信処理部２５との間で、これら同期要求間の送信順序が、受信側すなわちデータ同期受信処理部２５で保証されるデータ送信プロトコル、例えばＴＣＰなどのプロトコルを用いればよい。これにより、情報処理装置２０の記憶データ２２Ａを、同期要求の送信順序に従って、記憶データ１２Ａと同一の順序で更新することができる。
【００４３】
情報処理装置１０における機能部のうち、アプリケーション処理部１１、メッセージキュー処理部１３、およびデータ同期送信処理部１４は、演算処理部から構成されている。演算処理部は、ＣＰＵなどのマイクロプロセッサとその周辺回路を有し、記憶部１２やその他の記憶部（図示せず）からプログラムを読み出して実行することにより、各種機能部を実現する機能を有している。このプログラムは、外部装置（図示せず）や記録媒体（図示せず）から予め読み込んで記憶部へ格納される。
なお、情報処理装置１０には、データ通信インターフェース部、キーボードやマウスなどを用いた操作入力部、ＬＣＤなどを用いた画面表示部など、一般的な情報処理装置と同様の構成が設けられているものとする。
【００４４】
情報処理装置２０は、全体としてサーバー装置やワークステーションなど、コンピュータを含む情報処理装置から構成されており、主な機能部として、アプリケーション処理部２１、記憶部２２、およびデータ同期受信処理部２５が設けられている。
【００４５】
アプリケーション処理部２１は、各種アプリケーションを実行する機能を有している。このアプリケーションは、外部装置（図示せず）やキーボード操作により入力された要求に応じて、記憶部２２で記憶する記憶データ２２Ａを用いた各種情報処理を実行し、その情報処理結果を当該外部装置や画面表示部（図示せず）へ出力する機能を有している。
【００４６】
記憶部２２は、ハードディスクなどの記憶装置からなり、アプリケーション処理部２１で実行するアプリケーションで処理する各種処理情報を記憶データ２２Ａとして記憶する機能を有している。なお、記憶データ２２Ａは、データベースを構築するデータであってもよく、単純なリストデータであってもよい。
【００４７】
データ同期受信処理部２５は、データ同期送信処理を実行する機能を有している。このデータ同期受信処理は、通信ネットワーク３０を介して情報処理装置１０からの同期要求を受信し、当該同期要求に含まれる差分情報に基づいて、記憶部２２で記憶する記憶データ２２Ａを更新することにより、記憶データ１２Ａ，２２Ａを同期させる処理を含んでいる。この際、データ同期受信処理部２５は、受信した同期要求ごとに記憶データ２２Ａを更新してもよいが、受信した同期要求が所定容量や件数を満たした場合、これら同期要求をまとめて記憶データ２２Ａを更新してもよく、あるいは所定期間中に受信した複数の同期要求をまとめて記憶データ２２Ａを更新してもよい。
【００４８】
情報処理装置２０における機能部のうち、アプリケーション処理部２１およびデータ同期受信処理部２５は、演算処理部から構成されている。演算処理部は、ＣＰＵなどのマイクロプロセッサとその周辺回路を有し、記憶部２２やその他の記憶部（図示せず）からプログラムを読み出して実行することにより、各種機能部を実現する機能を有している。このプログラムは、外部装置（図示せず）や記録媒体（図示せず）から予め読み込んで記憶部へ格納される。
なお、情報処理装置２０には、データ通信インターフェース部、キーボードやマウスなどを用いた操作入力部、ＬＣＤなどを用いた画面表示部など、一般的な情報処理装置と同様の構成が設けられているものとする。
【００４９】
［第１の実施の形態の動作］
次に、図２および図３を参照して、本実施の形態にかかるデータ同期システムの動作について説明する。図２は、第１の実施の形態にかかるデータ同期システムの動作を示すシーケンス図である。図３は、第１の実施の形態にかかるデータ同期システムの動作を示すフロー図である。
【００５０】
情報処理装置１０のアプリケーション処理部１１は、アプリケーションを起動し、入力された要求に応じて（ステップ１００）、記憶部１２の記憶データ１２Ａを用いた情報処理を実行する。
ここで、記憶データ１２Ａの更新が発生した場合、アプリケーション処理部１１は、同期要求と前後して、アプリケーションから出力された更新要求を、記憶部１２に対して出力する（ステップ１０１）。
記憶部１２は、この更新要求を受け取って記憶データ１２Ａを更新し（ステップ１０２）、その更新結果をアプリケーション処理部１１へ返送する（ステップ１０３）。
【００５１】
また、アプリケーション処理部１１は、いわゆるenqueue処理により、アプリケーションからの同期要求を、メッセージキュー処理部１３に対して出力する（ステップ１０４）。
メッセージキュー処理部１３は、この同期要求を受け取って、メッセージキューへ順次保存し、保存した旨の同期要求受領結果を直ちにアプリケーション処理部１１へ返送する（ステップ１０５）。
アプリケーション処理部１１は、記憶部１２からの更新結果やメッセージキュー処理部１３での同期結果、さらにはアプリケーションでの情報処理結果に基づいて、ステップ１００で入力された要求に対する応答を出力する（ステップ１０６）。
【００５２】
この際、ステップ１０１〜１０３による記憶データ１２Ａの更新については、ステップ１０４〜１０６による同期要求処理より後に実行してもよい。但し、ステップ１０１〜１０３による記憶データ１２Ａの更新を、ステップ１０４〜１０６による同期要求処理より先に実行することで、例えばステップ１０３による更新結果によりステップ１０２によるデータ更新の失敗が通知された場合、ステップ１０４〜１０６による同期要求処理を省くこともでき、不要な処理の実行を抑止することが可能となる。
【００５３】
一方、データ同期送信処理部１４は、メッセージキュー処理部１３のメッセージキューへの同期要求の保存を契機に起動されて、いわゆるdequeue処理により、メッセージキュー処理部１３に対して取得要求を出力し、新たな同期要求がメッセージキューに存在する場合には、休むことなく連続的に取得要求を出力する（ステップ１１０）。
メッセージキュー処理部１３は、データ同期送信処理部１４からの取得要求に応じて、メッセージキューに保存されている同期要求を、それぞれの保存順序に応じて順に取得して、データ同期送信処理部１４へ出力する（ステップ１１１）。
【００５４】
データ同期送信処理部１４は、この同期要求を受け取って、通信ネットワーク３０を介して情報処理装置２０へ送信する（ステップ１２０）。
情報処理装置２０のデータ同期受信処理部２５は、情報処理装置１０からの同期要求を受信して受信キューへ一旦保存し、当該同期要求に基づいてデータ同期受信処理を実行して記憶部２２の記憶データ２２Ａの更新を要求する。
情報処理装置２０の記憶部２２は、データ同期受信処理部２５により受け取った、情報処理装置１０からの同期要求に基づいて、記憶データ２２Ａを更新する（ステップ１２１）。これにより、記憶データ１２Ａ，２２Ａがデータ同期される。
この後、記憶部２２は、当該同期要求による同期結果を、データ同期受信処理部２５により、通信ネットワーク３０を介して情報処理装置１０へ返送する（ステップ１２２）。
【００５５】
［第１の実施の形態の効果］
このように、本実施の形態は、情報処理装置１０において、アプリケーション処理部１１により、記憶部１２で記憶する記憶データ１２Ａを更新するアプリケーションを実行し、メッセージキュー処理部１３により、当該更新前後における記憶データ１２Ａの差分に相当する差分情報を含む、アプリケーションからの同期要求を、順次保存し、データ同期送信処理部１４により、メッセージキュー処理部１３から同期要求をそれぞれが保存された順序で順に取得し、通信ネットワーク３０を介して情報処理装置２０へ送信し、情報処理装置２０において、データ同期受信処理部２５により、通信ネットワーク３０を介して情報処理装置１０からの同期要求を受信し、当該同期要求に含まれる差分情報に基づいて、記憶部２２で記憶する第２の記憶データ２２Ａを更新することにより、記憶データ１２Ａ，２２Ａを同期させている。
【００５６】
したがって、記憶データ１２Ａを更新するごとにアプリケーションから出力される同期要求が、順次、メッセージキュー処理部１３へ保存されて、順次、データ同期送信処理部１４から情報処理装置２０へ送信されるため、アプリケーションの処理負担を、同期要求を出力するという極めて軽微な程度まで削減できるとともに、アプリケーション側拠点でのデータ更新処理と他方の拠点でのデータ同期処理とを分離できる。
これにより、アプリケーションに対するデータ同期のための処理負担を大幅に削減でき、他方の拠点でのサービス停止に対する柔軟性を得ることが可能となる。
【００５７】
通常、ディザスタリカバリのために遠隔地間で冗長化されたシステムにおいて、通信相手となるシステムが自律的に通信先となる当該システムを切り替える利用形態においては、冗長化されたシステムに到着する要求はほとんどが独立な更新を行うものであり、片方の系に閉じて一貫していれば十分である。
しかし、稀に系切り替え動作の前後において、順序を制御すべき要求が両系に到着する場合があり得る。これに対し厳密な制御を行うことは、例えば前述した非特許文献１の技術を用いれば可能であるが、レアケースに対応するために全体の性能を落としてしまう問題がある。
【００５８】
そのため、発生を未然に防ぐ処理を省くことによって性能劣化を回避する方法が考えられる。ただし、この場合には、両系にデータ一貫性に影響するようなトランザクションが同時に到着してデータ不整合が起こる。
データ不整合が検知された場合は、これを検知しアプリケーションも含めてロールバックする公知の技術や、自動的にデータ不整合を復旧する公知の技術を用いればよい。
【００５９】
また、本実施の形態では、メッセージキュー処理部１３へ同期要求が保存された際、当該同期要求に対応する応答として同期要求受領結果が直ちにアプリケーションへ返送されるため、アプリケーションでの同期処理に対する待ち時間を大幅に削減でき、アプリケーションの高速応答性を得ることが可能となる。
【００６０】
また、本実施の形態では、データ同期送信処理部１４により、同期要求を送信する際、データ同期受信処理部２５との間で、同期要求間の送信順序が受信側で保証されるデータ送信プロトコルを用いてもよい。
これにより、情報処理装置２０の記憶データ２２Ａを、同期要求の送信順序に従って、記憶データ１２Ａと同一の順序で更新することができ、各同期要求間において処理順序の制御を必要とする場合でも、データ同期処理を正確に実施することが可能となる。
【００６１】
［第２の実施の形態］
次に、図４および図５を参照して、本発明の第２の実施の形態にかかるデータ同期システムについて説明する。図４は、第２の実施の形態にかかるデータ同期システムの動作を示すシーケンス図である。図５は、第２の実施の形態にかかるデータ同期システムの動作を示すフロー図である。
本実施の形態では、データ同期システム１におけるデータ同期処理を並列化して、処理効率を向上させる場合について説明する。
【００６２】
本実施の形態において、アプリケーション処理部１１は、記憶部１２の更新を含む複数の処理を並列的に実行する機能を有し、データ同期送信処理部１４は、複数のデータ同期送信処理を並列的に実行する機能を有し、データ同期受信処理部２５は、複数のデータ同期受信処理を並列的に実行する機能を有している。
【００６３】
このように、データ同期処理を並列化した場合、これら処理間の処理順序が問題となる。このため、本実施の形態において、データ同期受信処理部２５は、並列的に実行する複数の処理を排他的に制御する排他制御機能とを含み、この排他制御機能を用いて、データ同期送信処理部１４から受信した同期要求の処理順序を確保しつつ、複数のデータ同期受信処理を並列的に実行する機能を有している。
【００６４】
１つのリソースを複数の処理が共用する場合、当該リソースを利用する期間がこれら処理間で競合する場合がある。排他制御とは、処理ごとにリソースを利用する順序を決定して、このような競合を調停する機能である。
前述したように、処理Ａによって記憶データを保存した後、処理Ｂによって記憶データを更新した場合、処理Ａ，Ｂの処理順序に基づき記憶データに対する更新順序を制御する必要がある。この際、ユーザごとに別個の記憶データが用いられる場合、ユーザ間では競合が発生せず、ユーザごとに記憶データに対する更新順序を制御する必要がある。
【００６５】
本実施の形態では、データ同期受信処理部２５で、データ同期受信処理を並列的に実行させるため、記憶部２２に対する更新順序を排他制御により保証している。
排他制御機能としては、一般的な情報処理装置で利用されている、ｍｕｔｅｘなどの公知の処理制御技術を用いればよい。このような排他制御機能では、排他制御すべき複数の処理ごとに排他制御資源を割り当て、排他制御資源間では排他制御することなく処理を実行するものとなっている。
【００６６】
前述のように、ユーザごとに記憶データの更新順序を制御する必要がある場合、これらユーザごとに排他制御資源の割り当てを行えばよい。また、ユーザだけでなく、ドメインや装置など、排他制御の対象ごとに、排他制御資源の割り当てを行えばよい。
【００６７】
この際、アプリケーションまたはアプリケーション処理部１１で、当該アプリケーションを実行しているユーザＩＤ、ユーザ名、ドメイン名、装置ＩＤ、装置名、アプリケーション名など、処理を識別するための識別情報を取得して、同期要求に対して排他制御の要否とともに付加して、メッセージキュー処理部１３へ通知すればよい。
あるいは、これら識別情報に対する排他制御の要否を示す管理情報を予め記憶部に設定しておき、同期要求で通知された識別情報に基づき、排他制御の要否を確認するようにしてもよい。
【００６８】
また、排他制御の対象数が多い場合には、例えば競合しないユーザ間で同一の排他制御資源を共用することもできる。この場合には、ハッシュ関数を使用して、共用するユーザＩＤから共通のＩＤ（添え字）を生成し、これらユーザに対して、当該ＩＤと対応する排他制御資源の割り当てを行えばよい。この場合、これらユーザ間で同期処理が排他制御されることになる。
通常、排他制御資源は、排他制御資源プールとして予め用意されており、いずれかの処理に排他制御資源を割り当てた時点で、その処理の負担が小さくてもある程度の処理負担が情報処理装置内で発生する。このため、排他制御資源を複数の処理で有効利用することで、情報処理装置の処理効率を高めることが可能となる。
【００６９】
また、これらアプリケーション処理部１１、データ同期送信処理部１４、およびデータ同期受信処理部２５において、それぞれの処理を並列的に実行する機能として、演算処理部が提供するマルチスレッド機能を利用すればよい。マルチスレッド機能は、一般的な情報処理装置で利用されている公知の処理制御技術である。
なお、本実施の形態にかかる情報処理装置１０，２０におけるその他の構成については、前述した第１の実施の形態と同じであり、ここでの詳細な説明は省略する。
【００７０】
［第２の実施の形態の動作］
次に、図４および図５を参照して、本実施の形態にかかるデータ同期システムの動作について説明する。図４および図５において、前述した図２および図３と同じまたは同等部分については、同一符号を付してある。
【００７１】
本実施の形態では、アプリケーション処理部１１、メッセージキュー処理部１３、およびデータ同期送信処理部１４において、マルチスレッド機能によりそれぞれの処理が並列的に実行される。
このため、これら機能部間でやり取りされる同期要求（ステップ１０４）、同期結果（ステップ１０５）、取得要求（ステップ１１０）、同期要求（ステップ１１１）、およびアプリケーション処理部１１と記憶部１２との間でやり取りされる更新要求（ステップ１０１）、および更新結果（ステップ１０３）は、それぞれ並列してやり取りされる。
【００７２】
データ同期送信処理部１４は、メッセージキュー処理部１３のメッセージキューへの同期要求の保存を契機に起動されて、メッセージキュー処理部１３に対して並列的に取得要求を出力する（ステップ１１０）。
メッセージキュー処理部１３は、データ同期送信処理部１４からの取得要求に応じて、メッセージキューに保存されている同期要求を、それぞれの保存順序に応じて順に取得して、データ同期送信処理部１４へ出力する（ステップ１１１）。
データ同期送信処理部１４は、データ同期送信処理を並列的に実行することにより、メッセージキュー処理部１３から同期要求を順次受け取るとともに、これら同期要求を並列的に通信ネットワーク３０を介して情報処理装置２０へ送信する（ステップ２２０）。
【００７３】
情報処理装置２０のデータ同期受信処理部２５は、情報処理装置１０からの同期要求を受信して受信キューへ一旦保存し、これら同期要求に対して排他制御を行って、これら同期要求の処理順序を決定する（ステップ２２１）。
図４の例では、データ同期受信処理部２５から記憶部２２に対して、２回に分けて同期要求が通知されて、記憶部２２の記憶データ２２Ａが更新されている。すなわち、データ同期受信処理部２５は、１回目の通知でデータ同期受信処理を並列的に実行することにより複数の同期要求を並列的に通知し（ステップ２２２）、これに応じて記憶部２２は、記憶データ２２Ａをデータ更新した後（ステップ２２３）、同期結果を返送し（ステップ２２４）、データ同期受信処理部２５は、この同期結果を通信ネットワーク３０を介して情報処理装置１０へ返送する。
【００７４】
データ同期受信処理部２５は、１回目の同期要求に対する同期結果を記憶部２２から受信した後、２回目の同期要求を通知し（ステップ２２５）、これに応じて記憶部２２は、記憶データ２２Ａをデータ更新した後（ステップ２２６）、同期結果を返送し（ステップ２２７）、データ同期受信処理部２５は、この同期結果を通信ネットワーク３０を介して情報処理装置１０へ返送する。なお、並列的に通知した同期要求の順序関係については、例えば非特許文献１でも述べられているように、データベース・トランザクション間に関する処理順序に関する一般的な制約条件であり、ここでの説明は省略する。
【００７５】
［第２の実施の形態の効果］
このように、本実施の形態では、アプリケーション処理部１１で、記憶部１２の更新を含む複数の処理を並列的に実行し、データ同期受信処理部２５に、並列的に実行する複数の処理を排他的に制御する排他制御機能を含み、この排他制御機能を用いて、データ同期送信処理部１４から受信した同期要求の処理順序を確保しつつ、複数のデータ同期送信処理を並列的に実行し、データ同期受信処理部２５で、複数のデータ同期受信処理を並列的に実行するようにしたので、データ同期順序を確保しつつ、データ同期処理の処理効率を向上させることが可能となる。
これにより、情報処理装置１０，２０間の同期要求や同期結果の送達遅延が大きな環境でも、応答を待つことなく実行できる処理数が増えるため、スループットを大幅に向上させることができる。
【００７６】
本実施の形態では、情報処理装置２０のデータ同期受信処理部２５に排他制御機能を設けた場合を例として説明したが、この排他制御機能については、情報処理装置１０，２０のいずれか一方に設ければよく、情報処理装置１０の場合にはデータ同期送信処理部１４に設ければよい。
但し、情報処理装置１０は、障害等によってサービス停止が起こる前に、いち早くデータを情報処理装置２０へ送信することが望ましいため、つまり、情報処理装置１０はデータ送信の処理負荷が小さい方が望ましいため、この排他制御は情報処理装置２０が備えることが望ましい。このようにすることで、情報処理装置１０が早々にデータを送信することで、その後で情報処理装置１０がサービス停止になったとしても、データを受信した情報処理装置２０が適切にデータを同期することができる。
【００７７】
また、情報処理装置２０で排他制御を行う際、通信ネットワーク３０を介して情報処理装置１０から受信した同期要求を順次保存するとともに、保存した当該同期要求に対する同期要求受領結果を直ちに情報処理装置１０のデータ同期送信処理部１４へ返送するメッセージキュー処理部を設け、データ同期受信処理部２５は、このメッセージキュー処理部から同期要求を順に取得してデータ同期受信処理を行うようにしてもよい。
これにより、データ同期送信処理部１４は、データ同期受信処理部２５でのデータ同期受信処理の終了を待つことなく、送信した同期要求が上記メッセージキュー処理部に保存された時点で、次の同期要求を送信することが可能となる。このため、情報処理装置１０における同期要求の送信処理負荷を低減できる。
【００７８】
なお、本実施の形態では、アプリケーション処理部１１で、記憶部１２の更新を含む複数の処理が並列的に実行される場合を想定しているが、このような処理状況としては、アプリケーション処理部１１で実行されている１つのアプリケーションが並列的にこれら処理を実行する場合、さらにはアプリケーション処理部１１で実行されている複数のアプリケーションが並列的にこれら処理を実行する場合がある。本実施の形態は、これらいずれの場合にも適用でき、前述と同様の作用効果が得られる。
【００７９】
［第３の実施の形態］
次に、図６および図７を参照して、本発明の第３の実施の形態にかかるデータ同期システムについて説明する。図６は、第３の実施の形態にかかるデータ同期システムの動作を示すシーケンス図である。図７は、第３の実施の形態にかかるデータ同期システムの動作を示すフロー図である。
本実施の形態では、データ同期システム１におけるデータ同期処理を一括化して、処理効率を向上させる場合について説明する。
【００８０】
本実施の形態において、データ同期送信処理部１４は、メッセージキュー処理部１３から取得した複数の同期要求に含まれる差分情報を１つの新たな差分情報に一括し、当該新たな差分情報を含む新たな同期要求を、通信ネットワーク３０を介して情報処理装置２０へ送信する機能を有している。
【００８１】
同期要求には、例えば同じ記憶データ２２Ａ内の異なるデータに対して、それぞれ個別差分情報に基づき更新を行うなど、互いの更新内容が競合しない場合も存在する。これら、同期要求に基づくデータ同期処理を個別に実行した場合、同期要求や同期結果のやり取りがそれぞれ必要となる。
【００８２】
一方、互いの更新内容が競合しない場合、複数の同期要求に含まれる差分情報を１つの新たな差分情報に一括し、新たな差分情報を含む新たな同期要求を生成することができる。例えば、データベース言語の１つであるＳＱＬでは、データベースに対する一連の処理をまとめた１つの手続きとして設定する技術として、ストアドプロシージャ (stored procedure) と呼ばれる処理が設けられている。
データ同期送信処理部１４では、このような公知の技術を利用して、複数のデータ同期処理を一括化している。
【００８３】
ストアドプロシージャは、一連の更新処理命令をまとめたものであり、データ同期受信処理部２５に予め登録しておく。データ同期送信処理部１４では、このストアドプロシージャを実行するのに必要なパラメータを、複数の同期要求から生成し、新たな同期要求としてデータ同期受信処理部２５へ送信することになる。
これにより更新処理命令を含む同期要求を送信する場合と比較して、データ同期受信処理部２５における更新処理命令の解釈などの処理が不要となり、記憶データ２２Ａに対する更新処理時間を短縮できる。
【００８４】
また、多くの場合、情報処理装置２０からの同期結果は不要であるため、データ同期送信処理部１４では、情報処理装置２０へ同期要求を送信した後、これに対する情報処理装置２０からの受信確認（ＡＣＫ）を受け取ったら、直ちに次のデータ同期送信処理を開始して、メッセージキュー処理部１３から次の同期要求を取得することができる。
したがって、メッセージキュー処理部１３におけるメッセージキューのサイズは、情報処理装置２０での処理時間を見込む必要がなくなり、同期要求の送達に関する遅延時間に応じたサイズまで削減することが可能となり、設計の容易性、さらにはリソースの有効利用を実現できる。
なお、本実施の形態にかかる情報処理装置１０，２０におけるその他の構成については、前述した第１の実施の形態と同じであり、ここでの詳細な説明は省略する。
【００８５】
［第３の実施の形態の動作］
次に、図６および図７を参照して、本実施の形態にかかるデータ同期システムの動作について説明する。図６および図７において、前述した図２および図３と同じまたは同等部分については、同一符号を付してある。
ここでは、第２の実施の形態と同様に、アプリケーション処理部１１は、マルチスレッド機能に基づき、複数のアプリケーション処理を並列的に実行する機能を有し、データ同期送信処理部１４も、マルチスレッド機能に基づき、複数のデータ同期送信処理を並列的に実行する機能を有する場合を例として説明する。
【００８６】
情報処理装置１０のアプリケーション処理部１１は、アプリケーション処理スレッド１１Ａにより、入力された要求に応じて（ステップ３００）、記憶部１２の記憶データ１２Ａを用いた情報処理を実行し、その処理結果に応じた応答を出力するとともに（ステップ３０１）、同期要求をメッセージキュー処理部１３に対して出力する（ステップ３０２）。
【００８７】
また、アプリケーション処理部１１は、アプリケーション処理スレッド１１Ｂにより、入力された要求に応じて（ステップ３０３）、記憶部１２の記憶データ１２Ａを用いた情報処理を実行し、その処理結果に応じた応答を出力するとともに（ステップ３０４）、同期要求をメッセージキュー処理部１３に対して出力する（ステップ３０５）。
メッセージキュー処理部１３は、これら同期要求を受け取って、メッセージキューへ順次保存する。
【００８８】
一方、データ同期送信処理部１４は、データ同期送信処理スレッド１４Ａ，１４Ｂにより、メッセージキュー処理部１３のメッセージキューへの同期要求の保存を契機に起動される。
したがって、ステップ３０２，３０５で２つの同期要求がメッセージキューに保存された場合、データ同期送信処理スレッド１４Ａ，１４Ｂは、これら同期要求を取得する（ステップ３１０，３１１）。
【００８９】
この後、データ同期送信処理部１４は、これら２つの同期要求について、同期要求の一括化処理を実行して、新たな１つの同期要求を生成し（ステップ３１２）、データ同期送信処理部１４へ出力する（ステップ３２０）。
情報処理装置２０の記憶部２２は、データ同期受信処理部２５により受け取った、情報処理装置１０からの同期要求に基づいて、記憶データ２２Ａを更新する（ステップ３２１）。これにより、記憶データ１２Ａ，２２Ａがデータ同期される。
この後、記憶部２２は、当該同期要求による同期結果を、データ同期受信処理部２５により、通信ネットワーク３０を介して情報処理装置１０へ返送する（ステップ３２２）。
【００９０】
［第３の実施の形態の効果］
このように、本実施の形態では、データ同期送信処理部１４で、メッセージキュー処理部１３から取得した複数の同期要求に含まれる差分情報を１つの新たな差分情報に一括し、当該新たな差分情報を含む新たな同期要求を、通信ネットワーク３０を介して情報処理装置２０へ送信するようにしたので、情報処理装置１０，２０間でのデータ同期処理でやり取りする通信量、さらには記憶部２２に対するアクセス回数を削減することができ、通信ネットワーク３０に対する通信負荷や、情報処理装置１０，２０での処理負荷を削減することが可能となる。
【００９１】
［第４の実施の形態］
次に、図８を参照して、本発明の第４の実施の形態にかかるデータ同期システムについて説明する。図８は、第４の実施の形態にかかるデータ同期システムの動作を示すフロー図である。
本実施の形態では、情報処理装置１０の記憶部１２および情報処理装置２０の記憶部２２を、冗長化する場合について説明する。
【００９２】
本実施の形態において、記憶部１２，２２は、複数の記憶装置を用いた冗長性を有している。例えば、データベースサーバを複数台接続する冗長化技術では、高い処理性能を保ったまま、任意のサーバでサービスを提供できるクラウド技術が実現されており、このような公知の冗長化技術を組み合わせて、記憶部１２，２２を冗長化すればよい。
なお、本実施の形態にかかる情報処理装置１０，２０におけるその他の構成については、前述した第１の実施の形態と同じであり、ここでの詳細な説明は省略する。
【００９３】
［第４の実施の形態の効果］
このように、本実施の形態によれば、記憶部１２，２２を冗長化するようにしたので、ＤＢＭＳアプリケーション障害など、記憶部１２，２２に関する何らかの小規模な故障が発生しても、保守者が即時に故障を復旧しなくても自動的にシステムを切り替えてサービスを継続できる。
これにより、激甚災害など大規模な故障が発生しても、拠点を切り替えてサービスを継続できるため、あらゆるタイプの故障に対しても保守運用の手間を軽減できるシステムを構成することが可能となる。
【００９４】
［第５の実施の形態］
次に、図９を参照して、本発明の第５の実施の形態にかかるデータ同期システムについて説明する。図９は、第５の実施の形態にかかるデータ同期システムの構成を示すブロック図である。
本実施の形態では、汎用化した情報処理装置１０，２０について説明する。
【００９５】
データ同期システム１を構成する際、前述した第１〜第４の実施の形態のように、同期要求を指示する情報処理装置１０と、この同期要求に応じてデータ同期を行う情報処理装置２０と、２種類の情報処理装置を用いてデータ同期システム１を構成してもよいが、これら情報処理装置１０，２０の両方の機能を有している情報処理装置が現実的である。
【００９６】
本実施の形態にかかるデータ同期システム１を構成する、情報処理装置１０，２０は、互いに等しい構成を有している。
情報処理装置１０には、主な機能として、アプリケーション処理部１１、記憶部１２、メッセージキュー処理部１３、データ同期送信処理部１４、およびデータ同期受信処理部１５が設けられている。
このうち、データ同期受信処理部１５は、前述した情報処理装置２０におけるデータ同期受信処理部２５と同等である。
【００９７】
また、情報処理装置２０には、主な機能として、アプリケーション処理部２１、記憶部２２、メッセージキュー処理部２３、データ同期送信処理部２４、およびデータ同期受信処理部２５が設けられている。
このうち、メッセージキュー処理部２３およびデータ同期送信処理部２４は、前述した情報処理装置１０におけるメッセージキュー処理部１３、およびデータ同期送信処理部１４と同等である。
なお、本実施の形態にかかる情報処理装置１０，２０におけるその他の構成については、前述した第１の実施の形態と同じであり、ここでの詳細な説明は省略する。
【００９８】
［第５の実施の形態の効果］
このように、本実施の形態によれば、情報処理装置１０，２０を、同期要求を指示する情報処理装置、またはこの同期要求に応じてデータ同期を行う情報処理装置のいずれにも使用することが可能となる。
【００９９】
［第６の実施の形態］
次に、図１０〜図１２を参照して、本発明の第６の実施の形態にかかるデータ同期システムについて説明する。図１０は、第６の実施の形態にかかるデータ同期システムの構成を示すブロック図である。図１１は、第６の実施の形態にかかるデータ同期システムの動作を示すシーケンス図である。図１２は、第６の実施の形態にかかるデータ同期システムの動作を示すフロー図である。
【０１００】
第２の実施の形態では、データ同期システム１におけるデータ同期処理を並列化した場合に生じる、これら処理間の処理順序の問題を解決する方法として、情報処理装置２０のデータ同期受信処理部２５に、並列的に実行する複数の処理を排他的に制御する排他制御機能を設け、この排他制御機能を用いて、情報処理装置１０のデータ同期送信処理部１４から受信した同期要求の処理順序（受信順）を確保しつつ、複数のデータ同期受信処理を並列的に実行する場合を例として説明した。
【０１０１】
この際、情報処理装置１０のデータ同期送信処理部１４に、例えばマルチスレッド機能を利用して、複数のデータ同期送信処理を並列的に実行する機能を設けた場合、記憶部１２の更新処理順序に応じてメッセージキュー処理部１３へ保存（エンキュー）された同期要求を、その保存順序で取得（デキュー）を開始するものの、並列的に同期要求の取得が実行されるため、同期要求の保存順序に対して、取得完了順や送信完了順が異なる順序となる可能性がある。この理由としては、例えば各スレッドのＣＰＵ割当順序を正確に制御できない、同期要求のデータ長が大きく異なるなど、様々な要因が考えられる。
【０１０２】
したがって、情報処理装置２０のデータ同期受信処理部２５では、データ同期送信処理部１４から受信した同期要求の受信順を確保しつつ、複数のデータ同期受信処理を並列的に実行するため、データ同期送信処理部１４での送信処理順序が逆転した場合、データ同期受信処理部２５において、同期要求のデータ同期処理順序を元に戻すことはできない。
本実施の形態では、このような情報処理装置１０でのデータ更新順序と情報処理装置２０でのデータ同期順序との逆転を回避する構成について説明する。
【０１０３】
本実施の形態にかかる情報処理装置１０は、半導体メモリやハードディスクなどの記憶装置からなる同期排他テーブル１６Ａを有し、同期要求ごとに当該同期要求と対応する排他情報を同期排他テーブル１６Ａで記憶する同期排他処理部１６をさらに備えている。
また、アプリケーション処理部１１は、同期要求をメッセージキュー処理部１３へ保存する際、当該同期要求と対応する排他情報として当該同期要求の処理種別を示す処理種別情報を含む排他情報を、同期排他処理部１６へ登録する機能を有している。
【０１０４】
また、データ同期送信処理部１４は、メッセージキュー処理部１３から任意の処理種別の同期要求を取得して情報処理装置２０へ送信する際、同期排他処理部１６に対して排他確認要求を出力して、同期排他処理部１６により、当該同期要求の処理種別に該当する排他情報のうち、データ同期処理が未完了で当該同期要求より先にデータ同期処理すべき同期要求に関する排他情報がないことを確認した後、当該同期要求を情報処理装置２０へ送信する機能を有している。
なお、本実施の形態にかかる情報処理装置１０，２０におけるその他の構成については、前述した第２の実施の形態と同じであり、ここでの詳細な説明は省略する。また、情報処理装置１０，２０で計時される時刻について、公知の技術により同期されているものとする。
【０１０５】
［第６の実施の形態の動作］
次に、図１１および図１２を参照して、本実施の形態にかかるデータ同期システムの動作について説明する。
本実施の形態では、アプリケーション処理部１１、メッセージキュー処理部１３、およびデータ同期送信処理部１４において、マルチスレッド機能によりそれぞれの処理が並列的に実行される。
【０１０６】
情報処理装置１０のアプリケーション処理部１１は、アプリケーションを起動し、入力された認証要求などの要求に応じて（ステップ４００）、記憶部１２の記憶データ１２Ａを用いた情報処理を実行する。
ここで、記憶データ１２Ａの更新が発生した場合、アプリケーション処理部１１は、同期要求と前後して、アプリケーションから出力された更新要求を、記憶部１２に対して出力する（ステップ４０１）。
記憶部１２は、この更新要求を受け取って記憶データ１２Ａを更新するデータ更新処理を実行し（ステップ４０２）、その更新結果をアプリケーション処理部１１へ返送する（ステップ４０３）。
【０１０７】
また、アプリケーション処理部１１は、アプリケーションからの同期要求と対応する排他情報を同期排他処理部１６へ登録するため、同期排他処理部１６に対して排他情報登録要求を出力する（ステップ４０４）。
同期排他処理部１６は、この排他情報登録要求に応じて、指定された排他情報を保存し（ステップ４０５）、排他情報登録結果をアプリケーション処理部１１へ返送する（ステップ４０６）。
【０１０８】
また、アプリケーション処理部１１は、排他情報の登録処理と並行して、いわゆるenqueue処理により、アプリケーションからのエンキュー要求（同期要求）を、メッセージキュー処理部１３に対して出力する（ステップ４０７）。
メッセージキュー処理部１３は、この同期要求を受け取って、メッセージキューへ順次保存し（ステップ４０８）、保存した旨のエンキュー結果（同期要求受領結果）を直ちにアプリケーション処理部１１へ返送する（ステップ４０９）。
アプリケーション処理部１１は、記憶部１２からの更新結果やメッセージキュー処理部１３での同期結果、さらにはアプリケーションでの情報処理結果に基づいて、ステップ１００で入力された要求に対する応答を出力する（ステップ４１０）。
【０１０９】
一方、データ同期送信処理部１４は、データ同期送信処理部１４自身のデータ同期送信処理が完了したことを契機に、あるいは定期的に起動されて、いわゆるdequeue処理により、メッセージキュー処理部１３に対してデキュー要求（取得要求）を出力し、新たな同期要求がメッセージキューに存在する場合には、休むことなく連続的にデキュー要求を出力する（ステップ４２０）。
メッセージキュー処理部１３は、データ同期送信処理部１４からのデキュー要求に応じて、メッセージキューに保存されている同期要求を、それぞれの保存順序に応じて順に取得して（ステップ４２１）、データ同期送信処理部１４へデキュー結果として出力する（ステップ４２２）。
【０１１０】
続いて、データ同期送信処理部１４は、メッセージキュー処理部１３から取得した同期要求に関する排他確認を行うための排他確認要求を同期排他処理部１６へ出力する（ステップ４２３）。
同期排他処理部１６は、この排他確認要求に応じて、保存されている排他情報のうちから、当該同期要求の処理種別に該当する同期未完了の排他情報を検索することにより、当該同期要求より先にデータ同期処理すべき同期未完了の同期要求と対応する排他情報の存在有無を確認する（ステップ４２４）。
【０１１１】
ここで、当該同期要求より先にデータ同期処理すべき同期要求の排他情報が存在していた場合、同期排他処理部１６は、これら排他情報と対応する同期要求によるデータ同期処理が完了するまで、当該排他確認要求に対する排他確認結果の出力を待機する。
また、当該同期要求より先にデータ同期処理すべき同期要求の排他情報が存在しない場合、当該同期要求によるデータ同期処理が最先であることが確認されたことから、同期排他処理部１６は、当該排他確認要求に対する排他確認結果を出力する（ステップ４２５）。
【０１１２】
データ同期送信処理部１４は、この排他確認結果に応じて、当該同期要求を通信ネットワーク３０を介して情報処理装置２０へ送信する（ステップ４２６）。
情報処理装置２０のデータ同期受信処理部２５は、情報処理装置１０からの同期要求を受信して受信キューへ一旦保存し、当該同期要求に基づいてデータ同期受信処理を実行して記憶部２２の記憶データ２２Ａの更新を要求する。
情報処理装置２０の記憶部２２は、データ同期受信処理部２５により受け取った、情報処理装置１０からの同期要求に基づいて、記憶データ２２Ａを更新する（ステップ４２７）。これにより、記憶データ１２Ａ，２２Ａがデータ同期される。
【０１１３】
この後、記憶部２２は、当該同期要求による同期結果を、データ同期受信処理部２５により、通信ネットワーク３０を介して情報処理装置１０へ返送する（ステップ４２８）。
情報処理装置１０のデータ同期送信処理部１４は、この同期結果を受信して、当該同期要求に対応する排他情報の無効化を行うための無効化要求を同期排他処理部１６へ出力する（ステップ４２９）。
同期排他処理部１６は、この無効化要求に応じて当該同期要求と対応する排他情報を無効化する（ステップ４３０）。
【０１１４】
これにより、情報処理装置１０のデータ同期送信処理部１４に、例えばマルチスレッド機能を利用して、複数のデータ同期送信処理を並列的に実行する機能を設けた場合でも、メッセージキュー処理部１３への同期要求の保存順序と同じ順序、すなわち記憶部１２に対するデータ更新処理と同じ順序で、データ同期送信処理部１４の各データ同期送信処理（スレッド）が同期要求を情報処理装置２０へ送信することができる。
【０１１５】
［排他情報登録処理］
次に、図１３〜図１７を参照して、同期排他処理部１６で排他情報を登録する際の排他情報登録処理について説明する。図１３は、同期要求の構成例である。図１４は、排他情報の構成例である。図１５は、排他情報登録処理を示すフローチャートである。図１６は、排他情報の登録状態を示す説明図である。図１７は、排他情報の他の登録状態を示す説明図である。
【０１１６】
メッセージキュー処理部１３に登録される同期要求には、例えばRADIUSプロトコルの場合、図１３に示すように、パケット受信日時、同期要求登録要求時刻、排他情報レコードインデックス、更新種別、レルム番号、ユーザID、Acct-Session-Id、Framed-IP-Address、RADIUSクライアントIPアドレス、更新内容などの項目が設けられている。
【０１１７】
このうち、パケット受信日時は、アプリケーション処理部１１が、例えば認証要求などの要求を受信した日時であり、同期要求登録要求時刻は、メッセージキュー処理部１３に対する当該同期要求の登録要求を行った時刻であり、排他情報レコードインデックスは、当該同期要求に対応する排他情報レコードを指すインデックスであり、更新種別は、当該同期要求による記憶部１２，２２の更新処理に関する、他の同期要求による更新処理に対する排他条件であり、更新内容は、当該同期要求による記憶部１２の更新内容である。
【０１１８】
また、レルム番号、ユーザID、Acct-Session-Id、Framed-IP-Address、RADIUSクライアントIPアドレスは、アプリケーション処理部１１へ入力された認証要求およびこれら対する認証応答に関する属性情報であり、これら属性情報のいずれか１つ、または複数の組み合わせが処理種別情報として用いられる。
【０１１９】
同期排他処理部１６に登録される排他情報には、例えばRADIUSプロトコルの場合、図１４に示すように、同期要求と同じ項目として、同期要求登録要求時刻、更新種別、レルム番号、ユーザID、Acct-Session-Id、Framed-IP-Address、RADIUSクライアントIPアドレス、更新内容などの項目が設けられており、また新たな項目として、データフラグおよびロックが設けられている。
【０１２０】
データフラグは、当該排他情報の有効／無効を示すフラグ情報であり、当該排他情報と対応する同期要求による更新処理が未完了の場合には有効を示し、更新処理が完了した場合には無効を示す。
ロックは、当該排他情報に対する更新可否を示すフラグ情報であり、当該排他情報と対応する同期要求による更新処理が未完了で当該排他情報の更新が不可の場合にはロック（Loched）を示し、更新処理が完了して当該排他情報の更新が可能な場合にはアンロック（Unlocked）を示す。
【０１２１】
同期排他処理部１６は、アプリケーション処理部１１からの排他情報登録要求に応じて、図１５の排他情報登録処理を実行する。
まず、同期排他処理部１６は、同期排他テーブル１６ＡをＷｒｉｔｅロックすることにより、他のスレッドによる同期排他テーブル１６Ａでの書込動作を禁止し（ステップ４４０）、同期排他テーブル１６Ａに保存されている排他情報レコードのうち、次にレコードを登録すべき位置を示す次レコードインデックスを基点として、次レコードインデックス以降のレコードからデータフラグが「無効」を示す無効化レコードを検索する（ステップ４４１）。この際、Ｗｒｉｔｅロック状態において、当該スレッドではＲｅａｄ／Ｗｒｉｔｅいずれも可とし、他のスレッドではＲｅａｄ／Ｗｒｉｔｅいずれも不可でブロック（処理待ち）とする。
【０１２２】
次に、同期排他処理部１６は、検索した無効化レコードに対して、排他情報登録要求で通知された新たな排他情報を登録するとともに、登録したレコードの次のレコードに次レコードインデックスを設定し（ステップ４４２）、当該レコードのデータフラグを「有効」に更新する（ステップ４４３）。
この後、同期排他処理部１６は、同期排他テーブル１６ＡのＷｒｉｔｅロックを開放し（ステップ４４４）、一連の排他情報登録処理を終了する。
【０１２３】
したがって、同期排他テーブル１６Ａが排他情報登録処理開始時に、例えば図１６に示す状態であった場合、データフラグが「無効」のレコード、すなわち当該排他情報と対応する同期要求のデータ同期処理が完了している無効化レコードとして、レコード１，４，５が存在している。
【０１２４】
ここで、次レコードインデックスがレコード４を示している場合、同期排他処理部１６は、レコード４を基点として、レコード４以降に登録されている無効化レコードを検索する。
図１６の場合、レコード４が無効化レコードであることから、レコード４が更新対象として選択される。そして、図１７に示すように、レコード４に新たな排他情報が登録されて、当該レコードのデータフラグが「有効」に更新され、次レコードインデックスはレコード５に設定される。なお、図１６および図１７は、RADIUSプロトコルの場合における同期排他テーブルの状態例であり、このうちロック欄における「Locked」および「Unlocked」は、個々のレコードに対するＲｅａｄロックの有無を示している。
【０１２５】
［排他情報確認処理］
次に、図１８〜図２１を参照して、同期排他処理部１６における排他情報確認処理について説明する。図１８は、排他情報確認処理を示すフローチャートである。図１９は、更新種別の詳細を示す説明図である。図２０は、排他確認要求での同期要求指定例である。図２１は、排他情報確認処理時における同期排他テーブルの検索状態を示す説明図である。なお、図１９〜図２１には、RADIUSプロトコルの場合の例が示されている。
【０１２６】
同期排他処理部１６は、データ同期送信処理部１４からの排他確認要求に応じて、図１５の排他情報登録処理を実行する。
まず、同期排他処理部１６は、同期排他テーブル１６Ａから、排他確認要求で指定された同期要求に関連するレコード、すなわち当該同期要求と処理種別が一致するレコードであって、データフラグが「有効」を示すレコードを、関連レコードとして検索し（ステップ４５０）、検索した関連レコードをＲｅａｄロックすることにより、他のスレッドによる読出動作を禁止する（ステップ４５１）。この際、Ｒｅａｄロック状態において、当該スレッドではＲｅａｄのみ可とし、他のスレッドではＲｅａｄのみ可でＷｒｉｔｅはブロック（処理待ち）とする。
【０１２７】
続いて、同期排他処理部１６は、検索した関連レコードに、当該同期要求と対応する排他情報以外のレコードであって、当該同期要求より先に優先してデータ同期処理すべき同期要求に関する優先処理レコードが含まれているか否か確認する（ステップ４５２）。
ここで、優先処理レコードが含まれている場合（ステップ４５２：ＹＥＳ）、同期排他処理部１６は、関連レコードのＲｅａｄロックを開放した後（ステップ４５３）、これらすべての優先処理レコードのデータフラグが「無効」となるまで待機し（ステップ４５４）、これら優先処理のすべてのレコードのデータフラグが「無効」となった時点でステップ４５０へ移行する。
【０１２８】
一方、ステップ４５２において、検索した関連レコードに優先処理レコードが含まれていない場合（ステップ４５２：ＮＯ）、同期排他処理部１６は、関連レコードのＲｅａｄロックを開放した後（ステップ４５５）、当該排他確認要求に対応する排他確認結果として、指定された同期要求より先に優先してデータ同期処理すべき他の同期要求が存在しない旨を示す排他確認結果をデータ同期送信処理部１４へ出力し（ステップ４５６）、一連の排他情報確認処理を終了する。
【０１２９】
これにより、同期排他処理部１６において、排他確認要求で指定された同期要求より先にデータ同期処理をすべき同期未完了の同期要求が存在するか確認され、同期未完了の同期要求が存在する場合には、これら同期未完了の同期要求がすべてデータ同期処理された後、排他確認要求で指定された同期要求のデータ同期処理がデータ同期送信処理部１４で実行される。
【０１３０】
排他情報には、図１９に示すように、同期要求と同様、記憶部１２に対するデータ更新処理の処理方法に関する種別を示す更新種別が含まれており、これら更新種別ごとに、データ同期送信処理部１４からの排他確認要求で指定された同期要求と処理種別が一致する排他情報であるか否かを判定するための判定条件が設定されている。
例えば、更新種別「1.Access-Accept」の同期要求については、レルム番号とユーザＩＤの両方が同一の場合に当該同期要求と処理種別が一致していると判断される。また、更新種別「8.Accounnting-On」の排他情報については、RADIUSクライアントIPアドレスが同一の場合に当該同期要求と処理種別が一致していると判断される。
【０１３１】
したがって、データ同期送信処理部１４からの排他確認要求で指定された同期要求が、例えば図２０のような属性値を持っていた場合、当該更新種別が「1.Access-Accept」であることから、レルム番号とユーザＩＤの両方が同一の排他情報が、当該同期要求に関連する関連レコードとして検索される。
この場合、レルム番号が「12345」でユーザＩＤが「User03」であることから、図２１に示す同期排他テーブル１６Ａでは、レコード２，３，４の３つが当該同期要求に関連する関連レコードとして検索される。なお、図２１のロック欄における「Locked」および「Unlocked」は、個々のレコードに対するＲｅａｄロックの有無を示している。
【０１３２】
また、これら関連レコードのうち当該同期要求と対応するレコード４以外のレコード２，３が優先処理レコードとして選択される。なお、関連レコードのうち、当該同期要求と対応するレコードより後に登録されたレコードが含まれている場合には、これらレコードの同期要求登録要求時刻を比較して、当該同期要求と対応するレコードより前に登録されたレコードのみを優先処理レコードとして選択すればよい。
【０１３３】
また、同期排他テーブル１６Ａにおいて、関連レコードをＲｅａｄロックする場合、これら関連レコードの項目のロックを「Locked」に更新し、Ｒｅａｄロックを開放する場合、ロックを「Unlocked」に更新する。これにより、同期排他テーブル１６Ａに登録されている排他情報のうち、排他確認の対象となる同期要求に関連する関連レコードのみがＲｅａｄロックされる。このため、処理種別が異なる他の同期要求に関連する関連レコードについては、読出動作することが可能となり、処理種別が異なる他の同期要求、すなわちデータ同期処理の処理順序において関係性のない同期要求に関する排他確認処理を、並行して実行することができる。
【０１３４】
［排他情報無効化処理］
次に、図２２〜図２４を参照して、同期排他処理部１６で排他情報を無効化する際の排他情報無効化処理について説明する。図２２は、排他情報無効化処理を示すフローチャートである。図２３は、無効化要求での同期要求指定例である。図２４は、排他情報無効化処理時における同期排他テーブルの検索状態を示す説明図である。なお、図２３、図２４には、RADIUSプロトコルの場合の例が示されている。
【０１３５】
同期排他処理部１６は、データ同期送信処理部１４からの無効化要求に応じて、図２２の排他情報無効化処理を実行する。
まず、同期排他処理部１６は、同期排他テーブル１６ＡをＷｒｉｔｅロックすることにより、他のスレッドによる同期排他テーブル１６Ａでの書込動作を禁止し（ステップ４６０）、無効化要求で指定された同期要求と対応するレコードを検索する（ステップ４６１）。
続いて、同期排他処理部１６は、検索したレコードのデータフラグを「無効」に更新して（ステップ４６２）、同期排他テーブル１６ＡのＷｒｉｔｅロックを開放し（ステップ４６３）、一連の排他情報無効化処理を終了する。
【０１３６】
したがって、データ同期送信処理部１４からの無効化要求で指定された同期要求が、例えば図２３のような属性値を持っていた場合、Acct-Session-IDが「0123456789abcdef」であることから、図２４に示す同期排他テーブル１６Ａでは、レコード２が当該同期要求と対応するレコードとして検索され、このレコードのデータフラグが「有効」から「無効」に更新されるとともに、ロックが「Locked」から「Unlocked」に更新される。なお、図２４のロック欄における「Locked」および「Unlocked」は、個々のレコードに対するＲｅａｄロックの有無を示している。
【０１３７】
［第６の実施の形態の効果］
このように本実施の形態は、情報処理装置１０に、同期要求ごとに、当該同期要求と対応する排他情報を記憶する同期排他処理部１６をさらに設けて、アプリケーション処理部１１で、同期要求をメッセージキュー処理部１３へ保存する際、当該同期要求と対応する排他情報として当該同期要求の処理種別を示す処理種別情報を含む排他情報を、同期排他処理部１６へ登録し、データ同期送信処理部１４で、メッセージキュー処理部１３から同期要求を取得して情報処理装置２０へ送信する際、同期排他処理部１６により、当該同期要求の処理種別に該当する排他情報のうち、データ同期処理が未完了で当該同期要求より先にデータ同期処理すべき同期要求に関する排他情報がないことを確認した後、当該同期要求を情報処理装置２０へ送信するようにしたものである。
【０１３８】
これにより、情報処理装置１０のデータ同期送信処理部１４に、例えばマルチスレッド機能を利用して、複数のデータ同期送信処理を並列的に実行する機能を設けた場合でも、メッセージキュー処理部１３への同期要求の保存順序と同じ順序、すなわち記憶部１２に対するデータ更新処理と同じ順序で、データ同期送信処理部１４の各データ同期送信処理（スレッド）が同期要求を情報処理装置２０へ送信することができる。
したがって、情報処理装置２０のデータ同期受信処理部２５では、情報処理装置１０の記憶部１２に対するデータ更新処理と同じ順序で、記憶部２２に対するデータ同期処理を実行することが可能となり、情報処理装置１０でのデータ更新順序と情報処理装置２０でのデータ同期順序との逆転を回避することができる。
【０１３９】
また、本実施の形態では、排他情報確認処理において、他のスレッドとの競合を回避するため同期排他テーブル１６Ａでの読出動作をロックする際、排他確認対象となる同期要求と関連する関連レコードのみをＲｅａｄロックするようにしたので、処理種別が異なる他の同期要求に関連する関連レコードについては、読出動作することが可能となり、処理種別が異なる他の同期要求、すなわちデータ同期処理の処理順序において関係性のない同期要求に関する排他確認処理を、並行して実行することができる。
【０１４０】
［第７の実施の形態］
次に、図２５〜図２７を参照して、本発明の第７の実施の形態にかかるデータ同期システムについて説明する。図２５は、第７の実施の形態にかかるデータ同期システムの構成を示すブロック図である。図２６は、第７の実施の形態にかかるデータ同期システムの動作を示すフロー図である。図２７は、第７の実施の形態にかかるデータ同期システムの動作を示すシーケンス図である。
【０１４１】
第６の実施の形態では、情報処理装置１０に排他情報処理部１６を設けて、情報処理装置１０でのデータ更新処理順序と情報処理装置２０でのデータ同期処理順序との逆転を回避する場合を例として説明した。
本実施の形態では、情報処理装置２０により、情報処理装置１０でのデータ更新順序に基づいて、記憶部２２へのデータ同期処理を行う場合について説明する。
【０１４２】
本実施の形態にかかる情報処理装置２０は、半導体メモリやハードディスクなどの記憶装置からなる同期テーブル２６Ａを有し、通信ネットワーク３０を介して情報処理装置１０から受信した同期要求を同期テーブル２６Ａへ順次保存する同期要求記憶部２６をさらに備えている。
【０１４３】
また、データ同期受信処理部２５は、記憶部２２のデータ同期処理を行う際、記憶部１２でのデータ更新処理の順序と一致した順序にしたがって、記憶部２２に対して最も先にデータ同期処理すべき同期要求を同期要求記憶部２６から順に取得し、当該同期要求に含まれる、更新の前後における記憶データ１２Ａの差分に相当する差分情報に基づいて、順次、記憶部２２のデータ同期処理を行う機能を有している。
なお、本実施の形態にかかる情報処理装置１０，２０におけるその他の構成については、前述した第２の実施の形態と同じであり、ここでの詳細な説明は省略する。
【０１４４】
［第７の実施の形態の動作］
次に、図２６および図２７を参照して、本実施の形態にかかるデータ同期システムの動作について説明する。
まず、情報処理装置１０のアプリケーション処理部１１は、アプリケーションを起動し、入力された認証要求などの要求に応じて（ステップ５００）、記憶部１２の記憶データ１２Ａを用いた情報処理を実行する。
【０１４５】
ここで、記憶データ１２Ａの更新が発生した場合、アプリケーション処理部１１は、同期要求と前後して、アプリケーションから出力された更新要求を、記憶部１２に対して出力する（ステップ５０１）。
記憶部１２は、この更新要求を受け取って記憶データ１２Ａを更新するデータ更新処理を実行し（ステップ５０２）、その更新結果をアプリケーション処理部１１へ返送する（ステップ５０３）。
【０１４６】
また、アプリケーション処理部１１は、排他情報の登録処理と並行して、いわゆるenqueue処理により、アプリケーションからのエンキュー要求（同期要求）を、メッセージキュー処理部１３に対して出力する（ステップ５０４）。
メッセージキュー処理部１３は、この同期要求を受け取って、メッセージキューへ順次保存し（ステップ５０５）、保存した旨のエンキュー結果（同期要求受領結果）を直ちにアプリケーション処理部１１へ返送する（ステップ５０６）。
アプリケーション処理部１１は、記憶部１２からの更新結果やメッセージキュー処理部１３での同期結果、さらにはアプリケーションでの情報処理結果に基づいて、ステップ５００で入力された要求に対する応答を出力する（ステップ５０７）。
【０１４７】
一方、データ同期送信処理部１４は、データ同期送信処理部１４自身のデータ同期送信処理が完了したことを契機に、あるいは定期的に起動されて、いわゆるdequeue処理により、メッセージキュー処理部１３に対してデキュー要求（取得要求）を出力し、新たな同期要求がメッセージキューに存在する場合には、休むことなく連続的にデキュー要求を出力する（ステップ５１０）。
メッセージキュー処理部１３は、データ同期送信処理部１４からのデキュー要求に応じて、メッセージキューに保存されている同期要求を、それぞれの保存順序に応じて順に取得して（ステップ５１１）、データ同期送信処理部１４へデキュー結果として出力する（ステップ５１２）。
【０１４８】
これに応じて、データ同期送信処理部１４は、メッセージキュー処理部１３からのデキュー結果に含まれる同期要求を情報処理装置２０の同期要求記憶部２６へ登録するための登録要求を、通信ネットワーク３０を介して情報処理装置２０へ送信する（ステップ５１３）。
情報処理装置２０の同期要求記憶部２６は、通信ネットワーク３０を介してデータ同期送信処理部１４からの登録要求を受信し、この登録要求で通知された同期要求を同期テーブル２６Ａへ登録し（ステップ５１４）、登録した旨の登録結果を、通信ネットワーク３０を介して情報処理装置１０へ返送する（ステップ５１５）。
【０１４９】
情報処理装置２０のデータ同期受信処理部２５は、同期要求記憶部２６への同期要求の登録を契機に、データ同期受信処理部２５自身のデータ同期受信処理が完了したことを契機に、あるいは定期的に起動されて、同期要求を取得するための取得要求を同期要求記憶部２６へ出力する（ステップ５２０）。
同期要求記憶部２６は、データ同期受信処理部２５からの取得要求に応じて、登録されている同期要求のうちから、記憶部１２に対して実行したデータ更新処理の順序と一致した順序にしたがって、記憶部２２に対して最も先にデータ同期処理すべき同期要求を取得し（ステップ５２１）、データ同期受信処理部２５へ取得結果として出力する（ステップ５２２）。
【０１５０】
これに応じて、データ同期受信処理部２５は、同期要求記憶部２６からの取得結果で通知された同期要求に含まれる差分情報に基づいて、記憶部２２の記憶データ２２Ａの更新を要求する（ステップ５２３）。
情報処理装置２０の記憶部２２は、データ同期受信処理部２５により受け取った、情報処理装置１０からの同期要求に基づいて、記憶データ２２Ａを更新する（ステップ５２４）。これにより、記憶データ１２Ａ，２２Ａがデータ同期される。
【０１５１】
この後、記憶部２２は、当該同期要求による同期結果を、データ同期受信処理部２５へ出力する（ステップ５２５）。
データ同期受信処理部２５は、この同期結果に応じて、同期要求記憶部２６のうちデータ同期処理が完了した同期要求を削除するための削除要求を同期要求記憶部２６へ出力する（ステップ５２６）。
これに応じて、同期要求記憶部２６は、データ同期受信処理部２５の削除要求で指定された同期要求を同期テーブル２６Ａから削除し（ステップ５２７）、その削除結果をデータ同期受信処理部２５へ出力する（ステップ５２８）。
【０１５２】
これにより、情報処理装置１０のデータ同期送信処理部１４に、例えばマルチスレッド機能を利用して、複数のデータ同期送信処理を並列的に実行する機能を設けた場合でも、記憶部１２に対するデータ更新処理と同じ順序で、情報処理装置２０の記憶部２２に対してデータ同期処理を行うことができる。
【０１５３】
［同期要求取得処理］
次に、図２８および図２９を参照して、同期要求記憶部２６における同期要求取得処理について説明する。図２８は、同期要求取得処理を示すフローチャートである。図２９は、同期要求取得処理を示す説明図である。
同期要求記憶部２６は、データ同期受信処理部２５からの取得要求に応じて図２８の同期要求取得処理を実行する。
【０１５４】
まず、同期要求記憶部２６は、同期テーブル２６Ａに登録されているすべての同期要求を、当該同期要求のパケット受信日時の順でソート（並べ替え）し（ステップ５３０）、ソート結果の先頭に位置する同期要求、すなわちパケット受信日時が最も古い同期要求を選択する（ステップ５３１）。この場合、ソート以外の方法、例えば各同期要求のうちからパケット受信日時が最小の同期要求を選択するなどの方法を用いてもよい。
【０１５５】
この後、同期要求記憶部２６は、選択した最古の同期要求を、取得結果としてデータ同期受信処理部２５へ通知し（ステップ５３２）、一連の同期要求取得処理を終了する。
これにより、同期要求記憶部２６において、記憶部２２に対して最も先にデータ同期処理すべき同期要求を選択して、データ同期受信処理部２５へ通知することができる。
【０１５６】
前述の図１３に示したように、同期要求のパケット受信日時は、アプリケーション処理部１１が、例えば認証要求など、記憶部１２の記憶データ１２Ａの更新を含む要求を受信した日時である。アプリケーション処理部１１では、これら要求を受信した時点で、直ちに記憶データ１２Ａのデータ更新処理を実行する。このため、このパケット受信日時の順序は、記憶部１２でのデータ更新処理の順序と一致しているから、同期テーブル２６Ａのうち要求を受信した日時が最古の同期要求が、記憶部２２に対して最も先にデータ同期処理すべき同期要求となる。
【０１５７】
なお、記憶部１２に対するデータ更新処理の順序を示す時刻情報については、パケット受信日時だけでなく、他の時刻情報を用いてもよい。例えば、アプリケーション処理部１１が同期要求をメッセージキュー処理部１３へエンキューした時刻、すなわち図１３の同期要求登録要求時刻も、記憶部１２でのデータ更新処理の順序と一致しているので、パケット受信日時に代えて同期要求登録要求時刻を用いてもよい。また、データ同期送信処理部１４から同期要求を送信した順序も、記憶部１２でのデータ更新処理の順序と一致しているので、パケット受信日時に代えてデータ同期送信処理部１４での同期要求送信時刻を用いてもよい。
【０１５８】
同期要求記憶部２６に登録されている同期要求は、情報処理装置１０から通信ネットワーク３０を介して情報処理装置２０へ転送されたものである。この際、通信ネットワーク３０では、スループットが大幅に変化した場合、特定の同期要求のみが遅延して情報処理装置２０へ到着する場合がある。したがって、ある同期要求Ｂより先にデータ同期処理すべき同期要求Ａが通信ネットワーク３０で遅延したため、同期要求Ａが到着していない時点で、同期要求Ａより先に同期要求Ｂが同期要求記憶部２６から読み出されてデータ同期処理される場合も考えられる。
【０１５９】
したがって、このような通信ネットワーク３０における同期要求の遅延ばらつきが大きいデータ同期システムでは、その最大遅延時間より長い待機時間以上、同期要求記憶部２６で待機させた同期要求のうちから、最も先にデータ同期処理すべき同期要求を選択するようにしてもよい。この際、最大遅延時間については、事前に試験等をして遅延時間を測定し、その中で測定された遅延時間の最大値を最大遅延時間として設定すればよい。
【０１６０】
具体的には、図２８において、ステップ５３０を実行する前に、同期要求取得処理の実行時刻から予め記憶部２２に設定されている待機時間を減算することにより、処理除外時刻を算出し、同期テーブル２６Ａに登録されているすべての同期要求のうち、当該同期要求のパケット受信日時が処理除外時刻より過去の同期要求を抽出しておく。そして、ステップ５３０において、これら抽出したすべての同期要求を、当該同期要求のパケット受信日時の順でソート（並べ替え）して、以降のステップを実行すればよい。
これにより、通信ネットワーク３０における同期要求の遅延ばらつきが同期要求記憶部２６で吸収されて、同期要求Ａが到着していない時点で、同期要求Ａより先に同期要求Ｂが同期要求記憶部２６から読み出されることを回避することができる。
【０１６１】
また、同期要求記憶部２６に登録される同期要求の数が多い場合、これら同期要求のうちから最も先にデータ同期処理すべき同期要求を選択する処理の計算コストが高くなり、処理負担や処理時間が増加する。
例えば、すべての同期要求をソートする方法で、最も先にデータ同期処理すべき同期要求を選択する場合、典型的なソートアルゴリズムによれば、Ｎ個のレコードすべてをソートするのに必要となる計算量（回数）は、最善値でＮｌｏｇＮ、最悪値でＮ2となる。Ｎ＝１０００個の場合、最善値で３０００回、最悪値で１００万回となり、非常に計算コストが高い。
【０１６２】
一方、前述したように、同期テーブル２６Ａに登録されているすべての同期要求のうち、当該同期要求のパケット受信日時が処理除外時刻より過去の同期要求を抽出した後、これら同期要求を、それぞれの同期要求のパケット受信日時の順でソートすれば、ソート対象となる同期要求を削減できる。
例えば、これら比較により抽出したレコード数が１００個の場合、これらレコードをソートするのに必要となる計算量（回数）は、最善値で２００回、最悪値で１万回であるから、Ｎ＝１０００個のレコードのパケット受信日時を処理除外時刻と比較する処理の計算量＝１０００回を加算しても、最善値で１２００回、最悪値で１１０００回となる。したがって、前述したすべてのレコード１０００個をソートする場合と比較して、最善値で約１／３、最悪値約１／１００となり、計算コストを大幅に削減できる。
【０１６３】
また、同期テーブル２６Ａに登録されているすべての同期要求のうち、当該同期要求のパケット受信日時が処理除外時刻より過去の同期要求を抽出した後、抽出したもののうちから、同期テーブル２６Ａに登録された順序で先頭から指定個数分の同期要求を再抽出し、再抽出した同期要求を、それぞれの同期要求のパケット受信日時の順でソートするようにしてもよい。これにより、ソート対象となる同期要求の数をさらに絞り込むことができ、計算コストのさらなる削減を実現できる。
【０１６４】
［第７の実施の形態の効果］
このように、本実施の形態は、情報処理装置２０に、第１の情報処理装置から受信した同期要求を順次保存する同期要求記憶部２６をさらに設け、データ同期受信処理部２５で、記憶部２２のデータ同期処理を行う際、同期要求記憶部２６で保存している同期要求のうちから、記憶部１２に対して実行したデータ更新処理の順序と一致した順序にしたがって、記憶部２２に対して最も先にデータ同期処理すべき同期要求を取得し、当該同期要求に含まれる、更新の前後における記憶データ１２Ａの差分に相当する差分情報に基づいて記憶部２２のデータ同期処理を行うようにしたものである。
【０１６５】
これにより、情報処理装置１０のデータ同期送信処理部１４に、例えばマルチスレッド機能を利用して、複数のデータ同期送信処理を並列的に実行する機能を設けた場合でも、メッセージキュー処理部１３への同期要求の保存順序と同じ順序、すなわち記憶部１２に対するデータ更新処理と同じ順序で、情報処理装置２０の記憶部２２に対してデータ同期処理を行うことができ、情報処理装置１０でのデータ更新順序と情報処理装置２０でのデータ同期順序との逆転を回避することができる。
【０１６６】
また、本実施の形態において、最も先にデータ同期処理すべき同期要求を取得する際、通信ネットワーク３０における同期要求の最大遅延時間より長い待機時間だけ同期要求記憶部で待機させた同期要求のうちから、第１の記憶部に対して実行したデータ更新処理の順序と一致した順序にしたがって、最も先にデータ同期処理すべき同期要求を取得するようにしてもよい。
これにより、通信ネットワーク３０における同期要求の遅延ばらつきが同期要求記憶部２６で吸収されて、データ同期受信処理部２５が同期要求記憶部２６から取得する同期要求の順序の逆転を回避することができる。
【０１６７】
また、本実施の形態では、データ同期受信処理部２５からの取得要求に応じて、同期要求記憶部２６で、同期テーブル２６Ａに登録されている同期要求のうちから、最も先にデータ同期処理すべき同期要求を選択する処理を実行する場合を例として説明したが、これに限定されるものではなく、データ同期受信処理部２５で実行してもよい。
この場合、データ同期受信処理部２５が、記憶部２２のデータ同期処理を行う際、取得要求を同期要求記憶部２６へ出力して、同期テーブル２６Ａに登録されているすべての同期要求を取得し、これら同期要求に対して図２８に示した同期要求取得処理を実行すればよい。
【０１６８】
［第８の実施の形態］
次に、図３０および図３１を参照して、本発明の第８の実施の形態にかかるデータ同期システムについて説明する。図３０は、第８の実施の形態にかかるデータ同期システムの構成を示すブロック図である。図３１は、第８の実施の形態にかかるデータ同期システムの動作を示すフロー図である。
【０１６９】
第７の実施の形態では、情報処理装置２０に同期要求記憶部２６を設けて、情報処理装置１０でのデータ更新順序と情報処理装置２０でのデータ同期順序との逆転を回避する場合を例として説明した。
この際、同期要求記憶部２６では、一般的なデータベースシステムで使用されているインデックス（索引）を構築して、同期要求に対してより高速にアクセス可能とすることにより、データ同期処理の完了までの時間を短縮することが想定される。
【０１７０】
一方、インデックスを構築したテーブルでは、レコードの登録や削除を頻繁に繰り返した場合、インデックスが断片化（フラグメンテーション）してしまい、レコードに対するアクセス速度が低下する可能性がある。
【０１７１】
例えば、一般的なインデックスの１つであるＢツリーインデックスは、ルートノードＸ、ブランチノードＹ、リーフノードＺの３の階層に分かれた構造をしている。このうち、リーフノードは、検索対象となるデータが登録されている実データテーブル上のアドレスを示すＤＢＡと実データテーブルの検索キーとなるＩＮＤＥＸキーカラムデータとで構成されており、１つのリーフノードにはＤＢＡとＩＮＤＥＸキーカラムデータのセットが複数行まとめて格納される。
【０１７２】
このインデックスは、データの更新・削除を行うと状況が変化するが、リーフの数、削除されたリーフの扱いがどのようになるかが重要な観点となる。例えば、「１０」、「２０」、「３０」、「４０」、「５０」、「６０」、「７０」、「８０」の８個の検索キー（ＩＮＤＥＸキーカラムデータ）があった場合、７０を小さい数から順々に探していくと、７回目の比較処理で見つかることになる。
これに対して、Ｘ（１０，５０）、Ｙ１（１０，３０），Ｙ２（５０，７０）、Ｚ１（１０，２０）、Ｚ２（３０，４０）、Ｚ３（５０，６０）、Ｚ４（７０，８０）というインデックス構造を持っている場合、検索キー「７０」は、Ｘ→Ｙ２→Ｚ４という３回目の処理で見つかることになり、計算量を削減できる。
【０１７３】
このようにインデックス構造では、実データテーブルへのデータ追加に伴ってブランチノードの変更が必要となった場合、リーフノード内の行数がインデックス作成時の設定値を超える際にはリーフノードの追加が必要となる。例えばデータ「２５」が追加された場合、Ｙ１がＹ１（１０，２５，３０）に変更され、Ｚ１，Ｚ２への追加が検討される。ここでＺ１，Ｚ２の行数が設定値２に達しているため追加できず、新たなリーフノードＺ５（２５，）が追加される。また、データ「１５」を追加する場合には、Ｚ１（１０，２０）の中間の値であるため、元のＺ１が分離されて、Ｚ１（１０，１５）、Ｚ５（２０，）となる。
【０１７４】
また、実データテーブルのデータを更新する際、更新する元データの格納されていたリーフから元データの行が削除され、更新後データはリーフに空きがない場合には、新たにリーフノードを増やして追加される。
また、実データテーブルのデータを削除する際、それぞれのノードで管理するデータがすべて削除されてもノード自体は削除されない。
【０１７５】
このように、データの追加、更新、削除が頻繁に発生すると、削除リーフの増加と新たなリーフノードの増加が発生し、またリーフが散在することになるため、インデックスが断片化する。
したがって、極めて短い間隔でデータ同期処理を実行する必要がある場合、同期要求記憶部２６に対して同期要求の登録や削除が頻繁に実行されるため、同期要求記憶部２６で構築したインデックスが断片化してしまい、同期要求に対するアクセス速度が低下する可能性がある。
【０１７６】
本実施の形態は、情報処理装置２０の同期要求記憶部２６に複数の同期テーブル２６Ａを設け、これら同期テーブル２６Ａを切り替えて運用することにより、待機中の同期テーブル２６Ａに対するインデックスの再構築や、さらには不要レコードの削除などのテーブル初期化処理を行う場合について説明する。なお、ここでは、２つの同期テーブル２６Ａを切り替えて運用する場合を例として説明したが、３つ以上の同期テーブル２６Ａを切り替えて運用してもよい。
【０１７７】
本実施の形態にかかる情報処理装置２０は、半導体メモリやハードディスクなどの記憶装置からなる同期テーブル２６Ａを複数有し、通信ネットワーク３０を介して情報処理装置１０から受信した同期要求を同期テーブル２６Ａへ順次保存する同期要求記憶部２６と、待機中の同期テーブル２６Ａに対してインデックスの再構築や、さらには不要レコードの削除などのテーブルの初期化を行うテーブル初期化処理部２７をさらに備えている。
【０１７８】
また、データ同期受信処理部２５は、記憶部２２のデータ同期処理を行う際、同期要求記憶部２６の各同期テーブル２６Ａに登録されているすべての同期要求のうちから、記憶部１２でのデータ更新処理の順序と一致した順序にしたがって、記憶部２２に対して最も先にデータ同期処理すべき同期要求を１つだけ、同期処理対象として取得し、当該同期要求に含まれる、更新の前後における記憶データ１２Ａの差分に相当する差分情報に基づいて順次記憶部２２のデータ同期処理を行う機能を有している。
【０１７９】
この際、同期処理対象を選択する具体例としては、同期テーブル２６Ａごとに、当該同期テーブル内の同期要求をそれぞれのパケット受信日時の順でソートして、最も先にデータ同期処理すべき同期要求をそれぞれ選択し、これら同期テーブル２６Ａごとに選択した同期要求のうちパケット受信日時が最も古い同期要求を、同期処理対象として選択してもよい。また、これらソートについては、前述した第７の実施の形態と同様にして計算コストを削減することもできる。
【０１８０】
また、情報処理装置１０のデータ同期送信処理部１４は、期間ごとに登録先となる同期テーブル２６Ａを定めた切替データに基づいて、メッセージキュー処理部１３から取得した同期要求を、当該登録処理時点における同期テーブル２６Ａに対して登録する機能を有している。
なお、本実施の形態にかかる情報処理装置１０，２０におけるその他の構成については、前述した第７の実施の形態と同じであり、ここでの詳細な説明は省略する。
【０１８１】
［第８の実施の形態の動作］
次に、図３０および図３１を参照して、本実施の形態にかかるデータ同期システムの動作について説明する。以下では、情報処理装置２０の同期要求記憶部２６に、同期テーブル２６Ａとして同期テーブルＡと同期テーブルＢの２つの同期テーブルが設けられている場合を例として説明する。また、全体的な動作の流れについては、第７の実施の形態と同様であることから、前述した図２７を参照して説明する。
【０１８２】
情報処理装置１０のデータ同期送信処理部１４は、メッセージキュー処理部１３から取得した同期要求を、情報処理装置２０の同期要求記憶部２６へ登録する際、予め設定されている切替データを参照して、当該登録処理時点における登録先となる同期要求記憶部２６の同期テーブル２６Ａを特定する。そして、特定した同期テーブル２６Ａを登録先として指定した登録要求を、通信ネットワーク３０を介して情報処理装置２０へ送信する（ステップ５１３）。
【０１８３】
図３２は、切替データの構成例である。ここでは、登録処理時刻が切替時刻「００：００」以降の期間については、同期要求の登録先として同期テーブルＡが割り当てられており、登録処理時刻が切替時刻「１２：００」以降の期間については、同期要求の登録先として同期テーブルＢが割り当てられている。
したがって、データ同期送信処理部１４は、「００：００〜１２：００」の期間については、同期テーブルＡに同期要求を登録し、「１２：００〜２４：００」の期間については、同期テーブルＢに同期要求を登録することになる。
【０１８４】
情報処理装置２０の同期要求記憶部２６は、通信ネットワーク３０を介してデータ同期送信処理部１４からの登録要求を受信し、この登録要求で通知された同期要求を、この同期要求で指定された登録先となる同期テーブル２６Ａを選択して登録し（ステップ５１４）、登録した旨の登録結果を、通信ネットワーク３０を介して情報処理装置１０へ返送する（ステップ５１５）。
【０１８５】
情報処理装置２０のデータ同期受信処理部２５は、同期要求記憶部２６への同期要求の登録を契機に、データ同期受信処理部２５自身のデータ同期受信処理が完了したことを契機に、あるいは定期的に起動されて、同期要求を取得するための取得要求を同期要求記憶部２６へ出力する（ステップ５２０）。
同期要求記憶部２６は、データ同期受信処理部２５からの取得要求に応じて、各同期テーブル２６Ａに登録されているすべての同期要求のうちから、記憶部１２に対して実行したデータ更新処理の順序と一致した順序にしたがって、記憶部２２に対して最も先にデータ同期処理すべき同期要求を１つだけ、同期処理対象として取得し（ステップ５２１）、データ同期受信処理部２５へ取得結果として出力する（ステップ５２２）。
【０１８６】
この際、同期テーブル２６Ａに対する同期要求の登録は、切替データに基づき期間ごとに決定されるものの、登録される同期要求の登録順は、通信ネットワーク３０で前後する場合が考えられる。このため、切替後の同期テーブルに登録された同期要求のほうが、切替前の同期テーブルに登録された同期要求より先にデータ同期処理をする必要がある場合も起こりうる。
したがって、本実施の形態では、各同期テーブル２６Ａを参照して、これら同期テーブル２６Ａのうちから最も先にデータ同期処理すべき同期要求を取得している。
【０１８７】
同期要求記憶部２６からの取得結果に応じて、データ同期受信処理部２５は、当該取得結果で通知された同期要求に含まれる差分情報に基づいて、記憶部２２の記憶データ２２Ａの更新を要求する（ステップ５２３）。
これ以降、前述と同様に、記憶部２２の記憶データ２２Ａが更新されてデータ同期処理が行われた後、同期要求記憶部２６の同期テーブル２６Ａに登録されている同期要求が削除される。
【０１８８】
また、情報処理装置２０のテーブル初期化処理部２７は、同期要求記憶部２６の同期テーブル２６Ａのうち、すべての同期要求についてデータ同期処理が完了した使用後の同期テーブル２６Ａ、すなわち待機中の同期テーブル２６Ａについて、初期化処理が未実行であれば、インデックスの再構築や、さらには不要レコードの削除などのテーブルの初期化を実行する。
これにより、同期テーブル２６Ａに対して、間欠的にテーブル初期化処理が行われるため、同期テーブル２６Ａのインデックスの断片化か解消されて、同期要求に対するアクセス速度の低下を回避することができる。
【０１８９】
［第８の実施の形態の効果］
このように、本実施の形態は、情報処理装置２０の同期要求記憶部２６に複数の同期テーブル２６Ａを設け、これら同期テーブル２６Ａを切り替えて運用することにより、待機中の同期テーブル２６Ａに対するインデックスの再構築や、さらには不要レコードの削除などのテーブル初期化処理を行うようにしたので、これら同期テーブル２６Ａの切替に応じて、同期テーブル２６Ａのインデックスの断片化を解消することができ、同期要求に対するアクセス速度の低下を回避することが可能となる。
【０１９０】
また、本実施の形態では、情報処理装置１０側でのみ切替データを利用する場合を例として説明したが、切替データを情報処理装置２０側でも利用してもよい。
例えば、図３２で示したように、同期テーブルの切替時点において、切替元テーブルと切替先テーブルが確定している。このため、最も先にデータ同期処理すべき同期要求を取得する際、これら切替元テーブルと切替先テーブルに登録されている同期要求のみを検索対象として絞り込みすることができる。
【０１９１】
これにより、３つ以上の同期テーブル２６Ａを順に切り替えて運用した際、同期テーブル２６Ａのすべてを検索対象とする場合と比較して、検索処理に要する計算量を大幅に削減できる。また、３つ以上の同期テーブル２６Ａを順に切り替えて運用した際、切替元テーブルおよび切替先テーブル以外のテーブルが、同期未完了の同期要求が残存していない待機テーブルとなるため、テーブル初期化処理を実行する際、同期要求の残存有無を確認する必要がなくなり、処理負担を大幅に軽減できる。
【０１９２】
また、切替元テーブルに登録されているすべての同期要求に関するデータ同期処理が終了した時点で、切替先テーブルのみを検索対象とすることにより、検索処理に要する計算量をさらに削減できる。
この際、前述したように、通信ネットワーク３０における同期要求の最大遅延時間を用いて、切替時刻から最大遅延時間に相当する時間以上経過した後、切替元テーブルに同期要求が残存していないことを確認してから、切替先テーブルのみを検索対象とするようにしてもよい。これにより、切替元テーブルの同期要求に関するデータ同期処理の終了を確認する処理を実行する必要がなくなり、検索処理に要する計算量を削減できる。
【０１９３】
また、同期テーブルの切替時点において、切替元テーブルと切替先テーブルが確定していることから、切替時に、切替元テーブルに残っている同期未完了の同期要求を、切替先テーブルへ結合（ｊｏｉｎ）するようにしてもよい。これにより、最も先にデータ同期処理すべき同期要求を取得する際、検索対象となる同期テーブルが、当該取得時刻に応じた１つの同期テーブルに限定されるため、検索処理に要する計算量を削減できる。
【０１９４】
また、本実施の形態では、テーブル初期化処理部２７において、同期要求に関するデータ同期処理の終了を確認した時点で、初期化処理が未実行であれば、当該待機中の同期テーブルを初期化する場合を例として説明したが、切替データに設定されている切替時刻に合わせて、各同期テーブルを初期化するようにしてもよい。
例えば、図３２では、時刻１２：００に同期テーブルＡから同期テーブルＢへ切り替えられることから、時刻１２：００から一定の待機時間経過後に、待機中の同期テーブルＡを初期化処理すればよい。この際、待機時間としては、通信ネットワーク３０における同期要求の最大遅延時間より長く、次の切替時刻までの切替間隔より短い時間長を用いればよい。
【０１９５】
［実施の形態の拡張］
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しうる様々な変更をすることができる。また、これら実施形態を任意に組み合わせ実施してもよい。
【０１９６】
以上の実施の形態では、アプリケーション処理部１１で実行されているアプリケーションから出力された同期要求を、アプリケーション処理部１１がメッセージキュー処理部１３へ出力する場合を例として説明したが、これに限定されるものではない。例えば、アプリケーションから出力された記憶部１２に対する更新要求を、ＯＳなどからなるアプリケーション処理部１１や他のアプリケーションがキャプチャし、その更新要求に基づいてメッセージキュー処理部１３へ同期要求を出力するようにしてもよい。
これにより、アプリケーションが同期要求を出力する機能を持つ必要がなくなり、データ同期処理に対応していないアプリケーションについてもデータ同期処理を適用することができる。
【０１９７】
また、以上の実施の形態は、ＤＢＭＳにおける２つの記憶部のデータ同期処理に限定されるものではなく、一般的なファイルシステム上のファイルの更新に対するデータ同期処理にも適用することができ、前述と同様の作用効果を得ることができる。
【０１９８】
また、前述した図３、図５、図７、および図８における、記憶部１２と記憶部２２との間を結ぶデータ同期の矢印は、それぞれの実施の形態を適用することにより、結果として記憶部１２と記憶部２２との間でデータ同期された状態となることを示しており、これら記憶部１２と記憶部２２との間で、直接、データ同期処理が行われることを示すものではない。
【符号の説明】
【０１９９】
１…データ同期システム、１０…情報処理装置、１１…アプリケーション処理部、１１Ａ，１１Ｂ…アプリケーション処理スレッド、１２…記憶部、１２Ａ…記憶データ、１３…メッセージキュー処理部、１４…データ同期送信処理部、１４Ａ，１４Ｂ…データ同期送信処理スレッド、１５…データ同期受信処理部、１６…同期排他処理部、１６Ａ…同期排他テーブル、２０…情報処理装置、２１…アプリケーション処理部、２２…記憶部、２２Ａ…記憶データ、２３…メッセージキュー処理部、２４…データ同期送信処理部、２５…データ同期受信処理部、２６…同期要求記憶部、２６Ａ…同期テーブル、２７…テーブル初期化処理部、３０…通信ネットワーク。
【図１】
2011070636.tif 000003
【図２】
2011070636.tif 000004
【図３】
2011070636.tif 000005
【図４】
2011070636.tif 000006
【図５】
2011070636.tif 000007
【図６】
2011070636.tif 000008
【図７】
2011070636.tif 000009
【図８】
2011070636.tif 000010
【図９】
2011070636.tif 000011
【図１０】
2011070636.tif 000012
【図１１】
2011070636.tif 000013
【図１２】
2011070636.tif 000014
【図１３】
2011070636.tif 000015
【図１４】
2011070636.tif 000016
【図１５】
2011070636.tif 000017
【図１６】
2011070636.tif 000018
【図１７】
2011070636.tif 000019
【図１８】
2011070636.tif 000020
【図１９】
2011070636.tif 000021
【図２０】
2011070636.tif 000022
【図２１】
2011070636.tif 000023
【図２２】
2011070636.tif 000024
【図２３】
2011070636.tif 000025
【図２４】
2011070636.tif 000026
【図２５】
2011070636.tif 000027
【図２６】
2011070636.tif 000028
【図２７】
2011070636.tif 000029
【図２８】
2011070636.tif 000030
【図２９】
2011070636.tif 000031
【図３０】
2011070636.tif 000032
【図３１】
2011070636.tif 000033
【図３２】
2011070636.tif 000034