JP2012059066A - データ同期システムおよびデータ同期方法 - Google Patents

データ同期システムおよびデータ同期方法 Download PDF

Info

Publication number
JP2012059066A
JP2012059066A JP2010202305A JP2010202305A JP2012059066A JP 2012059066 A JP2012059066 A JP 2012059066A JP 2010202305 A JP2010202305 A JP 2010202305A JP 2010202305 A JP2010202305 A JP 2010202305A JP 2012059066 A JP2012059066 A JP 2012059066A
Authority
JP
Japan
Prior art keywords
data
information
client
server
range
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2010202305A
Other languages
English (en)
Other versions
JP5634178B2 (ja
Inventor
Yoshiaki Araki
義明 荒木
Susumu Ishizuka
進 石塚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
KII Corp
Original Assignee
KII Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by KII Corp filed Critical KII Corp
Priority to JP2010202305A priority Critical patent/JP5634178B2/ja
Publication of JP2012059066A publication Critical patent/JP2012059066A/ja
Application granted granted Critical
Publication of JP5634178B2 publication Critical patent/JP5634178B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】クライアントとサーバとの間でデータを同期する場合に、サーバにおいて管理する更新履歴を所定数に限定することができるようにする。
【解決手段】クライアント10はレンジ指定情報およびクライアントレンジ情報を含む同期要求をサーバ20に送信する。サーバ20は、レンジ指定情報により特定される興味範囲に含まれるサーバレコードについてのサーバレンジ情報と、クライアントレンジ情報に対応するデータのうち更新または削除されているものを含むレンジダウンロード情報とを含む同期情報をクライアント10に送信する。クライアント10は、同期情報に基づいてダウンロード要求をサーバ20に送信し、サーバ20はダウンロード要求に応じてダウンロード情報をクライアント10に送信する。クライアント10は、ダウンロード情報に含まれるデータをクライアントデータベースに登録する。
【選択図】図1

Description

本発明は、データ同期システムおよびデータ同期方法に関する。
携帯電話などのクライアントがサーバとの間でデータを同期することが行われている。クライアントは定期的に変更されたデータの有無を問い合わせ、更新されたデータがある場合にはそのデータをダウンロードする。従来、サーバは変更履歴を残すことにより、データの変更の有無を管理していた。例えば、特許文献1では、第2のデータベースの更新履歴を保存し、更新履歴の件数が閾値よりも大きいときに同期を開始することで、一度のデータ同期で大量の情報が送受信されることのないようにしている。
特開2004−86800号公報
しかしながら、携帯電話などのクライアントが常にサーバと通信可能になっているとは限らず、サーバとクライアントとの間の通信が不能である時間が長い場合には、可能になるまでの間の全ての変更履歴を記憶しておく必要があるし、また、サーバが複数のクライアントと通信を行う場合には、クライアントごとにどこまでを同期したのか管理しておく必要があった。
本発明は、このような背景を鑑みてなされたものであり、クライアントとサーバとの間でデータを同期する場合にサーバの負荷を低減することのできるデータ同期システムおよびデータ同期方法を提供することを目的とする。
上記課題を解決するための本発明の主たる発明は、サーバと、前記サーバに通信可能に接続されるクライアントとの間でデータを同期するシステムであって、前記サーバは、データに更新時点を付帯させて記憶する第1データベースにアクセス可能であり、前記クライアントは、前記サーバから取得したデータを記憶する第2データベースにアクセス可能であり、前記クライアントは、所定の規則に従ってソートした前記データの一部分である興味範囲を特定するためのレンジ指定情報を記憶するレンジ指定情報記憶部と、前記第2データベースに記憶されている前記データのうち、前記レンジ指定情報により特定される前記興味範囲に含まれるもののそれぞれについて、前記データの識別情報であるデータIDおよび前記データの更新時点を含むクライアントレンジ情報を作成するクライアントレンジ情報取得部と、前記レンジ指定情報および前記クライアントレンジ情報を含む同期要求を前記サーバに送信する同期要求送信部と、を備え、前記サーバは、前記同期要求に含まれる前記クライアントレンジ情報のそれぞれについて、前記クライアントレンジ情報に含まれる前記データIDに対応する、前記第1データベースに記憶されているデータの更新時点が、前記クライアントレンジ情報に含まれる前記更新時点よりも新しい場合に、当該データであるダウンロードデータを前記第1データベースから読み出すダウンロードデータ取得部と、前記ダウンロードデータを含む同期情報を前記クライアントに送信する同期情報送信部と、を備えることとする。
また、本発明のデータ同期システムでは、前記サーバは、前記第1データベースに記憶されている前記データのうち、前記同期要求に含まれる前記レンジ指定情報により特定される前記興味範囲に含まれるもののそれぞれについて、前記データを示すデータIDおよび前記データの更新時点を含むサーバレンジ情報を作成するサーバレンジ情報取得部を備え、前記同期情報送信部は、前記ダウンロードデータに加えて前記サーバレンジ情報を前記同期情報に含めて前記クライアントに送信し、前記クライアントは、前記同期情報に含まれる前記データを前記第2データベースに登録する更新処理部と、前記同期情報に含まれる前記サーバレンジ情報のうち、前記サーバレンジ情報に含まれる前記データIDが示す前記データをダウンロードすべきか否かを決定するダウンロード決定部と、ダウンロードすべきと決定した前記データを示す前記データIDを含むダウンロード要求を前記サーバに送信するダウンロード要求送信部と、を備え、前記ダウンロードデータ取得部は、前記ダウンロード要求に含まれる前記データIDに対応するデータを前記第1データベースから読み出し、前記サーバは、前記第2ダウンロードデータ取得部が読み出した前記データを含むダウンロード情報を前記クライアントに送信するダウンロード情報送信部を備え、前記更新処理部は、前記ダウンロード情報に含まれる前記データを前記第2データベースに登録するようにしてもよい。
また、本発明のデータ同期システムでは、前記レンジ指定情報は、前記データをソートするための前記規則を示すソート情報と、前記ソートされたデータにおける基準となるデータである基準データを示す基準IDと、前記データの数を示すデータ数とが含まれ、前記クライアントレンジ情報取得部は、前記第2データベースに記憶されている前記データを前記規則に従ってソートし、ソートした一連の前記データにおいて、前記基準データと、前記基準データに後続する、前記データ数が示す数のデータとを前記興味範囲に含まれるデータとし、前記サーバレンジ情報取得部は、前記第1データベースに記憶されている前記データを前記同期要求に含まれる前記レンジ指定情報に含まれる前記ソート情報が示す前記規則に従ってソートし、ソートした一連の前記データにおいて、前記同期要求に含まれる前記レンジ指定情報に含まれる前記基準IDに対応する前記基準データと、当該基準データに後続する、前記同期要求に含まれる前記レンジ指定情報に含まれる前記データ数が示す数のデータとを前記興味範囲に含まれるデータとするようにしてもよい。
また、本発明のデータ同期システムでは、前記クライアントレンジ情報取得部は、前記第2データベースに記憶されている前記データを前記規則に従ってソートし、ソートした一連の前記データにおいて、前記基準データと、前記基準データに先行する、前記データ数が示す数のデータと、前記基準データに後続する、前記データ数が示す数のデータとを前記興味範囲に含まれるデータとし、前記サーバレンジ情報取得部は、前記第1データベースに記憶されている前記データを前記同期要求に含まれる前記レンジ指定情報に含まれる前記ソート情報が示す前記規則に従ってソートし、ソートした一連の前記データにおいて、前記同期要求に含まれる前記レンジ指定情報に含まれる前記基準IDに対応する前記基準データと、当該基準データに先行する、前記同期要求に含まれる前記レンジ指定情報に含まれる前記データ数が示す数のデータと、当該基準データに後続する、当該データ数が示す数のデータとを前記興味範囲に含まれるデータとするようにしてもよい。
また、本発明のデータ同期システムでは、前記レンジ指定情報記憶部はさらに、前記データを抽出するための条件を記憶し、前記クライアントレンジ情報取得部は、前記第2データベースに記憶されている前記データのうち前記条件にマッチするものを前記規則に従ってソートした場合に前記興味範囲に含まれる前記データについて、前記クライアントレンジ情報を作成し、前記同期要求にはさらに前記条件が含まれ、前記サーバレンジ情報取得部は、前記第1データベースに記憶されている前記データのうち、前記同期要求に含まれる前記条件にマッチするものを前記規則に従ってソートした場合に前記同期要求に含まれる前記レンジ指定情報により特定される前記興味範囲に含まれる前記データについて、前記サーバレンジ情報を作成するようにしてもよい。
また、本発明のデータ同期システムでは、前記ダウンロードデータ取得部は、前記ダウンロード要求に含まれる前記データIDのうち、前記データIDに対応する前記データが前記第1データベースに記憶されていないものについて、前記データIDを含む削除情報を作成し、前記クライアントは、前記ダウンロード情報に前記削除情報が含まれている場合に、前記削除情報に含まれる前記データIDに対応する前記データを前記第2データベースから削除する削除処理部を備えるようにしてもよい。
また、本発明のデータ同期システムでは、前記データには、前記データの内容に基づいて生成される、前記クライアントにおいて前記データをダウンロードすべきか否かを決定するための情報であるヒントが付帯され、前記サーバレンジ情報取得部は、前記第1データベースに記憶されているデータのうち、前記同期要求に含まれる前記レンジ指定情報により特定される前記興味範囲に含まれるもののそれぞれについて、前記データを示すデータID、前記データの更新時点、および前記データに付帯される前記ヒントを含むサーバレンジ情報を作成し、前記ダウンロード決定部は、前記同期情報に含まれる前記サーバレンジ情報に含まれる前記ヒントに基づいて、前記データをダウンロードすべきか否かを決定するようにしてもよい。
また、本発明のデータ同期システムでは、前記ダウンロード決定部は、前記サーバレンジ情報に含まれる前記ヒントを出力し、ユーザから前記ダウンロードすべきデータの入力を受け付けるようにしてもよい。
また、本発明のデータ同期システムでは、前記クライアントは、前記第2データベースの更新履歴を記憶する更新履歴記憶部を備え、前記更新履歴には、更新の対象となった前記データを示す前記データIDと、前記データに付帯されている前記更新時点とが含まれており、前記同期要求送信部は、前記興味範囲に含まれる前記データに対応する前記更新履歴を前記更新履歴記憶部から取得し、前記取得した更新履歴を前記同期要求に設定して前記サーバに送信し、前記サーバは、前記同期要求に含まれる前記更新履歴のそれぞれについて、前記更新履歴に含まれる前記データIDに対応する、前記第1データベースが記憶する前記データに付帯されている前記更新時点が、前記更新履歴に含まれている前記更新時点よりも後である場合、前記第1データベースが記憶する前記データに付帯される前記更新時点および前記データIDを含む衝突情報を生成する衝突検知部を備え、前記同期情報送信部は、前記衝突情報をさらに含む前記同期情報を前記クライアントに送信し、前記クライアントは、前記衝突情報に含まれる前記データIDに対応する前記データを、前記サーバにアップロードするか前記サーバからダウロードするかを決定する衝突解消部を備え、前記ダウンロード要求送信部は、前記衝突解消部がダウンロードすると決定した前記データを示す前記データIDをさらに含む前記ダウンロード要求を前記サーバに送信し、前記クライアントは、前記衝突解消部がアップロードすると決定した前記データを前記第2データベースから読み出し、読み出した前記データを含む解消要求を前記サーバに送信する解消要求送信部を備え、前記サーバは、前記解消要求に含まれている前記データを前記第1データベースに登録する解消処理部を備えるようにしてもよい。
また、本発明のデータ同期システムでは、前記データにはさらに、前記データに所定のアルゴリズムを適用して求められるデータであるキーが付帯され、前記更新履歴には前記キーが含まれ、前記サーバは、前記第1データベースに記憶されている前記データのうち、前記データに前記アルゴリズムを適用して求められるキーが、前記同期要求に含まれる前記更新履歴のいずれかに含まれる前記キーと一致するものを検索し、前記検索したデータを示す前記データIDを含む重複情報を生成する重複検知部を備え、前記同期情報送信部は、前記重複情報をさらに含む前記同期情報を前記クライアントに送信し、前記クライアントは、前記重複情報に含まれる前記データIDに対応する前記データのうち、削除すべきものを決定する重複解消部を備え、前記解消要求送信部は、前記重複解消部が削除すべきと決定した前記データを示す前記データIDを含む解消情報をさらに前記解消要求に含めて前記サーバに送信し、前記解消処理部はさらに、前記解消要求に含まれる前記解消情報に含まれる前記データIDに対応する前記データを前記第1データベースから削除するようにしてもよい。
また、本発明のデータ同期システムでは、前記データには前記データIDが付帯されており、前記データIDには、前記クライアントにおいて一意な識別情報であるローカルIDと、前記サーバおよび前記クライアントの両方において一意な識別情報であるグローバルIDとが含まれ、前記クライアントは、前記クライアントにおいて前記データが作成された場合に、前記作成されたデータに前記ローカルIDを割り当てるローカルID割当部と、前記作成されたデータに割り当てられた前記ローカルIDのうち、前記グローバルIDが割り当てられていないものである未取得IDを記憶する未取得ID記憶部と、を備え、前記同期要求送信部はさらに、前記未取得ID記憶部に記憶されている前記未取得IDを含めて前記同期要求を前記サーバに送信し、前記サーバは、前記同期要求に含まれている前記未取得IDに対応する前記グローバルIDを前記第1データベースから検索し、前記未取得IDに対応する前記グローバルIDがある場合には、当該対応するグローバルIDを前記第1データベースから取得し、前記取得したグローバルIDおよび前記未取得IDを含むID情報を生成し、前記ローカルIDに対応する前記グローバルIDがない場合には、新たに前記グローバルIDを割り当て、前記割り当てたグローバルIDおよび前記ローカルIDを含むID情報を生成するグローバルID取得部を備え、前記同期情報送信部はさらに、前記ID情報を含めて前記同期情報を前記クライアントに送信し、前記クライアントは、前記同期情報に含まれている前記ID情報のそれぞれについて、前記ID情報に含まれる前記未取得IDに対応する前記データを前記第1データベースから検索し、前記検索したデータに付帯される前記データIDに、前記ID情報に含まれる前記グローバルIDを設定するグローバルID登録部を備えるようにしてもよい。
また、本発明のデータ同期システムでは、前記第1ダウンロードデータ取得部は、前記クライアントレンジ情報に含まれる前記データIDのうち、前記データIDに対応する前記データが前記第1データベースに記憶されていないものについて、前記データIDを含む削除情報を作成し、前記同期情報送信部はさらに、前記削除情報を前記同期情報に設定して前記クライアントに送信し、前記クライアントは、前記同期情報に含まれている前記削除情報のそれぞれについて、前記削除情報に含まれる前記データIDに対応する前記データを前記第2データベースから削除する削除処理部を備えるようにしてもよい。
また、本発明の他の態様は、サーバと、前記サーバに通信可能に接続されるクライアントとの間でデータを同期する方法であって、前記サーバは、データに更新時点を付帯させて記憶する第1データベースにアクセス可能であり、前記クライアントは、前記サーバから取得したデータを記憶する第2データベースにアクセス可能であり、前記クライアントが、所定の規則に従ってソートした前記データの一部分である興味範囲を特定するためのレンジ指定情報をメモリに記憶し、前記クライアントが、前記第2データベースに記憶されている前記データのうち、前記レンジ指定情報により特定される前記興味範囲に含まれるもののそれぞれについて、前記データの識別情報であるデータIDおよび前記データの更新時点を含むクライアントレンジ情報を作成し、前記クライアントが、前記レンジ指定情報および前記クライアントレンジ情報を含む同期要求を前記サーバに送信し、前記サーバが、前記同期要求に含まれる前記クライアントレンジ情報のそれぞれについて、前記クライアントレンジ情報に含まれる前記データIDに対応する、前記第1データベースに記憶されているデータの更新時点が、前記クライアントレンジ情報に含まれる前記更新時点よりも新しい場合に、当該データであるダウンロードデータを前記第1データベースから読み出し、前記サーバが、前記ダウンロードデータを含む同期情報を前記クライアントに送信することとする。
また、本発明のデータ同期方法では、前記サーバは、前記第1データベースに記憶されている前記データのうち、前記同期要求に含まれる前記レンジ指定情報により特定される前記興味範囲に含まれるもののそれぞれについて、前記データを示すデータIDおよび前記データの更新時点を含むサーバレンジ情報を作成し、前記サーバは、前記同期情報を前記クライアントに送信する場合に、前記ダウンロードデータに加えて前記サーバレンジ情報を前記同期情報に含め、前記クライアントが、前記同期情報に含まれる前記データを前記第2データベースに登録し、前記クライアントが、前記同期情報に含まれる前記サーバレンジ情報のうち、前記サーバレンジ情報に含まれる前記データIDが示す前記データをダウンロードすべきか否かを決定し、前記ダウンロードすべきと決定したデータを示す前記データIDを含むダウンロード要求を前記サーバに送信し、前記サーバが、前記ダウンロード要求に含まれる前記データIDに対応するデータを前記第1データベースから読み出し、前記読み出した前記データを含むダウンロード情報を前記クライアントに送信し、前記クライアントは、前記ダウンロード情報に含まれる前記データを前記第2データベースに登録することとする。
また、本発明のデータ同期方法では、前記クライアントは、前記第2データベースの更新履歴を記憶し、前記更新履歴には、更新の対象となった前記データを示す前記データIDと、前記データに付帯されている前記更新時点とが含まれており、前記クライアントは、前記興味範囲に含まれる前記データに対応する前記更新履歴を前記同期要求に設定して前記サーバに送信し、前記サーバは、前記同期要求に含まれる前記更新履歴のそれぞれについて、前記更新履歴に含まれる前記データIDに対応する、前記第1データベースが記憶する前記データに付帯されている前記更新時点が、前記更新履歴に含まれている前記更新時点よりも後である場合、前記第1データベースが記憶する前記データに付帯される前記更新時点および前記データIDを含む衝突情報を生成し、前記サーバは、前記衝突情報をさらに含む前記同期情報を前記クライアントに送信し、前記クライアントは、前記衝突情報に含まれる前記データIDに対応する、前記第2データベースが記憶する前記データを前記サーバにアップロードするか否かを決定し、前記クライアントは、アップロードしないと決定した前記データを示す前記データIDをさらに含む前記ダウンロード要求を前記サーバに送信し、前記クライアントは、アップロードすると決定した前記データを前記第2データベースから読み出し、読み出した前記データを含む解消要求を前記サーバに送信し、前記サーバは、前記解消要求に含まれている前記データを前記第1データベースに登録するようにしてもよい。
その他本願が開示する課題やその解決方法については、発明の実施形態の欄および図面により明らかにされる。
本発明によれば、クライアントとサーバとの間でデータを同期する場合にサーバの負荷を低減することができる。
通信システムの全体構成を示す図である。 クライアント10のハードウェア構成を示す図である。 サーバ20のハードウェア構成を示す図である。 クライアント10のソフトウェア構成を示す図である。 クライアントレコードの構成例を示す図である。 レンジ指定情報記憶部132の構成例を示す図である。 第1の実施形態に係る同期要求41の構成例を示す図である。 第1の実施形態に係る同期情報42の構成例を示す図である。 ダウンロード要求43の構成例を示す図である。 ダウンロード情報の構成例を示す図である。 サーバ20のソフトウェア構成を示す図である。 サーバレコードの構成例を示す図である。 第1の実施形態に係るデータの同期処理の流れを説明する図である。 第1の実施形態に係る同期要求41の作成処理の流れを示す図である。 第1の実施形態に係るレンジ情報の作成処理の流れを示す図である。 第1の実施形態に係る同期要求41への対応処理の流れを示す図である。 第1の実施形態に係る同期情報42への対応処理の流れを示す図である。 クライアント10において実行される適用処理の流れを示す図である。 第1の実施形態に係るダウンロード要求43の対応処理の流れを説明する図である。 第2の実施形態に係るクライアント10のソフトウェア構成を示す図である。 第2の実施形態に係るクライアントレコードの構成例を示す図である。 クライアント変更履歴の構成例を示す図である。 重複記憶部136の構成例を示す図である。 クライアント変更検知部110による処理の流れを示す図である。 ステップS407に示す重複判定処理の流れを示す図である。 ステップS408に示す変更履歴登録処理の流れを示す図である。 第2の実施形態に係る同期要求41の構成例を示す図である。 第2の実施形態に係る同期情報42の構成例を示す図である。 解消要求45の構成例を示す図である。 解消結果情報46の構成例を示す図である。 第2の実施形態に係るサーバ20のソフトウェア構成を示す図である。 第2の実施形態に係るサーバレコードの構成例を示す図である。 第2の実施形態に係るデータの同期処理の流れを説明する図である。 第2の実施形態に係る同期要求の作成処理の流れを示す図である。 第2の実施形態に係るレンジ情報の作成処理の流れを示す図である。 第2の実施形態に係る同期要求への対応処理の流れを示す図である。 サーバ20において実行されるGUIDの割当処理の流れを示す図である。 サーバ20において実行される衝突および重複の検知処理の流れを示す図である。 第2の実施形態に係る同期情報42への対応処理の流れを示す図である。 クライアント10において実行されるGUIDの割当処理 第2の実施形態に係るダウンロード情報44への対応処理の流れを示す図である。 クライアント10において実行される衝突解消処理の流れを示す図である。 クライアント10において実行される重複解消処理の流れを示す図である。 解消要求45に対応する処理の流れを示す図である。 解消結果情報46に対応する処理の流れを示す図である。 第3の実施形態に係るクライアント10のソフトウェア構成を示す図である。 第3の実施形態に係るレンジ指定情報記憶部132の構成例を示す図である。 第3の実施形態に係るクライアント変更履歴記憶部133に記憶されるクライアント変更履歴の一例を示す図である。 第3の実施形態に係るサーバ20のソフトウェア構成を示す図である。 第3の実施形態に係るサーバ変更履歴記憶部231に記憶されるサーバ変更情報の構成例を示す図である。 第3の実施形態に係る同期要求41の構成例を示す図である。 第3の実施形態に係るレンジ情報の作成処理の流れを示す図である。 第3の実施形態に係る同期要求41への対応処理の流れを示す図である。
==全体構成==
図1は、本発明の一実施形態に係る通信システムの全体構成を示す図である。本実施形態の通信システムは、クライアント10およびサーバ20を含んで構成される。クライアント10およびサーバ20はそれぞれ通信ネットワーク30に接続されており、クライアント10およびサーバ20は通信ネットワーク30を介して通信可能になっている。本実施形態の通信システムは、サーバ20とクライアント10との間のデータの同期を行うものであり、クライアント10のユーザが興味を持っているデータのみが同期される。本実施形態において、ユーザが興味を持っているデータとは、データをある条件に従って選択し、選択されたデータを、ある条件に従ってソートした場合における、ソートされた一連のデータの一部分である。以下、データを選択するための条件を「フィルタ条件」といい、データをソートするための規則を「ソート規則」という。また、ソートされた一連のデータにおける上記一部分を示す範囲を「興味範囲」という。
サーバ20は、例えば、パーソナルコンピュータやワークステーションなどのコンピュータである。サーバ20は、データを記憶するデータベースを備える(以下、サーバ20が備えるデータベースを「サーバデータベース21」という。本発明の「第1データベース」に該当する。)。サーバ20が管理するデータは、例えば、写真などの画像データや、電話帳などのデータなどである。クライアント10は、例えば、携帯電話端末やPDA(Personal Data Assistant)、パーソナルコンピュータなどのコンピュータである。クライアント10も、データを記憶するデータベースを備えている(以下、クライアントが備えるデータベースを「クライアントデータベース11」という。本発明の「第2データベース」に該当する。)。クライアントデータベース11とサーバデータベース21とが同期される。
本実施形態では、各データには、更新された時点(以下、「更新時点」という。データが新しく作成されたときにも、作成された時点が更新時点にも設定されるものとする。)が付帯され、データの新古は更新時点の比較により行うものとする。本実施形態において、データの作成や更新、削除などがなされた時点とは、サーバ20におけるサーバデータベース21に対して行われたデータの変更(追加、更新および削除を含む。)が何番目であったかを表す値であるものとする。すなわち、サーバ20においては1時点につき1つのデータのみが変更の対象となるものとし、サーバ20において、サーバデータベース21に対するデータの変更が行われる度に、時点を表す値がインクリメントしていくものとする。
==ハードウェア構成==
図2は、クライアント10のハードウェア構成を示す図である。クライアント10は、CPU101、メモリ102、記憶装置103、通信インタフェース104、入力装置105、および出力装置106を備えている。
記憶装置103は、各種のデータやプログラムを記憶する、例えば、ハードディスクドライブやフラッシュメモリ、CD−ROMドライブなどである。CPU101は、記憶装置103に記憶されているプログラムをメモリ102に読み出して実行することにより各種の機能を実現する。通信インタフェース104は、通信ネットワーク30に接続するためのインタフェースである。通信インタフェース104は、例えば、イーサネット(登録商標)に接続するためのアダプタ、電話回線網に接続するためのモデム、無線通信網に接続するための無線通信器などである。入力装置105は、クライアント10を操作するユーザからデータの入力を受け付ける、例えば、キーパッドやタッチパネル、キーボード、マウスなどである。出力装置106は、データを出力する、例えば、ディスプレイやプリンタなどである。
図3は、サーバ20のハードウェア構成を示す図である。サーバ20は、CPU201、メモリ202、記憶装置203、通信インタフェース204、入力装置205、および出力装置206を備えている。
記憶装置203は、各種のデータやプログラムを記憶する、例えば、ハードディスクドライブやフラッシュメモリ、CD−ROMドライブなどである。CPU201は、記憶装置203に記憶されているプログラムをメモリ202に読み出して実行することにより各種の機能を実現する。通信インタフェース204は、通信ネットワーク30に接続するためのインタフェースである。通信インタフェース204は、例えば、イーサネット(登録商標)に接続するためのアダプタ、電話回線網に接続するためのモデム、無線通信網に接続するための無線通信器などである。入力装置205は、サーバ20を操作するユーザからデータの入力を受け付ける、例えば、キーボードやマウスなどである。出力装置206は、データを出力する、例えば、ディスプレイやプリンタなどである。
==第1の実施形態==
以下、第1の実施形態について説明する。第1の実施形態では、クライアント10においてデータの更新が行われないものとする。また、第1の実施形態では、サーバ20において管理されるデータは大量であり、その全てをクライアント10にダウンロードすることはできないものとする。
第1の実施形態では、クライアント10が、サーバ20からサーバ20において追加、変更、または削除されたデータに関する情報を取得し、その中から必要なデータを選択的にダウンロードするようにしている。すなわち、サーバ20では、クライアント10における同期の状況に関する管理を行う必要がないようにしている。
==クライアント10のソフトウェア構成==
図4は、第1の実施形態に係るクライアント10のソフトウェア構成を示す図である。同図に示すように、クライアント10は、クライアントデータベース11、フィルタ選択部111、同期要求送信部112、同期情報受信部113、削除処理部114、ダウンロード決定部115、レンジ指定情報更新部116、ダウンロード要求送信部117、ダウンロード情報受信部118、更新処理部119、クライアントID記憶部131、レンジ指定情報記憶部132を備えている。なお、フィルタ選択部111、同期要求送信部112、同期情報受信部113、削除処理部114、ダウンロード決定部115、レンジ指定情報更新部116、ダウンロード要求送信部117、ダウンロード情報受信部118、更新処理部119は、クライアント10が備えるCPU101が記憶装置103に記憶されているプログラムをメモリ102に読み出して実行することにより実現される。また、クライアントデータベース11、クライアントID記憶部131、レンジ指定情報記憶部132は、クライアント10が備えるメモリ102や記憶装置103が提供する記憶領域として実現される。クライアントデータベース11は、クライアント10とは異なるコンピュータ(データベースサーバ)により提供されるようにしてもよい。この場合、クライアント10は、例えば、通信ネットワーク30を介してデータベースサーバにアクセス可能に接続されるようにする。
クライアントデータベース11は、サーバ20から取得したデータを記憶する。図5は、クライアントデータベース11に記憶されるデータ(以下、「クライアントレコード」ともいう。)の構成例を示す図である。クライアントレコードには、GUID(Globally Unique IDentifier)、更新時点、キー、カラム、ヒント、およびデータの本体が含まれている。
GUID(本発明の「データID」および「グローバルID」に該当する。)は、サーバ20によりデータに割り当てられる識別情報であり、本実施形態の通信システムにおいて一意な番号である。更新時点は、サーバ20においてデータが最後に更新された時点を示す。キーは、クライアントレコードの重複を判定するためのデータであり、データ本体に基づいて作成される。
キーは、例えば、データ本体がアドレス帳のデータである場合には、電話番号や氏名などの文字列を連結して作成することができ、データ本体が電子メールのデータである場合には、電子メールの名宛人(To)、差出人(From)、日付(Date)、および件名(Subject)に設定されている文字列を連結して作成することができる。
カラムは、データがフィルタ条件を満たすか否かを判定するために用いるものであり、データ本体の一部である。ヒントは、サーバ20からデータをダウンロードするか否かを決定するための情報である。本実施形態では、ヒントには、データの重要度が含まれているものとするが、例えば、データ本体がアドレス帳のデータである場合には氏名とし、データ本体が電子メールのデータである場合には、電子メールの件名と差出人の文字列を結合したものとして、ユーザがデータの内容を把握することができるようにする。また、ヒントには、例えば、データの重要度やカテゴリ、データサイズ、データ内容の要約など各種のメタデータを含めることもできる。
クライアントID記憶部131は、クライアント10の識別情報(以下、「クライアントID」という。)を記憶する。本実施形態では、クライアントID記憶部131には、予めクライアントIDが記憶されているものとする。
レンジ指定情報記憶部132は、フィルタ条件ごとに、興味範囲に含まれるデータを指定する情報(以下、「レンジ指定情報」という。)を記憶する。図6は、レンジ指定情報記憶部132の構成例を示す図である。同図に示すように、レンジ指定情報には、データ項目、基準IDおよびデータ数が含まれる。データ項目はソート規則を示す。本実施形態では、データのソートは、データを所定の項目の順に並べることにより行うものとし、この項目を示すのがデータ項目である。なお、データ項目が同じ値である場合には、GUIDの順にソートするものとする。これにより、データ項目が同じ値であるデータが複数ある場合にも、クライアント10およびサーバ20においてソートされたデータの順番が異なることを防ぐことができる。基準IDは、興味範囲を決定するための基準となるデータ(以下、「基準データ」という。)のGUIDである。本実施形態では、ソートされたデータにおいて、基準データと、基準データに後続する所定数のデータとを含む範囲を興味範囲としている。データ数は、興味範囲に含まれるデータの数である。したがって、基準データに後続するデータの数は、データ数から1を減じた数となる。図6の例に示すように、レンジ指定情報のデータ項目が「名前」であり、基準IDが「0001」であり、データ数が「9」である場合、データを「名前」順(例えば、文字コード順)にソートし、ソートされた一連のデータのうち、GUIDが「0001」であるデータを基準データとして、この基準データおよび基準データに後続する8つのデータを含む「9」つのデータが興味範囲に含まれるデータとなる。なお、データ項目には複数の項目が含まれていてもよい。データ項目には昇順降順を指定するようにしてもよい。例えば、順序の指定を省略すると昇順にソートし、データ項目に「DESC」の文字列が併記された場合には降順にソートするようにすることができる。
フィルタ選択部111は、サーバ20からデータを取得する際に用いるフィルタ条件をレンジ指定情報記憶部132から選択する。フィルタ選択部111は、例えば、レンジ指定情報記憶部132に記憶されているフィルタ条件を一覧出力して、ユーザからフィルタ条件の指定を受け付けるようにしてもよいし、入力装置105を介してユーザからフィルタ条件の入力を受け付けるようにしてもよい。
同期要求送信部112は、同期を行うためのコマンド(以下、「同期要求41」という。)をサーバ20に送信する。図7は、同期要求41の構成例を示す図である。同期要求41には、クライアントID、フィルタ条件、レンジ指定情報およびクライアントレンジ情報が設定される。クライアントレンジ情報は、クライアントデータベース11から、レンジ指定情報が示す興味範囲に含まれるデータのGUIDおよび更新時点を読み出したものである。同期要求送信部112は、クライアントID記憶部131に記憶されているクライアントIDを同期要求41に設定し、フィルタ選択部111が選択したフィルタ条件(以下、「選択フィルタ条件」という。)を同期要求41に設定し、レンジ指定情報の入力を受け付けて同期要求41に設定する。また、同期要求送信部112は、レンジ指定情報が示す興味範囲に含まれるクライアントレコードのGUIDおよび更新時点をクライアントレンジ情報として同期要求41に設定し、上記同期要求41をサーバ20に送信する。なお、同期要求送信部112による同期要求41の作成処理の詳細については後述する。
同期情報受信部113は、同期要求41に応じてサーバ20から送信される、サーバ20との間でデータを同期するために必要な情報(以下、「同期情報」という。)をサーバ20から受信する。図8は、同期情報42の構成例を示す図である。同期情報42には、サーバレンジ情報およびレンジダウンロード情報が含まれる。サーバレンジ情報は、サーバ20において興味範囲に含まれるデータのGUIDおよび更新時点の一覧である。レンジダウンロード情報は、クライアント10において興味範囲に含まれていたデータ、すなわち、クライアントレンジ情報に対応するデータのうち、サーバ20において更新されていたものについての、更新後のデータである。なお、クライアントレンジ情報が示すデータがサーバ20において削除されていた場合には、レンジダウンロード情報の削除フラグに「真」が設定され、キーやカラム、ヒント、本体などは設定されない。
削除処理部114は、クライアントデータベース11からデータの削除を行う。削除処理部114は、同期情報42に含まれるレンジダウンロード情報のうち、削除フラグが「真」であるもののそれぞれについて、GUIDに対応するデータをクライアントデータベース11から削除する。なお、削除処理部114による削除処理の詳細については後述する。
ダウンロード決定部115は、サーバ20から取得(ダウンロード)すべきデータを決定する。第1の実施形態では、ダウンロード決定部115は、同期情報42に含まれるサーバレンジ情報のうち必要なものをダウンロードすべきデータとして決定する。ダウンロードすべきデータとは、前回の同期時よりも後に、サーバ20において更新されたデータ(以下、「更新データ」ともいう。)や新しく追加されたデータ(以下、「追加データ」ともいう。)であって、フィルタ条件にマッチし、レンジ指定情報が示す興味範囲に含まれるようになったもの(更新や追加によりフィルタ条件にマッチし、あるいは興味範囲に含まれるようになったことを「フィルタイン」という。)の全てまたは一部である。例えば、ダウンロード決定部115は、サーバレンジ情報のうち、サーバレンジ情報の更新時点と、サーバレンジ情報のGUIDに対応するクライアントレコードの更新時点とを比較して、サーバレンジ情報の更新時点の方が新しいもの(すなわち、更新データを示すもの)や、サーバレンジ情報のGUIDに対応するクライアントレコードがクライアントデータベース11に登録されていないものをダウンロードすべきデータとして決定することができる。なお、ダウンロード決定部115は、サーバレンジ情報のヒントを表示し、ユーザからダウンロードすべきデータの指定を受け付けるようにしてもよい。また、ダウンロード決定部115は、ヒントにデータサイズが含まれている場合には、クライアントデータベース11の記憶容量を越えない量のデータをダウンロードすべきデータとして決定することもできる。
さらに、ダウンロード決定部115は、クライアントデータベース11に登録されているが、サーバ20においてはフィルタ条件にマッチしないデータ(更新されたことによりフィルタ条件にマッチしなくなったことを「フィルタアウト」という。)の一部または全部をダウンロードすべきデータに含めてもよい。この場合、ダウンロード決定部115は、クライアントデータベース11からフィルタ条件にマッチするデータを検索し、検索したデータのうち、GUIDが同期情報42のサーバレンジ情報含まれていないものをフィルタアウトされたデータであると判定することができる。
ダウンロード要求送信部117は、サーバ20からデータを取得するためのコマンド(以下、「ダウンロード要求」という。)をサーバ20に送信する。図9は、ダウンロード要求43の構成例を示す図である。ダウンロード要求43には、ダウンロード決定部115が決定したデータのGUIDを含む情報(以下、「取得情報」という。)が設定される。
ダウンロード情報受信部118は、ダウンロード要求43に応じてサーバ20から送信される、取得情報に対応するデータを含む情報(以下、「ダウンロード情報」という。)を受信する。図10は、ダウンロード情報の構成例を示す図である。ダウンロード情報には、取得ダウンロード情報が含まれる。取得ダウンロード情報は、取得情報に対応するデータを含む情報である。取得ダウンロード情報には、GUID、更新時点、削除フラグ、キー、カラム、ヒントおよび本体が含まれる。取得情報に含まれるGUIDに対応するデータがサーバ20において削除されていた場合、削除フラグには真が設定され、キー、カラム、ヒントおよび本体は省略される。
更新処理部119は、ダウンロード情報に応じてクライアントデータベース11を更新する。更新処理部119は、ダウンロード情報に含まれている取得ダウンロード情報のそれぞれについて、削除フラグが「偽」であれば、取得ダウンロード情報に含まれているGUIDに対応付けて、更新時点、キー、カラム、ヒント、本体をクライアントデータベース11に登録する。なお、削除フラグが「真」である場合には、削除処理部114により、GUIDに対応するデータをクライアントデータベース11から削除される。更新処理部119による更新処理の詳細については後述する。
==サーバ20のソフトウェア構成==
図11は、サーバ20のソフトウェア構成を示す図である。サーバ20は、GUID生成部210、時点生成部211、データベース変更部212、同期要求受信部213、ダウンロードデータ取得部214、サーバレンジ情報取得部215、同期情報送信部216、ダウンロード要求受信部217、ダウンロード情報送信部218、サーバデータベース21を備えている。
なお、GUID生成部210、時点生成部211、およびデータベース変更部212は、同期要求受信部213、ダウンロードデータ取得部214、サーバレンジ情報取得部215、同期情報送信部216、ダウンロード要求受信部217、ダウンロード情報送信部218は、サーバ20が備えるCPU201が記憶装置203に記憶されているプログラムをメモリ202に読み出して実行することにより実現される。また、サーバデータベース21は、サーバ20が備えるメモリ202や記憶装置203が提供する記憶領域として実現される。サーバデータベース21は、サーバ20とは異なるコンピュータ(データベースサーバ)により提供されるようにしてもよい。この場合、サーバ20は通信ネットワーク30を介してデータベースサーバにアクセス可能に接続されるようにする。
サーバデータベース21は、同期の対象となるデータ(以下、「サーバレコード」という。)を記憶する。図12は、サーバデータベース21に記憶されるサーバレコードの構成例を示す図である。サーバレコードには、データを識別するGUID、データの作成時点、データの更新時点、キー、カラム、ヒント、並びにデータの本体が含まれる。
GUID生成部210は、GUIDを割り当てる。GUID生成部210は、例えば、サーバデータベース21に新規にサーバレコードが登録される場合に、そのサーバレコードを識別するGUIDを割り当てる。
時点生成部211は、サーバ20における現在時点を生成する。本実施形態は、時点生成部211は、サーバデータベース21に対するデータの変更が行われるごとにインクリメントされるシリアル値を時点として生成するものとする。
データベース変更部212は、サーバデータベース21に対するデータの変更を行う。
データベース変更部212は、サーバデータベース21にサーバレコードを追加する場合、時点生成部211が生成する時点を作成時点および更新時点のそれぞれに設定してサーバレコードをサーバデータベース21に追加する。また、データベース変更部212は、サーバデータベース21に記憶されているサーバレコードを更新した場合には、時点生成部211が生成する時点をサーバレコードの更新時点に設定する。
同期要求受信部213は、クライアント10から送信される同期要求41を受信する。
ダウンロードデータ取得部214は、クライアント10に送信するデータ(以下、「ダウンロードデータ」ともいう。)を取得する。ダウンロードデータ取得部214は、同期要求41に含まれているクライアントレンジ情報のGUID、およびダウンロード要求43に含まれている取得情報のGUIDに対応するサーバレコードをサーバデータベース21から検索し、検索したサーバレコードに基づいてレンジダウンロード情報、および取得ダウンロード情報を作成する。一方、クライアントレンジ情報のGUIDや取得情報のGUIDに対応するサーバレコードがサーバデータベース21に記憶されていなかった場合には、ダウンロードデータ取得部214は、GUIDと「真」の削除フラグとを設定したレンジダウンロード情報や取得ダウンロード情報を作成する。
サーバレンジ情報取得部215は、同期要求41に含まれているフィルタ条件およびレンジ指定情報に基づいて、サーバ20において興味範囲に含まれるサーバレコードのGUIDおよび更新時点を含むサーバレンジ情報を作成する。
同期情報送信部216は、サーバレンジ情報およびレンジダウンロード情報を含む同期情報42を作成し、作成した同期情報42をクライアント10に送信する。
ダウンロード要求受信部217は、クライアント10から送信されるダウンロード要求43を受信する。
ダウンロード情報送信部218は、取得ダウンロード情報を含むダウンロード情報を作成し、作成したダウンロード情報をクライアント10に送信する。
==同期処理の全体像==
図13は、第1の実施形態に係る通信システムにおいて実行される、データの同期処理の流れを説明する図である。
クライアント10は同期要求41を作成し(S31)、作成した同期要求41をサーバ20に送信する(S32)。サーバ20は、同期要求41を受信すると、サーバレンジ情報およびレンジダウンロード情報を含む同期情報42を作成し(S33)、作成した同期情報42をクライアント10に送信する(S34)。
クライアント10は同期情報42を受信すると、削除フラグが真であるデータをクライアントデータベース11から削除するとともに、ダウンロードすべきデータを示す取得情報と陳腐化情報とを含むダウンロード要求43を作成し(S35)、作成したダウンロード要求43をサーバ20に送信する(S36)。サーバ20は、ダウンロード要求43を受信すると、取得ダウンロード情報と陳腐化ダウンロード情報とを含むダウンロード情報を作成し(S37)、作成したダウンロード情報をクライアント10に送信する(S38)。
クライアント10は、ダウンロード情報に含まれている取得ダウンロード情報および陳腐化ダウンロード情報に応じて、クライアントデータベース11へのデータの登録または削除を行う(S39)。
以下、詳細について説明する。
==同期要求41の作成処理(S31)==
図14は、クライアント10において実行される同期要求41の作成処理の流れを示す図である。
まず、フィルタ選択部111は、フィルタ条件を選択する(S3101)。上述したように、フィルタ選択部111は、例えば、ユーザからフィルタ条件の指定を受け付けることによりフィルタ条件を選択するようにしてもよいし、所定の条件にマッチするフィルタ条件を選択するようにしてもよい。また、フィルタ選択部111はユーザからレンジ指定情報の入力を受け付ける(S3102)。
フィルタ選択部111は、選択フィルタ条件に対応付けて、レンジ指定情報をレンジ指定情報記憶部132に登録する(S3103)。
次に、同期要求送信部112は、図15に示すレンジ情報の作成処理を行う(S3104)。すなわち、同期要求送信部112は、クライアントデータベース11から、選択フィルタ条件にマッチするクライアントレコードを検索し(S3121)、検索したクライアントレコードを、レンジ指定情報のデータ項目でソートする(S3122)。同期要求送信部112は、ソートしたクライアントレコードの中に、レンジ指定情報の基準IDに対応するクライアントレコードが存在すれば(S3123:YES)、対応するクライアントレコードを基準データとし(S3124)、存在しなければ(S3123:NO)、ソートしたクライアントレコードの先頭のデータを基準データとする(S3125)。同期要求送信部112は、ソートしたクライアントレコードにおいて、基準データからレンジ指定情報のデータ数分の個数のクライアントレコードのそれぞれについて、クライアントレコードのGUIDおよび更新時点を含むレンジ情報を作成する(S3126)。
同期要求送信部112は、クライアントID記憶部131からクライアントIDを読み出し(S3105)、クライアントID、選択フィルタ条件、レンジ指定情報、およびレンジ情報を含む同期要求41を作成する(S3106)。
以上のようにして同期要求41が作成される。作成された同期要求41は同期要求送信部112によりサーバ20に送信される。
==同期要求41の対応処理(S33)==
図16は、サーバ20において実行される同期要求41に対応する処理の流れを示す図である。
まず、サーバレンジ情報取得部215は、サーバデータベース21について、上述した図15に示すレンジ情報の作成処理を行う(S3301)。すなわち、サーバレンジ情報取得部215は、サーバデータベース21から、同期要求に含まれるフィルタ条件にマッチするサーバレコードを検索し(S3121)、検索したサーバレコードを、レンジ指定情報のデータ項目でソートする(S3122)。サーバレンジ情報取得部215は、ソートしたサーバレコードの中に、レンジ指定情報の基準IDに対応するサーバレコードが存在すれば(S3123:YES)、対応するサーバレコードを基準データとし(S3124)、存在しなければ(S3123:NO)、ソートしたサーバレコードの先頭のデータを基準データとする(S3125)。サーバレンジ情報取得部215は、ソートしたサーバレコードにおいて、基準データからレンジ指定情報のデータ数分の個数のサーバレコードのそれぞれについて、サーバレコードのGUIDおよび更新時点を含むレンジ情報を作成する(S3126)。
次に、同期情報送信部216は、レンジ情報をサーバレンジ情報として設定した同期情報42を作成する(S3302)。同期情報送信部216は、同期要求41に含まれているクライアントレンジ情報のそれぞれについて、次の処理を行う。すなわち、同期情報送信部216は、クライアントレンジ情報に含まれるGUIDに対応するサーバレコードをサーバデータベース21から検索し(S3303)、対応するサーバレコードがあれば(S3304:YES)、「偽」の削除フラグと、サーバレコードのGUID、更新時点、キー、カラム、ヒントおよび本体を含むレンジダウンロード情報を作成し(S3305)、上記対応するサーバレコードがない場合には(S3304:NO)、クライアントレンジ情報に含まれるGUIDと、「真」の削除フラグとを含むレンジダウンロード情報を作成し(S3306)、作成したレンジダウンロード情報を同期情報42に追加する(S3307)。
以上のようにして同期情報42が作成される。作成された同期情報42は、同期情報送信部216によりクライアント10に送信される。
==同期情報42の対応処理(S35)==
図17は、クライアント10において実行される同期情報42に対応する処理の流れを示す図である。
クライアント10では、同期情報42に含まれる各レンジダウンロード情報について、図18に示す適用処理が行われる(S3501)。すなわち、レンジダウンロード情報の削除フラグが「真」であれば(S3521:YES)、削除処理部114は、レンジダウンロード情報に含まれているGUIDに対応するクライアントレコードをクライアントデータベース11から削除し(S3522)、削除フラグが「偽」であれば(S3521:NO)、更新処理部119は、レンジダウンロード情報に含まれているGUID、キー、カラム、ヒントおよび本体を含むクライアントレコードを作成してクライアントデータベース11に登録する(S3523)。なお、GUIDが一致するデータがクライアントデータベース11にすでに登録されている場合には、当該データは上書きされるものとする。
次に、ダウンロード決定部115は、同期情報42に含まれているサーバレンジ情報に対応するデータのうち、ダウンロードすべきものを決定する(S3502)。上述したように、ダウンロード決定部115は、例えば、サーバレンジ情報に含まれているヒントを出力し、ダウンロードすべきデータをユーザに選択させるようにすることができる。ダウンロード決定部115は、決定したデータのそれぞれについて、データを示すGUIDを含む取得情報を生成し、生成した取得情報を含むダウンロード要求43を作成する(S3503)。
以上のようにしてダウンロード要求43が作成される。作成されたダウンロード要求43は、ダウンロード要求送信部117によりサーバ20に送信される。
==ダウンロード要求43の対応処理(S37)==
図19は、サーバ20において実行されるダウンロード要求43の対応処理の流れを説明する図である。
ダウンロードデータ取得部214は、空のダウンロード情報44を作成し(S3701)、ダウンロード要求43に含まれている各取得情報について以下の処理を行う。
ダウンロードデータ取得部214は、取得情報に含まれるGUIDに対応するサーバレコードをサーバデータベース21から検索し(S3702)、対応するサーバレコードが存在する場合には(S3703:YES)、検索したサーバレコードのGUID、更新時点、キー、カラム、ヒントおよび本体と、「偽」の削除フラグとを含む取得ダウンロード情報を作成してダウンロード情報44に追加する(S3704)。一方、取得情報のGUIDに対応するデータが存在しない場合は(S3703:NO)、ダウンロードデータ取得部214は、取得情報のGUIDと「真」の削除フラグとを含む取得ダウンロード情報を作成してダウンロード情報44に追加する(S3705)。
以上のようにしてダウンロード情報44が作成される。作成されたダウンロード情報44は、ダウンロード情報送信部218によりクライアント10に送信される。
==ダウンロード情報44の対応処理(S39)==
クライアント10では、ダウンロード情報受信部118がダウンロード情報44を受信すると、ダウンロード情報44に含まれる各取得ダウンロード情報について、図18に示す適用処理が行われる。すなわち、取得ダウンロード情報の削除フラグが「真」であれば(S3521:YES)、削除処理部114は、取得ダウンロード情報に含まれているGUIDに対応するクライアントレコードをクライアントデータベース11から削除し(S3522)、削除フラグが「偽」であれば(S3521:NO)、更新処理部119は、取得ダウンロード情報に含まれているGUID、キー、カラム、ヒントおよび本体を含むクライアントレコードを作成してクライアントデータベース11に登録する(S3523)。このようにして、ダウンロード情報に応じてクライアントデータベース11が更新される。
以上のようにして、選択フィルタにマッチするクライアントレコードとサーバレコードとの同期が行われる。
==第2の実施形態==
次に、第2の実施形態について説明する。第2の実施形態では、クライアント10においてもデータの更新が行われるものとする。したがって、クライアント10とサーバ20との両方で同じデータについて異なる内容の更新が行われる(このことは「衝突」と呼ばれる。)ことが起こり得る。データの衝突は、一般にサーバ20によって検知されるが、第2の実施形態では、クライアント10とサーバ20との両方で衝突を検知するようにしている。また、クライアント10とサーバ20との両方で異なるデータを更新したことにより、異なるデータが同一あるいは類似の内容になる(このことは「重複」と呼ばれる。)ことも起こり得る。第2の実施形態では、重複についても、クライアント10とサーバ20との両方で検出するようにしている。第2の実施形態では、キーが一致した場合に、重複が発生したと判定するものとする。
なお、以下の説明では、第1の実施形態との違いについて主に説明し、第1の実施形態と同じ部分については説明を省略する。
==クライアント10のソフトウェア構成==
図20は、第2の実施形態に係るクライアント10のソフトウェア構成を示す図である。第2の実施形態に係るクライアント10は、上述した第1の実施形態に係るクライアント10に加えて、クライアント変更検知部110、衝突重複解消決定部120、解消要求送信部121、解消結果情報受信部122、解消処理部123、クライアント変更履歴記憶部133、未取得ID記憶部134、未検証記憶部135、重複記憶部136、衝突記憶部137を備えている。なお、クライアント変更検知部110、衝突重複解消決定部120、解消要求送信部121、解消結果情報受信部122、および解消処理部123は、クライアント10が備えるCPU101が記憶装置103に記憶されているプログラムをメモリ102に読み出して実行することにより実現される。また、クライアント変更履歴記憶部133、未取得ID記憶部134、未検証記憶部135、重複記憶部136、衝突記憶部137は、クライアント10が備えるメモリ102や記憶装置103が提供する記憶領域として実現される。
図21は、第2の実施形態に係るクライアントデータベース11が記憶するクライアントレコードの構成例を示す図である。同図に示すように、第2の実施形態に係るクライアントレコードには、第1の実施形態に係るクライアントレコードに加えて、LUID(Local Unique IDentifier)が含まれている。LUIDは、クライアント10においてデータに割り当てられる識別情報であり、クライアント10において一意な値である。第2の実施形態では、データのGUIDはサーバ20が割り当てるものとする。これにより、クライアント10においてデータが作成されたときには、GUIDはまだ割り当てられておらず、この時点でデータを識別するために割り当てられるのがLUIDである。LUIDとGUIDとの対応付け(マッピング)は、同期要求41および同期情報42のやり取りにより行われる。
クライアント変更履歴記憶部133は、クライアントデータベース11に対する変更履歴(以下、「クライアント変更履歴」という。)を記憶する。クライアント変更履歴記憶部133には、クライアント10において行われたクライアントデータベース11に対する全ての変更についてのクライアント変更履歴が記憶されるものとする。
図22は、クライアント変更履歴記憶部133に記憶されるクライアント変更情報の構成例を示す図である。クライアント変更情報には、検知した変更の種別(以下、「変更種別」という。)、変更の対象となったデータを示すLUIDおよびGUID、削除フラグ、更新時点、変更が行われる前のカラム(以下、「旧カラム」ともいう。)、変更が行われた後のカラム(以下、「現カラム」ともいう。)、キー、並びにヒントが含まれる。変更種別は、「追加」「更新」または「削除」のいずれかであるものとする。削除フラグには、変更種別が「削除」である場合に「真」が設定され、その他の変更種別のときには「偽」が設定される。
未取得ID記憶部134は、GUIDが割り当てられていないLUID(以下、「未取得ID」という。)を記憶する。未取得ID記憶部134には、クライアントデータベース11に新しいデータが追加された際に、そのデータに割り当てられたLUIDが登録される。
未検証記憶部135は、そのデータと重複するデータが存在するか否かの判定を行っていないデータを示すGUIDを記憶する。本実施形態では、クライアント10においてデータが変更された場合に、サーバ20において重複が発生するか否かを問い合わせることはせずに、後述するように、重複はサーバ20との間のデータの同期時に判定される。そこで、データが変更された場合には、そのデータのGUIDがデータの変更時から同期時まで未検証記憶部135に登録される。
重複記憶部136は、2つの重複するデータを管理する。図23は、重複記憶部136の構成例を示す図である。重複記憶部136には、第1のデータを示すLUID1およびGUID1と、第1のデータと重複する第2のデータを示すLUID2およびGUID2とが対応付けて登録される。
衝突記憶部137は、衝突するデータを示すGUIDを記憶する。
クライアント変更検知部110は、クライアントデータベース11に対するデータの変更を検知し、検知に応じてクライアント変更履歴を作成してクライアント変更履歴記憶部133に登録する。図24は、クライアント変更検知部110による処理の流れを示す図である。クライアント変更検知部110は、クライアントデータベース11に対するデータの変更を検知した場合、変更が追加または更新である場合には、追加または更新がなされたデータ(以下、「新データ」という。)を取得し、操作が削除または更新である場合には、削除または更新がなされたデータ(以下、「旧データ」という。)を取得して、図24に示す処理を行う。なお、変更が追加である場合には、新データを旧データとして取り扱うものとする。
クライアント変更検知部110は、変更が追加である場合(S401:YES)、新データにLUIDを割り当て(S402)、未取得ID記憶部134に、割り当てたLUIDを登録する(S403)。一方、変更が更新または削除である場合には(S401:NO)、クライアント変更検知部110は、新データからLUIDおよびGUIDを取得する(S404)。
クライアント変更検知部110は、変更が追加または更新である場合(S405:YES)、新データの本体に基づいてキーを作成して新キーとし(S406)、重複の判定処理を行う(S407)。
最後に、クライアント変更検知部110は、クライアント変更情報を登録する変更履歴登録処理を行う(S408)。
図25は、上記図24のステップS407に示す重複判定処理の流れを示す図である。重複判定処理では、クライアント変更検知部110は、クライアントデータベース11に記憶されている全てのデータについて以下の処理を行う。
クライアント変更検知部110は、クライアントレコードのキーが新キー一致しなければ(S321:NO)、未検証記憶部135にGUIDを登録する(S322)。
一方、クライアントレコードのキーが新キーと一致する場合(S321:YES)、クライアント変更検知部110は、新レコードのGUIDおよびLUIDと、クライアントレコードのGUIDおよびLUIDとを対応付けて重複記憶部136に登録する(S323)。クライアント変更検知部110は、新レコードのGUIDが未検証記憶部135に登録されている場合には(S324:YES)、未検証記憶部135から新レコードのGUIDを削除する(S325)。
図26は、上記図24のステップS408に示す変更履歴登録処理の流れを示す図である。
クライアント変更検知部110は、クライアント変更履歴記憶部133から、新データのLUIDまたはGUIDと一致する変更履歴を検索する(S441)。一致するクライアント変更履歴が存在しなければ(S442:NO)、クライアント変更検知部110は、変更種別、新データのLUID、GUID、更新時点およびカラム、旧データのカラム、並びに新キーを含むクライアント変更履歴を作成してクライアント変更履歴記憶部133に登録する(S443)。
一方、上記変更履歴が存在する場合には(S442:YES)、クライアント変更検知部110は、当該変更が追加または更新であれば(S444:NO)、検索したクライアント変更履歴の変更種別を、当該変更を示す変更種別(追加または更新)に変更し(S445)、検索したクライアント変更情報の現カラムに新データのカラムを設定し(S446)、検索したクライアント変更履歴のキーに新キーを設定する(S347)。後述するように、サーバ20とクライアント10との間のデータの同期は、クライアント変更履歴に従って行われるため、このようにまだサーバ20との間で同期がなされていない段階で再度更新等があった場合には、既存のクライアント変更履歴を更新することにより、同期処理の効率を上げることができる。
変更が削除である場合(S444:YES)、クライアント変更検知部110は、新データのGUIDが設定されていなければ、すなわち新データのGUIDがnullであれば(S448:YES)、検索したクライアント変更情報をクライアント変更履歴記憶部133から削除する(S449)。つまり、クライアント10においてデータが作成された後、サーバ20にアップロードされる前に削除された場合には、クライアント変更情報を削除することにより、無駄な同期がなされないようにしている。
新データにGUIDが設定されている場合、すなわち新レコードのGUIDがnullでない場合には(S448:NO)、検索したクライアント変更履歴の変更種別に削除を設定し(S450)、検索したクライアント変更履歴の削除フラグを「真」に設定する(S451)。
以上のようにして、クライアント変更検知部110は、クライアントデータベース11に対するデータの変更を検知すると、クライアント変更情報を登録する。
次に、第2の実施形態において同期要求送信部112が送信する同期要求41の構成例を図27に示す。第2の実施形態に係る同期要求には、上述した図7に示す第1の実施形態に係る同期要求41に加えて、未取得IDが含まれる。また、第2の実施形態に係るクライアントレンジ情報には、第1の実施形態に係るクライアントレンジ情報に加えて、LUID、キーおよび削除フラグが含まれ同期要求送信部112は、未取得ID記憶部134に記憶されている未取得IDを同期要求に設定する。また、クライアントレンジ情報は、第1の実施形態と同様に、興味範囲に含まれているクライアントレコードに基づいて作成されるとともに、さらに、クライアント変更履歴に基づいても作成される。なお、第2の実施形態に係る同期要求41の作成処理については後述する。
図28は、第2の実施形態において同期情報受信部113が受信する同期情報42の構成例を示す図である。第2の実施形態に係る同期情報42には、上述した図8に示す第1の実施形態に係る同期情報42に加えて、割当情報が含まれる。割当情報は、未取得IDに対してサーバ20が割り当てたGUIDを含む情報である。割当情報には、LUID、GUID、更新時点、ステータスが含まれる。更新時点は、LUIDに対応するGUIDが既にサーバ20で割り当てられていた場合の、データの更新時点である。サーバ20に未取得IDに対応するデータが記憶されていない場合には更新時点は設定されない。ステータスは、未取得IDに対応するGUIDが既にサーバ20に存在するか否かを示す情報である。また、第2の実施形態に係るサーバレンジ情報には、第1の実施形態に係るサーバレンジ情報に加えて、キーおよび削除フラグが含まれる。
また、第2の実施形態では、同期情報42に含まれるサーバレンジ情報は、後述するように、サーバ20において興味範囲に含まれるデータに加えて、クライアント10とサーバ20との間で衝突または重複しているデータに関しても追加される。
衝突重複解消決定部120は、ダウンロード情報44に含まれるGUIDが示すデータが衝突または重複する場合に、当該データをサーバ20に送信するか否かを決定する。本実施形態では、衝突重複解消決定部120は、ダウンロード情報44に含まれるGUIDが、クライアント変更履歴記憶部133、重複記憶部136または衝突記憶部137に記憶されているか否かにより、衝突または重複が発生しているか否かを判定し、衝突または重複が発生していると判定した場合に、ユーザに、クライアントレコードかサーバレコードのいずれかを選択させるようにする。なお、衝突重複解消決定部120は、例えば、クライアントレコードを常に優先するようにして、無条件にクライアントレコードを選択するようにしてもよいし、任意のアルゴリズムを適用して自動的に選択するようにしてもよい。
解消要求送信部121は、衝突または重複が発生したデータを解消するように指示するコマンド(以下、「解消要求」という。)をサーバ20に送信する。図29は、解消要求45の構成例を示す図である。解消要求45には、クライアントIDと、衝突重複解消決定部120が選択したクライアントレコードまたはサーバレコードのLUID、GUID、更新時点、削除フラグ、キー、カラム、ヒントおよび本体が設定された解消情報とが含まれる。
解消結果情報受信部122は、解消要求に応じてサーバ20から送信される、衝突または重複の解消処理の結果を示す情報(以下、「解消結果情報」という。)を受信する。図30は、解消結果情報46の構成例を示す図である。解消結果情報46には、重複情報と結果情報とが含まれる。重複情報は、解消要求45に含まれる解消情報が示すデータについて、サーバ20において重複が発生した場合に設定される。重複情報には、サーバ20において重複したデータのGUID、更新時点、キーが設定される。結果情報は、解消要求45に応じてサーバデータベース21の更新を行った処理の結果を表す情報であり、LUID、GUID、更新時点、削除フラグおよびステータスを含む。
解消処理部123は、解消結果情報46に応じてクライアントデータベース11の更新を行う。なお、解消処理部123の処理の詳細については後述する。
==サーバ20のソフトウェア構成==
図31は、第2の実施形態に係るサーバ20のソフトウェア構成を示す図である。第2の実施形態に係るサーバ20は、第1の実施形態に係るサーバ20に加えて、解消要求受信部219、解消処理部220、解消結果情報送信部221を備えている。なお、解消要求受信部219、解消処理部220、解消結果情報送信部221は、サーバ20が備えるCPU201が記憶装置203に記憶されているプログラムをメモリ202に読み出して実行することにより実現される。
図32は、第2の実施形態に係るサーバデータベース21が記憶するサーバレコードの構成例を示す図である。同図に示すように、第2の実施形態に係るサーバレコードには、第1の実施形態に係るサーバレコードに加えて、LUIDおよび作成者IDが含まれている。LUIDは、クライアント10においてデータに割り当てられる識別情報であり、クライアント10において一意な番号である。後述するように、第2の実施形態では、データのGUIDはサーバ20が割り当てるため、クライアント10においてデータが作成されたときには、GUIDはまだ割り当てられておらず、この時点でデータを識別するために割り当てられるのがLUIDである。LUIDとGUIDとの対応付け(マッピング)は、同期要求41および同期情報42のやり取りにより行われる。作成者IDは、データを最初に作成したクライアント10のクライアントIDであり、サーバレコードの追加時に設定される。
解消要求受信部219は、クライアント10から解消要求45を受信する。
解消処理部220は、解消要求45に応じてサーバデータベース21を更新する。なお、解消処理部220により実行される解消処理の詳細については後述する。
解消結果情報送信部221は、解消処理部220による解消処理の結果を示す解消結果情報を作成してクライアント10に送信する。なお、解消結果情報送信部221による解消結果情報の生成処理の詳細については後述する。
==同期処理の全体像==
図33は、第2の実施形態に係る通信システムにおいて実行される、データの同期処理の流れを説明する図である。第2の実施形態に係るデータの同期処理では、上述した図13に示す第1の実施形態に係る同期処理に加えて、ステップS51〜S58が行われる。すなわち、クライアント10は、ダウンロード情報44に対応する処理(S39)を行った後、解消要求45をサーバ20に送信し(S51)、サーバ20は、解消要求45に応じてサーバデータベース21を更新し(S52)、更新の結果を示す結果情報と、更新の際に発生した重複に関する重複情報とを含む解消結果情報46をクライアント10に送信する(S53)。クライアント10は、解消結果情報46に応じてさらにダウンロードすべきデータを決定する処理を行い(S54)、ダウンロードすべきデータのGUIDを設定した取得情報を含むダウンロード要求43をサーバ20に送信する(S55)。サーバ20は、ダウンロード要求43に応じて、指定されているデータをサーバデータベース21から読み出し(S56)、読み出したデータを設定したダウンロード情報44をクライアント10に送信する(S57)。クライアント10は、ダウンロード情報44に含まれているデータをクライアントデータベース11に登録する(S58)。
==同期要求送信処理(S31)==
図34は、第2の実施形態に係るステップS31における同期要求の作成処理の流れを示す図であり、図35は、第2の実施形態に係るレンジ情報の作成処理の流れを示す図である。第2の実施形態に係る図35の処理では、ステップS3126において、データのGUIDおよび更新時点に加えて、データのLUIDおよびキー、並びに「偽」の削除フラグを含むレンジ情報を作成する。また、第2の実施形態に係る図34の処理では、上述した図14の処理に加えて、ステップS3106に続き、同期要求送信部112は、選択フィルタ条件にマッチするクライアント変更履歴をクライアント変更履歴記憶部133から検索し(S3107)、検索したクライアント変更履歴のLUID、GUID、更新時点、キーおよび削除フラグを含むクライアントレンジ情報を同期要求41に追加する(S3108)。さらに、同期要求送信部112は、未取得ID記憶部134に記憶されている未取得IDを読み出して同期要求41に設定する(S3109)。
更新情報と未取得IDとにより、サーバ20側ではクライアント10で行われたデータの更新を把握することが可能となる。
==同期要求に対応する処理(S33)==
図36は、第2の実施形態に係るステップS33における同期要求への対応処理の流れを示す図である。第2の実施形態に係る図36の処理では、第1の実施形態に係る図16の処理に加えて、各クライアントレンジ情報についてのステップS3303〜S3307の処理に続き、同期情報送信部216は、図37に示すGUIDの割当処理を行い(S3308)、図38に示す衝突および重複の検知処理を行う(S3309)。
図37に示すGUIDの割当処理では、同期情報送信部216は、同期要求41に含まれる各未取得IDについて、以下の処理を行う。
同期情報送信部216は、LUIDが未取得IDと一致し、かつ、作成者がクライアントIDと一致するサーバレコードをサーバデータベース21から検索し(S3321)、マッチするサーバレコードが存在する場合(S3322:YES)、サーバレコードのGUIDをGとし(S3323)、サーバレコードの更新時点をTとし(S3324)、ステータスを「存在」とする(S3325)。
一方、未取得IDにマッチするサーバレコードが存在しない場合(S3322:NO)、同期情報送信部216は、GUID生成部210生成する新たなGUIDをGとし(S3326)、時点生成部211が生成する新たな時点をTとし(S3327)、ステータスを「不存在」とする(S3328)。
同期情報送信部216は、LUID、G、Tおよびステータスを含む割当情報を同期情報42に追加する(S3329)。
以上の処理が各未取得IDについて繰り返され、未取得IDに対応するGUIDが割当情報として同期情報42に設定される。
図38に示す衝突重複の検知処理では、同期要求41に設定されたクライアントレンジ情報のそれぞれについて以下の処理が行われる。
サーバレンジ情報取得部215は、クライアントレンジ情報にGUIDが設定されている場合(S3341:NO)、クライアントレンジ情報のGUIDに対応するサーバレコードをサーバデータベース21から検索し(S3342)、対応するサーバレコードが存在しなければ(S3343:NO)、GUIDおよび「真」の削除フラグを含むサーバレンジ情報を作成して同期情報42に追加する(S3344)。
クライアントレンジ情報のGUIDに対応するサーバレコードが存在する場合(S3343:YES)、サーバレンジ情報取得部215は、クライアントレンジ情報の更新時点と検索したサーバレコードの更新時点とが一致するか否かを判定し(S3345)、更新時点が一致しなければ(S3345:NO)、サーバレコードのGUID、更新時点、ヒントおよびキー、並びに「偽」の削除フラグを含むサーバレンジ情報を作成して同期情報42に追加する(S3346)。
一方、更新時点が一致した場合(S3345:YES)、クライアントレンジ情報の削除フラグが「真」であれば(S3347:YES)、GUIDに対応するサーバレコードをサーバデータベース21から削除する(S3348)。削除フラグが「偽」であれば(S3347:NO)、サーバレンジ情報取得部215は、クライアントレンジ情報に含まれるキーと一致するサーバレコードをサーバデータベース21から検索し(S3349)、キーと一致するサーバレコードがあれば(S3350:YES)、サーバレコードのGUID、更新時点、ヒントおよびキー並びに「偽」の削除フラグを含むサーバレンジ情報を作成して同期情報42に追加する(S3351)。
以上の処理を同期要求42に含まれる各クライアントレンジ情報について行うことにより、衝突または重複したデータについてのサーバレンジ情報が同期情報42に追加されることになる。
==同期情報に対応する処理(S35)==
図39は、第2の実施形態に係るステップS35における同期情報42への対応処理の流れを示す図である。第2の実施形態では、上述した図17の処理の前に、図40に示すGUIDの割当処理(S3500)を実行する。
図40に示すGUIDの割当処理では、更新処理部119は、同期情報42に含まれている各割当情報について以下の処理を行う。
更新処理部119は、LUIDに対応するクライアントレコードのGUIDに、割当情報のGUIDを設定する(S3521)。更新処理部119は、割当情報に含まれるステータスが「存在」であった場合(LUIDに対応するGUIDがサーバデータベース21に既に登録されていた場合)には(S3522)、LUIDに対応するクライアントレコードの更新時点に、割当情報の更新時点を設定する(S3523)。
更新処理部119は、変更種別が「追加」であり、かつ、割当情報のLUIDに対応するクライアント変更履歴をクライアント変更履歴記憶部133から削除する(S3524)。また、更新処理部119は、割当情報のLUIDを未取得ID記憶部134から削除する(S3525)。
以上の処理が各割当情報について行われることで、未取得IDに対応するGUIDが登録される。
なお、第2の実施形態において作成されるダウンロード要求43は第1の実施形態と同じであり、ダウンロード要求43に対応するサーバ20による処理(S37)も、第1の実施形態と同じである。
==ダウンロード情報の対応処理(S39)==
図41は、第2の実施形態に係るステップS39におけるダウンロード情報44への対応処理の流れを示す図である。
更新処理部119は、ダウンロード情報44に含まれている取得ダウンロード情報のうち、取得ダウンロード情報のGUIDに対応するクライアント変更履歴がクライアント変更履歴記憶部133に記憶されていないものを抽出し(S3901)、抽出した取得ダウンロード情報のそれぞれについて、上述した図18に示す適用処理を行う(S3902)。すなわち、取得ダウンロード情報に含まれる削除フラグが「真」であれば(S3521:YES)、削除処理部114は、取得ダウンロード情報に含まれるGUIDに対応するクライアントレコードをクライアントデータベース11から削除し(S3522)、削除フラグが「偽」であれば(S3521:NO)、更新処理部119は、取得ダウンロード情報に含まれているGUID、キー、カラム、ヒントおよび本体を含むクライアントレコードをクライアントデータベース11に登録する(S3523)。
次に、解消要求送信部121は、クライアントID記憶部131に記憶されているクライアントIDを設定した解消要求45を作成する(S3903)。更新処理部119は、ダウンロード情報44に含まれる取得ダウンロード情報のうち、取得ダウンロード情報のGUIDに対応するクライアント変更履歴がクライアント変更履歴記憶部133に記憶されているものを抽出する(S3904)。解消処理部123は、図42に示す衝突解消処理を行い(S3905)、図43に示す重複解消処理を行う(S3906)。
図42に示す衝突解消処理では、上記図41のステップS3906において抽出された取得ダウンロード情報のそれぞれについて以下の処理を行う。
解消処理部123は、取得ダウンロード情報に含まれるGUIDが衝突記憶部137に記憶されていれば(S3941)、当該GUIDに対応するクライアントレコードをクライアントデータベース11から読み出し(S3942)、読み出したクライアントレコードと取得ダウンロード情報とのいずれかを選択する(S3943)。解消処理部123は、例えば、クライアントレコードおよび取得ダウンロード情報のヒントを出力してユーザに選択させるようにすることができる。
解消処理部123は、クライアントレコードを選択した場合(S3944:YES)、クライアントレコードのLUID、GUID、更新時点、キー、カラム、ヒントおよび本体を含む解消情報を解消要求45に追加し(S3945)、取得ダウンロード情報を選択した場合には(S3944:NO)、取得ダウンロード情報のGUID、更新時点、カラム、ヒントおよび本体を含む解消情報を解消要求45に追加し(S3946)、クライアントレコードの更新時点、キー、カラム、ヒントおよび本体を、取得ダウンロード情報のものに変更するようにクライアントデータベース11を更新する(S3947)。解消処理部123は、衝突記憶部137から取得ダウンロード情報に含まれるGUIDを削除する(S3948)。
図43に示す重複解消処理では、上記図41のステップS3906において抽出された取得ダウンロード情報のそれぞれについて以下の処理を行う。
解消処理部123は、取得ダウンロード情報に含まれるGUIDが重複記憶部136に記憶されていれば(S3961)、当該GUIDに対応するクライアントレコードをクライアントデータベース11から読み出し(S3962)、読み出したクライアントレコードと取得ダウンロード情報とのいずれかを選択する(S3963)。解消処理部123は、上述した衝突解消処理と同様に、例えば、クライアントレコードおよび取得ダウンロード情報のヒントを出力してユーザに選択させるようにすることができる。
解消処理部123は、クライアントレコードを選択した場合(S3964:YES)、クライアントレコードのLUID、GUID、更新時点、キー、カラム、ヒントおよび本体を含む解消情報を解消要求45に追加し(S3965)、取得ダウンロード情報を選択した場合には(S3964:NO)、取得ダウンロード情報のGUID、更新時点、カラム、ヒントおよび本体を含む解消情報を解消要求45に追加する(S3966)。解消処理部123は、取得ダウンロード情報のGUIDに対応するGUID(すなわち、取得ダウンロード情報のGUIDと一致するGUID1に対応するGUID2、または取得ダウンロード情報のGUIDと一致するGUID2に対応するGUID1である。)を重複記憶部136から読み出してGとし(S3967)、クライアントデータベース11からGUIDがGと一致するクライアントレコードを削除する(S3968)。
解消処理部123は、重複記憶部136から取得ダウンロード情報のGUIDがGUID1またはGUID2に一致するレコードを削除し(S3969)、未検証記憶部135から取得ダウンロード情報のGUIDを削除する(S3970)。
==解消要求対応(S52)==
図44は、上述した図33のステップS52においてサーバ20が実行する、解消要求45に対応する処理の流れを示す図である。
解消処理部220は、空の解消結果情報46を作成し(S5201)、解消要求45に含まれている解消情報のそれぞれについて、以下の処理を行う。
解消処理部220は、解消情報のGUIDが設定されていない場合には(S5202:YES)、新たにGUID生成部210が生成したGUIDと、解消情報に設定されているLUID、更新時点、キー、カラム、ヒントおよび本体とを設定したサーバレコードを作成してサーバデータベース21に登録し(S5203)、LUID、GUID、更新時点、「偽」の削除フラグ、および「成功」のステータスを含む結果情報を解消結果情報46に追加する(S5204)。
一方、解消情報にGUIDが設定されている場合(S5202:NO)、解消処理部220は、解消情報のGUIDに対応するサーバレコードをサーバデータベース21から検索し(S5205)、当該GUIDに対応するサーバレコードが存在しなければ(S5206:NO)、解消処理部220は、解消情報のGUIDと、「真」の削除フラグおよび「衝突」のステータスとを含む結果情報を解消結果情報46に追加する(S5207)。
上記GUIDに対応するサーバレコードが存在する場合(S5206:YES)、解消処理部220は、サーバレコードの更新時点と解消情報の更新時点とが一致しなければ(S5208:NO)、サーバレコードのGUIDおよび更新時点と、「偽」の削除フラグおよび「衝突」のステータスとを含む結果情報を解消結果情報46に追加する(S5209)。
解消処理部220は、更新時点が一致し(S5208:YES)、解消情報の削除フラグが「真」であれば(S5210:YES)、GUIDに対応するサーバレコードをサーバデータベース21から削除し(S5211)、削除フラグが「偽」であれば(S5210:NO)、解消処理部220は、サーバレコードに、解消情報の更新時点、キー、カラム、ヒントおよび本体を設定するようにサーバデータベース21を更新する(S5212)。
解消処理部220は、解消情報のLUID、GUID、更新時点および削除フラグと、「成功」のステータスとを含む結果情報を解消結果情報46に追加する(S5213)。また、解消処理部220は、解消情報のキーに一致するサーバレコードをサーバデータベース21から検索し(S5214)、一致するサーバレコードが存在する場合(S5215:YES)、検索したサーバレコードのGUIDおよび更新時点と、「偽」の削除フラグおよび「衝突」のステータスとを含む重複情報を解消結果情報46に追加する(S5216)。
以上の処理が各解消情報について行われる。
==解消結果対応(S54)==
図45は、上述した図33のステップS54においてクライアント10が実行する、解消結果情報46に対応する処理の流れを示す図である。
解消処理部123は、空のダウンロード要求43を作成し(S5401)、解消結果情報46に含まれている結果情報のそれぞれについて、以下の処理を行う。
解消処理部123は、結果情報に含まれるLUIDが未取得ID記憶部134に登録されている場合には(S5402:YES)、当該LUIDに対応するクライアントレコードに、結果情報のGUIDを設定するようにクライアントデータベース11を更新し(S5403)、未取得ID記憶部134から当該LUIDを削除する(S5404)。
次に、ステータスが「衝突」であれば(S5405:YES)、解消処理部123は、結果情報のGUIDを衝突記憶部137に登録し(S5406)、ダウンロード決定部115は、当該結果情報のGUIDが示すデータをダウンロードするか否かを決定する(S5407)。ダウンロード決定部115は、例えば、衝突したデータはサーバ20を優先するものとして、自動的にダウンロードすることを決定してもよいし、ユーザにダウンロードするか否かを問い合わせるようにしてもよい。ダウンロード決定部115は、ダウンロードすると決定した場合には(S5409:YES)、結果情報のGUIDを含む取得情報を生成してダウンロード要求43に設定する(S5410)。
一方、ステータスが「成功」である場合には(S5405:NO)、解消処理部123は、結果情報のGUIDに対応するクライアント変更履歴をクライアント変更履歴記憶部133から削除する(S5408)。
以上の処理を結果情報のそれぞれについて繰り返した後、ダウンロード決定部115は、解消結果情報46に含まれている重複情報のうち、対応するデータをダウンロードするものを決定し(S5411)、決定した重複情報のGUIDを含む取得情報を生成してダウンロード要求43に設定する(S5412)。なお、ダウンロード要求43に取得情報が設定されなかった場合には、上述した図33のステップS55〜S58の処理を省略するものとする。
このようにして、選択フィルタにマッチするクライアントレコードとサーバレコードとの同期が行われる。
以上説明したように、上述した第1および第2の実施形態の通信システムによれば、サーバ20は、クライアント10がどのようなデータを保持しているのかを管理することなく同期を行うことが可能となる。したがって、クライアント10とサーバ20との間でデータを同期する場合に、サーバ20の負担を軽減することができる。
また、上述した実施形態の通信システムによれば、興味範囲に属するデータのみを対象として同期を行うことが可能となり、一方で、興味範囲に属さないデータについては更新がされたとしても、同期せず、興味範囲に入ったときにはじめて同期を行うように同期処理を遅延することができる。ユーザの興味は興味範囲内のデータにあるので、興味範囲内のデータを優先的に同期することにより、ユーザにとって効率的かつ効果的な同期を行うことができる。
また、一般に、フィルタアウトされたデータは同期の対象とせず、クライアント10のデータを削除するような同期が行われることが行われているところ、本実施形態では、クライアント10から同期要求41にクライアントレンジ情報を設定してサーバ20に送信し、サーバ20はクライアントレンジ情報に含まれているデータについては、フィルタアウトされていても、同期情報42にレンジダウンロード情報を設定して応答し、クライアント10が同期の対象とするデータを決定している。したがって、クライアント10は、サーバ20においてフィルタアウトされたデータについても、ダウンロード要求にデータIDを指定して、同期の対象とすることができる。つまり、本実施形態の通信システムによれば、サーバ20側でフィルタアウトされたとしても、ユーザの興味範囲に含まれるデータ、すなわちユーザにとって重要度の高いデータを優先的に同期の対象とすることが可能となり、ユーザにとって便利である。また、ユーザの興味範囲に含まれるデータを優先的にダウンロードすることにより、ユーザにとって応答時間を短く感じさせることが期待される。
また、第2の実施形態の通信システムでは、クライアント10およびサーバ20の両方でデータが変更された場合でも、クライアント10において衝突を検知し、クライアント10で変更されたデータと、サーバ20で変更されたデータとのいずれかを選択することにより衝突を解消することができる。
また、クライアント10では、データの重複を検出し、重複を解消することができる。したがって、同じデータが複数登録されることによるリソースの消費を抑えることができる。
また、第2の実施形態の通信システムでは、クライアント10でデータを作成する場合に、クライアント10はGUIDを割り当てず、クライアント10において一意なLUIDを割り当てるのみで、同期時にシステム内で一意なグローバルIDを、サーバ20が割り当てるようにすることができる。クライアント10がデータの作成ごとにGUIDを割り当てる場合には、GUIDの割当処理にかかる負荷を無視できないが、第2の実施形態のように、クライアント10はLUIDを割り当てればよいので、IDの割り当てにかかる処理負荷を抑えることが可能となる。一方で、GUIDの割り当てはサーバ20に一元化することができるので、確実に一意なGUIDを容易に割り当てることができる。
また、第2の実施形態の通信システムでは、クライアント10とサーバ20との両方でデータが変更された衝突を検知し、ヒントなどに基づいて衝突を解消した上で同期を行うようにしている。したがって、複数のクライアント10から同一のデータに対して変更が行われるような状況であっても、適切に同期を行うことができる。
==第3の実施形態==
次に、第3の実施形態について説明する。第3の実施形態では、クライアント10およびサーバ20の両方においてデータの変更が行われるものとする。クライアント10は、クライアント10とサーバ20との間で直近に同期処理を行った時点(以下、「アンカー時点」という。)以後の全てのクライアントデータベース31への変更について変更履歴を管理するが、サーバ20は、所定の一定期間(以下、「保証期間」という。)のみ変更履歴を管理する。以下の説明において、保証期間の開始時点を「下位時点」といい、保証期間の終了時点を「上位時点」という。上位時点は、最後にサーバデータベース21に対して変更が行われた時点である。したがって、サーバ20において下位時点以後に行われたサーバデータベース21への全ての変更について変更履歴が登録される。
なお、第3の実施形態においても第2の実施形態と同様に、衝突および重複が生じうるが、第3の実施形態では、説明を簡単にするため、重複の解消は行わないものとし、また衝突が生じた場合には、例えば、最も新しいデータを優先して登録するなど、一般的な衝突解消処理が行われるものとする。もちろん、第2の実施形態と同様にして重複や衝突を解消するようにしてもよい。
以下の説明では、他の実施形態との違いについて主に説明し、他の実施形態と同じ部分については説明を省略する。
==クライアント10のソフトウェア構成==
図46は、第3の実施形態に係るクライアント10のソフトウェア構成例を示す図である。第3の実施形態に係るクライアント10は、上述した第1の実施形態に係るクライアント10に加えて、クライアント変更検知部110、レンジ指定情報更新部116およびクライアント変更履歴記憶部133を備える。
第3の実施形態に係るレンジ指定情報記憶部132には、フィルターに対応付けて、レンジ指定情報に加え、アンカーが記憶される。図47は第3の実施形態のレンジ指定情報記憶部132の構成例を示す図である。レンジ指定情報更新部116は、レンジ指定情報記憶部132に記憶されるアンカー時点を更新する。後述するように、第3の実施形態では同期情報42に最新履歴時点が含まれ、レンジ指定情報更新部116は、同期情報42の最新履歴時点を選択フィルタ条件に対応するアンカー時点としてレンジ指定情報記憶部132に登録する。なお、レンジ指定情報更新部116は、フィルタ選択部111が新しくフィルタ条件を作成した場合には、取りうるもっとも小さな値から1を引いた値をアンカー時点として新しく作成されたフィルタ条件に対応付けてレンジ指定情報記憶部132に登録する。
クライアント変更履歴記憶部133はクライアント変更履歴を記憶する。第3の実施形態に係るクライアント変更履歴記憶部133に記憶されるクライアント変更履歴の一例を図48に示す。図22に示す第2の実施形態に係るクライアント変更履歴に比べ、LUIDが省略されている。
クライアント変更検知部110は、クライアントデータベース11に対するデータの変更を検知し、検知に応じてクライアント変更履歴を作成してクライアント変更履歴記憶部133に登録する。なお、クライアント変更検知部110による処理は、上述した図24と同様の処理を行うが、データが追加された場合(S401:YES)にも、LUIDを割り当てず、クライアント10はサーバ20にアクセスしてGUIDの割当を受けるものとする。また、ステップS407に示す重複判定処理は省略する。
==サーバ20のソフトウェア構成==
図49は、第3の実施形態に係るサーバ20のソフトウェア構成例を示す図である。第3の実施形態に係るサーバ20は、上述した第1の実施形態に係るサーバ20に加えて、サーバ変更検知部222およびサーバ変更履歴記憶部231を備える。
サーバ変更履歴記憶部231は、サーバデータベース21に対する変更履歴(以下、「サーバ変更履歴」という。)を記憶する。サーバ変更履歴記憶部231には、ある一定期間(以下、「保証期間」という。)の中で行われたサーバデータベース21に対する変更についてのサーバ変更履歴が記憶される。なお、以下の説明において、保証期間の開始時点を「下位時点」といい、保証期間の終了時点を「上位時点」という。上位時点は、最後にサーバデータベース21に対して変更が行われた時点である。したがって、サーバ20において下位時点以後に行われたサーバデータベース21への全ての変更について、サーバ変更履歴が登録されることになる。
図50は、サーバ変更履歴記憶部231に記憶されるサーバ変更情報の構成例を示す図である。サーバ変更情報には、検知した変更の種別(以下、「変更種別」という。)、変更の対象となったデータを示すGUID、削除フラグ、更新時点、変更が行われる前の旧カラム、変更が行われた後の現カラム、キー、並びにヒントが含まれる。変更種別は、「追加」「更新」または「削除」のいずれかであるものとする。削除フラグには、変更種別が「削除」である場合に「真」が設定され、その他の変更種別のときには「偽」が設定される。
==処理==
第3の実施形態では、アンカー時点より後に更新されたデータをクライアントレンジ情報として同期要求41に含めてサーバ20に送信する。図51は、第3の実施形態において送信される同期要求41の構成例を示す図である。第3の実施形態では、同期要求41には、アンカー情報が追加され、同期要求41に含まれるクライアントレンジ情報には削除フラグが追加される。また、後述するように、クライアント10において追加または更新されたクライアントレコードに対応するクライアントレンジ情報には、クライアントレコードの全ての項目と削除フラグとが含まれる。
図52は、上述した図14のステップS3104におけるレンジ情報の作成処理の流れを示す図である。第3の実施形態では、同期要求送信部112は、ステップS3126において、基準データからデータ数だけの各クライアントレコードについて、クライアントレコードの更新時点がアンカー時点よりも後であれば(S31261:YES)、クライアントレコードの全項目および「偽」の削除フラグを含むレンジ情報を作成し(S31262)、更新時点がアンカー時点以前であれば(S31261:NO)、クライアントレコードのGUID、更新時点および「偽」の削除フラグを含むレンジ情報を作成する(S31263)。また、同期要求送信部112は、クライアント変更履歴記憶部133を参照して、変更種別が「削除」であり、更新時点がアンカー時点より後であり、フィルタ条件にマッチし、レンジ指定情報のデータ項目でソートした場合に、基準データからデータ数個以内に入るクライアント変更履歴を検索し(S31264)、検索したクライアント変更履歴のそれぞれについて、GUID、更新時点、「真」の削除フラグを含むレンジ情報を作成する(S31265)。これにより、アンカー時点より後に追加または更新されたクライアントレコードについては、データ全体がクライアントレンジ情報としてサーバ20に送信され、アンカー時点より後に削除されたクライアントレコードについては、「真」の削除フラグが設定されたレンジ情報がサーバ20に送信される。
サーバ20では、同期要求に応じて図53に示す処理が行われる。なお、同期要求受信部213は、同期要求41にアンカー時点が設定されていない場合には、アンカー時点を時点として取りうる最も古い値とする。図53の処理では、ステップS3301及びS3302を最後に行い、まず各クライアントレンジ情報についてステップS3303からの処理を行う。
同期情報送信部216は、GUIDに対応するサーバレコードがサーバデータベース21に存在しない場合には(S3304:NO)、クライアントレンジ情報の更新時点が、同期要求41に含まれているアンカー情報の示すアンカー時点以前であれば(S33041:YES)、ステップS3306に進む。これにより、クライアントデータベース11に存在し、サーバデータベース21に存在していないデータについて、「真」の削除フラグを含むレンジダウンロード情報が同期情報に設定される。クライアントレンジ情報の更新時点がアンカー時点よりも後であれば(S33041:NO)、同期情報送信部216は、レンジ情報に含まれている各項目を含むサーバレコードを作成してサーバデータベース21に登録する(S33042)。これにより、クライアント10で追加されたデータがサーバデータベース21にも登録される。
同期情報送信部216は、GUIDに対応するサーバレコードがサーバデータベース21に存在する場合には(S3304:YES)、クライアントレンジ情報の削除フラグが「真」であれば(S33043:YES)、サーバレコードをサーバデータベース21から削除し(S33044)、ステップS3306に進む。これにより、クライアント10で削除されたデータはサーバ20においても削除される。
レンジ情報の削除フラグが「偽」であり(S33043:NO)、サーバレコードの更新時点が、アンカー時点以前であり(S33045:YES)、クライアントレンジ情報の更新時点がサーバレコードの更新時点よりも新しければ(S33046:YES)、同期情報送信部216は、クライアントレンジ情報に含まれている各項目によりサーバレコードを更新する(S33047)。これにより、クライアント10で更新されたデータは、サーバ20において更新されていなければ、サーバデータベース21に反映される。
同期情報送信部216は、レンジ情報の削除フラグが「偽」であり(S33043:NO)、サーバレコードの更新時点がアンカー時点よりも後であり(S33045:NO)、レンジ情報の更新時点がアンカー時点以前であり(S33046:YES)、レンジ情報の更新時点がアンカー時点以前であれば(S33048:YES)、ステップS3305に進む。これにより、サーバ20でのみ更新されたデータを含むレンジダウンロード情報が同期情報に設定される。
レンジ情報の更新時点もアンカー時点より後であれば(S33048:NO)、レンジダウンロード情報を作成せずにループする。これにより、クライアント10およびサーバ20の両方でデータが更新された場合、すなわち衝突が発生した場合には、レンジダウンロード情報が作成されない。
同期情報送信部216が全てのクライアントレンジ情報について上記処理を行った後に、サーバレンジ情報取得部215は、ステップS3301およびS3302を行う。S3301において、サーバレンジ情報取得部215は、図52に示す処理のうち、ステップS31264およびS31265を除く他の処理を実行する。すなわち、サーバレンジ情報取得部215は、ステップS3126において、基準データからデータ数だけの各サーバレコードについて、サーバレコードの更新時点がアンカー時点よりも後であれば(S31261:YES)、サーバレコードの全項目および「偽」の削除フラグを含むサーバレンジ情報を作成し(S31262)、更新時点がアンカー時点以前であれば(S31261:NO)、サーバレコードのGUID、更新時点および「偽」の削除フラグを含むサーバレンジ情報を作成する(S31263)。
以上のようにして、クライアント10において削除されたデータはサーバ20でも削除され、クライアント10で追加されたデータはサーバデータベース21にも登録され、クライアント10で更新され、サーバ20で更新されていないデータはサーバデータベース21に反映され、サーバ20で削除されたデータは、その旨を示すレンジダウンロード情報がクライアント10に送信され、衝突が発生した場合には、サーバレンジ情報のみがクライアント10に送信される。したがって、クライアント10は、サーバレンジ情報に基づいて衝突が発生したことを検知し、衝突を解決することが可能となる。例えば、クライアント10は、クライアントレコードとサーバレコードとを出力してユーザに選択させ、クライアントレコードが選択された場合には、データをサーバ20にアップロードしてサーバデータベース21を更新し、サーバレコードが選択された場合にはサーバレコードをクライアントデータベース11に登録するなどにより、衝突を解消することができる。
==変形例==
なお、上述した実施形態では、データの作成時点や更新時点、削除時点などは、サーバデータベース21に対するデータの変更の順番を表す値であるものとしたが、これに限らず、タイムスタンプを採用してもよい。
また、上述の実施形態では、説明を簡単にするため、クライアント10およびサーバ20は1台ずつであるものとしたが、複数のクライアント10が1台のサーバ20に接続する形態としてもよいし、1台のクライアント10が複数のサーバ20に接続する形態としてもよいし、複数のクライアント10が複数のサーバ20に接続する形態としてもよい。
また、本実施形態では、クライアントIDは予めクライアントID記憶部131に記憶されているものとしたが、これに限らず、例えば、サーバ20がクライアントIDをクライアント10に割り当て、クライアント10がサーバ20から割り当てられたクライアントIDを取得してクライアントID記憶部131に登録するようにすることもできる。クライアントIDは、例えば、クライアント10が起動する度に再設定されるようにしてもよい。
また、上述の実施形態では、ソート規則は、データをデータ項目の順に並べるようにすることであるものとしたが、これに限らず、データを順番に並べることができる任意の規則とすることができる。例えば、ソート規則として、プログラムを採用するようにしてもよい。また、本実施形態では、データは1次元で連続するように並べるものとしたが、多次元に並べ、その多次元空間における所定の範囲を興味範囲としてもよい。例えば、データに緯度経度などの位置情報が含まれている場合に、データを地図上に並べ、基準データから所定の距離内の範囲を興味範囲とするようにしてもよい。さらに、本実施形態では基準データを基準として興味範囲を決定するものとしたが、これに限らず、一定の値を基準として興味範囲を決定してもよい。例えば、データにある数値が含まれており、所定の値を基準値とし、その基準値からの乖離が所定の閾値以内にあるものを興味範囲に含まれるデータとするようにしてもよい。
また、本実施形態では、同期要求41の作成時に、フィルタ選択部111はユーザからレンジ指定報の入力を受け付けるものとしたが、これに限らず、例えば、選択フィルタ条件に対応するレンジ指定情報がレンジ指定情報記憶部132に登録されている場合には、そのレンジ指定情報を用いるようにしてもよい。また、そのレンジ指定情報に基づいてレンジ指定情報を更新するようにしてもよい。この場合、例えばフィルタ選択部111は、選択フィルタ条件に対応するレンジ指定情報をレンジ指定情報記憶部132から読み出せた場合には、クライアントデータベース11から選択フィルタ条件にマッチするクライアントレコードを検索し、検索したクライアントレコードを、読み出したレンジ指定情報に含まれるデータ項目でソートし、ソートしたクライアントレコードのうち、基準データから数えて、レンジ指定情報のデータ数番目のもののGUIDを新しい基準IDとしてレンジ指定情報に設定するようにすることができる。
また、本実施形態では、同期情報42には、フィルタ条件に該当するサーバレンジ情報やレンジダウンロード情報を全て同期情報42に含めるものとしたが、同期情報42に含めるサーバレンジ情報やレンジダウンロード情報の数を制限するための条件(以下、「リミット条件」という。)を同期要求に含めるようにしてもよい。リミット条件は、例えば、レコードを所定のカラムでソートしたうちのn番目から所定数個などと設定することができる。
また、本実施形態では、同期情報42やダウンロード情報44、解消要求45などは1回の送信で送られるものとしたが、例えば、複数回に分けて送信するようにしてもよい。
また、サーバ20がリセットすることがある場合や、サーバ20が複数のサーバデータベース21を管理するような場合には、同期対象となるサーバデータベース21にID(以下、「同期ID」という。)を割り当て、同期要求41、同期情報42、ダウンロード要求43、ダウンロード情報44、解消要求45、解消結果情報46に同期IDを含めるようにしてもよい。この場合、クライアント10は、同期要求41やダウンロード要求43、解消要求45に設定していた同期IDと、サーバ20から応答される同期情報42やダウンロード情報44、解消結果情報46に設定されている同期IDとが異なる場合には、クライアント10は、クライアントデータベース11に記憶されているデータを全て削除してから、最初から同期処理をやり直すようにしてもよい。
また、本実施形態では、ダウンロード決定部115がダウンロードしないと決定したデータについては端的にダウンロードを行わないようにしたが、サーバ20において更新されているデータについては、クライアントレコードに更新されている旨を示すフラグ(以下、「更新フラグ」という。)を設定しておき、次の同期処理のときに、更新フラグが真であるものについてもダウンロードをするように決定するようにすることもできる。この場合、ダウンロード決定部115は、例えば、同期情報42に含まれているサーバレンジ情報に基づいて追加または更新されているデータを特定するとともに、クライアントデータベース11から更新フラグが真であるクライアントレコードを検索し、特定したデータと検索したクライアントレコードとの中からダウンロードすべきデータを決定することができる。
また、ダウンロード決定部115がダウンロードしないと決定したデータについて、後からダウンロードするようにしてもよいし、クライアントデータベース11から削除するようにしてもよい。
また、クライアントデータベース11に記憶される古いデータを定期的に削除するようにしてもよい。この場合、クライアント10は、例えば、1分や5分、1時間などの所定の時間ごとあるいはクライアント10における処理の負荷が低減したことを検知したときに、クライアントレコードのうち、更新時点が現在の日時よりも所定時間以上前のものをクライアントデータベース11から削除するようにすることができる。レンジ指定情報記憶部132が、フィルタ条件とアンカー時点とに対応付けて、これらがレンジ指定情報記憶部132に登録された日時を記憶しておき、クライアント10は、登録日時が現在の日時よりも所定時間以上前か否かによりフィルタ条件が古いか新しいかを判断し、古いフィルタ条件にマッチするクライアントレコードのうち、新しいフィルタ条件にマッチしないものを、クライアントデータベース11から削除するようにすることもできる。
また、本実施形態では、サーバデータベース21が、データの本体に加えてキーやカラム、ヒントなども含んだサーバレコードを記憶するものとしたが、データの本体と、そのデータのキーやカラム、ヒントなどのメタ情報とを異なるデータとして記憶するようにしてもよい。例えば、サーバデータベース21が記憶するサーバレコードには、GUID、作成時点、更新時点および本体のみが含まれているものとし、サーバ20は、サーバデータベース21に記憶されているサーバレコードのそれぞれに対応するGUID、更新時点、キー、カラムおよびヒントを含む情報(以下、「ヘッダデータ」という。)を記憶するヘッダデータベースを備えるようにすることができる。この場合、サーバデータベース21の構成を変更することなく、ヘッダデータを用いてデータの同期を行うことができる。したがって、例えば、運用中のサーバデータベース21が存在している場合などにも、容易に運用中のサーバデータベース21を同期の対象とすることが可能となる。同様に、クライアント10が、クライアントデータベース11とは別に、ヘッダデータを記憶するヘッダデータベースを備えるようにしてもよい。この場合、例えば、クライアント10において、クライアントデータベース11を利用するPIM(Personal Information Manager)アプリケーションなどが動作しているときでも、クライアントデータベース11の構成を変更することなく、データの同期を行うようにすることが可能となる。
以上、本実施形態について説明したが、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
10 クライアント
11 クライアントデータベース
20 サーバ
21 サーバデータベース
30 通信ネットワーク
41 同期要求
42 同期情報
43 ダウンロード要求
44 ダウンロード情報
45 解消要求
46 解消結果情報
101 CPU
102 メモリ
103 記憶装置
104 通信インタフェース
105 入力装置
106 出力装置
110 クライアント変更検知部
111 フィルタ選択部
112 同期要求送信部
113 同期情報受信部
114 削除処理部
115 ダウンロード決定部
116 レンジ指定情報更新部
117 ダウンロード要求送信部
118 ダウンロード情報受信部
119 更新処理部
120 衝突重複解消決定部
121 解消要求送信部
122 解消結果情報受信部
123 解消処理部
131 クライアントID記憶部
132 レンジ指定情報記憶部
133 クライアント変更履歴記憶部
134 未取得ID記憶部
135 未検証記憶部
136 重複記憶部
137 衝突記憶部
201 CPU
202 メモリ
203 記憶装置
204 通信インタフェース
205 入力装置
206 出力装置
210 GUID生成部
211 時点生成部
212 データベース変更部
213 同期要求受信部
214 ダウンロードデータ取得部
215 サーバレンジ情報取得部
216 同期情報送信部
217 ダウンロード要求受信部
218 ダウンロード情報送信部
219 解消要求受信部
220 解消処理部
221 解消結果情報送信部

Claims (15)

  1. サーバと、前記サーバに通信可能に接続されるクライアントとの間でデータを同期するシステムであって、
    前記サーバは、データに更新時点を付帯させて記憶する第1データベースにアクセス可能であり、前記クライアントは、前記サーバから取得したデータを記憶する第2データベースにアクセス可能であり、
    前記クライアントは、
    所定の規則に従ってソートした前記データの一部分である興味範囲を特定するためのレンジ指定情報を記憶するレンジ指定情報記憶部と、
    前記第2データベースに記憶されている前記データのうち、前記レンジ指定情報により特定される前記興味範囲に含まれるもののそれぞれについて、前記データの識別情報であるデータIDおよび前記データの更新時点を含むクライアントレンジ情報を作成するクライアントレンジ情報取得部と、
    前記レンジ指定情報および前記クライアントレンジ情報を含む同期要求を前記サーバに送信する同期要求送信部と、
    を備え、
    前記サーバは、
    前記同期要求に含まれる前記クライアントレンジ情報のそれぞれについて、前記クライアントレンジ情報に含まれる前記データIDに対応する、前記第1データベースに記憶されているデータの更新時点が、前記クライアントレンジ情報に含まれる前記更新時点よりも新しい場合に、当該データであるダウンロードデータを前記第1データベースから読み出すダウンロードデータ取得部と、
    前記ダウンロードデータを含む同期情報を前記クライアントに送信する同期情報送信部と、
    を備えること
    を特徴とするデータ同期システム。
  2. 請求項1に記載のデータ同期システムであって、
    前記サーバは、前記第1データベースに記憶されている前記データのうち、前記同期要求に含まれる前記レンジ指定情報により特定される前記興味範囲に含まれるもののそれぞれについて、前記データを示すデータIDおよび前記データの更新時点を含むサーバレンジ情報を作成するサーバレンジ情報取得部を備え、
    前記同期情報送信部は、前記ダウンロードデータに加えて前記サーバレンジ情報を前記同期情報に含めて前記クライアントに送信し、
    前記クライアントは、
    前記同期情報に含まれる前記データを前記第2データベースに登録する更新処理部と、
    前記同期情報に含まれる前記サーバレンジ情報のうち、前記サーバレンジ情報に含まれる前記データIDが示す前記データをダウンロードすべきか否かを決定するダウンロード決定部と、
    ダウンロードすべきと決定した前記データを示す前記データIDを含むダウンロード要求を前記サーバに送信するダウンロード要求送信部と、
    を備え、
    前記ダウンロードデータ取得部は、前記ダウンロード要求に含まれる前記データIDに対応するデータを前記第1データベースから読み出し、
    前記サーバは、前記ダウンロードデータ取得部が読み出した前記データを含むダウンロード情報を前記クライアントに送信するダウンロード情報送信部を備え、
    前記更新処理部は、前記ダウンロード情報に含まれる前記データを前記第2データベースに登録すること、
    を特徴とするデータ同期システム。
  3. 請求項2に記載のデータ同期システムであって、
    前記レンジ指定情報は、前記データをソートするための前記規則を示すソート情報と、前記ソートされたデータにおける基準となるデータである基準データを示す基準IDと、前記データの数を示すデータ数とが含まれ、
    前記クライアントレンジ情報取得部は、前記第2データベースに記憶されている前記データを前記規則に従ってソートし、ソートした一連の前記データにおいて、前記基準データと、前記基準データに後続する、前記データ数が示す数のデータとを前記興味範囲に含まれるデータとし、
    前記サーバレンジ情報取得部は、前記第1データベースに記憶されている前記データを前記同期要求に含まれる前記レンジ指定情報に含まれる前記ソート情報が示す前記規則に従ってソートし、ソートした一連の前記データにおいて、前記同期要求に含まれる前記レンジ指定情報に含まれる前記基準IDに対応する前記基準データと、当該基準データに後続する、前記同期要求に含まれる前記レンジ指定情報に含まれる前記データ数が示す数のデータとを前記興味範囲に含まれるデータとすること、
    を特徴とするデータ同期システム。
  4. 請求項3に記載のデータ同期システムであって、
    前記クライアントレンジ情報取得部は、前記第2データベースに記憶されている前記データを前記規則に従ってソートし、ソートした一連の前記データにおいて、前記基準データと、前記基準データに先行する、前記データ数が示す数のデータと、前記基準データに後続する、前記データ数が示す数のデータとを前記興味範囲に含まれるデータとし、
    前記サーバレンジ情報取得部は、前記第1データベースに記憶されている前記データを前記同期要求に含まれる前記レンジ指定情報に含まれる前記ソート情報が示す前記規則に従ってソートし、ソートした一連の前記データにおいて、前記同期要求に含まれる前記レンジ指定情報に含まれる前記基準IDに対応する前記基準データと、当該基準データに先行する、前記同期要求に含まれる前記レンジ指定情報に含まれる前記データ数が示す数のデータと、当該基準データに後続する、当該データ数が示す数のデータとを前記興味範囲に含まれるデータとすること、
    を特徴とするデータ同期システム。
  5. 請求項2に記載のデータ同期システムであって、
    前記レンジ指定情報記憶部はさらに、前記データを抽出するための条件を記憶し、
    前記クライアントレンジ情報取得部は、前記第2データベースに記憶されている前記データのうち前記条件にマッチするものを前記規則に従ってソートした場合に前記興味範囲に含まれる前記データについて、前記クライアントレンジ情報を作成し、
    前記同期要求にはさらに前記条件が含まれ、
    前記サーバレンジ情報取得部は、前記第1データベースに記憶されている前記データのうち、前記同期要求に含まれる前記条件にマッチするものを前記規則に従ってソートした場合に前記同期要求に含まれる前記レンジ指定情報により特定される前記興味範囲に含まれる前記データについて、前記サーバレンジ情報を作成すること、
    を特徴とするデータ同期システム。
  6. 請求項2に記載のデータ同期システムであって、
    前記ダウンロードデータ取得部は、前記ダウンロード要求に含まれる前記データIDのうち、前記データIDに対応する前記データが前記第1データベースに記憶されていないものについて、前記データIDを含む削除情報を作成し、
    前記クライアントは、前記ダウンロード情報に前記削除情報が含まれている場合に、前記削除情報に含まれる前記データIDに対応する前記データを前記第2データベースから削除する削除処理部を備えること、
    を特徴とするデータ同期システム。
  7. 請求項2に記載のデータ同期システムであって、
    前記データには、前記データの内容に基づいて生成される、前記クライアントにおいて前記データをダウンロードすべきか否かを決定するための情報であるヒントが付帯され、
    前記サーバレンジ情報取得部は、前記第1データベースに記憶されているデータのうち、前記同期要求に含まれる前記レンジ指定情報により特定される前記興味範囲に含まれるもののそれぞれについて、前記データを示すデータID、前記データの更新時点、および前記データに付帯される前記ヒントを含むサーバレンジ情報を作成し、
    前記ダウンロード決定部は、前記同期情報に含まれる前記サーバレンジ情報に含まれる前記ヒントに基づいて、前記データをダウンロードすべきか否かを決定すること、
    を特徴とするデータ同期システム。
  8. 請求項7に記載のデータ同期システムであって、
    前記ダウンロード決定部は、前記サーバレンジ情報に含まれる前記ヒントを出力し、ユーザから前記ダウンロードすべきデータの入力を受け付けること、
    を特徴とするデータ同期システム。
  9. 請求項2に記載のデータ同期システムであって、
    前記クライアントは、前記第2データベースの更新履歴を記憶する更新履歴記憶部を備え、
    前記更新履歴には、更新の対象となった前記データを示す前記データIDと、前記データに付帯されている前記更新時点とが含まれており、
    前記同期要求送信部は、前記興味範囲に含まれる前記データに対応する前記更新履歴を前記更新履歴記憶部から取得し、前記取得した更新履歴を前記同期要求に設定して前記サーバに送信し、
    前記サーバは、前記同期要求に含まれる前記更新履歴のそれぞれについて、前記更新履歴に含まれる前記データIDに対応する、前記第1データベースが記憶する前記データに付帯されている前記更新時点が、前記更新履歴に含まれている前記更新時点よりも後である場合、前記第1データベースが記憶する前記データに付帯される前記更新時点および前記データIDを含む衝突情報を生成する衝突検知部を備え、
    前記同期情報送信部は、前記衝突情報をさらに含む前記同期情報を前記クライアントに送信し、
    前記クライアントは、前記衝突情報に含まれる前記データIDに対応する前記データを、前記サーバにアップロードするか前記サーバからダウンロードするかを決定する衝突解消部を備え、
    前記ダウンロード要求送信部は、前記衝突解消部がダウンロードすると決定した前記データを示す前記データIDをさらに含む前記ダウンロード要求を前記サーバに送信し、
    前記クライアントは、前記衝突解消部がアップロードすると決定した前記データを前記第2データベースから読み出し、読み出した前記データを含む解消要求を前記サーバに送信する解消要求送信部を備え、
    前記サーバは、前記解消要求に含まれている前記データを前記第1データベースに登録する解消処理部を備えること、
    を特徴とするデータ同期システム。
  10. 請求項9に記載のデータ同期システムであって、
    前記データにはさらに、前記データに所定のアルゴリズムを適用して求められるデータであるキーが付帯され、
    前記更新履歴には前記キーが含まれ、
    前記サーバは、前記第1データベースに記憶されている前記データのうち、前記データに前記アルゴリズムを適用して求められるキーが、前記同期要求に含まれる前記更新履歴のいずれかに含まれる前記キーと一致するものを検索し、前記検索したデータを示す前記データIDを含む重複情報を生成する重複検知部を備え、
    前記同期情報送信部は、前記重複情報をさらに含む前記同期情報を前記クライアントに送信し、
    前記クライアントは、前記重複情報に含まれる前記データIDに対応する前記データのうち、削除すべきものを決定する重複解消部を備え、
    前記解消要求送信部は、前記重複解消部が削除すべきと決定した前記データを示す前記データIDを含む解消情報をさらに前記解消要求に含めて前記サーバに送信し、
    前記解消処理部はさらに、前記解消要求に含まれる前記解消情報に含まれる前記データIDに対応する前記データを前記第1データベースから削除すること、
    を特徴とするデータ同期システム。
  11. 請求項9に記載のデータ同期システムであって、
    前記データには前記データIDが付帯されており、
    前記データIDには、前記クライアントにおいて一意な識別情報であるローカルIDと、前記サーバおよび前記クライアントの両方において一意な識別情報であるグローバルIDとが含まれ、
    前記クライアントは、
    前記クライアントにおいて前記データが作成された場合に、前記作成されたデータに前記ローカルIDを割り当てるローカルID割当部と、
    前記作成されたデータに割り当てられた前記ローカルIDのうち、前記グローバルIDが割り当てられていないものである未取得IDを記憶する未取得ID記憶部と、
    を備え、
    前記同期要求送信部はさらに、前記未取得ID記憶部に記憶されている前記未取得IDを含めて前記同期要求を前記サーバに送信し、
    前記サーバは、前記同期要求に含まれている前記未取得IDに対応する前記グローバルIDを前記第1データベースから検索し、前記未取得IDに対応する前記グローバルIDがある場合には、当該対応するグローバルIDを前記第1データベースから取得し、前記取得したグローバルIDおよび前記未取得IDを含むID情報を生成し、前記ローカルIDに対応する前記グローバルIDがない場合には、新たに前記グローバルIDを割り当て、前記割り当てたグローバルIDおよび前記ローカルIDを含むID情報を生成するグローバルID取得部を備え、
    前記同期情報送信部はさらに、前記ID情報を含めて前記同期情報を前記クライアントに送信し、
    前記クライアントは、前記同期情報に含まれている前記ID情報のそれぞれについて、前記ID情報に含まれる前記未取得IDに対応する前記データを前記第1データベースから検索し、前記検索したデータに付帯される前記データIDに、前記ID情報に含まれる前記グローバルIDを設定するグローバルID登録部を備えること、
    を特徴とするデータ同期システム。
  12. 請求項1に記載のデータ同期システムであって、
    前記ダウンロードデータ取得部は、前記クライアントレンジ情報に含まれる前記データIDのうち、前記データIDに対応する前記データが前記第1データベースに記憶されていないものについて、前記データIDを含む削除情報を作成し、
    前記同期情報送信部はさらに、前記削除情報を前記同期情報に設定して前記クライアントに送信し、
    前記クライアントは、前記同期情報に含まれている前記削除情報のそれぞれについて、前記削除情報に含まれる前記データIDに対応する前記データを前記第2データベースから削除する削除処理部を備えること、
    を特徴とするデータ同期システム。
  13. サーバと、前記サーバに通信可能に接続されるクライアントとの間でデータを同期する方法であって、
    前記サーバは、データに更新時点を付帯させて記憶する第1データベースにアクセス可能であり、前記クライアントは、前記サーバから取得したデータを記憶する第2データベースにアクセス可能であり、
    前記クライアントが、所定の規則に従ってソートした前記データの一部分である興味範囲を特定するためのレンジ指定情報をメモリに記憶し、
    前記クライアントが、前記第2データベースに記憶されている前記データのうち、前記レンジ指定情報により特定される前記興味範囲に含まれるもののそれぞれについて、前記データの識別情報であるデータIDおよび前記データの更新時点を含むクライアントレンジ情報を作成し、
    前記クライアントが、前記レンジ指定情報および前記クライアントレンジ情報を含む同期要求を前記サーバに送信し、
    前記サーバが、前記同期要求に含まれる前記クライアントレンジ情報のそれぞれについて、前記クライアントレンジ情報に含まれる前記データIDに対応する、前記第1データベースに記憶されているデータの更新時点が、前記クライアントレンジ情報に含まれる前記更新時点よりも新しい場合に、当該データであるダウンロードデータを前記第1データベースから読み出し、
    前記サーバが、前記ダウンロードデータを含む同期情報を前記クライアントに送信すること、
    を特徴とするデータ同期方法。
  14. 請求項13に記載のデータ同期方法であって、
    前記サーバは、前記第1データベースに記憶されている前記データのうち、前記同期要求に含まれる前記レンジ指定情報により特定される前記興味範囲に含まれるもののそれぞれについて、前記データを示すデータIDおよび前記データの更新時点を含むサーバレンジ情報を作成し、
    前記サーバは、前記同期情報を前記クライアントに送信する場合に、前記ダウンロードデータに加えて前記サーバレンジ情報を前記同期情報に含め、
    前記クライアントが、前記同期情報に含まれる前記データを前記第2データベースに登録し、
    前記クライアントが、前記同期情報に含まれる前記サーバレンジ情報のうち、前記サーバレンジ情報に含まれる前記データIDが示す前記データをダウンロードすべきか否かを決定し、前記ダウンロードすべきと決定したデータを示す前記データIDを含むダウンロード要求を前記サーバに送信し、
    前記サーバが、前記ダウンロード要求に含まれる前記データIDに対応するデータを前記第1データベースから読み出し、前記読み出した前記データを含むダウンロード情報を前記クライアントに送信し、
    前記クライアントは、前記ダウンロード情報に含まれる前記データを前記第2データベースに登録すること、
    を特徴とするデータ同期方法。
  15. 請求項14に記載のデータ同期方法であって、
    前記クライアントは、前記第2データベースの更新履歴を記憶し、
    前記更新履歴には、更新の対象となった前記データを示す前記データIDと、前記データに付帯されている前記更新時点とが含まれており、
    前記クライアントは、前記興味範囲に含まれる前記データに対応する前記更新履歴を前記同期要求に設定して前記サーバに送信し、
    前記サーバは、前記同期要求に含まれる前記更新履歴のそれぞれについて、前記更新履歴に含まれる前記データIDに対応する、前記第1データベースが記憶する前記データに付帯されている前記更新時点が、前記更新履歴に含まれている前記更新時点よりも後である場合、前記第1データベースが記憶する前記データに付帯される前記更新時点および前記データIDを含む衝突情報を生成し、
    前記サーバは、前記衝突情報をさらに含む前記同期情報を前記クライアントに送信し、
    前記クライアントは、前記衝突情報に含まれる前記データIDに対応する、前記第2データベースが記憶する前記データを前記サーバにアップロードするか否かを決定し、
    前記クライアントは、アップロードしないと決定した前記データを示す前記データIDをさらに含む前記ダウンロード要求を前記サーバに送信し、
    前記クライアントは、アップロードすると決定した前記データを前記第2データベースから読み出し、読み出した前記データを含む解消要求を前記サーバに送信し、
    前記サーバは、前記解消要求に含まれている前記データを前記第1データベースに登録すること、
    を特徴とするデータ同期方法。
JP2010202305A 2010-09-09 2010-09-09 データ同期システムおよびデータ同期方法 Expired - Fee Related JP5634178B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010202305A JP5634178B2 (ja) 2010-09-09 2010-09-09 データ同期システムおよびデータ同期方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010202305A JP5634178B2 (ja) 2010-09-09 2010-09-09 データ同期システムおよびデータ同期方法

Publications (2)

Publication Number Publication Date
JP2012059066A true JP2012059066A (ja) 2012-03-22
JP5634178B2 JP5634178B2 (ja) 2014-12-03

Family

ID=46056075

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010202305A Expired - Fee Related JP5634178B2 (ja) 2010-09-09 2010-09-09 データ同期システムおよびデータ同期方法

Country Status (1)

Country Link
JP (1) JP5634178B2 (ja)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002014860A (ja) * 2000-06-28 2002-01-18 Hitachi Ltd 複数データベースの同期化方法
JP2003140950A (ja) * 2001-11-07 2003-05-16 Casio Soft Co Ltd データベース同期化方法、装置、及びプログラム
JP2004318619A (ja) * 2003-04-17 2004-11-11 Freedom Bird:Kk ネットワークを利用した店舗業務用データベースシステム
JP2005025362A (ja) * 2003-06-30 2005-01-27 Sap Ag データ同期制御装置、データ同期制御方法及びデータ同期制御プログラム
JP2007115247A (ja) * 2005-10-18 2007-05-10 Samsung Electronics Co Ltd 多重サーバ環境に適したデバイスをクライアントをして同期化を行わせる方法及び装置
JP2008500622A (ja) * 2004-05-26 2008-01-10 ノキア コーポレイション メディア・アイテムの管理のための方法、システム、コンピュータ・プログラム及びデバイス
JP2009157626A (ja) * 2007-12-26 2009-07-16 Ntt Docomo Inc データ同期方法、データ同期システム、サーバ、及び移動端末
WO2010048329A1 (en) * 2008-10-21 2010-04-29 Google Inc. Search based specification for data synchronization

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002014860A (ja) * 2000-06-28 2002-01-18 Hitachi Ltd 複数データベースの同期化方法
JP2003140950A (ja) * 2001-11-07 2003-05-16 Casio Soft Co Ltd データベース同期化方法、装置、及びプログラム
JP2004318619A (ja) * 2003-04-17 2004-11-11 Freedom Bird:Kk ネットワークを利用した店舗業務用データベースシステム
JP2005025362A (ja) * 2003-06-30 2005-01-27 Sap Ag データ同期制御装置、データ同期制御方法及びデータ同期制御プログラム
JP2008500622A (ja) * 2004-05-26 2008-01-10 ノキア コーポレイション メディア・アイテムの管理のための方法、システム、コンピュータ・プログラム及びデバイス
JP2007115247A (ja) * 2005-10-18 2007-05-10 Samsung Electronics Co Ltd 多重サーバ環境に適したデバイスをクライアントをして同期化を行わせる方法及び装置
JP2009157626A (ja) * 2007-12-26 2009-07-16 Ntt Docomo Inc データ同期方法、データ同期システム、サーバ、及び移動端末
WO2010048329A1 (en) * 2008-10-21 2010-04-29 Google Inc. Search based specification for data synchronization

Also Published As

Publication number Publication date
JP5634178B2 (ja) 2014-12-03

Similar Documents

Publication Publication Date Title
JP5061166B2 (ja) データ同期システムおよびデータ同期方法
JP6303023B2 (ja) 一時的なイベンティングに関するシステム及び方法
US7107323B2 (en) System and method of file distribution for a computer system in which partial files are arranged according to various allocation rules
KR100906262B1 (ko) 원자적으로 갱신되는 중앙 캐시 메모리를 위한 방법 및시스템
US20060041606A1 (en) Indexing system for a computer file store
US6363375B1 (en) Classification tree based information retrieval scheme
JP2003522344A (ja) データベース同期化/組織化システムおよび方法
CN112035420A (zh) 数据共享方法、共享设备和系统
CN110018969B (zh) 数据缓存方法、装置、计算机设备和存储介质
CN108319634B (zh) 分布式文件系统的目录访问方法和装置
CN103370695A (zh) 数据库更新通知方法
CN109328331A (zh) 用于异步存储服务的自组织存储系统
CN112015696A (zh) 数据访问、数据关系设置方法、装置及存储介质
CN114610680A (zh) 分布式文件系统元数据管理方法、装置、设备及存储介质
JP5634178B2 (ja) データ同期システムおよびデータ同期方法
JP4871213B2 (ja) ストリームデータ処理方法、ストリームデータ処理プログラムおよびストリームデータ処理システム
CN110633322A (zh) 一种资源信息同步方法、装置、电子设备及存储介质
CN104969217A (zh) 预测缓存装置和缓存预测方法
JP2006099268A (ja) 画像検索装置、画像検索支援装置、画像検索システム、画像検索方法および画像検索プログラム
JP2016085522A (ja) 情報管理装置
CN110933184B (zh) 一种资源发布平台和资源发布方法
JP6522261B1 (ja) ファイルの属性情報を管理する方法及びコンピューティング装置{method for managing attribute information of file and computing device using the same}
JPH06290098A (ja) 分散データベース処理方法
CN102483715B (zh) 数据同步系统以及数据同步方法
EP4195068A1 (en) Storing and retrieving media recordings in an object store

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130820

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140313

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140401

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140916

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141014

R150 Certificate of patent or registration of utility model

Ref document number: 5634178

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees