情報処理装置、分散同期型情報システム、情報同期方法、及び、プログラム
【課題】多量の記憶領域を必要とせずに、各機器が記憶するデータを効率よく同期できる分散同期型情報システムを提供する。
【解決手段】関係データベース102は、各行のデータに対応して、その行を更新した更新者、及び、更新者ごとの更新の前後を判断するためのイベント番号を記憶する。マシンA100の更新情報送信要求手段106は、関係データベース102を参照して更新者ごとの最大イベント番号を検索し、それを含む更新情報送信要求を、マシンB110に送信する。マシンB110の更新情報送信手段107は、関係データベース102から、更新情報送信要求に含まれる更新者ごとの最大イベント番号以降の更新を抽出し、これをマシンA100に送信して、マシンAの関係データベース102を更新させる。
【解決手段】関係データベース102は、各行のデータに対応して、その行を更新した更新者、及び、更新者ごとの更新の前後を判断するためのイベント番号を記憶する。マシンA100の更新情報送信要求手段106は、関係データベース102を参照して更新者ごとの最大イベント番号を検索し、それを含む更新情報送信要求を、マシンB110に送信する。マシンB110の更新情報送信手段107は、関係データベース102から、更新情報送信要求に含まれる更新者ごとの最大イベント番号以降の更新を抽出し、これをマシンA100に送信して、マシンAの関係データベース102を更新させる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、分散同期型情報システム、情報同期方法、及び、プログラムに関し、更に詳しくは、データベースを有する複数の情報装置間でデータベースのデータを同期する情報処理装置、分散同期型情報システム、情報同期方法、及び、プログラムに関する。
【背景技術】
【0002】
従来、情報システムとして用いられているものには、LDAPやSun Microsystems社によるNISがある。これらの情報システムは、サーバ・クライアント方式のシステムとして構成されており、クライアントの端末を、ネットワークから切断した状態で持ち運ぶ場合には、端末側からデータベースにアクセスすることができない。端末を、ネットワークから切断した状態で使用する方法としては、サーバ上のデータベースを、端末にコピーして持ち運ぶ方法が考えられる。しかし、この場合には、ネットワークから切断された状態でもデータベースを参照することはできるものの、複数の端末でデータベースの更新が行われた場合には、データベース内のデータを複数の端末間で同期することができない。
【0003】
端末をネットワークから切断してデータ更新を行った場合には、ネットワーク再接続時に、端末間でデータベース内の全てのデータを送受信し、双方のデータを比較することで、各端末のデータベースを同期することができる。しかし、その場合には、送受信データ量が膨大になるという問題がある。このような問題を解決する従来技術としては、例えば特許文献1に記載された技術がある。特許文献1では、サーバ上のデータベースをマスターとし、クライアント上のデータベースを非マスターとする。クライアントは、ネットワークから切断された後の更新を、差分情報としてテーブルに記憶する。ネットワーク再接続時には、サーバとの間で差分情報を送受信し、マスターと非マスターとで同期を取る。
【0004】
複数の情報機器(情報処理装置)間で情報を同期する技術としては、非特許文献1に記載された技術がある。非特許文献1では、各情報機器を対等に扱い、ネットワーク接続時に、それぞれが持つ更新情報を同期する。図21は、非特許文献1に記載の技術における情報同期の様子を示している。各情報機器は、データベース2101のデータに対して、更新情報のログ2102を保持する。ログ2102には、データベース2101について、どの部分をどのような値に更新したかを示す情報に加え、その更新を行った機器のIDと、更新を行った時刻とが含まれる。
【0005】
非特許文献1では、2つの情報機器間で情報同期を行い、これを繰り返すことにより、複数の情報機器間で情報同期を行う。2つの情報機器間での情報同期では、一方の情報機器(受信側)は、自装置が持つログ2102を走査し、各機器IDについて、最も遅い更新時刻を求め、これを、他方の情報機器(送信側)に送信する。送信側機器は、ログ2102を走査し、各機器IDについて、受信側機器から通知された更新時刻以降に行われた更新を、受信側機器に渡す。これにより、送信側機器が保持していて、受信側機器が保持していない情報を、受信側機器に伝えることができる。受信側機器と送信側機器との立場を入れ替え、同様の操作を行うことにより、両者の情報を同期させることができる。
【0006】
【特許文献1】特開2001−142766号公報(図6、図7、段落0038〜0050など)
【非特許文献1】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頁
【発明の開示】
【発明が解決しようとする課題】
【0007】
特許文献1では、マスターとなるデータベースはただ一つであり、全ての同期は、マスターとの間で1対1で行う必要がある。非マスターのクライアント同士が更新の同期を行う場合について考えると、クライアントが持っている情報は、マスターとの差分のみであるため、互いが未知の情報を交換することはできず、非マスターのクライアント同士では、同期を行うことができない。例えば、家庭内の機器群やPDAなど携帯型情報機器の同期を考える場合、特許文献1では、携帯する情報機器相互間で同期を行うことができない。また、マスターとなる情報機器は、同期時には常にネットワークに接続され、電源が投入されていなければならないという問題がある。
【0008】
非特許文献1に記載の技術では、全ての更新情報をログ2102に保存する必要があり、ログ情報が膨大となるため、実装に際して、多量の記憶領域が必要になるという問題がある。ログ2102のどの部分が不要であるかを、何らかの手法で判断することも考えられるが、その場合には、アルゴリズムが複雑となる。また、非特許文献1では、更新情報をログ形式で管理しているため、ログ走査に時間がかかり、情報同期時の効率が悪い。更に、特許文献1を含め、従来技術では、情報同期が2つの情報機器間での同期のみに限定されており、複数の情報機器間で同期を行う場合には、2つの情報機器間での情報同期を繰り返し行う必要があり、情報同期時に、多数回の通信が必要であるという問題がある。
【0009】
本発明は、上記従来技術の問題点を解消し、多量の記憶領域を必要とせずに、各機器が記憶するデータを効率よく同期できる情報処理装置、分散同期型情報システム、情報同期方法、及び、プログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するために、本発明の分散同期型情報システムは、それぞれがデータベースを有する複数の情報処理装置を備え、該情報処理装置の間で前記データベースを同期させる分散同期型情報システムにおいて、前記情報処理装置のそれぞれが、前記データベースの各データと、データ更新を行った情報処理装置を示す更新者、及び、情報処理装置内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶する記憶装置を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他の情報処理装置に送信する更新情報送信要求手段と、前記更新情報送信要求を受信した他の情報処理装置から、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信し、自装置内の前記データベース及び同期情報を更新する第1のデータベース同期手段とを備えたことを特徴とする。
【0011】
本発明のデータベース同期方法は、それぞれがデータベースを有する複数の情報処理装置を備え、該情報処理装置の間で前記データベースを同期させる分散同期型情報システムにおけるデータベース同期方法おいて、前記情報処理装置が、データベース更新時に、更新データと、データ更新を行った情報処理装置を示す更新者、及び、情報処理装置内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶するステップと、
前記情報処理装置が、前記同期情報を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他の情報処理装置に送信するステップと、
前記情報処理装置が、前記更新情報送信要求を受信した他の情報処理装置から、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信するステップと、
前記情報処理装置が、受信した更新情報に基づいて、自装置内の前記データベース及び同期情報を更新するステップとを有することを特徴とする。
【0012】
本発明の情報処理装置は、データベースを有し、ネットワークを介して接続される他の情報処理装置との間で前記データベースを同期する情報処理装置において、前記データベースの各データと、データ更新を行った情報処理装置を示す更新者、及び、情報処理装置内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶する記憶装置を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他の情報処理装置に送信する更新情報送信要求手段と、前記更新情報送信要求を受信した他の情報処理装置から、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信し、自装置内の前記データベース及び同期情報を更新する第1のデータベース同期手段を備えたことを特徴とする。
【0013】
本発明のプログラムは、コンピュータが有するデータベースを、ネットワークを介して接続される他のコンピュータのデータベースと同期させるプログラムであって、前記コンピュータに、データベース更新時に、更新データと、データ更新を行ったコンピュータを示す更新者、及び、コンピュータ内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶するステップと、前記同期情報を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他のコンピュータに送信するステップと、前記更新情報送信要求を受信した他のコンピュータから、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信するステップと、受信した更新情報に基づいて、自装置内の前記データベース及び同期情報を更新するステップとを実行させることを特徴とする。
【0014】
本発明の分散同期型情報システム、情報処理装置、データベース同期方法、及び、プログラムでは、データベースの各データに対応して、そのデータを更新した更新者と、情報処理装置(コンピュータ)ごとの更新の前後を判断するための情報とを含む同期情報を記憶する。この同期情報を参照することで、自装置内のデータベース内において、各更新者について、最新の更新が何であるかを知ることができる。他の情報処理装置との同期時には、同期情報を参照して、各更新者についての最新の更新を示す情報を取得し、これを他の情報処理装置に送信し、その他の情報処理装置から、自装置のデータベースにおける更新者ごとの最新の更新よりも新しい更新によって更新されたデータを受信して、データベースを更新する。このようにすることにより、データベース内の全てのデータを比較しなくても、自装置のデータベースでされていない更新を取得することができ、データベース内の全データを送受信して比較する場合に比して、送受信されるデータ量を少なくすることができる。また、更新ログを保存する場合には、更新が行われるたびに更新ログの行が増えていき、更新回数の増加に伴って更新ログのサイズが増大するが、本発明では、データベースの各データに対応して同期情報を記憶するため、更新回数が増えても同期情報のサイズは増大せず、更新ログを保存する場合に比して、必要な記録領域が少なくて済む。
【0015】
本発明の分散同期型情報システムは、自装置内で更新者として前記データベースを更新すると、自装置内での更新の前後を判断するための情報を作成し、当該更新データに対応させて同期情報を更新する同期情報更新手段を更に備える構成を採用できる。本発明のデータベース同期方法は、前記同期情報を記憶するステップでは、前記情報処理装置は、自装置内で更新者として前記データベースを更新すると、自装置内での更新の前後を判断するための情報を作成し、当該更新データに対応させて同期情報を更新する構成を採用できる。
【0016】
本発明の分散同期型情報システム及びデータベース同期方法では、前記情報処理装置内での更新の前後を判断するための情報が、前記情報処理装置内で前記データベースを更新するたびにインクリメントされる情報処理装置ごとのイベント番号である構成を採用できる。また、本発明のプログラムでは、前記コンピュータ内での更新の前後を判断するための情報が、前記コンピュータ内で前記データベースを更新するたびにインクリメントされるコンピュータごとのイベント番号である構成を採用できる。この場合、イベント番号の大小を比較することにより、データベースを更新した更新者ごとに、更新の前後を判断することができる。更新の前後を判断する情報としては、更新時刻を用いることもできる。その場合には、更新時刻の前後により、更新者ごとに、更新の前後を判断できる。
【0017】
本発明の分散同期型情報システムでは、前記同期情報が更新時刻を含み、前記第1のデータベース同期手段は、前記更新情報に含まれる同期情報の更新時刻が、自装置が記憶する同期情報の更新時刻よりも新しいと、前記データベース及び同期情報を更新する構成を採用できる。本発明のデータベース同期方法では、前記同期情報が更新時刻を含み、前記データベース及び同期情報を更新するステップでは、前記情報処理装置は、前記更新情報に含まれる同期情報の更新時刻が、自装置が記憶する同期情報の更新時刻よりも新しいと、前記データベース及び同期情報を更新する構成を採用できる。本発明のプログラムでは、前記同期情報が更新時刻を含み、前記データベース及び同期情報を更新するステップでは、前記更新情報に含まれる同期情報の更新時刻が、自装置が記憶する同期情報の更新時刻よりも新しいと、前記データベース及び同期情報を更新する構成を採用できる。この場合、新しいデータが、古いデータによって更新されることを防ぐことができる。更新時刻は、更新者ごとの更新の前後を判断するための情報に付加する形で同期情報に含めることができ、或いは、更新者ごとの更新の前後を判断するための情報として更新時刻を用いる場合には、これと共用してもよい。
【0018】
本発明の分散同期型情報システム及びデータベース同期方法では、前記同期情報が、現時点までに更新を行った情報処理装置と、情報処理装置内での更新の前後を判断するための情報との組を含む更新履歴を更に含む構成を採用できる。本発明のプログラムでは、前記同期情報が、更新を行ったコンピュータと、コンピュータ内での更新の前後を判断するための情報との組を含む更新履歴を更に含む構成を採用できる。この場合、更新履歴を参照することで、どのような経路で更新が行われたかを知ることができる。
【0019】
本発明の分散同期型情報システムでは、前記第1のデータベース同期手段は、受信した更新情報に含まれる更新履歴と、自装置が記憶する更新履歴とを比較し、受信した更新情報に含まれる更新履歴が、自装置が記憶する更新履歴を含むと判断すると、前記データベース及び対応する同期情報を更新する構成を採用できる。本発明のデータベース同期方法は、前記情報処理装置が、受信した更新情報に含まれる更新履歴と、自装置が記憶する更新履歴とを比較するステップを更に有し、前記情報処理装置は、受信した更新情報に含まれる更新履歴が、自装置が記憶する更新履歴を含むと判断すると、前記データベース及び対応する同期情報を更新する構成を採用できる。本発明のプログラムでは、前記コンピュータに、受信した更新情報に含まれる更新履歴と、自装置が記憶する更新履歴とを比較するステップを更に実行させ、前記データベース及び同期情報を更新するステップでは、更新履歴を比較するステップで、受信した更新情報に含まれる更新履歴が、自装置が記憶する更新履歴を含むと判断されると、前記データベース及び対応する同期情報を更新する構成を採用できる。受信した更新情報の同期情報に含まれる更新履歴が、自装置が記憶する同期情報の更新履歴を含む場合には、途中の更新までは同じ経路で更新されており、その後、自装置以外の情報処理装置において、新たな更新がされたことを示している。このような場合には、受信した更新情報で、データベース及び同期情報を更新しても問題はなく、受信した更新情報でデータベースを更新することにより、他の情報処理装置との間でデータベースを同期することができる。
【0020】
本発明の分散同期型情報システムは、各情報処理装置のデータベースに反映された更新について、更新者ごとに最新の更新を示す情報を記憶する更新伝播情報を参照して、前記更新履歴から、全ての情報処理装置のデータベースで反映されている更新以前の履歴を削除する履歴削除手段を更に備える構成を採用できる。本発明のデータベース同期方法は、前記情報処理装置が、各情報処理装置のデータベースに反映された更新について、更新者ごとに最新の更新を示す情報を記憶する更新伝播情報を参照して、前記更新履歴から、全ての情報処理装置のデータベースで反映されている更新以前の履歴を削除するステップを更に有する構成を採用できる。本発明のプログラムは、前記コンピュータに、各コンピュータのデータベースに反映された更新について、更新者ごとに最新の更新を示す情報を記憶する更新伝播情報を参照して、前記更新履歴から、全てのコンピュータのデータベースで反映されている更新以前の履歴を削除するステップを更に実行させる構成を採用できる。各情報処理装置は、更新伝播情報により、各情報処理装置について、各情報処理装置内のデータベースでどの時点の更新までの更新が行われたかを更新者ごとに管理する。この更新伝播情報を調べることにより、更新者ごとに、最低限、どの時点までの更新が全ての情報処理装置内のデータベースでされたかを特定することができる。例えば、更新の前後を判断するための情報としてイベント番号を用いる場合、ある更新者について、各情報処理装置での、その更新者の最新の更新を示す情報のうちで最も古い更新を示す情報(イベント番号の最小値)がイベント番号「8」であれば、イベント番号「8」までの更新は、全ての情報処理装置内のデータベースでされていると特定できる。この場合には、その更新者によるイベント番号「8」以前の更新履歴は、既に全ての情報処理装置内のデータベースで更新されているので不要であると判定できる。このような不要な更新履歴を削除することにより、更新回数の増加に伴って更新履歴が増大することを避けることができる。
【0021】
本発明の分散同期型情報システムは、自装置内で前記データベースを更新すると、ネットワーク接続中の他の情報処理装置に、更新データと、該更新データに対応する同期情報とを送信する更新伝播手段と、他の情報処理装置の更新伝播手段によって送信された更新データ及び同期情報を受信し、前記データベース及び同期情報を更新する第2のデータベース同期手段とを更に備える構成を採用できる。本発明のデータベース同期方法は、前記情報処理装置が、自装置内で前記データベースを更新すると、ネットワーク接続中の他の情報処理装置に、更新データと、該更新データに対応する同期情報とを送信するステップと、前記情報処理装置が、前記更新データ及び該更新データに対応する同期情報を送信するステップで送信された更新データ及び同期情報を受信し、前記データベース及び同期情報を更新するステップとを更に有する構成を採用できる。本発明のプログラムは、前記コンピュータに、自装置内で前記データベースを更新すると、ネットワーク接続中の他のコンピュータに、更新データと、該更新データに対応する同期情報とを送信するステップと、前記更新データ及び該更新データに対応する同期情報を送信するステップで送信された更新データ及び該更新データに対応する同期情報を受信し、前記データベース及び同期情報を更新するステップとを更に実行させる構成を採用できる。この場合、ある情報処理装置で行われたデータベースの更新が、ネットワーク接続中の他の情報処理装置に反映されることで、ネットワーク接続中の情報処理装置間で、データベースを同期させることができる。
【0022】
本発明の分散同期型情報システムでは、他の情報処理装置から更新情報送信要求を受信すると、自装置が記憶する同期情報を参照して、受信した更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新を検索し、該検索により抽出された更新の更新データと、該更新データに対応する同期情報とを含む更新情報を、前記更新情報送信要求を送信した情報処理装置に向けて送信する更新情報送信手段を更に備える構成を採用できる。本発明のデータベース同期方法は、前記情報処理装置が、他の情報処理装置から更新情報送信要求を受信すると、自装置が記憶する同期情報を参照して、受信した更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新を検索するステップと、前記情報処理装置が、前記検索により抽出された更新の更新データと、該更新データに対応する同期情報とを含む更新情報を、前記更新情報送信要求を送信した情報処理装置に向けて送信するステップとを更に有する構成を採用できる。本発明のプログラムは、前記コンピュータに、他のコンピュータから更新情報送信要求を受信すると、自装置が記憶する同期情報を参照して、受信した更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新を検索するステップと、前記検索により抽出された更新の更新データと、該更新データに対応する同期情報とを含む更新情報を、前記更新情報送信要求を送信したコンピュータに向けて送信するステップとを更に実行させる構成を採用できる。更新情報送信要求を受信した側の情報処理装置は、自装置内の同期情報を参照することで、受信した更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新、つまり、更新情報送信要求を送信した側のマシンでされておらず、更新情報送信要求を受信した側のマシンでされている更新を抽出できる。このように抽出した更新データを含む更新情報を、更新情報送信要求を送信した側の情報処理装置に送信することで、少ないデータ量で、データベースを同期させることができる。また、ログ情報に比して情報量が少ない同期情報を検索することで更新情報の抽出するため、ログ情報を用いる場合に比して、検索を高速に行うことができる。
【0023】
本発明の分散同期型情報システムでは、ネットワークに再接続された情報処理装置が、ネットワークに接続されている他の情報処理装置のうちの1つから更新情報送信要求を受信すると、該再接続された情報処理装置の前記更新情報送信手段は、前記更新情報をネットワークに接続された他の情報処理装置に向けてマルチキャスト送信する構成を採用できる。本発明のデータベース同期方法は、ネットワークに再接続された情報処理装置が、ネットワークに接続されている他の情報処理装置のうちの1つから更新情報送信要求を受信すると、前記更新情報を、ネットワークに接続された他の情報処理装置に向けてマルチキャスト送信するステップを更に有する構成を採用できる。本発明のプログラムは、前記コンピュータに、前記コンピュータがネットワークに再接続した後に、ネットワークに接続された他のコンピュータのうちの1つから更新情報送信要求を受信すると、前記更新情報を、ネットワークに接続された他のコンピュータに向けてマルチキャスト送信するステップを更に実行させる構成を採用できる。この場合、ネットワーク接続中の他の情報処理装置のデータベース間の同期が取れているときには、ネットワークに接続した情報処理装置と、ネットワーク接続中の他の情報処理装置のそれぞれとの間で更新情報送信要求及び更新情報の送受信を行わなくても、各情報処理装置のデータベースを同期させることができる。従って、1対1の通信を繰り返してデータベースを同期させる場合に比して、効率よくデータベースを同期させることができる。
【発明の効果】
【0024】
本発明の分散同期型情報システム、情報処理装置、データベース同期方法、及び、プログラムでは、データベースの各データに対応して、そのデータを更新した更新者と、情報処理装置(コンピュータ)ごとの更新の前後を判断するための情報とを含む同期情報を記憶する。この同期情報を参照して、自装置内のデータベース内における各更新者の最新の更新を示す情報を調べて、これを含む更新情報送信要求を他の情報処理装置に送信し、その他の情報装置から、自装置内のデータベース内における各更新者の最新の更新よりの新しい更新により更新されたデータ及びそのデータに対応する同期情報を受信して、データベース及び同期情報を更新する。このようにすることにより、データベース内の全てのデータを比較しなくても、自装置のデータベースでされていない更新を取得することができ、データベース内の全データを送受信して比較する場合に比して、送受信されるデータ量を少なくすることができる。また、データベースの各データに対応して同期情報を記憶するため、更新回数が増えても同期情報のサイズは増大せず、更新ログを保存する場合に比して、必要な記録領域が少なくて済む。
【発明を実施するための最良の形態】
【0025】
以下、図面を参照し、本発明の実施の形態を詳細に説明する。
【0026】
第1実施形態
図1は、本発明の第1実施形態の分散同期型情報システムの構成を示している。分散同期型情報システム10は、情報の同期を行う任意の数の情報機器で構成されており、同図の例では、マシンA100、マシンB110、及び、マシンC120の3台の情報機器により構成される。マシンA100は、アプリケーション101、関係データベース102、データベース内同期情報更新手段103、再接続時同期手段(第1のデータベース同期手段)104、及び、接続中同期手段(第2のデータベース同期手段)105を備える。同図では、図示を省略しているが、マシンB110及びマシンC120は、それぞれマシンA100と同様な構成を有する。各マシンは、例えば、関係データベース102のデータを利用して処理を行う携帯型端末装置として構成される。
【0027】
マシンA100、マシンB110、及び、マシンC120は、それぞれ任意のタイミングで、図示しないネットワークから切断され、或いは、ネットワークに再接続される。マシンA100、マシンB110、及び、マシンC120は、アプリケーション101により、関係データベース102を更新する。関係データベース102の更新には、既存の行(データ)の変更、新たな行の挿入、及び、既存の行の削除が含まれる。各マシンは、関係データベース102を更新すると、その更新を他のマシンに伝播し、各マシンの関係データベース102を同期させる。
【0028】
関係データベース102の更新は、任意のタイミングで行われ、マシンがネットワークに接続されている状態、及び、マシンがネットワークから切断された状態の双方で行われる。接続中同期手段105は、更新伝播手段108を有し、マシンがネットワークに接続された状態で、関係データベース102で行われた更新を、ネットワーク接続中の他のマシンに伝播し、各マシンの関係データベース102の記憶内容を同期させる。再接続時同期手段104は、更新情報送信要求手段106と、更新情報送信手段107とを有し、マシンがネットワークに切断された状態からネットワークに再接続した際に、再接続したマシン及びネットワーク接続中の他のマシンで行われた更新をそれぞれ伝播し、関係データベース102の記憶内容を同期させる。
【0029】
図2は、関係データベース102のデータ構造の具体例を示している。関係データベース102は、通常のデータ(「主キー」、「データ」)に加え、各データに対応して付加された同期情報を記憶する。同図では、点線で囲んだ部分201が、同期情報に相当する。付加される同期情報には、データ(行)を更新した更新者、及び、更新の前後関係を判断するための情報が含まれる。また、削除フラグ、及び、更新時刻が含まれる。データベース内同期情報更新手段103(図1)は、アプリケーション101が関係データベース102を更新すると、更新されたデータ(行)に対応した同期情報を更新する。
【0030】
同期情報の「更新の前後を判断するための情報」としては、例えば、更新が行われた時刻、或いは、更新処理が起こるたびに各マシンで順番に振られた番号(イベント番号)を用いることができる。更新の前後を判断する情報としては、イベント番号を用いることが望ましい。これは、更新の前後を判断するための情報として更新時刻を用いると、システムの時刻が変更されることで前後関係が狂う可能性があるためである。図2の例では、更新の前後を判断するための情報として、イベント番号を用いている。
【0031】
更新者及びイベント番号について説明する。更新者は、データ更新を行ったマシンを示す。イベント番号は、各マシンにおける更新の順序を示している。例えば、マシンA100で、関係データベース102が初めて更新される場合には、その更新に対して、イベント番号「1」が割り当てられる。その後、マシンA100で、関係データベース102が更新される場合には、イベント番号「2」が割り当てられる。このイベント番号は、マシンごとに管理され、他のマシンにおける更新とは無関係に、各マシン内で順次に割り当てられる。例えば、マシンA100でイベント番号「2」に対応する更新が行われた後に、マシンB110で関係データベース102が更新され、その後、更にマシンA100で関係データベース102が更新される場合には、その更新には、イベント番号「3」が割り当てられる。
【0032】
削除フラグは、その行が削除されたか否かを示す。アプリケーション101は、データを削除する際には、実際にはその行を削除せずに削除フラグを「Y」に変更する。削除フラグが「Y」に設定された行は、関係データベース102から削除されたものとして取り扱われる。このように、実際には行を削除せずに、削除フラグを用いて削除されたものとして取り扱うのは、再接続時同期手段104による同期において、何れかのマシンの関係データベース102にある行が存在し、他のマシンの関係データベース102にその行が存在しない場合に、その行がネットワークから切断している間に削除されたものであるのか、或いは、他のマシンにおいて追加されたかを区別する必要があるためである。
【0033】
ここで、あるマシンがネットワークから切断されている間に、その切断中のマシンと、ネットワーク接続中のマシンとが、それぞれの関係データベース102の同じ行に対して更新を行った場合について考える。この場合、切断中のマシンがネットワークに再接続し、関係データベース102を同期しようとすると、同じ行が別々に更新されたことにより、その行について、矛盾が生じることになる。この矛盾の解決方法としては、ユーザにどちらを優先するかを選択させる方法、特定のマシンを優先する方法、更新時間が新しい方を優先する方法などが考えられる。本実施形態では、同期情報に、更新時刻を含め、同一行に対して2つのマシンで更新があったときは、更新時刻が新しいものを優先する。
【0034】
同期情報は、図2に示したように、関係データベース102内のデータと同一行に含めることができる他、図3に示すように、データ部分と分離して、別のテーブルで管理することもできる。図3では、関係データベース102が、アプリケーション101が使用するデータを含む表301と、同期情報部分(図2の201)を含む表302とに分離されている。このように分離する場合、表301の行と、表302の行とは、各行に一意のキー、例えば主キーを用いて対応させればよい。データと同期情報とを分離する場合には、もともと関係データベースが有していたデータの表の構成を変更する必要がないため、既存の関係データベースに、同期情報の表を追加することで、分散型情報同期システムを構築できる。
【0035】
図4は、データベース内同期情報更新手段103の動作手順を示している。アプリケーション101は、SQLなどを用いて、関係データベース102を更新する(ステップS401)。この関係データベース102の更新において、新たに行を挿入(追加)する際には、ネットワークから切断されたマシンにおいて、新たに挿入された行の主キーと重複しないようにする。例えばマシン名を主キーに含め、或いは、新たに挿入する主キーとして利用できる値の範囲をマシンごとに設定しておけばよい。
【0036】
データベース内同期情報更新手段103は、関係データベース102が更新されると、更新内容が、行の挿入、行の書き換え、又は、行の削除の何れであるかを判断する(ステップS402)。更新の内容が行の書き換えであるときには、同期情報(図2の201、図3の302)の更新者、イベント番号、及び、更新時刻を更新する(ステップS406)。例えば、マシンA100で、アプリケーション101が関係データベース102の行を書き換えた場合には、マシンA内のデータベース内同期情報更新手段103は、同期情報の更新者を、「マシンA」とする。イベント番号については、マシンA内で既に割り当てた最大イベント番号を記憶しておき、その値に1を加えた値とする。また、更新時刻には、現在時刻を設定する。ここで、各マシンが持つ時刻情報は、何らかの手段で同期が取れていると仮定する。
【0037】
更新内容が行の挿入の場合、同期情報が、図3に示すようにデータと分離されているときには、同期情報の表302に新たに行を挿入する(ステップS403)。その際、例えば、挿入されたデータの表301の行の主キーと同じキーを、同期情報の主キーとして設定し、挿入されたデータの行との対応をとる。その後、ステップS406で、同期情報(図2の201、図3の302)の更新者、イベント番号、及び、更新時刻を更新する。更新内容が行の削除の場合、同期情報が図3に示すようにデータと分離されているときには、データの表301から該当する行を削除する(ステップS404)。同期情報(図2の201、図3の302)については、同期情報自体は削除せずに、削除フラグを「Y」にする(ステップS405)。その後、ステップS406へ進み、同期情報を更新する。
【0038】
図5は、接続中同期手段105の動作手順を示している。データベース内同期情報更新手段103が、同期情報を更新すると、接続中同期手段105の更新伝播手段108は、更新されたデータを、「主キー」等を利用して検索し、伝播すべき関係データベース102上のデータ、及び、同期情報を取得する(ステップS501)。その後、更新伝播手段108は、ステップS501で取得したデータを、伝播に適した形にエンコードする(ステップS502)。このエンコードには、例えば、XMLなどの形式を用いることができる。
【0039】
更新伝播手段108は、現在ネットワークに接続中のマシンに対して、ステップS502でエンコードしたデータを送信する(ステップS503)。ステップS503では、関係データベース102が更新されたマシンは、ネットワーク接続中の他のマシンとの間で1対1の通信を行い、エンコードしたデータを送信する。或いは、マルチキャストを用い、ネットワーク接続中の全てのマシンに向けて、エンコードされたデータを送信する。ネットワーク接続中のマシンの接続中同期手段105は、他のマシンからエンコードされたデータを受信すると、受信データをデコードし、その内容に従って、自身のマシン内の関係データベース102を更新する(ステップS504)。このような動作により、ネットワーク接続中の各マシンの関係データベース102が同期される。
【0040】
図6は、再接続時同期手段104の動作手順を示している。ネットワークに新たに接続したマシンがあると、再接続時同期手段104は、ネットワーク内に、新たに通信可能になったマシンを発見する(ステップS601)。ステップS601では、新たにネットワークに接続(再接続)したマシンの再接続時同期手段104は、既にネットワークに接続していた各マシンを、新たに通信可能になったマシンとして発見する。一方、既にネットワークに接続していたマシンの再接続時同期手段104は、新たにネットワークに接続したマシンを、新たに通信可能になったマシンとして発見する。新たに通信可能になったマシンの発見は、例えばUPnPなどが持つ機能を利用することで実現できる。
【0041】
再接続時同期手段104の更新情報送信要求手段106は、ステップS601で発見した各マシンに対し、自らを「更新情報受信側マシン」、発見したマシンを「更新情報送信側マシン」として、更新情報の送信を要求する。この要求を受けた更新情報送信側マシンの更新情報送信手段107は、更新情報受信側マシンでされていない関係データベース102の更新を含む更新情報を、更新情報受信側マシンに送信する。更新情報送信側マシンの再接続時同期手段104は、受信した更新情報に基づいて、関係データベース102を更新する(ステップS602)。再接続時同期手段104は、ステップS601で発見したマシンが複数あるときには、その発見した各マシンに対して、ステップS602を実行する。
【0042】
図7は、ネットワーク再接続時の関係データベース102の更新の様子を示している。ここでは、マシンA100及びマシンC120は既にネットワークに接続しており、マシンB110がネットワークに再接続した場合について考える。この場合、ネットワークに再接続したマシンB110は、図6のステップS601で、既にネットワークに接続しているマシンA100及びマシンC120を、新たに通信可能になったマシンとして発見する。一方、マシンA100及びマシンC120は、それぞれ、再接続したマシンB110を、新たに通信可能になったマシンとして発見する。
【0043】
マシンB110は、ステップS602で、自身を「更新情報受信側マシン」とし、発見したマシンA100及びマシンC120を「更新情報送信側マシン」として、マシンA100及びマシンC120に対し、それぞれ更新情報の送信を要求する。マシンA100及びマシンC120は、この要求を受け取ると、それぞれ、自装置の関係データベース102(図1)でされており、マシンB110の関係データベース102でされていない更新の情報をマシンB110に送信する。マシンB110は、マシンA100及びマシンC120から受信した情報に基づいて、関係データベース102を更新する。この更新により、マシンB110がネットワークから切断している間にマシンA100又はマシンC120で行われた更新が、マシンB110の関係データベース102に反映される。
【0044】
一方、マシンA100及びマシンC120は、それぞれ、ステップS602で、自身を「更新情報受信側マシン」とし、発見したマシンB110を「更新情報送信側マシン」として、マシンB110に対して更新情報の送信を要求する。マシンB110は、自装置の関係データベース102ではされており、マシンA100及びマシンC120ではされていない更新を含む更新情報を、マシンA100及びマシンC120にそれぞれ送信する。マシンA100及びマシンC120は、それぞれ、マシンB110から受信した情報に基づいて、関係データベース102を更新する。この更新により、マシンB110がネットワークから切断している間にマシンB110で行われた更新が、マシンA100及びマシンC120の関係データベース102に反映される。
【0045】
図8及び図9は、それぞれ、図6のステップS602のネットワーク再接続時の更新処理の詳細な手順を示すもので、図8は、更新情報受信側マシンの動作手順を示し、図9は、更新情報送信側マシンの動作手順を示している。更新情報受信側マシンの再接続時同期手段104の更新情報送信要求手段106は、同期情報(図2又は図3)を参照し、各更新者について、イベント番号が最大である行を検索して(ステップS801)、各更新者の最大のイベント番号を取得する。イベント番号は、更新者ごとの更新の順序を示しており、ステップS801の検索は、「更新者ごとに最も近い更新は何か」を検索することに等しい。
【0046】
ステップS801の検索は、関係データベース102のインデックス機能などを用いることで、表のサイズに依存しない時間で高速に行うことが可能である。また、各更新者について、最大のイベント番号を保持するテーブルを用意しておき、データベース更新の際に、データベース内同期情報更新手段103によって、そのテーブルを更新することで、同期情報の検索を省略することも可能である。更新情報送信要求手段106は、各更新者について、イベント番号が最大の行を検索すると、マシンごとの最大イベント番号の情報を含む更新情報送信要求を、更新情報送信側マシンに送信する(ステップS802)。
【0047】
図10は、ネットワーク再接続時の更新処理において、2つのマシン間でやり取りされる情報の具体例を示している。マシンB110が更新情報送信側マシンである場合、マシンB110の関係データベース102が記憶するテーブル1011から、更新者「マシンA」について、最大イベント番号を検索すると、イベント番号「11」が得られる。同様に、更新者「マシンB」及び「マシンC」について、最大イベント番号を検索すると、マシンBについてはイベント番号「8」、マシンCについてはイベント番号「5」が得られる。マシンB110の更新情報送信要求手段106は、「マシンA、最大イベント番号11」、「マシンB、最大イベント番号8」、「マシンC、最大イベント番号5」を含む更新情報送信要求1020を、更新情報送信側マシンであるマシンA100に送信し、マシンAに、更新者ごとの最大イベント番号を通知する。
【0048】
更新情報送信側マシンでは、更新情報受信側マシンから、更新情報送信要求を受信して、各更新者についての最大イベント番号の通知を受ける(図9のステップS901)。更新情報送信手段107は、自装置の関係データベース102のテーブル1001を検索し、各更新者について、イベント番号が、更新情報受信側マシンから通知された最大イベント番号よりも大きなイベント番号の行を抽出する(ステップS902)。その後、抽出した行をエンコードし、これを更新情報(差分情報)として、更新情報受信側マシンに送信する(ステップS903)。ステップS902で、複数の行が抽出された場合には、抽出された各行を、更新情報受信側マシンに送信する。
【0049】
図10の例では、マシンA100の関係データベース102のテーブル1001を検索し、マシンB110から通知された各更新者の最大イベント番号を超えるイベント番号の行を抽出すると、主キー「3」の行(更新者「マシンC」、イベント番号「6」)が抽出される。この行は、最初にマシンC120において更新され、その後、マシンA100に伝播されて、マシンA100の関係データベース102においても更新された行である。このように、ステップS902では、更新情報送信側マシン(マシンA)とは異なるマシンによって更新された行が抽出されることがある。マシンA100の再接続時同期手段104は、抽出した主キー「3」の行を、更新情報1021としてマシンBに送信する。
【0050】
図8に戻り、更新情報受信側マシンの再接続時同期手段104は、更新情報送信側マシンから送信された更新情報を取得する(ステップS803)。再接続時同期手段104は、受信した更新情報をデコードし、更新情報送信側マシンにおいて、更新情報受信側マシンにおける最大イベント番号よりも大きなイベント番号の行として抽出された行に対応する行が、自身の関係データベース102に存在するか否かを判断する(ステップS804)。対応する行が存在するか否かは、例えば主キーを用いて判断する。存在しない場合には、取得した行を、同期情報を含め関係データベース102に挿入する(ステップS808)。
【0051】
対応する行が存在する場合、取得した行の「更新時刻」と、関係データベース102の対応する行の「更新時刻」とを比較し、取得した行の「更新時刻」が、関係データベース102の「更新時刻」よりも時間的に後であるか否かを判断する(ステップS805)。取得した行の「更新時刻」が時間的に前であれば、更新時刻が新しい方を優先して、取得した行を破棄する(ステップS809)。
【0052】
取得した行の「更新時刻」が時間的に後であれば、再接続時同期手段104は、更新情報が行の削除を示すか否かを判断する(ステップS806)。更新情報が削除を示す場合には、対応する行の削除フラグを「Y」にする(ステップS807)。このとき、同期情報が図3に示すように、データと分離されているときには、データ側の表から、対応する行を削除する。行の削除を示していないときには、取得した行の内容で、関係データベース102の対応する行を更新する(ステップS810)。
【0053】
図10の例では、マシンB110の関係データベース102が記憶するテーブル1011には、マシンA100から送信された更新情報1021(主キー「3」の行)に対応する行が存在する。これら行の更新時刻を比較すると、マシンA100から受信した行の方が、新しい。このため、マシンB110は、マシンA100から受信した更新情報1021に従って、主キー「3」のデータを、「データ11」から「データ17」に更新する。また、この行に対応する同期情報を、更新情報1021の同期情報で上書きする。このような動作により、マシンB110がネットワークから切断されている間に、ネットワーク接続中のマシンで行われた更新の内容が、マシンB110の関係データベース102に反映される。
【0054】
再接続時同期手段104は、ステップS803で、複数の行を含む更新情報を取得した場合には、その含まれる各行について、ステップS804〜S810の処理を実行する。その場合、処理の順序は、更新者とは無関係にイベント番号同士を比較し、イベント番号が小さい順に行うことが望ましい。これは、イベント番号が大きな行について更新を行っている間に障害が発生した場合、イベント番号が小さな行を再取得することができなくなることも考えられるからである。
【0055】
図10の例では、上記した、更新情報受信側マシンをマシンB110とし、更新情報送信側マシンをマシンA100としたネットワーク再接続時の同期に加えて、更新情報受信側マシンをマシンA100とし、更新情報送信側マシンをマシンB110としたネットワーク再接続時の同期も行われる。マシンA100を更新情報受信側マシンとしたネットワーク再接続時の同期では、マシンA100は、関係データベース102のテーブル1001を検索し、各更新者について最大イベント番号(「マシンA、最大イベント番号11」、「マシンB、最大イベント番号7」、「マシンC、最大イベント番号6」)を含む更新情報送信要求1030をマシンB110に送信する。
【0056】
マシンB110は、関係データベース102を参照し、更新者ごとに、マシンA100から通知された最大イベント番号を超える行を抽出して、これをマシンA100に送信する。図10では、マシンB110は、主キー「1」の行(更新者「マシンB」、イベント番号「11」)を、マシンAから通知された最大イベント番号を超える行として抽出する。この行は、マシンB110がネットワークから切断されている間に、マシンB110のアプリケーション101によって更新された行である。マシンB110は、抽出した主キー「1」の行をエンコードして、更新情報1031としてマシンA100に送信する。
【0057】
マシンA100は、更新情報1031を受信すると、受信した更新情報1031に従って、関係データベース102を更新する。より詳細には、主キー「1」のデータを、「データ5」から「データ9」に更新する。また、この行に対応する同期情報を、受信した更新情報1031の同期情報で上書きする。これにより、ネットワーク切断中にマシンB110で行われた更新の内容が、マシンA100の関係データベース102に反映される。以上のように、ネットワーク上に新たに通信可能になったマシンが発見されたとき、複数のマシン間で、お互いが知らない更新情報の授受を行うことで、ネットワークに新たに接続(再接続した)したマシンについても、既にネットワークに接続しているマシンについても、同様な手順で、関係データベース102の内容を同期させることができる。
【0058】
本実施形態では、関係データベース102の各行(各データ)に対応して、データを更新した更新者と、更新者ごとの更新の順序を判断するための情報とを含む同期情報を付加する。各マシンは、ネットワーク接続中は、接続中同期手段105により、関係データベース102の内容を同期する。ネットワーク再接続時は、再接続時同期手段104により、新たに通信可能になったマシンに対し、更新者ごとの最新の更新を示す情報を通知し、更新情報の送信を要求し、相手側から、通知した最新の更新以後の更新の内容を受信して、関係データベース102を更新する。このようにすることで、マシン間で受け渡される情報は、そのマシンが実際に知らない情報のみとなり、冗長な情報の授受は行われない。従って、例えばデータベース内の全ての情報を授受する場合に比して、効率よく関係データベース102を同期させることができる。また、従来技術がログを用いているのとは異なり、行に同期情報を対応付けることで、同期の際に用いる情報の容量を少なくし、かつ、検索のコストを抑制することができる。
【0059】
ここで、同期情報として「更新時刻」のみを付加し、各マシンが、「以前、何れかのマシンと同期を行った時刻」を記憶する場合について考える。この場合、「以前、何れかのマシンと同期を行った時刻」以後に更新された情報を要求することで、本実施形態と同様に差分情報のみを取得できるようにも考えられる。しかし、例えば、マシンCがネットワークから切断された状態で、マシンCで「1:00」に更新が起こり、その後、マシンAとマシンBとが「2:00」に同期を行った後にマシンCがネットワークに再接続し、マシンAとマシンCとが同期を行う場合には、マシンAは「2:00」に同期を行っているため、「1:00」に行われた更新が、マシンCからマシンAに送信されないという問題が起こる。本実施形態では、上記手順に従って、更新情報の送信を要求するため、マシン間で、確実に更新情報が伝達されることが保証される。
【0060】
第2実施形態
図11は、本発明の第2実施形態の分散同期型情報システムにおけるネットワーク接続中の同期の動作手順を示している。本実施形態の分散同期型情報システムは、図1に示す分散同期型情報システムと同様な構成を有しており、接続中同期手段105(図1)が、図5に示す手順に代えて、図11に示す手順で、ネットワーク接続中のマシンとの間で関係データベース102を同期する点で、第1実施形態と相違する。本実施形態では、接続中同期手段105は、再接続時同期手段104を利用して、関係データベース102の同期を取る。
【0061】
アプリケーション101が、関係データベース102を更新すると、更新があったマシンの接続中同期手段105は、ネットワーク接続中の各マシンに対し、データ更新があった旨を通知する(ステップS1101)。その際、接続中同期手段105は、データ更新を行ったマシン名を、データ更新があった旨の通知に含める。この通知を受け取った他のマシンの接続中同期手段105は、再接続時同期手段104の更新情報送信要求手段106により、自装置を「更新情報受信側マシン」、更新があったマシンを「更新情報送信側マシン」として、更新情報の送信を要求する(ステップS1102)。更新情報の送信要求を受け取ったマシンは、更新情報送信手段107により、その要求に応答して、更新情報を更新情報受信側マシンに送信する(ステップS1103)。更新情報受信側マシンは、受信した更新情報に従って、関係データベース102を更新する。
【0062】
ステップS1102及びステップS1103の更新情報送信要求及び更新情報の送信は、図8及び図9に示す、ネットワーク再接続時の同期と同様な手順に従って行われる。このように、本実施形態では、ネットワーク接続中の同期とネットワーク再接続時の同期とを、同様な手順で行うことにより、システム構成を単純化できる。
【0063】
第3実施形態
図12は、本発明の第3実施形態の分散同期型情報システムにおけるネットワーク再接続時の同期の動作手順を示している。本実施形態の分散同期型情報システムは、図1に示す分散同期型情報システムと同様な構成を有しており、再接続時同期手段104(図1)が、図6に示す手順に代えて、図12に示す手順で、ネットワーク接続中のマシンとの間で関係データベース102を同期する点で、第1実施形態と相違する。
【0064】
ネットワークに再接続した(新たに接続した)マシンの再接続時同期手段104は、既にネットワークに接続しているマシンの中から任意の1つを選び、そのマシンを「更新情報送信側マシン」、自身を「更新情報受信側マシン」として更新情報送信要求を送信し、図8及び図9に示す手順により、関係データベース102を更新する(ステップS1201)。既にネットワーク接続しているマシン間で、データの同期が取られていると仮定すると、ステップS1201により、ネットワークに再接続したマシンは、ネットワーク接続中の他のマシンでされ、自装置でされていない更新を、自装置の関係データベース102に反映できる。
【0065】
ネットワークに再接続したマシンの再接続時同期手段104は、自装置の関係データベース102を更新すると、ネットワーク接続中のマシンから任意の1つを選び、そのマシンに対し、各更新者についての最大イベント番号を送信するように指示する(ステップS1202)。この指示を受けたマシンの更新情報送信要求手段106は、そのマシン内の同期情報(関係データベース102)を検索して、更新者ごとの最大イベント番号を取得し、これを含む更新情報送信要求を、ネットワークに再接続したマシンに送信する。
【0066】
ネットワークに再接続したマシンの更新情報送信手段107は、更新者ごとの最大イベント番号を受け取り(ステップS1203)、関係データベース102を検索して、受け取った更新者ごとの最大イベント番号を超えるイベント番号の行を抽出する(ステップS1204)。このステップは、図9のステップS902に相当する。その後、抽出した行をエンコードし、これを更新情報として、ネットワーク接続中の全てのマシンに対してマルチキャスト送信する(ステップS1205)。ネットワーク接続中の各マシンは、更新情報を受信し、図8のステップS803〜S810と同様な手順により、関係データベース102を更新する。この更新により、既にネットワークに接続していた各マシンは、ネットワークに再接続したマシンでされ、自装置でされていない更新を、自装置の関係データベース102に反映できる。
【0067】
第1実施形態では、ネットワークに再接続したマシンと、ネットワーク接続中の各マシンとの間で、1対1の通信を行い、各マシンの関係データベース102を更新するため、ネットワーク接続中のマシン間で、情報の同期が取れている場合には、無駄な通信が行われることになる。本実施形態では、ネットワークに再接続したマシンは、ネットワーク接続中のマシンのうちの何れかとの間で通信を行い、更新情報を受信して関係データベース102を更新する。また、ネットワーク接続中のマシンの何れかから、更新者ごとの最大イベント番号を受信し、ネットワーク接続中の各マシンに向けて、更新情報をマルチキャスト送信する。このようにすることで、通信の回数及び通信料を削減し、無駄な通信を抑制することができる。
【0068】
第4実施形態
本発明の第4実施形態の分散同期型情報システムは、図1に示す分散同期型情報システム10と同様な構成を有している。本実施形態では、同期情報(図2)に、「更新時刻」に代えて、「更新履歴」を含める。更新履歴は、更新を行った更新者、及び、その際のイベント番号の組を含み、どのマシンにおいて、いつ(どのイベント番号のときに)データが更新されたかの履歴を示している。本実施形態では、このような更新履歴を用いて、ネットワークからの切断時に、複数のマシンで同じ行が更新された際の矛盾を解決する。
【0069】
図13は、更新履歴の更新の様子を示している。データベース内同期情報更新手段103は、データベースの更新時に、図4のステップS406で、更新時刻に代えて、更新履歴の更新を行う。同図において、「A3」、「B5」等は、更新を行ったマシン名、及び、その際のイベント番号を示している。図13の行1301の更新履歴は、対応する主キー「10」の行が、マシンAにおいてイベント番号「3」のときに挿入され、その後、マシンBにおいてイベント番号「5」のとき更新され、更に、マシンCにおいてイベント番号「7」のときに更新されたことを示している。マシンA及びマシンBがそれぞれ行1301を有するとき、マシンBがネットワークから切断し、主キー「10」の行を更新すると、マシンBのデータベース内同期情報更新手段103は、図13に行1302として示すように、行1301の更新履歴に、マシンBにおいてイベント番号「8」のときに更新されたことを示す「B8」を追加する。
【0070】
マシンAは、マシンBがネットワークに再接続すると、ネットワーク再接続時の同期の動作により、マシンBから、行1302を更新情報として受信する。この更新情報の更新履歴と、マシンAが持つ行1301の更新履歴とを比較すると、取得した更新情報の同期情報の更新履歴(A3、B5、C7、B8)は、マシンAが有する行の更新履歴(A3、B5、C7)を含んでいる。このことは、行1301と行1302とは、ネットワークからの切断時に、別々に更新されたわけではなく、もともと同じ情報を持っており、それがネットワークから切断されている間にマシンBによって更新されたということを意味している。このように、取得した更新情報の更新履歴が、自身の更新履歴を含んでいる場合には、更新は、図13の順序1303に示すように直線状に行われている。このような場合には、矛盾は存在せず、また、行1302のデータが、行1301のデータよりも新しいとわかるため、マシンAは、行1301を行1302で更新すればよい。
【0071】
図14は、更新履歴の更新の様子の別の例を示している。同図に示す行1401の更新履歴は、「A3、B5、C7、A5、A7」であり、行1402の更新履歴は、「A3、B5、C7、B8」となっている。両者の更新履歴を比較すると、図14に順序1403として示すように、「C7」までの更新は同じであり、その後の更新が相違する。これは、ネットワーク切断後に、ネットワーク接続中のマシンとネットワークから切断したマシンとにおいて、又は、共にネットワークから切断したマシンにおいて、別々に更新が行われたことを意味している。この場合、マシンA及びマシンBがネットワークに再接続した際には、何らかの矛盾解決が必要になる。矛盾解決の方法としては、特定のマシンを優先する、或いは、ユーザに選択させるなどの方法がある
【0072】
矛盾解決により、何れかの行を優先した場合には、マシン内でその行を新たに更新したものとして取り扱う。例えば、マシンCが行1402を有し、行1401と行1402について、「B8」の更新を「A5、A7」の更新に優先させる、つまり、行1402を優先する場合には、行1402の「データ9」はそのままで、更新者を「マシンC」、イベント番号を新たに割り当てた「11」として、関係データベース102を更新したものとする。その際、更新履歴に、「C11」を追加すると共に、「C11」が「A5、A7」の更新に優先してされたことを示す優先指示として、「優先:A5、A7」を付加する。このように優先指示を付加する理由は、例えばユーザにどちらかの更新を優先するかを選択させた場合に、その選択結果を保持することで、再度ユーザに選択を要求しないようにするためである。
【0073】
次に、マシンDが行1401を有しており、このマシンDがネットワークに再接続した場合について考える。この場合、マシンDは、マシンCから、行1404を更新情報として受信する。行1401の更新履歴と、行1404の更新履歴とを比較すると、先頭「A3」から「C7」までは同じである。また、行1401の更新履歴から、行1404の更新履歴との共通部分を除いた部分は「A5、A7」であり、行1404の更新履歴には、「優先A5、A7」が含まれている。このように、更新情報受信側マシンの行の更新履歴の途中までが更新情報の更新履歴と同じであり、それ以降の部分が、更新情報の更新履歴において優先指示されているときには、取得した更新情報の更新履歴が、自身の更新履歴を含んでいるものとして取り扱う。このようにすることで、更新履歴に「A5、A7」を含む行についても、「C11」によって更新された行で更新することができる。
【0074】
図15は、ネットワーク再接続したマシンの動作手順を示している。同図に示す手順は、図8のステップS805がステップS1501に置き換わり、ステップS1502が追加されている点で、第1実施系におけるネットワークに再接続したマシンの動作手順と相違する。更新情報受信側マシンの再接続時同期手段104の更新情報送信要求手段106は、ステップS801で、更新マシンごとの最大イベント番号を検索する。その際、更新情報送信要求手段106は、同期情報201(図2)のイベント番号に加えて、更新履歴を含めて、各更新マシンについて最大のイベント番号を検索する。
【0075】
再接続時同期手段104は、ステップS804で、関係データベース102に、更新情報送信側マシンから受信した更新情報に対応する行が存在すると判断すると、更新情報の同期情報に含まれる更新履歴と、関係データベース102の対応する行の同期情報の更新履歴とを比較する(ステップS1501)。比較の結果、取得した更新履歴の更新履歴が、自身の関係データベース102の対応する行の更新履歴を含む、或いは、優先指示によって、対応する行の更新履歴を含むとみなせる場合には、矛盾は起きていないので、ステップS806へ進んで、関係データベース102の対応する行を、取得した更新履歴の行で更新する。
【0076】
例えば、更新情報受信側マシンが図13に示す行1301を有し、更新情報として行1302を受信した場合には、ステップS1501では、行1301の更新履歴は、行1302の更新履歴に含まれると判断される。この場合、更新情報を受信した更新情報受信側マシンは、ステップS806からS807へと進み、取得した行1302で、関係データベース102を更新する。また、更新情報受信側マシンが図14に示す行1401を有し、更新情報として行1404を受信した場合には、行1401の更新履歴は、行1404の更新履歴には含まれないものの、更新履歴の共通部分「A3、B5、C7」の後ろが、行1404の更新履歴の優先指示で指定される「A5、A7」となっているため、ステップS1501では、行1401の更新履歴は、行1402の更新履歴に含まれるものとして取り扱われる。このため、関係データベース102の行1401は、更新情報の行1404により更新される。
【0077】
取得した更新情報の更新履歴と関係データベース102の対応する行の更新履歴とが、包含関係にないとき、又は、更新履歴の優先指示を参照しても更新履歴の包含関係がないときには、同じ行が複数のマシンで別々に更新されており、矛盾が発生している。この場合には、矛盾を解決するように、行を更新する(ステップS1502)。ステップS1502では、例えばユーザに矛盾する行のうちの何れを優先するかを選択させ、選択された行で、関係データベース102を更新する。或いは、更新時刻が遅い方を優先して、その行で更新しても良い。
【0078】
ステップS1502の更新では、優先する側の行について、更新者を自装置、イベント番号を新たに割り当てたイベント番号として、更新履歴に、今回更新分の情報を追加する。その際、選択されなかった行の更新履歴のうちで、選択された行の更新履歴との共通部分を除く部分を、優先指示として、更新された行の更新履歴に含める。例えば、図14の行1401と行1402について、行1402を優先させる場合には、行1401の更新履歴のうちで、行1402の更新履歴との共通部分を除く「A5、A7」を、行1404に示すように、今回更新分の履歴「C11」の優先指示として付加する。更新情報受信側マシンは、ステップS1502で関係データベース102を更新すると、接続中同期手段105により、ネットワーク接続中の各マシンに、更新した行を送信する。
【0079】
本実施形態では、同期情報に、どのような順序(経路)で更新が行われたかを示す更新履歴を含める。この更新情報を用い、ネットワーク再接続時の同期の動作において取得した更新情報の更新履歴が、自身の更新履歴を含むか否かを調べることにより、矛盾が発生しているか否か、つまり、受信した更新情報と、自装置の関係データベース102の対応する行とが、ネットワーク切断後に同時に更新されたものであるか、或いは、一方でのみ更新されたものであるかを、判別できる。また、矛盾を解決した際には、その結果を更新履歴に含めることで、ネットワーク接続中の他のマシンに矛盾解決の際にどちらの更新を優先したかを伝播することができ、再度、矛盾解決の判断を行うことを避けることができる。
【0080】
ここで、第1又は第2実施形態の動作と、本実施形態の動作とを組み合わせる場合には、図6を参照して説明したように、各マシンが新たに通信可能になったマシンを発見すると、おのおのが「更新情報受信側マシン」として同期を行う。従って、複数のマシンが既にネットワークに接続している状態で、あるマシンがネットワークイン再接続すると、更新情報の受信が同時に全マシンで行われ、全てのマシンで矛盾解決の動作が必要となる可能性がある。これに対し、第3実施形態の動作と本実施形態の動作とを組み合わせる場合には、第3実施形態では、更新情報をネットワーク接続中のマシンに対してマルチキャスト送信するため、矛盾解決の際に優先した更新の情報をネットワーク接続中の各マシンに伝播することができ、矛盾解決の動作は1回で済む。従って、本実施形態の動作は、第3実施形態の動作と組み合わせることが好ましい。
【0081】
第5実施形態
本発明の第5実施形態の分散同期型情報システムは、図1に示す分散同期型情報システムと同様な構成に加え、履歴削除手段を有している。第4実施形態では、同期情報に更新履歴を含めたが、この更新履歴は、更新を行うたびに増大する。本実施形態では、各マシンにおいて、どの時点までの更新が伝播したかを管理し、更新履歴の不要部分を削除する。また、本実施形態では、各マシンにおいて、どの時点までの更新が伝播したかを管理して、同期情報の削除フラグが「Y」の行を削除する。
【0082】
本実施形態では、各マシンは、各マシンにおいてどの時点の更新までが伝播したかを示す情報として、各マシンが持つ更新者ごとの最大イベント番号の情報を記憶する。図16は、各マシンが記憶する、各マシンが持つ更新者ごとの最大イベント番号の具体例を示している。例えば、マシンAが同図に示す表1601を記憶している場合には、マシンAは、自装置の関係データベース102については、更新者「マシンA」はイベント番号「20」まで、更新者「マシンB」はイベント番号「11」まで、更新者「マシンC」はイベント番号「15」の更新までが行われていることを認識(把握)している。また、マシンAは、マシンBの関係データベース102では、更新者「マシンA」はイベント番号「15」まで、更新者「マシンB」はイベント番号「11」まで、更新者「マシンC」はイベント番号「7」の更新までが行われていることを認識している。
【0083】
各マシンが記憶する各マシンが持つ更新者ごとの最大イベント番号の表の作成について説明する。システム運用開始時の表1601における最大イベント番号の初期値は0である。各マシンは、自装置の関係データベース102を更新すると、自装置が記憶する各マシンが持つ更新者ごとの最大イベント番号の表1601の「自装置が持つ最大イベント番号」の行の更新者「自装置」の値を、データベース内同期情報更新手段103により新たに割り当てられたイベント番号に書き換える。例えば、マシンA内で、関係データベース102が更新された場合には、マシンAは、自装置が記憶する最大イベント番号の表1601の「マシンAが持つ最大イベント番号」の行の更新者「マシンA」の値を、新たに割り当てられたイベント番号に書き換える。
【0084】
マシンAでデータが更新された場合、その更新は、接続中同期手段105により、ネットワーク接続中のマシンに伝播される。各マシンは、他のマシンにおける更新が伝播されると、自装置が記憶する最大イベント番号の表1601の「自装置が持つ最大イベント番号」の行の更新者「マシンA」の値を、更新内容と共に伝播されたイベント番号に書き換える。その際、ネットワーク接続中のマシンを判断し、「ネットワーク接続中の各マシンがもつ最大イベント番号」の行の更新者「マシンA」の値を、伝播されたイベント番号に書き換える。これは、ネットワーク接続中の各マシンに、マシンAでの更新が伝播されるためである。ネットワーク接続中のマシンは、例えば、データを送信した際に応答があるか否かによって判断することができる。或いは、死活信号を用いて、周期的に死活信号を受信できたマシンを、ネットワーク接続中のマシンと判断しても良い。
【0085】
例えば、マシンBは、マシンAから、ネットワーク接続中の同期の動作により、マシンAでの更新内容を受け取り、更新者を「マシンA」として、関係データベース102を更新する。その際、マシンBは、自装置が記憶する最大イベント番号の表1601の「マシンBが持つ最大イベント番号の行の更新者「マシンA」の値を、マシンAから伝播されたイベント番号に書き換える。また、マシンCがネットワークに接続していた場合には、マシンAにおける更新はマシンCにも伝播するため、マシンBが記憶する最大イベント番号の表1601の「マシンCが持つ最大イベント番号」の行の更新者「マシンA」の値を、マシンAから伝播されたイベント番号に書き換える。マシンCがネットワークから切断されていた場合には、マシンAにおける更新はマシンCには伝播されないため、「マシンCが持つ最大イベント番号」の値は書き換えない。
【0086】
ネットワーク再接続時の動作では、更新情報送信側マシンは、ステップS903(図9)で抽出した行をエンコードして送信する際に、記憶する各マシンの更新者ごとの最大イベント番号の表1601をエンコードして、抽出した行と共に、更新情報受信側マシンに送信する。更新情報受信側マシンは、ステップS803(図8)で更新情報を取得すると、更新情報送信側マシンから受信した各マシンが持つ最大イベント番号の表と、自装置が記憶する各マシンが持つ更新者ごとの最大イベント番号の表とを組み合わせて、記憶する最大イベント番号の表を更新する。その後、再接続時の同期の動作により、関係データベース102を更新し、その更新に伴って、最大イベント番号の表の自装置が持つ最大イベント番号の行を更新する。
【0087】
図17は、再接続時の同期の動作における、各マシンが持つ最大イベント番号の表の更新の様子を示している。例えば、マシンAが表1701を記憶し、マシンBが表1702を記憶していたとする。マシンBを更新情報受信側マシンとし、マシンAを更新情報送信側マシンとすると、再接続時の同期では、マシンBは、マシンAから表1701を取得する。マシンBは、記憶する表1702の各項目の値と、受信した表1701の各項目の値とを比較し、値が大きいほうを選択して、各マシンが持つ更新者ごとの最大イベント番号の表を表1703に更新する。例えば、表1701におけるマシンAが持つ更新者「マシンB」の最大イベント番号は「11」であり、表1702におけるマシンAが持つ更新者「マシンB」の最大イベント番号は「7」である。この場合には、「11」を選択する。
【0088】
削除フラグが「Y」に設定された行(同期情報)の削除について説明する。削除フラグは、再接続時の同期において、ネットワークから切断されたマシンにおいて行が新たに挿入されたのか、ネットワーク接続中のマシンにおいて行が削除されたのかを判別するために用いられる。従って、行を削除する更新が全てのマシンに伝播されていることが確認できれば、その行自体を削除することができる。
【0089】
各マシンが持つ更新者ごとの最大イベント番号の表1601(図16)において、更新者ごとに最小値を求めると、マシンAは「15」、マシンBは「7」、マシンCは「7」となる。これは、表1601を記憶するマシンは、各マシンで、更新者ごとに、最低限これらイベント番号までの更新がされていることを認識していることを意味する。つまり、全マシンに、更新者をマシンAとする更新はイベント番号「15」まで、更新者をマシンBとする更新はイベント番号「7」まで、更新者をマシンCとする更新はイベント番号「7」まで伝播されていると認識していることを意味する。従って、削除フラグが「Y」に設定された行のイベント番号が、その行を更新したマシンの最大イベント番号の最小値以下の値であれば、その行を削除することができる。
【0090】
各マシンは、任意のタイミングで、例えば定期的に、或いは、他のマシンとの同期時に、削除フラグが「Y」に設定された行のイベント番号と、各マシンが持つ更新者ごとの最大イベント番号の、その行を更新したマシンの最小値とを比較し、その行のイベント番号が、最大イベント番号の最小値以下であるときには、その行を削除する。図3に示すように、データと同期情報が分離されているときには、削除フラグが「Y」に設定された行に対応する同期情報を削除する。例えば、削除フラグが「Y」に設定された行の更新者がマシンCであり、イベント番号が「3」であれば、表1601における更新者「マシンC」の最大イベント番号の最小値は「7」であるため、その行を関係データベース102から削除する。
【0091】
次に、更新履歴の削除について説明する。図18は、更新履歴削除前の行と更新履歴削除後の行とを示している。更新履歴については、全てのマシンに伝播した更新に関しては、更新履歴から削除しても問題がない。例えば、マシンAが、図16に示す表1601を記憶する場合には、マシンAは、各更新者についての最大イベント番号の最小値である「A15」、「B7」、「C7」までの更新は、全マシンに伝播していると認識している。このため、更新履歴削除手段は、図18に示す行1801については、この行の更新履歴「A3、B5、C7、A20」から「A3、B5、C7」を削除する。これにより、更新履歴削除後の行1802の更新履歴は「A20」のみとなる。履歴削除手段は、任意のタイミングで、例えば定期的に、或いは、他のマシンとの同期時に、更新履歴の不要部分を削除する。
【0092】
ただし、任意の2台がデータを同期しようとした際に、それぞれのマシンにおいて更新履歴から削除した内容が異なる場合がある。これは、各マシンが記憶する、各マシンが持つ更新者ごとの最大イベント番号の表における更新者ごとの最大イベント番号の最小値が、マシンごとに異なる場合があるためである。例えば、マシンAが図17に示す表1701(図16の表1601と同じ内容)を記憶し、マシンBが表1702を記憶する場合には、マシンAが記憶する表1701では、更新者「マシンA」の最大イベント番号の最小値は「15」であり、マシンBが記憶する表1702では、更新者「マシンA」の最大イベント番号の最小値は「11」となる。これは、マシンAは、自装置が更新者となる更新についてイベント番号「15」までの更新が全マシンに伝播していると認識しており、マシンBは、更新者「マシンA」の更新については、イベント番号「11」までの更新が全マシンに伝播していると認識していることを意味する。
【0093】
図19は、マシンBにおける更新履歴の削除の様子を示している。同図に示す行1901は、図18に示す行1801と同じ主キーを有しており、「A20」の更新がされる前の状態を示している。マシンBが、各マシンが持つ更新者ごとの最大イベント番号として図17に示す表1702を記憶していた場合、更新者「マシンC」についての最大イベント番号の最小値は「6」である。従って、マシンBが、図19に示す行1901から更新履歴を削除すると、行1902に示すように、更新履歴は「C7」となる。この場合、マシンAとマシンBとが図15に示す手順で同期しようとすると、行1802(図18)の更新履歴と行1902の更新履歴とは包含関係にないため、本来は矛盾しない更新であるのに、矛盾した更新であると誤って認識することになる。
【0094】
そこで、更新情報送信側マシンにおいて、どの更新までを更新履歴から削除したかを、更新情報受信側マシンに伝達する。具体的には、更新情報送信側マシンは、更新情報受信側マシンに抽出した行をエンコードして送信する際に、自装置が記憶する「各マシンが持つ更新者ごとの最大イベント番号の表」をエンコードして送信する。更新情報受信側マシンは、更新情報送信側マシンから受信した「各マシンが持つ更新者ごとの最大イベント番号の表」、自装置が記憶する「各マシンが持つ更新者ごとの最大イベント番号の表」とのうちの値が大きいほうを選択して、「各マシンが待つ更新者ごとの最大イベント番号の表」を更新する。その後、更新された表について、更新者ごとに、最大イベント番号の最小値を求める。
【0095】
図17の例では、マシンAが記憶する表1701と、マシンBが記憶する表1702とにより、マシンBが記憶する「各マシンが持つ最大イベント番号の表」は、表1703に示すように更新される。この場合、最大イベント番号の最小値は、「A11」、「B7」、「C6」(表1702)から、「A15」、「B7」、「C7」となる。更新情報受信側マシンは、ステップS1501(図15)で、更新履歴を比較する際に、自装置の関係データベース102の更新情報に対応する行の更新履歴から、更新した各マシンが持つ最大イベント番号の表の更新者ごとの最大イベント番号の最小値を用いて、更新履歴を削除する。その上で、更新情報の更新履歴と、関係データベース102の更新情報に対応する行の更新履歴とを比較し、矛盾が発生しているか否かを調べる。
【0096】
例えば、マシンBが図19に示す行1902を記憶し、更新情報として図18に示す行1802を受信した場合には、更新された表1703を参照して、行1902の更新履歴から「C7」を削除する。このように更新履歴が削除された行1903と、更新情報の更新履歴とを比較すると、行1903の更新履歴は“空”であるので、ステップS1501では、矛盾があるとは判断されず、ステップS810へ進んでデータが更新される。更新情報受信側マシンは、ステップS810でデータを更新した場合には、その更新に対応して、「各マシンがもつ更新者ごとの最大イベント番号の表」の自装置が持つ最大イベント番号の行を更新する。例えば、マシンBが、行1903を行1802で更新した場合には、マシンBは、表1703(図17)のマシンBが持つ最大イベント番号の行の更新者「マシンA」の値を、「20」に更新する。
【0097】
本実施形態では、各マシンが、各マシンに更新者ごとにどの更新までが伝播したかを記憶し、その情報を参照して、既に全てのマシンに伝播しており、不要となった更新履歴や、削除フラグが「Y」に設定された行(同期情報)を削除する。このようにすることで、更新履歴や同期情報を記憶するために必要な記憶容量を少なくすることができ、記憶装置の記憶容量を有効に使用することができる。
【0098】
第6実施形態
図20は、本発明の第6実施形態の分散同期型情報システムの構成を示している。本実施形態では、分散同期型情報システム10aは、ネットワークを介して接続された複数のコンピュータ(同図の例では、3台のコンピュータ2001〜2003)により構成される。各コンピュータには、記録媒体2011〜2013が接続されており、各記録媒体は、コンピュータを図1に示すアプリケーション101、データベース内同期情報更新手段103、再接続時同期手段104、及び、接続中同期手段105として機能させるプログラム、及び、関係データベース102が記憶されている。各コンピュータは、プログラムを読み込んで動作することにより、第1〜第5実施形態で説明した動作により、関係データベース102を同期する。
【0099】
なお、図2では、同期情報に、更新の前後を判断する情報として「イベント番号」を含め、何れの更新を優先すべきかを判断する際に用いる情報として「更新時刻」を含めたが、更新の前後を判断するための情報として「更新時刻」を採用する場合には、更新の前後を判断するための情報と、何れの更新を優先すべきかを判断するための情報とを共用することができる。更新の前後を判断するための情報として、更新時刻を用いる場合には、上記各実施形態で説明した最大イベント番号を、直近の更新時刻と読みかえればよい。また、あるイベント番号以降のイベント番号の部分を、ある更新時刻以降の更新と読み替えればよい。
【0100】
以上、本発明をその好適な実施形態に基づいて説明したが、本発明の情報装置、分散同期型情報システム、情報同期方法、及び、プログラムは、上記実施形態例にのみ限定されるものではなく、上記実施形態の構成から種々の修正及び変更を施したものも、本発明の範囲に含まれる。
【産業上の利用可能性】
【0101】
本発明は、パーソナルコンピュータや情報家電、携帯電話、PDAといった機器において、それらが利用する情報を同期する用途に適用できる。また、ネットワークで接続されたサーバ群の間で、データベース内の情報を同期するための用途にも適用できる。
【図面の簡単な説明】
【0102】
【図1】本発明の第1実施形態の分散同期型情報システムの構成を示すブロック図。
【図2】関係データベースのデータ構造の具体例を示す図。
【図3】関係データベースのデータ構造の別の具体例を示す図。
【図4】データベース内同期情報更新手段の動作手順を示すフローチャート。
【図5】接続中同期手段の動作手順を示すフローチャート。
【図6】再接続時同期手段の動作手順を示すフローチャート。
【図7】ネットワーク再接続時の関係データベースの更新の様子を示すブロック図。
【図8】更新情報受信側マシンのネットワーク再接続時の更新処理の詳細な手順を示すフローチャート。
【図9】更新情報送信側マシンのネットワーク再接続時の更新処理の詳細な手順を示すフローチャート。
【図10】ネットワーク再接続時の更新処理において、2つのマシン間でやり取りされる情報の具体例を示す図。
【図11】本発明の第2実施形態の分散同期型情報システムにおけるネットワーク接続中の同期の動作手順を示すフローチャート。
【図12】本発明の第3実施形態の分散同期型情報システムにおけるネットワーク再接続時の同期の動作手順を示すフローチャート。
【図13】更新履歴の更新の様子を示す図。
【図14】更新履歴の更新の別の例を示す図。
【図15】ネットワーク再接続したマシンの動作手順を示すフローチャート。
【図16】各マシンが記憶する、各マシンが持つ更新者ごとの最大イベント番号の具体例を示す図。
【図17】再接続時の同期の動作における、各マシンが持つ最大イベント番号の表の更新の様子を示す図。
【図18】更新履歴削除前の行と更新履歴削除後の行とを示す図。
【図19】マシンBにおける更新履歴の削除の様子を示す図。
【図20】本発明の第6実施形態の分散同期型情報システムの構成を示すブロック図。
【図21】非特許文献1に記載の技術における情報同期の様子を示す図。
【符号の説明】
【0103】
10:分散同期型情報システム
100、110、120:情報機器
101:アプリケーション
102:関係データベース
103:データベース内同期情報更新手段
104:再接続時同期手段
105:接続中同期手段
106:更新情報送信要求手段
107:更新情報送信手段
201:同期情報
2001、2002、2003:コンピュータ
2011、2012、2013:記録媒体
【技術分野】
【0001】
本発明は、情報処理装置、分散同期型情報システム、情報同期方法、及び、プログラムに関し、更に詳しくは、データベースを有する複数の情報装置間でデータベースのデータを同期する情報処理装置、分散同期型情報システム、情報同期方法、及び、プログラムに関する。
【背景技術】
【0002】
従来、情報システムとして用いられているものには、LDAPやSun Microsystems社によるNISがある。これらの情報システムは、サーバ・クライアント方式のシステムとして構成されており、クライアントの端末を、ネットワークから切断した状態で持ち運ぶ場合には、端末側からデータベースにアクセスすることができない。端末を、ネットワークから切断した状態で使用する方法としては、サーバ上のデータベースを、端末にコピーして持ち運ぶ方法が考えられる。しかし、この場合には、ネットワークから切断された状態でもデータベースを参照することはできるものの、複数の端末でデータベースの更新が行われた場合には、データベース内のデータを複数の端末間で同期することができない。
【0003】
端末をネットワークから切断してデータ更新を行った場合には、ネットワーク再接続時に、端末間でデータベース内の全てのデータを送受信し、双方のデータを比較することで、各端末のデータベースを同期することができる。しかし、その場合には、送受信データ量が膨大になるという問題がある。このような問題を解決する従来技術としては、例えば特許文献1に記載された技術がある。特許文献1では、サーバ上のデータベースをマスターとし、クライアント上のデータベースを非マスターとする。クライアントは、ネットワークから切断された後の更新を、差分情報としてテーブルに記憶する。ネットワーク再接続時には、サーバとの間で差分情報を送受信し、マスターと非マスターとで同期を取る。
【0004】
複数の情報機器(情報処理装置)間で情報を同期する技術としては、非特許文献1に記載された技術がある。非特許文献1では、各情報機器を対等に扱い、ネットワーク接続時に、それぞれが持つ更新情報を同期する。図21は、非特許文献1に記載の技術における情報同期の様子を示している。各情報機器は、データベース2101のデータに対して、更新情報のログ2102を保持する。ログ2102には、データベース2101について、どの部分をどのような値に更新したかを示す情報に加え、その更新を行った機器のIDと、更新を行った時刻とが含まれる。
【0005】
非特許文献1では、2つの情報機器間で情報同期を行い、これを繰り返すことにより、複数の情報機器間で情報同期を行う。2つの情報機器間での情報同期では、一方の情報機器(受信側)は、自装置が持つログ2102を走査し、各機器IDについて、最も遅い更新時刻を求め、これを、他方の情報機器(送信側)に送信する。送信側機器は、ログ2102を走査し、各機器IDについて、受信側機器から通知された更新時刻以降に行われた更新を、受信側機器に渡す。これにより、送信側機器が保持していて、受信側機器が保持していない情報を、受信側機器に伝えることができる。受信側機器と送信側機器との立場を入れ替え、同様の操作を行うことにより、両者の情報を同期させることができる。
【0006】
【特許文献1】特開2001−142766号公報(図6、図7、段落0038〜0050など)
【非特許文献1】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頁
【発明の開示】
【発明が解決しようとする課題】
【0007】
特許文献1では、マスターとなるデータベースはただ一つであり、全ての同期は、マスターとの間で1対1で行う必要がある。非マスターのクライアント同士が更新の同期を行う場合について考えると、クライアントが持っている情報は、マスターとの差分のみであるため、互いが未知の情報を交換することはできず、非マスターのクライアント同士では、同期を行うことができない。例えば、家庭内の機器群やPDAなど携帯型情報機器の同期を考える場合、特許文献1では、携帯する情報機器相互間で同期を行うことができない。また、マスターとなる情報機器は、同期時には常にネットワークに接続され、電源が投入されていなければならないという問題がある。
【0008】
非特許文献1に記載の技術では、全ての更新情報をログ2102に保存する必要があり、ログ情報が膨大となるため、実装に際して、多量の記憶領域が必要になるという問題がある。ログ2102のどの部分が不要であるかを、何らかの手法で判断することも考えられるが、その場合には、アルゴリズムが複雑となる。また、非特許文献1では、更新情報をログ形式で管理しているため、ログ走査に時間がかかり、情報同期時の効率が悪い。更に、特許文献1を含め、従来技術では、情報同期が2つの情報機器間での同期のみに限定されており、複数の情報機器間で同期を行う場合には、2つの情報機器間での情報同期を繰り返し行う必要があり、情報同期時に、多数回の通信が必要であるという問題がある。
【0009】
本発明は、上記従来技術の問題点を解消し、多量の記憶領域を必要とせずに、各機器が記憶するデータを効率よく同期できる情報処理装置、分散同期型情報システム、情報同期方法、及び、プログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するために、本発明の分散同期型情報システムは、それぞれがデータベースを有する複数の情報処理装置を備え、該情報処理装置の間で前記データベースを同期させる分散同期型情報システムにおいて、前記情報処理装置のそれぞれが、前記データベースの各データと、データ更新を行った情報処理装置を示す更新者、及び、情報処理装置内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶する記憶装置を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他の情報処理装置に送信する更新情報送信要求手段と、前記更新情報送信要求を受信した他の情報処理装置から、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信し、自装置内の前記データベース及び同期情報を更新する第1のデータベース同期手段とを備えたことを特徴とする。
【0011】
本発明のデータベース同期方法は、それぞれがデータベースを有する複数の情報処理装置を備え、該情報処理装置の間で前記データベースを同期させる分散同期型情報システムにおけるデータベース同期方法おいて、前記情報処理装置が、データベース更新時に、更新データと、データ更新を行った情報処理装置を示す更新者、及び、情報処理装置内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶するステップと、
前記情報処理装置が、前記同期情報を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他の情報処理装置に送信するステップと、
前記情報処理装置が、前記更新情報送信要求を受信した他の情報処理装置から、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信するステップと、
前記情報処理装置が、受信した更新情報に基づいて、自装置内の前記データベース及び同期情報を更新するステップとを有することを特徴とする。
【0012】
本発明の情報処理装置は、データベースを有し、ネットワークを介して接続される他の情報処理装置との間で前記データベースを同期する情報処理装置において、前記データベースの各データと、データ更新を行った情報処理装置を示す更新者、及び、情報処理装置内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶する記憶装置を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他の情報処理装置に送信する更新情報送信要求手段と、前記更新情報送信要求を受信した他の情報処理装置から、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信し、自装置内の前記データベース及び同期情報を更新する第1のデータベース同期手段を備えたことを特徴とする。
【0013】
本発明のプログラムは、コンピュータが有するデータベースを、ネットワークを介して接続される他のコンピュータのデータベースと同期させるプログラムであって、前記コンピュータに、データベース更新時に、更新データと、データ更新を行ったコンピュータを示す更新者、及び、コンピュータ内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶するステップと、前記同期情報を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他のコンピュータに送信するステップと、前記更新情報送信要求を受信した他のコンピュータから、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信するステップと、受信した更新情報に基づいて、自装置内の前記データベース及び同期情報を更新するステップとを実行させることを特徴とする。
【0014】
本発明の分散同期型情報システム、情報処理装置、データベース同期方法、及び、プログラムでは、データベースの各データに対応して、そのデータを更新した更新者と、情報処理装置(コンピュータ)ごとの更新の前後を判断するための情報とを含む同期情報を記憶する。この同期情報を参照することで、自装置内のデータベース内において、各更新者について、最新の更新が何であるかを知ることができる。他の情報処理装置との同期時には、同期情報を参照して、各更新者についての最新の更新を示す情報を取得し、これを他の情報処理装置に送信し、その他の情報処理装置から、自装置のデータベースにおける更新者ごとの最新の更新よりも新しい更新によって更新されたデータを受信して、データベースを更新する。このようにすることにより、データベース内の全てのデータを比較しなくても、自装置のデータベースでされていない更新を取得することができ、データベース内の全データを送受信して比較する場合に比して、送受信されるデータ量を少なくすることができる。また、更新ログを保存する場合には、更新が行われるたびに更新ログの行が増えていき、更新回数の増加に伴って更新ログのサイズが増大するが、本発明では、データベースの各データに対応して同期情報を記憶するため、更新回数が増えても同期情報のサイズは増大せず、更新ログを保存する場合に比して、必要な記録領域が少なくて済む。
【0015】
本発明の分散同期型情報システムは、自装置内で更新者として前記データベースを更新すると、自装置内での更新の前後を判断するための情報を作成し、当該更新データに対応させて同期情報を更新する同期情報更新手段を更に備える構成を採用できる。本発明のデータベース同期方法は、前記同期情報を記憶するステップでは、前記情報処理装置は、自装置内で更新者として前記データベースを更新すると、自装置内での更新の前後を判断するための情報を作成し、当該更新データに対応させて同期情報を更新する構成を採用できる。
【0016】
本発明の分散同期型情報システム及びデータベース同期方法では、前記情報処理装置内での更新の前後を判断するための情報が、前記情報処理装置内で前記データベースを更新するたびにインクリメントされる情報処理装置ごとのイベント番号である構成を採用できる。また、本発明のプログラムでは、前記コンピュータ内での更新の前後を判断するための情報が、前記コンピュータ内で前記データベースを更新するたびにインクリメントされるコンピュータごとのイベント番号である構成を採用できる。この場合、イベント番号の大小を比較することにより、データベースを更新した更新者ごとに、更新の前後を判断することができる。更新の前後を判断する情報としては、更新時刻を用いることもできる。その場合には、更新時刻の前後により、更新者ごとに、更新の前後を判断できる。
【0017】
本発明の分散同期型情報システムでは、前記同期情報が更新時刻を含み、前記第1のデータベース同期手段は、前記更新情報に含まれる同期情報の更新時刻が、自装置が記憶する同期情報の更新時刻よりも新しいと、前記データベース及び同期情報を更新する構成を採用できる。本発明のデータベース同期方法では、前記同期情報が更新時刻を含み、前記データベース及び同期情報を更新するステップでは、前記情報処理装置は、前記更新情報に含まれる同期情報の更新時刻が、自装置が記憶する同期情報の更新時刻よりも新しいと、前記データベース及び同期情報を更新する構成を採用できる。本発明のプログラムでは、前記同期情報が更新時刻を含み、前記データベース及び同期情報を更新するステップでは、前記更新情報に含まれる同期情報の更新時刻が、自装置が記憶する同期情報の更新時刻よりも新しいと、前記データベース及び同期情報を更新する構成を採用できる。この場合、新しいデータが、古いデータによって更新されることを防ぐことができる。更新時刻は、更新者ごとの更新の前後を判断するための情報に付加する形で同期情報に含めることができ、或いは、更新者ごとの更新の前後を判断するための情報として更新時刻を用いる場合には、これと共用してもよい。
【0018】
本発明の分散同期型情報システム及びデータベース同期方法では、前記同期情報が、現時点までに更新を行った情報処理装置と、情報処理装置内での更新の前後を判断するための情報との組を含む更新履歴を更に含む構成を採用できる。本発明のプログラムでは、前記同期情報が、更新を行ったコンピュータと、コンピュータ内での更新の前後を判断するための情報との組を含む更新履歴を更に含む構成を採用できる。この場合、更新履歴を参照することで、どのような経路で更新が行われたかを知ることができる。
【0019】
本発明の分散同期型情報システムでは、前記第1のデータベース同期手段は、受信した更新情報に含まれる更新履歴と、自装置が記憶する更新履歴とを比較し、受信した更新情報に含まれる更新履歴が、自装置が記憶する更新履歴を含むと判断すると、前記データベース及び対応する同期情報を更新する構成を採用できる。本発明のデータベース同期方法は、前記情報処理装置が、受信した更新情報に含まれる更新履歴と、自装置が記憶する更新履歴とを比較するステップを更に有し、前記情報処理装置は、受信した更新情報に含まれる更新履歴が、自装置が記憶する更新履歴を含むと判断すると、前記データベース及び対応する同期情報を更新する構成を採用できる。本発明のプログラムでは、前記コンピュータに、受信した更新情報に含まれる更新履歴と、自装置が記憶する更新履歴とを比較するステップを更に実行させ、前記データベース及び同期情報を更新するステップでは、更新履歴を比較するステップで、受信した更新情報に含まれる更新履歴が、自装置が記憶する更新履歴を含むと判断されると、前記データベース及び対応する同期情報を更新する構成を採用できる。受信した更新情報の同期情報に含まれる更新履歴が、自装置が記憶する同期情報の更新履歴を含む場合には、途中の更新までは同じ経路で更新されており、その後、自装置以外の情報処理装置において、新たな更新がされたことを示している。このような場合には、受信した更新情報で、データベース及び同期情報を更新しても問題はなく、受信した更新情報でデータベースを更新することにより、他の情報処理装置との間でデータベースを同期することができる。
【0020】
本発明の分散同期型情報システムは、各情報処理装置のデータベースに反映された更新について、更新者ごとに最新の更新を示す情報を記憶する更新伝播情報を参照して、前記更新履歴から、全ての情報処理装置のデータベースで反映されている更新以前の履歴を削除する履歴削除手段を更に備える構成を採用できる。本発明のデータベース同期方法は、前記情報処理装置が、各情報処理装置のデータベースに反映された更新について、更新者ごとに最新の更新を示す情報を記憶する更新伝播情報を参照して、前記更新履歴から、全ての情報処理装置のデータベースで反映されている更新以前の履歴を削除するステップを更に有する構成を採用できる。本発明のプログラムは、前記コンピュータに、各コンピュータのデータベースに反映された更新について、更新者ごとに最新の更新を示す情報を記憶する更新伝播情報を参照して、前記更新履歴から、全てのコンピュータのデータベースで反映されている更新以前の履歴を削除するステップを更に実行させる構成を採用できる。各情報処理装置は、更新伝播情報により、各情報処理装置について、各情報処理装置内のデータベースでどの時点の更新までの更新が行われたかを更新者ごとに管理する。この更新伝播情報を調べることにより、更新者ごとに、最低限、どの時点までの更新が全ての情報処理装置内のデータベースでされたかを特定することができる。例えば、更新の前後を判断するための情報としてイベント番号を用いる場合、ある更新者について、各情報処理装置での、その更新者の最新の更新を示す情報のうちで最も古い更新を示す情報(イベント番号の最小値)がイベント番号「8」であれば、イベント番号「8」までの更新は、全ての情報処理装置内のデータベースでされていると特定できる。この場合には、その更新者によるイベント番号「8」以前の更新履歴は、既に全ての情報処理装置内のデータベースで更新されているので不要であると判定できる。このような不要な更新履歴を削除することにより、更新回数の増加に伴って更新履歴が増大することを避けることができる。
【0021】
本発明の分散同期型情報システムは、自装置内で前記データベースを更新すると、ネットワーク接続中の他の情報処理装置に、更新データと、該更新データに対応する同期情報とを送信する更新伝播手段と、他の情報処理装置の更新伝播手段によって送信された更新データ及び同期情報を受信し、前記データベース及び同期情報を更新する第2のデータベース同期手段とを更に備える構成を採用できる。本発明のデータベース同期方法は、前記情報処理装置が、自装置内で前記データベースを更新すると、ネットワーク接続中の他の情報処理装置に、更新データと、該更新データに対応する同期情報とを送信するステップと、前記情報処理装置が、前記更新データ及び該更新データに対応する同期情報を送信するステップで送信された更新データ及び同期情報を受信し、前記データベース及び同期情報を更新するステップとを更に有する構成を採用できる。本発明のプログラムは、前記コンピュータに、自装置内で前記データベースを更新すると、ネットワーク接続中の他のコンピュータに、更新データと、該更新データに対応する同期情報とを送信するステップと、前記更新データ及び該更新データに対応する同期情報を送信するステップで送信された更新データ及び該更新データに対応する同期情報を受信し、前記データベース及び同期情報を更新するステップとを更に実行させる構成を採用できる。この場合、ある情報処理装置で行われたデータベースの更新が、ネットワーク接続中の他の情報処理装置に反映されることで、ネットワーク接続中の情報処理装置間で、データベースを同期させることができる。
【0022】
本発明の分散同期型情報システムでは、他の情報処理装置から更新情報送信要求を受信すると、自装置が記憶する同期情報を参照して、受信した更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新を検索し、該検索により抽出された更新の更新データと、該更新データに対応する同期情報とを含む更新情報を、前記更新情報送信要求を送信した情報処理装置に向けて送信する更新情報送信手段を更に備える構成を採用できる。本発明のデータベース同期方法は、前記情報処理装置が、他の情報処理装置から更新情報送信要求を受信すると、自装置が記憶する同期情報を参照して、受信した更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新を検索するステップと、前記情報処理装置が、前記検索により抽出された更新の更新データと、該更新データに対応する同期情報とを含む更新情報を、前記更新情報送信要求を送信した情報処理装置に向けて送信するステップとを更に有する構成を採用できる。本発明のプログラムは、前記コンピュータに、他のコンピュータから更新情報送信要求を受信すると、自装置が記憶する同期情報を参照して、受信した更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新を検索するステップと、前記検索により抽出された更新の更新データと、該更新データに対応する同期情報とを含む更新情報を、前記更新情報送信要求を送信したコンピュータに向けて送信するステップとを更に実行させる構成を採用できる。更新情報送信要求を受信した側の情報処理装置は、自装置内の同期情報を参照することで、受信した更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新、つまり、更新情報送信要求を送信した側のマシンでされておらず、更新情報送信要求を受信した側のマシンでされている更新を抽出できる。このように抽出した更新データを含む更新情報を、更新情報送信要求を送信した側の情報処理装置に送信することで、少ないデータ量で、データベースを同期させることができる。また、ログ情報に比して情報量が少ない同期情報を検索することで更新情報の抽出するため、ログ情報を用いる場合に比して、検索を高速に行うことができる。
【0023】
本発明の分散同期型情報システムでは、ネットワークに再接続された情報処理装置が、ネットワークに接続されている他の情報処理装置のうちの1つから更新情報送信要求を受信すると、該再接続された情報処理装置の前記更新情報送信手段は、前記更新情報をネットワークに接続された他の情報処理装置に向けてマルチキャスト送信する構成を採用できる。本発明のデータベース同期方法は、ネットワークに再接続された情報処理装置が、ネットワークに接続されている他の情報処理装置のうちの1つから更新情報送信要求を受信すると、前記更新情報を、ネットワークに接続された他の情報処理装置に向けてマルチキャスト送信するステップを更に有する構成を採用できる。本発明のプログラムは、前記コンピュータに、前記コンピュータがネットワークに再接続した後に、ネットワークに接続された他のコンピュータのうちの1つから更新情報送信要求を受信すると、前記更新情報を、ネットワークに接続された他のコンピュータに向けてマルチキャスト送信するステップを更に実行させる構成を採用できる。この場合、ネットワーク接続中の他の情報処理装置のデータベース間の同期が取れているときには、ネットワークに接続した情報処理装置と、ネットワーク接続中の他の情報処理装置のそれぞれとの間で更新情報送信要求及び更新情報の送受信を行わなくても、各情報処理装置のデータベースを同期させることができる。従って、1対1の通信を繰り返してデータベースを同期させる場合に比して、効率よくデータベースを同期させることができる。
【発明の効果】
【0024】
本発明の分散同期型情報システム、情報処理装置、データベース同期方法、及び、プログラムでは、データベースの各データに対応して、そのデータを更新した更新者と、情報処理装置(コンピュータ)ごとの更新の前後を判断するための情報とを含む同期情報を記憶する。この同期情報を参照して、自装置内のデータベース内における各更新者の最新の更新を示す情報を調べて、これを含む更新情報送信要求を他の情報処理装置に送信し、その他の情報装置から、自装置内のデータベース内における各更新者の最新の更新よりの新しい更新により更新されたデータ及びそのデータに対応する同期情報を受信して、データベース及び同期情報を更新する。このようにすることにより、データベース内の全てのデータを比較しなくても、自装置のデータベースでされていない更新を取得することができ、データベース内の全データを送受信して比較する場合に比して、送受信されるデータ量を少なくすることができる。また、データベースの各データに対応して同期情報を記憶するため、更新回数が増えても同期情報のサイズは増大せず、更新ログを保存する場合に比して、必要な記録領域が少なくて済む。
【発明を実施するための最良の形態】
【0025】
以下、図面を参照し、本発明の実施の形態を詳細に説明する。
【0026】
第1実施形態
図1は、本発明の第1実施形態の分散同期型情報システムの構成を示している。分散同期型情報システム10は、情報の同期を行う任意の数の情報機器で構成されており、同図の例では、マシンA100、マシンB110、及び、マシンC120の3台の情報機器により構成される。マシンA100は、アプリケーション101、関係データベース102、データベース内同期情報更新手段103、再接続時同期手段(第1のデータベース同期手段)104、及び、接続中同期手段(第2のデータベース同期手段)105を備える。同図では、図示を省略しているが、マシンB110及びマシンC120は、それぞれマシンA100と同様な構成を有する。各マシンは、例えば、関係データベース102のデータを利用して処理を行う携帯型端末装置として構成される。
【0027】
マシンA100、マシンB110、及び、マシンC120は、それぞれ任意のタイミングで、図示しないネットワークから切断され、或いは、ネットワークに再接続される。マシンA100、マシンB110、及び、マシンC120は、アプリケーション101により、関係データベース102を更新する。関係データベース102の更新には、既存の行(データ)の変更、新たな行の挿入、及び、既存の行の削除が含まれる。各マシンは、関係データベース102を更新すると、その更新を他のマシンに伝播し、各マシンの関係データベース102を同期させる。
【0028】
関係データベース102の更新は、任意のタイミングで行われ、マシンがネットワークに接続されている状態、及び、マシンがネットワークから切断された状態の双方で行われる。接続中同期手段105は、更新伝播手段108を有し、マシンがネットワークに接続された状態で、関係データベース102で行われた更新を、ネットワーク接続中の他のマシンに伝播し、各マシンの関係データベース102の記憶内容を同期させる。再接続時同期手段104は、更新情報送信要求手段106と、更新情報送信手段107とを有し、マシンがネットワークに切断された状態からネットワークに再接続した際に、再接続したマシン及びネットワーク接続中の他のマシンで行われた更新をそれぞれ伝播し、関係データベース102の記憶内容を同期させる。
【0029】
図2は、関係データベース102のデータ構造の具体例を示している。関係データベース102は、通常のデータ(「主キー」、「データ」)に加え、各データに対応して付加された同期情報を記憶する。同図では、点線で囲んだ部分201が、同期情報に相当する。付加される同期情報には、データ(行)を更新した更新者、及び、更新の前後関係を判断するための情報が含まれる。また、削除フラグ、及び、更新時刻が含まれる。データベース内同期情報更新手段103(図1)は、アプリケーション101が関係データベース102を更新すると、更新されたデータ(行)に対応した同期情報を更新する。
【0030】
同期情報の「更新の前後を判断するための情報」としては、例えば、更新が行われた時刻、或いは、更新処理が起こるたびに各マシンで順番に振られた番号(イベント番号)を用いることができる。更新の前後を判断する情報としては、イベント番号を用いることが望ましい。これは、更新の前後を判断するための情報として更新時刻を用いると、システムの時刻が変更されることで前後関係が狂う可能性があるためである。図2の例では、更新の前後を判断するための情報として、イベント番号を用いている。
【0031】
更新者及びイベント番号について説明する。更新者は、データ更新を行ったマシンを示す。イベント番号は、各マシンにおける更新の順序を示している。例えば、マシンA100で、関係データベース102が初めて更新される場合には、その更新に対して、イベント番号「1」が割り当てられる。その後、マシンA100で、関係データベース102が更新される場合には、イベント番号「2」が割り当てられる。このイベント番号は、マシンごとに管理され、他のマシンにおける更新とは無関係に、各マシン内で順次に割り当てられる。例えば、マシンA100でイベント番号「2」に対応する更新が行われた後に、マシンB110で関係データベース102が更新され、その後、更にマシンA100で関係データベース102が更新される場合には、その更新には、イベント番号「3」が割り当てられる。
【0032】
削除フラグは、その行が削除されたか否かを示す。アプリケーション101は、データを削除する際には、実際にはその行を削除せずに削除フラグを「Y」に変更する。削除フラグが「Y」に設定された行は、関係データベース102から削除されたものとして取り扱われる。このように、実際には行を削除せずに、削除フラグを用いて削除されたものとして取り扱うのは、再接続時同期手段104による同期において、何れかのマシンの関係データベース102にある行が存在し、他のマシンの関係データベース102にその行が存在しない場合に、その行がネットワークから切断している間に削除されたものであるのか、或いは、他のマシンにおいて追加されたかを区別する必要があるためである。
【0033】
ここで、あるマシンがネットワークから切断されている間に、その切断中のマシンと、ネットワーク接続中のマシンとが、それぞれの関係データベース102の同じ行に対して更新を行った場合について考える。この場合、切断中のマシンがネットワークに再接続し、関係データベース102を同期しようとすると、同じ行が別々に更新されたことにより、その行について、矛盾が生じることになる。この矛盾の解決方法としては、ユーザにどちらを優先するかを選択させる方法、特定のマシンを優先する方法、更新時間が新しい方を優先する方法などが考えられる。本実施形態では、同期情報に、更新時刻を含め、同一行に対して2つのマシンで更新があったときは、更新時刻が新しいものを優先する。
【0034】
同期情報は、図2に示したように、関係データベース102内のデータと同一行に含めることができる他、図3に示すように、データ部分と分離して、別のテーブルで管理することもできる。図3では、関係データベース102が、アプリケーション101が使用するデータを含む表301と、同期情報部分(図2の201)を含む表302とに分離されている。このように分離する場合、表301の行と、表302の行とは、各行に一意のキー、例えば主キーを用いて対応させればよい。データと同期情報とを分離する場合には、もともと関係データベースが有していたデータの表の構成を変更する必要がないため、既存の関係データベースに、同期情報の表を追加することで、分散型情報同期システムを構築できる。
【0035】
図4は、データベース内同期情報更新手段103の動作手順を示している。アプリケーション101は、SQLなどを用いて、関係データベース102を更新する(ステップS401)。この関係データベース102の更新において、新たに行を挿入(追加)する際には、ネットワークから切断されたマシンにおいて、新たに挿入された行の主キーと重複しないようにする。例えばマシン名を主キーに含め、或いは、新たに挿入する主キーとして利用できる値の範囲をマシンごとに設定しておけばよい。
【0036】
データベース内同期情報更新手段103は、関係データベース102が更新されると、更新内容が、行の挿入、行の書き換え、又は、行の削除の何れであるかを判断する(ステップS402)。更新の内容が行の書き換えであるときには、同期情報(図2の201、図3の302)の更新者、イベント番号、及び、更新時刻を更新する(ステップS406)。例えば、マシンA100で、アプリケーション101が関係データベース102の行を書き換えた場合には、マシンA内のデータベース内同期情報更新手段103は、同期情報の更新者を、「マシンA」とする。イベント番号については、マシンA内で既に割り当てた最大イベント番号を記憶しておき、その値に1を加えた値とする。また、更新時刻には、現在時刻を設定する。ここで、各マシンが持つ時刻情報は、何らかの手段で同期が取れていると仮定する。
【0037】
更新内容が行の挿入の場合、同期情報が、図3に示すようにデータと分離されているときには、同期情報の表302に新たに行を挿入する(ステップS403)。その際、例えば、挿入されたデータの表301の行の主キーと同じキーを、同期情報の主キーとして設定し、挿入されたデータの行との対応をとる。その後、ステップS406で、同期情報(図2の201、図3の302)の更新者、イベント番号、及び、更新時刻を更新する。更新内容が行の削除の場合、同期情報が図3に示すようにデータと分離されているときには、データの表301から該当する行を削除する(ステップS404)。同期情報(図2の201、図3の302)については、同期情報自体は削除せずに、削除フラグを「Y」にする(ステップS405)。その後、ステップS406へ進み、同期情報を更新する。
【0038】
図5は、接続中同期手段105の動作手順を示している。データベース内同期情報更新手段103が、同期情報を更新すると、接続中同期手段105の更新伝播手段108は、更新されたデータを、「主キー」等を利用して検索し、伝播すべき関係データベース102上のデータ、及び、同期情報を取得する(ステップS501)。その後、更新伝播手段108は、ステップS501で取得したデータを、伝播に適した形にエンコードする(ステップS502)。このエンコードには、例えば、XMLなどの形式を用いることができる。
【0039】
更新伝播手段108は、現在ネットワークに接続中のマシンに対して、ステップS502でエンコードしたデータを送信する(ステップS503)。ステップS503では、関係データベース102が更新されたマシンは、ネットワーク接続中の他のマシンとの間で1対1の通信を行い、エンコードしたデータを送信する。或いは、マルチキャストを用い、ネットワーク接続中の全てのマシンに向けて、エンコードされたデータを送信する。ネットワーク接続中のマシンの接続中同期手段105は、他のマシンからエンコードされたデータを受信すると、受信データをデコードし、その内容に従って、自身のマシン内の関係データベース102を更新する(ステップS504)。このような動作により、ネットワーク接続中の各マシンの関係データベース102が同期される。
【0040】
図6は、再接続時同期手段104の動作手順を示している。ネットワークに新たに接続したマシンがあると、再接続時同期手段104は、ネットワーク内に、新たに通信可能になったマシンを発見する(ステップS601)。ステップS601では、新たにネットワークに接続(再接続)したマシンの再接続時同期手段104は、既にネットワークに接続していた各マシンを、新たに通信可能になったマシンとして発見する。一方、既にネットワークに接続していたマシンの再接続時同期手段104は、新たにネットワークに接続したマシンを、新たに通信可能になったマシンとして発見する。新たに通信可能になったマシンの発見は、例えばUPnPなどが持つ機能を利用することで実現できる。
【0041】
再接続時同期手段104の更新情報送信要求手段106は、ステップS601で発見した各マシンに対し、自らを「更新情報受信側マシン」、発見したマシンを「更新情報送信側マシン」として、更新情報の送信を要求する。この要求を受けた更新情報送信側マシンの更新情報送信手段107は、更新情報受信側マシンでされていない関係データベース102の更新を含む更新情報を、更新情報受信側マシンに送信する。更新情報送信側マシンの再接続時同期手段104は、受信した更新情報に基づいて、関係データベース102を更新する(ステップS602)。再接続時同期手段104は、ステップS601で発見したマシンが複数あるときには、その発見した各マシンに対して、ステップS602を実行する。
【0042】
図7は、ネットワーク再接続時の関係データベース102の更新の様子を示している。ここでは、マシンA100及びマシンC120は既にネットワークに接続しており、マシンB110がネットワークに再接続した場合について考える。この場合、ネットワークに再接続したマシンB110は、図6のステップS601で、既にネットワークに接続しているマシンA100及びマシンC120を、新たに通信可能になったマシンとして発見する。一方、マシンA100及びマシンC120は、それぞれ、再接続したマシンB110を、新たに通信可能になったマシンとして発見する。
【0043】
マシンB110は、ステップS602で、自身を「更新情報受信側マシン」とし、発見したマシンA100及びマシンC120を「更新情報送信側マシン」として、マシンA100及びマシンC120に対し、それぞれ更新情報の送信を要求する。マシンA100及びマシンC120は、この要求を受け取ると、それぞれ、自装置の関係データベース102(図1)でされており、マシンB110の関係データベース102でされていない更新の情報をマシンB110に送信する。マシンB110は、マシンA100及びマシンC120から受信した情報に基づいて、関係データベース102を更新する。この更新により、マシンB110がネットワークから切断している間にマシンA100又はマシンC120で行われた更新が、マシンB110の関係データベース102に反映される。
【0044】
一方、マシンA100及びマシンC120は、それぞれ、ステップS602で、自身を「更新情報受信側マシン」とし、発見したマシンB110を「更新情報送信側マシン」として、マシンB110に対して更新情報の送信を要求する。マシンB110は、自装置の関係データベース102ではされており、マシンA100及びマシンC120ではされていない更新を含む更新情報を、マシンA100及びマシンC120にそれぞれ送信する。マシンA100及びマシンC120は、それぞれ、マシンB110から受信した情報に基づいて、関係データベース102を更新する。この更新により、マシンB110がネットワークから切断している間にマシンB110で行われた更新が、マシンA100及びマシンC120の関係データベース102に反映される。
【0045】
図8及び図9は、それぞれ、図6のステップS602のネットワーク再接続時の更新処理の詳細な手順を示すもので、図8は、更新情報受信側マシンの動作手順を示し、図9は、更新情報送信側マシンの動作手順を示している。更新情報受信側マシンの再接続時同期手段104の更新情報送信要求手段106は、同期情報(図2又は図3)を参照し、各更新者について、イベント番号が最大である行を検索して(ステップS801)、各更新者の最大のイベント番号を取得する。イベント番号は、更新者ごとの更新の順序を示しており、ステップS801の検索は、「更新者ごとに最も近い更新は何か」を検索することに等しい。
【0046】
ステップS801の検索は、関係データベース102のインデックス機能などを用いることで、表のサイズに依存しない時間で高速に行うことが可能である。また、各更新者について、最大のイベント番号を保持するテーブルを用意しておき、データベース更新の際に、データベース内同期情報更新手段103によって、そのテーブルを更新することで、同期情報の検索を省略することも可能である。更新情報送信要求手段106は、各更新者について、イベント番号が最大の行を検索すると、マシンごとの最大イベント番号の情報を含む更新情報送信要求を、更新情報送信側マシンに送信する(ステップS802)。
【0047】
図10は、ネットワーク再接続時の更新処理において、2つのマシン間でやり取りされる情報の具体例を示している。マシンB110が更新情報送信側マシンである場合、マシンB110の関係データベース102が記憶するテーブル1011から、更新者「マシンA」について、最大イベント番号を検索すると、イベント番号「11」が得られる。同様に、更新者「マシンB」及び「マシンC」について、最大イベント番号を検索すると、マシンBについてはイベント番号「8」、マシンCについてはイベント番号「5」が得られる。マシンB110の更新情報送信要求手段106は、「マシンA、最大イベント番号11」、「マシンB、最大イベント番号8」、「マシンC、最大イベント番号5」を含む更新情報送信要求1020を、更新情報送信側マシンであるマシンA100に送信し、マシンAに、更新者ごとの最大イベント番号を通知する。
【0048】
更新情報送信側マシンでは、更新情報受信側マシンから、更新情報送信要求を受信して、各更新者についての最大イベント番号の通知を受ける(図9のステップS901)。更新情報送信手段107は、自装置の関係データベース102のテーブル1001を検索し、各更新者について、イベント番号が、更新情報受信側マシンから通知された最大イベント番号よりも大きなイベント番号の行を抽出する(ステップS902)。その後、抽出した行をエンコードし、これを更新情報(差分情報)として、更新情報受信側マシンに送信する(ステップS903)。ステップS902で、複数の行が抽出された場合には、抽出された各行を、更新情報受信側マシンに送信する。
【0049】
図10の例では、マシンA100の関係データベース102のテーブル1001を検索し、マシンB110から通知された各更新者の最大イベント番号を超えるイベント番号の行を抽出すると、主キー「3」の行(更新者「マシンC」、イベント番号「6」)が抽出される。この行は、最初にマシンC120において更新され、その後、マシンA100に伝播されて、マシンA100の関係データベース102においても更新された行である。このように、ステップS902では、更新情報送信側マシン(マシンA)とは異なるマシンによって更新された行が抽出されることがある。マシンA100の再接続時同期手段104は、抽出した主キー「3」の行を、更新情報1021としてマシンBに送信する。
【0050】
図8に戻り、更新情報受信側マシンの再接続時同期手段104は、更新情報送信側マシンから送信された更新情報を取得する(ステップS803)。再接続時同期手段104は、受信した更新情報をデコードし、更新情報送信側マシンにおいて、更新情報受信側マシンにおける最大イベント番号よりも大きなイベント番号の行として抽出された行に対応する行が、自身の関係データベース102に存在するか否かを判断する(ステップS804)。対応する行が存在するか否かは、例えば主キーを用いて判断する。存在しない場合には、取得した行を、同期情報を含め関係データベース102に挿入する(ステップS808)。
【0051】
対応する行が存在する場合、取得した行の「更新時刻」と、関係データベース102の対応する行の「更新時刻」とを比較し、取得した行の「更新時刻」が、関係データベース102の「更新時刻」よりも時間的に後であるか否かを判断する(ステップS805)。取得した行の「更新時刻」が時間的に前であれば、更新時刻が新しい方を優先して、取得した行を破棄する(ステップS809)。
【0052】
取得した行の「更新時刻」が時間的に後であれば、再接続時同期手段104は、更新情報が行の削除を示すか否かを判断する(ステップS806)。更新情報が削除を示す場合には、対応する行の削除フラグを「Y」にする(ステップS807)。このとき、同期情報が図3に示すように、データと分離されているときには、データ側の表から、対応する行を削除する。行の削除を示していないときには、取得した行の内容で、関係データベース102の対応する行を更新する(ステップS810)。
【0053】
図10の例では、マシンB110の関係データベース102が記憶するテーブル1011には、マシンA100から送信された更新情報1021(主キー「3」の行)に対応する行が存在する。これら行の更新時刻を比較すると、マシンA100から受信した行の方が、新しい。このため、マシンB110は、マシンA100から受信した更新情報1021に従って、主キー「3」のデータを、「データ11」から「データ17」に更新する。また、この行に対応する同期情報を、更新情報1021の同期情報で上書きする。このような動作により、マシンB110がネットワークから切断されている間に、ネットワーク接続中のマシンで行われた更新の内容が、マシンB110の関係データベース102に反映される。
【0054】
再接続時同期手段104は、ステップS803で、複数の行を含む更新情報を取得した場合には、その含まれる各行について、ステップS804〜S810の処理を実行する。その場合、処理の順序は、更新者とは無関係にイベント番号同士を比較し、イベント番号が小さい順に行うことが望ましい。これは、イベント番号が大きな行について更新を行っている間に障害が発生した場合、イベント番号が小さな行を再取得することができなくなることも考えられるからである。
【0055】
図10の例では、上記した、更新情報受信側マシンをマシンB110とし、更新情報送信側マシンをマシンA100としたネットワーク再接続時の同期に加えて、更新情報受信側マシンをマシンA100とし、更新情報送信側マシンをマシンB110としたネットワーク再接続時の同期も行われる。マシンA100を更新情報受信側マシンとしたネットワーク再接続時の同期では、マシンA100は、関係データベース102のテーブル1001を検索し、各更新者について最大イベント番号(「マシンA、最大イベント番号11」、「マシンB、最大イベント番号7」、「マシンC、最大イベント番号6」)を含む更新情報送信要求1030をマシンB110に送信する。
【0056】
マシンB110は、関係データベース102を参照し、更新者ごとに、マシンA100から通知された最大イベント番号を超える行を抽出して、これをマシンA100に送信する。図10では、マシンB110は、主キー「1」の行(更新者「マシンB」、イベント番号「11」)を、マシンAから通知された最大イベント番号を超える行として抽出する。この行は、マシンB110がネットワークから切断されている間に、マシンB110のアプリケーション101によって更新された行である。マシンB110は、抽出した主キー「1」の行をエンコードして、更新情報1031としてマシンA100に送信する。
【0057】
マシンA100は、更新情報1031を受信すると、受信した更新情報1031に従って、関係データベース102を更新する。より詳細には、主キー「1」のデータを、「データ5」から「データ9」に更新する。また、この行に対応する同期情報を、受信した更新情報1031の同期情報で上書きする。これにより、ネットワーク切断中にマシンB110で行われた更新の内容が、マシンA100の関係データベース102に反映される。以上のように、ネットワーク上に新たに通信可能になったマシンが発見されたとき、複数のマシン間で、お互いが知らない更新情報の授受を行うことで、ネットワークに新たに接続(再接続した)したマシンについても、既にネットワークに接続しているマシンについても、同様な手順で、関係データベース102の内容を同期させることができる。
【0058】
本実施形態では、関係データベース102の各行(各データ)に対応して、データを更新した更新者と、更新者ごとの更新の順序を判断するための情報とを含む同期情報を付加する。各マシンは、ネットワーク接続中は、接続中同期手段105により、関係データベース102の内容を同期する。ネットワーク再接続時は、再接続時同期手段104により、新たに通信可能になったマシンに対し、更新者ごとの最新の更新を示す情報を通知し、更新情報の送信を要求し、相手側から、通知した最新の更新以後の更新の内容を受信して、関係データベース102を更新する。このようにすることで、マシン間で受け渡される情報は、そのマシンが実際に知らない情報のみとなり、冗長な情報の授受は行われない。従って、例えばデータベース内の全ての情報を授受する場合に比して、効率よく関係データベース102を同期させることができる。また、従来技術がログを用いているのとは異なり、行に同期情報を対応付けることで、同期の際に用いる情報の容量を少なくし、かつ、検索のコストを抑制することができる。
【0059】
ここで、同期情報として「更新時刻」のみを付加し、各マシンが、「以前、何れかのマシンと同期を行った時刻」を記憶する場合について考える。この場合、「以前、何れかのマシンと同期を行った時刻」以後に更新された情報を要求することで、本実施形態と同様に差分情報のみを取得できるようにも考えられる。しかし、例えば、マシンCがネットワークから切断された状態で、マシンCで「1:00」に更新が起こり、その後、マシンAとマシンBとが「2:00」に同期を行った後にマシンCがネットワークに再接続し、マシンAとマシンCとが同期を行う場合には、マシンAは「2:00」に同期を行っているため、「1:00」に行われた更新が、マシンCからマシンAに送信されないという問題が起こる。本実施形態では、上記手順に従って、更新情報の送信を要求するため、マシン間で、確実に更新情報が伝達されることが保証される。
【0060】
第2実施形態
図11は、本発明の第2実施形態の分散同期型情報システムにおけるネットワーク接続中の同期の動作手順を示している。本実施形態の分散同期型情報システムは、図1に示す分散同期型情報システムと同様な構成を有しており、接続中同期手段105(図1)が、図5に示す手順に代えて、図11に示す手順で、ネットワーク接続中のマシンとの間で関係データベース102を同期する点で、第1実施形態と相違する。本実施形態では、接続中同期手段105は、再接続時同期手段104を利用して、関係データベース102の同期を取る。
【0061】
アプリケーション101が、関係データベース102を更新すると、更新があったマシンの接続中同期手段105は、ネットワーク接続中の各マシンに対し、データ更新があった旨を通知する(ステップS1101)。その際、接続中同期手段105は、データ更新を行ったマシン名を、データ更新があった旨の通知に含める。この通知を受け取った他のマシンの接続中同期手段105は、再接続時同期手段104の更新情報送信要求手段106により、自装置を「更新情報受信側マシン」、更新があったマシンを「更新情報送信側マシン」として、更新情報の送信を要求する(ステップS1102)。更新情報の送信要求を受け取ったマシンは、更新情報送信手段107により、その要求に応答して、更新情報を更新情報受信側マシンに送信する(ステップS1103)。更新情報受信側マシンは、受信した更新情報に従って、関係データベース102を更新する。
【0062】
ステップS1102及びステップS1103の更新情報送信要求及び更新情報の送信は、図8及び図9に示す、ネットワーク再接続時の同期と同様な手順に従って行われる。このように、本実施形態では、ネットワーク接続中の同期とネットワーク再接続時の同期とを、同様な手順で行うことにより、システム構成を単純化できる。
【0063】
第3実施形態
図12は、本発明の第3実施形態の分散同期型情報システムにおけるネットワーク再接続時の同期の動作手順を示している。本実施形態の分散同期型情報システムは、図1に示す分散同期型情報システムと同様な構成を有しており、再接続時同期手段104(図1)が、図6に示す手順に代えて、図12に示す手順で、ネットワーク接続中のマシンとの間で関係データベース102を同期する点で、第1実施形態と相違する。
【0064】
ネットワークに再接続した(新たに接続した)マシンの再接続時同期手段104は、既にネットワークに接続しているマシンの中から任意の1つを選び、そのマシンを「更新情報送信側マシン」、自身を「更新情報受信側マシン」として更新情報送信要求を送信し、図8及び図9に示す手順により、関係データベース102を更新する(ステップS1201)。既にネットワーク接続しているマシン間で、データの同期が取られていると仮定すると、ステップS1201により、ネットワークに再接続したマシンは、ネットワーク接続中の他のマシンでされ、自装置でされていない更新を、自装置の関係データベース102に反映できる。
【0065】
ネットワークに再接続したマシンの再接続時同期手段104は、自装置の関係データベース102を更新すると、ネットワーク接続中のマシンから任意の1つを選び、そのマシンに対し、各更新者についての最大イベント番号を送信するように指示する(ステップS1202)。この指示を受けたマシンの更新情報送信要求手段106は、そのマシン内の同期情報(関係データベース102)を検索して、更新者ごとの最大イベント番号を取得し、これを含む更新情報送信要求を、ネットワークに再接続したマシンに送信する。
【0066】
ネットワークに再接続したマシンの更新情報送信手段107は、更新者ごとの最大イベント番号を受け取り(ステップS1203)、関係データベース102を検索して、受け取った更新者ごとの最大イベント番号を超えるイベント番号の行を抽出する(ステップS1204)。このステップは、図9のステップS902に相当する。その後、抽出した行をエンコードし、これを更新情報として、ネットワーク接続中の全てのマシンに対してマルチキャスト送信する(ステップS1205)。ネットワーク接続中の各マシンは、更新情報を受信し、図8のステップS803〜S810と同様な手順により、関係データベース102を更新する。この更新により、既にネットワークに接続していた各マシンは、ネットワークに再接続したマシンでされ、自装置でされていない更新を、自装置の関係データベース102に反映できる。
【0067】
第1実施形態では、ネットワークに再接続したマシンと、ネットワーク接続中の各マシンとの間で、1対1の通信を行い、各マシンの関係データベース102を更新するため、ネットワーク接続中のマシン間で、情報の同期が取れている場合には、無駄な通信が行われることになる。本実施形態では、ネットワークに再接続したマシンは、ネットワーク接続中のマシンのうちの何れかとの間で通信を行い、更新情報を受信して関係データベース102を更新する。また、ネットワーク接続中のマシンの何れかから、更新者ごとの最大イベント番号を受信し、ネットワーク接続中の各マシンに向けて、更新情報をマルチキャスト送信する。このようにすることで、通信の回数及び通信料を削減し、無駄な通信を抑制することができる。
【0068】
第4実施形態
本発明の第4実施形態の分散同期型情報システムは、図1に示す分散同期型情報システム10と同様な構成を有している。本実施形態では、同期情報(図2)に、「更新時刻」に代えて、「更新履歴」を含める。更新履歴は、更新を行った更新者、及び、その際のイベント番号の組を含み、どのマシンにおいて、いつ(どのイベント番号のときに)データが更新されたかの履歴を示している。本実施形態では、このような更新履歴を用いて、ネットワークからの切断時に、複数のマシンで同じ行が更新された際の矛盾を解決する。
【0069】
図13は、更新履歴の更新の様子を示している。データベース内同期情報更新手段103は、データベースの更新時に、図4のステップS406で、更新時刻に代えて、更新履歴の更新を行う。同図において、「A3」、「B5」等は、更新を行ったマシン名、及び、その際のイベント番号を示している。図13の行1301の更新履歴は、対応する主キー「10」の行が、マシンAにおいてイベント番号「3」のときに挿入され、その後、マシンBにおいてイベント番号「5」のとき更新され、更に、マシンCにおいてイベント番号「7」のときに更新されたことを示している。マシンA及びマシンBがそれぞれ行1301を有するとき、マシンBがネットワークから切断し、主キー「10」の行を更新すると、マシンBのデータベース内同期情報更新手段103は、図13に行1302として示すように、行1301の更新履歴に、マシンBにおいてイベント番号「8」のときに更新されたことを示す「B8」を追加する。
【0070】
マシンAは、マシンBがネットワークに再接続すると、ネットワーク再接続時の同期の動作により、マシンBから、行1302を更新情報として受信する。この更新情報の更新履歴と、マシンAが持つ行1301の更新履歴とを比較すると、取得した更新情報の同期情報の更新履歴(A3、B5、C7、B8)は、マシンAが有する行の更新履歴(A3、B5、C7)を含んでいる。このことは、行1301と行1302とは、ネットワークからの切断時に、別々に更新されたわけではなく、もともと同じ情報を持っており、それがネットワークから切断されている間にマシンBによって更新されたということを意味している。このように、取得した更新情報の更新履歴が、自身の更新履歴を含んでいる場合には、更新は、図13の順序1303に示すように直線状に行われている。このような場合には、矛盾は存在せず、また、行1302のデータが、行1301のデータよりも新しいとわかるため、マシンAは、行1301を行1302で更新すればよい。
【0071】
図14は、更新履歴の更新の様子の別の例を示している。同図に示す行1401の更新履歴は、「A3、B5、C7、A5、A7」であり、行1402の更新履歴は、「A3、B5、C7、B8」となっている。両者の更新履歴を比較すると、図14に順序1403として示すように、「C7」までの更新は同じであり、その後の更新が相違する。これは、ネットワーク切断後に、ネットワーク接続中のマシンとネットワークから切断したマシンとにおいて、又は、共にネットワークから切断したマシンにおいて、別々に更新が行われたことを意味している。この場合、マシンA及びマシンBがネットワークに再接続した際には、何らかの矛盾解決が必要になる。矛盾解決の方法としては、特定のマシンを優先する、或いは、ユーザに選択させるなどの方法がある
【0072】
矛盾解決により、何れかの行を優先した場合には、マシン内でその行を新たに更新したものとして取り扱う。例えば、マシンCが行1402を有し、行1401と行1402について、「B8」の更新を「A5、A7」の更新に優先させる、つまり、行1402を優先する場合には、行1402の「データ9」はそのままで、更新者を「マシンC」、イベント番号を新たに割り当てた「11」として、関係データベース102を更新したものとする。その際、更新履歴に、「C11」を追加すると共に、「C11」が「A5、A7」の更新に優先してされたことを示す優先指示として、「優先:A5、A7」を付加する。このように優先指示を付加する理由は、例えばユーザにどちらかの更新を優先するかを選択させた場合に、その選択結果を保持することで、再度ユーザに選択を要求しないようにするためである。
【0073】
次に、マシンDが行1401を有しており、このマシンDがネットワークに再接続した場合について考える。この場合、マシンDは、マシンCから、行1404を更新情報として受信する。行1401の更新履歴と、行1404の更新履歴とを比較すると、先頭「A3」から「C7」までは同じである。また、行1401の更新履歴から、行1404の更新履歴との共通部分を除いた部分は「A5、A7」であり、行1404の更新履歴には、「優先A5、A7」が含まれている。このように、更新情報受信側マシンの行の更新履歴の途中までが更新情報の更新履歴と同じであり、それ以降の部分が、更新情報の更新履歴において優先指示されているときには、取得した更新情報の更新履歴が、自身の更新履歴を含んでいるものとして取り扱う。このようにすることで、更新履歴に「A5、A7」を含む行についても、「C11」によって更新された行で更新することができる。
【0074】
図15は、ネットワーク再接続したマシンの動作手順を示している。同図に示す手順は、図8のステップS805がステップS1501に置き換わり、ステップS1502が追加されている点で、第1実施系におけるネットワークに再接続したマシンの動作手順と相違する。更新情報受信側マシンの再接続時同期手段104の更新情報送信要求手段106は、ステップS801で、更新マシンごとの最大イベント番号を検索する。その際、更新情報送信要求手段106は、同期情報201(図2)のイベント番号に加えて、更新履歴を含めて、各更新マシンについて最大のイベント番号を検索する。
【0075】
再接続時同期手段104は、ステップS804で、関係データベース102に、更新情報送信側マシンから受信した更新情報に対応する行が存在すると判断すると、更新情報の同期情報に含まれる更新履歴と、関係データベース102の対応する行の同期情報の更新履歴とを比較する(ステップS1501)。比較の結果、取得した更新履歴の更新履歴が、自身の関係データベース102の対応する行の更新履歴を含む、或いは、優先指示によって、対応する行の更新履歴を含むとみなせる場合には、矛盾は起きていないので、ステップS806へ進んで、関係データベース102の対応する行を、取得した更新履歴の行で更新する。
【0076】
例えば、更新情報受信側マシンが図13に示す行1301を有し、更新情報として行1302を受信した場合には、ステップS1501では、行1301の更新履歴は、行1302の更新履歴に含まれると判断される。この場合、更新情報を受信した更新情報受信側マシンは、ステップS806からS807へと進み、取得した行1302で、関係データベース102を更新する。また、更新情報受信側マシンが図14に示す行1401を有し、更新情報として行1404を受信した場合には、行1401の更新履歴は、行1404の更新履歴には含まれないものの、更新履歴の共通部分「A3、B5、C7」の後ろが、行1404の更新履歴の優先指示で指定される「A5、A7」となっているため、ステップS1501では、行1401の更新履歴は、行1402の更新履歴に含まれるものとして取り扱われる。このため、関係データベース102の行1401は、更新情報の行1404により更新される。
【0077】
取得した更新情報の更新履歴と関係データベース102の対応する行の更新履歴とが、包含関係にないとき、又は、更新履歴の優先指示を参照しても更新履歴の包含関係がないときには、同じ行が複数のマシンで別々に更新されており、矛盾が発生している。この場合には、矛盾を解決するように、行を更新する(ステップS1502)。ステップS1502では、例えばユーザに矛盾する行のうちの何れを優先するかを選択させ、選択された行で、関係データベース102を更新する。或いは、更新時刻が遅い方を優先して、その行で更新しても良い。
【0078】
ステップS1502の更新では、優先する側の行について、更新者を自装置、イベント番号を新たに割り当てたイベント番号として、更新履歴に、今回更新分の情報を追加する。その際、選択されなかった行の更新履歴のうちで、選択された行の更新履歴との共通部分を除く部分を、優先指示として、更新された行の更新履歴に含める。例えば、図14の行1401と行1402について、行1402を優先させる場合には、行1401の更新履歴のうちで、行1402の更新履歴との共通部分を除く「A5、A7」を、行1404に示すように、今回更新分の履歴「C11」の優先指示として付加する。更新情報受信側マシンは、ステップS1502で関係データベース102を更新すると、接続中同期手段105により、ネットワーク接続中の各マシンに、更新した行を送信する。
【0079】
本実施形態では、同期情報に、どのような順序(経路)で更新が行われたかを示す更新履歴を含める。この更新情報を用い、ネットワーク再接続時の同期の動作において取得した更新情報の更新履歴が、自身の更新履歴を含むか否かを調べることにより、矛盾が発生しているか否か、つまり、受信した更新情報と、自装置の関係データベース102の対応する行とが、ネットワーク切断後に同時に更新されたものであるか、或いは、一方でのみ更新されたものであるかを、判別できる。また、矛盾を解決した際には、その結果を更新履歴に含めることで、ネットワーク接続中の他のマシンに矛盾解決の際にどちらの更新を優先したかを伝播することができ、再度、矛盾解決の判断を行うことを避けることができる。
【0080】
ここで、第1又は第2実施形態の動作と、本実施形態の動作とを組み合わせる場合には、図6を参照して説明したように、各マシンが新たに通信可能になったマシンを発見すると、おのおのが「更新情報受信側マシン」として同期を行う。従って、複数のマシンが既にネットワークに接続している状態で、あるマシンがネットワークイン再接続すると、更新情報の受信が同時に全マシンで行われ、全てのマシンで矛盾解決の動作が必要となる可能性がある。これに対し、第3実施形態の動作と本実施形態の動作とを組み合わせる場合には、第3実施形態では、更新情報をネットワーク接続中のマシンに対してマルチキャスト送信するため、矛盾解決の際に優先した更新の情報をネットワーク接続中の各マシンに伝播することができ、矛盾解決の動作は1回で済む。従って、本実施形態の動作は、第3実施形態の動作と組み合わせることが好ましい。
【0081】
第5実施形態
本発明の第5実施形態の分散同期型情報システムは、図1に示す分散同期型情報システムと同様な構成に加え、履歴削除手段を有している。第4実施形態では、同期情報に更新履歴を含めたが、この更新履歴は、更新を行うたびに増大する。本実施形態では、各マシンにおいて、どの時点までの更新が伝播したかを管理し、更新履歴の不要部分を削除する。また、本実施形態では、各マシンにおいて、どの時点までの更新が伝播したかを管理して、同期情報の削除フラグが「Y」の行を削除する。
【0082】
本実施形態では、各マシンは、各マシンにおいてどの時点の更新までが伝播したかを示す情報として、各マシンが持つ更新者ごとの最大イベント番号の情報を記憶する。図16は、各マシンが記憶する、各マシンが持つ更新者ごとの最大イベント番号の具体例を示している。例えば、マシンAが同図に示す表1601を記憶している場合には、マシンAは、自装置の関係データベース102については、更新者「マシンA」はイベント番号「20」まで、更新者「マシンB」はイベント番号「11」まで、更新者「マシンC」はイベント番号「15」の更新までが行われていることを認識(把握)している。また、マシンAは、マシンBの関係データベース102では、更新者「マシンA」はイベント番号「15」まで、更新者「マシンB」はイベント番号「11」まで、更新者「マシンC」はイベント番号「7」の更新までが行われていることを認識している。
【0083】
各マシンが記憶する各マシンが持つ更新者ごとの最大イベント番号の表の作成について説明する。システム運用開始時の表1601における最大イベント番号の初期値は0である。各マシンは、自装置の関係データベース102を更新すると、自装置が記憶する各マシンが持つ更新者ごとの最大イベント番号の表1601の「自装置が持つ最大イベント番号」の行の更新者「自装置」の値を、データベース内同期情報更新手段103により新たに割り当てられたイベント番号に書き換える。例えば、マシンA内で、関係データベース102が更新された場合には、マシンAは、自装置が記憶する最大イベント番号の表1601の「マシンAが持つ最大イベント番号」の行の更新者「マシンA」の値を、新たに割り当てられたイベント番号に書き換える。
【0084】
マシンAでデータが更新された場合、その更新は、接続中同期手段105により、ネットワーク接続中のマシンに伝播される。各マシンは、他のマシンにおける更新が伝播されると、自装置が記憶する最大イベント番号の表1601の「自装置が持つ最大イベント番号」の行の更新者「マシンA」の値を、更新内容と共に伝播されたイベント番号に書き換える。その際、ネットワーク接続中のマシンを判断し、「ネットワーク接続中の各マシンがもつ最大イベント番号」の行の更新者「マシンA」の値を、伝播されたイベント番号に書き換える。これは、ネットワーク接続中の各マシンに、マシンAでの更新が伝播されるためである。ネットワーク接続中のマシンは、例えば、データを送信した際に応答があるか否かによって判断することができる。或いは、死活信号を用いて、周期的に死活信号を受信できたマシンを、ネットワーク接続中のマシンと判断しても良い。
【0085】
例えば、マシンBは、マシンAから、ネットワーク接続中の同期の動作により、マシンAでの更新内容を受け取り、更新者を「マシンA」として、関係データベース102を更新する。その際、マシンBは、自装置が記憶する最大イベント番号の表1601の「マシンBが持つ最大イベント番号の行の更新者「マシンA」の値を、マシンAから伝播されたイベント番号に書き換える。また、マシンCがネットワークに接続していた場合には、マシンAにおける更新はマシンCにも伝播するため、マシンBが記憶する最大イベント番号の表1601の「マシンCが持つ最大イベント番号」の行の更新者「マシンA」の値を、マシンAから伝播されたイベント番号に書き換える。マシンCがネットワークから切断されていた場合には、マシンAにおける更新はマシンCには伝播されないため、「マシンCが持つ最大イベント番号」の値は書き換えない。
【0086】
ネットワーク再接続時の動作では、更新情報送信側マシンは、ステップS903(図9)で抽出した行をエンコードして送信する際に、記憶する各マシンの更新者ごとの最大イベント番号の表1601をエンコードして、抽出した行と共に、更新情報受信側マシンに送信する。更新情報受信側マシンは、ステップS803(図8)で更新情報を取得すると、更新情報送信側マシンから受信した各マシンが持つ最大イベント番号の表と、自装置が記憶する各マシンが持つ更新者ごとの最大イベント番号の表とを組み合わせて、記憶する最大イベント番号の表を更新する。その後、再接続時の同期の動作により、関係データベース102を更新し、その更新に伴って、最大イベント番号の表の自装置が持つ最大イベント番号の行を更新する。
【0087】
図17は、再接続時の同期の動作における、各マシンが持つ最大イベント番号の表の更新の様子を示している。例えば、マシンAが表1701を記憶し、マシンBが表1702を記憶していたとする。マシンBを更新情報受信側マシンとし、マシンAを更新情報送信側マシンとすると、再接続時の同期では、マシンBは、マシンAから表1701を取得する。マシンBは、記憶する表1702の各項目の値と、受信した表1701の各項目の値とを比較し、値が大きいほうを選択して、各マシンが持つ更新者ごとの最大イベント番号の表を表1703に更新する。例えば、表1701におけるマシンAが持つ更新者「マシンB」の最大イベント番号は「11」であり、表1702におけるマシンAが持つ更新者「マシンB」の最大イベント番号は「7」である。この場合には、「11」を選択する。
【0088】
削除フラグが「Y」に設定された行(同期情報)の削除について説明する。削除フラグは、再接続時の同期において、ネットワークから切断されたマシンにおいて行が新たに挿入されたのか、ネットワーク接続中のマシンにおいて行が削除されたのかを判別するために用いられる。従って、行を削除する更新が全てのマシンに伝播されていることが確認できれば、その行自体を削除することができる。
【0089】
各マシンが持つ更新者ごとの最大イベント番号の表1601(図16)において、更新者ごとに最小値を求めると、マシンAは「15」、マシンBは「7」、マシンCは「7」となる。これは、表1601を記憶するマシンは、各マシンで、更新者ごとに、最低限これらイベント番号までの更新がされていることを認識していることを意味する。つまり、全マシンに、更新者をマシンAとする更新はイベント番号「15」まで、更新者をマシンBとする更新はイベント番号「7」まで、更新者をマシンCとする更新はイベント番号「7」まで伝播されていると認識していることを意味する。従って、削除フラグが「Y」に設定された行のイベント番号が、その行を更新したマシンの最大イベント番号の最小値以下の値であれば、その行を削除することができる。
【0090】
各マシンは、任意のタイミングで、例えば定期的に、或いは、他のマシンとの同期時に、削除フラグが「Y」に設定された行のイベント番号と、各マシンが持つ更新者ごとの最大イベント番号の、その行を更新したマシンの最小値とを比較し、その行のイベント番号が、最大イベント番号の最小値以下であるときには、その行を削除する。図3に示すように、データと同期情報が分離されているときには、削除フラグが「Y」に設定された行に対応する同期情報を削除する。例えば、削除フラグが「Y」に設定された行の更新者がマシンCであり、イベント番号が「3」であれば、表1601における更新者「マシンC」の最大イベント番号の最小値は「7」であるため、その行を関係データベース102から削除する。
【0091】
次に、更新履歴の削除について説明する。図18は、更新履歴削除前の行と更新履歴削除後の行とを示している。更新履歴については、全てのマシンに伝播した更新に関しては、更新履歴から削除しても問題がない。例えば、マシンAが、図16に示す表1601を記憶する場合には、マシンAは、各更新者についての最大イベント番号の最小値である「A15」、「B7」、「C7」までの更新は、全マシンに伝播していると認識している。このため、更新履歴削除手段は、図18に示す行1801については、この行の更新履歴「A3、B5、C7、A20」から「A3、B5、C7」を削除する。これにより、更新履歴削除後の行1802の更新履歴は「A20」のみとなる。履歴削除手段は、任意のタイミングで、例えば定期的に、或いは、他のマシンとの同期時に、更新履歴の不要部分を削除する。
【0092】
ただし、任意の2台がデータを同期しようとした際に、それぞれのマシンにおいて更新履歴から削除した内容が異なる場合がある。これは、各マシンが記憶する、各マシンが持つ更新者ごとの最大イベント番号の表における更新者ごとの最大イベント番号の最小値が、マシンごとに異なる場合があるためである。例えば、マシンAが図17に示す表1701(図16の表1601と同じ内容)を記憶し、マシンBが表1702を記憶する場合には、マシンAが記憶する表1701では、更新者「マシンA」の最大イベント番号の最小値は「15」であり、マシンBが記憶する表1702では、更新者「マシンA」の最大イベント番号の最小値は「11」となる。これは、マシンAは、自装置が更新者となる更新についてイベント番号「15」までの更新が全マシンに伝播していると認識しており、マシンBは、更新者「マシンA」の更新については、イベント番号「11」までの更新が全マシンに伝播していると認識していることを意味する。
【0093】
図19は、マシンBにおける更新履歴の削除の様子を示している。同図に示す行1901は、図18に示す行1801と同じ主キーを有しており、「A20」の更新がされる前の状態を示している。マシンBが、各マシンが持つ更新者ごとの最大イベント番号として図17に示す表1702を記憶していた場合、更新者「マシンC」についての最大イベント番号の最小値は「6」である。従って、マシンBが、図19に示す行1901から更新履歴を削除すると、行1902に示すように、更新履歴は「C7」となる。この場合、マシンAとマシンBとが図15に示す手順で同期しようとすると、行1802(図18)の更新履歴と行1902の更新履歴とは包含関係にないため、本来は矛盾しない更新であるのに、矛盾した更新であると誤って認識することになる。
【0094】
そこで、更新情報送信側マシンにおいて、どの更新までを更新履歴から削除したかを、更新情報受信側マシンに伝達する。具体的には、更新情報送信側マシンは、更新情報受信側マシンに抽出した行をエンコードして送信する際に、自装置が記憶する「各マシンが持つ更新者ごとの最大イベント番号の表」をエンコードして送信する。更新情報受信側マシンは、更新情報送信側マシンから受信した「各マシンが持つ更新者ごとの最大イベント番号の表」、自装置が記憶する「各マシンが持つ更新者ごとの最大イベント番号の表」とのうちの値が大きいほうを選択して、「各マシンが待つ更新者ごとの最大イベント番号の表」を更新する。その後、更新された表について、更新者ごとに、最大イベント番号の最小値を求める。
【0095】
図17の例では、マシンAが記憶する表1701と、マシンBが記憶する表1702とにより、マシンBが記憶する「各マシンが持つ最大イベント番号の表」は、表1703に示すように更新される。この場合、最大イベント番号の最小値は、「A11」、「B7」、「C6」(表1702)から、「A15」、「B7」、「C7」となる。更新情報受信側マシンは、ステップS1501(図15)で、更新履歴を比較する際に、自装置の関係データベース102の更新情報に対応する行の更新履歴から、更新した各マシンが持つ最大イベント番号の表の更新者ごとの最大イベント番号の最小値を用いて、更新履歴を削除する。その上で、更新情報の更新履歴と、関係データベース102の更新情報に対応する行の更新履歴とを比較し、矛盾が発生しているか否かを調べる。
【0096】
例えば、マシンBが図19に示す行1902を記憶し、更新情報として図18に示す行1802を受信した場合には、更新された表1703を参照して、行1902の更新履歴から「C7」を削除する。このように更新履歴が削除された行1903と、更新情報の更新履歴とを比較すると、行1903の更新履歴は“空”であるので、ステップS1501では、矛盾があるとは判断されず、ステップS810へ進んでデータが更新される。更新情報受信側マシンは、ステップS810でデータを更新した場合には、その更新に対応して、「各マシンがもつ更新者ごとの最大イベント番号の表」の自装置が持つ最大イベント番号の行を更新する。例えば、マシンBが、行1903を行1802で更新した場合には、マシンBは、表1703(図17)のマシンBが持つ最大イベント番号の行の更新者「マシンA」の値を、「20」に更新する。
【0097】
本実施形態では、各マシンが、各マシンに更新者ごとにどの更新までが伝播したかを記憶し、その情報を参照して、既に全てのマシンに伝播しており、不要となった更新履歴や、削除フラグが「Y」に設定された行(同期情報)を削除する。このようにすることで、更新履歴や同期情報を記憶するために必要な記憶容量を少なくすることができ、記憶装置の記憶容量を有効に使用することができる。
【0098】
第6実施形態
図20は、本発明の第6実施形態の分散同期型情報システムの構成を示している。本実施形態では、分散同期型情報システム10aは、ネットワークを介して接続された複数のコンピュータ(同図の例では、3台のコンピュータ2001〜2003)により構成される。各コンピュータには、記録媒体2011〜2013が接続されており、各記録媒体は、コンピュータを図1に示すアプリケーション101、データベース内同期情報更新手段103、再接続時同期手段104、及び、接続中同期手段105として機能させるプログラム、及び、関係データベース102が記憶されている。各コンピュータは、プログラムを読み込んで動作することにより、第1〜第5実施形態で説明した動作により、関係データベース102を同期する。
【0099】
なお、図2では、同期情報に、更新の前後を判断する情報として「イベント番号」を含め、何れの更新を優先すべきかを判断する際に用いる情報として「更新時刻」を含めたが、更新の前後を判断するための情報として「更新時刻」を採用する場合には、更新の前後を判断するための情報と、何れの更新を優先すべきかを判断するための情報とを共用することができる。更新の前後を判断するための情報として、更新時刻を用いる場合には、上記各実施形態で説明した最大イベント番号を、直近の更新時刻と読みかえればよい。また、あるイベント番号以降のイベント番号の部分を、ある更新時刻以降の更新と読み替えればよい。
【0100】
以上、本発明をその好適な実施形態に基づいて説明したが、本発明の情報装置、分散同期型情報システム、情報同期方法、及び、プログラムは、上記実施形態例にのみ限定されるものではなく、上記実施形態の構成から種々の修正及び変更を施したものも、本発明の範囲に含まれる。
【産業上の利用可能性】
【0101】
本発明は、パーソナルコンピュータや情報家電、携帯電話、PDAといった機器において、それらが利用する情報を同期する用途に適用できる。また、ネットワークで接続されたサーバ群の間で、データベース内の情報を同期するための用途にも適用できる。
【図面の簡単な説明】
【0102】
【図1】本発明の第1実施形態の分散同期型情報システムの構成を示すブロック図。
【図2】関係データベースのデータ構造の具体例を示す図。
【図3】関係データベースのデータ構造の別の具体例を示す図。
【図4】データベース内同期情報更新手段の動作手順を示すフローチャート。
【図5】接続中同期手段の動作手順を示すフローチャート。
【図6】再接続時同期手段の動作手順を示すフローチャート。
【図7】ネットワーク再接続時の関係データベースの更新の様子を示すブロック図。
【図8】更新情報受信側マシンのネットワーク再接続時の更新処理の詳細な手順を示すフローチャート。
【図9】更新情報送信側マシンのネットワーク再接続時の更新処理の詳細な手順を示すフローチャート。
【図10】ネットワーク再接続時の更新処理において、2つのマシン間でやり取りされる情報の具体例を示す図。
【図11】本発明の第2実施形態の分散同期型情報システムにおけるネットワーク接続中の同期の動作手順を示すフローチャート。
【図12】本発明の第3実施形態の分散同期型情報システムにおけるネットワーク再接続時の同期の動作手順を示すフローチャート。
【図13】更新履歴の更新の様子を示す図。
【図14】更新履歴の更新の別の例を示す図。
【図15】ネットワーク再接続したマシンの動作手順を示すフローチャート。
【図16】各マシンが記憶する、各マシンが持つ更新者ごとの最大イベント番号の具体例を示す図。
【図17】再接続時の同期の動作における、各マシンが持つ最大イベント番号の表の更新の様子を示す図。
【図18】更新履歴削除前の行と更新履歴削除後の行とを示す図。
【図19】マシンBにおける更新履歴の削除の様子を示す図。
【図20】本発明の第6実施形態の分散同期型情報システムの構成を示すブロック図。
【図21】非特許文献1に記載の技術における情報同期の様子を示す図。
【符号の説明】
【0103】
10:分散同期型情報システム
100、110、120:情報機器
101:アプリケーション
102:関係データベース
103:データベース内同期情報更新手段
104:再接続時同期手段
105:接続中同期手段
106:更新情報送信要求手段
107:更新情報送信手段
201:同期情報
2001、2002、2003:コンピュータ
2011、2012、2013:記録媒体
【特許請求の範囲】
【請求項1】
それぞれがデータベースを有する複数の情報処理装置を備え、該情報処理装置の間で前記データベースを同期させる分散同期型情報システムにおいて、
前記情報処理装置のそれぞれが、
前記データベースの各データと、データ更新を行った情報処理装置を示す更新者、及び、情報処理装置内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶する記憶装置を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他の情報処理装置に送信する更新情報送信要求手段と、
前記更新情報送信要求を受信した他の情報処理装置から、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信し、自装置内の前記データベース及び同期情報を更新する第1のデータベース同期手段とを備えたことを特徴とする分散同期型情報システム。
【請求項2】
自装置内で更新者として前記データベースを更新すると、自装置内での更新の前後を判断するための情報を作成し、当該更新データに対応させて同期情報を更新する同期情報更新手段を更に備える、請求項1に記載の分散同期型情報システム。
【請求項3】
前記情報処理装置内での更新の前後を判断するための情報が、前記情報処理装置内で前記データベースを更新するたびにインクリメントされる情報処理装置ごとのイベント番号である、請求項1又は2に記載の分散同期型情報システム。
【請求項4】
前記同期情報が更新時刻を含み、前記第1のデータベース同期手段は、前記更新情報に含まれる同期情報の更新時刻が、自装置が記憶する同期情報の更新時刻よりも新しいと、前記データベース及び同期情報を更新する、請求項1〜3の何れか一に記載の分散同期型情報システム。
【請求項5】
前記同期情報が、現時点までに更新を行った情報処理装置と、情報処理装置内での更新の前後を判断するための情報との組を含む更新履歴を更に含む、請求項1〜4の何れか一に記載の分散同期型情報システム。
【請求項6】
前記第1のデータベース同期手段は、受信した更新情報に含まれる更新履歴と、自装置が記憶する更新履歴とを比較し、受信した更新情報に含まれる更新履歴が、自装置が記憶する更新履歴を含むと判断すると、前記データベース及び対応する同期情報を更新する、請求項5に記載の分散同期型情報システム。
【請求項7】
各情報処理装置のデータベースに反映された更新について、更新者ごとに最新の更新を示す情報を記憶する更新伝播情報を参照して、前記更新履歴から、全ての情報処理装置のデータベースで反映されている更新以前の履歴を削除する履歴削除手段を更に備える、請求項5又は6に記載の分散同期型情報システム。
【請求項8】
自装置内で前記データベースを更新すると、ネットワーク接続中の他の情報処理装置に、更新データと、該更新データに対応する同期情報とを送信する更新伝播手段と、
他の情報処理装置の更新伝播手段によって送信された更新データ及び同期情報を受信し、前記データベース及び同期情報を更新する第2のデータベース同期手段とを更に備える、請求項1〜7の何れか一に記載の分散同期型情報システム。
【請求項9】
他の情報処理装置から更新情報送信要求を受信すると、自装置が記憶する同期情報を参照して、受信した更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新を検索し、該検索により抽出された更新の更新データと、該更新データに対応する同期情報とを含む更新情報を、前記更新情報送信要求を送信した情報処理装置に向けて送信する更新情報送信手段とを更に備える、請求項1〜8の何れか一に記載の分散同期型情報システム。
【請求項10】
ネットワークに再接続された情報処理装置が、ネットワークに接続されている他の情報処理装置のうちの1つから更新情報送信要求を受信すると、該再接続された情報処理装置の前記更新情報送信手段は、前記更新情報をネットワークに接続された他の情報処理装置に向けてマルチキャスト送信する、請求項9に記載の分散同期型情報システム。
【請求項11】
それぞれがデータベースを有する複数の情報処理装置を備え、該情報処理装置の間で前記データベースを同期させる分散同期型情報システムにおけるデータベース同期方法おいて、
前記情報処理装置が、データベース更新時に、更新データと、データ更新を行った情報処理装置を示す更新者、及び、情報処理装置内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶するステップと、
前記情報処理装置が、前記同期情報を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他の情報処理装置に送信するステップと、
前記情報処理装置が、前記更新情報送信要求を受信した他の情報処理装置から、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信するステップと、
前記情報処理装置が、受信した更新情報に基づいて、自装置内の前記データベース及び同期情報を更新するステップとを有することを特徴とする方法。
【請求項12】
前記同期情報を記憶するステップでは、前記情報処理装置は、自装置内で更新者として前記データベースを更新すると、自装置内での更新の前後を判断するための情報を作成し、当該更新データに対応させて同期情報を更新する、請求項11に記載の方法。
【請求項13】
前記情報処理装置内での更新の前後を判断するための情報が、前記情報処理装置内で前記データベースを更新するたびにインクリメントされる情報処理装置ごとのイベント番号である、請求項11又は12に記載の方法。
【請求項14】
前記同期情報が更新時刻を含み、前記データベース及び同期情報を更新するステップでは、前記情報処理装置は、前記更新情報に含まれる同期情報の更新時刻が、自装置が記憶する同期情報の更新時刻よりも新しいと、前記データベース及び同期情報を更新する、請求項11〜13の何れか一に記載の方法。
【請求項15】
前記同期情報が、更新を行った情報処理装置と、情報処理装置内での更新の前後を判断するための情報との組を含む更新履歴を更に含む、請求項11〜14の何れか一に記載の方法。
【請求項16】
前記情報処理装置が、受信した更新情報に含まれる更新履歴と、自装置が記憶する更新履歴とを比較するステップを更に有し、前記情報処理装置は、受信した更新情報に含まれる更新履歴が、自装置が記憶する更新履歴を含むと判断すると、前記データベース及び対応する同期情報を更新する、請求項15に記載の方法。
【請求項17】
前記情報処理装置が、各情報処理装置のデータベースに反映された更新について、更新者ごとに最新の更新を示す情報を記憶する更新伝播情報を参照して、前記更新履歴から、全ての情報処理装置のデータベースで反映されている更新以前の履歴を削除するステップを更に有する、請求項15又は16に記載の方法。
【請求項18】
前記情報処理装置が、自装置内で前記データベースを更新すると、ネットワーク接続中の他の情報処理装置に、更新データと、該更新データに対応する同期情報とを送信するステップと、
前記情報処理装置が、前記更新データ及び該更新データに対応する同期情報を送信するステップで送信された更新データ及び同期情報を受信し、前記データベース及び同期情報を更新するステップとを更に有する、請求項11〜17の何れか一に記載の方法。
【請求項19】
前記情報処理装置が、他の情報処理装置から更新情報送信要求を受信すると、自装置が記憶する同期情報を参照して、受信した更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新を検索するステップと、
前記情報処理装置が、前記検索により抽出された更新の更新データと、該更新データに対応する同期情報とを含む更新情報を、前記更新情報送信要求を送信した情報処理装置に向けて送信するステップとを更に有する、請求項11〜18の何れか一に記載の方法。
【請求項20】
ネットワークに再接続された情報処理装置が、ネットワークに接続されている他の情報処理装置のうちの1つから更新情報送信要求を受信すると、前記更新情報を、ネットワークに接続された他の情報処理装置に向けてマルチキャスト送信するステップを更に有する、請求項19に記載の方法。
【請求項21】
データベースを有し、ネットワークを介して接続される他の情報処理装置との間で前記データベースを同期する情報処理装置において、
前記データベースの各データと、データ更新を行った情報処理装置を示す更新者、及び、情報処理装置内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶する記憶装置を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他の情報処理装置に送信する更新情報送信要求手段と、
前記更新情報送信要求を受信した他の情報処理装置から、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信し、自装置内の前記データベース及び同期情報を更新する第1のデータベース同期手段を備えたことを特徴とする情報処理装置。
【請求項22】
コンピュータが有するデータベースを、ネットワークを介して接続される他のコンピュータのデータベースと同期させるプログラムであって、前記コンピュータに、
データベース更新時に、更新データと、データ更新を行ったコンピュータを示す更新者、及び、コンピュータ内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶するステップと、
前記同期情報を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他のコンピュータに送信するステップと、
前記更新情報送信要求を受信した他のコンピュータから、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信するステップと、
受信した更新情報に基づいて、自装置内の前記データベース及び同期情報を更新するステップとを実行させることを特徴とするプログラム。
【請求項23】
前記コンピュータ内での更新の前後を判断するための情報が、前記コンピュータ内で前記データベースを更新するたびにインクリメントされるコンピュータごとのイベント番号である、請求項22に記載のプログラム。
【請求項24】
前記同期情報が更新時刻を含み、前記データベース及び同期情報を更新するステップでは、前記更新情報に含まれる同期情報の更新時刻が、自装置が記憶する同期情報の更新時刻よりも新しいと、前記データベース及び同期情報を更新する、請求項22又は23に記載のプログラム。
【請求項25】
前記同期情報が、更新を行ったコンピュータと、コンピュータ内での更新の前後を判断するための情報との組を含む更新履歴を更に含む、請求項22〜24の何れか一に記載のプログラム。
【請求項26】
前記コンピュータに、受信した更新情報に含まれる更新履歴と、自装置が記憶する更新履歴とを比較するステップを更に実行させ、前記データベース及び同期情報を更新するステップでは、更新履歴を比較するステップで、受信した更新情報に含まれる更新履歴が、自装置が記憶する更新履歴を含むと判断されると、前記データベース及び対応する同期情報を更新する、請求項25に記載のプログラム。
【請求項27】
前記コンピュータに、各コンピュータのデータベースに反映された更新について、更新者ごとに最新の更新を示す情報を記憶する更新伝播情報を参照して、前記更新履歴から、全てのコンピュータのデータベースで反映されている更新以前の履歴を削除するステップを更に実行させる、請求項25又は26に記載のプログラム。
【請求項28】
前記コンピュータに、
自装置内で前記データベースを更新すると、ネットワーク接続中の他のコンピュータに、更新データと、該更新データに対応する同期情報とを送信するステップと、
前記更新データ及び該更新データに対応する同期情報を送信するステップで送信された更新データ及び該更新データに対応する同期情報を受信し、前記データベース及び同期情報を更新するステップとを更に実行させる、請求項22〜27の何れか一に記載のプログラム。
【請求項29】
前記コンピュータに、
他のコンピュータから更新情報送信要求を受信すると、自装置が記憶する同期情報を参照して、受信した更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新を検索するステップと、
前記検索により抽出された更新の更新データと、該更新データに対応する同期情報とを含む更新情報を、前記更新情報送信要求を送信したコンピュータに向けて送信するステップとを更に実行させる、請求項22〜28の何れか一に記載のプログラム。
【請求項30】
前記コンピュータに、
前記コンピュータがネットワークに再接続した後に、ネットワークに接続された他のコンピュータのうちの1つから更新情報送信要求を受信すると、前記更新情報を、ネットワークに接続された他のコンピュータに向けてマルチキャスト送信するステップを更に実行させる、請求項29に記載のプログラム。
【請求項1】
それぞれがデータベースを有する複数の情報処理装置を備え、該情報処理装置の間で前記データベースを同期させる分散同期型情報システムにおいて、
前記情報処理装置のそれぞれが、
前記データベースの各データと、データ更新を行った情報処理装置を示す更新者、及び、情報処理装置内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶する記憶装置を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他の情報処理装置に送信する更新情報送信要求手段と、
前記更新情報送信要求を受信した他の情報処理装置から、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信し、自装置内の前記データベース及び同期情報を更新する第1のデータベース同期手段とを備えたことを特徴とする分散同期型情報システム。
【請求項2】
自装置内で更新者として前記データベースを更新すると、自装置内での更新の前後を判断するための情報を作成し、当該更新データに対応させて同期情報を更新する同期情報更新手段を更に備える、請求項1に記載の分散同期型情報システム。
【請求項3】
前記情報処理装置内での更新の前後を判断するための情報が、前記情報処理装置内で前記データベースを更新するたびにインクリメントされる情報処理装置ごとのイベント番号である、請求項1又は2に記載の分散同期型情報システム。
【請求項4】
前記同期情報が更新時刻を含み、前記第1のデータベース同期手段は、前記更新情報に含まれる同期情報の更新時刻が、自装置が記憶する同期情報の更新時刻よりも新しいと、前記データベース及び同期情報を更新する、請求項1〜3の何れか一に記載の分散同期型情報システム。
【請求項5】
前記同期情報が、現時点までに更新を行った情報処理装置と、情報処理装置内での更新の前後を判断するための情報との組を含む更新履歴を更に含む、請求項1〜4の何れか一に記載の分散同期型情報システム。
【請求項6】
前記第1のデータベース同期手段は、受信した更新情報に含まれる更新履歴と、自装置が記憶する更新履歴とを比較し、受信した更新情報に含まれる更新履歴が、自装置が記憶する更新履歴を含むと判断すると、前記データベース及び対応する同期情報を更新する、請求項5に記載の分散同期型情報システム。
【請求項7】
各情報処理装置のデータベースに反映された更新について、更新者ごとに最新の更新を示す情報を記憶する更新伝播情報を参照して、前記更新履歴から、全ての情報処理装置のデータベースで反映されている更新以前の履歴を削除する履歴削除手段を更に備える、請求項5又は6に記載の分散同期型情報システム。
【請求項8】
自装置内で前記データベースを更新すると、ネットワーク接続中の他の情報処理装置に、更新データと、該更新データに対応する同期情報とを送信する更新伝播手段と、
他の情報処理装置の更新伝播手段によって送信された更新データ及び同期情報を受信し、前記データベース及び同期情報を更新する第2のデータベース同期手段とを更に備える、請求項1〜7の何れか一に記載の分散同期型情報システム。
【請求項9】
他の情報処理装置から更新情報送信要求を受信すると、自装置が記憶する同期情報を参照して、受信した更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新を検索し、該検索により抽出された更新の更新データと、該更新データに対応する同期情報とを含む更新情報を、前記更新情報送信要求を送信した情報処理装置に向けて送信する更新情報送信手段とを更に備える、請求項1〜8の何れか一に記載の分散同期型情報システム。
【請求項10】
ネットワークに再接続された情報処理装置が、ネットワークに接続されている他の情報処理装置のうちの1つから更新情報送信要求を受信すると、該再接続された情報処理装置の前記更新情報送信手段は、前記更新情報をネットワークに接続された他の情報処理装置に向けてマルチキャスト送信する、請求項9に記載の分散同期型情報システム。
【請求項11】
それぞれがデータベースを有する複数の情報処理装置を備え、該情報処理装置の間で前記データベースを同期させる分散同期型情報システムにおけるデータベース同期方法おいて、
前記情報処理装置が、データベース更新時に、更新データと、データ更新を行った情報処理装置を示す更新者、及び、情報処理装置内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶するステップと、
前記情報処理装置が、前記同期情報を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他の情報処理装置に送信するステップと、
前記情報処理装置が、前記更新情報送信要求を受信した他の情報処理装置から、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信するステップと、
前記情報処理装置が、受信した更新情報に基づいて、自装置内の前記データベース及び同期情報を更新するステップとを有することを特徴とする方法。
【請求項12】
前記同期情報を記憶するステップでは、前記情報処理装置は、自装置内で更新者として前記データベースを更新すると、自装置内での更新の前後を判断するための情報を作成し、当該更新データに対応させて同期情報を更新する、請求項11に記載の方法。
【請求項13】
前記情報処理装置内での更新の前後を判断するための情報が、前記情報処理装置内で前記データベースを更新するたびにインクリメントされる情報処理装置ごとのイベント番号である、請求項11又は12に記載の方法。
【請求項14】
前記同期情報が更新時刻を含み、前記データベース及び同期情報を更新するステップでは、前記情報処理装置は、前記更新情報に含まれる同期情報の更新時刻が、自装置が記憶する同期情報の更新時刻よりも新しいと、前記データベース及び同期情報を更新する、請求項11〜13の何れか一に記載の方法。
【請求項15】
前記同期情報が、更新を行った情報処理装置と、情報処理装置内での更新の前後を判断するための情報との組を含む更新履歴を更に含む、請求項11〜14の何れか一に記載の方法。
【請求項16】
前記情報処理装置が、受信した更新情報に含まれる更新履歴と、自装置が記憶する更新履歴とを比較するステップを更に有し、前記情報処理装置は、受信した更新情報に含まれる更新履歴が、自装置が記憶する更新履歴を含むと判断すると、前記データベース及び対応する同期情報を更新する、請求項15に記載の方法。
【請求項17】
前記情報処理装置が、各情報処理装置のデータベースに反映された更新について、更新者ごとに最新の更新を示す情報を記憶する更新伝播情報を参照して、前記更新履歴から、全ての情報処理装置のデータベースで反映されている更新以前の履歴を削除するステップを更に有する、請求項15又は16に記載の方法。
【請求項18】
前記情報処理装置が、自装置内で前記データベースを更新すると、ネットワーク接続中の他の情報処理装置に、更新データと、該更新データに対応する同期情報とを送信するステップと、
前記情報処理装置が、前記更新データ及び該更新データに対応する同期情報を送信するステップで送信された更新データ及び同期情報を受信し、前記データベース及び同期情報を更新するステップとを更に有する、請求項11〜17の何れか一に記載の方法。
【請求項19】
前記情報処理装置が、他の情報処理装置から更新情報送信要求を受信すると、自装置が記憶する同期情報を参照して、受信した更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新を検索するステップと、
前記情報処理装置が、前記検索により抽出された更新の更新データと、該更新データに対応する同期情報とを含む更新情報を、前記更新情報送信要求を送信した情報処理装置に向けて送信するステップとを更に有する、請求項11〜18の何れか一に記載の方法。
【請求項20】
ネットワークに再接続された情報処理装置が、ネットワークに接続されている他の情報処理装置のうちの1つから更新情報送信要求を受信すると、前記更新情報を、ネットワークに接続された他の情報処理装置に向けてマルチキャスト送信するステップを更に有する、請求項19に記載の方法。
【請求項21】
データベースを有し、ネットワークを介して接続される他の情報処理装置との間で前記データベースを同期する情報処理装置において、
前記データベースの各データと、データ更新を行った情報処理装置を示す更新者、及び、情報処理装置内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶する記憶装置を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他の情報処理装置に送信する更新情報送信要求手段と、
前記更新情報送信要求を受信した他の情報処理装置から、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信し、自装置内の前記データベース及び同期情報を更新する第1のデータベース同期手段を備えたことを特徴とする情報処理装置。
【請求項22】
コンピュータが有するデータベースを、ネットワークを介して接続される他のコンピュータのデータベースと同期させるプログラムであって、前記コンピュータに、
データベース更新時に、更新データと、データ更新を行ったコンピュータを示す更新者、及び、コンピュータ内での更新の前後を判断するための情報を含む同期情報とを対応付けて記憶するステップと、
前記同期情報を検索し、前記更新者ごとの最新の更新を示す情報を含む更新情報送信要求を他のコンピュータに送信するステップと、
前記更新情報送信要求を受信した他のコンピュータから、前記更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新により更新された更新データ及び該更新データに対応する同期情報を含む更新情報を受信するステップと、
受信した更新情報に基づいて、自装置内の前記データベース及び同期情報を更新するステップとを実行させることを特徴とするプログラム。
【請求項23】
前記コンピュータ内での更新の前後を判断するための情報が、前記コンピュータ内で前記データベースを更新するたびにインクリメントされるコンピュータごとのイベント番号である、請求項22に記載のプログラム。
【請求項24】
前記同期情報が更新時刻を含み、前記データベース及び同期情報を更新するステップでは、前記更新情報に含まれる同期情報の更新時刻が、自装置が記憶する同期情報の更新時刻よりも新しいと、前記データベース及び同期情報を更新する、請求項22又は23に記載のプログラム。
【請求項25】
前記同期情報が、更新を行ったコンピュータと、コンピュータ内での更新の前後を判断するための情報との組を含む更新履歴を更に含む、請求項22〜24の何れか一に記載のプログラム。
【請求項26】
前記コンピュータに、受信した更新情報に含まれる更新履歴と、自装置が記憶する更新履歴とを比較するステップを更に実行させ、前記データベース及び同期情報を更新するステップでは、更新履歴を比較するステップで、受信した更新情報に含まれる更新履歴が、自装置が記憶する更新履歴を含むと判断されると、前記データベース及び対応する同期情報を更新する、請求項25に記載のプログラム。
【請求項27】
前記コンピュータに、各コンピュータのデータベースに反映された更新について、更新者ごとに最新の更新を示す情報を記憶する更新伝播情報を参照して、前記更新履歴から、全てのコンピュータのデータベースで反映されている更新以前の履歴を削除するステップを更に実行させる、請求項25又は26に記載のプログラム。
【請求項28】
前記コンピュータに、
自装置内で前記データベースを更新すると、ネットワーク接続中の他のコンピュータに、更新データと、該更新データに対応する同期情報とを送信するステップと、
前記更新データ及び該更新データに対応する同期情報を送信するステップで送信された更新データ及び該更新データに対応する同期情報を受信し、前記データベース及び同期情報を更新するステップとを更に実行させる、請求項22〜27の何れか一に記載のプログラム。
【請求項29】
前記コンピュータに、
他のコンピュータから更新情報送信要求を受信すると、自装置が記憶する同期情報を参照して、受信した更新情報送信要求に含まれる更新者ごとの最新の更新よりも新しい更新を検索するステップと、
前記検索により抽出された更新の更新データと、該更新データに対応する同期情報とを含む更新情報を、前記更新情報送信要求を送信したコンピュータに向けて送信するステップとを更に実行させる、請求項22〜28の何れか一に記載のプログラム。
【請求項30】
前記コンピュータに、
前記コンピュータがネットワークに再接続した後に、ネットワークに接続された他のコンピュータのうちの1つから更新情報送信要求を受信すると、前記更新情報を、ネットワークに接続された他のコンピュータに向けてマルチキャスト送信するステップを更に実行させる、請求項29に記載のプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【公開番号】特開2007−164523(P2007−164523A)
【公開日】平成19年6月28日(2007.6.28)
【国際特許分類】
【出願番号】特願2005−360713(P2005−360713)
【出願日】平成17年12月14日(2005.12.14)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】
【公開日】平成19年6月28日(2007.6.28)
【国際特許分類】
【出願日】平成17年12月14日(2005.12.14)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】
[ Back to top ]