情報同期装置
【課題】複数のテーブルの同期処理により、同じ情報が複数の行に存在したり、情報の追加が、変更として処理されたりすることを防止する。
【解決手段】複数のテーブルにおいて、ラベルの列と、値の列があるとする。情報源から送信された行について、以下の処理を行う。ラベルが等しく値が異なれば、値の更新とみなして同期対象テーブルの該当行におけるラベルに、情報源から与えられた値を上書きする。もし値が等しくラベルが異なれば、ラベルの変更と見なして同期対象テーブルの該当行における値に、送信されたラベルを上書きする。もし、ラベルと値の両方が等しければ、変更がないとみなして同期対象テーブルの該当行にはなにもしない。もし、同期対象テーブルのすべての行についてラベルも値も等しくなければ、新たな行の追加とみなして同期対象テーブルに新規の行を追加した上、送信されたラベルと値をコピーする。
【解決手段】複数のテーブルにおいて、ラベルの列と、値の列があるとする。情報源から送信された行について、以下の処理を行う。ラベルが等しく値が異なれば、値の更新とみなして同期対象テーブルの該当行におけるラベルに、情報源から与えられた値を上書きする。もし値が等しくラベルが異なれば、ラベルの変更と見なして同期対象テーブルの該当行における値に、送信されたラベルを上書きする。もし、ラベルと値の両方が等しければ、変更がないとみなして同期対象テーブルの該当行にはなにもしない。もし、同期対象テーブルのすべての行についてラベルも値も等しくなければ、新たな行の追加とみなして同期対象テーブルに新規の行を追加した上、送信されたラベルと値をコピーする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のテーブルの同期処理に関する。
【背景技術】
【0002】
近年のネットワークの普及により、1人の利用者が複数の情報端末を保有する場合が多い。また、1人の利用者が、複数のWebサービスを利用する場合も増えている。たとえば、多くの利用者は携帯電話とパーソナルコンピュータの両方を使っている。さらにまた多くの利用者は電子メール、チャット、音声通話、SNS(Social Networking Service)、情報共有など、やはり複数のWebサービスを使っている。
【0003】
このような状況においては、複数の情報端末やサーバ装置(以下、「サーバ」という)に存在する複数のデータベースのテーブルを同期することが望まれている。たとえば、パーソナルコンピュータに記憶されているアドレス帳に記載されている知人の電話番号を変更した時には、携帯電話の電話帳に記憶されているその知人の電話番号も自動的に変更されることが望まれている。
【0004】
また、利用者が複数のWebサービスの認識票を使い分けるのは煩雑である。そこで、あるWebサービスの上で、他のWebサービスの認識票を管理することも行われている。この場合には、各Webサービスの知人情報を管理する複数のテーブルを同期することに対する要求がある。複数の情報端末において、電子メールを送受信する場合も同じように、メールボックスを構成するデータベースを同期したいという要求がある。これらデータベースを構成する複数のテーブルは、同じサーバに存在することもあれば、異なるサーバに散在している場合もある。
【0005】
このようなテーブル間の同期に対する要求は、広く認識されてきた。このため、テーブル間の同期の手法が幾つか知られている。そのほとんどは、データベース管理システムより、同期すべきテーブルに対して追加、変更または削除の要求があった場合に、同期対象のテーブルに対して新たな行の追加、指定された行の変更または削除を実行するものである。たとえば、特許文献1には複数の情報端末に存在するメールボックスの同期の方法が開示されている。またたとえば、特許文献2にはネットワークで接続されたパーソナルコンピュータ、サーバ、プリンタ、機能複合型複写機等などに存在する複数のアドレス帳を同期する方法が開示されている。さらに、特許文献3には、同期対象のテーブルにおいて、その内容が同一である複数の行が検出された場合には、これら複数の行を統合することで、同期時の利便性を高めるための方法が開示されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2006−164067号公報
【特許文献2】特開2001−249882号公報
【特許文献3】米国特許第7,080,104号明細書
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、従来の方法には次のような問題点がある。図1を参照して、複数のテーブルを同期する際の、従来の方法に関する問題点について説明する。いま図1に示すようにサーバに記憶されている利用者Aの第1テーブル110および携帯端末に記憶されている利用者Aの第2テーブル120が同期対象だったとする。このサーバと携帯端末はネットワークで接続されている。上記2つのテーブルは、利用者Aによる書き換えや、他者からの情報開示に応じて同期する。図1の例では、これら2つのテーブルはユーザ名、ラベル、値、および行番号の4列を有する。
【0008】
従来の方法では、同期は、各テーブルにおける行番号および列番号を基準として用いられて実行される。たとえば、図1において第1テーブルの利用者Bの電話番号「650−111−1111」が、利用者Aの変更操作または利用者Bからの開示操作により、「650−999−9999」に変更された場合を考える。従来の方法では、サーバは行番号n=0の値113が「650−999−9999」であることを、通信手段やネットワークを通じて携帯端末に通知し、携帯端末は行番号n=0の値123を新しい「650−999−9999」に書き換える。すなわち、2つのテーブル間で同期を実行するには、変更後の情報に加えてテーブルのどの部分が変更されたのか、すなわちテーブルの行番号および列番号が変更されたのかも合わせて通知する必要がある。
【0009】
しかし、テーブルに変更が加えられる際、行番号と列番号が指定できるとは限らない。たとえば、利用者Aのテーブルが図1に示す初期状態にあるとして、「利用者Bの電話番号は650−999−9999である」という情報がサーバに対して通知されたとする。この時、変更を加えるべき行番号と列番号が指定されない場合がある。たとえば、利用者Bの情報端末は、図1に示すテーブルを持っておらず、この変更通知が、利用者Bの情報端末からの通知である場合を考える。この場合には、利用者Bの自宅の電話番号が、利用者Aの第1および第2テーブルにおいて何行目の情報なのかが通知に含まれない。また、たとえば利用者A自身が第1または第2テーブルに変更を加える場合にも、テーブルの行番号と列番号が明示的に指定されない場合もある。
【0010】
このように、複数のテーブルを同期する際の問題点としては、少なくとも以下の2点を挙げることができる。すなわち、第1の問題は、同期の結果、同値情報が複数行に存在してしまう場合がある点である。第2の問題は、意図しない上書きが行われる場合がある点である。以下、これらの問題点について順次説明する。
【0011】
第1の問題について説明する。第1の問題は、例えばテーブルの行番号と列番号が明示的に指定されない場合に発生する。今、図1に示す初期状態に対して、サーバが利用者Bの情報端末から「利用者Bの自宅電話番号は650−111−1111である」という情報を受信したとする。このとき、サーバはこれが利用者Aの第1および第2テーブルのどの部分に対する変更なのかを検知することができず、新しい情報としてn=2の行を追加した上、この行に受信した「利用者Bの自宅電話番号は650−111−1111」を加える。この時、利用者Aの第1および第2テーブルは同期するが、同期後に「利用者Bの自宅電話番号は650−111−1111」という単一の情報がn=0の行およびn=2の2つの行に存在することになる。これは電話帳の利便性を著しく損なう。
【0012】
次に第2の問題について説明する。第2の問題は逆にテーブルの行番号と列番号が明示的に指定された場合に起こる。たとえば今、図1に示す初期状態に対して、サーバが利用者Bの情報端末から「行番号n=0の行は、会社の電話番号が650−555−5555である」という情報を受信したとする。これはたとえば、利用者Aが自分の電話帳にあらかじめ利用者Bの自宅電話番号を入力しておいた状態で、追加で利用者Bの会社の電話番号がサーバに対して開示されたような場合である。この通知を受信したサーバは、利用者Aの第1および第2テーブルにおいて、行番号n=0の行を「利用者Bの会社の電話番号が650−555−5555である」という情報によって上書きする。しかし、利用者Aにとって図1のように初期状態に存在した自宅電話番号は必要な情報であり、異なる情報である利用者Bの会社の電話番号による上書きを望まないかもしれない。このように、もし行番号と列番号が明示的に指定された場合には、意図しない上書きが実行されてしまう場合がある。これもやはり電話帳の利便性を著しく損なう。
【0013】
上記第1および第2の問題は、サーバが利用者Bの情報端末から情報を受信した場合を用いて説明したが、たとえば利用者Aの第1テーブルに利用者Aが変更を加えた結果を、利用者Aの第2テーブルに伝える場合にも全く同様である。つまり、複数のテーブル間の同期においては、行番号および列番号を指定した情報の追加または変更を用いても、行番号および列番号を指定しない情報の追加または変更を用いても、上記第1または第2のどちらかの問題が解決できない。
【0014】
本願発明は、このような状況に鑑みてなされたものであり、複数のテーブルの同期に際し、同じ情報が複数箇所に発生したり、情報の追加を誤って変更として処理することで利用者にとって必要な情報が消去されたりしないような、複数テーブルの同期方法および装置を提供する。
【課題を解決するための手段】
【0015】
本発明の一実施形態として、第1のテーブルと第2のテーブルとを記憶する記憶手段と、
前記第1のテーブルの有する第1の行を、前記第2のテーブルの有する第2の行にコピーする第1のコピー手段と、情報端末より前記情報端末が記憶する第3のテーブルを受信する受信手段と、前記第3のテーブルの有する第3の行の第1の列にある第1の情報と、前記第2の行に含まれ、前記第1の列と同じ属性を有する前記第2のテーブルの第2の列にある第2の情報と、を比較する比較手段と、前記第1の情報と前記第2の情報が等しい場合に、前記第3の行の第4の列にある第3の情報を、前記第1の行の、前記第4の列と同じ属性を有する前記第1のテーブルの有する第5の列にコピーする第2のコピー手段と、
を有することを特徴とするサーバ装置が提供される。
【0016】
本発明の一実施形態として、第1のテーブルと第2のテーブルとを記憶する記憶手段と、
前記第1のテーブルの有する第1の行を、前記第2のテーブルの有する第2の行に第1のコピーするコピー手段と、外部情報源サーバ装置の記憶する第3のテーブルをネットワーク経由にて受信する受信手段と、前記第3のテーブルの有する第3の行の第1の列にある第1の情報と、前記第2の行に含まれ、前記第1の列と同じ属性を有する前記第2のテーブルの第2の列にある第2の情報とを比較する比較手段と、前記第1の情報と前記第2の情報が等しい場合に、前記第3の行の第4の列にある第3の情報を、前記第1の行の、前記第4の列と同じ属性を有する前記第1のテーブルの有する第5の列に第2のコピーするコピー手段と、を有することを特徴とするサーバ装置が提供される。
【0017】
本発明の一実施形態として、第1のテーブルと第2のテーブルとを記憶する記憶手段と、
前記第1のテーブルのすべての行を、前記第2のテーブルにコピーする第1のコピー手段と、情報端末が記憶する第3のテーブルを受信する受信手段と、前記コピーの後に、前記第3のテーブルの有する第1の行の第1の列にある第1の情報と、前記第3のテーブルの有する前記第1の行の第2の列にある第2の情報とにより形成される第1の情報対を、前記第2のテーブルの有する任意の行の前記第1の列と同じ属性を示す第3の列にある第3の情報と、前記第2のテーブルの有する前記任意の行の前記第2の列と同じ属性を示す第4の列にある第4の情報とにより形成される第2の情報対と比較する比較手段と、前記第2のテーブルのすべての行について、前記比較手段により前記第1の情報と前記第3の情報が等しくなく、かつ前記第2の情報と前記第4の情報が等しくないことが検出された場合に、前記第1のテーブルに新たな行を追加し、さらに前記新たな行の前記第1の列と同じ属性を示す第5の列に前記第1の情報をコピーし、かつ前記新たな行の前記第2の列と同じ属性を示す第6の列に前記第2の情報をコピーする第2のコピー手段と、を有することを特徴とするサーバ装置が提供される
【0018】
本発明の一実施形態として、第1のテーブルと第2のテーブルとを記憶する記憶手段と、前記第1のテーブルのすべての行を、前記第2のテーブルにコピーする第1のコピー手段と、外部情報源サーバ装置が記憶する第3のテーブルをネットワーク経由にて受信する受信手段と、前記コピーの後に、前記第3のテーブルの有する第1の行の第1の列にある第1の情報と、前記第3のテーブルの有する前記第1の行の第2の列にある第2の情報とにより形成される第1の情報対を、前記第2のテーブルの有する任意の行の前記第1の列と同じ属性を示す第3の列にある第3の情報と、前記第2のテーブルの有する前記任意の行の前記第2の列と同じ属性を示す第4の列にある第4の情報とにより形成される第2の情報対と比較する比較手段と、前記第2のテーブルのすべての行について、前記比較手段により前記第1の情報と前記第3の情報が等しくなく、かつ前記第2の情報と前記第4の情報が等しくないことが検出された場合に、前記第1のテーブルに新たな行を追加し、さらに前記新たな行の前記第1の列と同じ属性を示す第5の列に前記第1の情報をコピーし、かつ前記新たな行の前記第2の列と同じ属性を示す第6の列に前記第2の情報をコピーする第2のコピー手段と、を有することを特徴とするサーバ装置が提供される
【0019】
本発明の一実施形態として、第1のテーブルを記憶する記憶手段と、同期対象外部サーバ装置の記憶手段が記憶している第2のテーブルの第1の行を、前記第1のテーブルの有する第2の行にコピーする第1のコピー手段と、情報端末が記憶している第3のテーブルを受信する受信手段と、前記第3のテーブルの有する第3の行の第1の列にある第1の情報と、前記第2の行に含まれ、前記第1の列と同じ属性を有する前記第1のテーブルの第2の列にある第2の情報とを比較する比較手段と、前記第1の情報と前記第2の情報が等しいと前記比較手段により検出された場合に、前記第3の行の第4の列にある第3の情報を、前記第1の行に含まれる、前記第4の列と同じ属性を有する前記第2のテーブルの有する第5の列にコピーする第2のコピー手段と、を有することを特徴とするサーバ装置が提供される。
【発明の効果】
【0020】
本発明の方法、サーバ、情報端末、およびデータベースなどによれば、複数のテーブルの同期に際し、一つのテーブル内に同じ情報が複数箇所に発生したり、情報の追加を誤って変更として処理することで利用者にとって必要な情報が消去されたりすることを防止できる。
【図面の簡単な説明】
【0021】
【図1】従来の方法による同期に係る課題を説明するためのテーブルの一例である。
【図2】本願発明に係る同期サービスのサーバの概略構成図の一例である。
【図3】本願発明に係るサーバおよび情報端末のシステム構成図の一例である。
【図4】本願発明に係る同期対象テーブルを参照する情報端末の概略構成図の一例である。
【図5】本願発明に係る同期対象テーブルを有する情報端末の概略構成図の一例である。
【図6】本願発明に係る同期対象テーブルを有するサーバの概略構成図の一例である。
【図7】本願発明に係る同期対象テーブルを参照する情報端末の概略構成図の一例である。
【図8】本願発明に係る同期の情報源テーブルを有する情報端末の概略構成図の一例である。
【図9】本願発明に係る同期の情報源テーブルの初期状態のデータ例を示す図である。
【図10】本願発明に係る同期対象テーブル群の初期状態のデータ例を示す図である。
【図11】本願発明に係る同期処理の概略を示すフロー図である。
【図12】本願発明に係る同期の情報源テーブルの変更後のデータ例を示す図である。
【図13】本願発明に係る同期処理の詳細を示すフロー図である。
【図14】本願発明に係る同期対象テーブル群の同期後のデータ例を示す図である。
【図15】本願発明に係る同期対象テーブル群の同期後のデータ例を示す図である。
【発明を実施するための形態】
【0022】
以下に本発明を実施するための、形態について説明する。本発明の技術的範囲は、添付の特許請求の範囲によって明確に定義されているため、以下の説明は、単に本発明の一般原理を例示する目的で行われている。したがって、本発明は、以下の説明に限定して解釈されるべきではない。
【0023】
図2は、本願発明による複数テーブルの情報同期を実行する同期サービスNのサーバ200の概略構成図の一例である。同期サービスNのサーバ200は、記憶手段210(例えば、揮発性メモリ、不揮発性メモリ)、送受信手段220(例えば、通信インターフェース)、比較手段230(例えば、CPUの演算回路)、検索手段240(例えば、データベース操作プログラム)、HTML生成手段250(例えば、HTML生成プログラム)、およびコピー手段260(例えば、コピープログラム)を有する。また記憶手段210は利用者A第1テーブル211、利用者A第2テーブル212、利用者A第3テーブル213、利用者Bテーブル214、利用者A第1差分テーブル215、利用者A第2差分テーブル216、利用者A第3差分テーブル217、利用者A第2副差分テーブル218、および利用者A第3副差分テーブル219を有する。
【0024】
図3は、同期サービスNのサーバ200が、ネットワーク301を通じて情報同期サービスNを利用する利用者の情報端末やサーバと接続されている状態の一例である。図3に示す一例では、利用者Aが第1情報端末311、第2情報端末321、および第3情報端末331の3台の情報端末を通じて、情報同期サービスNを利用している。利用者Aの第3情報端末331は、WebサービスXのサーバ330を介して、同期サービスNのサーバ200と接続されている。同期サービスNのサーバ200とWebサービスXのサーバ330の間にあるネットワーク301と、WebサービスXのサーバ330と利用者Aの第3情報端末331の間にあるネットワーク302は、同じネットワークであっても、異なるネットワークであってもよい。さらに図3に示す一例では、利用者Bの情報端末341がネットワーク301を通じて同期サービスNのサーバ200に接続されている。
【0025】
図4は、利用者Aの第1情報端末311の概略構成図の一例である。利用者Aの第1情報端末は、送受信手段410、HTML解析手段420、表示手段430(例えば、ディプレし)、入力手段440(例えば、キーボード)、および記憶手段450を有する。
【0026】
図5は、利用者Aの第2情報端末321の概略構成図の一例である。利用者Aの第2情報端末は、送受信手段510、HTML解析手段520(例えば、HTML構文解析プログラム)、表示手段530、入力手段540、および演算手段550(例えば、CPUの演算回路)、および記憶手段560を有する。記憶手段560は、利用者A第2副テーブル561を有する。
【0027】
図6は、WebサービスXのサーバ330の概略構成図の一例である。WebサービスXのサーバ330は、送受信手段610、HTML生成手段620、演算手段630、および記憶手段660を有する。記憶手段660は、利用者A第3副テーブル661を有する。
【0028】
図7は、利用者Aの第3情報端末331の概略構成図の一例である。利用者Aの第3情報端末は、送受信手段710、HTML解析手段720、表示手段730、入力手段740、および記憶手段750を有する。
【0029】
図8は、利用者Bの情報端末341の概略構成図の一例である。利用者Bの情報端末は、送受信手段810、HTML解析手段820、表示手段830、入力手段840、および演算手段850を有する。
【0030】
同期サービスNのサーバの利用者A第1テーブル211に格納されている情報は、HTML生成手段250によってHTMLコードに変換され、利用者Aの第1情報端末311に送信される。利用者Aの第1情報端末は、これを受信後、HTML解析手段420で解析した上、表示手段430に表示する。なお、「HTMLコード」は情報が送受信される際の一形態である。任意の構造化文書の形態を用いることができる。また、一定の構文規則にしたがって生成された文字列なども使用できる。以下の記述においても同様である。
【0031】
同期サービスNのサーバの利用者A第2テーブル212の情報は、送受信手段220によって利用者Aの第2情報端末321に送信される。利用者Aの第2情報端末では、これを受信後、記憶手段560の利用者A第2副テーブル561に記憶する。利用者Aの第2情報端末は、利用者A第2副テーブル561に記憶された情報を表示手段530に表示する。ここで同期サービスNのサーバ200から利用者Aの第2情報端末に送信するデータ形式、および利用者A第2副テーブル561に記憶するデータ形式は特に限定されない。任意のデータ形式を用いることができる。
【0032】
同期サービスNのサーバの利用者A第3テーブル213の情報は、送受信手段220によってWebサービスXのサーバ330に送信される。WebサービスXのサーバ330は、受信した情報を記憶手段660の利用者A第3副テーブル661に記憶する。次にWebサービスXのサーバのHTML生成手段620が利用者A第3副テーブル661に記憶された情報をHTMLコードに変換し、送受信手段610が利用者Aの第3情報端末331に送信する。利用者Aの第3情報端末は、これを受信した後、HTML解析手段720で解析した上、送受信手段730に表示する。
【0033】
すなわち、同期サービスNのサーバにおける利用者A第1テーブル211は、利用者Aが利用者A第1情報端末311のWebブラウザを通じて情報を閲覧するために使う。同様に利用者A第2テーブル212は、利用者A第2情報端末の利用者A第2副テーブル561と同期し、利用者Aが第2情報端末321において、利用者A第2副テーブル561の結果を表示して閲覧するために使う。さらに利用者A第3テーブル213は、WebサービスXのサーバ330の利用者A第3副テーブル661と同期するし、利用者Aが利用者A第3情報端末331のWebブラウザを通じてWebサービスXのサーバの利用者A第3副テーブル661の情報を閲覧するために使う。
【0034】
上記のような構成が使われる一例を説明する。いまたとえば、利用者Aの第1、第2、および第3テーブルは電話番号、電子メールアドレス、各種WebサービスのIDなどを管理するアドレス帳を記憶するテーブルであるとする。さらに、利用者Aの第1情報端末311はパーソナルコンピュータ、利用者Aの第2情報端末321が携帯電話機であるとする。同期サービスNの利用者Aは、パーソナルコンピュータを通じてWebブラウザで閲覧するアドレス帳と、携帯電話機のアドレス帳を同期したいという要求を持っている。利用者Aが、パーソナルコンピュータのWebブラウザを通じてアドレス帳を閲覧する際は、パーソナルコンピュータに同期すべきテーブルを持たずに、直接利用者A第1テーブル211を参照する。しかし、携帯電話の場合にはその記憶手段に利用者Aの第2テーブル212とは独立した、アドレス帳のテーブルを持っている。この独立したテーブルが上記利用者Aの第2副テーブル561に相当する。
【0035】
さらにたとえば、利用者AはSNS(Social Network Service)を使っていたとする。利用者AはSNSにおける知人のIDを上記アドレス帳と同期したいという要求を持っている。SNSにおける知人のIDは、同期サービスNとは別の事業者が、別のWebサービスXのサーバ330にテーブルを持って管理している。この別のWebサービスXのテーブルが、上記利用者Aの第3副テーブル661に相当する。
【0036】
つまり、図1から図7に示す構成では、利用者Aが次の3つの方法で同期サービスNのサーバにあるテーブルの情報を得る。第1が、同期サービスNのサーバ上のテーブルを情報端末がWebブラウザを用いて直接閲覧する場合である。第2は、同期サービスNのサーバ上のテーブルと利用者Aの情報端末上のテーブルを同期した上で、情報端末上のテーブルを閲覧する場合である。第3は、同期サービスNのサーバ上のテーブルと、他のWebサービスXのサーバ上のテーブルを同期した上で、情報端末を通じてWebサービスXのサーバ上のテーブルを閲覧する場合である。この構成は一例に過ぎず、たとえば利用者Aが上記第3の方法によって、WebサービスXおよびWebサービスYの2つのWebサービスのサーバを通じて、同期サービスNのサーバ上のテーブル群の情報を利用していてもよい。
【0037】
以下では、同期サービスNのサーバにある利用者A第1テーブル211、利用者A第2テーブル212、利用者A第3テーブル213、利用者Aの第2情報端末にある利用者A第2副テーブル561、およびWebサービスXのサーバ330にある利用者A第3副テーブル661が同期する方法の一例を説明する。
【0038】
いま、初期状態として利用者Bテーブル214が図9に示す状態にあったとする。利用者Bテーブル214は、利用者910、ラベル920、値930、行番号940の4列を有する。図9に示す一例では、利用者Bの自宅の電話番号が650−111−1111であり、また利用者Bが仕事に用いる電子メールアドレスがbw@hoge.comであることを表している。図9は、本実施形態の説明に必要な行およびを抜粋したものであり、これに加えて利用者Bの他の情報を格納する列があってもよいし、利用者Bの他の情報を表す行や、他の利用者の情報を表す行があってもよい。また図9では一例として、電話番号や電子メールアドレスを例として示したが、ラベル920および値930の列に格納される情報は、図9に例示した以外の情報であっても、以下の説明は同様に適用できる。
【0039】
さらにいま、初期状態として、利用者A第1テーブル211、利用者A第2テーブル212、利用者A第3テーブル213、利用者A第2副テーブル561、および利用者A第3副テーブル661が図10に示す状態にあったとする。
【0040】
なお、この一例では利用者A第2テーブルのラベル1021および値1022、また利用者A第2副テーブルのラベル1052および値1053は、他のテーブルの値が変更された時に同期の対象にならず、値が変更されない属性を有しているとする。以下では、簡単のために、テーブルの一部がこのような属性を有することを、非同期属性を有すると呼ぶ。たとえば、図10に示す各テーブルが、図10に示す列に加えて、非同期属性を表す追加の列を持ち、この列に1が格納されて入れば非同期属性とする、などの方法で各テーブルのどの情報が非同期属性であるかを表すことができる。非同期属性の指定方法は何でもよい。図10では、網掛けの部分に格納されている値1021、1022、1052、1053が非同期属性を有していることを表している。たとえば、上の説明のように利用者Aの第1情報端末311はパーソナルコンピュータ、利用者Aの第2情報端末321が携帯電話機、WebサービスXのサーバ330はSNS事業者のサーバだったとする。この場合、携帯電話機の記憶手段にある利用者A第2テーブルにある電話番号は、主として携帯電話機で利用者Aが管理している情報であるため、他の利用者からの情報開示や、他のテーブルの書き換えなどによって、自動的に同期したくないという要求があるかもしれない。図10の一例における非同期属性は、たとえば、このような要求を満たすために用いられる。
【0041】
次に図11を参照して、本願発明による方法で、利用者A第1テーブル211、利用者A第2テーブル212、利用者A第3テーブル213、利用者A第2副テーブル561、および利用者A第3副テーブル661が同期する方法の概要を説明する。まず、同期サービスNのサーバのコピー手段260は、図10に示す利用者A第1テーブル211、利用者A第2テーブル212、および利用者A第3テーブル213の情報を各々、利用者A第1差分テーブル215、利用者A第2差分テーブル216、および利用者A第3差分テーブル217にコピーする(ステップS1101)。また、コピー手段260が送受信手段220を通じて利用者Aの第2情報端末321に、利用者A第2副テーブル561の内容取得の要求を送る。利用者Aの第2情報端末の送受信手段がこの要求を受け取ると、記憶手段にある利用者A第2副テーブル561の情報を、送受信手段510を通じて、同期サービスNのサーバ200に送信する。同期サービスNのサーバの送受信手段220がこれを受信すると、コピー手段260はこれを利用者A第2副差分テーブル218にコピーする(ステップS1102)。さらに、コピー手段260が送受信手段220を通じてWebサービスXのサーバ330に、利用者A第3副テーブル661の内容取得の要求を送る。WebサービスXのサーバの送受信手段610がこの要求を受け取ると、記憶手段にある利用者A第3副テーブル661の情報を、送受信手段610を通じて、同期サービスNのサーバ200に送信する。同期サービスNのサーバの送受信手段220がこれを受信すると、コピー手段260はこれを利用者A第3副差分テーブル219にコピーする(ステップS1103)。
【0042】
なお、利用者第2副テーブルから利用者第2副差分テーブルへのコピー(ステップS1102)、および利用者第3副テーブルから利用者第3副差分テーブルへのコピー(ステップS1103)は、同期サービスNのサーバ200の外部に存在する情報端末またはサーバ上のテーブルから記憶手段210内のテーブルへのコピーである。このため、コピー手段260および送受信手段220を介して、ネットワークを経由して外部の情報端末やサーバと通信した後に、記憶手段210内の差分テーブルへのコピーが実行される。一方で、たとえば利用者A第1テーブルから利用者A第1差分テーブルへのコピー(ステップS1101)のように、同期サービスサーバNの記憶手段210内のテーブル間のコピーは、送受信手段220を経由しない。このように、同期サービスNのサーバの外部に存在する副テーブルから記憶手段210にある差分テーブルへのコピーと、記憶手段210内におけるテーブルから差分テーブルへのコピーでは、処理が異なる。しかし、同期対象となる利用者Aのテーブル群を、本発明の一実施形態に係る方法においては、同期のためのコピーという点では同じ操作である。このためこれ以後は簡単のために、コピー元またはコピー先のテーブルが、同期サービスのサーバNの記憶手段210にあるか、外部にあるかを問わず、一括してテーブル間のコピーと呼ぶ。コピー元またはコピー先のテーブルが同期サービスのサーバNの外部にある場合には、適宜に送受信手段220を介して、外部の情報端末またはサーバとの間でコピー操作をおこなうものとする。本発明によるテーブル間の同期は、そのテーブルが同期サービスのサーバNの内部にあるか外部にあるかを問わず適用できる。
【0043】
次に、同期サービスNのサーバのHTML生成手段250が利用者Bテーブル214に格納されている情報からHTMLコードを生成し、送受信手段220が利用者Bの情報端末341に送信する。利用者Bの情報端末の送受信手段810がこれを受信し、HTML解析手段820が解析した上、図9に示す利用者Bテーブル214の情報を表示手段830に表示する(ステップS1104)。次に、利用者Bが入力手段840を通じて、利用者Bが利用者Bテーブル214を、図12に示すように変更し、さらに変更の結果を利用者Aに開示する要求を入力する。図9と図12を比較するとわかるように、ここでは、自宅の電話番号「650−111−1111」931が、「650−999−9999」1231に変更された。また、電子メールアドレスbw@hoge.comに関連づけたラベル[work email]922が、「home email」1222に変更された。さらに、新たな行1213が追加され、ラベル「SNS−X」1223、値「benwhite」1233が入力された。送受信手段810は、これらの変更情報を、同期サービスNのサーバ200に送る(ステップS1105)。同期サービスNのサーバの送受信手段220はこれを受信し、利用者Bテーブル214を、受信した変更情報に従って図12に示すテーブルと同じ情報が格納されるように更新する(ステップS1206)。この時点で、利用者Aの5つのテーブルは未だすべて図10に示す初期状態にある。
【0044】
なお、前記ステップS1101からS1103のコピーは、ステップS1107より以前であれば、いつ実行されてもよい。
【0045】
テーブル比較手段230(例えば、CPUの演算回路を動作させてテーブルを比較するプログラム)が、更新された利用者Bテーブル214と、利用者Aの5つのテーブル、すなわち利用者A第1テーブル211、利用者A第2テーブル212、利用者A第3テーブル213、利用者A第2副テーブル561、および利用者A第3副テーブル661とを、本発明の一実施形態に係る方法により各々同期させる(ステップS1107)。
【0046】
次に、図13のフロー図を参照して、上述のように更新された利用者Bテーブル214と、各利用者Aテーブル群とが上記ステップS1107において同期する方法について詳しく説明する。
【0047】
はじめに、更新された利用者Bテーブル214と、利用者A第1テーブル211が同期する方法を説明する。ここでは、図13における「新テーブル」とは、図12に示す更新後の利用者Bテーブル214であり、図13における「旧テーブル」とは、図10に示す同期前の利用者A第1テーブル211であり、図13における「差分テーブル」とは、ステップS1101の操作によって情報がコピーされた後の利用者A第1差分テーブル215である。このため、この説明では図13の新テーブル、旧テーブル、差分テーブルを各々利用者Bテーブル、利用者A第1テーブル、および利用者A第1差分テーブルと各々読み替えて説明する。
【0048】
まず、利用者A第1テーブル211および利用者A第1差分テーブル215の行番号を表す変数iに整数0をセットする。同様に、利用者Bテーブル214の行番号を表す変数jに整数0をセットする。さらに、変数flagに整数0をセットする(ステップS1301)。変数iは、利用者A第1テーブルおよび利用者A第1差分テーブルで共通である。図13に示す方法で同期操作をする前は、前記ステップS1101によるコピー操作によって、利用者A第1テーブルと、利用者A第1差分テーブルに格納されている情報は等しいからである。
【0049】
次に、利用者A第1テーブル211の行i=0が非同期属性であるか否かを判断する(ステップS1302)。非同期属性ではないためnoとなり、ステップS1303に進む。次に、テーブル比較手段230が、利用者Bテーブルのj=0の行と、利用者A第1差分テーブルのi=0の行を比較し、ラベルと値の両方が等しいか否かを判断する(ステップS1303)。図12と図10を参照すると、この一例では、ラベルは「home phone」で等しい。しかし、利用者第1差分テーブル215の値「650−111−1111」と、利用者Bテーブル214の値「650−999−9999」との間に不一致が検出される。これは、利用者Bがステップ1104において、利用者Bテーブルの該当する部分を変更したためである。したがって、ステップS1303、S1304、S1306の分岐はすべてnoとなるが、ステップS1308の分岐はyesとなり、ステップS1309に進む。ステップS1309では、コピー手段260が、利用者Bテーブルのj=0の行の値「650−999−9999」1231を、利用者A第1テーブル211のi=0の行の値にコピーする。「650−111−1111」1011はこのコピー操作よって消去される。これによって、ステップS1106で利用者Bが更新した新しい電話番号が、利用者A第1テーブル211に反映される。また、ステップS1309ではflagに1がセットされる。次に利用者A第1差分テーブルの行番号iを1増加させて(ステップS1310)i=1とした後、利用者A第1差分テーブル215にi=1なる行が存在するか否かを判断する(ステップS1311)。ここではyesとなり、ステップS1302に進む。
【0050】
次に、テーブル比較手段230が、利用者Bテーブルの行j=0と、利用者A第1差分テーブル215の行i=1を比較する。ここでは、ラベルと値との両方に不一致が検出されるので、ステップS1303はnoとなり、ステップS1310に進み、i=2がセットされる。しかし図10に示す利用者A第1テーブル211にこの行はないので、ステップS1311がnoとなり、ステップS1312に進む。ここでは上記ステップS1309でflag=1がセットされているため、ステップS1312はnoとなり、ステップS1314に進む。ステップS1314では、jに1がセットされ、iおよびflagには0が各々リセットされる。更新後の利用者Bテーブルには、j=1の行が存在するので、ステップS1315の分岐はyesとなり、ステップS1301に進む。ここまでは、更新後の利用者Bテーブルのj=0の行を、利用者A第1差分テーブルのすべての行と比較した上で、利用者Bテーブルの更新箇所を、利用者A第1テーブルに反映させるステップである。
【0051】
次に、利用者Bテーブルj=1の行を利用者A差分テーブルのすべての行と比較した上で、利用者Bテーブル214の更新箇所を利用者A第1テーブル211に反映させる。この各ステップは上記と同様であるので、適宜省略して説明する。利用者Bテーブルのj=1の行については、利用者A第1差分テーブルのi=0の行では、ステップS1303の分岐がyesとなるが、i=1の行ではステップS1306の分岐がyesとなる。ステップS1307では、コピー手段260が、利用者Bテーブルの行番号j=1のラベル「home email」1222を、利用者A第1テーブル211のi=1の行のラベルにコピーする。「work email」1012はこのコピー操作よって消去される。これによって、ステップS1106で利用者Bが更新した新しいラベルが、利用者A第1テーブル211に反映される。また、ステップS1307ではflagに1がセットされる。
【0052】
利用者Bテーブルj=1の行の、利用者A第1差分テーブル215の各行との比較が終わると、ステップS1314でjに2がセットされる。この後、j=2の行と利用者A第1差分テーブル215の各行との比較が行われる。更新後の利用者Bテーブル214のj=2の行は、前記ステップS1106で利用者Bによって追加された行である。ここでは利用者A第1差分テーブル211のすべての行番号iについて、ステップS1303の分岐がyesとなる。このため、flag=0の状態でステップS1312へ進む。このため、ステップS1312の分岐はnoとなり、ステップS1313に進む。ステップS1313では、利用者A第1テーブル211に行番号2を有する新たな行を追加し、コピー手段260がこの追加した行に更新後の利用者Bテーブルの行番号j=2の情報を追加する。ここでは、ラベルとして「SNS−X」1223が、また値として「benwhite」1233が各々利用者A第1テーブルに追加される。これによって、ステップS1106で利用者Bによって追加された新たな情報が、利用者A第1テーブル211に反映される。
【0053】
以上で更新された利用者Bテーブル214と、利用者A第1テーブル211の間の同期が完了した。その結果を図14の利用者A第1テーブルに示す。なお、これまでの説明でわかるように、利用者A第1差分テーブル215は、この同期操作以前の利用者A第1テーブル211の内容を保持しておき、更新された利用者Bテーブル214との差分を検出するために用いる。
【0054】
次に、ステップS1107において、更新された利用者Bテーブル214と、非同期属性を有する行を持つ利用者A第2テーブル212および利用者A第2副テーブル561との間での同期を説明する。詳細は上記利用者A第1テーブルの同期と同様なので、適宜省略して説明する。
【0055】
以下では図13を参照して、ステップS1106で更新された利用者Bテーブル214の情報を、ステップS1107で利用者A第2テーブル212、および利用者A第2副テーブル561と同期するための処理を説明する。ここでは、図13における新テーブルは、更新された利用者Bテーブル214、旧テーブルは利用者A第2テーブル212および利用者A第2副テーブル561、また差分テーブルは利用者A第2差分テーブル216および利用者A第2副差分テーブル218と読み替えて説明する。
【0056】
まず、利用者A第2テーブル212、利用者A第2副テーブル561、利用者A第2差分テーブル216、および利用者A第2副差分テーブル218の行番号を表す変数iに整数0をセットする。同様に、利用者Bテーブル214の行番号を表す変数jに整数0をセットする。さらに、変数flagに整数0をセットする(ステップS1301)。行番号iは、利用者A第2テーブル212、利用者A第2副テーブル561、利用者A第2差分テーブル216、および利用者A第2副差分テーブル218で共通である。図13に示す処理で同期操作をする前は、図10に示すように前記ステップS1101およびS1102によるコピー処理によって、利用者A第2テーブル212、利用者A第2副テーブル561、利用者A第2差分テーブル216、および利用者A第2副差分テーブル218は等しい。
【0057】
まず、利用者A第2テーブル212および利用者A第2副テーブル561の行番号i=0が非同期属性を有するか否かを判断する(ステップS1302)。行番号i=0はともに非同期属性を有するため、ステップS1302の分岐はyesとなり、ステップS1310に進む。すなわち、前記ステップS1106で利用者Bテーブル214の行番号j=0の値が変更されているにもかかわらず、利用者A第2テーブル212および利用者A第2副テーブル561のi=0の行が非同期属性を有するために、利用者Bテーブルの変更を利用者A第2テーブルおよび利用者A第2副テーブルに反映させる処理をスキップすることになる。しかし次に、ステップS1310でi=1がセットされ、テーブル比較手段230が、利用者Bテーブルのj=0の行と、利用者A第2差分テーブル216および利用者A第2副テーブル差分テーブル218のi=1の行を比較する。この結果ステップS1303の分岐がyesとなり、ステップS1310へ進む。ステップS1310ではi=2となるが、利用者A第2テーブル212および利用者A第2副テーブル561にi=2は存在しないため、ステップS1312に進む。ここでは、flag=0のままであるから、ステップS1313が実行される。ステップS1313では、利用者A第2テーブル212および利用者A第2副テーブル561に行番号i=2を有する新たな行を追加し、コピー手段260がこの追加したi=2の行に更新後の利用者Bテーブルの行番号j=0の情報を追加する。ここでは、ラベルとして「home phone」1231が、また値として「650−999−9999」1233が各々利用者A第2テーブルおよび利用者第2副テーブルのi=2の行として追加される。
【0058】
次にステップS1314でj=1がセットされかつi=0にリセットされた後、ステップS1302以降の処理を繰り返す。すると、i=0の行は非同期属性のためステップS1302がyesとなりステップS1310に進むが、i=1の行でステップS1306の分岐がyesとなる。ステップS1307では、コピー手段260が、利用者Bテーブル214の行番号j=1のラベル「home email」1222を、利用者A第2テーブル212および利用者第2副テーブル561のi=1の行のラベルにコピーする。利用者A第2テーブル212の「work email」1023および利用者A第2副テーブル561の「work email」1051はこのコピー操作よって消去される。
【0059】
次に、ステップS1314でjに2がセットされる。この後、j=2の行と利用者A第2差分テーブル216および利用者A第2副差分テーブル218の各行との比較が行われる。ここでもi=0の行は非同期属性のためステップS1302がyesとなり、さらにi=1の行ではステップS1303がyesとなる。このためflag=0の状態でステップS1312へ進む。ステップS1313では、利用者A第2テーブル212および利用者A第2副テーブル561に行番号i=3を有する新たな行を追加し、コピー手段がこの追加した行に更新後の利用者Bテーブルの行番号j=2の情報を追加する。ここでは、ラベルとして「SNS−X」1223が、また値として「benwhite」1233が各々利用者A第2テーブル212および利用者A第2副テーブル561のi=3の行に追加される。これによって、ステップS1106で利用者Bによって追加された新たな情報が、利用者A第2テーブル212および利用者A第2副テーブル561に反映される。
【0060】
以上で更新された利用者Bテーブル214と、一部非同期属性を有する利用者A第2テーブル211および利用者A第2副テーブル561の間の同期が完了した。その結果を図14の同期サービスNのサーバの利用者A第2テーブル212、および利用者Aの第2情報端末の利用者A第2副テーブル561に各々示す。なお、この例では利用者A副テーブル561は、利用者Aの第2情報端末の記憶手段560にある。したがってたとえば、コピー手段260が利用者Bテーブルのj=1の行のラベル「home email」を利用者A副テーブル561のi=1の行のラベルにコピーする場合には、同期サービスNのサーバの送受信手段220、ネットワーク301、および利用者Aの第2情報端末の送受信手段510を通じて行われる。図13のフロー図では簡単のために、これらサーバと、外部の情報端末またはサーバとの間の情報の送受信に係わる処理は省略している。
【0061】
なお、図13に示したアルゴリズムでは、利用者A第2テーブル212および利用者A第2副テーブル561の非同期属性を有する行の処理では、ステップS1302の分岐でyesとなるため、ステップS1303、S1304、S1306およびS1308におけるラベルおよび値の同値判定を実行しない。この結果、図14の利用者A第2テーブル212および利用者A第2副テーブル561には、i=2の行1423および1443が各々追加された。この追加の実用的な意味を説明する。たとえば、利用者Aの第2情報端末321が携帯電話機であり、そのアドレス帳である利用者A第2副テーブル571の電話番号は利用者Aが自ら管理しているので、利用者Bからの情報開示によって変更されることを望まないために、非同期属性が付与されているものとする。ここで利用者Bから情報開示がなされたとする。ラベルまたは値が異なる場合には、利用者Aが参照する可能性がある情報という仮定のもとに、利用者Aが管理するi=0の行とは別の行として利用者Bから開示された新たな電話番号を行i=2として携帯電話のアドレス帳に記憶する。この例で示した図14のi=2の行1423および1443の追加は、利用者Aが自ら管理する情報1425と、利用者Bから開示された情報1422を別に保存しておきたいという要求に応えている。
【0062】
この例では、利用者Bから開示された電話番号「650−999−9999」1422および1442のラベル「home phone」1421および1441が、非同期属性を持つi=0の行のラベル「home phone」と等しい。この場合、利用者Aが携帯電話機で記憶しているi=0の行の情報と、利用者Bから開示されたi=2の行を同じ情報と見なした上で、利用者Bから開示された情報を受け付けないという要求があることも考えられる。この場合には、ステップS1302に相当する非同期属性の判定を、ステップS1306またはステップS1308の後に実行する。その上で、非同期属性を持っている行については、ステップS1307またはステップS1309をスキップするという方法を用いてもよい。
【0063】
次に、再び図13を参照して、ステップS1107において、更新された利用者Bテーブル214と、利用者A第3テーブル213および利用者A第3副テーブル661を同期する方法を説明する。以下の説明では、図13における新テーブルは図12に示す更新後の利用者Bテーブル214であり、図13における旧テーブルは図10に示す同期前の利用者A第3テーブル213および利用者A第3副テーブル661であり、図13における差分テーブルは、ステップS1101によって情報がコピーされた後の利用者A第3差分テーブル217、およびステップS1103によって情報がコピーされた後の利用者A第3差副差分テーブル219である。
【0064】
詳細は、利用者A第1テーブルの同期処理と同じなので、詳細のステップは適宜省略して説明する。同期前の利用者A第3テーブル213と、利用者A第3副テーブル661の初期状態が図10である。前記利用者A第2テーブル212の場合と異なるのは、初期状態において利用者A第3テーブル213と利用者A第3副テーブル661の内容が同じではない点である。すなわち、利用者A第3テーブル213のi=0の行のラベル1031が「SNS−X」、値1032が「benwhite」であるのに対して、利用者A第3副テーブル661のi=0の行のラベル1061は「home phone」、値1062は「650−111−1111」である。本発明の一実施形態に係る方法による同期は、このように同期対象の複数のテーブルの初期状態が異なる場合においても有効である。
【0065】
まず、利用者A第3テーブル213、利用者A第3差分テーブル217、利用者A第3副テーブル661、および利用者A第3副差分テーブル219の行番号を表す変数iに整数0をセットする。同様に、利用者Bテーブルの行番号を表す変数jに整数0をセットする。さらに、変数flagに整数0をセットする(ステップS1301)。行番号iは、利用者A第3テーブル213、利用者A第3副テーブル661、利用者A第3差分テーブル217、および利用者A第3副差分テーブル219で共通である。図13に示す方法で同期処理をする前は、前記ステップS1101およびS1103によるコピー操作によって、利用者A第3テーブル213と利用者A第3差分テーブル217、また利用者A第3副テーブル661と利用者A第3副差分テーブル219は各々等しいからである。
【0066】
この場合、利用者A第3テーブル213および利用者A第3副テーブル661に非同期属性を有する行はないので、以下の処理ではステップS1302はすべてnoとなる。図13に示す処理において、まず更新後の利用者Bテーブル214のj=0の行と、利用者A第3差分テーブル217および利用者A第3副差分テーブル219のi=0の行との比較が行われる。利用者A第3差分テーブル217においてはステップS1303がyes、利用者A第3副差分テーブル219においてはステップS1308がyesとなる。従って、利用者A第3テーブル213のi=0の行のラベル1031および値1032は変化しない。しかし、利用者A第3副テーブル661においては、コピー手段260はi=0の行の値「650−111−1111」1062を、更新後の利用者Bテーブル214に従い「650−999−9999」に書き換える。次にj=0の行とi=1の行の比較では、利用者A第3テーブル213および利用者A第3副テーブル661ともにステップS1303がyesとなる。利用者A第3差分テーブル217および利用者A第3副差分テーブル219にi=2は存在しないので、ステップS1312に進む。ここで利用者A第3差分テーブル217についてはflag=0であるが、利用者A第3副差分テーブル219の場合は、flag=1である。従って、コピー手段260が更新後の利用者Bテーブル214のj=0の行を、利用者A第3テーブル213のi=2の行として追加するが、利用者A第3副テーブル661には追加しない。
【0067】
次に更新後の利用者Bテーブル214のj=1の行と利用者A第3差分テーブル217および利用者A第3副差分テーブル219の各行との比較が実行される。利用者A第3差分テーブル217および利用者A第3副差分テーブル219で、i=1の行でステップS1306の分岐がyesとなるが、i=0およびi=2の行ではS1303の分岐がyesとなる。したがって、コピー手段260はi=1の行のラベル「work email」1033および1063を、ラベル「home email」1222に書き換える。
【0068】
次に、更新後の利用者Bテーブル214のj=2の行と、利用者A第3差分テーブル217および利用者A第3副差分テーブル219の各行との比較が実行される。利用者A第3差分テーブル217においては、i=0の行ではステップS1304の分岐がyesに、i=1およびi=2ではステップS1303の分岐がyesとなる。この結果、利用者A第3差分テーブル217の各行についての上記のような処理の後、flag=1となるため、コピー手段260が利用者A第3テーブル213に変更を加えない。しかし、利用者A第3副差分テーブル661においては、この時点でi=2は存在せず、なおかつi=0およびi=1の両方でステップS1303の分岐がyesとなる。したがって、flag=0の状態でステップS1312の分岐を徹。したがって、ステップS1313の処理によって、更新後の利用者Bテーブルのj=2の行のラベル「SNS−X」1223および値」「benwhite」1233が、利用者A第3副テーブルのj=2の行として追加される。
【0069】
以上で、変更された利用者Bテーブル214と、利用者A第3テーブル213および利用者A第3副テーブル661の同期が完了した。これらの処理の結果を図14の同期サービスNのサーバの利用者A第3テーブル213および、WebサービスXのサーバの利用者A第3副テーブル661に示す。図10に示すように、利用者A第3テーブルと利用者A第3副テーブルの初期状態は異なっているが、上に述べた本願発明の方法による同期によって、図14に示すように利用者A第3テーブル213と利用者A第3副テーブル661との内容は、行の順番が異なるだけで、同じ状態となっている。以上で、図11のステップS1107の処理が完了した。
【0070】
図11および図13のフロー図を使った説明では、変更された利用者Bテーブル214を利用者Aに開示し、利用者Aの各テーブルが同期する例を用いた。利用者A自身が、利用者A第1テーブル211、利用者A第2テーブル212、利用者A第2副テーブル561、利用者A第3テーブル213、または利用者A第3副テーブル661のいずれかを書き換えた場合においても、同様の処理によって、各テーブルが同期する。
【0071】
たとえばいま、図11の処理が終了した状態の利用者A第1テーブル211、利用者A第2テーブル212、利用者A第2副テーブル561、利用者A第3テーブル213、および利用者A第3副テーブル661は、図14に示す状態にある。ここでたとえば、利用者Aがその第1情報端末311の入力手段440を通じて利用者A第1テーブル211のi=2の行の値「benwhite」1413を「susanb」に変更したとする。ステップS1101からステップS1103のように、利用者A第2テーブル212、利用者A第2副テーブル561、利用者A第3テーブル213、および利用者A第3副テーブル661の内容を、各々利用者A第2差分テーブル216、利用者A第2副差分テーブル218、利用者A第3差分テーブル217、または利用者A第3副差分テーブル219にコピーする。そして、図13に示す各ステップによって、変更された利用者A第1テーブル211と、利用者A第1テーブル211、利用者A第2テーブル212、利用者A第2副テーブル561、利用者A第3テーブル213、および利用者A第3副テーブル661を各々同期する。この場合は、図13における旧テーブルは、利用者A第2テーブル212、利用者A第2副テーブル561、利用者A第3テーブル213、および利用者A第3副テーブル661である。また図13における差分テーブルは、利用者A第2差分テーブル216、利用者A第2副差分テーブル218、利用者A第3差分テーブル217、および利用者A第3副差分テーブル219である。さらに図13における新テーブルは、変更後の利用者A第1テーブル211である。このように読み替えた上で、図13に示す処理を利用者A第2テーブル212、利用者A第2副テーブル561、利用者A第3テーブル213、および利用者A第3副テーブル661の各々について実行すれば、図15のような結果となり、利用者Aの有するテーブル群の同期が完了する。
【0072】
次に、本発明の一実施形態による作用効果について説明する。これまで述べたように、利用者の操作、または他者からの開示によって情報が変更または追加される際に、その情報がテーブルの何行目の何列目の情報に対する、変更または追加なのかを指定しないにもかかわらず、本願発明の方法では、複数のテーブルを同期させることができる。この点に係る本願発明の効果には以下4点がある。
【0073】
第1の利点は、同期対象テーブルに与えられた新たな情報が、何行目の何列目の情報かという情報を与えられなくとも、複数の同期対象テーブルが正しく同期する点である。上記実施形態では、利用者Bが利用者Aに開示した情報は、利用者Aの有する複数のテーブルの何行目または何列目の情報であるかは、全く指定されていない。にもかかわらず、既に述べたように、利用者Aの有する複数のテーブルは正しく同期している。
【0074】
第2の利点は、上記のような本発明の一実施形態に係る方法によれば、新たな情報が同期対象テーブルの変更なのか、または追加なのかが明示的に指定されない場合においても、図13に示した同値判定処理により、追加または変更の判断を自動的におこなえる点である。たとえば、上に示した実施形態における利用者A第1テーブル211の同期処理では、利用者Bから利用者Aに開示された情報のラベルおよび値の両方が、既に利用者Aのテーブルに存在すれば、利用者Aのテーブルに何ら変更を加えない。利用者Bから利用者Aに開示された情報の、ラベルが等しいが値が異なる場合は、値が変更されたと判断して値のみを利用者Bから開示された情報で上書きする。逆に利用者Bから利用者Aに開示された情報の、値が等しいがラベルが異なる場合には、ラベルが変更されたと判断してラベルのみを、利用者Bから開示された情報で上書きする。利用者Bから利用者Aに開示された情報の、ラベルも値も等しくなければ利用者Bから追加された情報を新規情報として新たな行に追加する。
【0075】
第3の利点は、テーブルの一部が非同期属性を持つ場合にも、上記第1の利点が有効である点である。たとえば、上記実施形態における利用者A第2テーブル212および利用者A第2副テーブル561の同期処理では、i=0の行が非同期属性を有するにもかかわらず、上記第1の利点がすべて有効である。
【0076】
第4の利点は、同期対象のテーブルが複数あり、かつこの複数のテーブルの初期状態が同一でない場合においても、正しく同期する点である。たとえば、上記実施形態における利用者A第3テーブル213および利用者A第3副テーブル661の同期処理では、これら2つの利用者Aのテーブルの初期状態は異なっている。しかし上記実施形態で述べたように、これら2つのテーブルは正しく同期する。
【技術分野】
【0001】
本発明は、複数のテーブルの同期処理に関する。
【背景技術】
【0002】
近年のネットワークの普及により、1人の利用者が複数の情報端末を保有する場合が多い。また、1人の利用者が、複数のWebサービスを利用する場合も増えている。たとえば、多くの利用者は携帯電話とパーソナルコンピュータの両方を使っている。さらにまた多くの利用者は電子メール、チャット、音声通話、SNS(Social Networking Service)、情報共有など、やはり複数のWebサービスを使っている。
【0003】
このような状況においては、複数の情報端末やサーバ装置(以下、「サーバ」という)に存在する複数のデータベースのテーブルを同期することが望まれている。たとえば、パーソナルコンピュータに記憶されているアドレス帳に記載されている知人の電話番号を変更した時には、携帯電話の電話帳に記憶されているその知人の電話番号も自動的に変更されることが望まれている。
【0004】
また、利用者が複数のWebサービスの認識票を使い分けるのは煩雑である。そこで、あるWebサービスの上で、他のWebサービスの認識票を管理することも行われている。この場合には、各Webサービスの知人情報を管理する複数のテーブルを同期することに対する要求がある。複数の情報端末において、電子メールを送受信する場合も同じように、メールボックスを構成するデータベースを同期したいという要求がある。これらデータベースを構成する複数のテーブルは、同じサーバに存在することもあれば、異なるサーバに散在している場合もある。
【0005】
このようなテーブル間の同期に対する要求は、広く認識されてきた。このため、テーブル間の同期の手法が幾つか知られている。そのほとんどは、データベース管理システムより、同期すべきテーブルに対して追加、変更または削除の要求があった場合に、同期対象のテーブルに対して新たな行の追加、指定された行の変更または削除を実行するものである。たとえば、特許文献1には複数の情報端末に存在するメールボックスの同期の方法が開示されている。またたとえば、特許文献2にはネットワークで接続されたパーソナルコンピュータ、サーバ、プリンタ、機能複合型複写機等などに存在する複数のアドレス帳を同期する方法が開示されている。さらに、特許文献3には、同期対象のテーブルにおいて、その内容が同一である複数の行が検出された場合には、これら複数の行を統合することで、同期時の利便性を高めるための方法が開示されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2006−164067号公報
【特許文献2】特開2001−249882号公報
【特許文献3】米国特許第7,080,104号明細書
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、従来の方法には次のような問題点がある。図1を参照して、複数のテーブルを同期する際の、従来の方法に関する問題点について説明する。いま図1に示すようにサーバに記憶されている利用者Aの第1テーブル110および携帯端末に記憶されている利用者Aの第2テーブル120が同期対象だったとする。このサーバと携帯端末はネットワークで接続されている。上記2つのテーブルは、利用者Aによる書き換えや、他者からの情報開示に応じて同期する。図1の例では、これら2つのテーブルはユーザ名、ラベル、値、および行番号の4列を有する。
【0008】
従来の方法では、同期は、各テーブルにおける行番号および列番号を基準として用いられて実行される。たとえば、図1において第1テーブルの利用者Bの電話番号「650−111−1111」が、利用者Aの変更操作または利用者Bからの開示操作により、「650−999−9999」に変更された場合を考える。従来の方法では、サーバは行番号n=0の値113が「650−999−9999」であることを、通信手段やネットワークを通じて携帯端末に通知し、携帯端末は行番号n=0の値123を新しい「650−999−9999」に書き換える。すなわち、2つのテーブル間で同期を実行するには、変更後の情報に加えてテーブルのどの部分が変更されたのか、すなわちテーブルの行番号および列番号が変更されたのかも合わせて通知する必要がある。
【0009】
しかし、テーブルに変更が加えられる際、行番号と列番号が指定できるとは限らない。たとえば、利用者Aのテーブルが図1に示す初期状態にあるとして、「利用者Bの電話番号は650−999−9999である」という情報がサーバに対して通知されたとする。この時、変更を加えるべき行番号と列番号が指定されない場合がある。たとえば、利用者Bの情報端末は、図1に示すテーブルを持っておらず、この変更通知が、利用者Bの情報端末からの通知である場合を考える。この場合には、利用者Bの自宅の電話番号が、利用者Aの第1および第2テーブルにおいて何行目の情報なのかが通知に含まれない。また、たとえば利用者A自身が第1または第2テーブルに変更を加える場合にも、テーブルの行番号と列番号が明示的に指定されない場合もある。
【0010】
このように、複数のテーブルを同期する際の問題点としては、少なくとも以下の2点を挙げることができる。すなわち、第1の問題は、同期の結果、同値情報が複数行に存在してしまう場合がある点である。第2の問題は、意図しない上書きが行われる場合がある点である。以下、これらの問題点について順次説明する。
【0011】
第1の問題について説明する。第1の問題は、例えばテーブルの行番号と列番号が明示的に指定されない場合に発生する。今、図1に示す初期状態に対して、サーバが利用者Bの情報端末から「利用者Bの自宅電話番号は650−111−1111である」という情報を受信したとする。このとき、サーバはこれが利用者Aの第1および第2テーブルのどの部分に対する変更なのかを検知することができず、新しい情報としてn=2の行を追加した上、この行に受信した「利用者Bの自宅電話番号は650−111−1111」を加える。この時、利用者Aの第1および第2テーブルは同期するが、同期後に「利用者Bの自宅電話番号は650−111−1111」という単一の情報がn=0の行およびn=2の2つの行に存在することになる。これは電話帳の利便性を著しく損なう。
【0012】
次に第2の問題について説明する。第2の問題は逆にテーブルの行番号と列番号が明示的に指定された場合に起こる。たとえば今、図1に示す初期状態に対して、サーバが利用者Bの情報端末から「行番号n=0の行は、会社の電話番号が650−555−5555である」という情報を受信したとする。これはたとえば、利用者Aが自分の電話帳にあらかじめ利用者Bの自宅電話番号を入力しておいた状態で、追加で利用者Bの会社の電話番号がサーバに対して開示されたような場合である。この通知を受信したサーバは、利用者Aの第1および第2テーブルにおいて、行番号n=0の行を「利用者Bの会社の電話番号が650−555−5555である」という情報によって上書きする。しかし、利用者Aにとって図1のように初期状態に存在した自宅電話番号は必要な情報であり、異なる情報である利用者Bの会社の電話番号による上書きを望まないかもしれない。このように、もし行番号と列番号が明示的に指定された場合には、意図しない上書きが実行されてしまう場合がある。これもやはり電話帳の利便性を著しく損なう。
【0013】
上記第1および第2の問題は、サーバが利用者Bの情報端末から情報を受信した場合を用いて説明したが、たとえば利用者Aの第1テーブルに利用者Aが変更を加えた結果を、利用者Aの第2テーブルに伝える場合にも全く同様である。つまり、複数のテーブル間の同期においては、行番号および列番号を指定した情報の追加または変更を用いても、行番号および列番号を指定しない情報の追加または変更を用いても、上記第1または第2のどちらかの問題が解決できない。
【0014】
本願発明は、このような状況に鑑みてなされたものであり、複数のテーブルの同期に際し、同じ情報が複数箇所に発生したり、情報の追加を誤って変更として処理することで利用者にとって必要な情報が消去されたりしないような、複数テーブルの同期方法および装置を提供する。
【課題を解決するための手段】
【0015】
本発明の一実施形態として、第1のテーブルと第2のテーブルとを記憶する記憶手段と、
前記第1のテーブルの有する第1の行を、前記第2のテーブルの有する第2の行にコピーする第1のコピー手段と、情報端末より前記情報端末が記憶する第3のテーブルを受信する受信手段と、前記第3のテーブルの有する第3の行の第1の列にある第1の情報と、前記第2の行に含まれ、前記第1の列と同じ属性を有する前記第2のテーブルの第2の列にある第2の情報と、を比較する比較手段と、前記第1の情報と前記第2の情報が等しい場合に、前記第3の行の第4の列にある第3の情報を、前記第1の行の、前記第4の列と同じ属性を有する前記第1のテーブルの有する第5の列にコピーする第2のコピー手段と、
を有することを特徴とするサーバ装置が提供される。
【0016】
本発明の一実施形態として、第1のテーブルと第2のテーブルとを記憶する記憶手段と、
前記第1のテーブルの有する第1の行を、前記第2のテーブルの有する第2の行に第1のコピーするコピー手段と、外部情報源サーバ装置の記憶する第3のテーブルをネットワーク経由にて受信する受信手段と、前記第3のテーブルの有する第3の行の第1の列にある第1の情報と、前記第2の行に含まれ、前記第1の列と同じ属性を有する前記第2のテーブルの第2の列にある第2の情報とを比較する比較手段と、前記第1の情報と前記第2の情報が等しい場合に、前記第3の行の第4の列にある第3の情報を、前記第1の行の、前記第4の列と同じ属性を有する前記第1のテーブルの有する第5の列に第2のコピーするコピー手段と、を有することを特徴とするサーバ装置が提供される。
【0017】
本発明の一実施形態として、第1のテーブルと第2のテーブルとを記憶する記憶手段と、
前記第1のテーブルのすべての行を、前記第2のテーブルにコピーする第1のコピー手段と、情報端末が記憶する第3のテーブルを受信する受信手段と、前記コピーの後に、前記第3のテーブルの有する第1の行の第1の列にある第1の情報と、前記第3のテーブルの有する前記第1の行の第2の列にある第2の情報とにより形成される第1の情報対を、前記第2のテーブルの有する任意の行の前記第1の列と同じ属性を示す第3の列にある第3の情報と、前記第2のテーブルの有する前記任意の行の前記第2の列と同じ属性を示す第4の列にある第4の情報とにより形成される第2の情報対と比較する比較手段と、前記第2のテーブルのすべての行について、前記比較手段により前記第1の情報と前記第3の情報が等しくなく、かつ前記第2の情報と前記第4の情報が等しくないことが検出された場合に、前記第1のテーブルに新たな行を追加し、さらに前記新たな行の前記第1の列と同じ属性を示す第5の列に前記第1の情報をコピーし、かつ前記新たな行の前記第2の列と同じ属性を示す第6の列に前記第2の情報をコピーする第2のコピー手段と、を有することを特徴とするサーバ装置が提供される
【0018】
本発明の一実施形態として、第1のテーブルと第2のテーブルとを記憶する記憶手段と、前記第1のテーブルのすべての行を、前記第2のテーブルにコピーする第1のコピー手段と、外部情報源サーバ装置が記憶する第3のテーブルをネットワーク経由にて受信する受信手段と、前記コピーの後に、前記第3のテーブルの有する第1の行の第1の列にある第1の情報と、前記第3のテーブルの有する前記第1の行の第2の列にある第2の情報とにより形成される第1の情報対を、前記第2のテーブルの有する任意の行の前記第1の列と同じ属性を示す第3の列にある第3の情報と、前記第2のテーブルの有する前記任意の行の前記第2の列と同じ属性を示す第4の列にある第4の情報とにより形成される第2の情報対と比較する比較手段と、前記第2のテーブルのすべての行について、前記比較手段により前記第1の情報と前記第3の情報が等しくなく、かつ前記第2の情報と前記第4の情報が等しくないことが検出された場合に、前記第1のテーブルに新たな行を追加し、さらに前記新たな行の前記第1の列と同じ属性を示す第5の列に前記第1の情報をコピーし、かつ前記新たな行の前記第2の列と同じ属性を示す第6の列に前記第2の情報をコピーする第2のコピー手段と、を有することを特徴とするサーバ装置が提供される
【0019】
本発明の一実施形態として、第1のテーブルを記憶する記憶手段と、同期対象外部サーバ装置の記憶手段が記憶している第2のテーブルの第1の行を、前記第1のテーブルの有する第2の行にコピーする第1のコピー手段と、情報端末が記憶している第3のテーブルを受信する受信手段と、前記第3のテーブルの有する第3の行の第1の列にある第1の情報と、前記第2の行に含まれ、前記第1の列と同じ属性を有する前記第1のテーブルの第2の列にある第2の情報とを比較する比較手段と、前記第1の情報と前記第2の情報が等しいと前記比較手段により検出された場合に、前記第3の行の第4の列にある第3の情報を、前記第1の行に含まれる、前記第4の列と同じ属性を有する前記第2のテーブルの有する第5の列にコピーする第2のコピー手段と、を有することを特徴とするサーバ装置が提供される。
【発明の効果】
【0020】
本発明の方法、サーバ、情報端末、およびデータベースなどによれば、複数のテーブルの同期に際し、一つのテーブル内に同じ情報が複数箇所に発生したり、情報の追加を誤って変更として処理することで利用者にとって必要な情報が消去されたりすることを防止できる。
【図面の簡単な説明】
【0021】
【図1】従来の方法による同期に係る課題を説明するためのテーブルの一例である。
【図2】本願発明に係る同期サービスのサーバの概略構成図の一例である。
【図3】本願発明に係るサーバおよび情報端末のシステム構成図の一例である。
【図4】本願発明に係る同期対象テーブルを参照する情報端末の概略構成図の一例である。
【図5】本願発明に係る同期対象テーブルを有する情報端末の概略構成図の一例である。
【図6】本願発明に係る同期対象テーブルを有するサーバの概略構成図の一例である。
【図7】本願発明に係る同期対象テーブルを参照する情報端末の概略構成図の一例である。
【図8】本願発明に係る同期の情報源テーブルを有する情報端末の概略構成図の一例である。
【図9】本願発明に係る同期の情報源テーブルの初期状態のデータ例を示す図である。
【図10】本願発明に係る同期対象テーブル群の初期状態のデータ例を示す図である。
【図11】本願発明に係る同期処理の概略を示すフロー図である。
【図12】本願発明に係る同期の情報源テーブルの変更後のデータ例を示す図である。
【図13】本願発明に係る同期処理の詳細を示すフロー図である。
【図14】本願発明に係る同期対象テーブル群の同期後のデータ例を示す図である。
【図15】本願発明に係る同期対象テーブル群の同期後のデータ例を示す図である。
【発明を実施するための形態】
【0022】
以下に本発明を実施するための、形態について説明する。本発明の技術的範囲は、添付の特許請求の範囲によって明確に定義されているため、以下の説明は、単に本発明の一般原理を例示する目的で行われている。したがって、本発明は、以下の説明に限定して解釈されるべきではない。
【0023】
図2は、本願発明による複数テーブルの情報同期を実行する同期サービスNのサーバ200の概略構成図の一例である。同期サービスNのサーバ200は、記憶手段210(例えば、揮発性メモリ、不揮発性メモリ)、送受信手段220(例えば、通信インターフェース)、比較手段230(例えば、CPUの演算回路)、検索手段240(例えば、データベース操作プログラム)、HTML生成手段250(例えば、HTML生成プログラム)、およびコピー手段260(例えば、コピープログラム)を有する。また記憶手段210は利用者A第1テーブル211、利用者A第2テーブル212、利用者A第3テーブル213、利用者Bテーブル214、利用者A第1差分テーブル215、利用者A第2差分テーブル216、利用者A第3差分テーブル217、利用者A第2副差分テーブル218、および利用者A第3副差分テーブル219を有する。
【0024】
図3は、同期サービスNのサーバ200が、ネットワーク301を通じて情報同期サービスNを利用する利用者の情報端末やサーバと接続されている状態の一例である。図3に示す一例では、利用者Aが第1情報端末311、第2情報端末321、および第3情報端末331の3台の情報端末を通じて、情報同期サービスNを利用している。利用者Aの第3情報端末331は、WebサービスXのサーバ330を介して、同期サービスNのサーバ200と接続されている。同期サービスNのサーバ200とWebサービスXのサーバ330の間にあるネットワーク301と、WebサービスXのサーバ330と利用者Aの第3情報端末331の間にあるネットワーク302は、同じネットワークであっても、異なるネットワークであってもよい。さらに図3に示す一例では、利用者Bの情報端末341がネットワーク301を通じて同期サービスNのサーバ200に接続されている。
【0025】
図4は、利用者Aの第1情報端末311の概略構成図の一例である。利用者Aの第1情報端末は、送受信手段410、HTML解析手段420、表示手段430(例えば、ディプレし)、入力手段440(例えば、キーボード)、および記憶手段450を有する。
【0026】
図5は、利用者Aの第2情報端末321の概略構成図の一例である。利用者Aの第2情報端末は、送受信手段510、HTML解析手段520(例えば、HTML構文解析プログラム)、表示手段530、入力手段540、および演算手段550(例えば、CPUの演算回路)、および記憶手段560を有する。記憶手段560は、利用者A第2副テーブル561を有する。
【0027】
図6は、WebサービスXのサーバ330の概略構成図の一例である。WebサービスXのサーバ330は、送受信手段610、HTML生成手段620、演算手段630、および記憶手段660を有する。記憶手段660は、利用者A第3副テーブル661を有する。
【0028】
図7は、利用者Aの第3情報端末331の概略構成図の一例である。利用者Aの第3情報端末は、送受信手段710、HTML解析手段720、表示手段730、入力手段740、および記憶手段750を有する。
【0029】
図8は、利用者Bの情報端末341の概略構成図の一例である。利用者Bの情報端末は、送受信手段810、HTML解析手段820、表示手段830、入力手段840、および演算手段850を有する。
【0030】
同期サービスNのサーバの利用者A第1テーブル211に格納されている情報は、HTML生成手段250によってHTMLコードに変換され、利用者Aの第1情報端末311に送信される。利用者Aの第1情報端末は、これを受信後、HTML解析手段420で解析した上、表示手段430に表示する。なお、「HTMLコード」は情報が送受信される際の一形態である。任意の構造化文書の形態を用いることができる。また、一定の構文規則にしたがって生成された文字列なども使用できる。以下の記述においても同様である。
【0031】
同期サービスNのサーバの利用者A第2テーブル212の情報は、送受信手段220によって利用者Aの第2情報端末321に送信される。利用者Aの第2情報端末では、これを受信後、記憶手段560の利用者A第2副テーブル561に記憶する。利用者Aの第2情報端末は、利用者A第2副テーブル561に記憶された情報を表示手段530に表示する。ここで同期サービスNのサーバ200から利用者Aの第2情報端末に送信するデータ形式、および利用者A第2副テーブル561に記憶するデータ形式は特に限定されない。任意のデータ形式を用いることができる。
【0032】
同期サービスNのサーバの利用者A第3テーブル213の情報は、送受信手段220によってWebサービスXのサーバ330に送信される。WebサービスXのサーバ330は、受信した情報を記憶手段660の利用者A第3副テーブル661に記憶する。次にWebサービスXのサーバのHTML生成手段620が利用者A第3副テーブル661に記憶された情報をHTMLコードに変換し、送受信手段610が利用者Aの第3情報端末331に送信する。利用者Aの第3情報端末は、これを受信した後、HTML解析手段720で解析した上、送受信手段730に表示する。
【0033】
すなわち、同期サービスNのサーバにおける利用者A第1テーブル211は、利用者Aが利用者A第1情報端末311のWebブラウザを通じて情報を閲覧するために使う。同様に利用者A第2テーブル212は、利用者A第2情報端末の利用者A第2副テーブル561と同期し、利用者Aが第2情報端末321において、利用者A第2副テーブル561の結果を表示して閲覧するために使う。さらに利用者A第3テーブル213は、WebサービスXのサーバ330の利用者A第3副テーブル661と同期するし、利用者Aが利用者A第3情報端末331のWebブラウザを通じてWebサービスXのサーバの利用者A第3副テーブル661の情報を閲覧するために使う。
【0034】
上記のような構成が使われる一例を説明する。いまたとえば、利用者Aの第1、第2、および第3テーブルは電話番号、電子メールアドレス、各種WebサービスのIDなどを管理するアドレス帳を記憶するテーブルであるとする。さらに、利用者Aの第1情報端末311はパーソナルコンピュータ、利用者Aの第2情報端末321が携帯電話機であるとする。同期サービスNの利用者Aは、パーソナルコンピュータを通じてWebブラウザで閲覧するアドレス帳と、携帯電話機のアドレス帳を同期したいという要求を持っている。利用者Aが、パーソナルコンピュータのWebブラウザを通じてアドレス帳を閲覧する際は、パーソナルコンピュータに同期すべきテーブルを持たずに、直接利用者A第1テーブル211を参照する。しかし、携帯電話の場合にはその記憶手段に利用者Aの第2テーブル212とは独立した、アドレス帳のテーブルを持っている。この独立したテーブルが上記利用者Aの第2副テーブル561に相当する。
【0035】
さらにたとえば、利用者AはSNS(Social Network Service)を使っていたとする。利用者AはSNSにおける知人のIDを上記アドレス帳と同期したいという要求を持っている。SNSにおける知人のIDは、同期サービスNとは別の事業者が、別のWebサービスXのサーバ330にテーブルを持って管理している。この別のWebサービスXのテーブルが、上記利用者Aの第3副テーブル661に相当する。
【0036】
つまり、図1から図7に示す構成では、利用者Aが次の3つの方法で同期サービスNのサーバにあるテーブルの情報を得る。第1が、同期サービスNのサーバ上のテーブルを情報端末がWebブラウザを用いて直接閲覧する場合である。第2は、同期サービスNのサーバ上のテーブルと利用者Aの情報端末上のテーブルを同期した上で、情報端末上のテーブルを閲覧する場合である。第3は、同期サービスNのサーバ上のテーブルと、他のWebサービスXのサーバ上のテーブルを同期した上で、情報端末を通じてWebサービスXのサーバ上のテーブルを閲覧する場合である。この構成は一例に過ぎず、たとえば利用者Aが上記第3の方法によって、WebサービスXおよびWebサービスYの2つのWebサービスのサーバを通じて、同期サービスNのサーバ上のテーブル群の情報を利用していてもよい。
【0037】
以下では、同期サービスNのサーバにある利用者A第1テーブル211、利用者A第2テーブル212、利用者A第3テーブル213、利用者Aの第2情報端末にある利用者A第2副テーブル561、およびWebサービスXのサーバ330にある利用者A第3副テーブル661が同期する方法の一例を説明する。
【0038】
いま、初期状態として利用者Bテーブル214が図9に示す状態にあったとする。利用者Bテーブル214は、利用者910、ラベル920、値930、行番号940の4列を有する。図9に示す一例では、利用者Bの自宅の電話番号が650−111−1111であり、また利用者Bが仕事に用いる電子メールアドレスがbw@hoge.comであることを表している。図9は、本実施形態の説明に必要な行およびを抜粋したものであり、これに加えて利用者Bの他の情報を格納する列があってもよいし、利用者Bの他の情報を表す行や、他の利用者の情報を表す行があってもよい。また図9では一例として、電話番号や電子メールアドレスを例として示したが、ラベル920および値930の列に格納される情報は、図9に例示した以外の情報であっても、以下の説明は同様に適用できる。
【0039】
さらにいま、初期状態として、利用者A第1テーブル211、利用者A第2テーブル212、利用者A第3テーブル213、利用者A第2副テーブル561、および利用者A第3副テーブル661が図10に示す状態にあったとする。
【0040】
なお、この一例では利用者A第2テーブルのラベル1021および値1022、また利用者A第2副テーブルのラベル1052および値1053は、他のテーブルの値が変更された時に同期の対象にならず、値が変更されない属性を有しているとする。以下では、簡単のために、テーブルの一部がこのような属性を有することを、非同期属性を有すると呼ぶ。たとえば、図10に示す各テーブルが、図10に示す列に加えて、非同期属性を表す追加の列を持ち、この列に1が格納されて入れば非同期属性とする、などの方法で各テーブルのどの情報が非同期属性であるかを表すことができる。非同期属性の指定方法は何でもよい。図10では、網掛けの部分に格納されている値1021、1022、1052、1053が非同期属性を有していることを表している。たとえば、上の説明のように利用者Aの第1情報端末311はパーソナルコンピュータ、利用者Aの第2情報端末321が携帯電話機、WebサービスXのサーバ330はSNS事業者のサーバだったとする。この場合、携帯電話機の記憶手段にある利用者A第2テーブルにある電話番号は、主として携帯電話機で利用者Aが管理している情報であるため、他の利用者からの情報開示や、他のテーブルの書き換えなどによって、自動的に同期したくないという要求があるかもしれない。図10の一例における非同期属性は、たとえば、このような要求を満たすために用いられる。
【0041】
次に図11を参照して、本願発明による方法で、利用者A第1テーブル211、利用者A第2テーブル212、利用者A第3テーブル213、利用者A第2副テーブル561、および利用者A第3副テーブル661が同期する方法の概要を説明する。まず、同期サービスNのサーバのコピー手段260は、図10に示す利用者A第1テーブル211、利用者A第2テーブル212、および利用者A第3テーブル213の情報を各々、利用者A第1差分テーブル215、利用者A第2差分テーブル216、および利用者A第3差分テーブル217にコピーする(ステップS1101)。また、コピー手段260が送受信手段220を通じて利用者Aの第2情報端末321に、利用者A第2副テーブル561の内容取得の要求を送る。利用者Aの第2情報端末の送受信手段がこの要求を受け取ると、記憶手段にある利用者A第2副テーブル561の情報を、送受信手段510を通じて、同期サービスNのサーバ200に送信する。同期サービスNのサーバの送受信手段220がこれを受信すると、コピー手段260はこれを利用者A第2副差分テーブル218にコピーする(ステップS1102)。さらに、コピー手段260が送受信手段220を通じてWebサービスXのサーバ330に、利用者A第3副テーブル661の内容取得の要求を送る。WebサービスXのサーバの送受信手段610がこの要求を受け取ると、記憶手段にある利用者A第3副テーブル661の情報を、送受信手段610を通じて、同期サービスNのサーバ200に送信する。同期サービスNのサーバの送受信手段220がこれを受信すると、コピー手段260はこれを利用者A第3副差分テーブル219にコピーする(ステップS1103)。
【0042】
なお、利用者第2副テーブルから利用者第2副差分テーブルへのコピー(ステップS1102)、および利用者第3副テーブルから利用者第3副差分テーブルへのコピー(ステップS1103)は、同期サービスNのサーバ200の外部に存在する情報端末またはサーバ上のテーブルから記憶手段210内のテーブルへのコピーである。このため、コピー手段260および送受信手段220を介して、ネットワークを経由して外部の情報端末やサーバと通信した後に、記憶手段210内の差分テーブルへのコピーが実行される。一方で、たとえば利用者A第1テーブルから利用者A第1差分テーブルへのコピー(ステップS1101)のように、同期サービスサーバNの記憶手段210内のテーブル間のコピーは、送受信手段220を経由しない。このように、同期サービスNのサーバの外部に存在する副テーブルから記憶手段210にある差分テーブルへのコピーと、記憶手段210内におけるテーブルから差分テーブルへのコピーでは、処理が異なる。しかし、同期対象となる利用者Aのテーブル群を、本発明の一実施形態に係る方法においては、同期のためのコピーという点では同じ操作である。このためこれ以後は簡単のために、コピー元またはコピー先のテーブルが、同期サービスのサーバNの記憶手段210にあるか、外部にあるかを問わず、一括してテーブル間のコピーと呼ぶ。コピー元またはコピー先のテーブルが同期サービスのサーバNの外部にある場合には、適宜に送受信手段220を介して、外部の情報端末またはサーバとの間でコピー操作をおこなうものとする。本発明によるテーブル間の同期は、そのテーブルが同期サービスのサーバNの内部にあるか外部にあるかを問わず適用できる。
【0043】
次に、同期サービスNのサーバのHTML生成手段250が利用者Bテーブル214に格納されている情報からHTMLコードを生成し、送受信手段220が利用者Bの情報端末341に送信する。利用者Bの情報端末の送受信手段810がこれを受信し、HTML解析手段820が解析した上、図9に示す利用者Bテーブル214の情報を表示手段830に表示する(ステップS1104)。次に、利用者Bが入力手段840を通じて、利用者Bが利用者Bテーブル214を、図12に示すように変更し、さらに変更の結果を利用者Aに開示する要求を入力する。図9と図12を比較するとわかるように、ここでは、自宅の電話番号「650−111−1111」931が、「650−999−9999」1231に変更された。また、電子メールアドレスbw@hoge.comに関連づけたラベル[work email]922が、「home email」1222に変更された。さらに、新たな行1213が追加され、ラベル「SNS−X」1223、値「benwhite」1233が入力された。送受信手段810は、これらの変更情報を、同期サービスNのサーバ200に送る(ステップS1105)。同期サービスNのサーバの送受信手段220はこれを受信し、利用者Bテーブル214を、受信した変更情報に従って図12に示すテーブルと同じ情報が格納されるように更新する(ステップS1206)。この時点で、利用者Aの5つのテーブルは未だすべて図10に示す初期状態にある。
【0044】
なお、前記ステップS1101からS1103のコピーは、ステップS1107より以前であれば、いつ実行されてもよい。
【0045】
テーブル比較手段230(例えば、CPUの演算回路を動作させてテーブルを比較するプログラム)が、更新された利用者Bテーブル214と、利用者Aの5つのテーブル、すなわち利用者A第1テーブル211、利用者A第2テーブル212、利用者A第3テーブル213、利用者A第2副テーブル561、および利用者A第3副テーブル661とを、本発明の一実施形態に係る方法により各々同期させる(ステップS1107)。
【0046】
次に、図13のフロー図を参照して、上述のように更新された利用者Bテーブル214と、各利用者Aテーブル群とが上記ステップS1107において同期する方法について詳しく説明する。
【0047】
はじめに、更新された利用者Bテーブル214と、利用者A第1テーブル211が同期する方法を説明する。ここでは、図13における「新テーブル」とは、図12に示す更新後の利用者Bテーブル214であり、図13における「旧テーブル」とは、図10に示す同期前の利用者A第1テーブル211であり、図13における「差分テーブル」とは、ステップS1101の操作によって情報がコピーされた後の利用者A第1差分テーブル215である。このため、この説明では図13の新テーブル、旧テーブル、差分テーブルを各々利用者Bテーブル、利用者A第1テーブル、および利用者A第1差分テーブルと各々読み替えて説明する。
【0048】
まず、利用者A第1テーブル211および利用者A第1差分テーブル215の行番号を表す変数iに整数0をセットする。同様に、利用者Bテーブル214の行番号を表す変数jに整数0をセットする。さらに、変数flagに整数0をセットする(ステップS1301)。変数iは、利用者A第1テーブルおよび利用者A第1差分テーブルで共通である。図13に示す方法で同期操作をする前は、前記ステップS1101によるコピー操作によって、利用者A第1テーブルと、利用者A第1差分テーブルに格納されている情報は等しいからである。
【0049】
次に、利用者A第1テーブル211の行i=0が非同期属性であるか否かを判断する(ステップS1302)。非同期属性ではないためnoとなり、ステップS1303に進む。次に、テーブル比較手段230が、利用者Bテーブルのj=0の行と、利用者A第1差分テーブルのi=0の行を比較し、ラベルと値の両方が等しいか否かを判断する(ステップS1303)。図12と図10を参照すると、この一例では、ラベルは「home phone」で等しい。しかし、利用者第1差分テーブル215の値「650−111−1111」と、利用者Bテーブル214の値「650−999−9999」との間に不一致が検出される。これは、利用者Bがステップ1104において、利用者Bテーブルの該当する部分を変更したためである。したがって、ステップS1303、S1304、S1306の分岐はすべてnoとなるが、ステップS1308の分岐はyesとなり、ステップS1309に進む。ステップS1309では、コピー手段260が、利用者Bテーブルのj=0の行の値「650−999−9999」1231を、利用者A第1テーブル211のi=0の行の値にコピーする。「650−111−1111」1011はこのコピー操作よって消去される。これによって、ステップS1106で利用者Bが更新した新しい電話番号が、利用者A第1テーブル211に反映される。また、ステップS1309ではflagに1がセットされる。次に利用者A第1差分テーブルの行番号iを1増加させて(ステップS1310)i=1とした後、利用者A第1差分テーブル215にi=1なる行が存在するか否かを判断する(ステップS1311)。ここではyesとなり、ステップS1302に進む。
【0050】
次に、テーブル比較手段230が、利用者Bテーブルの行j=0と、利用者A第1差分テーブル215の行i=1を比較する。ここでは、ラベルと値との両方に不一致が検出されるので、ステップS1303はnoとなり、ステップS1310に進み、i=2がセットされる。しかし図10に示す利用者A第1テーブル211にこの行はないので、ステップS1311がnoとなり、ステップS1312に進む。ここでは上記ステップS1309でflag=1がセットされているため、ステップS1312はnoとなり、ステップS1314に進む。ステップS1314では、jに1がセットされ、iおよびflagには0が各々リセットされる。更新後の利用者Bテーブルには、j=1の行が存在するので、ステップS1315の分岐はyesとなり、ステップS1301に進む。ここまでは、更新後の利用者Bテーブルのj=0の行を、利用者A第1差分テーブルのすべての行と比較した上で、利用者Bテーブルの更新箇所を、利用者A第1テーブルに反映させるステップである。
【0051】
次に、利用者Bテーブルj=1の行を利用者A差分テーブルのすべての行と比較した上で、利用者Bテーブル214の更新箇所を利用者A第1テーブル211に反映させる。この各ステップは上記と同様であるので、適宜省略して説明する。利用者Bテーブルのj=1の行については、利用者A第1差分テーブルのi=0の行では、ステップS1303の分岐がyesとなるが、i=1の行ではステップS1306の分岐がyesとなる。ステップS1307では、コピー手段260が、利用者Bテーブルの行番号j=1のラベル「home email」1222を、利用者A第1テーブル211のi=1の行のラベルにコピーする。「work email」1012はこのコピー操作よって消去される。これによって、ステップS1106で利用者Bが更新した新しいラベルが、利用者A第1テーブル211に反映される。また、ステップS1307ではflagに1がセットされる。
【0052】
利用者Bテーブルj=1の行の、利用者A第1差分テーブル215の各行との比較が終わると、ステップS1314でjに2がセットされる。この後、j=2の行と利用者A第1差分テーブル215の各行との比較が行われる。更新後の利用者Bテーブル214のj=2の行は、前記ステップS1106で利用者Bによって追加された行である。ここでは利用者A第1差分テーブル211のすべての行番号iについて、ステップS1303の分岐がyesとなる。このため、flag=0の状態でステップS1312へ進む。このため、ステップS1312の分岐はnoとなり、ステップS1313に進む。ステップS1313では、利用者A第1テーブル211に行番号2を有する新たな行を追加し、コピー手段260がこの追加した行に更新後の利用者Bテーブルの行番号j=2の情報を追加する。ここでは、ラベルとして「SNS−X」1223が、また値として「benwhite」1233が各々利用者A第1テーブルに追加される。これによって、ステップS1106で利用者Bによって追加された新たな情報が、利用者A第1テーブル211に反映される。
【0053】
以上で更新された利用者Bテーブル214と、利用者A第1テーブル211の間の同期が完了した。その結果を図14の利用者A第1テーブルに示す。なお、これまでの説明でわかるように、利用者A第1差分テーブル215は、この同期操作以前の利用者A第1テーブル211の内容を保持しておき、更新された利用者Bテーブル214との差分を検出するために用いる。
【0054】
次に、ステップS1107において、更新された利用者Bテーブル214と、非同期属性を有する行を持つ利用者A第2テーブル212および利用者A第2副テーブル561との間での同期を説明する。詳細は上記利用者A第1テーブルの同期と同様なので、適宜省略して説明する。
【0055】
以下では図13を参照して、ステップS1106で更新された利用者Bテーブル214の情報を、ステップS1107で利用者A第2テーブル212、および利用者A第2副テーブル561と同期するための処理を説明する。ここでは、図13における新テーブルは、更新された利用者Bテーブル214、旧テーブルは利用者A第2テーブル212および利用者A第2副テーブル561、また差分テーブルは利用者A第2差分テーブル216および利用者A第2副差分テーブル218と読み替えて説明する。
【0056】
まず、利用者A第2テーブル212、利用者A第2副テーブル561、利用者A第2差分テーブル216、および利用者A第2副差分テーブル218の行番号を表す変数iに整数0をセットする。同様に、利用者Bテーブル214の行番号を表す変数jに整数0をセットする。さらに、変数flagに整数0をセットする(ステップS1301)。行番号iは、利用者A第2テーブル212、利用者A第2副テーブル561、利用者A第2差分テーブル216、および利用者A第2副差分テーブル218で共通である。図13に示す処理で同期操作をする前は、図10に示すように前記ステップS1101およびS1102によるコピー処理によって、利用者A第2テーブル212、利用者A第2副テーブル561、利用者A第2差分テーブル216、および利用者A第2副差分テーブル218は等しい。
【0057】
まず、利用者A第2テーブル212および利用者A第2副テーブル561の行番号i=0が非同期属性を有するか否かを判断する(ステップS1302)。行番号i=0はともに非同期属性を有するため、ステップS1302の分岐はyesとなり、ステップS1310に進む。すなわち、前記ステップS1106で利用者Bテーブル214の行番号j=0の値が変更されているにもかかわらず、利用者A第2テーブル212および利用者A第2副テーブル561のi=0の行が非同期属性を有するために、利用者Bテーブルの変更を利用者A第2テーブルおよび利用者A第2副テーブルに反映させる処理をスキップすることになる。しかし次に、ステップS1310でi=1がセットされ、テーブル比較手段230が、利用者Bテーブルのj=0の行と、利用者A第2差分テーブル216および利用者A第2副テーブル差分テーブル218のi=1の行を比較する。この結果ステップS1303の分岐がyesとなり、ステップS1310へ進む。ステップS1310ではi=2となるが、利用者A第2テーブル212および利用者A第2副テーブル561にi=2は存在しないため、ステップS1312に進む。ここでは、flag=0のままであるから、ステップS1313が実行される。ステップS1313では、利用者A第2テーブル212および利用者A第2副テーブル561に行番号i=2を有する新たな行を追加し、コピー手段260がこの追加したi=2の行に更新後の利用者Bテーブルの行番号j=0の情報を追加する。ここでは、ラベルとして「home phone」1231が、また値として「650−999−9999」1233が各々利用者A第2テーブルおよび利用者第2副テーブルのi=2の行として追加される。
【0058】
次にステップS1314でj=1がセットされかつi=0にリセットされた後、ステップS1302以降の処理を繰り返す。すると、i=0の行は非同期属性のためステップS1302がyesとなりステップS1310に進むが、i=1の行でステップS1306の分岐がyesとなる。ステップS1307では、コピー手段260が、利用者Bテーブル214の行番号j=1のラベル「home email」1222を、利用者A第2テーブル212および利用者第2副テーブル561のi=1の行のラベルにコピーする。利用者A第2テーブル212の「work email」1023および利用者A第2副テーブル561の「work email」1051はこのコピー操作よって消去される。
【0059】
次に、ステップS1314でjに2がセットされる。この後、j=2の行と利用者A第2差分テーブル216および利用者A第2副差分テーブル218の各行との比較が行われる。ここでもi=0の行は非同期属性のためステップS1302がyesとなり、さらにi=1の行ではステップS1303がyesとなる。このためflag=0の状態でステップS1312へ進む。ステップS1313では、利用者A第2テーブル212および利用者A第2副テーブル561に行番号i=3を有する新たな行を追加し、コピー手段がこの追加した行に更新後の利用者Bテーブルの行番号j=2の情報を追加する。ここでは、ラベルとして「SNS−X」1223が、また値として「benwhite」1233が各々利用者A第2テーブル212および利用者A第2副テーブル561のi=3の行に追加される。これによって、ステップS1106で利用者Bによって追加された新たな情報が、利用者A第2テーブル212および利用者A第2副テーブル561に反映される。
【0060】
以上で更新された利用者Bテーブル214と、一部非同期属性を有する利用者A第2テーブル211および利用者A第2副テーブル561の間の同期が完了した。その結果を図14の同期サービスNのサーバの利用者A第2テーブル212、および利用者Aの第2情報端末の利用者A第2副テーブル561に各々示す。なお、この例では利用者A副テーブル561は、利用者Aの第2情報端末の記憶手段560にある。したがってたとえば、コピー手段260が利用者Bテーブルのj=1の行のラベル「home email」を利用者A副テーブル561のi=1の行のラベルにコピーする場合には、同期サービスNのサーバの送受信手段220、ネットワーク301、および利用者Aの第2情報端末の送受信手段510を通じて行われる。図13のフロー図では簡単のために、これらサーバと、外部の情報端末またはサーバとの間の情報の送受信に係わる処理は省略している。
【0061】
なお、図13に示したアルゴリズムでは、利用者A第2テーブル212および利用者A第2副テーブル561の非同期属性を有する行の処理では、ステップS1302の分岐でyesとなるため、ステップS1303、S1304、S1306およびS1308におけるラベルおよび値の同値判定を実行しない。この結果、図14の利用者A第2テーブル212および利用者A第2副テーブル561には、i=2の行1423および1443が各々追加された。この追加の実用的な意味を説明する。たとえば、利用者Aの第2情報端末321が携帯電話機であり、そのアドレス帳である利用者A第2副テーブル571の電話番号は利用者Aが自ら管理しているので、利用者Bからの情報開示によって変更されることを望まないために、非同期属性が付与されているものとする。ここで利用者Bから情報開示がなされたとする。ラベルまたは値が異なる場合には、利用者Aが参照する可能性がある情報という仮定のもとに、利用者Aが管理するi=0の行とは別の行として利用者Bから開示された新たな電話番号を行i=2として携帯電話のアドレス帳に記憶する。この例で示した図14のi=2の行1423および1443の追加は、利用者Aが自ら管理する情報1425と、利用者Bから開示された情報1422を別に保存しておきたいという要求に応えている。
【0062】
この例では、利用者Bから開示された電話番号「650−999−9999」1422および1442のラベル「home phone」1421および1441が、非同期属性を持つi=0の行のラベル「home phone」と等しい。この場合、利用者Aが携帯電話機で記憶しているi=0の行の情報と、利用者Bから開示されたi=2の行を同じ情報と見なした上で、利用者Bから開示された情報を受け付けないという要求があることも考えられる。この場合には、ステップS1302に相当する非同期属性の判定を、ステップS1306またはステップS1308の後に実行する。その上で、非同期属性を持っている行については、ステップS1307またはステップS1309をスキップするという方法を用いてもよい。
【0063】
次に、再び図13を参照して、ステップS1107において、更新された利用者Bテーブル214と、利用者A第3テーブル213および利用者A第3副テーブル661を同期する方法を説明する。以下の説明では、図13における新テーブルは図12に示す更新後の利用者Bテーブル214であり、図13における旧テーブルは図10に示す同期前の利用者A第3テーブル213および利用者A第3副テーブル661であり、図13における差分テーブルは、ステップS1101によって情報がコピーされた後の利用者A第3差分テーブル217、およびステップS1103によって情報がコピーされた後の利用者A第3差副差分テーブル219である。
【0064】
詳細は、利用者A第1テーブルの同期処理と同じなので、詳細のステップは適宜省略して説明する。同期前の利用者A第3テーブル213と、利用者A第3副テーブル661の初期状態が図10である。前記利用者A第2テーブル212の場合と異なるのは、初期状態において利用者A第3テーブル213と利用者A第3副テーブル661の内容が同じではない点である。すなわち、利用者A第3テーブル213のi=0の行のラベル1031が「SNS−X」、値1032が「benwhite」であるのに対して、利用者A第3副テーブル661のi=0の行のラベル1061は「home phone」、値1062は「650−111−1111」である。本発明の一実施形態に係る方法による同期は、このように同期対象の複数のテーブルの初期状態が異なる場合においても有効である。
【0065】
まず、利用者A第3テーブル213、利用者A第3差分テーブル217、利用者A第3副テーブル661、および利用者A第3副差分テーブル219の行番号を表す変数iに整数0をセットする。同様に、利用者Bテーブルの行番号を表す変数jに整数0をセットする。さらに、変数flagに整数0をセットする(ステップS1301)。行番号iは、利用者A第3テーブル213、利用者A第3副テーブル661、利用者A第3差分テーブル217、および利用者A第3副差分テーブル219で共通である。図13に示す方法で同期処理をする前は、前記ステップS1101およびS1103によるコピー操作によって、利用者A第3テーブル213と利用者A第3差分テーブル217、また利用者A第3副テーブル661と利用者A第3副差分テーブル219は各々等しいからである。
【0066】
この場合、利用者A第3テーブル213および利用者A第3副テーブル661に非同期属性を有する行はないので、以下の処理ではステップS1302はすべてnoとなる。図13に示す処理において、まず更新後の利用者Bテーブル214のj=0の行と、利用者A第3差分テーブル217および利用者A第3副差分テーブル219のi=0の行との比較が行われる。利用者A第3差分テーブル217においてはステップS1303がyes、利用者A第3副差分テーブル219においてはステップS1308がyesとなる。従って、利用者A第3テーブル213のi=0の行のラベル1031および値1032は変化しない。しかし、利用者A第3副テーブル661においては、コピー手段260はi=0の行の値「650−111−1111」1062を、更新後の利用者Bテーブル214に従い「650−999−9999」に書き換える。次にj=0の行とi=1の行の比較では、利用者A第3テーブル213および利用者A第3副テーブル661ともにステップS1303がyesとなる。利用者A第3差分テーブル217および利用者A第3副差分テーブル219にi=2は存在しないので、ステップS1312に進む。ここで利用者A第3差分テーブル217についてはflag=0であるが、利用者A第3副差分テーブル219の場合は、flag=1である。従って、コピー手段260が更新後の利用者Bテーブル214のj=0の行を、利用者A第3テーブル213のi=2の行として追加するが、利用者A第3副テーブル661には追加しない。
【0067】
次に更新後の利用者Bテーブル214のj=1の行と利用者A第3差分テーブル217および利用者A第3副差分テーブル219の各行との比較が実行される。利用者A第3差分テーブル217および利用者A第3副差分テーブル219で、i=1の行でステップS1306の分岐がyesとなるが、i=0およびi=2の行ではS1303の分岐がyesとなる。したがって、コピー手段260はi=1の行のラベル「work email」1033および1063を、ラベル「home email」1222に書き換える。
【0068】
次に、更新後の利用者Bテーブル214のj=2の行と、利用者A第3差分テーブル217および利用者A第3副差分テーブル219の各行との比較が実行される。利用者A第3差分テーブル217においては、i=0の行ではステップS1304の分岐がyesに、i=1およびi=2ではステップS1303の分岐がyesとなる。この結果、利用者A第3差分テーブル217の各行についての上記のような処理の後、flag=1となるため、コピー手段260が利用者A第3テーブル213に変更を加えない。しかし、利用者A第3副差分テーブル661においては、この時点でi=2は存在せず、なおかつi=0およびi=1の両方でステップS1303の分岐がyesとなる。したがって、flag=0の状態でステップS1312の分岐を徹。したがって、ステップS1313の処理によって、更新後の利用者Bテーブルのj=2の行のラベル「SNS−X」1223および値」「benwhite」1233が、利用者A第3副テーブルのj=2の行として追加される。
【0069】
以上で、変更された利用者Bテーブル214と、利用者A第3テーブル213および利用者A第3副テーブル661の同期が完了した。これらの処理の結果を図14の同期サービスNのサーバの利用者A第3テーブル213および、WebサービスXのサーバの利用者A第3副テーブル661に示す。図10に示すように、利用者A第3テーブルと利用者A第3副テーブルの初期状態は異なっているが、上に述べた本願発明の方法による同期によって、図14に示すように利用者A第3テーブル213と利用者A第3副テーブル661との内容は、行の順番が異なるだけで、同じ状態となっている。以上で、図11のステップS1107の処理が完了した。
【0070】
図11および図13のフロー図を使った説明では、変更された利用者Bテーブル214を利用者Aに開示し、利用者Aの各テーブルが同期する例を用いた。利用者A自身が、利用者A第1テーブル211、利用者A第2テーブル212、利用者A第2副テーブル561、利用者A第3テーブル213、または利用者A第3副テーブル661のいずれかを書き換えた場合においても、同様の処理によって、各テーブルが同期する。
【0071】
たとえばいま、図11の処理が終了した状態の利用者A第1テーブル211、利用者A第2テーブル212、利用者A第2副テーブル561、利用者A第3テーブル213、および利用者A第3副テーブル661は、図14に示す状態にある。ここでたとえば、利用者Aがその第1情報端末311の入力手段440を通じて利用者A第1テーブル211のi=2の行の値「benwhite」1413を「susanb」に変更したとする。ステップS1101からステップS1103のように、利用者A第2テーブル212、利用者A第2副テーブル561、利用者A第3テーブル213、および利用者A第3副テーブル661の内容を、各々利用者A第2差分テーブル216、利用者A第2副差分テーブル218、利用者A第3差分テーブル217、または利用者A第3副差分テーブル219にコピーする。そして、図13に示す各ステップによって、変更された利用者A第1テーブル211と、利用者A第1テーブル211、利用者A第2テーブル212、利用者A第2副テーブル561、利用者A第3テーブル213、および利用者A第3副テーブル661を各々同期する。この場合は、図13における旧テーブルは、利用者A第2テーブル212、利用者A第2副テーブル561、利用者A第3テーブル213、および利用者A第3副テーブル661である。また図13における差分テーブルは、利用者A第2差分テーブル216、利用者A第2副差分テーブル218、利用者A第3差分テーブル217、および利用者A第3副差分テーブル219である。さらに図13における新テーブルは、変更後の利用者A第1テーブル211である。このように読み替えた上で、図13に示す処理を利用者A第2テーブル212、利用者A第2副テーブル561、利用者A第3テーブル213、および利用者A第3副テーブル661の各々について実行すれば、図15のような結果となり、利用者Aの有するテーブル群の同期が完了する。
【0072】
次に、本発明の一実施形態による作用効果について説明する。これまで述べたように、利用者の操作、または他者からの開示によって情報が変更または追加される際に、その情報がテーブルの何行目の何列目の情報に対する、変更または追加なのかを指定しないにもかかわらず、本願発明の方法では、複数のテーブルを同期させることができる。この点に係る本願発明の効果には以下4点がある。
【0073】
第1の利点は、同期対象テーブルに与えられた新たな情報が、何行目の何列目の情報かという情報を与えられなくとも、複数の同期対象テーブルが正しく同期する点である。上記実施形態では、利用者Bが利用者Aに開示した情報は、利用者Aの有する複数のテーブルの何行目または何列目の情報であるかは、全く指定されていない。にもかかわらず、既に述べたように、利用者Aの有する複数のテーブルは正しく同期している。
【0074】
第2の利点は、上記のような本発明の一実施形態に係る方法によれば、新たな情報が同期対象テーブルの変更なのか、または追加なのかが明示的に指定されない場合においても、図13に示した同値判定処理により、追加または変更の判断を自動的におこなえる点である。たとえば、上に示した実施形態における利用者A第1テーブル211の同期処理では、利用者Bから利用者Aに開示された情報のラベルおよび値の両方が、既に利用者Aのテーブルに存在すれば、利用者Aのテーブルに何ら変更を加えない。利用者Bから利用者Aに開示された情報の、ラベルが等しいが値が異なる場合は、値が変更されたと判断して値のみを利用者Bから開示された情報で上書きする。逆に利用者Bから利用者Aに開示された情報の、値が等しいがラベルが異なる場合には、ラベルが変更されたと判断してラベルのみを、利用者Bから開示された情報で上書きする。利用者Bから利用者Aに開示された情報の、ラベルも値も等しくなければ利用者Bから追加された情報を新規情報として新たな行に追加する。
【0075】
第3の利点は、テーブルの一部が非同期属性を持つ場合にも、上記第1の利点が有効である点である。たとえば、上記実施形態における利用者A第2テーブル212および利用者A第2副テーブル561の同期処理では、i=0の行が非同期属性を有するにもかかわらず、上記第1の利点がすべて有効である。
【0076】
第4の利点は、同期対象のテーブルが複数あり、かつこの複数のテーブルの初期状態が同一でない場合においても、正しく同期する点である。たとえば、上記実施形態における利用者A第3テーブル213および利用者A第3副テーブル661の同期処理では、これら2つの利用者Aのテーブルの初期状態は異なっている。しかし上記実施形態で述べたように、これら2つのテーブルは正しく同期する。
【特許請求の範囲】
【請求項1】
第1のテーブルと第2のテーブルとを記憶する記憶手段と、
前記第1のテーブルの有する第1の行を、前記第2のテーブルの有する第2の行にコピーする第1のコピー手段と、
情報端末より前記情報端末が記憶する第3のテーブルを受信する受信手段と、
前記第3のテーブルの有する第3の行の第1の列にある第1の情報と、前記第2の行に含まれ、前記第1の列と同じ属性を有する前記第2のテーブルの第2の列にある第2の情報と、を比較する比較手段と、
前記第1の情報と前記第2の情報が等しい場合に、前記第3の行の第4の列にある第3の情報を、前記第1の行の、前記第4の列と同じ属性を有する前記第1のテーブルの有する第5の列にコピーする第2のコピー手段と、
を有することを特徴とするサーバ装置。
【請求項2】
第1のテーブルと第2のテーブルとを記憶する記憶手段と、
前記第1のテーブルの有する第1の行を、前記第2のテーブルの有する第2の行に第1のコピーするコピー手段と、
外部情報源サーバ装置の記憶する第3のテーブルをネットワーク経由にて受信する受信手段と、
前記第3のテーブルの有する第3の行の第1の列にある第1の情報と、前記第2の行に含まれ、前記第1の列と同じ属性を有する前記第2のテーブルの第2の列にある第2の情報とを比較する比較手段と、
前記第1の情報と前記第2の情報が等しい場合に、前記第3の行の第4の列にある第3の情報を、前記第1の行の、前記第4の列と同じ属性を有する前記第1のテーブルの有する第5の列に第2のコピーするコピー手段と、
を有することを特徴とするサーバ装置。
【請求項3】
第1のテーブルと第2のテーブルとを記憶する記憶手段と、
前記第1のテーブルのすべての行を、前記第2のテーブルにコピーする第1のコピー手段と、
情報端末が記憶する第3のテーブルを受信する受信手段と、
前記コピーの後に、前記第3のテーブルの有する第1の行の第1の列にある第1の情報と、前記第3のテーブルの有する前記第1の行の第2の列にある第2の情報とにより形成される第1の情報対を、前記第2のテーブルの有する任意の行の前記第1の列と同じ属性を示す第3の列にある第3の情報と、前記第2のテーブルの有する前記任意の行の前記第2の列と同じ属性を示す第4の列にある第4の情報とにより形成される第2の情報対と比較する比較手段と、
前記第2のテーブルのすべての行について、前記比較手段により前記第1の情報と前記第3の情報が等しくなく、かつ前記第2の情報と前記第4の情報が等しくないことが検出された場合に、前記第1のテーブルに新たな行を追加し、さらに前記新たな行の前記第1の列と同じ属性を示す第5の列に前記第1の情報をコピーし、かつ前記新たな行の前記第2の列と同じ属性を示す第6の列に前記第2の情報をコピーする第2のコピー手段と、
を有することを特徴とするサーバ装置。
【請求項4】
第1のテーブルと第2のテーブルとを記憶する記憶手段と、
前記第1のテーブルのすべての行を、前記第2のテーブルにコピーする第1のコピー手段と、
外部情報源サーバ装置が記憶する第3のテーブルをネットワーク経由にて受信する受信手段と、
前記コピーの後に、前記第3のテーブルの有する第1の行の第1の列にある第1の情報と、前記第3のテーブルの有する前記第1の行の第2の列にある第2の情報とにより形成される第1の情報対を、前記第2のテーブルの有する任意の行の前記第1の列と同じ属性を示す第3の列にある第3の情報と、前記第2のテーブルの有する前記任意の行の前記第2の列と同じ属性を示す第4の列にある第4の情報とにより形成される第2の情報対と比較する比較手段と、
前記第2のテーブルのすべての行について、前記比較手段により前記第1の情報と前記第3の情報が等しくなく、かつ前記第2の情報と前記第4の情報が等しくないことが検出された場合に、前記第1のテーブルに新たな行を追加し、さらに前記新たな行の前記第1の列と同じ属性を示す第5の列に前記第1の情報をコピーし、かつ前記新たな行の前記第2の列と同じ属性を示す第6の列に前記第2の情報をコピーする第2のコピー手段と、
を有することを特徴とするサーバ装置。
【請求項5】
第1のテーブルを記憶する記憶手段と、
同期対象外部サーバ装置の記憶手段が記憶している第2のテーブルの第1の行を、前記第1のテーブルの有する第2の行にコピーする第1のコピー手段と、
情報端末が記憶している第3のテーブルを受信する受信手段と、
前記第3のテーブルの有する第3の行の第1の列にある第1の情報と、前記第2の行に含まれ、前記第1の列と同じ属性を有する前記第1のテーブルの第2の列にある第2の情報とを比較する比較手段と、
前記第1の情報と前記第2の情報が等しいと前記比較手段により検出された場合に、前記第3の行の第4の列にある第3の情報を、前記第1の行に含まれる、前記第4の列と同じ属性を有する前記第2のテーブルの有する第5の列にコピーする第2のコピー手段と、
を有することを特徴とするサーバ装置。
【請求項1】
第1のテーブルと第2のテーブルとを記憶する記憶手段と、
前記第1のテーブルの有する第1の行を、前記第2のテーブルの有する第2の行にコピーする第1のコピー手段と、
情報端末より前記情報端末が記憶する第3のテーブルを受信する受信手段と、
前記第3のテーブルの有する第3の行の第1の列にある第1の情報と、前記第2の行に含まれ、前記第1の列と同じ属性を有する前記第2のテーブルの第2の列にある第2の情報と、を比較する比較手段と、
前記第1の情報と前記第2の情報が等しい場合に、前記第3の行の第4の列にある第3の情報を、前記第1の行の、前記第4の列と同じ属性を有する前記第1のテーブルの有する第5の列にコピーする第2のコピー手段と、
を有することを特徴とするサーバ装置。
【請求項2】
第1のテーブルと第2のテーブルとを記憶する記憶手段と、
前記第1のテーブルの有する第1の行を、前記第2のテーブルの有する第2の行に第1のコピーするコピー手段と、
外部情報源サーバ装置の記憶する第3のテーブルをネットワーク経由にて受信する受信手段と、
前記第3のテーブルの有する第3の行の第1の列にある第1の情報と、前記第2の行に含まれ、前記第1の列と同じ属性を有する前記第2のテーブルの第2の列にある第2の情報とを比較する比較手段と、
前記第1の情報と前記第2の情報が等しい場合に、前記第3の行の第4の列にある第3の情報を、前記第1の行の、前記第4の列と同じ属性を有する前記第1のテーブルの有する第5の列に第2のコピーするコピー手段と、
を有することを特徴とするサーバ装置。
【請求項3】
第1のテーブルと第2のテーブルとを記憶する記憶手段と、
前記第1のテーブルのすべての行を、前記第2のテーブルにコピーする第1のコピー手段と、
情報端末が記憶する第3のテーブルを受信する受信手段と、
前記コピーの後に、前記第3のテーブルの有する第1の行の第1の列にある第1の情報と、前記第3のテーブルの有する前記第1の行の第2の列にある第2の情報とにより形成される第1の情報対を、前記第2のテーブルの有する任意の行の前記第1の列と同じ属性を示す第3の列にある第3の情報と、前記第2のテーブルの有する前記任意の行の前記第2の列と同じ属性を示す第4の列にある第4の情報とにより形成される第2の情報対と比較する比較手段と、
前記第2のテーブルのすべての行について、前記比較手段により前記第1の情報と前記第3の情報が等しくなく、かつ前記第2の情報と前記第4の情報が等しくないことが検出された場合に、前記第1のテーブルに新たな行を追加し、さらに前記新たな行の前記第1の列と同じ属性を示す第5の列に前記第1の情報をコピーし、かつ前記新たな行の前記第2の列と同じ属性を示す第6の列に前記第2の情報をコピーする第2のコピー手段と、
を有することを特徴とするサーバ装置。
【請求項4】
第1のテーブルと第2のテーブルとを記憶する記憶手段と、
前記第1のテーブルのすべての行を、前記第2のテーブルにコピーする第1のコピー手段と、
外部情報源サーバ装置が記憶する第3のテーブルをネットワーク経由にて受信する受信手段と、
前記コピーの後に、前記第3のテーブルの有する第1の行の第1の列にある第1の情報と、前記第3のテーブルの有する前記第1の行の第2の列にある第2の情報とにより形成される第1の情報対を、前記第2のテーブルの有する任意の行の前記第1の列と同じ属性を示す第3の列にある第3の情報と、前記第2のテーブルの有する前記任意の行の前記第2の列と同じ属性を示す第4の列にある第4の情報とにより形成される第2の情報対と比較する比較手段と、
前記第2のテーブルのすべての行について、前記比較手段により前記第1の情報と前記第3の情報が等しくなく、かつ前記第2の情報と前記第4の情報が等しくないことが検出された場合に、前記第1のテーブルに新たな行を追加し、さらに前記新たな行の前記第1の列と同じ属性を示す第5の列に前記第1の情報をコピーし、かつ前記新たな行の前記第2の列と同じ属性を示す第6の列に前記第2の情報をコピーする第2のコピー手段と、
を有することを特徴とするサーバ装置。
【請求項5】
第1のテーブルを記憶する記憶手段と、
同期対象外部サーバ装置の記憶手段が記憶している第2のテーブルの第1の行を、前記第1のテーブルの有する第2の行にコピーする第1のコピー手段と、
情報端末が記憶している第3のテーブルを受信する受信手段と、
前記第3のテーブルの有する第3の行の第1の列にある第1の情報と、前記第2の行に含まれ、前記第1の列と同じ属性を有する前記第1のテーブルの第2の列にある第2の情報とを比較する比較手段と、
前記第1の情報と前記第2の情報が等しいと前記比較手段により検出された場合に、前記第3の行の第4の列にある第3の情報を、前記第1の行に含まれる、前記第4の列と同じ属性を有する前記第2のテーブルの有する第5の列にコピーする第2のコピー手段と、
を有することを特徴とするサーバ装置。
【図1】
【図2】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図3】
【図2】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図3】
【公開番号】特開2010−191516(P2010−191516A)
【公開日】平成22年9月2日(2010.9.2)
【国際特許分類】
【出願番号】特願2009−32637(P2009−32637)
【出願日】平成21年2月16日(2009.2.16)
【出願人】(506183731)リプレックス株式会社 (20)
【Fターム(参考)】
【公開日】平成22年9月2日(2010.9.2)
【国際特許分類】
【出願日】平成21年2月16日(2009.2.16)
【出願人】(506183731)リプレックス株式会社 (20)
【Fターム(参考)】
[ Back to top ]