(57)【要約】【課題】多量の記憶領域を必要とせずに、各機器が記憶するデータを効率よく同期できる分散同期型情報システムを提供する。【解決手段】関係データベース１０２は、各行のデータに対応して、その行を更新した更新者、及び、更新者ごとの更新の前後を判断するためのイベント番号を記憶する。マシンＡ１００の更新情報送信要求手段１０６は、関係データベース１０２を参照して更新者ごとの最大イベント番号を検索し、それを含む更新情報送信要求を、マシンＢ１１０に送信する。マシンＢ１１０の更新情報送信手段１０７は、関係データベース１０２から、更新情報送信要求に含まれる更新者ごとの最大イベント番号以降の更新を抽出し、これをマシンＡ１００に送信して、マシンＡの関係データベース１０２を更新させる。【選択図】図１
2007164523.tif 000002
【特許請求の範囲】
【請求項１】
それぞれがデータベースを有する複数の情報処理装置を備え、該情報処理装置の間で前記データベースを同期させる分散同期型情報システムにおいて、
前記情報処理装置のそれぞれが、
前記データベースの各データと、データ更新を行った情報処理装置を示す更新者、及び、情報処理装置内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶する記憶装置を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他の情報処理装置に送信する更新情報送信要求手段と、
前記更新情報送信要求を受信した他の情報処理装置から、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信し、自装置内の前記データベース及び同期情報を更新する第１のデータベース同期手段とを備えたことを特徴とする分散同期型情報システム。
【請求項２】
自装置内で更新者として前記データベースを更新すると、自装置内での更新の前後を判断するための情報を作成し、当該更新データに対応させて同期情報を更新する同期情報更新手段を更に備える、請求項１に記載の分散同期型情報システム。
【請求項３】
前記情報処理装置内での更新の前後を判断するための情報が、前記情報処理装置内で前記データベースを更新するたびにインクリメントされる情報処理装置ごとのイベント番号である、請求項１又は２に記載の分散同期型情報システム。
【請求項４】
前記同期情報が更新時刻を含み、前記第１のデータベース同期手段は、前記更新情報に含まれる同期情報の更新時刻が、自装置が記憶する同期情報の更新時刻よりも新しいと、前記データベース及び同期情報を更新する、請求項１〜３の何れか一に記載の分散同期型情報システム。
【請求項５】
前記同期情報が、現時点までに更新を行った情報処理装置と、情報処理装置内での更新の前後を判断するための情報との組を含む更新履歴を更に含む、請求項１〜４の何れか一に記載の分散同期型情報システム。
【請求項６】
前記第１のデータベース同期手段は、受信した更新情報に含まれる更新履歴と、自装置が記憶する更新履歴とを比較し、受信した更新情報に含まれる更新履歴が、自装置が記憶する更新履歴を含むと判断すると、前記データベース及び対応する同期情報を更新する、請求項５に記載の分散同期型情報システム。
【請求項７】
各情報処理装置のデータベースに反映された更新について、更新者ごとに最新の更新を示す情報を記憶する更新伝播情報を参照して、前記更新履歴から、全ての情報処理装置のデータベースで反映されている更新以前の履歴を削除する履歴削除手段を更に備える、請求項５又は６に記載の分散同期型情報システム。
【請求項８】
自装置内で前記データベースを更新すると、ネットワーク接続中の他の情報処理装置に、更新データと、該更新データに対応する同期情報とを送信する更新伝播手段と、
他の情報処理装置の更新伝播手段によって送信された更新データ及び同期情報を受信し、前記データベース及び同期情報を更新する第２のデータベース同期手段とを更に備える、請求項１〜７の何れか一に記載の分散同期型情報システム。
【請求項９】
他の情報処理装置から更新情報送信要求を受信すると、自装置が記憶する同期情報を参照して、受信した更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新を検索し、該検索により抽出された更新の更新データと、該更新データに対応する同期情報とを含む更新情報を、前記更新情報送信要求を送信した情報処理装置に向けて送信する更新情報送信手段とを更に備える、請求項１〜８の何れか一に記載の分散同期型情報システム。
【請求項１０】
ネットワークに再接続された情報処理装置が、ネットワークに接続されている他の情報処理装置のうちの１つから更新情報送信要求を受信すると、該再接続された情報処理装置の前記更新情報送信手段は、前記更新情報をネットワークに接続された他の情報処理装置に向けてマルチキャスト送信する、請求項９に記載の分散同期型情報システム。
【請求項１１】
それぞれがデータベースを有する複数の情報処理装置を備え、該情報処理装置の間で前記データベースを同期させる分散同期型情報システムにおけるデータベース同期方法おいて、
前記情報処理装置が、データベース更新時に、更新データと、データ更新を行った情報処理装置を示す更新者、及び、情報処理装置内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶するステップと、
前記情報処理装置が、前記同期情報を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他の情報処理装置に送信するステップと、
前記情報処理装置が、前記更新情報送信要求を受信した他の情報処理装置から、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信するステップと、
前記情報処理装置が、受信した更新情報に基づいて、自装置内の前記データベース及び同期情報を更新するステップとを有することを特徴とする方法。
【請求項１２】
前記同期情報を記憶するステップでは、前記情報処理装置は、自装置内で更新者として前記データベースを更新すると、自装置内での更新の前後を判断するための情報を作成し、当該更新データに対応させて同期情報を更新する、請求項１１に記載の方法。
【請求項１３】
前記情報処理装置内での更新の前後を判断するための情報が、前記情報処理装置内で前記データベースを更新するたびにインクリメントされる情報処理装置ごとのイベント番号である、請求項１１又は１２に記載の方法。
【請求項１４】
前記同期情報が更新時刻を含み、前記データベース及び同期情報を更新するステップでは、前記情報処理装置は、前記更新情報に含まれる同期情報の更新時刻が、自装置が記憶する同期情報の更新時刻よりも新しいと、前記データベース及び同期情報を更新する、請求項１１〜１３の何れか一に記載の方法。
【請求項１５】
前記同期情報が、更新を行った情報処理装置と、情報処理装置内での更新の前後を判断するための情報との組を含む更新履歴を更に含む、請求項１１〜１４の何れか一に記載の方法。
【請求項１６】
前記情報処理装置が、受信した更新情報に含まれる更新履歴と、自装置が記憶する更新履歴とを比較するステップを更に有し、前記情報処理装置は、受信した更新情報に含まれる更新履歴が、自装置が記憶する更新履歴を含むと判断すると、前記データベース及び対応する同期情報を更新する、請求項１５に記載の方法。
【請求項１７】
前記情報処理装置が、各情報処理装置のデータベースに反映された更新について、更新者ごとに最新の更新を示す情報を記憶する更新伝播情報を参照して、前記更新履歴から、全ての情報処理装置のデータベースで反映されている更新以前の履歴を削除するステップを更に有する、請求項１５又は１６に記載の方法。
【請求項１８】
前記情報処理装置が、自装置内で前記データベースを更新すると、ネットワーク接続中の他の情報処理装置に、更新データと、該更新データに対応する同期情報とを送信するステップと、
前記情報処理装置が、前記更新データ及び該更新データに対応する同期情報を送信するステップで送信された更新データ及び同期情報を受信し、前記データベース及び同期情報を更新するステップとを更に有する、請求項１１〜１７の何れか一に記載の方法。
【請求項１９】
前記情報処理装置が、他の情報処理装置から更新情報送信要求を受信すると、自装置が記憶する同期情報を参照して、受信した更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新を検索するステップと、
前記情報処理装置が、前記検索により抽出された更新の更新データと、該更新データに対応する同期情報とを含む更新情報を、前記更新情報送信要求を送信した情報処理装置に向けて送信するステップとを更に有する、請求項１１〜１８の何れか一に記載の方法。
【請求項２０】
ネットワークに再接続された情報処理装置が、ネットワークに接続されている他の情報処理装置のうちの１つから更新情報送信要求を受信すると、前記更新情報を、ネットワークに接続された他の情報処理装置に向けてマルチキャスト送信するステップを更に有する、請求項１９に記載の方法。
【請求項２１】
データベースを有し、ネットワークを介して接続される他の情報処理装置との間で前記データベースを同期する情報処理装置において、
前記データベースの各データと、データ更新を行った情報処理装置を示す更新者、及び、情報処理装置内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶する記憶装置を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他の情報処理装置に送信する更新情報送信要求手段と、
前記更新情報送信要求を受信した他の情報処理装置から、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信し、自装置内の前記データベース及び同期情報を更新する第１のデータベース同期手段を備えたことを特徴とする情報処理装置。
【請求項２２】
コンピュータが有するデータベースを、ネットワークを介して接続される他のコンピュータのデータベースと同期させるプログラムであって、前記コンピュータに、
データベース更新時に、更新データと、データ更新を行ったコンピュータを示す更新者、及び、コンピュータ内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶するステップと、
前記同期情報を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他のコンピュータに送信するステップと、
前記更新情報送信要求を受信した他のコンピュータから、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信するステップと、
受信した更新情報に基づいて、自装置内の前記データベース及び同期情報を更新するステップとを実行させることを特徴とするプログラム。
【請求項２３】
前記コンピュータ内での更新の前後を判断するための情報が、前記コンピュータ内で前記データベースを更新するたびにインクリメントされるコンピュータごとのイベント番号である、請求項２２に記載のプログラム。
【請求項２４】
前記同期情報が更新時刻を含み、前記データベース及び同期情報を更新するステップでは、前記更新情報に含まれる同期情報の更新時刻が、自装置が記憶する同期情報の更新時刻よりも新しいと、前記データベース及び同期情報を更新する、請求項２２又は２３に記載のプログラム。
【請求項２５】
前記同期情報が、更新を行ったコンピュータと、コンピュータ内での更新の前後を判断するための情報との組を含む更新履歴を更に含む、請求項２２〜２４の何れか一に記載のプログラム。
【請求項２６】
前記コンピュータに、受信した更新情報に含まれる更新履歴と、自装置が記憶する更新履歴とを比較するステップを更に実行させ、前記データベース及び同期情報を更新するステップでは、更新履歴を比較するステップで、受信した更新情報に含まれる更新履歴が、自装置が記憶する更新履歴を含むと判断されると、前記データベース及び対応する同期情報を更新する、請求項２５に記載のプログラム。
【請求項２７】
前記コンピュータに、各コンピュータのデータベースに反映された更新について、更新者ごとに最新の更新を示す情報を記憶する更新伝播情報を参照して、前記更新履歴から、全てのコンピュータのデータベースで反映されている更新以前の履歴を削除するステップを更に実行させる、請求項２５又は２６に記載のプログラム。
【請求項２８】
前記コンピュータに、
自装置内で前記データベースを更新すると、ネットワーク接続中の他のコンピュータに、更新データと、該更新データに対応する同期情報とを送信するステップと、
前記更新データ及び該更新データに対応する同期情報を送信するステップで送信された更新データ及び該更新データに対応する同期情報を受信し、前記データベース及び同期情報を更新するステップとを更に実行させる、請求項２２〜２７の何れか一に記載のプログラム。
【請求項２９】
前記コンピュータに、
他のコンピュータから更新情報送信要求を受信すると、自装置が記憶する同期情報を参照して、受信した更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新を検索するステップと、
前記検索により抽出された更新の更新データと、該更新データに対応する同期情報とを含む更新情報を、前記更新情報送信要求を送信したコンピュータに向けて送信するステップとを更に実行させる、請求項２２〜２８の何れか一に記載のプログラム。
【請求項３０】
前記コンピュータに、
前記コンピュータがネットワークに再接続した後に、ネットワークに接続された他のコンピュータのうちの１つから更新情報送信要求を受信すると、前記更新情報を、ネットワークに接続された他のコンピュータに向けてマルチキャスト送信するステップを更に実行させる、請求項２９に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、分散同期型情報システム、情報同期方法、及び、プログラムに関し、更に詳しくは、データベースを有する複数の情報装置間でデータベースのデータを同期する情報処理装置、分散同期型情報システム、情報同期方法、及び、プログラムに関する。
【背景技術】
【０００２】
従来、情報システムとして用いられているものには、ＬＤＡＰやＳｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ社によるＮＩＳがある。これらの情報システムは、サーバ・クライアント方式のシステムとして構成されており、クライアントの端末を、ネットワークから切断した状態で持ち運ぶ場合には、端末側からデータベースにアクセスすることができない。端末を、ネットワークから切断した状態で使用する方法としては、サーバ上のデータベースを、端末にコピーして持ち運ぶ方法が考えられる。しかし、この場合には、ネットワークから切断された状態でもデータベースを参照することはできるものの、複数の端末でデータベースの更新が行われた場合には、データベース内のデータを複数の端末間で同期することができない。
【０００３】
端末をネットワークから切断してデータ更新を行った場合には、ネットワーク再接続時に、端末間でデータベース内の全てのデータを送受信し、双方のデータを比較することで、各端末のデータベースを同期することができる。しかし、その場合には、送受信データ量が膨大になるという問題がある。このような問題を解決する従来技術としては、例えば特許文献１に記載された技術がある。特許文献１では、サーバ上のデータベースをマスターとし、クライアント上のデータベースを非マスターとする。クライアントは、ネットワークから切断された後の更新を、差分情報としてテーブルに記憶する。ネットワーク再接続時には、サーバとの間で差分情報を送受信し、マスターと非マスターとで同期を取る。
【０００４】
複数の情報機器（情報処理装置）間で情報を同期する技術としては、非特許文献１に記載された技術がある。非特許文献１では、各情報機器を対等に扱い、ネットワーク接続時に、それぞれが持つ更新情報を同期する。図２１は、非特許文献１に記載の技術における情報同期の様子を示している。各情報機器は、データベース２１０１のデータに対して、更新情報のログ２１０２を保持する。ログ２１０２には、データベース２１０１について、どの部分をどのような値に更新したかを示す情報に加え、その更新を行った機器のＩＤと、更新を行った時刻とが含まれる。
【０００５】
非特許文献１では、２つの情報機器間で情報同期を行い、これを繰り返すことにより、複数の情報機器間で情報同期を行う。２つの情報機器間での情報同期では、一方の情報機器（受信側）は、自装置が持つログ２１０２を走査し、各機器ＩＤについて、最も遅い更新時刻を求め、これを、他方の情報機器（送信側）に送信する。送信側機器は、ログ２１０２を走査し、各機器ＩＤについて、受信側機器から通知された更新時刻以降に行われた更新を、受信側機器に渡す。これにより、送信側機器が保持していて、受信側機器が保持していない情報を、受信側機器に伝えることができる。受信側機器と送信側機器との立場を入れ替え、同様の操作を行うことにより、両者の情報を同期させることができる。
【０００６】
【特許文献１】特開２００１−１４２７６６号公報（図６、図７、段落００３８〜００５０など）
【非特許文献１】Karin Petersen, Mike J. Spreitzer, Douglas B. Terry著、  Flexible Update Propagation for Weakly Consistent Replication、Proceedings of the 16th ACM Symposium on Operating Systems Principles (SOSP-16)、1997年、288〜301頁
【発明の開示】
【発明が解決しようとする課題】
【０００７】
特許文献１では、マスターとなるデータベースはただ一つであり、全ての同期は、マスターとの間で１対１で行う必要がある。非マスターのクライアント同士が更新の同期を行う場合について考えると、クライアントが持っている情報は、マスターとの差分のみであるため、互いが未知の情報を交換することはできず、非マスターのクライアント同士では、同期を行うことができない。例えば、家庭内の機器群やＰＤＡなど携帯型情報機器の同期を考える場合、特許文献１では、携帯する情報機器相互間で同期を行うことができない。また、マスターとなる情報機器は、同期時には常にネットワークに接続され、電源が投入されていなければならないという問題がある。
【０００８】
非特許文献１に記載の技術では、全ての更新情報をログ２１０２に保存する必要があり、ログ情報が膨大となるため、実装に際して、多量の記憶領域が必要になるという問題がある。ログ２１０２のどの部分が不要であるかを、何らかの手法で判断することも考えられるが、その場合には、アルゴリズムが複雑となる。また、非特許文献１では、更新情報をログ形式で管理しているため、ログ走査に時間がかかり、情報同期時の効率が悪い。更に、特許文献１を含め、従来技術では、情報同期が２つの情報機器間での同期のみに限定されており、複数の情報機器間で同期を行う場合には、２つの情報機器間での情報同期を繰り返し行う必要があり、情報同期時に、多数回の通信が必要であるという問題がある。
【０００９】
本発明は、上記従来技術の問題点を解消し、多量の記憶領域を必要とせずに、各機器が記憶するデータを効率よく同期できる情報処理装置、分散同期型情報システム、情報同期方法、及び、プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明の分散同期型情報システムは、それぞれがデータベースを有する複数の情報処理装置を備え、該情報処理装置の間で前記データベースを同期させる分散同期型情報システムにおいて、前記情報処理装置のそれぞれが、前記データベースの各データと、データ更新を行った情報処理装置を示す更新者、及び、情報処理装置内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶する記憶装置を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他の情報処理装置に送信する更新情報送信要求手段と、前記更新情報送信要求を受信した他の情報処理装置から、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信し、自装置内の前記データベース及び同期情報を更新する第１のデータベース同期手段とを備えたことを特徴とする。
【００１１】
本発明のデータベース同期方法は、それぞれがデータベースを有する複数の情報処理装置を備え、該情報処理装置の間で前記データベースを同期させる分散同期型情報システムにおけるデータベース同期方法おいて、前記情報処理装置が、データベース更新時に、更新データと、データ更新を行った情報処理装置を示す更新者、及び、情報処理装置内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶するステップと、
前記情報処理装置が、前記同期情報を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他の情報処理装置に送信するステップと、
前記情報処理装置が、前記更新情報送信要求を受信した他の情報処理装置から、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信するステップと、
前記情報処理装置が、受信した更新情報に基づいて、自装置内の前記データベース及び同期情報を更新するステップとを有することを特徴とする。
【００１２】
本発明の情報処理装置は、データベースを有し、ネットワークを介して接続される他の情報処理装置との間で前記データベースを同期する情報処理装置において、前記データベースの各データと、データ更新を行った情報処理装置を示す更新者、及び、情報処理装置内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶する記憶装置を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他の情報処理装置に送信する更新情報送信要求手段と、前記更新情報送信要求を受信した他の情報処理装置から、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信し、自装置内の前記データベース及び同期情報を更新する第１のデータベース同期手段を備えたことを特徴とする。
【００１３】
本発明のプログラムは、コンピュータが有するデータベースを、ネットワークを介して接続される他のコンピュータのデータベースと同期させるプログラムであって、前記コンピュータに、データベース更新時に、更新データと、データ更新を行ったコンピュータを示す更新者、及び、コンピュータ内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶するステップと、前記同期情報を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他のコンピュータに送信するステップと、前記更新情報送信要求を受信した他のコンピュータから、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信するステップと、受信した更新情報に基づいて、自装置内の前記データベース及び同期情報を更新するステップとを実行させることを特徴とする。
【００１４】
本発明の分散同期型情報システム、情報処理装置、データベース同期方法、及び、プログラムでは、データベースの各データに対応して、そのデータを更新した更新者と、情報処理装置（コンピュータ）ごとの更新の前後を判断するための情報とを含む同期情報を記憶する。この同期情報を参照することで、自装置内のデータベース内において、各更新者について、最新の更新が何であるかを知ることができる。他の情報処理装置との同期時には、同期情報を参照して、各更新者についての最新の更新を示す情報を取得し、これを他の情報処理装置に送信し、その他の情報処理装置から、自装置のデータベースにおける更新者ごとの最新の更新よりも新しい更新によって更新されたデータを受信して、データベースを更新する。このようにすることにより、データベース内の全てのデータを比較しなくても、自装置のデータベースでされていない更新を取得することができ、データベース内の全データを送受信して比較する場合に比して、送受信されるデータ量を少なくすることができる。また、更新ログを保存する場合には、更新が行われるたびに更新ログの行が増えていき、更新回数の増加に伴って更新ログのサイズが増大するが、本発明では、データベースの各データに対応して同期情報を記憶するため、更新回数が増えても同期情報のサイズは増大せず、更新ログを保存する場合に比して、必要な記録領域が少なくて済む。
【００１５】
本発明の分散同期型情報システムは、自装置内で更新者として前記データベースを更新すると、自装置内での更新の前後を判断するための情報を作成し、当該更新データに対応させて同期情報を更新する同期情報更新手段を更に備える構成を採用できる。本発明のデータベース同期方法は、前記同期情報を記憶するステップでは、前記情報処理装置は、自装置内で更新者として前記データベースを更新すると、自装置内での更新の前後を判断するための情報を作成し、当該更新データに対応させて同期情報を更新する構成を採用できる。
【００１６】
本発明の分散同期型情報システム及びデータベース同期方法では、前記情報処理装置内での更新の前後を判断するための情報が、前記情報処理装置内で前記データベースを更新するたびにインクリメントされる情報処理装置ごとのイベント番号である構成を採用できる。また、本発明のプログラムでは、前記コンピュータ内での更新の前後を判断するための情報が、前記コンピュータ内で前記データベースを更新するたびにインクリメントされるコンピュータごとのイベント番号である構成を採用できる。この場合、イベント番号の大小を比較することにより、データベースを更新した更新者ごとに、更新の前後を判断することができる。更新の前後を判断する情報としては、更新時刻を用いることもできる。その場合には、更新時刻の前後により、更新者ごとに、更新の前後を判断できる。
【００１７】
本発明の分散同期型情報システムでは、前記同期情報が更新時刻を含み、前記第１のデータベース同期手段は、前記更新情報に含まれる同期情報の更新時刻が、自装置が記憶する同期情報の更新時刻よりも新しいと、前記データベース及び同期情報を更新する構成を採用できる。本発明のデータベース同期方法では、前記同期情報が更新時刻を含み、前記データベース及び同期情報を更新するステップでは、前記情報処理装置は、前記更新情報に含まれる同期情報の更新時刻が、自装置が記憶する同期情報の更新時刻よりも新しいと、前記データベース及び同期情報を更新する構成を採用できる。本発明のプログラムでは、前記同期情報が更新時刻を含み、前記データベース及び同期情報を更新するステップでは、前記更新情報に含まれる同期情報の更新時刻が、自装置が記憶する同期情報の更新時刻よりも新しいと、前記データベース及び同期情報を更新する構成を採用できる。この場合、新しいデータが、古いデータによって更新されることを防ぐことができる。更新時刻は、更新者ごとの更新の前後を判断するための情報に付加する形で同期情報に含めることができ、或いは、更新者ごとの更新の前後を判断するための情報として更新時刻を用いる場合には、これと共用してもよい。
【００１８】
本発明の分散同期型情報システム及びデータベース同期方法では、前記同期情報が、現時点までに更新を行った情報処理装置と、情報処理装置内での更新の前後を判断するための情報との組を含む更新履歴を更に含む構成を採用できる。本発明のプログラムでは、前記同期情報が、更新を行ったコンピュータと、コンピュータ内での更新の前後を判断するための情報との組を含む更新履歴を更に含む構成を採用できる。この場合、更新履歴を参照することで、どのような経路で更新が行われたかを知ることができる。
【００１９】
本発明の分散同期型情報システムでは、前記第１のデータベース同期手段は、受信した更新情報に含まれる更新履歴と、自装置が記憶する更新履歴とを比較し、受信した更新情報に含まれる更新履歴が、自装置が記憶する更新履歴を含むと判断すると、前記データベース及び対応する同期情報を更新する構成を採用できる。本発明のデータベース同期方法は、前記情報処理装置が、受信した更新情報に含まれる更新履歴と、自装置が記憶する更新履歴とを比較するステップを更に有し、前記情報処理装置は、受信した更新情報に含まれる更新履歴が、自装置が記憶する更新履歴を含むと判断すると、前記データベース及び対応する同期情報を更新する構成を採用できる。本発明のプログラムでは、前記コンピュータに、受信した更新情報に含まれる更新履歴と、自装置が記憶する更新履歴とを比較するステップを更に実行させ、前記データベース及び同期情報を更新するステップでは、更新履歴を比較するステップで、受信した更新情報に含まれる更新履歴が、自装置が記憶する更新履歴を含むと判断されると、前記データベース及び対応する同期情報を更新する構成を採用できる。受信した更新情報の同期情報に含まれる更新履歴が、自装置が記憶する同期情報の更新履歴を含む場合には、途中の更新までは同じ経路で更新されており、その後、自装置以外の情報処理装置において、新たな更新がされたことを示している。このような場合には、受信した更新情報で、データベース及び同期情報を更新しても問題はなく、受信した更新情報でデータベースを更新することにより、他の情報処理装置との間でデータベースを同期することができる。
【００２０】
本発明の分散同期型情報システムは、各情報処理装置のデータベースに反映された更新について、更新者ごとに最新の更新を示す情報を記憶する更新伝播情報を参照して、前記更新履歴から、全ての情報処理装置のデータベースで反映されている更新以前の履歴を削除する履歴削除手段を更に備える構成を採用できる。本発明のデータベース同期方法は、前記情報処理装置が、各情報処理装置のデータベースに反映された更新について、更新者ごとに最新の更新を示す情報を記憶する更新伝播情報を参照して、前記更新履歴から、全ての情報処理装置のデータベースで反映されている更新以前の履歴を削除するステップを更に有する構成を採用できる。本発明のプログラムは、前記コンピュータに、各コンピュータのデータベースに反映された更新について、更新者ごとに最新の更新を示す情報を記憶する更新伝播情報を参照して、前記更新履歴から、全てのコンピュータのデータベースで反映されている更新以前の履歴を削除するステップを更に実行させる構成を採用できる。各情報処理装置は、更新伝播情報により、各情報処理装置について、各情報処理装置内のデータベースでどの時点の更新までの更新が行われたかを更新者ごとに管理する。この更新伝播情報を調べることにより、更新者ごとに、最低限、どの時点までの更新が全ての情報処理装置内のデータベースでされたかを特定することができる。例えば、更新の前後を判断するための情報としてイベント番号を用いる場合、ある更新者について、各情報処理装置での、その更新者の最新の更新を示す情報のうちで最も古い更新を示す情報（イベント番号の最小値）がイベント番号「８」であれば、イベント番号「８」までの更新は、全ての情報処理装置内のデータベースでされていると特定できる。この場合には、その更新者によるイベント番号「８」以前の更新履歴は、既に全ての情報処理装置内のデータベースで更新されているので不要であると判定できる。このような不要な更新履歴を削除することにより、更新回数の増加に伴って更新履歴が増大することを避けることができる。
【００２１】
本発明の分散同期型情報システムは、自装置内で前記データベースを更新すると、ネットワーク接続中の他の情報処理装置に、更新データと、該更新データに対応する同期情報とを送信する更新伝播手段と、他の情報処理装置の更新伝播手段によって送信された更新データ及び同期情報を受信し、前記データベース及び同期情報を更新する第２のデータベース同期手段とを更に備える構成を採用できる。本発明のデータベース同期方法は、前記情報処理装置が、自装置内で前記データベースを更新すると、ネットワーク接続中の他の情報処理装置に、更新データと、該更新データに対応する同期情報とを送信するステップと、前記情報処理装置が、前記更新データ及び該更新データに対応する同期情報を送信するステップで送信された更新データ及び同期情報を受信し、前記データベース及び同期情報を更新するステップとを更に有する構成を採用できる。本発明のプログラムは、前記コンピュータに、自装置内で前記データベースを更新すると、ネットワーク接続中の他のコンピュータに、更新データと、該更新データに対応する同期情報とを送信するステップと、前記更新データ及び該更新データに対応する同期情報を送信するステップで送信された更新データ及び該更新データに対応する同期情報を受信し、前記データベース及び同期情報を更新するステップとを更に実行させる構成を採用できる。この場合、ある情報処理装置で行われたデータベースの更新が、ネットワーク接続中の他の情報処理装置に反映されることで、ネットワーク接続中の情報処理装置間で、データベースを同期させることができる。
【００２２】
本発明の分散同期型情報システムでは、他の情報処理装置から更新情報送信要求を受信すると、自装置が記憶する同期情報を参照して、受信した更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新を検索し、該検索により抽出された更新の更新データと、該更新データに対応する同期情報とを含む更新情報を、前記更新情報送信要求を送信した情報処理装置に向けて送信する更新情報送信手段を更に備える構成を採用できる。本発明のデータベース同期方法は、前記情報処理装置が、他の情報処理装置から更新情報送信要求を受信すると、自装置が記憶する同期情報を参照して、受信した更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新を検索するステップと、前記情報処理装置が、前記検索により抽出された更新の更新データと、該更新データに対応する同期情報とを含む更新情報を、前記更新情報送信要求を送信した情報処理装置に向けて送信するステップとを更に有する構成を採用できる。本発明のプログラムは、前記コンピュータに、他のコンピュータから更新情報送信要求を受信すると、自装置が記憶する同期情報を参照して、受信した更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新を検索するステップと、前記検索により抽出された更新の更新データと、該更新データに対応する同期情報とを含む更新情報を、前記更新情報送信要求を送信したコンピュータに向けて送信するステップとを更に実行させる構成を採用できる。更新情報送信要求を受信した側の情報処理装置は、自装置内の同期情報を参照することで、受信した更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新、つまり、更新情報送信要求を送信した側のマシンでされておらず、更新情報送信要求を受信した側のマシンでされている更新を抽出できる。このように抽出した更新データを含む更新情報を、更新情報送信要求を送信した側の情報処理装置に送信することで、少ないデータ量で、データベースを同期させることができる。また、ログ情報に比して情報量が少ない同期情報を検索することで更新情報の抽出するため、ログ情報を用いる場合に比して、検索を高速に行うことができる。
【００２３】
本発明の分散同期型情報システムでは、ネットワークに再接続された情報処理装置が、ネットワークに接続されている他の情報処理装置のうちの１つから更新情報送信要求を受信すると、該再接続された情報処理装置の前記更新情報送信手段は、前記更新情報をネットワークに接続された他の情報処理装置に向けてマルチキャスト送信する構成を採用できる。本発明のデータベース同期方法は、ネットワークに再接続された情報処理装置が、ネットワークに接続されている他の情報処理装置のうちの１つから更新情報送信要求を受信すると、前記更新情報を、ネットワークに接続された他の情報処理装置に向けてマルチキャスト送信するステップを更に有する構成を採用できる。本発明のプログラムは、前記コンピュータに、前記コンピュータがネットワークに再接続した後に、ネットワークに接続された他のコンピュータのうちの１つから更新情報送信要求を受信すると、前記更新情報を、ネットワークに接続された他のコンピュータに向けてマルチキャスト送信するステップを更に実行させる構成を採用できる。この場合、ネットワーク接続中の他の情報処理装置のデータベース間の同期が取れているときには、ネットワークに接続した情報処理装置と、ネットワーク接続中の他の情報処理装置のそれぞれとの間で更新情報送信要求及び更新情報の送受信を行わなくても、各情報処理装置のデータベースを同期させることができる。従って、１対１の通信を繰り返してデータベースを同期させる場合に比して、効率よくデータベースを同期させることができる。
【発明の効果】
【００２４】
本発明の分散同期型情報システム、情報処理装置、データベース同期方法、及び、プログラムでは、データベースの各データに対応して、そのデータを更新した更新者と、情報処理装置（コンピュータ）ごとの更新の前後を判断するための情報とを含む同期情報を記憶する。この同期情報を参照して、自装置内のデータベース内における各更新者の最新の更新を示す情報を調べて、これを含む更新情報送信要求を他の情報処理装置に送信し、その他の情報装置から、自装置内のデータベース内における各更新者の最新の更新よりの新しい更新により更新されたデータ及びそのデータに対応する同期情報を受信して、データベース及び同期情報を更新する。このようにすることにより、データベース内の全てのデータを比較しなくても、自装置のデータベースでされていない更新を取得することができ、データベース内の全データを送受信して比較する場合に比して、送受信されるデータ量を少なくすることができる。また、データベースの各データに対応して同期情報を記憶するため、更新回数が増えても同期情報のサイズは増大せず、更新ログを保存する場合に比して、必要な記録領域が少なくて済む。
【発明を実施するための最良の形態】
【００２５】
以下、図面を参照し、本発明の実施の形態を詳細に説明する。
【００２６】
第１実施形態
図１は、本発明の第１実施形態の分散同期型情報システムの構成を示している。分散同期型情報システム１０は、情報の同期を行う任意の数の情報機器で構成されており、同図の例では、マシンＡ１００、マシンＢ１１０、及び、マシンＣ１２０の３台の情報機器により構成される。マシンＡ１００は、アプリケーション１０１、関係データベース１０２、データベース内同期情報更新手段１０３、再接続時同期手段（第１のデータベース同期手段）１０４、及び、接続中同期手段（第２のデータベース同期手段）１０５を備える。同図では、図示を省略しているが、マシンＢ１１０及びマシンＣ１２０は、それぞれマシンＡ１００と同様な構成を有する。各マシンは、例えば、関係データベース１０２のデータを利用して処理を行う携帯型端末装置として構成される。
【００２７】
マシンＡ１００、マシンＢ１１０、及び、マシンＣ１２０は、それぞれ任意のタイミングで、図示しないネットワークから切断され、或いは、ネットワークに再接続される。マシンＡ１００、マシンＢ１１０、及び、マシンＣ１２０は、アプリケーション１０１により、関係データベース１０２を更新する。関係データベース１０２の更新には、既存の行（データ）の変更、新たな行の挿入、及び、既存の行の削除が含まれる。各マシンは、関係データベース１０２を更新すると、その更新を他のマシンに伝播し、各マシンの関係データベース１０２を同期させる。
【００２８】
関係データベース１０２の更新は、任意のタイミングで行われ、マシンがネットワークに接続されている状態、及び、マシンがネットワークから切断された状態の双方で行われる。接続中同期手段１０５は、更新伝播手段１０８を有し、マシンがネットワークに接続された状態で、関係データベース１０２で行われた更新を、ネットワーク接続中の他のマシンに伝播し、各マシンの関係データベース１０２の記憶内容を同期させる。再接続時同期手段１０４は、更新情報送信要求手段１０６と、更新情報送信手段１０７とを有し、マシンがネットワークに切断された状態からネットワークに再接続した際に、再接続したマシン及びネットワーク接続中の他のマシンで行われた更新をそれぞれ伝播し、関係データベース１０２の記憶内容を同期させる。
【００２９】
図２は、関係データベース１０２のデータ構造の具体例を示している。関係データベース１０２は、通常のデータ（「主キー」、「データ」）に加え、各データに対応して付加された同期情報を記憶する。同図では、点線で囲んだ部分２０１が、同期情報に相当する。付加される同期情報には、データ（行）を更新した更新者、及び、更新の前後関係を判断するための情報が含まれる。また、削除フラグ、及び、更新時刻が含まれる。データベース内同期情報更新手段１０３（図１）は、アプリケーション１０１が関係データベース１０２を更新すると、更新されたデータ（行）に対応した同期情報を更新する。
【００３０】
同期情報の「更新の前後を判断するための情報」としては、例えば、更新が行われた時刻、或いは、更新処理が起こるたびに各マシンで順番に振られた番号（イベント番号）を用いることができる。更新の前後を判断する情報としては、イベント番号を用いることが望ましい。これは、更新の前後を判断するための情報として更新時刻を用いると、システムの時刻が変更されることで前後関係が狂う可能性があるためである。図２の例では、更新の前後を判断するための情報として、イベント番号を用いている。
【００３１】
更新者及びイベント番号について説明する。更新者は、データ更新を行ったマシンを示す。イベント番号は、各マシンにおける更新の順序を示している。例えば、マシンＡ１００で、関係データベース１０２が初めて更新される場合には、その更新に対して、イベント番号「１」が割り当てられる。その後、マシンＡ１００で、関係データベース１０２が更新される場合には、イベント番号「２」が割り当てられる。このイベント番号は、マシンごとに管理され、他のマシンにおける更新とは無関係に、各マシン内で順次に割り当てられる。例えば、マシンＡ１００でイベント番号「２」に対応する更新が行われた後に、マシンＢ１１０で関係データベース１０２が更新され、その後、更にマシンＡ１００で関係データベース１０２が更新される場合には、その更新には、イベント番号「３」が割り当てられる。
【００３２】
削除フラグは、その行が削除されたか否かを示す。アプリケーション１０１は、データを削除する際には、実際にはその行を削除せずに削除フラグを「Ｙ」に変更する。削除フラグが「Ｙ」に設定された行は、関係データベース１０２から削除されたものとして取り扱われる。このように、実際には行を削除せずに、削除フラグを用いて削除されたものとして取り扱うのは、再接続時同期手段１０４による同期において、何れかのマシンの関係データベース１０２にある行が存在し、他のマシンの関係データベース１０２にその行が存在しない場合に、その行がネットワークから切断している間に削除されたものであるのか、或いは、他のマシンにおいて追加されたかを区別する必要があるためである。
【００３３】
ここで、あるマシンがネットワークから切断されている間に、その切断中のマシンと、ネットワーク接続中のマシンとが、それぞれの関係データベース１０２の同じ行に対して更新を行った場合について考える。この場合、切断中のマシンがネットワークに再接続し、関係データベース１０２を同期しようとすると、同じ行が別々に更新されたことにより、その行について、矛盾が生じることになる。この矛盾の解決方法としては、ユーザにどちらを優先するかを選択させる方法、特定のマシンを優先する方法、更新時間が新しい方を優先する方法などが考えられる。本実施形態では、同期情報に、更新時刻を含め、同一行に対して２つのマシンで更新があったときは、更新時刻が新しいものを優先する。
【００３４】
同期情報は、図２に示したように、関係データベース１０２内のデータと同一行に含めることができる他、図３に示すように、データ部分と分離して、別のテーブルで管理することもできる。図３では、関係データベース１０２が、アプリケーション１０１が使用するデータを含む表３０１と、同期情報部分（図２の２０１）を含む表３０２とに分離されている。このように分離する場合、表３０１の行と、表３０２の行とは、各行に一意のキー、例えば主キーを用いて対応させればよい。データと同期情報とを分離する場合には、もともと関係データベースが有していたデータの表の構成を変更する必要がないため、既存の関係データベースに、同期情報の表を追加することで、分散型情報同期システムを構築できる。
【００３５】
図４は、データベース内同期情報更新手段１０３の動作手順を示している。アプリケーション１０１は、ＳＱＬなどを用いて、関係データベース１０２を更新する（ステップＳ４０１）。この関係データベース１０２の更新において、新たに行を挿入（追加）する際には、ネットワークから切断されたマシンにおいて、新たに挿入された行の主キーと重複しないようにする。例えばマシン名を主キーに含め、或いは、新たに挿入する主キーとして利用できる値の範囲をマシンごとに設定しておけばよい。
【００３６】
データベース内同期情報更新手段１０３は、関係データベース１０２が更新されると、更新内容が、行の挿入、行の書き換え、又は、行の削除の何れであるかを判断する（ステップＳ４０２）。更新の内容が行の書き換えであるときには、同期情報（図２の２０１、図３の３０２）の更新者、イベント番号、及び、更新時刻を更新する（ステップＳ４０６）。例えば、マシンＡ１００で、アプリケーション１０１が関係データベース１０２の行を書き換えた場合には、マシンＡ内のデータベース内同期情報更新手段１０３は、同期情報の更新者を、「マシンＡ」とする。イベント番号については、マシンＡ内で既に割り当てた最大イベント番号を記憶しておき、その値に１を加えた値とする。また、更新時刻には、現在時刻を設定する。ここで、各マシンが持つ時刻情報は、何らかの手段で同期が取れていると仮定する。
【００３７】
更新内容が行の挿入の場合、同期情報が、図３に示すようにデータと分離されているときには、同期情報の表３０２に新たに行を挿入する（ステップＳ４０３）。その際、例えば、挿入されたデータの表３０１の行の主キーと同じキーを、同期情報の主キーとして設定し、挿入されたデータの行との対応をとる。その後、ステップＳ４０６で、同期情報（図２の２０１、図３の３０２）の更新者、イベント番号、及び、更新時刻を更新する。更新内容が行の削除の場合、同期情報が図３に示すようにデータと分離されているときには、データの表３０１から該当する行を削除する（ステップＳ４０４）。同期情報（図２の２０１、図３の３０２）については、同期情報自体は削除せずに、削除フラグを「Ｙ」にする（ステップＳ４０５）。その後、ステップＳ４０６へ進み、同期情報を更新する。
【００３８】
図５は、接続中同期手段１０５の動作手順を示している。データベース内同期情報更新手段１０３が、同期情報を更新すると、接続中同期手段１０５の更新伝播手段１０８は、更新されたデータを、「主キー」等を利用して検索し、伝播すべき関係データベース１０２上のデータ、及び、同期情報を取得する（ステップＳ５０１）。その後、更新伝播手段１０８は、ステップＳ５０１で取得したデータを、伝播に適した形にエンコードする（ステップＳ５０２）。このエンコードには、例えば、ＸＭＬなどの形式を用いることができる。
【００３９】
更新伝播手段１０８は、現在ネットワークに接続中のマシンに対して、ステップＳ５０２でエンコードしたデータを送信する（ステップＳ５０３）。ステップＳ５０３では、関係データベース１０２が更新されたマシンは、ネットワーク接続中の他のマシンとの間で１対１の通信を行い、エンコードしたデータを送信する。或いは、マルチキャストを用い、ネットワーク接続中の全てのマシンに向けて、エンコードされたデータを送信する。ネットワーク接続中のマシンの接続中同期手段１０５は、他のマシンからエンコードされたデータを受信すると、受信データをデコードし、その内容に従って、自身のマシン内の関係データベース１０２を更新する（ステップＳ５０４）。このような動作により、ネットワーク接続中の各マシンの関係データベース１０２が同期される。
【００４０】
図６は、再接続時同期手段１０４の動作手順を示している。ネットワークに新たに接続したマシンがあると、再接続時同期手段１０４は、ネットワーク内に、新たに通信可能になったマシンを発見する（ステップＳ６０１）。ステップＳ６０１では、新たにネットワークに接続（再接続）したマシンの再接続時同期手段１０４は、既にネットワークに接続していた各マシンを、新たに通信可能になったマシンとして発見する。一方、既にネットワークに接続していたマシンの再接続時同期手段１０４は、新たにネットワークに接続したマシンを、新たに通信可能になったマシンとして発見する。新たに通信可能になったマシンの発見は、例えばＵＰｎＰなどが持つ機能を利用することで実現できる。
【００４１】
再接続時同期手段１０４の更新情報送信要求手段１０６は、ステップＳ６０１で発見した各マシンに対し、自らを「更新情報受信側マシン」、発見したマシンを「更新情報送信側マシン」として、更新情報の送信を要求する。この要求を受けた更新情報送信側マシンの更新情報送信手段１０７は、更新情報受信側マシンでされていない関係データベース１０２の更新を含む更新情報を、更新情報受信側マシンに送信する。更新情報送信側マシンの再接続時同期手段１０４は、受信した更新情報に基づいて、関係データベース１０２を更新する（ステップＳ６０２）。再接続時同期手段１０４は、ステップＳ６０１で発見したマシンが複数あるときには、その発見した各マシンに対して、ステップＳ６０２を実行する。
【００４２】
図７は、ネットワーク再接続時の関係データベース１０２の更新の様子を示している。ここでは、マシンＡ１００及びマシンＣ１２０は既にネットワークに接続しており、マシンＢ１１０がネットワークに再接続した場合について考える。この場合、ネットワークに再接続したマシンＢ１１０は、図６のステップＳ６０１で、既にネットワークに接続しているマシンＡ１００及びマシンＣ１２０を、新たに通信可能になったマシンとして発見する。一方、マシンＡ１００及びマシンＣ１２０は、それぞれ、再接続したマシンＢ１１０を、新たに通信可能になったマシンとして発見する。
【００４３】
マシンＢ１１０は、ステップＳ６０２で、自身を「更新情報受信側マシン」とし、発見したマシンＡ１００及びマシンＣ１２０を「更新情報送信側マシン」として、マシンＡ１００及びマシンＣ１２０に対し、それぞれ更新情報の送信を要求する。マシンＡ１００及びマシンＣ１２０は、この要求を受け取ると、それぞれ、自装置の関係データベース１０２（図１）でされており、マシンＢ１１０の関係データベース１０２でされていない更新の情報をマシンＢ１１０に送信する。マシンＢ１１０は、マシンＡ１００及びマシンＣ１２０から受信した情報に基づいて、関係データベース１０２を更新する。この更新により、マシンＢ１１０がネットワークから切断している間にマシンＡ１００又はマシンＣ１２０で行われた更新が、マシンＢ１１０の関係データベース１０２に反映される。
【００４４】
一方、マシンＡ１００及びマシンＣ１２０は、それぞれ、ステップＳ６０２で、自身を「更新情報受信側マシン」とし、発見したマシンＢ１１０を「更新情報送信側マシン」として、マシンＢ１１０に対して更新情報の送信を要求する。マシンＢ１１０は、自装置の関係データベース１０２ではされており、マシンＡ１００及びマシンＣ１２０ではされていない更新を含む更新情報を、マシンＡ１００及びマシンＣ１２０にそれぞれ送信する。マシンＡ１００及びマシンＣ１２０は、それぞれ、マシンＢ１１０から受信した情報に基づいて、関係データベース１０２を更新する。この更新により、マシンＢ１１０がネットワークから切断している間にマシンＢ１１０で行われた更新が、マシンＡ１００及びマシンＣ１２０の関係データベース１０２に反映される。
【００４５】
図８及び図９は、それぞれ、図６のステップＳ６０２のネットワーク再接続時の更新処理の詳細な手順を示すもので、図８は、更新情報受信側マシンの動作手順を示し、図９は、更新情報送信側マシンの動作手順を示している。更新情報受信側マシンの再接続時同期手段１０４の更新情報送信要求手段１０６は、同期情報（図２又は図３）を参照し、各更新者について、イベント番号が最大である行を検索して（ステップＳ８０１）、各更新者の最大のイベント番号を取得する。イベント番号は、更新者ごとの更新の順序を示しており、ステップＳ８０１の検索は、「更新者ごとに最も近い更新は何か」を検索することに等しい。
【００４６】
ステップＳ８０１の検索は、関係データベース１０２のインデックス機能などを用いることで、表のサイズに依存しない時間で高速に行うことが可能である。また、各更新者について、最大のイベント番号を保持するテーブルを用意しておき、データベース更新の際に、データベース内同期情報更新手段１０３によって、そのテーブルを更新することで、同期情報の検索を省略することも可能である。更新情報送信要求手段１０６は、各更新者について、イベント番号が最大の行を検索すると、マシンごとの最大イベント番号の情報を含む更新情報送信要求を、更新情報送信側マシンに送信する（ステップＳ８０２）。
【００４７】
図１０は、ネットワーク再接続時の更新処理において、２つのマシン間でやり取りされる情報の具体例を示している。マシンＢ１１０が更新情報送信側マシンである場合、マシンＢ１１０の関係データベース１０２が記憶するテーブル１０１１から、更新者「マシンＡ」について、最大イベント番号を検索すると、イベント番号「１１」が得られる。同様に、更新者「マシンＢ」及び「マシンＣ」について、最大イベント番号を検索すると、マシンＢについてはイベント番号「８」、マシンＣについてはイベント番号「５」が得られる。マシンＢ１１０の更新情報送信要求手段１０６は、「マシンＡ、最大イベント番号１１」、「マシンＢ、最大イベント番号８」、「マシンＣ、最大イベント番号５」を含む更新情報送信要求１０２０を、更新情報送信側マシンであるマシンＡ１００に送信し、マシンＡに、更新者ごとの最大イベント番号を通知する。
【００４８】
更新情報送信側マシンでは、更新情報受信側マシンから、更新情報送信要求を受信して、各更新者についての最大イベント番号の通知を受ける（図９のステップＳ９０１）。更新情報送信手段１０７は、自装置の関係データベース１０２のテーブル１００１を検索し、各更新者について、イベント番号が、更新情報受信側マシンから通知された最大イベント番号よりも大きなイベント番号の行を抽出する（ステップＳ９０２）。その後、抽出した行をエンコードし、これを更新情報（差分情報）として、更新情報受信側マシンに送信する（ステップＳ９０３）。ステップＳ９０２で、複数の行が抽出された場合には、抽出された各行を、更新情報受信側マシンに送信する。
【００４９】
図１０の例では、マシンＡ１００の関係データベース１０２のテーブル１００１を検索し、マシンＢ１１０から通知された各更新者の最大イベント番号を超えるイベント番号の行を抽出すると、主キー「３」の行（更新者「マシンＣ」、イベント番号「６」）が抽出される。この行は、最初にマシンＣ１２０において更新され、その後、マシンＡ１００に伝播されて、マシンＡ１００の関係データベース１０２においても更新された行である。このように、ステップＳ９０２では、更新情報送信側マシン（マシンＡ）とは異なるマシンによって更新された行が抽出されることがある。マシンＡ１００の再接続時同期手段１０４は、抽出した主キー「３」の行を、更新情報１０２１としてマシンＢに送信する。
【００５０】
図８に戻り、更新情報受信側マシンの再接続時同期手段１０４は、更新情報送信側マシンから送信された更新情報を取得する（ステップＳ８０３）。再接続時同期手段１０４は、受信した更新情報をデコードし、更新情報送信側マシンにおいて、更新情報受信側マシンにおける最大イベント番号よりも大きなイベント番号の行として抽出された行に対応する行が、自身の関係データベース１０２に存在するか否かを判断する（ステップＳ８０４）。対応する行が存在するか否かは、例えば主キーを用いて判断する。存在しない場合には、取得した行を、同期情報を含め関係データベース１０２に挿入する（ステップＳ８０８）。
【００５１】
対応する行が存在する場合、取得した行の「更新時刻」と、関係データベース１０２の対応する行の「更新時刻」とを比較し、取得した行の「更新時刻」が、関係データベース１０２の「更新時刻」よりも時間的に後であるか否かを判断する（ステップＳ８０５）。取得した行の「更新時刻」が時間的に前であれば、更新時刻が新しい方を優先して、取得した行を破棄する（ステップＳ８０９）。
【００５２】
取得した行の「更新時刻」が時間的に後であれば、再接続時同期手段１０４は、更新情報が行の削除を示すか否かを判断する（ステップＳ８０６）。更新情報が削除を示す場合には、対応する行の削除フラグを「Ｙ」にする（ステップＳ８０７）。このとき、同期情報が図３に示すように、データと分離されているときには、データ側の表から、対応する行を削除する。行の削除を示していないときには、取得した行の内容で、関係データベース１０２の対応する行を更新する（ステップＳ８１０）。
【００５３】
図１０の例では、マシンＢ１１０の関係データベース１０２が記憶するテーブル１０１１には、マシンＡ１００から送信された更新情報１０２１（主キー「３」の行）に対応する行が存在する。これら行の更新時刻を比較すると、マシンＡ１００から受信した行の方が、新しい。このため、マシンＢ１１０は、マシンＡ１００から受信した更新情報１０２１に従って、主キー「３」のデータを、「データ１１」から「データ１７」に更新する。また、この行に対応する同期情報を、更新情報１０２１の同期情報で上書きする。このような動作により、マシンＢ１１０がネットワークから切断されている間に、ネットワーク接続中のマシンで行われた更新の内容が、マシンＢ１１０の関係データベース１０２に反映される。
【００５４】
再接続時同期手段１０４は、ステップＳ８０３で、複数の行を含む更新情報を取得した場合には、その含まれる各行について、ステップＳ８０４〜Ｓ８１０の処理を実行する。その場合、処理の順序は、更新者とは無関係にイベント番号同士を比較し、イベント番号が小さい順に行うことが望ましい。これは、イベント番号が大きな行について更新を行っている間に障害が発生した場合、イベント番号が小さな行を再取得することができなくなることも考えられるからである。
【００５５】
図１０の例では、上記した、更新情報受信側マシンをマシンＢ１１０とし、更新情報送信側マシンをマシンＡ１００としたネットワーク再接続時の同期に加えて、更新情報受信側マシンをマシンＡ１００とし、更新情報送信側マシンをマシンＢ１１０としたネットワーク再接続時の同期も行われる。マシンＡ１００を更新情報受信側マシンとしたネットワーク再接続時の同期では、マシンＡ１００は、関係データベース１０２のテーブル１００１を検索し、各更新者について最大イベント番号（「マシンＡ、最大イベント番号１１」、「マシンＢ、最大イベント番号７」、「マシンＣ、最大イベント番号６」）を含む更新情報送信要求１０３０をマシンＢ１１０に送信する。
【００５６】
マシンＢ１１０は、関係データベース１０２を参照し、更新者ごとに、マシンＡ１００から通知された最大イベント番号を超える行を抽出して、これをマシンＡ１００に送信する。図１０では、マシンＢ１１０は、主キー「１」の行（更新者「マシンＢ」、イベント番号「１１」）を、マシンＡから通知された最大イベント番号を超える行として抽出する。この行は、マシンＢ１１０がネットワークから切断されている間に、マシンＢ１１０のアプリケーション１０１によって更新された行である。マシンＢ１１０は、抽出した主キー「１」の行をエンコードして、更新情報１０３１としてマシンＡ１００に送信する。
【００５７】
マシンＡ１００は、更新情報１０３１を受信すると、受信した更新情報１０３１に従って、関係データベース１０２を更新する。より詳細には、主キー「１」のデータを、「データ５」から「データ９」に更新する。また、この行に対応する同期情報を、受信した更新情報１０３１の同期情報で上書きする。これにより、ネットワーク切断中にマシンＢ１１０で行われた更新の内容が、マシンＡ１００の関係データベース１０２に反映される。以上のように、ネットワーク上に新たに通信可能になったマシンが発見されたとき、複数のマシン間で、お互いが知らない更新情報の授受を行うことで、ネットワークに新たに接続（再接続した）したマシンについても、既にネットワークに接続しているマシンについても、同様な手順で、関係データベース１０２の内容を同期させることができる。
【００５８】
本実施形態では、関係データベース１０２の各行（各データ）に対応して、データを更新した更新者と、更新者ごとの更新の順序を判断するための情報とを含む同期情報を付加する。各マシンは、ネットワーク接続中は、接続中同期手段１０５により、関係データベース１０２の内容を同期する。ネットワーク再接続時は、再接続時同期手段１０４により、新たに通信可能になったマシンに対し、更新者ごとの最新の更新を示す情報を通知し、更新情報の送信を要求し、相手側から、通知した最新の更新以後の更新の内容を受信して、関係データベース１０２を更新する。このようにすることで、マシン間で受け渡される情報は、そのマシンが実際に知らない情報のみとなり、冗長な情報の授受は行われない。従って、例えばデータベース内の全ての情報を授受する場合に比して、効率よく関係データベース１０２を同期させることができる。また、従来技術がログを用いているのとは異なり、行に同期情報を対応付けることで、同期の際に用いる情報の容量を少なくし、かつ、検索のコストを抑制することができる。
【００５９】
ここで、同期情報として「更新時刻」のみを付加し、各マシンが、「以前、何れかのマシンと同期を行った時刻」を記憶する場合について考える。この場合、「以前、何れかのマシンと同期を行った時刻」以後に更新された情報を要求することで、本実施形態と同様に差分情報のみを取得できるようにも考えられる。しかし、例えば、マシンＣがネットワークから切断された状態で、マシンＣで「１：００」に更新が起こり、その後、マシンＡとマシンＢとが「２：００」に同期を行った後にマシンＣがネットワークに再接続し、マシンＡとマシンＣとが同期を行う場合には、マシンＡは「２：００」に同期を行っているため、「１：００」に行われた更新が、マシンＣからマシンＡに送信されないという問題が起こる。本実施形態では、上記手順に従って、更新情報の送信を要求するため、マシン間で、確実に更新情報が伝達されることが保証される。
【００６０】
第２実施形態
図１１は、本発明の第２実施形態の分散同期型情報システムにおけるネットワーク接続中の同期の動作手順を示している。本実施形態の分散同期型情報システムは、図１に示す分散同期型情報システムと同様な構成を有しており、接続中同期手段１０５（図１）が、図５に示す手順に代えて、図１１に示す手順で、ネットワーク接続中のマシンとの間で関係データベース１０２を同期する点で、第１実施形態と相違する。本実施形態では、接続中同期手段１０５は、再接続時同期手段１０４を利用して、関係データベース１０２の同期を取る。
【００６１】
アプリケーション１０１が、関係データベース１０２を更新すると、更新があったマシンの接続中同期手段１０５は、ネットワーク接続中の各マシンに対し、データ更新があった旨を通知する（ステップＳ１１０１）。その際、接続中同期手段１０５は、データ更新を行ったマシン名を、データ更新があった旨の通知に含める。この通知を受け取った他のマシンの接続中同期手段１０５は、再接続時同期手段１０４の更新情報送信要求手段１０６により、自装置を「更新情報受信側マシン」、更新があったマシンを「更新情報送信側マシン」として、更新情報の送信を要求する（ステップＳ１１０２）。更新情報の送信要求を受け取ったマシンは、更新情報送信手段１０７により、その要求に応答して、更新情報を更新情報受信側マシンに送信する（ステップＳ１１０３）。更新情報受信側マシンは、受信した更新情報に従って、関係データベース１０２を更新する。
【００６２】
ステップＳ１１０２及びステップＳ１１０３の更新情報送信要求及び更新情報の送信は、図８及び図９に示す、ネットワーク再接続時の同期と同様な手順に従って行われる。このように、本実施形態では、ネットワーク接続中の同期とネットワーク再接続時の同期とを、同様な手順で行うことにより、システム構成を単純化できる。
【００６３】
第３実施形態
図１２は、本発明の第３実施形態の分散同期型情報システムにおけるネットワーク再接続時の同期の動作手順を示している。本実施形態の分散同期型情報システムは、図１に示す分散同期型情報システムと同様な構成を有しており、再接続時同期手段１０４（図１）が、図６に示す手順に代えて、図１２に示す手順で、ネットワーク接続中のマシンとの間で関係データベース１０２を同期する点で、第１実施形態と相違する。
【００６４】
ネットワークに再接続した（新たに接続した）マシンの再接続時同期手段１０４は、既にネットワークに接続しているマシンの中から任意の１つを選び、そのマシンを「更新情報送信側マシン」、自身を「更新情報受信側マシン」として更新情報送信要求を送信し、図８及び図９に示す手順により、関係データベース１０２を更新する（ステップＳ１２０１）。既にネットワーク接続しているマシン間で、データの同期が取られていると仮定すると、ステップＳ１２０１により、ネットワークに再接続したマシンは、ネットワーク接続中の他のマシンでされ、自装置でされていない更新を、自装置の関係データベース１０２に反映できる。
【００６５】
ネットワークに再接続したマシンの再接続時同期手段１０４は、自装置の関係データベース１０２を更新すると、ネットワーク接続中のマシンから任意の１つを選び、そのマシンに対し、各更新者についての最大イベント番号を送信するように指示する（ステップＳ１２０２）。この指示を受けたマシンの更新情報送信要求手段１０６は、そのマシン内の同期情報（関係データベース１０２）を検索して、更新者ごとの最大イベント番号を取得し、これを含む更新情報送信要求を、ネットワークに再接続したマシンに送信する。
【００６６】
ネットワークに再接続したマシンの更新情報送信手段１０７は、更新者ごとの最大イベント番号を受け取り（ステップＳ１２０３）、関係データベース１０２を検索して、受け取った更新者ごとの最大イベント番号を超えるイベント番号の行を抽出する（ステップＳ１２０４）。このステップは、図９のステップＳ９０２に相当する。その後、抽出した行をエンコードし、これを更新情報として、ネットワーク接続中の全てのマシンに対してマルチキャスト送信する（ステップＳ１２０５）。ネットワーク接続中の各マシンは、更新情報を受信し、図８のステップＳ８０３〜Ｓ８１０と同様な手順により、関係データベース１０２を更新する。この更新により、既にネットワークに接続していた各マシンは、ネットワークに再接続したマシンでされ、自装置でされていない更新を、自装置の関係データベース１０２に反映できる。
【００６７】
第１実施形態では、ネットワークに再接続したマシンと、ネットワーク接続中の各マシンとの間で、１対１の通信を行い、各マシンの関係データベース１０２を更新するため、ネットワーク接続中のマシン間で、情報の同期が取れている場合には、無駄な通信が行われることになる。本実施形態では、ネットワークに再接続したマシンは、ネットワーク接続中のマシンのうちの何れかとの間で通信を行い、更新情報を受信して関係データベース１０２を更新する。また、ネットワーク接続中のマシンの何れかから、更新者ごとの最大イベント番号を受信し、ネットワーク接続中の各マシンに向けて、更新情報をマルチキャスト送信する。このようにすることで、通信の回数及び通信料を削減し、無駄な通信を抑制することができる。
【００６８】
第４実施形態
本発明の第４実施形態の分散同期型情報システムは、図１に示す分散同期型情報システム１０と同様な構成を有している。本実施形態では、同期情報（図２）に、「更新時刻」に代えて、「更新履歴」を含める。更新履歴は、更新を行った更新者、及び、その際のイベント番号の組を含み、どのマシンにおいて、いつ（どのイベント番号のときに）データが更新されたかの履歴を示している。本実施形態では、このような更新履歴を用いて、ネットワークからの切断時に、複数のマシンで同じ行が更新された際の矛盾を解決する。
【００６９】
図１３は、更新履歴の更新の様子を示している。データベース内同期情報更新手段１０３は、データベースの更新時に、図４のステップＳ４０６で、更新時刻に代えて、更新履歴の更新を行う。同図において、「Ａ３」、「Ｂ５」等は、更新を行ったマシン名、及び、その際のイベント番号を示している。図１３の行１３０１の更新履歴は、対応する主キー「１０」の行が、マシンＡにおいてイベント番号「３」のときに挿入され、その後、マシンＢにおいてイベント番号「５」のとき更新され、更に、マシンＣにおいてイベント番号「７」のときに更新されたことを示している。マシンＡ及びマシンＢがそれぞれ行１３０１を有するとき、マシンＢがネットワークから切断し、主キー「１０」の行を更新すると、マシンＢのデータベース内同期情報更新手段１０３は、図１３に行１３０２として示すように、行１３０１の更新履歴に、マシンＢにおいてイベント番号「８」のときに更新されたことを示す「Ｂ８」を追加する。
【００７０】
マシンＡは、マシンＢがネットワークに再接続すると、ネットワーク再接続時の同期の動作により、マシンＢから、行１３０２を更新情報として受信する。この更新情報の更新履歴と、マシンＡが持つ行１３０１の更新履歴とを比較すると、取得した更新情報の同期情報の更新履歴（Ａ３、Ｂ５、Ｃ７、Ｂ８）は、マシンＡが有する行の更新履歴（Ａ３、Ｂ５、Ｃ７）を含んでいる。このことは、行１３０１と行１３０２とは、ネットワークからの切断時に、別々に更新されたわけではなく、もともと同じ情報を持っており、それがネットワークから切断されている間にマシンＢによって更新されたということを意味している。このように、取得した更新情報の更新履歴が、自身の更新履歴を含んでいる場合には、更新は、図１３の順序１３０３に示すように直線状に行われている。このような場合には、矛盾は存在せず、また、行１３０２のデータが、行１３０１のデータよりも新しいとわかるため、マシンＡは、行１３０１を行１３０２で更新すればよい。
【００７１】
図１４は、更新履歴の更新の様子の別の例を示している。同図に示す行１４０１の更新履歴は、「Ａ３、Ｂ５、Ｃ７、Ａ５、Ａ７」であり、行１４０２の更新履歴は、「Ａ３、Ｂ５、Ｃ７、Ｂ８」となっている。両者の更新履歴を比較すると、図１４に順序１４０３として示すように、「Ｃ７」までの更新は同じであり、その後の更新が相違する。これは、ネットワーク切断後に、ネットワーク接続中のマシンとネットワークから切断したマシンとにおいて、又は、共にネットワークから切断したマシンにおいて、別々に更新が行われたことを意味している。この場合、マシンＡ及びマシンＢがネットワークに再接続した際には、何らかの矛盾解決が必要になる。矛盾解決の方法としては、特定のマシンを優先する、或いは、ユーザに選択させるなどの方法がある
【００７２】
矛盾解決により、何れかの行を優先した場合には、マシン内でその行を新たに更新したものとして取り扱う。例えば、マシンＣが行１４０２を有し、行１４０１と行１４０２について、「Ｂ８」の更新を「Ａ５、Ａ７」の更新に優先させる、つまり、行１４０２を優先する場合には、行１４０２の「データ９」はそのままで、更新者を「マシンＣ」、イベント番号を新たに割り当てた「１１」として、関係データベース１０２を更新したものとする。その際、更新履歴に、「Ｃ１１」を追加すると共に、「Ｃ１１」が「Ａ５、Ａ７」の更新に優先してされたことを示す優先指示として、「優先：Ａ５、Ａ７」を付加する。このように優先指示を付加する理由は、例えばユーザにどちらかの更新を優先するかを選択させた場合に、その選択結果を保持することで、再度ユーザに選択を要求しないようにするためである。
【００７３】
次に、マシンＤが行１４０１を有しており、このマシンＤがネットワークに再接続した場合について考える。この場合、マシンＤは、マシンＣから、行１４０４を更新情報として受信する。行１４０１の更新履歴と、行１４０４の更新履歴とを比較すると、先頭「Ａ３」から「Ｃ７」までは同じである。また、行１４０１の更新履歴から、行１４０４の更新履歴との共通部分を除いた部分は「Ａ５、Ａ７」であり、行１４０４の更新履歴には、「優先Ａ５、Ａ７」が含まれている。このように、更新情報受信側マシンの行の更新履歴の途中までが更新情報の更新履歴と同じであり、それ以降の部分が、更新情報の更新履歴において優先指示されているときには、取得した更新情報の更新履歴が、自身の更新履歴を含んでいるものとして取り扱う。このようにすることで、更新履歴に「Ａ５、Ａ７」を含む行についても、「Ｃ１１」によって更新された行で更新することができる。
【００７４】
図１５は、ネットワーク再接続したマシンの動作手順を示している。同図に示す手順は、図８のステップＳ８０５がステップＳ１５０１に置き換わり、ステップＳ１５０２が追加されている点で、第１実施系におけるネットワークに再接続したマシンの動作手順と相違する。更新情報受信側マシンの再接続時同期手段１０４の更新情報送信要求手段１０６は、ステップＳ８０１で、更新マシンごとの最大イベント番号を検索する。その際、更新情報送信要求手段１０６は、同期情報２０１（図２）のイベント番号に加えて、更新履歴を含めて、各更新マシンについて最大のイベント番号を検索する。
【００７５】
再接続時同期手段１０４は、ステップＳ８０４で、関係データベース１０２に、更新情報送信側マシンから受信した更新情報に対応する行が存在すると判断すると、更新情報の同期情報に含まれる更新履歴と、関係データベース１０２の対応する行の同期情報の更新履歴とを比較する（ステップＳ１５０１）。比較の結果、取得した更新履歴の更新履歴が、自身の関係データベース１０２の対応する行の更新履歴を含む、或いは、優先指示によって、対応する行の更新履歴を含むとみなせる場合には、矛盾は起きていないので、ステップＳ８０６へ進んで、関係データベース１０２の対応する行を、取得した更新履歴の行で更新する。
【００７６】
例えば、更新情報受信側マシンが図１３に示す行１３０１を有し、更新情報として行１３０２を受信した場合には、ステップＳ１５０１では、行１３０１の更新履歴は、行１３０２の更新履歴に含まれると判断される。この場合、更新情報を受信した更新情報受信側マシンは、ステップＳ８０６からＳ８０７へと進み、取得した行１３０２で、関係データベース１０２を更新する。また、更新情報受信側マシンが図１４に示す行１４０１を有し、更新情報として行１４０４を受信した場合には、行１４０１の更新履歴は、行１４０４の更新履歴には含まれないものの、更新履歴の共通部分「Ａ３、Ｂ５、Ｃ７」の後ろが、行１４０４の更新履歴の優先指示で指定される「Ａ５、Ａ７」となっているため、ステップＳ１５０１では、行１４０１の更新履歴は、行１４０２の更新履歴に含まれるものとして取り扱われる。このため、関係データベース１０２の行１４０１は、更新情報の行１４０４により更新される。
【００７７】
取得した更新情報の更新履歴と関係データベース１０２の対応する行の更新履歴とが、包含関係にないとき、又は、更新履歴の優先指示を参照しても更新履歴の包含関係がないときには、同じ行が複数のマシンで別々に更新されており、矛盾が発生している。この場合には、矛盾を解決するように、行を更新する（ステップＳ１５０２）。ステップＳ１５０２では、例えばユーザに矛盾する行のうちの何れを優先するかを選択させ、選択された行で、関係データベース１０２を更新する。或いは、更新時刻が遅い方を優先して、その行で更新しても良い。
【００７８】
ステップＳ１５０２の更新では、優先する側の行について、更新者を自装置、イベント番号を新たに割り当てたイベント番号として、更新履歴に、今回更新分の情報を追加する。その際、選択されなかった行の更新履歴のうちで、選択された行の更新履歴との共通部分を除く部分を、優先指示として、更新された行の更新履歴に含める。例えば、図１４の行１４０１と行１４０２について、行１４０２を優先させる場合には、行１４０１の更新履歴のうちで、行１４０２の更新履歴との共通部分を除く「Ａ５、Ａ７」を、行１４０４に示すように、今回更新分の履歴「Ｃ１１」の優先指示として付加する。更新情報受信側マシンは、ステップＳ１５０２で関係データベース１０２を更新すると、接続中同期手段１０５により、ネットワーク接続中の各マシンに、更新した行を送信する。
【００７９】
本実施形態では、同期情報に、どのような順序（経路）で更新が行われたかを示す更新履歴を含める。この更新情報を用い、ネットワーク再接続時の同期の動作において取得した更新情報の更新履歴が、自身の更新履歴を含むか否かを調べることにより、矛盾が発生しているか否か、つまり、受信した更新情報と、自装置の関係データベース１０２の対応する行とが、ネットワーク切断後に同時に更新されたものであるか、或いは、一方でのみ更新されたものであるかを、判別できる。また、矛盾を解決した際には、その結果を更新履歴に含めることで、ネットワーク接続中の他のマシンに矛盾解決の際にどちらの更新を優先したかを伝播することができ、再度、矛盾解決の判断を行うことを避けることができる。
【００８０】
ここで、第１又は第２実施形態の動作と、本実施形態の動作とを組み合わせる場合には、図６を参照して説明したように、各マシンが新たに通信可能になったマシンを発見すると、おのおのが「更新情報受信側マシン」として同期を行う。従って、複数のマシンが既にネットワークに接続している状態で、あるマシンがネットワークイン再接続すると、更新情報の受信が同時に全マシンで行われ、全てのマシンで矛盾解決の動作が必要となる可能性がある。これに対し、第３実施形態の動作と本実施形態の動作とを組み合わせる場合には、第３実施形態では、更新情報をネットワーク接続中のマシンに対してマルチキャスト送信するため、矛盾解決の際に優先した更新の情報をネットワーク接続中の各マシンに伝播することができ、矛盾解決の動作は１回で済む。従って、本実施形態の動作は、第３実施形態の動作と組み合わせることが好ましい。
【００８１】
第５実施形態
本発明の第５実施形態の分散同期型情報システムは、図１に示す分散同期型情報システムと同様な構成に加え、履歴削除手段を有している。第４実施形態では、同期情報に更新履歴を含めたが、この更新履歴は、更新を行うたびに増大する。本実施形態では、各マシンにおいて、どの時点までの更新が伝播したかを管理し、更新履歴の不要部分を削除する。また、本実施形態では、各マシンにおいて、どの時点までの更新が伝播したかを管理して、同期情報の削除フラグが「Ｙ」の行を削除する。
【００８２】
本実施形態では、各マシンは、各マシンにおいてどの時点の更新までが伝播したかを示す情報として、各マシンが持つ更新者ごとの最大イベント番号の情報を記憶する。図１６は、各マシンが記憶する、各マシンが持つ更新者ごとの最大イベント番号の具体例を示している。例えば、マシンＡが同図に示す表１６０１を記憶している場合には、マシンＡは、自装置の関係データベース１０２については、更新者「マシンＡ」はイベント番号「２０」まで、更新者「マシンＢ」はイベント番号「１１」まで、更新者「マシンＣ」はイベント番号「１５」の更新までが行われていることを認識（把握）している。また、マシンＡは、マシンＢの関係データベース１０２では、更新者「マシンＡ」はイベント番号「１５」まで、更新者「マシンＢ」はイベント番号「１１」まで、更新者「マシンＣ」はイベント番号「７」の更新までが行われていることを認識している。
【００８３】
各マシンが記憶する各マシンが持つ更新者ごとの最大イベント番号の表の作成について説明する。システム運用開始時の表１６０１における最大イベント番号の初期値は０である。各マシンは、自装置の関係データベース１０２を更新すると、自装置が記憶する各マシンが持つ更新者ごとの最大イベント番号の表１６０１の「自装置が持つ最大イベント番号」の行の更新者「自装置」の値を、データベース内同期情報更新手段１０３により新たに割り当てられたイベント番号に書き換える。例えば、マシンＡ内で、関係データベース１０２が更新された場合には、マシンＡは、自装置が記憶する最大イベント番号の表１６０１の「マシンＡが持つ最大イベント番号」の行の更新者「マシンＡ」の値を、新たに割り当てられたイベント番号に書き換える。
【００８４】
マシンＡでデータが更新された場合、その更新は、接続中同期手段１０５により、ネットワーク接続中のマシンに伝播される。各マシンは、他のマシンにおける更新が伝播されると、自装置が記憶する最大イベント番号の表１６０１の「自装置が持つ最大イベント番号」の行の更新者「マシンＡ」の値を、更新内容と共に伝播されたイベント番号に書き換える。その際、ネットワーク接続中のマシンを判断し、「ネットワーク接続中の各マシンがもつ最大イベント番号」の行の更新者「マシンＡ」の値を、伝播されたイベント番号に書き換える。これは、ネットワーク接続中の各マシンに、マシンＡでの更新が伝播されるためである。ネットワーク接続中のマシンは、例えば、データを送信した際に応答があるか否かによって判断することができる。或いは、死活信号を用いて、周期的に死活信号を受信できたマシンを、ネットワーク接続中のマシンと判断しても良い。
【００８５】
例えば、マシンＢは、マシンＡから、ネットワーク接続中の同期の動作により、マシンＡでの更新内容を受け取り、更新者を「マシンＡ」として、関係データベース１０２を更新する。その際、マシンＢは、自装置が記憶する最大イベント番号の表１６０１の「マシンＢが持つ最大イベント番号の行の更新者「マシンＡ」の値を、マシンＡから伝播されたイベント番号に書き換える。また、マシンＣがネットワークに接続していた場合には、マシンＡにおける更新はマシンＣにも伝播するため、マシンＢが記憶する最大イベント番号の表１６０１の「マシンＣが持つ最大イベント番号」の行の更新者「マシンＡ」の値を、マシンＡから伝播されたイベント番号に書き換える。マシンＣがネットワークから切断されていた場合には、マシンＡにおける更新はマシンＣには伝播されないため、「マシンＣが持つ最大イベント番号」の値は書き換えない。
【００８６】
ネットワーク再接続時の動作では、更新情報送信側マシンは、ステップＳ９０３（図９）で抽出した行をエンコードして送信する際に、記憶する各マシンの更新者ごとの最大イベント番号の表１６０１をエンコードして、抽出した行と共に、更新情報受信側マシンに送信する。更新情報受信側マシンは、ステップＳ８０３（図８）で更新情報を取得すると、更新情報送信側マシンから受信した各マシンが持つ最大イベント番号の表と、自装置が記憶する各マシンが持つ更新者ごとの最大イベント番号の表とを組み合わせて、記憶する最大イベント番号の表を更新する。その後、再接続時の同期の動作により、関係データベース１０２を更新し、その更新に伴って、最大イベント番号の表の自装置が持つ最大イベント番号の行を更新する。
【００８７】
図１７は、再接続時の同期の動作における、各マシンが持つ最大イベント番号の表の更新の様子を示している。例えば、マシンＡが表１７０１を記憶し、マシンＢが表１７０２を記憶していたとする。マシンＢを更新情報受信側マシンとし、マシンＡを更新情報送信側マシンとすると、再接続時の同期では、マシンＢは、マシンＡから表１７０１を取得する。マシンＢは、記憶する表１７０２の各項目の値と、受信した表１７０１の各項目の値とを比較し、値が大きいほうを選択して、各マシンが持つ更新者ごとの最大イベント番号の表を表１７０３に更新する。例えば、表１７０１におけるマシンＡが持つ更新者「マシンＢ」の最大イベント番号は「１１」であり、表１７０２におけるマシンＡが持つ更新者「マシンＢ」の最大イベント番号は「７」である。この場合には、「１１」を選択する。
【００８８】
削除フラグが「Ｙ」に設定された行（同期情報）の削除について説明する。削除フラグは、再接続時の同期において、ネットワークから切断されたマシンにおいて行が新たに挿入されたのか、ネットワーク接続中のマシンにおいて行が削除されたのかを判別するために用いられる。従って、行を削除する更新が全てのマシンに伝播されていることが確認できれば、その行自体を削除することができる。
【００８９】
各マシンが持つ更新者ごとの最大イベント番号の表１６０１（図１６）において、更新者ごとに最小値を求めると、マシンＡは「１５」、マシンＢは「７」、マシンＣは「７」となる。これは、表１６０１を記憶するマシンは、各マシンで、更新者ごとに、最低限これらイベント番号までの更新がされていることを認識していることを意味する。つまり、全マシンに、更新者をマシンＡとする更新はイベント番号「１５」まで、更新者をマシンＢとする更新はイベント番号「７」まで、更新者をマシンＣとする更新はイベント番号「７」まで伝播されていると認識していることを意味する。従って、削除フラグが「Ｙ」に設定された行のイベント番号が、その行を更新したマシンの最大イベント番号の最小値以下の値であれば、その行を削除することができる。
【００９０】
各マシンは、任意のタイミングで、例えば定期的に、或いは、他のマシンとの同期時に、削除フラグが「Ｙ」に設定された行のイベント番号と、各マシンが持つ更新者ごとの最大イベント番号の、その行を更新したマシンの最小値とを比較し、その行のイベント番号が、最大イベント番号の最小値以下であるときには、その行を削除する。図３に示すように、データと同期情報が分離されているときには、削除フラグが「Ｙ」に設定された行に対応する同期情報を削除する。例えば、削除フラグが「Ｙ」に設定された行の更新者がマシンＣであり、イベント番号が「３」であれば、表１６０１における更新者「マシンＣ」の最大イベント番号の最小値は「７」であるため、その行を関係データベース１０２から削除する。
【００９１】
次に、更新履歴の削除について説明する。図１８は、更新履歴削除前の行と更新履歴削除後の行とを示している。更新履歴については、全てのマシンに伝播した更新に関しては、更新履歴から削除しても問題がない。例えば、マシンＡが、図１６に示す表１６０１を記憶する場合には、マシンＡは、各更新者についての最大イベント番号の最小値である「Ａ１５」、「Ｂ７」、「Ｃ７」までの更新は、全マシンに伝播していると認識している。このため、更新履歴削除手段は、図１８に示す行１８０１については、この行の更新履歴「Ａ３、Ｂ５、Ｃ７、Ａ２０」から「Ａ３、Ｂ５、Ｃ７」を削除する。これにより、更新履歴削除後の行１８０２の更新履歴は「Ａ２０」のみとなる。履歴削除手段は、任意のタイミングで、例えば定期的に、或いは、他のマシンとの同期時に、更新履歴の不要部分を削除する。
【００９２】
ただし、任意の２台がデータを同期しようとした際に、それぞれのマシンにおいて更新履歴から削除した内容が異なる場合がある。これは、各マシンが記憶する、各マシンが持つ更新者ごとの最大イベント番号の表における更新者ごとの最大イベント番号の最小値が、マシンごとに異なる場合があるためである。例えば、マシンＡが図１７に示す表１７０１（図１６の表１６０１と同じ内容）を記憶し、マシンＢが表１７０２を記憶する場合には、マシンＡが記憶する表１７０１では、更新者「マシンＡ」の最大イベント番号の最小値は「１５」であり、マシンＢが記憶する表１７０２では、更新者「マシンＡ」の最大イベント番号の最小値は「１１」となる。これは、マシンＡは、自装置が更新者となる更新についてイベント番号「１５」までの更新が全マシンに伝播していると認識しており、マシンＢは、更新者「マシンＡ」の更新については、イベント番号「１１」までの更新が全マシンに伝播していると認識していることを意味する。
【００９３】
図１９は、マシンＢにおける更新履歴の削除の様子を示している。同図に示す行１９０１は、図１８に示す行１８０１と同じ主キーを有しており、「Ａ２０」の更新がされる前の状態を示している。マシンＢが、各マシンが持つ更新者ごとの最大イベント番号として図１７に示す表１７０２を記憶していた場合、更新者「マシンＣ」についての最大イベント番号の最小値は「６」である。従って、マシンＢが、図１９に示す行１９０１から更新履歴を削除すると、行１９０２に示すように、更新履歴は「Ｃ７」となる。この場合、マシンＡとマシンＢとが図１５に示す手順で同期しようとすると、行１８０２（図１８）の更新履歴と行１９０２の更新履歴とは包含関係にないため、本来は矛盾しない更新であるのに、矛盾した更新であると誤って認識することになる。
【００９４】
そこで、更新情報送信側マシンにおいて、どの更新までを更新履歴から削除したかを、更新情報受信側マシンに伝達する。具体的には、更新情報送信側マシンは、更新情報受信側マシンに抽出した行をエンコードして送信する際に、自装置が記憶する「各マシンが持つ更新者ごとの最大イベント番号の表」をエンコードして送信する。更新情報受信側マシンは、更新情報送信側マシンから受信した「各マシンが持つ更新者ごとの最大イベント番号の表」、自装置が記憶する「各マシンが持つ更新者ごとの最大イベント番号の表」とのうちの値が大きいほうを選択して、「各マシンが待つ更新者ごとの最大イベント番号の表」を更新する。その後、更新された表について、更新者ごとに、最大イベント番号の最小値を求める。
【００９５】
図１７の例では、マシンＡが記憶する表１７０１と、マシンＢが記憶する表１７０２とにより、マシンＢが記憶する「各マシンが持つ最大イベント番号の表」は、表１７０３に示すように更新される。この場合、最大イベント番号の最小値は、「Ａ１１」、「Ｂ７」、「Ｃ６」（表１７０２）から、「Ａ１５」、「Ｂ７」、「Ｃ７」となる。更新情報受信側マシンは、ステップＳ１５０１（図１５）で、更新履歴を比較する際に、自装置の関係データベース１０２の更新情報に対応する行の更新履歴から、更新した各マシンが持つ最大イベント番号の表の更新者ごとの最大イベント番号の最小値を用いて、更新履歴を削除する。その上で、更新情報の更新履歴と、関係データベース１０２の更新情報に対応する行の更新履歴とを比較し、矛盾が発生しているか否かを調べる。
【００９６】
例えば、マシンＢが図１９に示す行１９０２を記憶し、更新情報として図１８に示す行１８０２を受信した場合には、更新された表１７０３を参照して、行１９０２の更新履歴から「Ｃ７」を削除する。このように更新履歴が削除された行１９０３と、更新情報の更新履歴とを比較すると、行１９０３の更新履歴は“空”であるので、ステップＳ１５０１では、矛盾があるとは判断されず、ステップＳ８１０へ進んでデータが更新される。更新情報受信側マシンは、ステップＳ８１０でデータを更新した場合には、その更新に対応して、「各マシンがもつ更新者ごとの最大イベント番号の表」の自装置が持つ最大イベント番号の行を更新する。例えば、マシンＢが、行１９０３を行１８０２で更新した場合には、マシンＢは、表１７０３（図１７）のマシンＢが持つ最大イベント番号の行の更新者「マシンＡ」の値を、「２０」に更新する。
【００９７】
本実施形態では、各マシンが、各マシンに更新者ごとにどの更新までが伝播したかを記憶し、その情報を参照して、既に全てのマシンに伝播しており、不要となった更新履歴や、削除フラグが「Ｙ」に設定された行（同期情報）を削除する。このようにすることで、更新履歴や同期情報を記憶するために必要な記憶容量を少なくすることができ、記憶装置の記憶容量を有効に使用することができる。
【００９８】
第６実施形態
図２０は、本発明の第６実施形態の分散同期型情報システムの構成を示している。本実施形態では、分散同期型情報システム１０ａは、ネットワークを介して接続された複数のコンピュータ（同図の例では、３台のコンピュータ２００１〜２００３）により構成される。各コンピュータには、記録媒体２０１１〜２０１３が接続されており、各記録媒体は、コンピュータを図１に示すアプリケーション１０１、データベース内同期情報更新手段１０３、再接続時同期手段１０４、及び、接続中同期手段１０５として機能させるプログラム、及び、関係データベース１０２が記憶されている。各コンピュータは、プログラムを読み込んで動作することにより、第１〜第５実施形態で説明した動作により、関係データベース１０２を同期する。
【００９９】
なお、図２では、同期情報に、更新の前後を判断する情報として「イベント番号」を含め、何れの更新を優先すべきかを判断する際に用いる情報として「更新時刻」を含めたが、更新の前後を判断するための情報として「更新時刻」を採用する場合には、更新の前後を判断するための情報と、何れの更新を優先すべきかを判断するための情報とを共用することができる。更新の前後を判断するための情報として、更新時刻を用いる場合には、上記各実施形態で説明した最大イベント番号を、直近の更新時刻と読みかえればよい。また、あるイベント番号以降のイベント番号の部分を、ある更新時刻以降の更新と読み替えればよい。
【０１００】
以上、本発明をその好適な実施形態に基づいて説明したが、本発明の情報装置、分散同期型情報システム、情報同期方法、及び、プログラムは、上記実施形態例にのみ限定されるものではなく、上記実施形態の構成から種々の修正及び変更を施したものも、本発明の範囲に含まれる。
【産業上の利用可能性】
【０１０１】
本発明は、パーソナルコンピュータや情報家電、携帯電話、ＰＤＡといった機器において、それらが利用する情報を同期する用途に適用できる。また、ネットワークで接続されたサーバ群の間で、データベース内の情報を同期するための用途にも適用できる。
【図面の簡単な説明】
【０１０２】
【図１】本発明の第１実施形態の分散同期型情報システムの構成を示すブロック図。
【図２】関係データベースのデータ構造の具体例を示す図。
【図３】関係データベースのデータ構造の別の具体例を示す図。
【図４】データベース内同期情報更新手段の動作手順を示すフローチャート。
【図５】接続中同期手段の動作手順を示すフローチャート。
【図６】再接続時同期手段の動作手順を示すフローチャート。
【図７】ネットワーク再接続時の関係データベースの更新の様子を示すブロック図。
【図８】更新情報受信側マシンのネットワーク再接続時の更新処理の詳細な手順を示すフローチャート。
【図９】更新情報送信側マシンのネットワーク再接続時の更新処理の詳細な手順を示すフローチャート。
【図１０】ネットワーク再接続時の更新処理において、２つのマシン間でやり取りされる情報の具体例を示す図。
【図１１】本発明の第２実施形態の分散同期型情報システムにおけるネットワーク接続中の同期の動作手順を示すフローチャート。
【図１２】本発明の第３実施形態の分散同期型情報システムにおけるネットワーク再接続時の同期の動作手順を示すフローチャート。
【図１３】更新履歴の更新の様子を示す図。
【図１４】更新履歴の更新の別の例を示す図。
【図１５】ネットワーク再接続したマシンの動作手順を示すフローチャート。
【図１６】各マシンが記憶する、各マシンが持つ更新者ごとの最大イベント番号の具体例を示す図。
【図１７】再接続時の同期の動作における、各マシンが持つ最大イベント番号の表の更新の様子を示す図。
【図１８】更新履歴削除前の行と更新履歴削除後の行とを示す図。
【図１９】マシンＢにおける更新履歴の削除の様子を示す図。
【図２０】本発明の第６実施形態の分散同期型情報システムの構成を示すブロック図。
【図２１】非特許文献１に記載の技術における情報同期の様子を示す図。
【符号の説明】
【０１０３】
１０：分散同期型情報システム
１００、１１０、１２０：情報機器
１０１：アプリケーション
１０２：関係データベース
１０３：データベース内同期情報更新手段
１０４：再接続時同期手段
１０５：接続中同期手段
１０６：更新情報送信要求手段
１０７：更新情報送信手段
２０１：同期情報
２００１、２００２、２００３：コンピュータ
２０１１、２０１２、２０１３：記録媒体
【図１】
2007164523.tif 000003
【図２】
2007164523.tif 000004
【図３】
2007164523.tif 000005
【図４】
2007164523.tif 000006
【図５】
2007164523.tif 000007
【図６】
2007164523.tif 000008
【図７】
2007164523.tif 000009
【図８】
2007164523.tif 000010
【図９】
2007164523.tif 000011
【図１０】
2007164523.tif 000012
【図１１】
2007164523.tif 000013
【図１２】
2007164523.tif 000014
【図１３】
2007164523.tif 000015
【図１４】
2007164523.tif 000016
【図１５】
2007164523.tif 000017
【図１６】
2007164523.tif 000018
【図１７】
2007164523.tif 000019
【図１８】
2007164523.tif 000020
【図１９】
2007164523.tif 000021
【図２０】
2007164523.tif 000022
【図２１】
2007164523.tif 000023