(57)【要約】【課題】ノード間にて共有されるデータを、短時間で同期させる。【解決手段】情報処理装置は、記憶部と、算出部と、検証部と、同期部と、を含んで構成される。記憶部は、他装置と共有する共有データを構成する複数のデータからなるデータ集合を、階層的に記憶する。算出部は、複数のデータのそれぞれに対応する第１の特徴量、各階層に属するデータ集合のそれぞれに対応する第２の特徴量、を算出する。検証部は、各階層のデータ集合に対応する第２の特徴量が異なるデータ集合の特定を、上位層から下位層に向けて、自装置と前記他装置との間で交互に繰り返し、共有データのうちの更新データを含むデータ集合を特定し、特定されたデータ集合に含まれるデータに対応し、自装置と他装置の間で第１の特徴量が異なるデータを特定することで、共有データにおける更新データの有無を検証する。同期部は、更新データを、他装置との間で同期する。【選択図】図１
2015108927.tif 000002
【特許請求の範囲】
【請求項１】
他装置と共有する共有データを構成する複数のデータからなるデータ集合を、階層的に記憶する記憶部と、
前記複数のデータのそれぞれに対応する第１の特徴量、各階層に属するデータ集合のそれぞれに対応する第２の特徴量、を算出する算出部と、
各階層のデータ集合に対応する前記第２の特徴量が異なるデータ集合の特定を、上位層から下位層に向けて、自装置と前記他装置との間で交互に繰り返し、前記共有データのうちの更新データを含むデータ集合を特定し、前記特定されたデータ集合に含まれるデータに対応し、自装置と前記他装置の間で前記第１の特徴量が異なるデータを特定することで、前記共有データにおける更新データの有無を検証する検証部と、
前記更新データを、前記他装置との間で同期する同期部と、
を備える、情報処理装置。
【請求項２】
前記他装置との間で、少なくとも前記第１及び第２の特徴量を送受信する通信部をさらに備える請求項１の情報処理装置。
【請求項３】
前記検証部は、自装置で記憶している前記共有データから算出した前記第２の特徴量と、前記他装置から受信した前記第２の特徴量を比較し、前記更新データを含むデータ集合を特定する請求項２の情報処理装置。
【請求項４】
前記検証部は、自装置で記憶し、前記更新データを含むデータ集合と特定されたデータ集合に対応する前記第１の特徴量と、前記他装置から受信した前記第１の特徴量を比較し、前記更新データを特定する請求項２又は３の情報処理装置。
【請求項５】
前記算出部は、最下位のデータ集合に含まれる複数のデータのそれぞれに対応する前記第１の特徴量に基づいて、前記最下位のデータ集合に対応する前記第２の特徴量を算出する請求項１乃至４のいずれか一項に記載の情報処理装置。
【請求項６】
前記算出部は、１つ下の階層に属するデータ集合に対応する複数の前記第２の特徴量から、各階層のデータ集合に対応する前記第２の特徴量を算出する請求項１乃至５のいずれか一項に記載の情報処理装置。
【請求項７】
前記第１の特徴量は、前記共有データを構成するデータが更新されるたびにインクリメントされる値であり、前記第２の特徴量はハッシュ関数により生成される値である、請求項１乃至６のいずれか一項に記載の情報処理装置。
【請求項８】
前記検証部は、前記共有データの同期が必要なイベントの発生に応じて、自装置で記憶するデータ集合に対応する前記第２の特徴量を、前記他装置に送信する請求項１乃至７のいずれか一項に記載の情報処理装置。
【請求項９】
他装置と共有する共有データを構成する複数のデータからなるデータ集合を、階層的に記憶する工程と、
前記複数のデータのそれぞれに対応する第１の特徴量、各階層に属するデータ集合のそれぞれに対応する第２の特徴量、を算出する工程と、
各階層のデータ集合に対応する前記第２の特徴量が異なるデータ集合の特定を、上位層から下位層に向けて、自装置と前記他装置との間で交互に繰り返し、前記共有データのうちの更新データを含むデータ集合を特定し、前記特定されたデータ集合に含まれるデータに対応し、自装置と前記他装置の間で前記第１の特徴量が異なるデータを特定することで、前記共有データにおける更新データの有無を検証する工程と、
前記更新データを、前記他装置との間で同期する工程と、
を含む、データ同期方法。
【請求項１０】
他装置と共有する共有データを構成する複数のデータからなるデータ集合を、階層的に記憶する記憶部を備える情報処理装置を制御するコンピュータに実行させるプログラムであって、
前記複数のデータのそれぞれに対応する第１の特徴量、各階層に属するデータ集合のそれぞれに対応する第２の特徴量、を算出する処理と、
各階層のデータ集合に対応する前記第２の特徴量が異なるデータ集合の特定を、上位層から下位層に向けて、自装置と前記他装置との間で交互に繰り返し、前記共有データのうちの更新データを含むデータ集合を特定し、前記特定されたデータ集合に含まれるデータに対応し、自装置と前記他装置の間で前記第１の特徴量が異なるデータを特定することで、前記共有データにおける更新データの有無を検証する処理と、
前記更新データを、前記他装置との間で同期する処理と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、データ同期方法及びプログラムに関する。特に、ネットワークにて接続されたノード間にてデータを共有する情報処理装置、データ同期方法及びプログラムに関する。
【背景技術】
【０００２】
近年、ネットワークの信頼性、可用性を高めるために、経路や装置の冗長化が行われることが多い。あるいは、ノード間に親と子のような関係を持たせ、子ノードが収集したデータを親ノードが処理するネットワークシステムが構築されることもある。このようなネットワークシステムでは、ネットワークを構成するノードのそれぞれが保持するデータの整合性を確保する必要がある。具体的には、現用系と待機系の関係にあるノード間や、親ノードと子ノードの関係にあるノードにて、データの共有が行われる。このようなノード間にて、互いにデータ同期処理を実行することで、共有データの整合がなされている。
【０００３】
ここで、一方のノードにおいて軽度な障害（例えば、装置の稼働には影響がない程度の障害）が発生した場合や、オペレータがネットワーク構成の変更操作を行いノードの動作モードが変わった場合に、一時的にシステムの運用が中断されることがある。このような場合、中断要因が生じていないノードと、中断要因が生じたノードと、の間で、それぞれが保持するデータが一致しない可能性がある。例えば、現用系のノードと待機系のノード間において、待機系のノードに軽度な障害が生じ、当該障害を回復させて、システムの運用を続行する場合を考える。この場合、待機系のノードは、自らの障害が発生した時間帯にて変更され、且つ、ノード間にて共有されるべきデータを保持していない。そのため、このような更新データは、ノード間にて同期させる必要がある。
【０００４】
あるいは、親ノードと子ノードの関係にあるノード間において、親ノードの動作モード切り替え期間にて、子ノードが保持するデータに変化があった場合にも、共有データを同期させる必要がある。以上の事例のように、ノード間にて同期を図る必要がある更新データは、共有データの一部であることが多い。そのため、ノード間で共有しているデータにおいて、差異が生じたデータ（即ち、更新データ）の検知が行われる。
【０００５】
更新データを検知する手法としては、ノード間にて共有データを１つずつ確認し、更新データを見つけ出す手法が考えられる。しかし、このような方法では、実際に各ノードが保持する共有データに差異が生じていなくとも、共有データの全体に渡って、逐次、データを比較する必要があり、ノード間にて送受信するデータ量が増加する。このような手法では、共有データの同期に要する時間が長期化するため、非効率的な更新データの検知手法といえる。そのため、このような手法を共有データの同期に採用すれば、ネットワークを介して提供されるサービスの品質に影響を与えかねない。
【０００６】
特許文献１において、更新データの検知効率を改善するためのシステムが開示されている。特許文献１が開示するシステムでは、個々のデータベースを代表する、データベースごとのハッシュ値を比較し、当該ハッシュ値が相違していれば、デバイスが保持する個々のデータごとにハッシュ値を生成し、生成されたハッシュ値の比較を行っている。つまり、特許文献１のシステムでは、全共有データのハッシュ値が各デバイス間で異なることを契機として、共有データを構成する各データに対応するハッシュ値を比較している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２００９−５１０５６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
なお、上記先行技術文献の開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。
【０００９】
上述のように、特許文献１が開示する技術は、共有データに差異が生じているか否かをデータベースごとのハッシュ値を比較する検知と、共有データを構成する個々のデータごとのハッシュ値を比較する検知と、を実行している。特許文献１が開示する技術では、データベースを代表するハッシュ値に相違する箇所が存在すれば、当該データベースに含まれる全データのハッシュ値を、データを共有する装置間で比較することで、データ同期の対象となるデータを特定している。
【００１０】
特許文献１が開示する技術では、共有データを構成する全データに対応するハッシュ値を送受するため、ノード間で共有データの整合性を図るために長い時間を要するという問題がある。
【００１１】
本発明は、ノード間にて共有されるデータを、短時間で同期させることに寄与する情報処理装置、データ同期方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の第１の視点によれば、他装置と共有する共有データを構成する複数のデータからなるデータ集合を、階層的に記憶する記憶部と、前記複数のデータのそれぞれに対応する第１の特徴量、各階層に属するデータ集合のそれぞれに対応する第２の特徴量、を算出する算出部と、各階層のデータ集合に対応する前記第２の特徴量が異なるデータ集合の特定を、上位層から下位層に向けて、自装置と前記他装置との間で交互に繰り返し、前記共有データのうちの更新データを含むデータ集合を特定し、前記特定されたデータ集合に含まれるデータに対応し、自装置と前記他装置の間で前記第１の特徴量が異なるデータを特定することで、前記共有データにおける更新データの有無を検証する検証部と、前記更新データを、前記他装置との間で同期する同期部と、を備える、情報処理装置が提供される。
【００１３】
本発明の第２の視点によれば、他装置と共有する共有データを構成する複数のデータからなるデータ集合を、階層的に記憶する工程と、前記複数のデータのそれぞれに対応する第１の特徴量、各階層に属するデータ集合のそれぞれに対応する第２の特徴量、を算出する工程と、各階層のデータ集合に対応する前記第２の特徴量が異なるデータ集合の特定を、上位層から下位層に向けて、自装置と前記他装置との間で交互に繰り返し、前記共有データのうちの更新データを含むデータ集合を特定し、前記特定されたデータ集合に含まれるデータに対応し、自装置と前記他装置の間で前記第１の特徴量が異なるデータを特定することで、前記共有データにおける更新データの有無を検証する工程と、前記更新データを、前記他装置との間で同期する工程と、を含む、データ同期方法が提供される。
なお、本方法は、他装置とデータを共有する装置という、特定の機械に結びつけられている。
【００１４】
本発明の第３の視点によれば、他装置と共有する共有データを構成する複数のデータからなるデータ集合を、階層的に記憶する記憶部を備える情報処理装置を制御するコンピュータに実行させるプログラムであって、前記複数のデータのそれぞれに対応する第１の特徴量、各階層に属するデータ集合のそれぞれに対応する第２の特徴量、を算出する処理と、各階層のデータ集合に対応する前記第２の特徴量が異なるデータ集合の特定を、上位層から下位層に向けて、自装置と前記他装置との間で交互に繰り返し、前記共有データのうちの更新データを含むデータ集合を特定し、前記特定されたデータ集合に含まれるデータに対応し、自装置と前記他装置の間で前記第１の特徴量が異なるデータを特定することで、前記共有データにおける更新データの有無を検証する処理と、前記更新データを、前記他装置との間で同期する処理と、を実行させるプログラムが提供される。
なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント（ｎｏｎ−ｔｒａｎｓｉｅｎｔ）なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００１５】
本発明の各視点によれば、ノード間にて共有されるデータを、短時間で同期させることに寄与する情報処理装置、データ同期方法及びプログラムが、提供される。
【図面の簡単な説明】
【００１６】
【図１】一実施形態の概要を説明するための図である。
【図２】第１の実施形態に係るデータ同期システムの一例を示す図である。
【図３】ノードの内部構成の一例を示す図である。
【図４】記憶部が記憶する共有データの構成例を示す図である。
【図５】グループのデータ管理構成の一例を示す図である。
【図６】カテゴリのデータ管理構成の一例を示す図である。
【図７】カテゴリのデータ管理構成の一例を示す図である。
【図８】親ノードと子ノードのデータ管理構成の一例を示す図である。
【図９】第１の実施形態に係るデータ同期システムの動作の一例を示すシーケンス図である。
【発明を実施するための形態】
【００１７】
初めに、図１を用いて一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。
【００１８】
上述のように、ノード間にて共有されるデータを、短時間で同期させることが望まれている。
【００１９】
そこで、一例として図１に示す情報処理装置１００を提供する。情報処理装置１００は、記憶部１０１と、算出部１０２と、検証部１０３と、同期部１０４と、を含んで構成される。記憶部１０１は、他装置と共有する共有データを構成する複数のデータからなるデータ集合を、階層的に記憶する。算出部１０２は、複数のデータのそれぞれに対応する第１の特徴量、各階層に属するデータ集合のそれぞれに対応する第２の特徴量、を算出する。検証部１０３は、各階層のデータ集合に対応する第２の特徴量が異なるデータ集合の特定を、上位層から下位層に向けて、自装置と前記他装置との間で交互に繰り返し、共有データのうちの更新データを含むデータ集合を特定し、特定されたデータ集合に含まれるデータに対応し、自装置と他装置の間で第１の特徴量が異なるデータを特定することで、共有データにおける更新データの有無を検証する。同期部１０４は、更新データを、他装置との間で同期する。
【００２０】
情報処理装置１００は、共有データにおける更新データの有無に関する検証を、他の情報処理装置と協働して行う。具体的には、共有データを管理するフォーマットを予め定め、他の情報処理装置との間で、共通した形式により共有データを記憶する。情報処理装置１００は、共有データを構成する複数のデータを、複数のデータ集合に割り振り、且つ、当該データ集合を階層的に管理する。また、情報処理装置１００は、各データと階層化されたデータ集合のそれぞれに対して、データの変更に伴い値が変化する特徴量を算出する。そして、他の情報処理装置との間で、データの同期を図る必要がある場合には、階層化されたデータ集合のそれぞれに対応する特徴量を、自装置及び他装置の間で、交互に比較する等により、更新データを含むデータ集合を、順次特定していく。その後、更新データが特定されれば、他の情報処理装置１００との間でデータの同期を行う。
【００２１】
以上のように、情報処理装置１００は、共有データを構成する全データに関して行うのではなく、階層化されたデータ集合の特徴量の比較を、上位の階層から下位の階層に向けて行うことで、装置間で異なっている更新データを検知する。そのため、情報処理装置１００はでは、効率よく更新データを検知可能であり、ノード間にて共有されるデータを、短時間で同期できる。
【００２２】
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。
【００２３】
［第１の実施形態］
第１の実施形態について、図面を用いてより詳細に説明する。
【００２４】
図２は、第１の実施形態に係るデータ同期システムの一例を示す図である。図２を参照すると、データ同期システムには、ネットワーク２０により接続された複数のノード１０−１〜１０−３が含まれている。図２に示すデータ同期システムでは、ノード１０−１とノード１０−２が冗長化されているものとする。また、ノード１０−１及びノード１０−２のいずれかは、ノード１０−３に対する親ノードとして動作する。つまり、親ノードであるノード１０−１又は１０−２は、子ノードであるノード１０−３を制御し、管理する機能を有する。
【００２５】
ノード１０−１〜１０−３は、ノード間にてデータを共有する。例えば、ノード１０−１を現用系のノード、ノード１０−２を待機系のノードとすれば、これらのノード間にてデータを共有する。あるいは、ノード１０−１が現用系のノードであれば、ノード１０−１は子ノードであるノード１０−３との間で、データを共有する。
【００２６】
ノード間にて共有するデータには、それぞれのノードにて書き換え可能なデータが含まれる。例えば、親ノードにて、データＡを書き換えたとしたならば、子ノードにおいても自らが保持するデータＡを、親ノードのデータＡと同じ値に書き換える必要がある。このように、データを共有するノード間では、共有データを整合する処理、即ち、データの同期処理が必要となる。
【００２７】
そこで、第１の実施形態に係るデータ同期システムでは、共有データの同期を図る必要があるイベントが生じると、データを共有するノード間にて、共有データの同期処理を行う。例えば、冗長化されたノード間にて、現用系のノードと待機系のノードとが入れ替わる系切り替えに係るイベントが生じた際に、新たに現用系となったノードと待機系のノードとの間で、共有データの同期処理が行われる。あるいは、新たに現用系となったノードが、同時に親ノードでもあれば、親ノードと子ノードの間で、共有データの同期処理が行われる。その際、共有データの同期を図る必要があるイベントの生じたノードから、共有データを共有する他のノードに対して、後述するカテゴリ管理データを、同期起動通知として送信する。なお、以降の説明において、同期起動通知を発するノードを同期要求ノード、同期起動通知を受けるノードを同期受諾ノードと、表記する。
【００２８】
ここで、ノード１０−１〜１０−３は、共有データの同期を図る点で同じ構成及び機能を有するものとする。そのため、以降の説明において、ノード１０−１〜１０−３を区別する特段の理由がない場合には、単に「ノード１０」と表記する。なお、図２に示すデータ同期システムは例示であって、システム構成を限定する趣旨ではない。例えば、ネットワーク２０に接続されるノードが必ずしも、共有データの同期機能を備えている必要はなく、共有データの同期機能を備えるノードと備えないノードが混在していてもよい。
【００２９】
図３は、ノード１０の内部構成の一例を示す図である。図３を参照すると、ノード１０は、通信部３０と、記憶部４０と、制御部５０と、を含んで構成される。
【００３０】
通信部３０は、ネットワーク２０を介して、他のノード１０と相互に通信するための手段である。記憶部４０は、ノード１０の動作に必要な各種データを記憶する手段である。記憶部４０が記憶するデータには、他のノード１０との間で共有する共有データが含まれる。制御部５０は、ノード１０の全体を制御する手段である。具体的には、制御部５０は、通信部３０を介して他のノード１０と通信を行い、記憶部４０が記憶する共有データに対する制御及び管理を行う。
【００３１】
制御部５０は、特徴量算出部２０１と、データ検証部２０２と、データ同期部２０３と、を含んで構成される。これら各部に関する詳細は後述する。
【００３２】
記憶部４０が共有データを記憶する際のデータ管理構成について説明する。
【００３３】
図４は、記憶部４０が記憶する共有データの構成例を示す図である。図４に示すように、共有データは複数のデータから構成されている。さらに、各データは複数のグループに分けられている。第１の実施形態に係るノード１０では、各データの使用用途に着目して、各データをグループ分けしている。即ち、各データを用いて実現される機能ごとに、データをグループ分けしている。但し、データのグループ分けを機能グループごとに行うことに限定する趣旨ではない。データのグループ分けは、ノード１０の構成や実装に応じて、適宜選択される事項である。
【００３４】
図４を参照すると、データ３００ａ〜３００ｘはグループ４００ａに割り振られ、データ３０１ａ〜３０１ｘはグループ４００ｂに割り振られている。さらに、記憶部４０は、複数のグループを構成要素とするカテゴリにより、グループの管理を行う。例えば、図４を参照すると、カテゴリ５００ａは、グループ４００ａ〜４００ｙを構成要素とする。
【００３５】
このように、記憶部４０は、他のノードと共有する共有データを構成する複数のデータを、複数のデータ集合に割り振り、且つ、複数のデータ集合を階層的に記憶する。第１の実施形態では、最上位のデータ集合をカテゴリと表記し、その下位のデータ集合をグループと表記する。但し、データ集合の管理を２階層に限定する趣旨ではなく、３階層以上であってもよい。例えば、３階層にて共有データを管理する場合には、クラス、カテゴリ、グループのような名称により、複数のデータを管理する。
【００３６】
上述のように、制御部５０には特徴量算出部２０１が含まれている。特徴量算出部２０１は、他のノードとの間で共有しているデータに更新データが含まれるか否かを容易に検知可能とするための特徴量を算出する手段である。例えば、特徴量算出部２０１は、共有データを構成する各データと、各データのデータ集合（第１の実施形態では、グループ、カテゴリ）のそれぞれについて特徴量を算出する。算出された各特徴量は、対応するデータ等に対応付けられて記憶部４０に格納される。
【００３７】
初めに、共有データを構成する各データに対応する第１の特徴量について説明する。
【００３８】
図５は、グループ４００ａのデータ管理構成の一例を示す図である。図５を参照すると、特徴量算出部２０１は、グループ４００ａに含まれるデータのそれぞれに対して、シーケンス番号（ＳｅｑＮｏ；Sequence Number）を算出する。なお、シーケンス番号とは、データを書き換えた場合にインクリメントする値である。例えば、図５を参照すると、特徴量算出部２０１は、データ３００ａが書き換えられた場合には、対応するシーケンス番号ＳｅｑＮｏ＿３００ａをインクリメントする。特徴量算出部２０１は、共有データを構成する各データに対応する特徴量として、当該データが書き換えられるたびに更新されるシーケンス番号を算出する。
【００３９】
次に、階層化されたデータ集合に対応する第２の特徴量について説明する。
【００４０】
特徴量算出部２０１は、各グループに含まれる各データに対応する特徴量（シーケンス番号）から、当該グループに対応する特徴量を算出する。第１の実施形態では、特徴量算出部２０１は、グループに対応する特徴量として、シーケンス番号の総和からハッシュ値を算出する。より具体的には、グループに対応するハッシュ値の算出は以下の式（１）に基づき行う。
2015108927.tif 000003
なお、ＨＧはグループに対応するハッシュ値、ｈ（）はハッシュ関数を示す。
【００４１】
例えば、図５に示す例では、グループ４００ａに対応する特徴量として、特徴量算出部２０１は、シーケンス番号ＳｅｑＮｏ＿３００ａ〜３００ｘの総和を、ハッシュ関数に入力し、ハッシュ値Ｈａｓｈ＿４００ａを得る。なお、グループに含まれるデータの一部が更新されるとシーケンス番号も更新され、更新されたシーケンス番号に基づいて算出されたハッシュ値は、ハッシュ値及びハッシュ関数の性質から、データ更新前のハッシュ値とは異なる値となる。従って、グループに対応するハッシュ値に変化がなければ、当該グループに含まれるデータの更新はないことを意味し、ハッシュ値が変化していれば、当該グループに含まれるデータの一部又は全部が更新されたことを意味する。
【００４２】
図６は、カテゴリ５００ａのデータ管理構成の一例を示す図である。上述のように、カテゴリに含まれる複数のグループそれぞれには、当該グループに対応するハッシュ値が算出されている。図６を参照すると、グループ４００ａに対応するハッシュ値はＨａｓｈ＿４００ａであり、グループ４００ｂに対応するハッシュ値はＨａｓｈ＿４００ｂと算出されている。
【００４３】
特徴量算出部２０１は、カテゴリに含まれるそれぞれのグループに対応する特徴量から、当該カテゴリに対応する特徴量を算出する。例えば、特徴量算出部２０１は、カテゴリに対応する特徴量として、各グループに対応するハッシュ値の総和からハッシュ値を算出する。より具体的には、カテゴリに対応するハッシュ値の算出は以下の式（２）に基づき行う。
2015108927.tif 000004
なお、ＨＣはカテゴリに対応するハッシュ値を示す。
【００４４】
図６では、カテゴリ５００ａに対応するハッシュ値は、Ｈａｓｈ＿５００ａとして算出されている。また、カテゴリに含まれるグループのハッシュ値が更新されると、カテゴリに対応するハッシュ値もまた変化するため、ハッシュ値の比較により、当該カテゴリ内に含まれるグループのデータが更新されたか否かが容易に確認できる。
【００４５】
以上のように、特徴量算出部２０１は、共有データを構成する複数のデータに対応する第１の特徴量としてシーケンス番号を算出し、階層ごとのデータ集合のそれぞれに対応する第２の特徴量としてハッシュ値を算出する。
【００４６】
図７は、カテゴリのデータ管理構成の一例を示す図である。図７を参照すると、カテゴリごとに算出されたハッシュ値は、カテゴリの識別子と対応付けられて管理されている（記憶部４０に記憶されている）。このように、ノード１０では、自らが保持している共有データに関し、各カテゴリの識別子と、各カテゴリに対応する特徴量（例えば、ハッシュ値）を連結して管理し、記憶する。なお、以降の説明において、図７に示す情報をカテゴリ管理データと表記する。
【００４７】
また、記憶部４０は、カテゴリとグループの対応関係、グループとデータの対応関係に関しても、各識別子（カテゴリ識別子、グループ識別子、データ識別子）を用いて管理し、記憶する。その結果、制御部５０は、記憶部４０にアクセスすることで、所望のカテゴリ、グループ、データにアクセスできる。
【００４８】
なお、第１の実施形態では、１つのカテゴリに複数のグループが含まれる構成に関して説明したが、グループの管理形態を限定する趣旨ではない。例えば、１つのカテゴリに１つのグループが含まれていてもよい。
【００４９】
次に、データ検証部２０２について説明する。データ検証部２０２は、データを共有する相手のノードに含まれるデータ検証部２０２と協働して、それぞれのノードで保持する共有データにおける更新データの有無を検証する手段である。より具体的には、同期要求ノードと同期受諾ノードそれぞれのデータ検証部２０２は、互いに協調動作することで、更新データが含まれるカテゴリ、更新データが含まれるグループを順次、特定し、最終的に更新データを特定する。
【００５０】
初めに、同期要求ノードに含まれるデータ検証部２０２は、共有データの同期を図る必要があるイベントが生じると、通信部３０を介して、同期受諾ノードに対し、自ノードで管理するカテゴリ管理データを送信する。なお、制御部５０は、例えば、自身の装置の一部に障害を検出した場合や、ネットワーク２０との接続経路での障害を検出した場合に、共有データの同期を図る必要があるイベントが生じたものとして、データ検証部２０２を起動する。
【００５１】
同期受諾ノードのデータ検証部２０２は、同期要求ノードが送信するカテゴリ管理データを受信すると、同期受諾ノード（即ち、自ノード）で管理しているカテゴリ管理データを利用して、更新データを含むカテゴリの有無を検証する。具体的には、データ検証部２０２は、同期要求ノードが送信したカテゴリ管理データの各カテゴリに対応するハッシュ値と、自ノードで管理しているカテゴリ管理データの各カテゴリに対応するハッシュ値と、を比較する。比較した結果、差異がなければ、データ検証部２０２は、特段の処理は行わない。カテゴリ管理データのハッシュ値に差異が生じていないということは、共有データを構成するデータは更新されていないことを意味するため、共有データの同期処理は不要だからである。
【００５２】
しかし、比較した結果、差異が生じていれば、データ検証部２０２は、当該差異が生じているカテゴリを、更新データを含むカテゴリとして特定する。このように、カテゴリ管理データを受信した同期受諾ノードのデータ検証部２０２は、共有データを管理する最上位のデータ集合（ここでは、カテゴリ）のいずれに、更新データが含まれるかを検証する。
【００５３】
その後、同期受諾ノードのデータ検証部２０２は、通信部３０を介して、特定されたカテゴリの識別子と、当該カテゴリに含まれるグループに対応するハッシュ値と、を同期要求ノードに送信する。例えば、図７において、同期受諾ノードのデータ検証部２０２は、カテゴリ５００ａに対応するハッシュ値Ｈａｓｈ＿５００ａが、同期要求ノードが送信してきたカテゴリ管理データから得られるハッシュ値Ｈａｓｈ＿５００ａと異なる値の場合に、カテゴリ５００ａに含まれるグループ４００ａ〜４００ｙ（図６参照）のそれぞれに対応するハッシュ値（Ｈａｓｈ＿４００ａ〜Ｈａｓｈ＿４００ｙ）を同期要求ノードに送信する。
【００５４】
次に、同期要求ノードのデータ検証部２０２は、通信部３０を介して受け取った各グループに対応するハッシュ値に基づき、更新データを含むグループの有無を検証する。具体的には、データ検証部２０２は、受信した各グループのハッシュ値と、受信したカテゴリ識別子に対応するカテゴリ内のグループに対応するハッシュ値と、を比較し、更新データを含むグループを特定する。このように、同期要求ノードのデータ検証部２０２は、階層化されたデータ集合の最上位（ここでは、カテゴリ）から一段下のデータ集合（ここでは、グループ）のいずれに、更新データが含まれるかを検証する。
【００５５】
その後、同期要求ノードのデータ検証部２０２は、通信部３０を介して、特定されたグループ識別子と、当該グループに含まれるデータに対応するシーケンス番号と、を同期受諾ノードに送信する。例えば、図４において、同期要求ノードのデータ検証部２０２は、グループ４００ａに更新データが含まれると特定した場合には、当該グループに含まれるデータに対応するシーケンス番号ＳｅｑＮｏ＿３００ａ〜ＳｅｑＮｏ＿３００ｘ（図５参照）を、同期受諾ノードに送信する。
【００５６】
次に、同期受諾ノードのデータ検証部２０２は、同期要求ノードが送信する各データのシーケンス番号と、受け取ったグループ識別子が示すグループ内のデータに対応するシーケンス番号と、を比較し、シーケンス番号に差異が存在するか否かを検証する。検証の結果、差異が生じていれば、データ検証部２０２は、当該データを更新データとして特定する。
【００５７】
その後、同期受諾ノードのデータ検証部２０２は、通信部３０を介して、更新データの詳細を、同期要求ノードに送信する。送信される更新データの詳細には、データ識別子、更新データの値、更新データの更新時刻、シーケンス番号、更新データが含まれるカテゴリ識別子及びグループ識別子、等が含まれる。
【００５８】
以上のように、データ検証部２０２は、各階層のデータ集合に対応する第２の特徴量（第１の実施形態ではハッシュ値）が異なるデータ集合の特定を、上位層から下位層に向けて、自ノードと他ノードとの間で交互に繰り返し、更新データを含むデータ集合を特定する。さらに、データ検証部２０２は、特定されたデータ集合に含まれるデータに対応し、且つ、自ノードと他ノードの間で第１の特徴量（第１の実施形態ではシーケンス番号）が異なるデータを特定することで、共有データにおける更新データの有無を検証する。
【００５９】
なお、上記の説明は、データ集合は２階層に階層化されて管理されている場合の動作であって、階層化された数が異なれば、同期要求ノードと同期受諾ノードそれぞれのデータ検証部２０２の動作が異なる。例えば、データ集合を、クラス、カテゴリ、グループの３階層で管理する場合を考える。この場合には、同期要求ノードから、クラスの識別子とクラスに対応する特徴量を、同期受諾ノードに送信する。同期受諾ノードでは、受信したデータから、更新データを含むクラスを特定する。その後、同期受諾ノードから、特定されたクラスの識別子と、対応する特徴量が同期要求ノードに送信される。このようなデータの送受信をノード間で繰り返すことで、最終的に、同期受諾ノードは、更新データを含むグループを特定し、同期要求ノードは特定されたグループに含まれる更新データを特定する。
【００６０】
次に、データ同期部２０３について説明する。データ同期部２０３は、共有データにおける更新データを、他のノードとの間で同期する手段である。その際、データ同期部２０３は、他のノードに含まれるデータ同期部２０３と協働して、共有データを同期する。更新データが特定された後のデータの同期には種々の方法を用いることができるが、例えば、更新データの更新日時が新しいデータを用いて、ノード間の共有データを同期してもよい。あるいは、同期要求ノード又は同期受諾ノードのいずれかが保持するデータを優先して採用する方法であってもよい。いずれの方法であっても、最終的にノード間で共有するデータに齟齬が生じていなければよい。
【００６１】
なお、制御部５０は、ノード１０に搭載されたコンピュータに、そのハードウェアを用いて、特徴量算出部２０１、データ検証部２０２、データ同期部２０３の各処理を実行させるコンピュータプログラムにより実現することもできる。
【００６２】
次に、第１の実施形態に係るデータ同期システムの動作について、図８及び図９を参照しつつ説明する。
【００６３】
ここでは、ノード１０−１が現用系のノード且つ親ノード、ノード１０−２が待機系のノード且つ親ノード、ノード１０−３が子ノード、としてそれぞれ動作している状況から、親ノードでの待機系と現用系が入れ替わるイベントが発生した際の動作を説明する。また、親ノードと子ノードが共有するデータの構成は図８のとおりとし、図８（ｂ）の灰色の領域が更新されるものとする。
【００６４】
なお、親ノードでの系切り替え前に、現用系のノードと待機系のノード間、親ノードと子ノード間のデータ同期は完了しているものとする。さらに、冗長化されたノードの系切り替え処理が行われている最中に、子ノードにおいて共有データの一部が更新されたものとする。
【００６５】
図９は、データ同期システムの動作の一例を示すシーケンス図である。
【００６６】
ステップＳ０１において、ノード１０−１とノード１０−２の間で系切り替え処理が実行され、ノード１０−１が待機系のノード、ノード１０−２が現用系のノードにそれぞれ切り替わる。また、子ノードであるノード１０−３において、共有データの一部が更新される（ステップＳ０２）。
【００６７】
ステップＳ０３において、新たな親ノードであるノード１０−２から、ノード１０−３に向けて、カテゴリ管理データが送信される。その後、ノード１０−３では、受信したカテゴリ管理データから、更新データを含むカテゴリを特定し、当該カテゴリに含まれる各グループのハッシュ値をノード１０−２に送信する（ステップＳ０４）。
【００６８】
その後、ノード１０−２では、受信したグループのハッシュ値と、自らが保持するグループのハッシュ値と、を比較し、更新データを含むグループを特定し、当該グループに含まれる各データのシーケンス番号をノード１０−３に送信する（ステップＳ０５）。
【００６９】
その後、ノード１０−３では、受信したシーケンス番号から更新データを特定し、ノード１０−２との間で共有データの同期を行う（ステップＳ０６）。
【００７０】
以上のように、親ノードと子ノードの間は、ステップＳ０３〜Ｓ０６の処理により、共有データの同期が行われる。また、親ノードの現用系と待機系のノード間においても、ステップＳ０３〜Ｓ０６と同様の処理を実行することで、共有データの同期が行われる（ステップＳ０７）。
【００７１】
なお、第１の実施形態では、共有データを構成するデータに対応する第１の特徴量としてシーケンス番号を、階層化されたデータ集合のそれぞれに対応する第２の特徴量としてハッシュ値を、それぞれ算出しているが、特徴量の形式を限定する趣旨ではない。例えば、第１の特徴量は、シーケンス番号に代えて、ハッシュ値であってもよい。
【００７２】
以上のように、第１の実施形態に係るデータ同期システムでは、異なるノード間で保持する共有データにおいて更新データの有無を検証する。その際、自ノードと他のノードのカテゴリ管理データを比較し、差異があれば両ノード間にて保持する共有データに不一致が生じていることが分かり、共有データの同期が必要であることを認識する。また、自ノードと他のノードで保持する共有データの全てに関し、差異を確認するのではなく、カテゴリごとに対応する特徴量（例えば、ハッシュ値）を比較し、特徴量が異なるカテゴリ内のデータをデータ同期処理の対象とする。カテゴリが特定されれば、カテゴリより下位のデータ集合であるグループについて、対応する特徴量（例えば、ハッシュ値）を比較することで、特徴量が異なるグループ内のデータがデータ同期処理の対象に特定される。グループが特定されれば、各データに付与された特徴量（例えば、シーケンス番号）を比較することで、データ同期処理の対象となる更新データが最終的に特定される。
【００７３】
第１の実施形態に係るデータ同期システムでは、共有すべきデータを階層的且つグループ分けして管理すると共に、上位のデータ集合（例えば、カテゴリ、グループ）から順に、同期すべきデータを絞り込んでいくため、共有データの同期に要する時間を短縮できる。同時に、ノード間にて送受信されるデータは各データ集合の特徴量であるので、ノード間にて転送されるデータ量が削減され、データ同期処理の効率化が実現できる。また、第１の実施形態に係るデータ同期システムを、冗長化されたノード間や親子の関係にあるノード間に適用すると、迅速な共有データの同期が図れ、システムに障害が発生したとしてもその回復に要する時間を短縮できる。即ち、システムから影響されるサービスに与える影響を小さくできる。
【００７４】
上記の実施形態の一部又は全部は、以下のようにも記載され得るが、以下には限られない。
【００７５】
［形態１］
上記第１の視点に係る情報処理装置のとおりである。
［形態２］
前記他装置との間で、少なくとも前記第１及び第２の特徴量を送受信する通信部をさらに備える形態１の情報処理装置。
［形態３］
前記検証部は、自装置で記憶している前記共有データから算出した前記第２の特徴量と、前記他装置から受信した前記第２の特徴量を比較し、前記更新データを含むデータ集合を特定する形態２の情報処理装置。
［形態４］
前記検証部は、自装置で記憶し、前記更新データを含むデータ集合と特定されたデータ集合に対応する前記第１の特徴量と、前記他装置から受信した前記第１の特徴量を比較し、前記更新データを特定する形態２又は３の情報処理装置。
［形態５］
前記算出部は、最下位のデータ集合に含まれる複数のデータのそれぞれに対応する前記第１の特徴量に基づいて、前記最下位のデータ集合に対応する前記第２の特徴量を算出する形態１乃至４のいずれか一に記載の情報処理装置。
［形態６］
前記算出部は、１つ下の階層に属するデータ集合に対応する複数の前記第２の特徴量から、各階層のデータ集合に対応する前記第２の特徴量を算出する形態１乃至５のいずれか一に記載の情報処理装置。
［形態７］
前記第１の特徴量は、前記共有データを構成するデータが更新されるたびにインクリメントされる値であり、前記第２の特徴量はハッシュ関数により生成される値である、形態１乃至６のいずれか一に記載の情報処理装置。
［形態８］
前記検証部は、前記共有データの同期が必要なイベントの発生に応じて、自装置で記憶するデータ集合に対応する前記第２の特徴量を、前記他装置に送信する形態１乃至７のいずれか一に記載の情報処理装置。
［形態９］
上記第２の視点に係るデータ同期方法のとおりである。
［形態１０］
上記第３の視点に係るプログラムのとおりである。
［形態１１］
上記情報処理装置を複数含むデータ同期システム。
なお、上記第９〜第１１の形態は、第１の形態と同様に、第２〜第８の形態に展開することが可能である。
【００７６】
なお、引用した上記の特許文献の開示は、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【００７７】
１０、１０−１〜１０−３  ノード
２０  ネットワーク
３０  通信部
４０、１０１  記憶部
５０  制御部
１００  情報処理装置
１０２  算出部
１０３  検証部
１０４  同期部
２０１  特徴量算出部
２０２  データ検証部
２０３  データ同期部
３００ａ〜３００ｘ、３０１ａ〜３０１ｘ、３０２ａ〜３００ｘ  データ
４００ａ〜４００ｙ  グループ
５００ａ〜５００ｚ  カテゴリ
【図１】
2015108927.tif 000005
【図２】
2015108927.tif 000006
【図３】
2015108927.tif 000007
【図４】
2015108927.tif 000008
【図５】
2015108927.tif 000009
【図６】
2015108927.tif 000010
【図７】
2015108927.tif 000011
【図８】
2015108927.tif 000012
【図９】
2015108927.tif 000013