(57)【特許請求の範囲】
【請求項１】
サーバと、前記サーバに通信可能に接続されるクライアントとの間でデータを同期するシステムであって、
前記サーバは、データに更新時点を付帯させて記憶する第１データベースにアクセス可能であり、前記クライアントは、前記サーバから取得したデータを記憶する第２データベースにアクセス可能であり、
前記クライアントは、
所定の規則に従ってソートした前記データの一部分である興味範囲を特定するためのレンジ指定情報を記憶するレンジ指定情報記憶部と、
前記第２データベースに記憶されている前記データのうち、前記レンジ指定情報により特定される前記興味範囲に含まれるもののそれぞれについて、前記データの識別情報であるデータＩＤおよび前記データの更新時点を含むクライアントレンジ情報を作成するクライアントレンジ情報取得部と、
前記レンジ指定情報および前記クライアントレンジ情報を含む同期要求を前記サーバに送信する同期要求送信部と、
を備え、
前記サーバは、
前記同期要求に含まれる前記クライアントレンジ情報のそれぞれについて、前記クライアントレンジ情報に含まれる前記データＩＤに対応する、前記第１データベースに記憶されているデータの更新時点が、前記クライアントレンジ情報に含まれる前記更新時点よりも新しい場合に、当該データであるダウンロードデータを前記第１データベースから読み出すダウンロードデータ取得部と、
前記ダウンロードデータを含む同期情報を前記クライアントに送信する同期情報送信部と、
を備えること
を特徴とするデータ同期システム。
【請求項２】
請求項１に記載のデータ同期システムであって、
前記サーバは、前記第１データベースに記憶されている前記データのうち、前記同期要求に含まれる前記レンジ指定情報により特定される前記興味範囲に含まれるもののそれぞれについて、前記データを示すデータＩＤおよび前記データの更新時点を含むサーバレンジ情報を作成するサーバレンジ情報取得部を備え、
前記同期情報送信部は、前記ダウンロードデータに加えて前記サーバレンジ情報を前記同期情報に含めて前記クライアントに送信し、
前記クライアントは、
前記同期情報に含まれる前記データを前記第２データベースに登録する更新処理部と、
前記同期情報に含まれる前記サーバレンジ情報のうち、前記サーバレンジ情報に含まれる前記データＩＤが示す前記データをダウンロードすべきか否かを決定するダウンロード決定部と、
ダウンロードすべきと決定した前記データを示す前記データＩＤを含むダウンロード要求を前記サーバに送信するダウンロード要求送信部と、
を備え、
前記ダウンロードデータ取得部は、前記ダウンロード要求に含まれる前記データＩＤに対応するデータを前記第１データベースから読み出し、
前記サーバは、前記ダウンロードデータ取得部が読み出した前記データを含むダウンロード情報を前記クライアントに送信するダウンロード情報送信部を備え、
前記更新処理部は、前記ダウンロード情報に含まれる前記データを前記第２データベースに登録すること、
を特徴とするデータ同期システム。
【請求項３】
請求項２に記載のデータ同期システムであって、
前記レンジ指定情報は、前記データをソートするための前記規則を示すソート情報と、前記ソートされたデータにおける基準となるデータである基準データを示す基準ＩＤと、前記データの数を示すデータ数とが含まれ、
前記クライアントレンジ情報取得部は、前記第２データベースに記憶されている前記データを前記規則に従ってソートし、ソートした一連の前記データにおいて、前記基準データと、前記基準データに後続する、前記データ数が示す数のデータとを前記興味範囲に含まれるデータとし、
前記サーバレンジ情報取得部は、前記第１データベースに記憶されている前記データを前記同期要求に含まれる前記レンジ指定情報に含まれる前記ソート情報が示す前記規則に従ってソートし、ソートした一連の前記データにおいて、前記同期要求に含まれる前記レンジ指定情報に含まれる前記基準ＩＤに対応する前記基準データと、当該基準データに後続する、前記同期要求に含まれる前記レンジ指定情報に含まれる前記データ数が示す数のデータとを前記興味範囲に含まれるデータとすること、
を特徴とするデータ同期システム。
【請求項４】
請求項３に記載のデータ同期システムであって、
前記クライアントレンジ情報取得部は、前記第２データベースに記憶されている前記データを前記規則に従ってソートし、ソートした一連の前記データにおいて、前記基準データと、前記基準データに先行する、前記データ数が示す数のデータと、前記基準データに後続する、前記データ数が示す数のデータとを前記興味範囲に含まれるデータとし、
前記サーバレンジ情報取得部は、前記第１データベースに記憶されている前記データを前記同期要求に含まれる前記レンジ指定情報に含まれる前記ソート情報が示す前記規則に従ってソートし、ソートした一連の前記データにおいて、前記同期要求に含まれる前記レンジ指定情報に含まれる前記基準ＩＤに対応する前記基準データと、当該基準データに先行する、前記同期要求に含まれる前記レンジ指定情報に含まれる前記データ数が示す数のデータと、当該基準データに後続する、当該データ数が示す数のデータとを前記興味範囲に含まれるデータとすること、
を特徴とするデータ同期システム。
【請求項５】
請求項２に記載のデータ同期システムであって、
前記レンジ指定情報記憶部はさらに、前記データを抽出するための条件を記憶し、
前記クライアントレンジ情報取得部は、前記第２データベースに記憶されている前記データのうち前記条件にマッチするものを前記規則に従ってソートした場合に前記興味範囲に含まれる前記データについて、前記クライアントレンジ情報を作成し、
前記同期要求にはさらに前記条件が含まれ、
前記サーバレンジ情報取得部は、前記第１データベースに記憶されている前記データのうち、前記同期要求に含まれる前記条件にマッチするものを前記規則に従ってソートした場合に前記同期要求に含まれる前記レンジ指定情報により特定される前記興味範囲に含まれる前記データについて、前記サーバレンジ情報を作成すること、
を特徴とするデータ同期システム。
【請求項６】
請求項２に記載のデータ同期システムであって、
前記ダウンロードデータ取得部は、前記ダウンロード要求に含まれる前記データＩＤのうち、前記データＩＤに対応する前記データが前記第１データベースに記憶されていないものについて、前記データＩＤを含む削除情報を作成し、
前記クライアントは、前記ダウンロード情報に前記削除情報が含まれている場合に、前記削除情報に含まれる前記データＩＤに対応する前記データを前記第２データベースから削除する削除処理部を備えること、
を特徴とするデータ同期システム。
【請求項７】
請求項２に記載のデータ同期システムであって、
前記データには、前記データの内容に基づいて生成される、前記クライアントにおいて前記データをダウンロードすべきか否かを決定するための情報であるヒントが付帯され、
前記サーバレンジ情報取得部は、前記第１データベースに記憶されているデータのうち、前記同期要求に含まれる前記レンジ指定情報により特定される前記興味範囲に含まれるもののそれぞれについて、前記データを示すデータＩＤ、前記データの更新時点、および前記データに付帯される前記ヒントを含むサーバレンジ情報を作成し、
前記ダウンロード決定部は、前記同期情報に含まれる前記サーバレンジ情報に含まれる前記ヒントに基づいて、前記データをダウンロードすべきか否かを決定すること、
を特徴とするデータ同期システム。
【請求項８】
請求項７に記載のデータ同期システムであって、
前記ダウンロード決定部は、前記サーバレンジ情報に含まれる前記ヒントを出力し、ユーザから前記ダウンロードすべきデータの入力を受け付けること、
を特徴とするデータ同期システム。
【請求項９】
請求項２に記載のデータ同期システムであって、
前記クライアントは、前記第２データベースの更新履歴を記憶する更新履歴記憶部を備え、
前記更新履歴には、更新の対象となった前記データを示す前記データＩＤと、前記データに付帯されている前記更新時点とが含まれており、
前記同期要求送信部は、前記興味範囲に含まれる前記データに対応する前記更新履歴を前記更新履歴記憶部から取得し、前記取得した更新履歴を前記同期要求に設定して前記サーバに送信し、
前記サーバは、前記同期要求に含まれる前記更新履歴のそれぞれについて、前記更新履歴に含まれる前記データＩＤに対応する、前記第１データベースが記憶する前記データに付帯されている前記更新時点が、前記更新履歴に含まれている前記更新時点よりも後である場合、前記第１データベースが記憶する前記データに付帯される前記更新時点および前記データＩＤを含む衝突情報を生成する衝突検知部を備え、
前記同期情報送信部は、前記衝突情報をさらに含む前記同期情報を前記クライアントに送信し、
前記クライアントは、前記衝突情報に含まれる前記データＩＤに対応する前記データを、前記サーバにアップロードするか前記サーバからダウンロードするかを決定する衝突解消部を備え、
前記ダウンロード要求送信部は、前記衝突解消部がダウンロードすると決定した前記データを示す前記データＩＤをさらに含む前記ダウンロード要求を前記サーバに送信し、
前記クライアントは、前記衝突解消部がアップロードすると決定した前記データを前記第２データベースから読み出し、読み出した前記データを含む解消要求を前記サーバに送信する解消要求送信部を備え、
前記サーバは、前記解消要求に含まれている前記データを前記第１データベースに登録する解消処理部を備えること、
を特徴とするデータ同期システム。
【請求項１０】
請求項９に記載のデータ同期システムであって、
前記データにはさらに、前記データに所定のアルゴリズムを適用して求められるデータであるキーが付帯され、
前記更新履歴には前記キーが含まれ、
前記サーバは、前記第１データベースに記憶されている前記データのうち、前記データに前記アルゴリズムを適用して求められるキーが、前記同期要求に含まれる前記更新履歴のいずれかに含まれる前記キーと一致するものを検索し、前記検索したデータを示す前記データＩＤを含む重複情報を生成する重複検知部を備え、
前記同期情報送信部は、前記重複情報をさらに含む前記同期情報を前記クライアントに送信し、
前記クライアントは、前記重複情報に含まれる前記データＩＤに対応する前記データのうち、削除すべきものを決定する重複解消部を備え、
前記解消要求送信部は、前記重複解消部が削除すべきと決定した前記データを示す前記データＩＤを含む解消情報をさらに前記解消要求に含めて前記サーバに送信し、
前記解消処理部はさらに、前記解消要求に含まれる前記解消情報に含まれる前記データＩＤに対応する前記データを前記第１データベースから削除すること、
を特徴とするデータ同期システム。
【請求項１１】
請求項９に記載のデータ同期システムであって、
前記データには前記データＩＤが付帯されており、
前記データＩＤには、前記クライアントにおいて一意な識別情報であるローカルＩＤと、前記サーバおよび前記クライアントの両方において一意な識別情報であるグローバルＩＤとが含まれ、
前記クライアントは、
前記クライアントにおいて前記データが作成された場合に、前記作成されたデータに前記ローカルＩＤを割り当てるローカルＩＤ割当部と、
前記作成されたデータに割り当てられた前記ローカルＩＤのうち、前記グローバルＩＤが割り当てられていないものである未取得ＩＤを記憶する未取得ＩＤ記憶部と、
を備え、
前記同期要求送信部はさらに、前記未取得ＩＤ記憶部に記憶されている前記未取得ＩＤを含めて前記同期要求を前記サーバに送信し、
前記サーバは、前記同期要求に含まれている前記未取得ＩＤに対応する前記グローバルＩＤを前記第１データベースから検索し、前記未取得ＩＤに対応する前記グローバルＩＤがある場合には、当該対応するグローバルＩＤを前記第１データベースから取得し、前記取得したグローバルＩＤおよび前記未取得ＩＤを含むＩＤ情報を生成し、前記ローカルＩＤに対応する前記グローバルＩＤがない場合には、新たに前記グローバルＩＤを割り当て、前記割り当てたグローバルＩＤおよび前記ローカルＩＤを含むＩＤ情報を生成するグローバルＩＤ取得部を備え、
前記同期情報送信部はさらに、前記ＩＤ情報を含めて前記同期情報を前記クライアントに送信し、
前記クライアントは、前記同期情報に含まれている前記ＩＤ情報のそれぞれについて、前記ＩＤ情報に含まれる前記未取得ＩＤに対応する前記データを前記第１データベースから検索し、前記検索したデータに付帯される前記データＩＤに、前記ＩＤ情報に含まれる前記グローバルＩＤを設定するグローバルＩＤ登録部を備えること、
を特徴とするデータ同期システム。
【請求項１２】
請求項１に記載のデータ同期システムであって、
前記ダウンロードデータ取得部は、前記クライアントレンジ情報に含まれる前記データＩＤのうち、前記データＩＤに対応する前記データが前記第１データベースに記憶されていないものについて、前記データＩＤを含む削除情報を作成し、
前記同期情報送信部はさらに、前記削除情報を前記同期情報に設定して前記クライアントに送信し、
前記クライアントは、前記同期情報に含まれている前記削除情報のそれぞれについて、前記削除情報に含まれる前記データＩＤに対応する前記データを前記第２データベースから削除する削除処理部を備えること、
を特徴とするデータ同期システム。
【請求項１３】
サーバと、前記サーバに通信可能に接続されるクライアントとの間でデータを同期する方法であって、
前記サーバは、データに更新時点を付帯させて記憶する第１データベースにアクセス可能であり、前記クライアントは、前記サーバから取得したデータを記憶する第２データベースにアクセス可能であり、
前記クライアントが、所定の規則に従ってソートした前記データの一部分である興味範囲を特定するためのレンジ指定情報をメモリに記憶し、
前記クライアントが、前記第２データベースに記憶されている前記データのうち、前記レンジ指定情報により特定される前記興味範囲に含まれるもののそれぞれについて、前記データの識別情報であるデータＩＤおよび前記データの更新時点を含むクライアントレンジ情報を作成し、
前記クライアントが、前記レンジ指定情報および前記クライアントレンジ情報を含む同期要求を前記サーバに送信し、
前記サーバが、前記同期要求に含まれる前記クライアントレンジ情報のそれぞれについて、前記クライアントレンジ情報に含まれる前記データＩＤに対応する、前記第１データベースに記憶されているデータの更新時点が、前記クライアントレンジ情報に含まれる前記更新時点よりも新しい場合に、当該データであるダウンロードデータを前記第１データベースから読み出し、
前記サーバが、前記ダウンロードデータを含む同期情報を前記クライアントに送信すること、
を特徴とするデータ同期方法。
【請求項１４】
請求項１３に記載のデータ同期方法であって、
前記サーバは、前記第１データベースに記憶されている前記データのうち、前記同期要求に含まれる前記レンジ指定情報により特定される前記興味範囲に含まれるもののそれぞれについて、前記データを示すデータＩＤおよび前記データの更新時点を含むサーバレンジ情報を作成し、
前記サーバは、前記同期情報を前記クライアントに送信する場合に、前記ダウンロードデータに加えて前記サーバレンジ情報を前記同期情報に含め、
前記クライアントが、前記同期情報に含まれる前記データを前記第２データベースに登録し、
前記クライアントが、前記同期情報に含まれる前記サーバレンジ情報のうち、前記サーバレンジ情報に含まれる前記データＩＤが示す前記データをダウンロードすべきか否かを決定し、前記ダウンロードすべきと決定したデータを示す前記データＩＤを含むダウンロード要求を前記サーバに送信し、
前記サーバが、前記ダウンロード要求に含まれる前記データＩＤに対応するデータを前記第１データベースから読み出し、前記読み出した前記データを含むダウンロード情報を前記クライアントに送信し、
前記クライアントは、前記ダウンロード情報に含まれる前記データを前記第２データベースに登録すること、
を特徴とするデータ同期方法。
【請求項１５】
請求項１４に記載のデータ同期方法であって、
前記クライアントは、前記第２データベースの更新履歴を記憶し、
前記更新履歴には、更新の対象となった前記データを示す前記データＩＤと、前記データに付帯されている前記更新時点とが含まれており、
前記クライアントは、前記興味範囲に含まれる前記データに対応する前記更新履歴を前記同期要求に設定して前記サーバに送信し、
前記サーバは、前記同期要求に含まれる前記更新履歴のそれぞれについて、前記更新履歴に含まれる前記データＩＤに対応する、前記第１データベースが記憶する前記データに付帯されている前記更新時点が、前記更新履歴に含まれている前記更新時点よりも後である場合、前記第１データベースが記憶する前記データに付帯される前記更新時点および前記データＩＤを含む衝突情報を生成し、
前記サーバは、前記衝突情報をさらに含む前記同期情報を前記クライアントに送信し、
前記クライアントは、前記衝突情報に含まれる前記データＩＤに対応する、前記第２データベースが記憶する前記データを前記サーバにアップロードするか否かを決定し、
前記クライアントは、アップロードしないと決定した前記データを示す前記データＩＤをさらに含む前記ダウンロード要求を前記サーバに送信し、
前記クライアントは、アップロードすると決定した前記データを前記第２データベースから読み出し、読み出した前記データを含む解消要求を前記サーバに送信し、
前記サーバは、前記解消要求に含まれている前記データを前記第１データベースに登録すること、
を特徴とするデータ同期方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ同期システムおよびデータ同期方法に関する。
【背景技術】
【０００２】
携帯電話などのクライアントがサーバとの間でデータを同期することが行われている。クライアントは定期的に変更されたデータの有無を問い合わせ、更新されたデータがある場合にはそのデータをダウンロードする。従来、サーバは変更履歴を残すことにより、データの変更の有無を管理していた。例えば、特許文献１では、第２のデータベースの更新履歴を保存し、更新履歴の件数が閾値よりも大きいときに同期を開始することで、一度のデータ同期で大量の情報が送受信されることのないようにしている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−８６８００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、携帯電話などのクライアントが常にサーバと通信可能になっているとは限らず、サーバとクライアントとの間の通信が不能である時間が長い場合には、可能になるまでの間の全ての変更履歴を記憶しておく必要があるし、また、サーバが複数のクライアントと通信を行う場合には、クライアントごとにどこまでを同期したのか管理しておく必要があった。  
本発明は、このような背景を鑑みてなされたものであり、クライアントとサーバとの間でデータを同期する場合にサーバの負荷を低減することのできるデータ同期システムおよびデータ同期方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するための本発明の主たる発明は、サーバと、前記サーバに通信可能に接続されるクライアントとの間でデータを同期するシステムであって、前記サーバは、データに更新時点を付帯させて記憶する第１データベースにアクセス可能であり、前記クライアントは、前記サーバから取得したデータを記憶する第２データベースにアクセス可能であり、前記クライアントは、所定の規則に従ってソートした前記データの一部分である興味範囲を特定するためのレンジ指定情報を記憶するレンジ指定情報記憶部と、前記第２データベースに記憶されている前記データのうち、前記レンジ指定情報により特定される前記興味範囲に含まれるもののそれぞれについて、前記データの識別情報であるデータＩＤおよび前記データの更新時点を含むクライアントレンジ情報を作成するクライアントレンジ情報取得部と、前記レンジ指定情報および前記クライアントレンジ情報を含む同期要求を前記サーバに送信する同期要求送信部と、を備え、前記サーバは、前記同期要求に含まれる前記クライアントレンジ情報のそれぞれについて、前記クライアントレンジ情報に含まれる前記データＩＤに対応する、前記第１データベースに記憶されているデータの更新時点が、前記クライアントレンジ情報に含まれる前記更新時点よりも新しい場合に、当該データであるダウンロードデータを前記第１データベースから読み出すダウンロードデータ取得部と、前記ダウンロードデータを含む同期情報を前記クライアントに送信する同期情報送信部と、を備えることとする。
【０００６】
また、本発明のデータ同期システムでは、前記サーバは、前記第１データベースに記憶されている前記データのうち、前記同期要求に含まれる前記レンジ指定情報により特定される前記興味範囲に含まれるもののそれぞれについて、前記データを示すデータＩＤおよび前記データの更新時点を含むサーバレンジ情報を作成するサーバレンジ情報取得部を備え、前記同期情報送信部は、前記ダウンロードデータに加えて前記サーバレンジ情報を前記同期情報に含めて前記クライアントに送信し、前記クライアントは、前記同期情報に含まれる前記データを前記第２データベースに登録する更新処理部と、前記同期情報に含まれる前記サーバレンジ情報のうち、前記サーバレンジ情報に含まれる前記データＩＤが示す前記データをダウンロードすべきか否かを決定するダウンロード決定部と、ダウンロードすべきと決定した前記データを示す前記データＩＤを含むダウンロード要求を前記サーバに送信するダウンロード要求送信部と、を備え、前記ダウンロードデータ取得部は、前記ダウンロード要求に含まれる前記データＩＤに対応するデータを前記第１データベースから読み出し、前記サーバは、前記第２ダウンロードデータ取得部が読み出した前記データを含むダウンロード情報を前記クライアントに送信するダウンロード情報送信部を備え、前記更新処理部は、前記ダウンロード情報に含まれる前記データを前記第２データベースに登録するようにしてもよい。
【０００７】
また、本発明のデータ同期システムでは、前記レンジ指定情報は、前記データをソートするための前記規則を示すソート情報と、前記ソートされたデータにおける基準となるデータである基準データを示す基準ＩＤと、前記データの数を示すデータ数とが含まれ、前記クライアントレンジ情報取得部は、前記第２データベースに記憶されている前記データを前記規則に従ってソートし、ソートした一連の前記データにおいて、前記基準データと、前記基準データに後続する、前記データ数が示す数のデータとを前記興味範囲に含まれるデータとし、前記サーバレンジ情報取得部は、前記第１データベースに記憶されている前記データを前記同期要求に含まれる前記レンジ指定情報に含まれる前記ソート情報が示す前記規則に従ってソートし、ソートした一連の前記データにおいて、前記同期要求に含まれる前記レンジ指定情報に含まれる前記基準ＩＤに対応する前記基準データと、当該基準データに後続する、前記同期要求に含まれる前記レンジ指定情報に含まれる前記データ数が示す数のデータとを前記興味範囲に含まれるデータとするようにしてもよい。
【０００８】
また、本発明のデータ同期システムでは、前記クライアントレンジ情報取得部は、前記第２データベースに記憶されている前記データを前記規則に従ってソートし、ソートした一連の前記データにおいて、前記基準データと、前記基準データに先行する、前記データ数が示す数のデータと、前記基準データに後続する、前記データ数が示す数のデータとを前記興味範囲に含まれるデータとし、前記サーバレンジ情報取得部は、前記第１データベースに記憶されている前記データを前記同期要求に含まれる前記レンジ指定情報に含まれる前記ソート情報が示す前記規則に従ってソートし、ソートした一連の前記データにおいて、前記同期要求に含まれる前記レンジ指定情報に含まれる前記基準ＩＤに対応する前記基準データと、当該基準データに先行する、前記同期要求に含まれる前記レンジ指定情報に含まれる前記データ数が示す数のデータと、当該基準データに後続する、当該データ数が示す数のデータとを前記興味範囲に含まれるデータとするようにしてもよい。
【０００９】
また、本発明のデータ同期システムでは、前記レンジ指定情報記憶部はさらに、前記データを抽出するための条件を記憶し、前記クライアントレンジ情報取得部は、前記第２データベースに記憶されている前記データのうち前記条件にマッチするものを前記規則に従ってソートした場合に前記興味範囲に含まれる前記データについて、前記クライアントレンジ情報を作成し、前記同期要求にはさらに前記条件が含まれ、前記サーバレンジ情報取得部は、前記第１データベースに記憶されている前記データのうち、前記同期要求に含まれる前記条件にマッチするものを前記規則に従ってソートした場合に前記同期要求に含まれる前記レンジ指定情報により特定される前記興味範囲に含まれる前記データについて、前記サーバレンジ情報を作成するようにしてもよい。
【００１０】
また、本発明のデータ同期システムでは、前記ダウンロードデータ取得部は、前記ダウンロード要求に含まれる前記データＩＤのうち、前記データＩＤに対応する前記データが前記第１データベースに記憶されていないものについて、前記データＩＤを含む削除情報を作成し、前記クライアントは、前記ダウンロード情報に前記削除情報が含まれている場合に、前記削除情報に含まれる前記データＩＤに対応する前記データを前記第２データベースから削除する削除処理部を備えるようにしてもよい。
【００１１】
また、本発明のデータ同期システムでは、前記データには、前記データの内容に基づいて生成される、前記クライアントにおいて前記データをダウンロードすべきか否かを決定するための情報であるヒントが付帯され、前記サーバレンジ情報取得部は、前記第１データベースに記憶されているデータのうち、前記同期要求に含まれる前記レンジ指定情報により特定される前記興味範囲に含まれるもののそれぞれについて、前記データを示すデータＩＤ、前記データの更新時点、および前記データに付帯される前記ヒントを含むサーバレンジ情報を作成し、前記ダウンロード決定部は、前記同期情報に含まれる前記サーバレンジ情報に含まれる前記ヒントに基づいて、前記データをダウンロードすべきか否かを決定するようにしてもよい。
【００１２】
また、本発明のデータ同期システムでは、前記ダウンロード決定部は、前記サーバレンジ情報に含まれる前記ヒントを出力し、ユーザから前記ダウンロードすべきデータの入力を受け付けるようにしてもよい。
【００１３】
また、本発明のデータ同期システムでは、前記クライアントは、前記第２データベースの更新履歴を記憶する更新履歴記憶部を備え、前記更新履歴には、更新の対象となった前記データを示す前記データＩＤと、前記データに付帯されている前記更新時点とが含まれており、前記同期要求送信部は、前記興味範囲に含まれる前記データに対応する前記更新履歴を前記更新履歴記憶部から取得し、前記取得した更新履歴を前記同期要求に設定して前記サーバに送信し、前記サーバは、前記同期要求に含まれる前記更新履歴のそれぞれについて、前記更新履歴に含まれる前記データＩＤに対応する、前記第１データベースが記憶する前記データに付帯されている前記更新時点が、前記更新履歴に含まれている前記更新時点よりも後である場合、前記第１データベースが記憶する前記データに付帯される前記更新時点および前記データＩＤを含む衝突情報を生成する衝突検知部を備え、前記同期情報送信部は、前記衝突情報をさらに含む前記同期情報を前記クライアントに送信し、前記クライアントは、前記衝突情報に含まれる前記データＩＤに対応する前記データを、前記サーバにアップロードするか前記サーバからダウロードするかを決定する衝突解消部を備え、前記ダウンロード要求送信部は、前記衝突解消部がダウンロードすると決定した前記データを示す前記データＩＤをさらに含む前記ダウンロード要求を前記サーバに送信し、前記クライアントは、前記衝突解消部がアップロードすると決定した前記データを前記第２データベースから読み出し、読み出した前記データを含む解消要求を前記サーバに送信する解消要求送信部を備え、前記サーバは、前記解消要求に含まれている前記データを前記第１データベースに登録する解消処理部を備えるようにしてもよい。
【００１４】
また、本発明のデータ同期システムでは、前記データにはさらに、前記データに所定のアルゴリズムを適用して求められるデータであるキーが付帯され、前記更新履歴には前記キーが含まれ、前記サーバは、前記第１データベースに記憶されている前記データのうち、前記データに前記アルゴリズムを適用して求められるキーが、前記同期要求に含まれる前記更新履歴のいずれかに含まれる前記キーと一致するものを検索し、前記検索したデータを示す前記データＩＤを含む重複情報を生成する重複検知部を備え、前記同期情報送信部は、前記重複情報をさらに含む前記同期情報を前記クライアントに送信し、前記クライアントは、前記重複情報に含まれる前記データＩＤに対応する前記データのうち、削除すべきものを決定する重複解消部を備え、前記解消要求送信部は、前記重複解消部が削除すべきと決定した前記データを示す前記データＩＤを含む解消情報をさらに前記解消要求に含めて前記サーバに送信し、前記解消処理部はさらに、前記解消要求に含まれる前記解消情報に含まれる前記データＩＤに対応する前記データを前記第１データベースから削除するようにしてもよい。
【００１５】
また、本発明のデータ同期システムでは、前記データには前記データＩＤが付帯されており、前記データＩＤには、前記クライアントにおいて一意な識別情報であるローカルＩＤと、前記サーバおよび前記クライアントの両方において一意な識別情報であるグローバルＩＤとが含まれ、前記クライアントは、前記クライアントにおいて前記データが作成された場合に、前記作成されたデータに前記ローカルＩＤを割り当てるローカルＩＤ割当部と、前記作成されたデータに割り当てられた前記ローカルＩＤのうち、前記グローバルＩＤが割り当てられていないものである未取得ＩＤを記憶する未取得ＩＤ記憶部と、を備え、前記同期要求送信部はさらに、前記未取得ＩＤ記憶部に記憶されている前記未取得ＩＤを含めて前記同期要求を前記サーバに送信し、前記サーバは、前記同期要求に含まれている前記未取得ＩＤに対応する前記グローバルＩＤを前記第１データベースから検索し、前記未取得ＩＤに対応する前記グローバルＩＤがある場合には、当該対応するグローバルＩＤを前記第１データベースから取得し、前記取得したグローバルＩＤおよび前記未取得ＩＤを含むＩＤ情報を生成し、前記ローカルＩＤに対応する前記グローバルＩＤがない場合には、新たに前記グローバルＩＤを割り当て、前記割り当てたグローバルＩＤおよび前記ローカルＩＤを含むＩＤ情報を生成するグローバルＩＤ取得部を備え、前記同期情報送信部はさらに、前記ＩＤ情報を含めて前記同期情報を前記クライアントに送信し、前記クライアントは、前記同期情報に含まれている前記ＩＤ情報のそれぞれについて、前記ＩＤ情報に含まれる前記未取得ＩＤに対応する前記データを前記第１データベースから検索し、前記検索したデータに付帯される前記データＩＤに、前記ＩＤ情報に含まれる前記グローバルＩＤを設定するグローバルＩＤ登録部を備えるようにしてもよい。
【００１６】
また、本発明のデータ同期システムでは、前記第１ダウンロードデータ取得部は、前記クライアントレンジ情報に含まれる前記データＩＤのうち、前記データＩＤに対応する前記データが前記第１データベースに記憶されていないものについて、前記データＩＤを含む削除情報を作成し、前記同期情報送信部はさらに、前記削除情報を前記同期情報に設定して前記クライアントに送信し、前記クライアントは、前記同期情報に含まれている前記削除情報のそれぞれについて、前記削除情報に含まれる前記データＩＤに対応する前記データを前記第２データベースから削除する削除処理部を備えるようにしてもよい。
【００１７】
また、本発明の他の態様は、サーバと、前記サーバに通信可能に接続されるクライアントとの間でデータを同期する方法であって、前記サーバは、データに更新時点を付帯させて記憶する第１データベースにアクセス可能であり、前記クライアントは、前記サーバから取得したデータを記憶する第２データベースにアクセス可能であり、前記クライアントが、所定の規則に従ってソートした前記データの一部分である興味範囲を特定するためのレンジ指定情報をメモリに記憶し、前記クライアントが、前記第２データベースに記憶されている前記データのうち、前記レンジ指定情報により特定される前記興味範囲に含まれるもののそれぞれについて、前記データの識別情報であるデータＩＤおよび前記データの更新時点を含むクライアントレンジ情報を作成し、前記クライアントが、前記レンジ指定情報および前記クライアントレンジ情報を含む同期要求を前記サーバに送信し、前記サーバが、前記同期要求に含まれる前記クライアントレンジ情報のそれぞれについて、前記クライアントレンジ情報に含まれる前記データＩＤに対応する、前記第１データベースに記憶されているデータの更新時点が、前記クライアントレンジ情報に含まれる前記更新時点よりも新しい場合に、当該データであるダウンロードデータを前記第１データベースから読み出し、前記サーバが、前記ダウンロードデータを含む同期情報を前記クライアントに送信することとする。
【００１８】
また、本発明のデータ同期方法では、前記サーバは、前記第１データベースに記憶されている前記データのうち、前記同期要求に含まれる前記レンジ指定情報により特定される前記興味範囲に含まれるもののそれぞれについて、前記データを示すデータＩＤおよび前記データの更新時点を含むサーバレンジ情報を作成し、前記サーバは、前記同期情報を前記クライアントに送信する場合に、前記ダウンロードデータに加えて前記サーバレンジ情報を前記同期情報に含め、前記クライアントが、前記同期情報に含まれる前記データを前記第２データベースに登録し、前記クライアントが、前記同期情報に含まれる前記サーバレンジ情報のうち、前記サーバレンジ情報に含まれる前記データＩＤが示す前記データをダウンロードすべきか否かを決定し、前記ダウンロードすべきと決定したデータを示す前記データＩＤを含むダウンロード要求を前記サーバに送信し、前記サーバが、前記ダウンロード要求に含まれる前記データＩＤに対応するデータを前記第１データベースから読み出し、前記読み出した前記データを含むダウンロード情報を前記クライアントに送信し、前記クライアントは、前記ダウンロード情報に含まれる前記データを前記第２データベースに登録することとする。
【００１９】
また、本発明のデータ同期方法では、前記クライアントは、前記第２データベースの更新履歴を記憶し、前記更新履歴には、更新の対象となった前記データを示す前記データＩＤと、前記データに付帯されている前記更新時点とが含まれており、前記クライアントは、前記興味範囲に含まれる前記データに対応する前記更新履歴を前記同期要求に設定して前記サーバに送信し、前記サーバは、前記同期要求に含まれる前記更新履歴のそれぞれについて、前記更新履歴に含まれる前記データＩＤに対応する、前記第１データベースが記憶する前記データに付帯されている前記更新時点が、前記更新履歴に含まれている前記更新時点よりも後である場合、前記第１データベースが記憶する前記データに付帯される前記更新時点および前記データＩＤを含む衝突情報を生成し、前記サーバは、前記衝突情報をさらに含む前記同期情報を前記クライアントに送信し、前記クライアントは、前記衝突情報に含まれる前記データＩＤに対応する、前記第２データベースが記憶する前記データを前記サーバにアップロードするか否かを決定し、前記クライアントは、アップロードしないと決定した前記データを示す前記データＩＤをさらに含む前記ダウンロード要求を前記サーバに送信し、前記クライアントは、アップロードすると決定した前記データを前記第２データベースから読み出し、読み出した前記データを含む解消要求を前記サーバに送信し、前記サーバは、前記解消要求に含まれている前記データを前記第１データベースに登録するようにしてもよい。
【００２０】
その他本願が開示する課題やその解決方法については、発明の実施形態の欄および図面により明らかにされる。
【発明の効果】
【００２１】
本発明によれば、クライアントとサーバとの間でデータを同期する場合にサーバの負荷を低減することができる。
【図面の簡単な説明】
【００２２】
【図１】通信システムの全体構成を示す図である。
【図２】クライアント１０のハードウェア構成を示す図である。
【図３】サーバ２０のハードウェア構成を示す図である。
【図４】クライアント１０のソフトウェア構成を示す図である。
【図５】クライアントレコードの構成例を示す図である。
【図６】レンジ指定情報記憶部１３２の構成例を示す図である。
【図７】第１の実施形態に係る同期要求４１の構成例を示す図である。
【図８】第１の実施形態に係る同期情報４２の構成例を示す図である。
【図９】ダウンロード要求４３の構成例を示す図である。
【図１０】ダウンロード情報の構成例を示す図である。
【図１１】サーバ２０のソフトウェア構成を示す図である。
【図１２】サーバレコードの構成例を示す図である。
【図１３】第１の実施形態に係るデータの同期処理の流れを説明する図である。
【図１４】第１の実施形態に係る同期要求４１の作成処理の流れを示す図である。
【図１５】第１の実施形態に係るレンジ情報の作成処理の流れを示す図である。
【図１６】第１の実施形態に係る同期要求４１への対応処理の流れを示す図である。
【図１７】第１の実施形態に係る同期情報４２への対応処理の流れを示す図である。
【図１８】クライアント１０において実行される適用処理の流れを示す図である。
【図１９】第１の実施形態に係るダウンロード要求４３の対応処理の流れを説明する図である。
【図２０】第２の実施形態に係るクライアント１０のソフトウェア構成を示す図である。
【図２１】第２の実施形態に係るクライアントレコードの構成例を示す図である。
【図２２】クライアント変更履歴の構成例を示す図である。
【図２３】重複記憶部１３６の構成例を示す図である。
【図２４】クライアント変更検知部１１０による処理の流れを示す図である。
【図２５】ステップＳ４０７に示す重複判定処理の流れを示す図である。
【図２６】ステップＳ４０８に示す変更履歴登録処理の流れを示す図である。
【図２７】第２の実施形態に係る同期要求４１の構成例を示す図である。
【図２８】第２の実施形態に係る同期情報４２の構成例を示す図である。
【図２９】解消要求４５の構成例を示す図である。
【図３０】解消結果情報４６の構成例を示す図である。
【図３１】第２の実施形態に係るサーバ２０のソフトウェア構成を示す図である。
【図３２】第２の実施形態に係るサーバレコードの構成例を示す図である。
【図３３】第２の実施形態に係るデータの同期処理の流れを説明する図である。
【図３４】第２の実施形態に係る同期要求の作成処理の流れを示す図である。
【図３５】第２の実施形態に係るレンジ情報の作成処理の流れを示す図である。
【図３６】第２の実施形態に係る同期要求への対応処理の流れを示す図である。
【図３７】サーバ２０において実行されるＧＵＩＤの割当処理の流れを示す図である。
【図３８】サーバ２０において実行される衝突および重複の検知処理の流れを示す図である。
【図３９】第２の実施形態に係る同期情報４２への対応処理の流れを示す図である。
【図４０】クライアント１０において実行されるＧＵＩＤの割当処理
【図４１】第２の実施形態に係るダウンロード情報４４への対応処理の流れを示す図である。
【図４２】クライアント１０において実行される衝突解消処理の流れを示す図である。
【図４３】クライアント１０において実行される重複解消処理の流れを示す図である。
【図４４】解消要求４５に対応する処理の流れを示す図である。
【図４５】解消結果情報４６に対応する処理の流れを示す図である。
【図４６】第３の実施形態に係るクライアント１０のソフトウェア構成を示す図である。
【図４７】第３の実施形態に係るレンジ指定情報記憶部１３２の構成例を示す図である。
【図４８】第３の実施形態に係るクライアント変更履歴記憶部１３３に記憶されるクライアント変更履歴の一例を示す図である。
【図４９】第３の実施形態に係るサーバ２０のソフトウェア構成を示す図である。
【図５０】第３の実施形態に係るサーバ変更履歴記憶部２３１に記憶されるサーバ変更情報の構成例を示す図である。
【図５１】第３の実施形態に係る同期要求４１の構成例を示す図である。
【図５２】第３の実施形態に係るレンジ情報の作成処理の流れを示す図である。
【図５３】第３の実施形態に係る同期要求４１への対応処理の流れを示す図である。
【発明を実施するための形態】
【００２３】
＝＝全体構成＝＝
図１は、本発明の一実施形態に係る通信システムの全体構成を示す図である。本実施形態の通信システムは、クライアント１０およびサーバ２０を含んで構成される。クライアント１０およびサーバ２０はそれぞれ通信ネットワーク３０に接続されており、クライアント１０およびサーバ２０は通信ネットワーク３０を介して通信可能になっている。本実施形態の通信システムは、サーバ２０とクライアント１０との間のデータの同期を行うものであり、クライアント１０のユーザが興味を持っているデータのみが同期される。本実施形態において、ユーザが興味を持っているデータとは、データをある条件に従って選択し、選択されたデータを、ある条件に従ってソートした場合における、ソートされた一連のデータの一部分である。以下、データを選択するための条件を「フィルタ条件」といい、データをソートするための規則を「ソート規則」という。また、ソートされた一連のデータにおける上記一部分を示す範囲を「興味範囲」という。
【００２４】
サーバ２０は、例えば、パーソナルコンピュータやワークステーションなどのコンピュータである。サーバ２０は、データを記憶するデータベースを備える（以下、サーバ２０が備えるデータベースを「サーバデータベース２１」という。本発明の「第１データベース」に該当する。）。サーバ２０が管理するデータは、例えば、写真などの画像データや、電話帳などのデータなどである。クライアント１０は、例えば、携帯電話端末やＰＤＡ（Personal Data Assistant）、パーソナルコンピュータなどのコンピュータである。クライアント１０も、データを記憶するデータベースを備えている（以下、クライアントが備えるデータベースを「クライアントデータベース１１」という。本発明の「第２データベース」に該当する。）。クライアントデータベース１１とサーバデータベース２１とが同期される。
【００２５】
本実施形態では、各データには、更新された時点（以下、「更新時点」という。データが新しく作成されたときにも、作成された時点が更新時点にも設定されるものとする。）が付帯され、データの新古は更新時点の比較により行うものとする。本実施形態において、データの作成や更新、削除などがなされた時点とは、サーバ２０におけるサーバデータベース２１に対して行われたデータの変更（追加、更新および削除を含む。）が何番目であったかを表す値であるものとする。すなわち、サーバ２０においては１時点につき１つのデータのみが変更の対象となるものとし、サーバ２０において、サーバデータベース２１に対するデータの変更が行われる度に、時点を表す値がインクリメントしていくものとする。
【００２６】
＝＝ハードウェア構成＝＝
図２は、クライアント１０のハードウェア構成を示す図である。クライアント１０は、ＣＰＵ１０１、メモリ１０２、記憶装置１０３、通信インタフェース１０４、入力装置１０５、および出力装置１０６を備えている。
【００２７】
記憶装置１０３は、各種のデータやプログラムを記憶する、例えば、ハードディスクドライブやフラッシュメモリ、ＣＤ−ＲＯＭドライブなどである。ＣＰＵ１０１は、記憶装置１０３に記憶されているプログラムをメモリ１０２に読み出して実行することにより各種の機能を実現する。通信インタフェース１０４は、通信ネットワーク３０に接続するためのインタフェースである。通信インタフェース１０４は、例えば、イーサネット（登録商標）に接続するためのアダプタ、電話回線網に接続するためのモデム、無線通信網に接続するための無線通信器などである。入力装置１０５は、クライアント１０を操作するユーザからデータの入力を受け付ける、例えば、キーパッドやタッチパネル、キーボード、マウスなどである。出力装置１０６は、データを出力する、例えば、ディスプレイやプリンタなどである。
【００２８】
図３は、サーバ２０のハードウェア構成を示す図である。サーバ２０は、ＣＰＵ２０１、メモリ２０２、記憶装置２０３、通信インタフェース２０４、入力装置２０５、および出力装置２０６を備えている。
【００２９】
記憶装置２０３は、各種のデータやプログラムを記憶する、例えば、ハードディスクドライブやフラッシュメモリ、ＣＤ−ＲＯＭドライブなどである。ＣＰＵ２０１は、記憶装置２０３に記憶されているプログラムをメモリ２０２に読み出して実行することにより各種の機能を実現する。通信インタフェース２０４は、通信ネットワーク３０に接続するためのインタフェースである。通信インタフェース２０４は、例えば、イーサネット（登録商標）に接続するためのアダプタ、電話回線網に接続するためのモデム、無線通信網に接続するための無線通信器などである。入力装置２０５は、サーバ２０を操作するユーザからデータの入力を受け付ける、例えば、キーボードやマウスなどである。出力装置２０６は、データを出力する、例えば、ディスプレイやプリンタなどである。
【００３０】
＝＝第１の実施形態＝＝
以下、第１の実施形態について説明する。第１の実施形態では、クライアント１０においてデータの更新が行われないものとする。また、第１の実施形態では、サーバ２０において管理されるデータは大量であり、その全てをクライアント１０にダウンロードすることはできないものとする。  
第１の実施形態では、クライアント１０が、サーバ２０からサーバ２０において追加、変更、または削除されたデータに関する情報を取得し、その中から必要なデータを選択的にダウンロードするようにしている。すなわち、サーバ２０では、クライアント１０における同期の状況に関する管理を行う必要がないようにしている。
【００３１】
＝＝クライアント１０のソフトウェア構成＝＝
図４は、第１の実施形態に係るクライアント１０のソフトウェア構成を示す図である。同図に示すように、クライアント１０は、クライアントデータベース１１、フィルタ選択部１１１、同期要求送信部１１２、同期情報受信部１１３、削除処理部１１４、ダウンロード決定部１１５、レンジ指定情報更新部１１６、ダウンロード要求送信部１１７、ダウンロード情報受信部１１８、更新処理部１１９、クライアントＩＤ記憶部１３１、レンジ指定情報記憶部１３２を備えている。なお、フィルタ選択部１１１、同期要求送信部１１２、同期情報受信部１１３、削除処理部１１４、ダウンロード決定部１１５、レンジ指定情報更新部１１６、ダウンロード要求送信部１１７、ダウンロード情報受信部１１８、更新処理部１１９は、クライアント１０が備えるＣＰＵ１０１が記憶装置１０３に記憶されているプログラムをメモリ１０２に読み出して実行することにより実現される。また、クライアントデータベース１１、クライアントＩＤ記憶部１３１、レンジ指定情報記憶部１３２は、クライアント１０が備えるメモリ１０２や記憶装置１０３が提供する記憶領域として実現される。クライアントデータベース１１は、クライアント１０とは異なるコンピュータ（データベースサーバ）により提供されるようにしてもよい。この場合、クライアント１０は、例えば、通信ネットワーク３０を介してデータベースサーバにアクセス可能に接続されるようにする。
【００３２】
クライアントデータベース１１は、サーバ２０から取得したデータを記憶する。図５は、クライアントデータベース１１に記憶されるデータ（以下、「クライアントレコード」ともいう。）の構成例を示す図である。クライアントレコードには、ＧＵＩＤ（Globally Unique IDentifier）、更新時点、キー、カラム、ヒント、およびデータの本体が含まれている。  
ＧＵＩＤ（本発明の「データＩＤ」および「グローバルＩＤ」に該当する。）は、サーバ２０によりデータに割り当てられる識別情報であり、本実施形態の通信システムにおいて一意な番号である。更新時点は、サーバ２０においてデータが最後に更新された時点を示す。キーは、クライアントレコードの重複を判定するためのデータであり、データ本体に基づいて作成される。  
キーは、例えば、データ本体がアドレス帳のデータである場合には、電話番号や氏名などの文字列を連結して作成することができ、データ本体が電子メールのデータである場合には、電子メールの名宛人（Ｔｏ）、差出人（Ｆｒｏｍ）、日付（Ｄａｔｅ）、および件名（Ｓｕｂｊｅｃｔ）に設定されている文字列を連結して作成することができる。  
カラムは、データがフィルタ条件を満たすか否かを判定するために用いるものであり、データ本体の一部である。ヒントは、サーバ２０からデータをダウンロードするか否かを決定するための情報である。本実施形態では、ヒントには、データの重要度が含まれているものとするが、例えば、データ本体がアドレス帳のデータである場合には氏名とし、データ本体が電子メールのデータである場合には、電子メールの件名と差出人の文字列を結合したものとして、ユーザがデータの内容を把握することができるようにする。また、ヒントには、例えば、データの重要度やカテゴリ、データサイズ、データ内容の要約など各種のメタデータを含めることもできる。
【００３３】
クライアントＩＤ記憶部１３１は、クライアント１０の識別情報（以下、「クライアントＩＤ」という。）を記憶する。本実施形態では、クライアントＩＤ記憶部１３１には、予めクライアントＩＤが記憶されているものとする。
【００３４】
レンジ指定情報記憶部１３２は、フィルタ条件ごとに、興味範囲に含まれるデータを指定する情報（以下、「レンジ指定情報」という。）を記憶する。図６は、レンジ指定情報記憶部１３２の構成例を示す図である。同図に示すように、レンジ指定情報には、データ項目、基準ＩＤおよびデータ数が含まれる。データ項目はソート規則を示す。本実施形態では、データのソートは、データを所定の項目の順に並べることにより行うものとし、この項目を示すのがデータ項目である。なお、データ項目が同じ値である場合には、ＧＵＩＤの順にソートするものとする。これにより、データ項目が同じ値であるデータが複数ある場合にも、クライアント１０およびサーバ２０においてソートされたデータの順番が異なることを防ぐことができる。基準ＩＤは、興味範囲を決定するための基準となるデータ（以下、「基準データ」という。）のＧＵＩＤである。本実施形態では、ソートされたデータにおいて、基準データと、基準データに後続する所定数のデータとを含む範囲を興味範囲としている。データ数は、興味範囲に含まれるデータの数である。したがって、基準データに後続するデータの数は、データ数から１を減じた数となる。図６の例に示すように、レンジ指定情報のデータ項目が「名前」であり、基準ＩＤが「０００１」であり、データ数が「９」である場合、データを「名前」順（例えば、文字コード順）にソートし、ソートされた一連のデータのうち、ＧＵＩＤが「０００１」であるデータを基準データとして、この基準データおよび基準データに後続する８つのデータを含む「９」つのデータが興味範囲に含まれるデータとなる。なお、データ項目には複数の項目が含まれていてもよい。データ項目には昇順降順を指定するようにしてもよい。例えば、順序の指定を省略すると昇順にソートし、データ項目に「ＤＥＳＣ」の文字列が併記された場合には降順にソートするようにすることができる。
【００３５】
フィルタ選択部１１１は、サーバ２０からデータを取得する際に用いるフィルタ条件をレンジ指定情報記憶部１３２から選択する。フィルタ選択部１１１は、例えば、レンジ指定情報記憶部１３２に記憶されているフィルタ条件を一覧出力して、ユーザからフィルタ条件の指定を受け付けるようにしてもよいし、入力装置１０５を介してユーザからフィルタ条件の入力を受け付けるようにしてもよい。
【００３６】
同期要求送信部１１２は、同期を行うためのコマンド（以下、「同期要求４１」という。）をサーバ２０に送信する。図７は、同期要求４１の構成例を示す図である。同期要求４１には、クライアントＩＤ、フィルタ条件、レンジ指定情報およびクライアントレンジ情報が設定される。クライアントレンジ情報は、クライアントデータベース１１から、レンジ指定情報が示す興味範囲に含まれるデータのＧＵＩＤおよび更新時点を読み出したものである。同期要求送信部１１２は、クライアントＩＤ記憶部１３１に記憶されているクライアントＩＤを同期要求４１に設定し、フィルタ選択部１１１が選択したフィルタ条件（以下、「選択フィルタ条件」という。）を同期要求４１に設定し、レンジ指定情報の入力を受け付けて同期要求４１に設定する。また、同期要求送信部１１２は、レンジ指定情報が示す興味範囲に含まれるクライアントレコードのＧＵＩＤおよび更新時点をクライアントレンジ情報として同期要求４１に設定し、上記同期要求４１をサーバ２０に送信する。なお、同期要求送信部１１２による同期要求４１の作成処理の詳細については後述する。
【００３７】
同期情報受信部１１３は、同期要求４１に応じてサーバ２０から送信される、サーバ２０との間でデータを同期するために必要な情報（以下、「同期情報」という。）をサーバ２０から受信する。図８は、同期情報４２の構成例を示す図である。同期情報４２には、サーバレンジ情報およびレンジダウンロード情報が含まれる。サーバレンジ情報は、サーバ２０において興味範囲に含まれるデータのＧＵＩＤおよび更新時点の一覧である。レンジダウンロード情報は、クライアント１０において興味範囲に含まれていたデータ、すなわち、クライアントレンジ情報に対応するデータのうち、サーバ２０において更新されていたものについての、更新後のデータである。なお、クライアントレンジ情報が示すデータがサーバ２０において削除されていた場合には、レンジダウンロード情報の削除フラグに「真」が設定され、キーやカラム、ヒント、本体などは設定されない。
【００３８】
削除処理部１１４は、クライアントデータベース１１からデータの削除を行う。削除処理部１１４は、同期情報４２に含まれるレンジダウンロード情報のうち、削除フラグが「真」であるもののそれぞれについて、ＧＵＩＤに対応するデータをクライアントデータベース１１から削除する。なお、削除処理部１１４による削除処理の詳細については後述する。
【００３９】
ダウンロード決定部１１５は、サーバ２０から取得（ダウンロード）すべきデータを決定する。第１の実施形態では、ダウンロード決定部１１５は、同期情報４２に含まれるサーバレンジ情報のうち必要なものをダウンロードすべきデータとして決定する。ダウンロードすべきデータとは、前回の同期時よりも後に、サーバ２０において更新されたデータ（以下、「更新データ」ともいう。）や新しく追加されたデータ（以下、「追加データ」ともいう。）であって、フィルタ条件にマッチし、レンジ指定情報が示す興味範囲に含まれるようになったもの（更新や追加によりフィルタ条件にマッチし、あるいは興味範囲に含まれるようになったことを「フィルタイン」という。）の全てまたは一部である。例えば、ダウンロード決定部１１５は、サーバレンジ情報のうち、サーバレンジ情報の更新時点と、サーバレンジ情報のＧＵＩＤに対応するクライアントレコードの更新時点とを比較して、サーバレンジ情報の更新時点の方が新しいもの（すなわち、更新データを示すもの）や、サーバレンジ情報のＧＵＩＤに対応するクライアントレコードがクライアントデータベース１１に登録されていないものをダウンロードすべきデータとして決定することができる。なお、ダウンロード決定部１１５は、サーバレンジ情報のヒントを表示し、ユーザからダウンロードすべきデータの指定を受け付けるようにしてもよい。また、ダウンロード決定部１１５は、ヒントにデータサイズが含まれている場合には、クライアントデータベース１１の記憶容量を越えない量のデータをダウンロードすべきデータとして決定することもできる。
【００４０】
さらに、ダウンロード決定部１１５は、クライアントデータベース１１に登録されているが、サーバ２０においてはフィルタ条件にマッチしないデータ（更新されたことによりフィルタ条件にマッチしなくなったことを「フィルタアウト」という。）の一部または全部をダウンロードすべきデータに含めてもよい。この場合、ダウンロード決定部１１５は、クライアントデータベース１１からフィルタ条件にマッチするデータを検索し、検索したデータのうち、ＧＵＩＤが同期情報４２のサーバレンジ情報含まれていないものをフィルタアウトされたデータであると判定することができる。
【００４１】
ダウンロード要求送信部１１７は、サーバ２０からデータを取得するためのコマンド（以下、「ダウンロード要求」という。）をサーバ２０に送信する。図９は、ダウンロード要求４３の構成例を示す図である。ダウンロード要求４３には、ダウンロード決定部１１５が決定したデータのＧＵＩＤを含む情報（以下、「取得情報」という。）が設定される。
【００４２】
ダウンロード情報受信部１１８は、ダウンロード要求４３に応じてサーバ２０から送信される、取得情報に対応するデータを含む情報（以下、「ダウンロード情報」という。）を受信する。図１０は、ダウンロード情報の構成例を示す図である。ダウンロード情報には、取得ダウンロード情報が含まれる。取得ダウンロード情報は、取得情報に対応するデータを含む情報である。取得ダウンロード情報には、ＧＵＩＤ、更新時点、削除フラグ、キー、カラム、ヒントおよび本体が含まれる。取得情報に含まれるＧＵＩＤに対応するデータがサーバ２０において削除されていた場合、削除フラグには真が設定され、キー、カラム、ヒントおよび本体は省略される。
【００４３】
更新処理部１１９は、ダウンロード情報に応じてクライアントデータベース１１を更新する。更新処理部１１９は、ダウンロード情報に含まれている取得ダウンロード情報のそれぞれについて、削除フラグが「偽」であれば、取得ダウンロード情報に含まれているＧＵＩＤに対応付けて、更新時点、キー、カラム、ヒント、本体をクライアントデータベース１１に登録する。なお、削除フラグが「真」である場合には、削除処理部１１４により、ＧＵＩＤに対応するデータをクライアントデータベース１１から削除される。更新処理部１１９による更新処理の詳細については後述する。
【００４４】
＝＝サーバ２０のソフトウェア構成＝＝
図１１は、サーバ２０のソフトウェア構成を示す図である。サーバ２０は、ＧＵＩＤ生成部２１０、時点生成部２１１、データベース変更部２１２、同期要求受信部２１３、ダウンロードデータ取得部２１４、サーバレンジ情報取得部２１５、同期情報送信部２１６、ダウンロード要求受信部２１７、ダウンロード情報送信部２１８、サーバデータベース２１を備えている。
【００４５】
なお、ＧＵＩＤ生成部２１０、時点生成部２１１、およびデータベース変更部２１２は、同期要求受信部２１３、ダウンロードデータ取得部２１４、サーバレンジ情報取得部２１５、同期情報送信部２１６、ダウンロード要求受信部２１７、ダウンロード情報送信部２１８は、サーバ２０が備えるＣＰＵ２０１が記憶装置２０３に記憶されているプログラムをメモリ２０２に読み出して実行することにより実現される。また、サーバデータベース２１は、サーバ２０が備えるメモリ２０２や記憶装置２０３が提供する記憶領域として実現される。サーバデータベース２１は、サーバ２０とは異なるコンピュータ（データベースサーバ）により提供されるようにしてもよい。この場合、サーバ２０は通信ネットワーク３０を介してデータベースサーバにアクセス可能に接続されるようにする。
【００４６】
サーバデータベース２１は、同期の対象となるデータ（以下、「サーバレコード」という。）を記憶する。図１２は、サーバデータベース２１に記憶されるサーバレコードの構成例を示す図である。サーバレコードには、データを識別するＧＵＩＤ、データの作成時点、データの更新時点、キー、カラム、ヒント、並びにデータの本体が含まれる。
【００４７】
ＧＵＩＤ生成部２１０は、ＧＵＩＤを割り当てる。ＧＵＩＤ生成部２１０は、例えば、サーバデータベース２１に新規にサーバレコードが登録される場合に、そのサーバレコードを識別するＧＵＩＤを割り当てる。
【００４８】
時点生成部２１１は、サーバ２０における現在時点を生成する。本実施形態は、時点生成部２１１は、サーバデータベース２１に対するデータの変更が行われるごとにインクリメントされるシリアル値を時点として生成するものとする。
【００４９】
データベース変更部２１２は、サーバデータベース２１に対するデータの変更を行う。  
データベース変更部２１２は、サーバデータベース２１にサーバレコードを追加する場合、時点生成部２１１が生成する時点を作成時点および更新時点のそれぞれに設定してサーバレコードをサーバデータベース２１に追加する。また、データベース変更部２１２は、サーバデータベース２１に記憶されているサーバレコードを更新した場合には、時点生成部２１１が生成する時点をサーバレコードの更新時点に設定する。
【００５０】
同期要求受信部２１３は、クライアント１０から送信される同期要求４１を受信する。
【００５１】
ダウンロードデータ取得部２１４は、クライアント１０に送信するデータ（以下、「ダウンロードデータ」ともいう。）を取得する。ダウンロードデータ取得部２１４は、同期要求４１に含まれているクライアントレンジ情報のＧＵＩＤ、およびダウンロード要求４３に含まれている取得情報のＧＵＩＤに対応するサーバレコードをサーバデータベース２１から検索し、検索したサーバレコードに基づいてレンジダウンロード情報、および取得ダウンロード情報を作成する。一方、クライアントレンジ情報のＧＵＩＤや取得情報のＧＵＩＤに対応するサーバレコードがサーバデータベース２１に記憶されていなかった場合には、ダウンロードデータ取得部２１４は、ＧＵＩＤと「真」の削除フラグとを設定したレンジダウンロード情報や取得ダウンロード情報を作成する。
【００５２】
サーバレンジ情報取得部２１５は、同期要求４１に含まれているフィルタ条件およびレンジ指定情報に基づいて、サーバ２０において興味範囲に含まれるサーバレコードのＧＵＩＤおよび更新時点を含むサーバレンジ情報を作成する。
【００５３】
同期情報送信部２１６は、サーバレンジ情報およびレンジダウンロード情報を含む同期情報４２を作成し、作成した同期情報４２をクライアント１０に送信する。
【００５４】
ダウンロード要求受信部２１７は、クライアント１０から送信されるダウンロード要求４３を受信する。
【００５５】
ダウンロード情報送信部２１８は、取得ダウンロード情報を含むダウンロード情報を作成し、作成したダウンロード情報をクライアント１０に送信する。
【００５６】
＝＝同期処理の全体像＝＝
図１３は、第１の実施形態に係る通信システムにおいて実行される、データの同期処理の流れを説明する図である。  
クライアント１０は同期要求４１を作成し（Ｓ３１）、作成した同期要求４１をサーバ２０に送信する（Ｓ３２）。サーバ２０は、同期要求４１を受信すると、サーバレンジ情報およびレンジダウンロード情報を含む同期情報４２を作成し（Ｓ３３）、作成した同期情報４２をクライアント１０に送信する（Ｓ３４）。
【００５７】
クライアント１０は同期情報４２を受信すると、削除フラグが真であるデータをクライアントデータベース１１から削除するとともに、ダウンロードすべきデータを示す取得情報と陳腐化情報とを含むダウンロード要求４３を作成し（Ｓ３５）、作成したダウンロード要求４３をサーバ２０に送信する（Ｓ３６）。サーバ２０は、ダウンロード要求４３を受信すると、取得ダウンロード情報と陳腐化ダウンロード情報とを含むダウンロード情報を作成し（Ｓ３７）、作成したダウンロード情報をクライアント１０に送信する（Ｓ３８）。
【００５８】
クライアント１０は、ダウンロード情報に含まれている取得ダウンロード情報および陳腐化ダウンロード情報に応じて、クライアントデータベース１１へのデータの登録または削除を行う（Ｓ３９）。  
以下、詳細について説明する。
【００５９】
＝＝同期要求４１の作成処理（Ｓ３１）＝＝
図１４は、クライアント１０において実行される同期要求４１の作成処理の流れを示す図である。  
まず、フィルタ選択部１１１は、フィルタ条件を選択する（Ｓ３１０１）。上述したように、フィルタ選択部１１１は、例えば、ユーザからフィルタ条件の指定を受け付けることによりフィルタ条件を選択するようにしてもよいし、所定の条件にマッチするフィルタ条件を選択するようにしてもよい。また、フィルタ選択部１１１はユーザからレンジ指定情報の入力を受け付ける（Ｓ３１０２）。  
フィルタ選択部１１１は、選択フィルタ条件に対応付けて、レンジ指定情報をレンジ指定情報記憶部１３２に登録する（Ｓ３１０３）。
【００６０】
次に、同期要求送信部１１２は、図１５に示すレンジ情報の作成処理を行う（Ｓ３１０４）。すなわち、同期要求送信部１１２は、クライアントデータベース１１から、選択フィルタ条件にマッチするクライアントレコードを検索し（Ｓ３１２１）、検索したクライアントレコードを、レンジ指定情報のデータ項目でソートする（Ｓ３１２２）。同期要求送信部１１２は、ソートしたクライアントレコードの中に、レンジ指定情報の基準ＩＤに対応するクライアントレコードが存在すれば（Ｓ３１２３：ＹＥＳ）、対応するクライアントレコードを基準データとし（Ｓ３１２４）、存在しなければ（Ｓ３１２３：ＮＯ）、ソートしたクライアントレコードの先頭のデータを基準データとする（Ｓ３１２５）。同期要求送信部１１２は、ソートしたクライアントレコードにおいて、基準データからレンジ指定情報のデータ数分の個数のクライアントレコードのそれぞれについて、クライアントレコードのＧＵＩＤおよび更新時点を含むレンジ情報を作成する（Ｓ３１２６）。
【００６１】
同期要求送信部１１２は、クライアントＩＤ記憶部１３１からクライアントＩＤを読み出し（Ｓ３１０５）、クライアントＩＤ、選択フィルタ条件、レンジ指定情報、およびレンジ情報を含む同期要求４１を作成する（Ｓ３１０６）。
【００６２】
以上のようにして同期要求４１が作成される。作成された同期要求４１は同期要求送信部１１２によりサーバ２０に送信される。
【００６３】
＝＝同期要求４１の対応処理（Ｓ３３）＝＝
図１６は、サーバ２０において実行される同期要求４１に対応する処理の流れを示す図である。  
まず、サーバレンジ情報取得部２１５は、サーバデータベース２１について、上述した図１５に示すレンジ情報の作成処理を行う（Ｓ３３０１）。すなわち、サーバレンジ情報取得部２１５は、サーバデータベース２１から、同期要求に含まれるフィルタ条件にマッチするサーバレコードを検索し（Ｓ３１２１）、検索したサーバレコードを、レンジ指定情報のデータ項目でソートする（Ｓ３１２２）。サーバレンジ情報取得部２１５は、ソートしたサーバレコードの中に、レンジ指定情報の基準ＩＤに対応するサーバレコードが存在すれば（Ｓ３１２３：ＹＥＳ）、対応するサーバレコードを基準データとし（Ｓ３１２４）、存在しなければ（Ｓ３１２３：ＮＯ）、ソートしたサーバレコードの先頭のデータを基準データとする（Ｓ３１２５）。サーバレンジ情報取得部２１５は、ソートしたサーバレコードにおいて、基準データからレンジ指定情報のデータ数分の個数のサーバレコードのそれぞれについて、サーバレコードのＧＵＩＤおよび更新時点を含むレンジ情報を作成する（Ｓ３１２６）。
【００６４】
次に、同期情報送信部２１６は、レンジ情報をサーバレンジ情報として設定した同期情報４２を作成する（Ｓ３３０２）。同期情報送信部２１６は、同期要求４１に含まれているクライアントレンジ情報のそれぞれについて、次の処理を行う。すなわち、同期情報送信部２１６は、クライアントレンジ情報に含まれるＧＵＩＤに対応するサーバレコードをサーバデータベース２１から検索し（Ｓ３３０３）、対応するサーバレコードがあれば（Ｓ３３０４：ＹＥＳ）、「偽」の削除フラグと、サーバレコードのＧＵＩＤ、更新時点、キー、カラム、ヒントおよび本体を含むレンジダウンロード情報を作成し（Ｓ３３０５）、上記対応するサーバレコードがない場合には（Ｓ３３０４：ＮＯ）、クライアントレンジ情報に含まれるＧＵＩＤと、「真」の削除フラグとを含むレンジダウンロード情報を作成し（Ｓ３３０６）、作成したレンジダウンロード情報を同期情報４２に追加する（Ｓ３３０７）。
【００６５】
以上のようにして同期情報４２が作成される。作成された同期情報４２は、同期情報送信部２１６によりクライアント１０に送信される。
【００６６】
＝＝同期情報４２の対応処理（Ｓ３５）＝＝
図１７は、クライアント１０において実行される同期情報４２に対応する処理の流れを示す図である。  
クライアント１０では、同期情報４２に含まれる各レンジダウンロード情報について、図１８に示す適用処理が行われる（Ｓ３５０１）。すなわち、レンジダウンロード情報の削除フラグが「真」であれば（Ｓ３５２１：ＹＥＳ）、削除処理部１１４は、レンジダウンロード情報に含まれているＧＵＩＤに対応するクライアントレコードをクライアントデータベース１１から削除し（Ｓ３５２２）、削除フラグが「偽」であれば（Ｓ３５２１：ＮＯ）、更新処理部１１９は、レンジダウンロード情報に含まれているＧＵＩＤ、キー、カラム、ヒントおよび本体を含むクライアントレコードを作成してクライアントデータベース１１に登録する（Ｓ３５２３）。なお、ＧＵＩＤが一致するデータがクライアントデータベース１１にすでに登録されている場合には、当該データは上書きされるものとする。
【００６７】
次に、ダウンロード決定部１１５は、同期情報４２に含まれているサーバレンジ情報に対応するデータのうち、ダウンロードすべきものを決定する（Ｓ３５０２）。上述したように、ダウンロード決定部１１５は、例えば、サーバレンジ情報に含まれているヒントを出力し、ダウンロードすべきデータをユーザに選択させるようにすることができる。ダウンロード決定部１１５は、決定したデータのそれぞれについて、データを示すＧＵＩＤを含む取得情報を生成し、生成した取得情報を含むダウンロード要求４３を作成する（Ｓ３５０３）。
【００６８】
以上のようにしてダウンロード要求４３が作成される。作成されたダウンロード要求４３は、ダウンロード要求送信部１１７によりサーバ２０に送信される。
【００６９】
＝＝ダウンロード要求４３の対応処理（Ｓ３７）＝＝
図１９は、サーバ２０において実行されるダウンロード要求４３の対応処理の流れを説明する図である。  
ダウンロードデータ取得部２１４は、空のダウンロード情報４４を作成し（Ｓ３７０１）、ダウンロード要求４３に含まれている各取得情報について以下の処理を行う。  
ダウンロードデータ取得部２１４は、取得情報に含まれるＧＵＩＤに対応するサーバレコードをサーバデータベース２１から検索し（Ｓ３７０２）、対応するサーバレコードが存在する場合には（Ｓ３７０３：ＹＥＳ）、検索したサーバレコードのＧＵＩＤ、更新時点、キー、カラム、ヒントおよび本体と、「偽」の削除フラグとを含む取得ダウンロード情報を作成してダウンロード情報４４に追加する（Ｓ３７０４）。一方、取得情報のＧＵＩＤに対応するデータが存在しない場合は（Ｓ３７０３：ＮＯ）、ダウンロードデータ取得部２１４は、取得情報のＧＵＩＤと「真」の削除フラグとを含む取得ダウンロード情報を作成してダウンロード情報４４に追加する（Ｓ３７０５）。  
以上のようにしてダウンロード情報４４が作成される。作成されたダウンロード情報４４は、ダウンロード情報送信部２１８によりクライアント１０に送信される。
【００７０】
＝＝ダウンロード情報４４の対応処理（Ｓ３９）＝＝
クライアント１０では、ダウンロード情報受信部１１８がダウンロード情報４４を受信すると、ダウンロード情報４４に含まれる各取得ダウンロード情報について、図１８に示す適用処理が行われる。すなわち、取得ダウンロード情報の削除フラグが「真」であれば（Ｓ３５２１：ＹＥＳ）、削除処理部１１４は、取得ダウンロード情報に含まれているＧＵＩＤに対応するクライアントレコードをクライアントデータベース１１から削除し（Ｓ３５２２）、削除フラグが「偽」であれば（Ｓ３５２１：ＮＯ）、更新処理部１１９は、取得ダウンロード情報に含まれているＧＵＩＤ、キー、カラム、ヒントおよび本体を含むクライアントレコードを作成してクライアントデータベース１１に登録する（Ｓ３５２３）。このようにして、ダウンロード情報に応じてクライアントデータベース１１が更新される。  
以上のようにして、選択フィルタにマッチするクライアントレコードとサーバレコードとの同期が行われる。
【００７１】
＝＝第２の実施形態＝＝
次に、第２の実施形態について説明する。第２の実施形態では、クライアント１０においてもデータの更新が行われるものとする。したがって、クライアント１０とサーバ２０との両方で同じデータについて異なる内容の更新が行われる（このことは「衝突」と呼ばれる。）ことが起こり得る。データの衝突は、一般にサーバ２０によって検知されるが、第２の実施形態では、クライアント１０とサーバ２０との両方で衝突を検知するようにしている。また、クライアント１０とサーバ２０との両方で異なるデータを更新したことにより、異なるデータが同一あるいは類似の内容になる（このことは「重複」と呼ばれる。）ことも起こり得る。第２の実施形態では、重複についても、クライアント１０とサーバ２０との両方で検出するようにしている。第２の実施形態では、キーが一致した場合に、重複が発生したと判定するものとする。  
なお、以下の説明では、第１の実施形態との違いについて主に説明し、第１の実施形態と同じ部分については説明を省略する。
【００７２】
＝＝クライアント１０のソフトウェア構成＝＝
図２０は、第２の実施形態に係るクライアント１０のソフトウェア構成を示す図である。第２の実施形態に係るクライアント１０は、上述した第１の実施形態に係るクライアント１０に加えて、クライアント変更検知部１１０、衝突重複解消決定部１２０、解消要求送信部１２１、解消結果情報受信部１２２、解消処理部１２３、クライアント変更履歴記憶部１３３、未取得ＩＤ記憶部１３４、未検証記憶部１３５、重複記憶部１３６、衝突記憶部１３７を備えている。なお、クライアント変更検知部１１０、衝突重複解消決定部１２０、解消要求送信部１２１、解消結果情報受信部１２２、および解消処理部１２３は、クライアント１０が備えるＣＰＵ１０１が記憶装置１０３に記憶されているプログラムをメモリ１０２に読み出して実行することにより実現される。また、クライアント変更履歴記憶部１３３、未取得ＩＤ記憶部１３４、未検証記憶部１３５、重複記憶部１３６、衝突記憶部１３７は、クライアント１０が備えるメモリ１０２や記憶装置１０３が提供する記憶領域として実現される。
【００７３】
図２１は、第２の実施形態に係るクライアントデータベース１１が記憶するクライアントレコードの構成例を示す図である。同図に示すように、第２の実施形態に係るクライアントレコードには、第１の実施形態に係るクライアントレコードに加えて、ＬＵＩＤ（Local Unique IDentifier）が含まれている。ＬＵＩＤは、クライアント１０においてデータに割り当てられる識別情報であり、クライアント１０において一意な値である。第２の実施形態では、データのＧＵＩＤはサーバ２０が割り当てるものとする。これにより、クライアント１０においてデータが作成されたときには、ＧＵＩＤはまだ割り当てられておらず、この時点でデータを識別するために割り当てられるのがＬＵＩＤである。ＬＵＩＤとＧＵＩＤとの対応付け（マッピング）は、同期要求４１および同期情報４２のやり取りにより行われる。
【００７４】
クライアント変更履歴記憶部１３３は、クライアントデータベース１１に対する変更履歴（以下、「クライアント変更履歴」という。）を記憶する。クライアント変更履歴記憶部１３３には、クライアント１０において行われたクライアントデータベース１１に対する全ての変更についてのクライアント変更履歴が記憶されるものとする。
【００７５】
図２２は、クライアント変更履歴記憶部１３３に記憶されるクライアント変更情報の構成例を示す図である。クライアント変更情報には、検知した変更の種別（以下、「変更種別」という。）、変更の対象となったデータを示すＬＵＩＤおよびＧＵＩＤ、削除フラグ、更新時点、変更が行われる前のカラム（以下、「旧カラム」ともいう。）、変更が行われた後のカラム（以下、「現カラム」ともいう。）、キー、並びにヒントが含まれる。変更種別は、「追加」「更新」または「削除」のいずれかであるものとする。削除フラグには、変更種別が「削除」である場合に「真」が設定され、その他の変更種別のときには「偽」が設定される。
【００７６】
未取得ＩＤ記憶部１３４は、ＧＵＩＤが割り当てられていないＬＵＩＤ（以下、「未取得ＩＤ」という。）を記憶する。未取得ＩＤ記憶部１３４には、クライアントデータベース１１に新しいデータが追加された際に、そのデータに割り当てられたＬＵＩＤが登録される。
【００７７】
未検証記憶部１３５は、そのデータと重複するデータが存在するか否かの判定を行っていないデータを示すＧＵＩＤを記憶する。本実施形態では、クライアント１０においてデータが変更された場合に、サーバ２０において重複が発生するか否かを問い合わせることはせずに、後述するように、重複はサーバ２０との間のデータの同期時に判定される。そこで、データが変更された場合には、そのデータのＧＵＩＤがデータの変更時から同期時まで未検証記憶部１３５に登録される。
【００７８】
重複記憶部１３６は、２つの重複するデータを管理する。図２３は、重複記憶部１３６の構成例を示す図である。重複記憶部１３６には、第１のデータを示すＬＵＩＤ１およびＧＵＩＤ１と、第１のデータと重複する第２のデータを示すＬＵＩＤ２およびＧＵＩＤ２とが対応付けて登録される。  
衝突記憶部１３７は、衝突するデータを示すＧＵＩＤを記憶する。
【００７９】
クライアント変更検知部１１０は、クライアントデータベース１１に対するデータの変更を検知し、検知に応じてクライアント変更履歴を作成してクライアント変更履歴記憶部１３３に登録する。図２４は、クライアント変更検知部１１０による処理の流れを示す図である。クライアント変更検知部１１０は、クライアントデータベース１１に対するデータの変更を検知した場合、変更が追加または更新である場合には、追加または更新がなされたデータ（以下、「新データ」という。）を取得し、操作が削除または更新である場合には、削除または更新がなされたデータ（以下、「旧データ」という。）を取得して、図２４に示す処理を行う。なお、変更が追加である場合には、新データを旧データとして取り扱うものとする。
【００８０】
クライアント変更検知部１１０は、変更が追加である場合（Ｓ４０１：ＹＥＳ）、新データにＬＵＩＤを割り当て（Ｓ４０２）、未取得ＩＤ記憶部１３４に、割り当てたＬＵＩＤを登録する（Ｓ４０３）。一方、変更が更新または削除である場合には（Ｓ４０１：ＮＯ）、クライアント変更検知部１１０は、新データからＬＵＩＤおよびＧＵＩＤを取得する（Ｓ４０４）。
【００８１】
クライアント変更検知部１１０は、変更が追加または更新である場合（Ｓ４０５：ＹＥＳ）、新データの本体に基づいてキーを作成して新キーとし（Ｓ４０６）、重複の判定処理を行う（Ｓ４０７）。  
最後に、クライアント変更検知部１１０は、クライアント変更情報を登録する変更履歴登録処理を行う（Ｓ４０８）。
【００８２】
図２５は、上記図２４のステップＳ４０７に示す重複判定処理の流れを示す図である。重複判定処理では、クライアント変更検知部１１０は、クライアントデータベース１１に記憶されている全てのデータについて以下の処理を行う。  
クライアント変更検知部１１０は、クライアントレコードのキーが新キー一致しなければ（Ｓ３２１：ＮＯ）、未検証記憶部１３５にＧＵＩＤを登録する（Ｓ３２２）。
【００８３】
一方、クライアントレコードのキーが新キーと一致する場合（Ｓ３２１：ＹＥＳ）、クライアント変更検知部１１０は、新レコードのＧＵＩＤおよびＬＵＩＤと、クライアントレコードのＧＵＩＤおよびＬＵＩＤとを対応付けて重複記憶部１３６に登録する（Ｓ３２３）。クライアント変更検知部１１０は、新レコードのＧＵＩＤが未検証記憶部１３５に登録されている場合には（Ｓ３２４：ＹＥＳ）、未検証記憶部１３５から新レコードのＧＵＩＤを削除する（Ｓ３２５）。
【００８４】
図２６は、上記図２４のステップＳ４０８に示す変更履歴登録処理の流れを示す図である。  
クライアント変更検知部１１０は、クライアント変更履歴記憶部１３３から、新データのＬＵＩＤまたはＧＵＩＤと一致する変更履歴を検索する（Ｓ４４１）。一致するクライアント変更履歴が存在しなければ（Ｓ４４２：ＮＯ）、クライアント変更検知部１１０は、変更種別、新データのＬＵＩＤ、ＧＵＩＤ、更新時点およびカラム、旧データのカラム、並びに新キーを含むクライアント変更履歴を作成してクライアント変更履歴記憶部１３３に登録する（Ｓ４４３）。
【００８５】
一方、上記変更履歴が存在する場合には（Ｓ４４２：ＹＥＳ）、クライアント変更検知部１１０は、当該変更が追加または更新であれば（Ｓ４４４：ＮＯ）、検索したクライアント変更履歴の変更種別を、当該変更を示す変更種別（追加または更新）に変更し（Ｓ４４５）、検索したクライアント変更情報の現カラムに新データのカラムを設定し（Ｓ４４６）、検索したクライアント変更履歴のキーに新キーを設定する（Ｓ３４７）。後述するように、サーバ２０とクライアント１０との間のデータの同期は、クライアント変更履歴に従って行われるため、このようにまだサーバ２０との間で同期がなされていない段階で再度更新等があった場合には、既存のクライアント変更履歴を更新することにより、同期処理の効率を上げることができる。
【００８６】
変更が削除である場合（Ｓ４４４：ＹＥＳ）、クライアント変更検知部１１０は、新データのＧＵＩＤが設定されていなければ、すなわち新データのＧＵＩＤがｎｕｌｌであれば（Ｓ４４８：ＹＥＳ）、検索したクライアント変更情報をクライアント変更履歴記憶部１３３から削除する（Ｓ４４９）。つまり、クライアント１０においてデータが作成された後、サーバ２０にアップロードされる前に削除された場合には、クライアント変更情報を削除することにより、無駄な同期がなされないようにしている。
【００８７】
新データにＧＵＩＤが設定されている場合、すなわち新レコードのＧＵＩＤがｎｕｌｌでない場合には（Ｓ４４８：ＮＯ）、検索したクライアント変更履歴の変更種別に削除を設定し（Ｓ４５０）、検索したクライアント変更履歴の削除フラグを「真」に設定する（Ｓ４５１）。
【００８８】
以上のようにして、クライアント変更検知部１１０は、クライアントデータベース１１に対するデータの変更を検知すると、クライアント変更情報を登録する。
【００８９】
次に、第２の実施形態において同期要求送信部１１２が送信する同期要求４１の構成例を図２７に示す。第２の実施形態に係る同期要求には、上述した図７に示す第１の実施形態に係る同期要求４１に加えて、未取得ＩＤが含まれる。また、第２の実施形態に係るクライアントレンジ情報には、第１の実施形態に係るクライアントレンジ情報に加えて、ＬＵＩＤ、キーおよび削除フラグが含まれ同期要求送信部１１２は、未取得ＩＤ記憶部１３４に記憶されている未取得ＩＤを同期要求に設定する。また、クライアントレンジ情報は、第１の実施形態と同様に、興味範囲に含まれているクライアントレコードに基づいて作成されるとともに、さらに、クライアント変更履歴に基づいても作成される。なお、第２の実施形態に係る同期要求４１の作成処理については後述する。
【００９０】
図２８は、第２の実施形態において同期情報受信部１１３が受信する同期情報４２の構成例を示す図である。第２の実施形態に係る同期情報４２には、上述した図８に示す第１の実施形態に係る同期情報４２に加えて、割当情報が含まれる。割当情報は、未取得ＩＤに対してサーバ２０が割り当てたＧＵＩＤを含む情報である。割当情報には、ＬＵＩＤ、ＧＵＩＤ、更新時点、ステータスが含まれる。更新時点は、ＬＵＩＤに対応するＧＵＩＤが既にサーバ２０で割り当てられていた場合の、データの更新時点である。サーバ２０に未取得ＩＤに対応するデータが記憶されていない場合には更新時点は設定されない。ステータスは、未取得ＩＤに対応するＧＵＩＤが既にサーバ２０に存在するか否かを示す情報である。また、第２の実施形態に係るサーバレンジ情報には、第１の実施形態に係るサーバレンジ情報に加えて、キーおよび削除フラグが含まれる。
【００９１】
また、第２の実施形態では、同期情報４２に含まれるサーバレンジ情報は、後述するように、サーバ２０において興味範囲に含まれるデータに加えて、クライアント１０とサーバ２０との間で衝突または重複しているデータに関しても追加される。
【００９２】
衝突重複解消決定部１２０は、ダウンロード情報４４に含まれるＧＵＩＤが示すデータが衝突または重複する場合に、当該データをサーバ２０に送信するか否かを決定する。本実施形態では、衝突重複解消決定部１２０は、ダウンロード情報４４に含まれるＧＵＩＤが、クライアント変更履歴記憶部１３３、重複記憶部１３６または衝突記憶部１３７に記憶されているか否かにより、衝突または重複が発生しているか否かを判定し、衝突または重複が発生していると判定した場合に、ユーザに、クライアントレコードかサーバレコードのいずれかを選択させるようにする。なお、衝突重複解消決定部１２０は、例えば、クライアントレコードを常に優先するようにして、無条件にクライアントレコードを選択するようにしてもよいし、任意のアルゴリズムを適用して自動的に選択するようにしてもよい。
【００９３】
解消要求送信部１２１は、衝突または重複が発生したデータを解消するように指示するコマンド（以下、「解消要求」という。）をサーバ２０に送信する。図２９は、解消要求４５の構成例を示す図である。解消要求４５には、クライアントＩＤと、衝突重複解消決定部１２０が選択したクライアントレコードまたはサーバレコードのＬＵＩＤ、ＧＵＩＤ、更新時点、削除フラグ、キー、カラム、ヒントおよび本体が設定された解消情報とが含まれる。
【００９４】
解消結果情報受信部１２２は、解消要求に応じてサーバ２０から送信される、衝突または重複の解消処理の結果を示す情報（以下、「解消結果情報」という。）を受信する。図３０は、解消結果情報４６の構成例を示す図である。解消結果情報４６には、重複情報と結果情報とが含まれる。重複情報は、解消要求４５に含まれる解消情報が示すデータについて、サーバ２０において重複が発生した場合に設定される。重複情報には、サーバ２０において重複したデータのＧＵＩＤ、更新時点、キーが設定される。結果情報は、解消要求４５に応じてサーバデータベース２１の更新を行った処理の結果を表す情報であり、ＬＵＩＤ、ＧＵＩＤ、更新時点、削除フラグおよびステータスを含む。
【００９５】
解消処理部１２３は、解消結果情報４６に応じてクライアントデータベース１１の更新を行う。なお、解消処理部１２３の処理の詳細については後述する。
【００９６】
＝＝サーバ２０のソフトウェア構成＝＝
図３１は、第２の実施形態に係るサーバ２０のソフトウェア構成を示す図である。第２の実施形態に係るサーバ２０は、第１の実施形態に係るサーバ２０に加えて、解消要求受信部２１９、解消処理部２２０、解消結果情報送信部２２１を備えている。なお、解消要求受信部２１９、解消処理部２２０、解消結果情報送信部２２１は、サーバ２０が備えるＣＰＵ２０１が記憶装置２０３に記憶されているプログラムをメモリ２０２に読み出して実行することにより実現される。
【００９７】
図３２は、第２の実施形態に係るサーバデータベース２１が記憶するサーバレコードの構成例を示す図である。同図に示すように、第２の実施形態に係るサーバレコードには、第１の実施形態に係るサーバレコードに加えて、ＬＵＩＤおよび作成者ＩＤが含まれている。ＬＵＩＤは、クライアント１０においてデータに割り当てられる識別情報であり、クライアント１０において一意な番号である。後述するように、第２の実施形態では、データのＧＵＩＤはサーバ２０が割り当てるため、クライアント１０においてデータが作成されたときには、ＧＵＩＤはまだ割り当てられておらず、この時点でデータを識別するために割り当てられるのがＬＵＩＤである。ＬＵＩＤとＧＵＩＤとの対応付け（マッピング）は、同期要求４１および同期情報４２のやり取りにより行われる。作成者ＩＤは、データを最初に作成したクライアント１０のクライアントＩＤであり、サーバレコードの追加時に設定される。
【００９８】
解消要求受信部２１９は、クライアント１０から解消要求４５を受信する。  
解消処理部２２０は、解消要求４５に応じてサーバデータベース２１を更新する。なお、解消処理部２２０により実行される解消処理の詳細については後述する。  
解消結果情報送信部２２１は、解消処理部２２０による解消処理の結果を示す解消結果情報を作成してクライアント１０に送信する。なお、解消結果情報送信部２２１による解消結果情報の生成処理の詳細については後述する。
【００９９】
＝＝同期処理の全体像＝＝
図３３は、第２の実施形態に係る通信システムにおいて実行される、データの同期処理の流れを説明する図である。第２の実施形態に係るデータの同期処理では、上述した図１３に示す第１の実施形態に係る同期処理に加えて、ステップＳ５１〜Ｓ５８が行われる。すなわち、クライアント１０は、ダウンロード情報４４に対応する処理（Ｓ３９）を行った後、解消要求４５をサーバ２０に送信し（Ｓ５１）、サーバ２０は、解消要求４５に応じてサーバデータベース２１を更新し（Ｓ５２）、更新の結果を示す結果情報と、更新の際に発生した重複に関する重複情報とを含む解消結果情報４６をクライアント１０に送信する（Ｓ５３）。クライアント１０は、解消結果情報４６に応じてさらにダウンロードすべきデータを決定する処理を行い（Ｓ５４）、ダウンロードすべきデータのＧＵＩＤを設定した取得情報を含むダウンロード要求４３をサーバ２０に送信する（Ｓ５５）。サーバ２０は、ダウンロード要求４３に応じて、指定されているデータをサーバデータベース２１から読み出し（Ｓ５６）、読み出したデータを設定したダウンロード情報４４をクライアント１０に送信する（Ｓ５７）。クライアント１０は、ダウンロード情報４４に含まれているデータをクライアントデータベース１１に登録する（Ｓ５８）。
【０１００】
＝＝同期要求送信処理（Ｓ３１）＝＝
図３４は、第２の実施形態に係るステップＳ３１における同期要求の作成処理の流れを示す図であり、図３５は、第２の実施形態に係るレンジ情報の作成処理の流れを示す図である。第２の実施形態に係る図３５の処理では、ステップＳ３１２６において、データのＧＵＩＤおよび更新時点に加えて、データのＬＵＩＤおよびキー、並びに「偽」の削除フラグを含むレンジ情報を作成する。また、第２の実施形態に係る図３４の処理では、上述した図１４の処理に加えて、ステップＳ３１０６に続き、同期要求送信部１１２は、選択フィルタ条件にマッチするクライアント変更履歴をクライアント変更履歴記憶部１３３から検索し（Ｓ３１０７）、検索したクライアント変更履歴のＬＵＩＤ、ＧＵＩＤ、更新時点、キーおよび削除フラグを含むクライアントレンジ情報を同期要求４１に追加する（Ｓ３１０８）。さらに、同期要求送信部１１２は、未取得ＩＤ記憶部１３４に記憶されている未取得ＩＤを読み出して同期要求４１に設定する（Ｓ３１０９）。  
更新情報と未取得ＩＤとにより、サーバ２０側ではクライアント１０で行われたデータの更新を把握することが可能となる。
【０１０１】
＝＝同期要求に対応する処理（Ｓ３３）＝＝
図３６は、第２の実施形態に係るステップＳ３３における同期要求への対応処理の流れを示す図である。第２の実施形態に係る図３６の処理では、第１の実施形態に係る図１６の処理に加えて、各クライアントレンジ情報についてのステップＳ３３０３〜Ｓ３３０７の処理に続き、同期情報送信部２１６は、図３７に示すＧＵＩＤの割当処理を行い（Ｓ３３０８）、図３８に示す衝突および重複の検知処理を行う（Ｓ３３０９）。
【０１０２】
図３７に示すＧＵＩＤの割当処理では、同期情報送信部２１６は、同期要求４１に含まれる各未取得ＩＤについて、以下の処理を行う。
【０１０３】
同期情報送信部２１６は、ＬＵＩＤが未取得ＩＤと一致し、かつ、作成者がクライアントＩＤと一致するサーバレコードをサーバデータベース２１から検索し（Ｓ３３２１）、マッチするサーバレコードが存在する場合（Ｓ３３２２：ＹＥＳ）、サーバレコードのＧＵＩＤをＧとし（Ｓ３３２３）、サーバレコードの更新時点をＴとし（Ｓ３３２４）、ステータスを「存在」とする（Ｓ３３２５）。
【０１０４】
一方、未取得ＩＤにマッチするサーバレコードが存在しない場合（Ｓ３３２２：ＮＯ）、同期情報送信部２１６は、ＧＵＩＤ生成部２１０生成する新たなＧＵＩＤをＧとし（Ｓ３３２６）、時点生成部２１１が生成する新たな時点をＴとし（Ｓ３３２７）、ステータスを「不存在」とする（Ｓ３３２８）。
【０１０５】
同期情報送信部２１６は、ＬＵＩＤ、Ｇ、Ｔおよびステータスを含む割当情報を同期情報４２に追加する（Ｓ３３２９）。
【０１０６】
以上の処理が各未取得ＩＤについて繰り返され、未取得ＩＤに対応するＧＵＩＤが割当情報として同期情報４２に設定される。
【０１０７】
図３８に示す衝突重複の検知処理では、同期要求４１に設定されたクライアントレンジ情報のそれぞれについて以下の処理が行われる。
【０１０８】
サーバレンジ情報取得部２１５は、クライアントレンジ情報にＧＵＩＤが設定されている場合（Ｓ３３４１：ＮＯ）、クライアントレンジ情報のＧＵＩＤに対応するサーバレコードをサーバデータベース２１から検索し（Ｓ３３４２）、対応するサーバレコードが存在しなければ（Ｓ３３４３：ＮＯ）、ＧＵＩＤおよび「真」の削除フラグを含むサーバレンジ情報を作成して同期情報４２に追加する（Ｓ３３４４）。
【０１０９】
クライアントレンジ情報のＧＵＩＤに対応するサーバレコードが存在する場合（Ｓ３３４３：ＹＥＳ）、サーバレンジ情報取得部２１５は、クライアントレンジ情報の更新時点と検索したサーバレコードの更新時点とが一致するか否かを判定し（Ｓ３３４５）、更新時点が一致しなければ（Ｓ３３４５：ＮＯ）、サーバレコードのＧＵＩＤ、更新時点、ヒントおよびキー、並びに「偽」の削除フラグを含むサーバレンジ情報を作成して同期情報４２に追加する（Ｓ３３４６）。
【０１１０】
一方、更新時点が一致した場合（Ｓ３３４５：ＹＥＳ）、クライアントレンジ情報の削除フラグが「真」であれば（Ｓ３３４７：ＹＥＳ）、ＧＵＩＤに対応するサーバレコードをサーバデータベース２１から削除する（Ｓ３３４８）。削除フラグが「偽」であれば（Ｓ３３４７：ＮＯ）、サーバレンジ情報取得部２１５は、クライアントレンジ情報に含まれるキーと一致するサーバレコードをサーバデータベース２１から検索し（Ｓ３３４９）、キーと一致するサーバレコードがあれば（Ｓ３３５０：ＹＥＳ）、サーバレコードのＧＵＩＤ、更新時点、ヒントおよびキー並びに「偽」の削除フラグを含むサーバレンジ情報を作成して同期情報４２に追加する（Ｓ３３５１）。
【０１１１】
以上の処理を同期要求４２に含まれる各クライアントレンジ情報について行うことにより、衝突または重複したデータについてのサーバレンジ情報が同期情報４２に追加されることになる。
【０１１２】
＝＝同期情報に対応する処理（Ｓ３５）＝＝
図３９は、第２の実施形態に係るステップＳ３５における同期情報４２への対応処理の流れを示す図である。第２の実施形態では、上述した図１７の処理の前に、図４０に示すＧＵＩＤの割当処理（Ｓ３５００）を実行する。
【０１１３】
図４０に示すＧＵＩＤの割当処理では、更新処理部１１９は、同期情報４２に含まれている各割当情報について以下の処理を行う。  
更新処理部１１９は、ＬＵＩＤに対応するクライアントレコードのＧＵＩＤに、割当情報のＧＵＩＤを設定する（Ｓ３５２１）。更新処理部１１９は、割当情報に含まれるステータスが「存在」であった場合（ＬＵＩＤに対応するＧＵＩＤがサーバデータベース２１に既に登録されていた場合）には（Ｓ３５２２）、ＬＵＩＤに対応するクライアントレコードの更新時点に、割当情報の更新時点を設定する（Ｓ３５２３）。
【０１１４】
更新処理部１１９は、変更種別が「追加」であり、かつ、割当情報のＬＵＩＤに対応するクライアント変更履歴をクライアント変更履歴記憶部１３３から削除する（Ｓ３５２４）。また、更新処理部１１９は、割当情報のＬＵＩＤを未取得ＩＤ記憶部１３４から削除する（Ｓ３５２５）。  
以上の処理が各割当情報について行われることで、未取得ＩＤに対応するＧＵＩＤが登録される。  
なお、第２の実施形態において作成されるダウンロード要求４３は第１の実施形態と同じであり、ダウンロード要求４３に対応するサーバ２０による処理（Ｓ３７）も、第１の実施形態と同じである。
【０１１５】
＝＝ダウンロード情報の対応処理（Ｓ３９）＝＝
図４１は、第２の実施形態に係るステップＳ３９におけるダウンロード情報４４への対応処理の流れを示す図である。  
更新処理部１１９は、ダウンロード情報４４に含まれている取得ダウンロード情報のうち、取得ダウンロード情報のＧＵＩＤに対応するクライアント変更履歴がクライアント変更履歴記憶部１３３に記憶されていないものを抽出し（Ｓ３９０１）、抽出した取得ダウンロード情報のそれぞれについて、上述した図１８に示す適用処理を行う（Ｓ３９０２）。すなわち、取得ダウンロード情報に含まれる削除フラグが「真」であれば（Ｓ３５２１：ＹＥＳ）、削除処理部１１４は、取得ダウンロード情報に含まれるＧＵＩＤに対応するクライアントレコードをクライアントデータベース１１から削除し（Ｓ３５２２）、削除フラグが「偽」であれば（Ｓ３５２１：ＮＯ）、更新処理部１１９は、取得ダウンロード情報に含まれているＧＵＩＤ、キー、カラム、ヒントおよび本体を含むクライアントレコードをクライアントデータベース１１に登録する（Ｓ３５２３）。
【０１１６】
次に、解消要求送信部１２１は、クライアントＩＤ記憶部１３１に記憶されているクライアントＩＤを設定した解消要求４５を作成する（Ｓ３９０３）。更新処理部１１９は、ダウンロード情報４４に含まれる取得ダウンロード情報のうち、取得ダウンロード情報のＧＵＩＤに対応するクライアント変更履歴がクライアント変更履歴記憶部１３３に記憶されているものを抽出する（Ｓ３９０４）。解消処理部１２３は、図４２に示す衝突解消処理を行い（Ｓ３９０５）、図４３に示す重複解消処理を行う（Ｓ３９０６）。  
図４２に示す衝突解消処理では、上記図４１のステップＳ３９０６において抽出された取得ダウンロード情報のそれぞれについて以下の処理を行う。  
解消処理部１２３は、取得ダウンロード情報に含まれるＧＵＩＤが衝突記憶部１３７に記憶されていれば（Ｓ３９４１）、当該ＧＵＩＤに対応するクライアントレコードをクライアントデータベース１１から読み出し（Ｓ３９４２）、読み出したクライアントレコードと取得ダウンロード情報とのいずれかを選択する（Ｓ３９４３）。解消処理部１２３は、例えば、クライアントレコードおよび取得ダウンロード情報のヒントを出力してユーザに選択させるようにすることができる。
【０１１７】
解消処理部１２３は、クライアントレコードを選択した場合（Ｓ３９４４：ＹＥＳ）、クライアントレコードのＬＵＩＤ、ＧＵＩＤ、更新時点、キー、カラム、ヒントおよび本体を含む解消情報を解消要求４５に追加し（Ｓ３９４５）、取得ダウンロード情報を選択した場合には（Ｓ３９４４：ＮＯ）、取得ダウンロード情報のＧＵＩＤ、更新時点、カラム、ヒントおよび本体を含む解消情報を解消要求４５に追加し（Ｓ３９４６）、クライアントレコードの更新時点、キー、カラム、ヒントおよび本体を、取得ダウンロード情報のものに変更するようにクライアントデータベース１１を更新する（Ｓ３９４７）。解消処理部１２３は、衝突記憶部１３７から取得ダウンロード情報に含まれるＧＵＩＤを削除する（Ｓ３９４８）。
【０１１８】
図４３に示す重複解消処理では、上記図４１のステップＳ３９０６において抽出された取得ダウンロード情報のそれぞれについて以下の処理を行う。
【０１１９】
解消処理部１２３は、取得ダウンロード情報に含まれるＧＵＩＤが重複記憶部１３６に記憶されていれば（Ｓ３９６１）、当該ＧＵＩＤに対応するクライアントレコードをクライアントデータベース１１から読み出し（Ｓ３９６２）、読み出したクライアントレコードと取得ダウンロード情報とのいずれかを選択する（Ｓ３９６３）。解消処理部１２３は、上述した衝突解消処理と同様に、例えば、クライアントレコードおよび取得ダウンロード情報のヒントを出力してユーザに選択させるようにすることができる。
【０１２０】
解消処理部１２３は、クライアントレコードを選択した場合（Ｓ３９６４：ＹＥＳ）、クライアントレコードのＬＵＩＤ、ＧＵＩＤ、更新時点、キー、カラム、ヒントおよび本体を含む解消情報を解消要求４５に追加し（Ｓ３９６５）、取得ダウンロード情報を選択した場合には（Ｓ３９６４：ＮＯ）、取得ダウンロード情報のＧＵＩＤ、更新時点、カラム、ヒントおよび本体を含む解消情報を解消要求４５に追加する（Ｓ３９６６）。解消処理部１２３は、取得ダウンロード情報のＧＵＩＤに対応するＧＵＩＤ（すなわち、取得ダウンロード情報のＧＵＩＤと一致するＧＵＩＤ１に対応するＧＵＩＤ２、または取得ダウンロード情報のＧＵＩＤと一致するＧＵＩＤ２に対応するＧＵＩＤ１である。）を重複記憶部１３６から読み出してＧとし（Ｓ３９６７）、クライアントデータベース１１からＧＵＩＤがＧと一致するクライアントレコードを削除する（Ｓ３９６８）。
【０１２１】
解消処理部１２３は、重複記憶部１３６から取得ダウンロード情報のＧＵＩＤがＧＵＩＤ１またはＧＵＩＤ２に一致するレコードを削除し（Ｓ３９６９）、未検証記憶部１３５から取得ダウンロード情報のＧＵＩＤを削除する（Ｓ３９７０）。
【０１２２】
＝＝解消要求対応（Ｓ５２）＝＝
図４４は、上述した図３３のステップＳ５２においてサーバ２０が実行する、解消要求４５に対応する処理の流れを示す図である。  
解消処理部２２０は、空の解消結果情報４６を作成し（Ｓ５２０１）、解消要求４５に含まれている解消情報のそれぞれについて、以下の処理を行う。  
解消処理部２２０は、解消情報のＧＵＩＤが設定されていない場合には（Ｓ５２０２：ＹＥＳ）、新たにＧＵＩＤ生成部２１０が生成したＧＵＩＤと、解消情報に設定されているＬＵＩＤ、更新時点、キー、カラム、ヒントおよび本体とを設定したサーバレコードを作成してサーバデータベース２１に登録し（Ｓ５２０３）、ＬＵＩＤ、ＧＵＩＤ、更新時点、「偽」の削除フラグ、および「成功」のステータスを含む結果情報を解消結果情報４６に追加する（Ｓ５２０４）。
【０１２３】
一方、解消情報にＧＵＩＤが設定されている場合（Ｓ５２０２：ＮＯ）、解消処理部２２０は、解消情報のＧＵＩＤに対応するサーバレコードをサーバデータベース２１から検索し（Ｓ５２０５）、当該ＧＵＩＤに対応するサーバレコードが存在しなければ（Ｓ５２０６：ＮＯ）、解消処理部２２０は、解消情報のＧＵＩＤと、「真」の削除フラグおよび「衝突」のステータスとを含む結果情報を解消結果情報４６に追加する（Ｓ５２０７）。
【０１２４】
上記ＧＵＩＤに対応するサーバレコードが存在する場合（Ｓ５２０６：ＹＥＳ）、解消処理部２２０は、サーバレコードの更新時点と解消情報の更新時点とが一致しなければ（Ｓ５２０８：ＮＯ）、サーバレコードのＧＵＩＤおよび更新時点と、「偽」の削除フラグおよび「衝突」のステータスとを含む結果情報を解消結果情報４６に追加する（Ｓ５２０９）。
【０１２５】
解消処理部２２０は、更新時点が一致し（Ｓ５２０８：ＹＥＳ）、解消情報の削除フラグが「真」であれば（Ｓ５２１０：ＹＥＳ）、ＧＵＩＤに対応するサーバレコードをサーバデータベース２１から削除し（Ｓ５２１１）、削除フラグが「偽」であれば（Ｓ５２１０：ＮＯ）、解消処理部２２０は、サーバレコードに、解消情報の更新時点、キー、カラム、ヒントおよび本体を設定するようにサーバデータベース２１を更新する（Ｓ５２１２）。
【０１２６】
解消処理部２２０は、解消情報のＬＵＩＤ、ＧＵＩＤ、更新時点および削除フラグと、「成功」のステータスとを含む結果情報を解消結果情報４６に追加する（Ｓ５２１３）。また、解消処理部２２０は、解消情報のキーに一致するサーバレコードをサーバデータベース２１から検索し（Ｓ５２１４）、一致するサーバレコードが存在する場合（Ｓ５２１５：ＹＥＳ）、検索したサーバレコードのＧＵＩＤおよび更新時点と、「偽」の削除フラグおよび「衝突」のステータスとを含む重複情報を解消結果情報４６に追加する（Ｓ５２１６）。  
以上の処理が各解消情報について行われる。
【０１２７】
＝＝解消結果対応（Ｓ５４）＝＝
図４５は、上述した図３３のステップＳ５４においてクライアント１０が実行する、解消結果情報４６に対応する処理の流れを示す図である。  
解消処理部１２３は、空のダウンロード要求４３を作成し（Ｓ５４０１）、解消結果情報４６に含まれている結果情報のそれぞれについて、以下の処理を行う。  
解消処理部１２３は、結果情報に含まれるＬＵＩＤが未取得ＩＤ記憶部１３４に登録されている場合には（Ｓ５４０２：ＹＥＳ）、当該ＬＵＩＤに対応するクライアントレコードに、結果情報のＧＵＩＤを設定するようにクライアントデータベース１１を更新し（Ｓ５４０３）、未取得ＩＤ記憶部１３４から当該ＬＵＩＤを削除する（Ｓ５４０４）。
【０１２８】
次に、ステータスが「衝突」であれば（Ｓ５４０５：ＹＥＳ）、解消処理部１２３は、結果情報のＧＵＩＤを衝突記憶部１３７に登録し（Ｓ５４０６）、ダウンロード決定部１１５は、当該結果情報のＧＵＩＤが示すデータをダウンロードするか否かを決定する（Ｓ５４０７）。ダウンロード決定部１１５は、例えば、衝突したデータはサーバ２０を優先するものとして、自動的にダウンロードすることを決定してもよいし、ユーザにダウンロードするか否かを問い合わせるようにしてもよい。ダウンロード決定部１１５は、ダウンロードすると決定した場合には（Ｓ５４０９：ＹＥＳ）、結果情報のＧＵＩＤを含む取得情報を生成してダウンロード要求４３に設定する（Ｓ５４１０）。
【０１２９】
一方、ステータスが「成功」である場合には（Ｓ５４０５：ＮＯ）、解消処理部１２３は、結果情報のＧＵＩＤに対応するクライアント変更履歴をクライアント変更履歴記憶部１３３から削除する（Ｓ５４０８）。
【０１３０】
以上の処理を結果情報のそれぞれについて繰り返した後、ダウンロード決定部１１５は、解消結果情報４６に含まれている重複情報のうち、対応するデータをダウンロードするものを決定し（Ｓ５４１１）、決定した重複情報のＧＵＩＤを含む取得情報を生成してダウンロード要求４３に設定する（Ｓ５４１２）。なお、ダウンロード要求４３に取得情報が設定されなかった場合には、上述した図３３のステップＳ５５〜Ｓ５８の処理を省略するものとする。
【０１３１】
このようにして、選択フィルタにマッチするクライアントレコードとサーバレコードとの同期が行われる。
【０１３２】
以上説明したように、上述した第１および第２の実施形態の通信システムによれば、サーバ２０は、クライアント１０がどのようなデータを保持しているのかを管理することなく同期を行うことが可能となる。したがって、クライアント１０とサーバ２０との間でデータを同期する場合に、サーバ２０の負担を軽減することができる。
【０１３３】
また、上述した実施形態の通信システムによれば、興味範囲に属するデータのみを対象として同期を行うことが可能となり、一方で、興味範囲に属さないデータについては更新がされたとしても、同期せず、興味範囲に入ったときにはじめて同期を行うように同期処理を遅延することができる。ユーザの興味は興味範囲内のデータにあるので、興味範囲内のデータを優先的に同期することにより、ユーザにとって効率的かつ効果的な同期を行うことができる。
【０１３４】
また、一般に、フィルタアウトされたデータは同期の対象とせず、クライアント１０のデータを削除するような同期が行われることが行われているところ、本実施形態では、クライアント１０から同期要求４１にクライアントレンジ情報を設定してサーバ２０に送信し、サーバ２０はクライアントレンジ情報に含まれているデータについては、フィルタアウトされていても、同期情報４２にレンジダウンロード情報を設定して応答し、クライアント１０が同期の対象とするデータを決定している。したがって、クライアント１０は、サーバ２０においてフィルタアウトされたデータについても、ダウンロード要求にデータＩＤを指定して、同期の対象とすることができる。つまり、本実施形態の通信システムによれば、サーバ２０側でフィルタアウトされたとしても、ユーザの興味範囲に含まれるデータ、すなわちユーザにとって重要度の高いデータを優先的に同期の対象とすることが可能となり、ユーザにとって便利である。また、ユーザの興味範囲に含まれるデータを優先的にダウンロードすることにより、ユーザにとって応答時間を短く感じさせることが期待される。
【０１３５】
また、第２の実施形態の通信システムでは、クライアント１０およびサーバ２０の両方でデータが変更された場合でも、クライアント１０において衝突を検知し、クライアント１０で変更されたデータと、サーバ２０で変更されたデータとのいずれかを選択することにより衝突を解消することができる。
【０１３６】
また、クライアント１０では、データの重複を検出し、重複を解消することができる。したがって、同じデータが複数登録されることによるリソースの消費を抑えることができる。
【０１３７】
また、第２の実施形態の通信システムでは、クライアント１０でデータを作成する場合に、クライアント１０はＧＵＩＤを割り当てず、クライアント１０において一意なＬＵＩＤを割り当てるのみで、同期時にシステム内で一意なグローバルＩＤを、サーバ２０が割り当てるようにすることができる。クライアント１０がデータの作成ごとにＧＵＩＤを割り当てる場合には、ＧＵＩＤの割当処理にかかる負荷を無視できないが、第２の実施形態のように、クライアント１０はＬＵＩＤを割り当てればよいので、ＩＤの割り当てにかかる処理負荷を抑えることが可能となる。一方で、ＧＵＩＤの割り当てはサーバ２０に一元化することができるので、確実に一意なＧＵＩＤを容易に割り当てることができる。
【０１３８】
また、第２の実施形態の通信システムでは、クライアント１０とサーバ２０との両方でデータが変更された衝突を検知し、ヒントなどに基づいて衝突を解消した上で同期を行うようにしている。したがって、複数のクライアント１０から同一のデータに対して変更が行われるような状況であっても、適切に同期を行うことができる。
【０１３９】
＝＝第３の実施形態＝＝
次に、第３の実施形態について説明する。第３の実施形態では、クライアント１０およびサーバ２０の両方においてデータの変更が行われるものとする。クライアント１０は、クライアント１０とサーバ２０との間で直近に同期処理を行った時点（以下、「アンカー時点」という。）以後の全てのクライアントデータベース３１への変更について変更履歴を管理するが、サーバ２０は、所定の一定期間（以下、「保証期間」という。）のみ変更履歴を管理する。以下の説明において、保証期間の開始時点を「下位時点」といい、保証期間の終了時点を「上位時点」という。上位時点は、最後にサーバデータベース２１に対して変更が行われた時点である。したがって、サーバ２０において下位時点以後に行われたサーバデータベース２１への全ての変更について変更履歴が登録される。
【０１４０】
なお、第３の実施形態においても第２の実施形態と同様に、衝突および重複が生じうるが、第３の実施形態では、説明を簡単にするため、重複の解消は行わないものとし、また衝突が生じた場合には、例えば、最も新しいデータを優先して登録するなど、一般的な衝突解消処理が行われるものとする。もちろん、第２の実施形態と同様にして重複や衝突を解消するようにしてもよい。
【０１４１】
以下の説明では、他の実施形態との違いについて主に説明し、他の実施形態と同じ部分については説明を省略する。
【０１４２】
＝＝クライアント１０のソフトウェア構成＝＝
図４６は、第３の実施形態に係るクライアント１０のソフトウェア構成例を示す図である。第３の実施形態に係るクライアント１０は、上述した第１の実施形態に係るクライアント１０に加えて、クライアント変更検知部１１０、レンジ指定情報更新部１１６およびクライアント変更履歴記憶部１３３を備える。  
第３の実施形態に係るレンジ指定情報記憶部１３２には、フィルターに対応付けて、レンジ指定情報に加え、アンカーが記憶される。図４７は第３の実施形態のレンジ指定情報記憶部１３２の構成例を示す図である。レンジ指定情報更新部１１６は、レンジ指定情報記憶部１３２に記憶されるアンカー時点を更新する。後述するように、第３の実施形態では同期情報４２に最新履歴時点が含まれ、レンジ指定情報更新部１１６は、同期情報４２の最新履歴時点を選択フィルタ条件に対応するアンカー時点としてレンジ指定情報記憶部１３２に登録する。なお、レンジ指定情報更新部１１６は、フィルタ選択部１１１が新しくフィルタ条件を作成した場合には、取りうるもっとも小さな値から１を引いた値をアンカー時点として新しく作成されたフィルタ条件に対応付けてレンジ指定情報記憶部１３２に登録する。
【０１４３】
クライアント変更履歴記憶部１３３はクライアント変更履歴を記憶する。第３の実施形態に係るクライアント変更履歴記憶部１３３に記憶されるクライアント変更履歴の一例を図４８に示す。図２２に示す第２の実施形態に係るクライアント変更履歴に比べ、ＬＵＩＤが省略されている。
【０１４４】
クライアント変更検知部１１０は、クライアントデータベース１１に対するデータの変更を検知し、検知に応じてクライアント変更履歴を作成してクライアント変更履歴記憶部１３３に登録する。なお、クライアント変更検知部１１０による処理は、上述した図２４と同様の処理を行うが、データが追加された場合（Ｓ４０１：ＹＥＳ）にも、ＬＵＩＤを割り当てず、クライアント１０はサーバ２０にアクセスしてＧＵＩＤの割当を受けるものとする。また、ステップＳ４０７に示す重複判定処理は省略する。
【０１４５】
＝＝サーバ２０のソフトウェア構成＝＝
図４９は、第３の実施形態に係るサーバ２０のソフトウェア構成例を示す図である。第３の実施形態に係るサーバ２０は、上述した第１の実施形態に係るサーバ２０に加えて、サーバ変更検知部２２２およびサーバ変更履歴記憶部２３１を備える。
【０１４６】
サーバ変更履歴記憶部２３１は、サーバデータベース２１に対する変更履歴（以下、「サーバ変更履歴」という。）を記憶する。サーバ変更履歴記憶部２３１には、ある一定期間（以下、「保証期間」という。）の中で行われたサーバデータベース２１に対する変更についてのサーバ変更履歴が記憶される。なお、以下の説明において、保証期間の開始時点を「下位時点」といい、保証期間の終了時点を「上位時点」という。上位時点は、最後にサーバデータベース２１に対して変更が行われた時点である。したがって、サーバ２０において下位時点以後に行われたサーバデータベース２１への全ての変更について、サーバ変更履歴が登録されることになる。
【０１４７】
図５０は、サーバ変更履歴記憶部２３１に記憶されるサーバ変更情報の構成例を示す図である。サーバ変更情報には、検知した変更の種別（以下、「変更種別」という。）、変更の対象となったデータを示すＧＵＩＤ、削除フラグ、更新時点、変更が行われる前の旧カラム、変更が行われた後の現カラム、キー、並びにヒントが含まれる。変更種別は、「追加」「更新」または「削除」のいずれかであるものとする。削除フラグには、変更種別が「削除」である場合に「真」が設定され、その他の変更種別のときには「偽」が設定される。
【０１４８】
＝＝処理＝＝
第３の実施形態では、アンカー時点より後に更新されたデータをクライアントレンジ情報として同期要求４１に含めてサーバ２０に送信する。図５１は、第３の実施形態において送信される同期要求４１の構成例を示す図である。第３の実施形態では、同期要求４１には、アンカー情報が追加され、同期要求４１に含まれるクライアントレンジ情報には削除フラグが追加される。また、後述するように、クライアント１０において追加または更新されたクライアントレコードに対応するクライアントレンジ情報には、クライアントレコードの全ての項目と削除フラグとが含まれる。
【０１４９】
図５２は、上述した図１４のステップＳ３１０４におけるレンジ情報の作成処理の流れを示す図である。第３の実施形態では、同期要求送信部１１２は、ステップＳ３１２６において、基準データからデータ数だけの各クライアントレコードについて、クライアントレコードの更新時点がアンカー時点よりも後であれば（Ｓ３１２６１：ＹＥＳ）、クライアントレコードの全項目および「偽」の削除フラグを含むレンジ情報を作成し（Ｓ３１２６２）、更新時点がアンカー時点以前であれば（Ｓ３１２６１：ＮＯ）、クライアントレコードのＧＵＩＤ、更新時点および「偽」の削除フラグを含むレンジ情報を作成する（Ｓ３１２６３）。また、同期要求送信部１１２は、クライアント変更履歴記憶部１３３を参照して、変更種別が「削除」であり、更新時点がアンカー時点より後であり、フィルタ条件にマッチし、レンジ指定情報のデータ項目でソートした場合に、基準データからデータ数個以内に入るクライアント変更履歴を検索し（Ｓ３１２６４）、検索したクライアント変更履歴のそれぞれについて、ＧＵＩＤ、更新時点、「真」の削除フラグを含むレンジ情報を作成する（Ｓ３１２６５）。これにより、アンカー時点より後に追加または更新されたクライアントレコードについては、データ全体がクライアントレンジ情報としてサーバ２０に送信され、アンカー時点より後に削除されたクライアントレコードについては、「真」の削除フラグが設定されたレンジ情報がサーバ２０に送信される。
【０１５０】
サーバ２０では、同期要求に応じて図５３に示す処理が行われる。なお、同期要求受信部２１３は、同期要求４１にアンカー時点が設定されていない場合には、アンカー時点を時点として取りうる最も古い値とする。図５３の処理では、ステップＳ３３０１及びＳ３３０２を最後に行い、まず各クライアントレンジ情報についてステップＳ３３０３からの処理を行う。  
同期情報送信部２１６は、ＧＵＩＤに対応するサーバレコードがサーバデータベース２１に存在しない場合には（Ｓ３３０４：ＮＯ）、クライアントレンジ情報の更新時点が、同期要求４１に含まれているアンカー情報の示すアンカー時点以前であれば（Ｓ３３０４１：ＹＥＳ）、ステップＳ３３０６に進む。これにより、クライアントデータベース１１に存在し、サーバデータベース２１に存在していないデータについて、「真」の削除フラグを含むレンジダウンロード情報が同期情報に設定される。クライアントレンジ情報の更新時点がアンカー時点よりも後であれば（Ｓ３３０４１：ＮＯ）、同期情報送信部２１６は、レンジ情報に含まれている各項目を含むサーバレコードを作成してサーバデータベース２１に登録する（Ｓ３３０４２）。これにより、クライアント１０で追加されたデータがサーバデータベース２１にも登録される。
【０１５１】
同期情報送信部２１６は、ＧＵＩＤに対応するサーバレコードがサーバデータベース２１に存在する場合には（Ｓ３３０４：ＹＥＳ）、クライアントレンジ情報の削除フラグが「真」であれば（Ｓ３３０４３：ＹＥＳ）、サーバレコードをサーバデータベース２１から削除し（Ｓ３３０４４）、ステップＳ３３０６に進む。これにより、クライアント１０で削除されたデータはサーバ２０においても削除される。  
レンジ情報の削除フラグが「偽」であり（Ｓ３３０４３：ＮＯ）、サーバレコードの更新時点が、アンカー時点以前であり（Ｓ３３０４５：ＹＥＳ）、クライアントレンジ情報の更新時点がサーバレコードの更新時点よりも新しければ（Ｓ３３０４６：ＹＥＳ）、同期情報送信部２１６は、クライアントレンジ情報に含まれている各項目によりサーバレコードを更新する（Ｓ３３０４７）。これにより、クライアント１０で更新されたデータは、サーバ２０において更新されていなければ、サーバデータベース２１に反映される。
【０１５２】
同期情報送信部２１６は、レンジ情報の削除フラグが「偽」であり（Ｓ３３０４３：ＮＯ）、サーバレコードの更新時点がアンカー時点よりも後であり（Ｓ３３０４５：ＮＯ）、レンジ情報の更新時点がアンカー時点以前であり（Ｓ３３０４６：ＹＥＳ）、レンジ情報の更新時点がアンカー時点以前であれば（Ｓ３３０４８：ＹＥＳ）、ステップＳ３３０５に進む。これにより、サーバ２０でのみ更新されたデータを含むレンジダウンロード情報が同期情報に設定される。  
レンジ情報の更新時点もアンカー時点より後であれば（Ｓ３３０４８：ＮＯ）、レンジダウンロード情報を作成せずにループする。これにより、クライアント１０およびサーバ２０の両方でデータが更新された場合、すなわち衝突が発生した場合には、レンジダウンロード情報が作成されない。
【０１５３】
同期情報送信部２１６が全てのクライアントレンジ情報について上記処理を行った後に、サーバレンジ情報取得部２１５は、ステップＳ３３０１およびＳ３３０２を行う。Ｓ３３０１において、サーバレンジ情報取得部２１５は、図５２に示す処理のうち、ステップＳ３１２６４およびＳ３１２６５を除く他の処理を実行する。すなわち、サーバレンジ情報取得部２１５は、ステップＳ３１２６において、基準データからデータ数だけの各サーバレコードについて、サーバレコードの更新時点がアンカー時点よりも後であれば（Ｓ３１２６１：ＹＥＳ）、サーバレコードの全項目および「偽」の削除フラグを含むサーバレンジ情報を作成し（Ｓ３１２６２）、更新時点がアンカー時点以前であれば（Ｓ３１２６１：ＮＯ）、サーバレコードのＧＵＩＤ、更新時点および「偽」の削除フラグを含むサーバレンジ情報を作成する（Ｓ３１２６３）。
【０１５４】
以上のようにして、クライアント１０において削除されたデータはサーバ２０でも削除され、クライアント１０で追加されたデータはサーバデータベース２１にも登録され、クライアント１０で更新され、サーバ２０で更新されていないデータはサーバデータベース２１に反映され、サーバ２０で削除されたデータは、その旨を示すレンジダウンロード情報がクライアント１０に送信され、衝突が発生した場合には、サーバレンジ情報のみがクライアント１０に送信される。したがって、クライアント１０は、サーバレンジ情報に基づいて衝突が発生したことを検知し、衝突を解決することが可能となる。例えば、クライアント１０は、クライアントレコードとサーバレコードとを出力してユーザに選択させ、クライアントレコードが選択された場合には、データをサーバ２０にアップロードしてサーバデータベース２１を更新し、サーバレコードが選択された場合にはサーバレコードをクライアントデータベース１１に登録するなどにより、衝突を解消することができる。
【０１５５】
＝＝変形例＝＝
なお、上述した実施形態では、データの作成時点や更新時点、削除時点などは、サーバデータベース２１に対するデータの変更の順番を表す値であるものとしたが、これに限らず、タイムスタンプを採用してもよい。
【０１５６】
また、上述の実施形態では、説明を簡単にするため、クライアント１０およびサーバ２０は１台ずつであるものとしたが、複数のクライアント１０が１台のサーバ２０に接続する形態としてもよいし、１台のクライアント１０が複数のサーバ２０に接続する形態としてもよいし、複数のクライアント１０が複数のサーバ２０に接続する形態としてもよい。
【０１５７】
また、本実施形態では、クライアントＩＤは予めクライアントＩＤ記憶部１３１に記憶されているものとしたが、これに限らず、例えば、サーバ２０がクライアントＩＤをクライアント１０に割り当て、クライアント１０がサーバ２０から割り当てられたクライアントＩＤを取得してクライアントＩＤ記憶部１３１に登録するようにすることもできる。クライアントＩＤは、例えば、クライアント１０が起動する度に再設定されるようにしてもよい。
【０１５８】
また、上述の実施形態では、ソート規則は、データをデータ項目の順に並べるようにすることであるものとしたが、これに限らず、データを順番に並べることができる任意の規則とすることができる。例えば、ソート規則として、プログラムを採用するようにしてもよい。また、本実施形態では、データは１次元で連続するように並べるものとしたが、多次元に並べ、その多次元空間における所定の範囲を興味範囲としてもよい。例えば、データに緯度経度などの位置情報が含まれている場合に、データを地図上に並べ、基準データから所定の距離内の範囲を興味範囲とするようにしてもよい。さらに、本実施形態では基準データを基準として興味範囲を決定するものとしたが、これに限らず、一定の値を基準として興味範囲を決定してもよい。例えば、データにある数値が含まれており、所定の値を基準値とし、その基準値からの乖離が所定の閾値以内にあるものを興味範囲に含まれるデータとするようにしてもよい。
【０１５９】
また、本実施形態では、同期要求４１の作成時に、フィルタ選択部１１１はユーザからレンジ指定報の入力を受け付けるものとしたが、これに限らず、例えば、選択フィルタ条件に対応するレンジ指定情報がレンジ指定情報記憶部１３２に登録されている場合には、そのレンジ指定情報を用いるようにしてもよい。また、そのレンジ指定情報に基づいてレンジ指定情報を更新するようにしてもよい。この場合、例えばフィルタ選択部１１１は、選択フィルタ条件に対応するレンジ指定情報をレンジ指定情報記憶部１３２から読み出せた場合には、クライアントデータベース１１から選択フィルタ条件にマッチするクライアントレコードを検索し、検索したクライアントレコードを、読み出したレンジ指定情報に含まれるデータ項目でソートし、ソートしたクライアントレコードのうち、基準データから数えて、レンジ指定情報のデータ数番目のもののＧＵＩＤを新しい基準ＩＤとしてレンジ指定情報に設定するようにすることができる。
【０１６０】
また、本実施形態では、同期情報４２には、フィルタ条件に該当するサーバレンジ情報やレンジダウンロード情報を全て同期情報４２に含めるものとしたが、同期情報４２に含めるサーバレンジ情報やレンジダウンロード情報の数を制限するための条件（以下、「リミット条件」という。）を同期要求に含めるようにしてもよい。リミット条件は、例えば、レコードを所定のカラムでソートしたうちのｎ番目から所定数個などと設定することができる。
【０１６１】
また、本実施形態では、同期情報４２やダウンロード情報４４、解消要求４５などは１回の送信で送られるものとしたが、例えば、複数回に分けて送信するようにしてもよい。
【０１６２】
また、サーバ２０がリセットすることがある場合や、サーバ２０が複数のサーバデータベース２１を管理するような場合には、同期対象となるサーバデータベース２１にＩＤ（以下、「同期ＩＤ」という。）を割り当て、同期要求４１、同期情報４２、ダウンロード要求４３、ダウンロード情報４４、解消要求４５、解消結果情報４６に同期ＩＤを含めるようにしてもよい。この場合、クライアント１０は、同期要求４１やダウンロード要求４３、解消要求４５に設定していた同期ＩＤと、サーバ２０から応答される同期情報４２やダウンロード情報４４、解消結果情報４６に設定されている同期ＩＤとが異なる場合には、クライアント１０は、クライアントデータベース１１に記憶されているデータを全て削除してから、最初から同期処理をやり直すようにしてもよい。
【０１６３】
また、本実施形態では、ダウンロード決定部１１５がダウンロードしないと決定したデータについては端的にダウンロードを行わないようにしたが、サーバ２０において更新されているデータについては、クライアントレコードに更新されている旨を示すフラグ（以下、「更新フラグ」という。）を設定しておき、次の同期処理のときに、更新フラグが真であるものについてもダウンロードをするように決定するようにすることもできる。この場合、ダウンロード決定部１１５は、例えば、同期情報４２に含まれているサーバレンジ情報に基づいて追加または更新されているデータを特定するとともに、クライアントデータベース１１から更新フラグが真であるクライアントレコードを検索し、特定したデータと検索したクライアントレコードとの中からダウンロードすべきデータを決定することができる。
【０１６４】
また、ダウンロード決定部１１５がダウンロードしないと決定したデータについて、後からダウンロードするようにしてもよいし、クライアントデータベース１１から削除するようにしてもよい。
【０１６５】
また、クライアントデータベース１１に記憶される古いデータを定期的に削除するようにしてもよい。この場合、クライアント１０は、例えば、１分や５分、１時間などの所定の時間ごとあるいはクライアント１０における処理の負荷が低減したことを検知したときに、クライアントレコードのうち、更新時点が現在の日時よりも所定時間以上前のものをクライアントデータベース１１から削除するようにすることができる。レンジ指定情報記憶部１３２が、フィルタ条件とアンカー時点とに対応付けて、これらがレンジ指定情報記憶部１３２に登録された日時を記憶しておき、クライアント１０は、登録日時が現在の日時よりも所定時間以上前か否かによりフィルタ条件が古いか新しいかを判断し、古いフィルタ条件にマッチするクライアントレコードのうち、新しいフィルタ条件にマッチしないものを、クライアントデータベース１１から削除するようにすることもできる。
【０１６６】
また、本実施形態では、サーバデータベース２１が、データの本体に加えてキーやカラム、ヒントなども含んだサーバレコードを記憶するものとしたが、データの本体と、そのデータのキーやカラム、ヒントなどのメタ情報とを異なるデータとして記憶するようにしてもよい。例えば、サーバデータベース２１が記憶するサーバレコードには、ＧＵＩＤ、作成時点、更新時点および本体のみが含まれているものとし、サーバ２０は、サーバデータベース２１に記憶されているサーバレコードのそれぞれに対応するＧＵＩＤ、更新時点、キー、カラムおよびヒントを含む情報（以下、「ヘッダデータ」という。）を記憶するヘッダデータベースを備えるようにすることができる。この場合、サーバデータベース２１の構成を変更することなく、ヘッダデータを用いてデータの同期を行うことができる。したがって、例えば、運用中のサーバデータベース２１が存在している場合などにも、容易に運用中のサーバデータベース２１を同期の対象とすることが可能となる。同様に、クライアント１０が、クライアントデータベース１１とは別に、ヘッダデータを記憶するヘッダデータベースを備えるようにしてもよい。この場合、例えば、クライアント１０において、クライアントデータベース１１を利用するＰＩＭ（Personal Information Manager）アプリケーションなどが動作しているときでも、クライアントデータベース１１の構成を変更することなく、データの同期を行うようにすることが可能となる。
【０１６７】
以上、本実施形態について説明したが、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
【符号の説明】
【０１６８】
１０    クライアント
１１    クライアントデータベース
２０    サーバ
２１    サーバデータベース
３０    通信ネットワーク
４１    同期要求
４２    同期情報
４３    ダウンロード要求
４４    ダウンロード情報
４５    解消要求
４６    解消結果情報
１０１  ＣＰＵ
１０２  メモリ
１０３  記憶装置
１０４  通信インタフェース
１０５  入力装置
１０６  出力装置
１１０  クライアント変更検知部
１１１  フィルタ選択部
１１２  同期要求送信部
１１３  同期情報受信部
１１４  削除処理部
１１５  ダウンロード決定部
１１６  レンジ指定情報更新部
１１７  ダウンロード要求送信部
１１８  ダウンロード情報受信部
１１９  更新処理部
１２０  衝突重複解消決定部
１２１  解消要求送信部
１２２  解消結果情報受信部
１２３  解消処理部
１３１  クライアントＩＤ記憶部
１３２  レンジ指定情報記憶部
１３３  クライアント変更履歴記憶部
１３４  未取得ＩＤ記憶部
１３５  未検証記憶部
１３６  重複記憶部
１３７  衝突記憶部
２０１  ＣＰＵ
２０２  メモリ
２０３  記憶装置
２０４  通信インタフェース
２０５  入力装置
２０６  出力装置
２１０  ＧＵＩＤ生成部
２１１  時点生成部
２１２  データベース変更部
２１３  同期要求受信部
２１４  ダウンロードデータ取得部
２１５  サーバレンジ情報取得部
２１６  同期情報送信部
２１７  ダウンロード要求受信部
２１８  ダウンロード情報送信部
２１９  解消要求受信部
２２０  解消処理部
２２１  解消結果情報送信部
【図１】
0005634178.tif 000002
【図２】
0005634178.tif 000003
【図３】
0005634178.tif 000004
【図４】
0005634178.tif 000005
【図５】
0005634178.tif 000006
【図６】
0005634178.tif 000007
【図７】
0005634178.tif 000008
【図８】
0005634178.tif 000009
【図９】
0005634178.tif 000010
【図１０】
0005634178.tif 000011
【図１１】
0005634178.tif 000012
【図１２】
0005634178.tif 000013
【図１３】
0005634178.tif 000014
【図１４】
0005634178.tif 000015
【図１５】
0005634178.tif 000016
【図１６】
0005634178.tif 000017
【図１７】
0005634178.tif 000018
【図１８】
0005634178.tif 000019
【図１９】
0005634178.tif 000020
【図２０】
0005634178.tif 000021
【図２１】
0005634178.tif 000022
【図２２】
0005634178.tif 000023
【図２３】
0005634178.tif 000024
【図２４】
0005634178.tif 000025
【図２５】
0005634178.tif 000026
【図２６】
0005634178.tif 000027
【図２７】
0005634178.tif 000028
【図２８】
0005634178.tif 000029
【図２９】
0005634178.tif 000030
【図３０】
0005634178.tif 000031
【図３１】
0005634178.tif 000032
【図３２】
0005634178.tif 000033
【図３３】
0005634178.tif 000034
【図３４】
0005634178.tif 000035
【図３５】
0005634178.tif 000036
【図３６】
0005634178.tif 000037
【図３７】
0005634178.tif 000038
【図３８】
0005634178.tif 000039
【図３９】
0005634178.tif 000040
【図４０】
0005634178.tif 000041
【図４１】
0005634178.tif 000042
【図４２】
0005634178.tif 000043
【図４３】
0005634178.tif 000044
【図４４】
0005634178.tif 000045
【図４５】
0005634178.tif 000046
【図４６】
0005634178.tif 000047
【図４７】
0005634178.tif 000048
【図４８】
0005634178.tif 000049
【図４９】
0005634178.tif 000050
【図５０】
0005634178.tif 000051
【図５１】
0005634178.tif 000052
【図５２】
0005634178.tif 000053
【図５３】
0005634178.tif 000054