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

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

Info

Publication number
JP5061166B2
JP5061166B2 JP2009204686A JP2009204686A JP5061166B2 JP 5061166 B2 JP5061166 B2 JP 5061166B2 JP 2009204686 A JP2009204686 A JP 2009204686A JP 2009204686 A JP2009204686 A JP 2009204686A JP 5061166 B2 JP5061166 B2 JP 5061166B2
Authority
JP
Japan
Prior art keywords
data
server
information
client
database
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.)
Expired - Fee Related
Application number
JP2009204686A
Other languages
English (en)
Other versions
JP2011054092A (ja
Inventor
義明 荒木
進 石塚
Original Assignee
Kii株式会社
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株式会社 filed Critical Kii株式会社
Priority to JP2009204686A priority Critical patent/JP5061166B2/ja
Priority to PCT/JP2010/063623 priority patent/WO2011027654A1/ja
Priority to CN201080039401.8A priority patent/CN102483715B/zh
Priority to EP10813605.2A priority patent/EP2474911B1/en
Priority to KR1020127007751A priority patent/KR101569562B1/ko
Priority to US13/390,431 priority patent/US8775374B2/en
Publication of JP2011054092A publication Critical patent/JP2011054092A/ja
Application granted granted Critical
Publication of JP5061166B2 publication Critical patent/JP5061166B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2082Data synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs

Description

本発明は、データ同期システムおよびデータ同期方法に関する。
携帯電話などのクライアントがサーバとの間でデータを同期することが行われている。クライアントは定期的に変更されたデータの有無を問い合わせ、更新されたデータがある場合にはそのデータをダウンロードする。従来、サーバは変更履歴を残すことにより、データの変更の有無を管理していた。例えば、特許文献1では、第2のデータベースの更新履歴を保存し、更新履歴の件数が閾値よりも大きいときに同期を開始することで、一度のデータ同期で大量の情報が送受信されることのないようにしている。
特開2004−86800号公報
しかしながら、携帯電話などのクライアントが常にサーバと通信可能になっているとは限らず、サーバとクライアントとの間の通信が不能である時間が長い場合には、可能になるまでの間の全ての変更履歴を記憶しておく必要があるし、また、サーバが複数のクライアントと通信を行う場合には、クライアントごとにどこまでを同期したのか管理しておく必要があった。
本発明は、このような背景を鑑みてなされたものであり、クライアントとサーバとの間でデータを同期する場合にサーバの負荷を低減することのできるデータ同期システムおよびデータ同期方法を提供することを目的とする。
上記課題を解決するための本発明の主たる発明は、サーバと、前記サーバに通信可能に接続されるクライアントとの間でデータを同期するシステムであって、前記サーバは、更新時点を含むデータを記憶する第1データベースにアクセス可能であり、前記クライアントは、前記サーバから取得したデータを記憶する第2データベースにアクセス可能であり、前記クライアントは、前記サーバから最後に前記データを取得した時点であるアンカー時点を記憶するアンカー時点記憶部と、前記アンカー時点を含む同期要求を前記サーバに送信する同期要求送信部と、を備え、前記サーバは、前記更新時点が前記アンカー時点よりも後の前記データである更新データを前記第1データベースから検索し、前記各更新データについて前記更新データを示すデータIDおよび前記更新データの前記更新時点を含む変更情報を生成する変更情報取得部と、前記変更情報を含む同期情報を前記クライアントに送信する同期情報送信部と、を備え、前記クライアントは、前記変更情報に対応する前記データのうち、ダウンロードすべきものである取得データを決定するダウンロード決定部と、前記取得データを示すデータIDを含むダウンロード要求を前記サーバに送信するダウンロード要求送信部と、を備え、前記サーバは、前記ダウンロード要求に含まれる前記データIDに対応する前記データを前記第1データベースから取得するデータ取得部と、前記取得したデータを含むダウンロード情報を前記クライアントに送信するダウンロード情報送信部と、を備え、前記クライアントは、前記ダウンロード情報に含まれる前記データを前記第2データベースに登録する更新処理部を備えることとする。
また、本発明のデータ同期システムでは、前記ダウンロード決定部は、前記各変更情報について、前記変更情報に含まれる前記データIDに対応する前記データに含まれる前記更新時点を前記第2データベースから取得し、前記第2データベースから取得した前記更新時点が前記変更情報に含まれる前記更新時点よりも古い場合には、当該データをダウンロードすることを決定し、前記第2データベースから取得した前記更新時点が前記変更情報に含まれる前記更新時点よりも新しい場合には、ユーザからの設定に応じて、当該データをダウンロードするか否かを決定するようにしてもよい。
また、本発明のデータ同期システムでは、前記サーバは、前記第1データベースから削除された前記データを示す前記データIDおよび削除時点を含む変更履歴を記憶するサーバ変更履歴記憶部と、前記同期要求に含まれる前記アンカー時点よりも後の前記削除時点を含む前記変更履歴を前記サーバ変更履歴記憶部から取得する変更履歴取得部とを備え、前記同期情報送信部は、前記変更履歴取得部が取得した前記変更履歴を前記同期情報にさらに含め、前記クライアントは、前記同期情報に含まれる前記変更履歴に対応する前記データを前記第2データベースから削除する削除処理部を備えるようにしてもよい。
また、本発明のデータ同期システムでは、前記サーバは、前記第1データベースから削除されたデータについて、前記削除されたデータを示すデータIDおよび削除時点を含む変更履歴を、前記削除時点の新しい順に所定数記憶するサーバ変更履歴記憶部を備え、前記変更情報取得部は、前記アンカー時点より後の前記削除時点を含む前記変更履歴を前記サーバ変更履歴記憶部から取得し、前記同期情報送信部は、前記変更情報に加えて、前記サーバ変更履歴記憶部が記憶している前記変更履歴に含まれる最も古い前記削除時点であるバウンダリ時点、および前記取得した変更履歴を前記同期情報に含めて前記クライアントに送信し、前記クライアントは、前記同期情報に含まれる前記変更履歴に対応する前記データを前記第2データベースから削除する削除処理部と、前記アンカー時点が前記バウンダリ時点より前である場合に、前記第2データベースに記憶されている前記データのうち、前記データの前記更新時点が前記バウンダリ時点よりも前であり、かつ、前記データを示すデータIDを含む前記変更情報が前記同期情報に含まれていないものを検索し、前記検索した各データについて前記データを示すデータIDおよび前記データの前記更新時点を含む陳腐化情報を生成する陳腐化情報取得部と、を備え、前記ダウンロード要求送信部は、前記取得データIDに加えて、前記陳腐化情報を前記ダウンロード要求に含めて前記サーバに送信し、前記データ取得部はさらに、前記ダウンロード要求に含まれる前記各陳腐化情報について、前記陳腐化情報に対応する前記データが前記第1データベースに記憶されているか否かを判定し、前記第1データベースに記憶されていないと判定した前記データを示す前記データIDを、削除されたデータを示す削除IDとして前記ダウンロード情報に含め、前記削除処理部は、前記ダウンロード情報に含まれる前記削除IDに対応する前記データを前記第2データベースから削除するようにしてもよい。
また、本発明のデータ同期システムでは、前記クライアントは、前記同期情報に含まれている前記各変更情報について、前記変更情報に含まれる前記データIDに対応する前記データの前記更新時点を前記第2データベースから読み出し、前記読み出した更新時点が前記変更情報に含まれる前記更新時点よりも新しい場合に、前記データIDに対応する前記データを前記サーバにアップロードするか前記サーバからダウンロードするかを決定する衝突解消部を備え、前記ダウンロード要求送信部は、前記衝突解消部がダウンロードすると決定した前記データを示す前記データIDをさらに含む前記ダウンロード要求を前記サーバに送信し、前記クライアントは、前記衝突会勝負がアップロードすると決定した前記データを前記第2データベースから読み出し、読み出した前記データを含む解消要求を前記サーバに送信する解消要求送信部を備え、前記サーバは、前記解消要求に含まれている前記データを前記第1データベースに登録する解消処理部を備えるようにしてもよい。
また、本発明の他の態様は、サーバと、前記サーバに通信可能に接続されるクライアントとの間でデータを同期するシステムであって、前記サーバは、データに更新時点を付帯させて記憶する第1データベースにアクセス可能であり、前記クライアントは、前記サーバから取得したデータを記憶する第2データベースにアクセス可能であり、前記サーバは、前記第1データベースに対するデータの変更履歴を新しい順に所定数のみ記憶するサーバ変更履歴記憶部を備え、前記サーバ変更履歴記憶部が記憶する前記変更履歴であるサーバ変更履歴は、変更の対象となった前記データを示すデータIDと、当該データに付帯されている前記更新時点とを含み、前記クライアントは、前記サーバから最後に前記データを取得した時点であるアンカー時点を記憶するアンカー記憶部と、前記データを取得するための条件および前記アンカー時点を含む同期要求を前記サーバに送信する同期要求送信部と、前記サーバは、前記サーバ変更履歴記憶部から、前記同期要求に含まれる前記条件にマッチする前記データに対応する前記サーバ変更履歴のうち、前記更新時点が前記アンカー時点より後のものを取得する変更履歴取得部と、前記第1データベースから、前記同期要求に含まれる前記条件にマッチする前記データのうち、前記更新時点が前記アンカー時点より後であり、かつ前記サーバ変更履歴記憶部に記憶されている最も古い前記更新時点であるバウンダリ時点より前であるものを検索し、前記検索した各データについて、前記データを示す前記データIDおよび前記データに付帯される前記更新時点を含む変更情報を生成する変更情報取得部と、前記バウンダリ時点、前記取得したサーバ変更履歴、および前記変更情報を含む同期情報を前記クライアントに送信する同期情報送信部と、を備え、前記クライアントは、前記同期情報に含まれる前記サーバ変更履歴または前記変更情報に対応する前記データからダウンロードすべきものを決定するダウンロード決定部と、前記第2データベースから、前記条件にマッチする前記データのうち、前記更新時点が前記アンカー時点から前記バウンダリ時点までの間であるものを検索し、前記検索した各データについて、前記データを示す前記データIDおよび前記データに付帯される前記更新時点を含む陳腐化情報を生成する陳腐化情報取得部と、前記決定したデータを示す取得データIDおよび前記陳腐化情報を含むダウンロード要求を前記サーバに送信するダウンロード要求送信部と、を備え、前記サーバは、前記ダウンロード要求に含まれる前記陳腐化情報に対応する前記データのうち、前記更新時点が前記陳腐化情報に含まれる前記更新時点よりも新しいものと、前記取得データIDに対応する前記データとを前記第1データベースから取得するデータ取得部と、前記取得したデータを含むダウンロード情報を前記クライアントに送信するダウンロード情報送信部と、を備え、前記クライアントは、前記ダウンロード情報に含まれる前記データを前記第2データベースに登録する更新処理部を備えることとする。
また、本発明のデータ同期システムでは、前記サーバ変更履歴にはさらに、データの変更がデータの追加、更新または削除のいずれであったかを示す変更種別情報が含まれ、前記クライアントが、前記同期情報の受信に応じて、前記同期情報に含まれる前記サーバ変更履歴のうち、前記変更種別情報が削除を示すものについて、前記サーバ変更履歴に含まれる前記データIDが示す前記データを前記第2データベースから削除する削除処理部を備えるようにしてもよい。
また、本発明のデータ同期システムでは、前記データ取得部は、前記ダウンロード要求に含まれる前記陳腐化情報のうち、前記陳腐化情報に含まれる前記データIDに対応する前記データが前記第1データベースに登録されていないものについて、前記陳腐化情報に含まれる前記データIDを含む削除情報を前記ダウンロード情報に設定し、前記クライアントは、前記ダウンロード情報に前記削除情報が含まれている場合に、前記削除情報に含まれる前記データIDに対応する前記データを前記第2データベースから削除する削除処理部を備えるようにしてもよい。
また、本発明のデータ同期システムでは、前記データには、前記データの内容に基づいて生成される、前記条件に前記データがマッチするか否かを判定するための情報であるカラムがさらに付帯され、前記サーバ変更履歴には、データの変更がデータの追加、更新または削除のいずれであったかを示す変更種別情報と、前記データに付帯される前記カラムとがさらに含まれ、前記変更履歴取得部は、前記サーバ変更履歴のうち、前記カラムが前記同期要求に含まれる前記条件にマッチし、かつ前記更新時点が前記アンカー時点より後のものを取得し、前記変更情報取得部は、前記第1データベースに記憶されている前記データのうち、前記データに付帯される前記カラムが前記同期要求に含まれる前記条件にマッチするとともに、前記更新時点が前記アンカー時点より後であり、かつ前記バウンダリ時点より前であるものを検索し、前記検索した各データについて、前記データを示す前記データID、前記データに付帯される前記更新時点、および前記データに含まれる前記カラムを前記変更情報に設定し、前記陳腐化情報取得部は、前記第2データベースに記憶されるデータのうち、前記カラムが前記条件にマッチし、かつ前記更新時点が前記アンカー時点から前記バウンダリ時点までの間であるものを検索するようにしてもよい。
また、本発明のデータ同期システムでは、前記データには、前記データの内容に基づいて生成される、前記クライアントにおいて前記データをダウンロードすべきか否かを決定するための情報であるヒントがさらに付帯され、前記サーバ変更履歴には、データの変更がデータの追加、更新または削除のいずれであったかを示す変更種別情報と、前記データの付帯される前記ヒントとがさらに含まれ、前記変更情報取得部は、前記検索した各データについて、前記データに付帯される前記ヒントをさらに前記変更情報に含め、前記ダウンロード決定部は、前記サーバ変更履歴または前記変更情報に含まれる前記ヒントに基づいて前記ダウンロードすべきデータを決定するようにしてもよい。
また、本発明のデータ同期システムでは、前記ダウンロード決定部は、前記サーバ変更履歴または前記変更情報に含まれる前記ヒントを出力し、ユーザが選択した前記出力したヒントに対応する前記データを、前記ダウンロードすべきデータとして決定するようにしてもよい。
また、本発明のデータ同期システムは、前記データには前記更新時点が付帯され、前記サーバは、前記第1データベースに対するデータの変更が行われるごとに大きくなる数値を前記更新時点として生成する時点生成部を備え、前記第1データベースに書き込まれる際に、前記データには前記時点生成部が生成した前記更新時点が付帯されるようにしてもよい。
また、本発明のデータ同期システムでは、前記データには前記更新時点が付帯され、前記サーバは、前記第1データベースに対するデータの変更が行われる際に、前記サーバにおけるタイムスタンプを取得し、前記取得したタイムスタンプに、前記データの識別情報を連結した値を前記更新時点として生成する時点生成部を備え、前記第1データベースに書き込まれる際に、前記データには前記時点生成部が生成した前記更新時点が付帯されるようにしてもよい。
また、本発明のデータ同期システムでは、前記クライアントは、前記第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データベースにアクセス可能であり、前記クライアントは、前記サーバから取得したデータを記憶する第2データベースにアクセス可能であり、前記クライアントは、前記サーバから最後に前記データを取得した時点であるアンカー時点を記憶し、前記アンカー時点を含む同期要求を前記サーバに送信し、前記サーバは、前記更新時点が前記アンカー時点よりも後の前記データである更新データを前記第1データベースから検索し、前記各更新データについて前記更新データを示すデータIDおよび前記更新データの前記更新時点を含む変更情報を生成し、前記変更情報を含む同期情報を前記クライアントに送信し、前記クライアントは、前記変更情報に対応する前記データのうち、ダウンロードすべきものである取得データを決定し、前記取得データを示すデータIDを含むダウンロード要求を前記サーバに送信し、前記サーバは、前記ダウンロード要求に含まれる前記データIDに対応する前記データを前記第1データベースから取得し、前記取得したデータを含むダウンロード情報を前記クライアントに送信し、前記クライアントは、前記ダウンロード情報に含まれる前記データを前記第2データベースに登録することとする。
また、本発明のデータ同期方法では、前記クライアントは、前記同期情報に含まれている前記各変更情報について、前記変更情報に含まれる前記データIDに対応する前記データの前記更新時点を前記第2データベースから読み出し、前記読み出した更新時点が前記変更情報に含まれる前記更新時点よりも新しい場合に、前記データIDに対応する前記データを前記サーバにアップロードするか前記サーバからダウンロードするかを決定し、前記クライアントは、ダウンロードすると決定した前記データを示す前記データIDをさらに含む前記ダウンロード要求を前記サーバに送信し、前記クライアントは、アップロードすると決定した前記データを前記第2データベースから読み出し、読み出した前記データを含む解消要求を前記サーバに送信し、前記サーバは、前記解消要求に含まれている前記データを前記第1データベースに登録するようにしてもよい。
また、本発明の他の態様は、サーバと、前記サーバに通信可能に接続されるクライアントとの間でデータを同期する方法であって、前記サーバは、データに更新時点を付帯させて記憶する第1データベースにアクセス可能であり、前記クライアントは、前記サーバから取得したデータを記憶する第2データベースにアクセス可能であり、前記サーバは、前記第1データベースに対するデータの変更履歴を新しい順に所定数のみ記憶しており、前記サーバが記憶する前記変更履歴であるサーバ変更履歴は、変更の対象となった前記データを示すデータIDと、当該データに付帯されている前記更新時点とを含み、前記クライアントが、前記サーバから最後に前記データを取得した時点であるアンカー時点を記憶し、前記クライアントが、前記データを取得するための条件および前記アンカー時点を含む同期要求を前記サーバに送信し、前記サーバが、前記同期要求に含まれる前記条件にマッチする前記データに対応する前記サーバ変更履歴のうち、前記更新時点が前記アンカー時点より後のものを取得し、前記サーバが、前記第1データベースから、前記同期要求に含まれる前記条件にマッチする前記データのうち、前記更新時点が前記アンカー時点より後であり、かつ前記サーバが記憶している前記サーバ変更履歴の前記更新時点のうち最も古いものであるバウンダリ時点より前である前記データを検索し、前記検索した各データについて、前記データを示す前記データIDおよび前記データに付帯される前記更新時点を含む変更情報を生成し、前記サーバが、前記バウンダリ時点、前記取得したサーバ変更履歴、および前記変更情報を含む同期情報を前記クライアントに送信し、前記クライアントが、前記同期情報に含まれる前記サーバ変更履歴または前記変更情報に対応する前記データからダウンロードすべきものを決定し、前記クライアントが、前記第2データベースから、前記条件にマッチする前記データのうち、前記更新時点が前記アンカー時点から前記バウンダリ時点までの間であるものを検索し、前記検索した各データについて、前記データを示す前記データIDおよび前記データに付帯される前記更新時点を含む陳腐化情報を生成し、前記クライアントが、前記決定したデータを示す取得データIDおよび前記陳腐化情報を含むダウンロード要求を前記サーバに送信し、前記サーバが、前記ダウンロード要求に含まれる前記陳腐化情報に対応する前記データのうち、前記更新時点が前記陳腐化情報に含まれる前記更新時点よりも新しいものと、前記取得データIDに対応する前記データとを前記第1データベースから取得し、前記サーバが、前記取得したデータを含むダウンロード情報を前記クライアントに送信し、前記クライアントが、前記ダウンロード情報に含まれる前記データを前記第2データベースに登録することとする。
また、本発明のデータ同期方法では、前記クライアントは、前記第2データベースにおけるデータの変更履歴を記憶しており、前記クライアントが記憶する前記変更履歴であるクライアント変更履歴は、変更の対象となった前記データを示す前記データIDと、前記データに付帯されている前記更新時点とを含み、前記クライアントは、前記条件にマッチする前記データに対応する前記クライアント変更履歴を取得し、前記取得したクライアント変更履歴を前記同期要求に設定して前記サーバに送信し、前記サーバは、前記同期要求に含まれる前記クライアント変更履歴のそれぞれについて、前記クライアント変更履歴に含まれる前記データIDに対応する、前記第1データベースが記憶する前記データに付帯されている前記更新時点が、前記クライアント変更履歴に含まれている前記更新時点よりも後である場合、前記第1データベースが記憶する前記データに付帯される前記更新時点および前記データIDを含む衝突情報を生成し、前記サーバは、前記衝突情報をさらに含む前記同期情報を前記クライアントに送信し、前記クライアントは、前記衝突情報に含まれる前記データIDに対応する前記データを、前記サーバにアップロードするか前記サーバからダウンロードするかを決定し、前記クライアントは、前記ダウンロードすると決定したデータを示す前記データIDをさらに含む前記ダウンロード要求を前記サーバに送信し、前記クライアントは、前記アップロードすると決定したデータを前記第2データベースから読み出し、読み出した前記データを含む解消要求を前記サーバに送信し、前記サーバは、前記解消要求に含まれている前記データを前記第1データベースに登録するようにしてもよい。
その他本願が開示する課題やその解決方法については、発明の実施形態の欄および図面により明らかにされる。
本発明によれば、クライアントとサーバとの間でデータを同期する場合にサーバの負荷を低減することができる。
通信システムの全体構成を示す図である。 クライアント10のハードウェア構成を示す図である。 サーバ20のハードウェア構成を示す図である。 クライアント10のソフトウェア構成を示す図である。 クライアントレコードの構成例を示す図である。 アンカー記憶部132の構成例を示す図である。 第1の実施形態に係る同期要求41の構成例を示す図である。 第1の実施形態に係る同期情報42の構成例を示す図である。 ダウンロード要求43の構成例を示す図である。 ダウンロード情報の構成例を示す図である。 サーバ20のソフトウェア構成を示す図である。 サーバレコードの構成例を示す図である。 サーバ変更履歴の構成例を示す図である。 第1の実施形態に係るデータの同期処理の流れを説明する図である。 第1の実施形態に係る同期要求41の作成処理の流れを示す図である。 第1の実施形態に係る同期要求41への対応処理の流れを示す図である。 アンカー時点が時点t1であった場合の変更履歴および変更特徴情報の関係を説明する図である。 アンカー時点が時点t5であった場合の変更履歴および変更特徴情報の関係を説明する図である。 第1の実施形態に係る同期情報42への対応処理の流れを示す図である。 第1の実施形態に係るダウンロード要求43の対応処理の流れを説明する図である。 第1の実施形態に係るダウンロード情報44の対応処理の流れを示す図である。 クライアント10において実行される適用処理の流れを示す図である。 第2の実施形態に係るクライアント10のソフトウェア構成を示す図である。 第2の実施形態に係るクライアントレコードの構成例を示す図である。 クライアント変更履歴の構成例を示す図である。 重複記憶部136の構成例を示す図である。 クライアント変更検知部110による処理の流れを示す図である。 ステップS407に示す重複判定処理の流れを示す図である。 ステップS408に示す変更履歴登録処理の流れを示す図である。 第2の実施形態に係る同期要求41の構成例を示す図である。 第2の実施形態に係る同期情報42の構成例を示す図である。 解消要求45の構成例を示す図である。 解消結果情報46の構成例を示す図である。 第2の実施形態に係るサーバ20のソフトウェア構成を示す図である。 第2の実施形態に係るサーバレコードの構成例を示す図である。 第2の実施形態に係るデータの同期処理の流れを説明する図である。 第2の実施形態に係る同期要求の作成処理の流れを示す図である。 第2の実施形態に係る同期要求への対応処理の流れを示す図である。 サーバ20において実行されるGUIDの割当処理の流れを示す図である。 サーバ20において実行される衝突および重複の検知処理の流れを示す図である。 第2の実施形態に係る同期情報42への対応処理の流れを示す図である。 クライアント10において実行されるGUIDの割当処理 第2の実施形態に係るダウンロード情報44への対応処理の流れを示す図である。 クライアント10において実行される衝突解消処理の流れを示す図である。 クライアント10において実行される重複解消処理の流れを示す図である。 解消要求45に対応する処理の流れを示す図である。 解消結果情報46に対応する処理の流れを示す図である。
==全体構成==
図1は、本発明の一実施形態に係る通信システムの全体構成を示す図である。本実施形態の通信システムは、クライアント10およびサーバ20を含んで構成される。クライアント10およびサーバ20はそれぞれ通信ネットワーク30に接続されており、クライアント10およびサーバ20は通信ネットワーク30を介して通信可能になっている。本実施形態の通信システムは、サーバ20とクライアント10との間のデータの同期を行うものである。
サーバ20は、例えば、パーソナルコンピュータやワークステーションなどのコンピュータである。サーバ20は、データを記憶するデータベースを備える(以下、サーバ20が備えるデータベースを「サーバデータベース21」という。本発明の「第1データベース」に該当する。)。サーバ20が管理するデータは、例えば、写真などの画像データや、電話帳などのデータなどである。サーバ20では、サーバデータベース21に対する変更履歴が最新の所定数個のみ記録される。所定数を越えた変更履歴は古いものから順に削除されていくものとする。
クライアント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は、データを出力する、例えば、ディスプレイやプリンタなどである。
==本実施形態の概要==
本実施形態の通信システムでは、クライアント10とサーバ20との間でデータが同期される。下記第1の実施形態では、クライアント10ではデータの更新が行われず、サーバ20においてのみデータの更新が行われる場合を想定し、下記第2の実施形態では、クライアント10およびサーバ20の両方においてデータが更新される場合を想定する。
本実施形態の通信システムでは、クライアント10が主動的にデータの同期を行う。データの同期の手順は以下のようなものになる。
(1)クライアント10とサーバ20との間で、それぞれにおいて変更されたデータについての情報が交換される。
(1.1)クライアント10からサーバ20へ、クライアント10において更新されたデータについての情報が送信される。なお、クライアント10においてデータが更新されない場合には、この手順は省略される。
(1.2)サーバ20からクライアント10へ、サーバ20において更新されたデータについての情報が送信される。
(1.3)クライアント10は、データの競合を検出し、競合を解消する。データの競合とは、データの衝突および重複である。データの衝突とは、クライアント10およびサーバ20の両方において同じレコードに対して変更が行われたことをいう。データの重複とは、クライアント10とサーバ20との両方で異なるデータを更新したことにより、異なるデータが同一あるいは類似の内容になることをいう。本実施形態では、競合の解消は、競合関係にある2つのデータ(例えば、衝突するクライアント10のデータおよびサーバ20のデータ、あるいは、重複する2つのデータ)のいずれかを選択することにより行うものとする。
(2)クライアント10は、サーバ20からダウンロードするべきデータをダウンロードする。
(3)クライアント10は、サーバ20に反映すべきデータをサーバ20にアップロードする。
以上のような手順(1)〜(3)を繰り返すことによりクライアント10とサーバ20との間でデータが同期されることになる。なお、上記の手順は順番を変えて実行することもできる。
以下、詳細に付いて説明する。
==第1の実施形態==
第1の実施形態では、クライアント10においてデータの更新が行われないものとする。また、第1の実施形態では、サーバ20において管理されるデータは大量であり、その全てをクライアント10にダウンロードすることはできないものとする。
第1の実施形態では、クライアント10が、サーバ20からサーバ20において追加、変更、または削除されたデータに関する情報を取得し、その中から必要なデータを選択的にダウンロードするようにしている。すなわち、サーバ20は、クライアント10における同期の状況に関する管理を行わず、クライアント10がユーザに必要なデータを、選択的にダウンロードを行うようにしている。
==クライアント10のソフトウェア構成==
図4は、第1の実施形態に係るクライアント10のソフトウェア構成を示す図である。同図に示すように、クライアント10は、クライアントデータベース11、フィルタ選択部111、同期要求送信部112、同期情報受信部113、削除処理部114、ダウンロード決定部115、アンカー更新部116、陳腐化情報取得部117、ダウンロード要求送信部118、ダウンロード情報受信部119、更新処理部120、クライアントID記憶部131、アンカー記憶部132を備えている。なお、フィルタ選択部111、同期要求送信部112、同期情報受信部113、削除処理部114、ダウンロード決定部115、アンカー更新部116、陳腐化情報取得部117、ダウンロード要求送信部118、ダウンロード情報受信部119、更新処理部120は、クライアント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においてデータが最後に更新された時点を示す。更新可能性フラグは、データがサーバ20において更新されている可能性があることを示し、削除可能性フラグは、データがサーバ20において削除されている可能性があることを示す。キーは、クライアントレコードの重複を判定するためのデータであり、データ本体に基づいて作成される。
キーは、例えば、データ本体がアドレス帳のデータである場合には、電話番号や氏名などの文字列を連結して作成することができ、データ本体が電子メールのデータである場合には、電子メールの名宛人(To)、差出人(From)、日付(Date)、および件名(Subject)に設定されている文字列を連結して作成することができる。
カラムは、データがフィルタ条件を満たすか否かを判定するために用いるものであり、データ本体の一部である。ヒントは、サーバ20からデータをダウンロードするか否かを決定するための情報である。本実施形態では、ヒントには、データの重要度が含まれているものとするが、例えば、データ本体がアドレス帳のデータである場合には氏名とし、データ本体が電子メールのデータである場合には、電子メールの件名と差出人の文字列を結合したものとして、ユーザがデータの内容を把握することができるようにする。また、ヒントには、例えば、データの重要度やカテゴリ、データサイズ、データ内容の要約など各種のメタデータを含めることもできる。
クライアントID記憶部131は、クライアント10の識別情報(以下、「クライアントID」という。)を記憶する。本実施形態では、クライアントID記憶部131には、予めクライアントIDが記憶されているものとする。
アンカー記憶部132は、最後に同期した時点(以下、「アンカー時点」という。)を記憶する。なお、アンカー時点以後に変更されたデータのみが同期の対象となる。図6は、アンカー記憶部132の構成例を示す図である。アンカー記憶部132は、サーバ20に管理されているデータを抽出するための条件(以下、「フィルタ条件」という。)に対応付けてアンカー時点を記憶する。
フィルタ選択部111は、サーバ20からデータを取得する際に用いるフィルタ条件をアンカー記憶部132から選択する。フィルタ選択部111は、例えば、アンカー記憶部132に記憶されているフィルタ条件を一覧出力して、ユーザからフィルタ条件の指定を受け付けるようにしてもよいし、入力装置105を介してユーザからフィルタ条件の入力を受け付けるようにしてもよい。
同期要求送信部112は、同期を行うためのコマンド(以下、「同期要求41」という。)をサーバ20に送信する。図7は、同期要求41の構成例を示す図である。同期要求41には、クライアントID、フィルタ条件およびアンカー時点が設定される。同期要求送信部112は、クライアントID記憶部131に記憶されているクライアントIDを同期要求41に設定し、フィルタ選択部111が選択したフィルタ条件(以下、「選択フィルタ条件」という。)を同期要求41に設定する。また同期要求送信部112は、選択フィルタ条件に対応するアンカー時点をアンカー記憶部132から読み出して、読み出したアンカー時点を同期要求41に設定する。同期要求送信部112は、上記同期要求41をサーバ20に送信する。
同期情報受信部113は、同期要求41に応じてサーバ20から送信される、サーバ20との間でデータを同期するために必要な情報(以下、「同期情報」という。)をサーバ20から受信する。図8は、同期情報42の構成例を示す図である。同期情報42には、バウンダリ時点、最新履歴時点、変更特徴情報が含まれる。バウンダリ時点は、サーバ20において管理されている変更履歴の最も古い時点である。最新履歴時点は、サーバ20において管理されている変更履歴の最も新しい時点である。変更特徴情報は、アンカー時点からバウンダリ時点までの間に作成または更新されたデータについての情報と、サーバ20において管理されている変更履歴に係るデータについての情報とを含む。
変更特徴情報に含まれている更新時点は、最後にデータの更新が行われた時点であり、削除フラグは、サーバ20においてデータが削除されたことを示す。
削除処理部114は、クライアントデータベース11からデータの削除を行う。削除処理部114は、同期情報42に含まれる変更特徴情報のうち、削除フラグが真であるもののそれぞれについて、GUIDに対応するデータをクライアントデータベース11から削除する。なお、削除処理部114による削除処理の詳細については後述する。
ダウンロード決定部115は、サーバ20から取得(ダウンロード)すべきデータを決定する。第1の実施形態では、ダウンロードすべきデータとは、クライアントデータベース11に登録されており、かつ、サーバ20において更新されているデータ(以下、「更新データ」ともいう。)や、サーバ20において新しく追加されたデータ(以下、「追加データ」ともいう。)、前回のダウンロード時にはフィルタ条件にマッチしなかったが、サーバ20において更新されたためにフィルタ条件にマッチするようになったデータ(更新されたことによりフィルタ条件にマッチするようになったことを「フィルタイン」という。)の全てまたは一部である。例えば、ダウンロード決定部115は、変更特徴情報のGUIDに対応するクライアントデータベース11のデータの更新時点と、変更特徴情報の更新時点とを比較して、変更特徴情報の更新時点の方が新しいデータを更新データと判定することができる。また、ダウンロード決定部115は、変更特徴情報のGUIDに対応するデータがクライアントデータベース11に登録されていない場合には、そのデータは追加データまたはフィルタインされたデータであると判定することができる。ダウンロード決定部115は、例えば、追加データや更新データ、フィルタインされたデータの全てをダウンロードすべきデータとして決定してもよいし、これらのデータに対応する変更特徴情報のヒントを表示し、ユーザからダウンロードすべきデータの指定を受け付けるようにしてもよい。また、ダウンロード決定部115は、ヒントにデータサイズが含まれている場合には、クライアントデータベース11の記憶容量を越えない量のデータをダウンロードすべきデータとして決定することもできる。ダウンロード決定部115は、追加データや更新データ、フィルタインされたデータのうち、ヒントやキー、カラムなどが所定の条件を満たすものをダウンロードすべきデータとして決定してもよい。また、クライアントデータベース11が更新可能である場合には、ダウンロード決定部115は、変更特徴情報のGUIDに対応するクライアントレコードの更新時点が、変更特徴情報の更新時点よりも新しいときには、サーバレコードを優先してダウンロードするようにしてもよいし、クライアントレコードを優先してダウンロードをしないと決定するようにしてもよいし、ユーザにダウンロードするか否かを問い合わせてもよい。ダウンロード可能なデータ数やデータサイズを設定しておき、ダウンロード決定部115は、そのデータ数やデータサイズを超えない範囲でダウンロードすべきデータを決定するようにしてもよい。ダウンロード決定部は、例えば、クライアントデータの更新時点やデータサイズなどに応じてクライアントレコードに優先順位を設定し、優先順位の高いものから順に、上記データ数やデータサイズを超えないようにダウンロードすべきデータを決定するようにしてもよい。さらに、ダウンロード決定部115がどのようにダウンロードすべきデータを決定するかを指定するポリシーを、メモリ102や記憶装置103に記憶させておき、ダウンロード決定部115は、ポリシーに応じてダウンロードすべきデータを決定するようにすることもできる。
さらに、ダウンロード決定部115は、クライアントデータベース11に登録されているが、サーバ20においてはフィルタ条件にマッチしないデータ(更新されたことによりフィルタ条件にマッチしなくなったことを「フィルタアウト」という。)の一部または全部をダウンロードすべきデータに含めてもよい。この場合、ダウンロード決定部115は、クライアントデータベース11からフィルタ条件にマッチするデータを検索し、検索したデータのうち、GUIDが同期情報42の変更特徴情報に含まれていないものをフィルタアウトされたデータであると判定することができる。
アンカー更新部116は、アンカー記憶部132に記憶されるアンカー時点を更新する。同期情報42の最新履歴時点を選択フィルタ条件に対応するアンカー時点としてアンカー記憶部132に登録する。なお、アンカー更新部116は、フィルタ選択部111が新しくフィルタ条件を作成した場合には、取りうるもっとも小さな値から1を引いた値をアンカー時点として新しく作成されたフィルタ条件に対応付けてアンカー記憶部132に登録する。
陳腐化情報取得部117は、アンカー時点が同期情報42に含まれるバウンダリ時点よりも前である場合に、クライアントデータベース11に記憶されているクライアントレコードのうち、選択フィルタ条件にマッチし、かつ更新時点がバウンダリ時点よりも古いもの(以下、陳腐化データという。)を検索し、検索した陳腐化データについての情報(以下、「陳腐化情報」という。)を作成する。陳腐化情報には、陳腐化データのGUIDおよび更新時点が設定される。
ダウンロード要求送信部118は、サーバ20からデータを取得するためのコマンド(以下、「ダウンロード要求」という。)をサーバ20に送信する。図9は、ダウンロード要求43の構成例を示す図である。ダウンロード要求43には、ダウンロード決定部115が決定したデータのGUIDを含む情報(以下、「取得情報」という。)が設定される。また、陳腐化情報取得部117が陳腐化情報を作成した場合には、陳腐化情報もダウンロード要求43に設定される。
ダウンロード情報受信部119は、ダウンロード要求43に応じてサーバ20から送信される、取得情報および陳腐化情報に対応するデータを含む情報(以下、「ダウンロード情報」という。)を受信する。図10は、ダウンロード情報の構成例を示す図である。ダウンロード情報には、取得ダウンロード情報および陳腐化ダウンロード情報が含まれる。取得ダウンロード情報は、取得情報に対応するデータを含む情報であり、陳腐化ダウンロード情報は、陳腐化情報に対応するデータのうち、サーバ20において更新されたものを含む情報である。取得ダウンロード情報および陳腐化ダウンロード情報にはそれぞれ、GUID、更新時点、削除フラグ、キー、カラム、ヒントおよび本体が含まれる。取得情報や陳腐化情報に含まれるGUIDに対応するデータがサーバ20において削除されていた場合、削除フラグには真が設定され、キー、カラム、ヒントおよび本体は省略される。
更新処理部120は、ダウンロード情報に応じてクライアントデータベース11を更新する。更新処理部120は、ダウンロード情報に含まれている取得ダウンロード情報および陳腐化ダウンロード情報のそれぞれについて、削除フラグが真であれば、GUIDに対応するデータをクライアントデータベース11から削除し、削除フラグが偽であれば、取得ダウンロード情報または陳腐化ダウンロード情報に含まれているGUIDに対応付けて、更新時点、キー、カラム、ヒント、本体、並びに「偽」の更新可能性フラグおよび削除可能性フラグをクライアントデータベース11に登録する。なお、更新処理部120による更新処理の詳細については後述する。
==サーバ20のソフトウェア構成==
図11は、サーバ20のソフトウェア構成を示す図である。サーバ20は、GUID生成部210、時点生成部211、データベース変更部212、同期要求受信部213、変更履歴取得部214、変更取得部215、同期情報送信部216、ダウンロード要求受信部217、データ取得部218、ダウンロード情報送信部219、サーバデータベース21およびサーバ変更履歴記憶部231を備えている。
なお、GUID生成部210、時点生成部211、およびデータベース変更部212は、同期要求受信部213、変更履歴取得部214、変更取得部215、同期情報送信部216、ダウンロード要求受信部217、データ取得部218、ダウンロード情報送信部219は、サーバ20が備えるCPU201が記憶装置203に記憶されているプログラムをメモリ202に読み出して実行することにより実現される。また、サーバデータベース21およびサーバ変更履歴記憶部231は、サーバ20が備えるメモリ202や記憶装置203が提供する記憶領域として実現される。サーバデータベース21は、サーバ20とは異なるコンピュータ(データベースサーバ)により提供されるようにしてもよい。この場合、サーバ20は通信ネットワーク30を介してデータベースサーバにアクセス可能に接続されるようにする。
サーバデータベース21は、同期の対象となるデータ(以下、「サーバレコード」という。)を記憶する。図12は、サーバデータベース21に記憶されるサーバレコードの構成例を示す図である。サーバレコードには、データを識別するGUID、データの作成時点、データの更新時点、キー、カラム、ヒント、並びにデータの本体が含まれる。
サーバ変更履歴記憶部231は、サーバデータベース21に対する変更履歴(以下、「サーバ変更履歴」という。)を新しい順に所定数のみ記憶する。図13は、サーバ変更履歴記憶部231に記憶されるサーバ変更履歴の構成例を示す図である。サーバ変更履歴には、データを識別するGUID、データの作成時点、データの更新時点、削除フラグ、データのヒント、旧カラムおよび現カラムが含まれる。削除フラグは、データをサーバデータベース21から削除したことを示す。旧カラムは、当該サーバ変更履歴に係るデータの変更が行われる前のデータのカラムであり、現カラムは、当該変更が行われた後のデータのカラムである。データが新規に追加された場合には、旧カラムおよび現カラムの両方に、追加されたデータの所定の一部が設定される。
GUID生成部210は、GUIDを割り当てる。GUID生成部210は、例えば、サーバデータベース21に新規にサーバレコードが登録される場合に、そのサーバレコードを識別するGUIDを割り当てる。
時点生成部211は、サーバ20における現在時点を生成する。本実施形態は、時点生成部211は、サーバデータベース21に対するデータの変更が行われるごとにインクリメントされるシリアル値を時点として生成するものとする。
データベース変更部212は、サーバデータベース21に対しデータの変更を行う。
データベース変更部212は、サーバデータベース21にサーバレコードを追加する場合、時点生成部211が生成する時点を作成時点および更新時点のそれぞれに設定してサーバレコードをサーバデータベース21に追加する。また、データベース変更部212は、追加したサーバレコードのGUID、作成時点、更新時点、ヒントを含むサーバ変更履歴を作成し、作成したサーバ変更履歴の削除フラグに「偽」を設定し、旧カラムおよび現カラムのそれぞれに、追加したサーバレコードのカラムを設定してサーバ変更履歴記憶部231に登録する。
データベース変更部212は、サーバデータベース21に記憶されているサーバレコードを更新した場合には、時点生成部211が生成する時点をサーバレコードの更新時点に設定する。また、データベース変更部212は、更新したサーバレコードのGUID、作成時点、更新時点、ヒントを含むサーバ変更履歴を作成し、作成したサーバ変更履歴の削除フラグに「偽」を設定し、旧カラムに更新前のカラムを設定し、現カラムに更新後のカラムを設定してサーバ変更履歴記憶部231に登録する。
また、データベース変更部212は、サーバデータベース21に記憶されているサーバレコードを削除した場合には、時点生成部211が生成する時点、削除したサーバレコードのGUID、作成時点、ヒントを含むサーバ変更履歴を作成し、作成したサーバ変更履歴の削除フラグに「真」を設定し、旧カラムに削除したサーバレコードのカラムを設定してサーバ変更履歴記憶部231に登録する。
なお、データベース変更部212は、サーバ変更履歴記憶部231に記憶されているサーバ変更履歴の数が所定数である場合には、最も更新時点が古いサーバ変更履歴を削除してから、新たなサーバ変更履歴を登録する。
同期要求受信部213は、クライアント10から送信される同期要求41を受信する。なお、同期要求受信部213は、同期要求41にアンカー時点が設定されていない場合には、アンカー時点を時点として取りうる最も古い値とする。
変更履歴取得部214は、変更されたデータに関する情報を取得する。変更履歴取得部214は、同期要求41に含まれている選択フィルタ条件にマッチするサーバ変更履歴をサーバ変更履歴記憶部231から検索する。変更履歴取得部214は、検索したサーバ変更履歴に含まれているGUID、作成時点、更新時点、削除フラグおよびヒントを含む変更特徴情報を作成する。更新情報取得部214は、サーバ変更履歴記憶部231に記憶されているサーバ変更履歴の更新時点のうち、最も古いものをバウンダリ時点とし、最も新しいものを最新履歴時点とする。一方、選択フィルタ条件にマッチするサーバ変更履歴がサーバ変更履歴記憶部231に記憶されていなかった場合には、更新情報取得部214は、サーバデータベース21に記憶されているサーバレコードの更新時点のうち最も新しいも時点をバウンダリ時点および最新履歴時点とする。
変更取得部215は、同期要求41に含まれているアンカー時点がバウンダリ時点よりも古い場合、サーバデータベース21から、作成時点がアンカー時点より新しく、かつ更新時点がバウンダリ時点よりも古いサーバレコードを検索し、検索したサーバレコードのGUID、作成時点、更新時点およびヒントを含む変更特徴情報を作成する。
同期情報送信部216は、バウンダリ時点、最新履歴時点、変更特徴情報を含む同期情報42を作成し、作成した同期情報42をクライアント10に送信する。
ダウンロード要求受信部217は、クライアント10から送信されるダウンロード要求43を受信する。
データ取得部218は、ダウンロード要求43に含まれている取得情報を抽出し、抽出した取得情報に含まれているGUIDのそれぞれについて、GUIDが示すサーバレコードをサーバデータベース21から読み出し、読み出したサーバレコードのGUID、更新時点、「偽」の削除フラグ、カラムおよび本体を含む取得ダウンロード情報を作成する。データ取得部218は、取得情報のGUIDが示すサーバレコードがサーバデータベース21に記憶されていない場合(サーバデータベース21から削除されている場合)には、GUIDと「真」の削除フラグのみを含む取得ダウンロード情報を作成する。
また、データ取得部218は、ダウンロード要求43に含まれている陳腐化情報を抽出し、抽出した陳腐化情報のそれぞれについて、陳腐化情報に含まれるGUIDが示すサーバレコードをサーバデータベース21から読み出し、読み出したサーバレコードの更新時点が陳腐化情報の更新時点よりも新しい場合には、サーバレコードのGUID、更新時点、「偽」の削除フラグ、カラムおよび本体を含む陳腐化ダウンロード情報を作成する。データ取得部218は、陳腐化情報のGUIDが示すサーバレコードがサーバデータベース21に記憶されていない場合(サーバデータベース21から削除されている場合)には、GUIDと「真」の削除フラグのみを含む陳腐化ダウンロード情報を作成する。
ダウンロード情報送信部219は、取得ダウンロード情報および陳腐化ダウンロード情報を含むダウンロード情報を作成し、作成したダウンロード情報をクライアント10に送信する。
==同期処理の全体像==
図14は、第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)==
図15は、クライアント10において実行される同期要求41の作成処理の流れを示す図である。
まず、フィルタ選択部111は、フィルタ条件を選択する(S3101)。上述したように、フィルタ選択部111は、例えば、ユーザからフィルタ条件の指定を受け付けることによりフィルタ条件を選択する。
フィルタ選択部111は、選択フィルタ条件がアンカー記憶部132に記憶されていれば(S3102:YES)、選択フィルタ条件に対応するアンカー時点をアンカー記憶部132から読み出す(S3103)。
一方、選択フィルタ条件がアンカー記憶部132に記憶されていない場合には(S3102:NO)、フィルタ選択部111は、アンカー時点に所定の最小値から1を減じた値(本実施形態では「0」とする。)を設定する(S3104)。
同期要求送信部112は、クライアントID記憶部131からクライアントIDを読み出し(S3105)、クライアントID、選択フィルタ条件、およびアンカー時点を含む同期要求41を作成する(S3106)。
以上のようにして同期要求41が作成される。作成された同期要求は同期要求送信部112によりサーバ20に送信される。
==同期要求41の対応処理(S33)==
図16は、サーバ20において実行される同期要求41に対応する処理の流れを示す図である。
同期情報送信部216は、サーバ変更履歴記憶部231に登録されているサーバ変更履歴の最も古い更新時点をバウンダリ時点とし(S3301)、最も新しい更新時点を最新履歴時点とし(S3302)、バウンダリ時点と最新履歴時点とを含む同期情報42を生成する(S3303)。なお、サーバ変更履歴記憶部231に変更履歴が登録されていないときには、同期情報送信部216は、時点生成部211が生成する時点を取得し、取得した時点をバウンダリ時点および最新履歴時点とする。
変更履歴取得部214は、サーバ変更履歴記憶部231から、フィルタ条件にマッチするサーバ変更履歴を読み出し、読み出した各サーバ変更履歴について、サーバ変更履歴のGUID、更新時点、削除フラグ、ヒントおよびキーを含む変更特徴情報を作成する(S3304)。変更履歴取得部214は、作成した変更特徴情報を同期情報42に設定する(S3305)。
同期情報送信部216は、同期情報42に設定された変更特徴情報のうち、更新時点がアンカー時点より後であり、かつ削除フラグが「真」であるもののそれぞれについて、当該変更特徴情報と、当該変更特徴情報と同じGUIDである他の変更特徴情報とを同期情報42から削除する(S3306)。
変更取得部215は、サーバデータベース21から、更新時点がアンカー時点より後であり、かつ更新時点がバウンダリ時点より前であるデータを読み出し、読み出したデータのGUID、更新時点、ヒントおよびキーと、「偽」の削除フラグとを含む変更特徴情報を作成する(S3307)。変更取得部215は、作成した変更特徴情報を同期情報42に設定する(S3308)。
以上のようにして同期情報42が作成される。作成された同期情報42は、同期情報送信部216によりクライアント10に送信される。
==時点と変更履歴の関係==
図17および図18は、サーバ変更履歴記憶部231が記憶する変更履歴と、変更特徴情報との関係を説明する図である。図17および図18では、サーバ変更履歴記憶部231には、時点t4〜時点t8の期間についてのみサーバ変更履歴231が記憶されており、データa、b、cおよびdは、それぞれ時点t2、t4、t6およびt8において変更されたものとしている。ここで、バウンダリ時点は時点t4となる。
図17は、アンカー時点が時点t1であった場合を示す図である。この場合、時点t2〜t3の間の期間に更新されたデータaの更新時点t2を含む変更特徴情報と、サーバ変更履歴231に係るデータb〜dの更新時点t4、t6およびt8を含む変更特徴情報とが作成されることになる。バウンダリ時点t4より前の、時点t2〜t3の間の期間については、追加および更新されたデータについてのみ変更特徴情報が作成され、削除されたデータについては作成されない。一方、バウンダリ時点t4以後の時点t4〜t8については、追加、更新および削除されたデータのすべてについて変更特徴情報が作成されることになる。
図18は、アンカー時点が時点t5であった場合を示す図である。この場合、アンカー時点t5がバウンダリ時点t4よりも後であるので、アンカー時点t5より後に変更された全てのデータについて変更特徴情報が作成される。すなわち、図18の例では、アンカー時点t5よりも後に更新されたデータcおよびdについての更新時点t6およびt8を含む変更特徴情報が作成されることになる。
==同期情報42の対応処理(S35)==
図19は、クライアント10において実行される同期情報42に対応する処理の流れを示す図である。
まず、削除処理部114は、同期情報42に含まれている変更特徴情報のうち、削除フラグが真であるもののそれぞれについて、GUIDに対応するデータをクライアントデータベース11から削除する(S3501)。アンカー更新部116は、同期情報42に含まれている最新履歴時点を選択フィルタ条件に対応付けてアンカー記憶部132に登録する(S3502)。
次に、ダウンロード決定部115は、空のダウンロード要求43を作成し(S3503)、同期情報42に含まれている変更特徴情報に対応するデータのうち、ダウンロードすべきものを決定する(S3504)。上述したように、ダウンロード決定部115は、例えば、変更特徴情報に含まれているキーやヒントなどを出力し、ダウンロードすべきデータをユーザに選択させるようにすることができる。なお、ダウンロード決定部115はここで、クライアントデータベース11において選択フィルタ条件にマッチするデータのうち、そのGUIDが同期情報42に含まれていないもの(フィルタアウトされたデータ)についても、ダウンロードすべきデータとして決定するようにしてもよい。ダウンロード決定部115は、決定したデータのそれぞれについて、データを示すGUIDを含む取得情報を生成し、生成した取得情報をダウンロード要求43に追加する(S3505)。
陳腐化情報取得部117は、アンカー時点が同期情報42に含まれているバウンダリ時点よりも前である場合(S3506:YES)、クライアントデータベース11から、選択フィルタ条件にマッチし、かつ、更新時点がバウンダリ時点よりも前であるデータを検索し(S3507)、検索したデータの削除可能性フラグおよび更新可能性フラグを「真」に設定する(S3508)。
陳腐化情報取得部117は、クライアントデータベース11から、削除可能性フラグまたは更新可能性フラグが「真」であるデータのリストを取得する(S3509)。陳腐化情報取得部117は、リストに含まれるデータのうち、GUIDが取得情報に含まれているものをリストから削除する(S3510)。陳腐化情報取得部117は、リストに含まれているデータのそれぞれについて、GUIDおよび更新時点を設定した陳腐化情報を作成してダウンロード要求43に追加する(S3511)。
以上のようにしてダウンロード要求43が作成される。作成されたダウンロード要求43は、ダウンロード要求送信部118によりサーバ20に送信される。
==ダウンロード要求43の対応処理(S37)==
図20は、サーバ20において実行されるダウンロード要求43の対応処理の流れを説明する図である。
データ取得部218は、空のダウンロード情報44を作成し(S3701)、ダウンロード要求43に含まれている各取得情報について以下の処理を行う。
データ取得部218は、取得情報に含まれるGUIDに対応するデータをサーバデータベース21から検索し(S3702)、対応するデータが存在する場合には(S3703:YES)、検索したデータのGUID、更新時点、キー、カラム、ヒントおよび本体と、「偽」の削除フラグとを含む取得ダウンロード情報を作成してダウンロード情報44に追加する(S3704)。一方、取得情報のGUIDに対応するデータが存在しない場合は(S3703:NO)、データ取得部218は、取得情報のGUIDと「真」の削除フラグとを含む取得ダウンロード情報を作成してダウンロード情報44に追加する(S3705)。
以上の処理を各取得情報について行った後、データ取得部218は、ダウンロード要求43に含まれている各陳腐化情報について以下の処理を行う。
データ取得部218は、陳腐化情報に含まれるGUIDに対応するデータをサーバデータベース21から検索し(S3706)、対応するデータが存在する場合(S3707:YES)、当該データの更新時点が陳腐化情報の更新時点よりも新しければ(S3708:YES)、当該データのGUID、更新時点、キー、カラム、ヒントおよび本体と「偽」の削除フラグとを含む陳腐化ダウンロード情報を作成してダウンロード情報44に追加する(S3709)。一方、陳腐化情報に含まれるGUIDに対応するデータが存在しない場合には(S3707:NO)、データ取得部218は、陳腐化情報のGUIDおよび「真」の削除フラグを含む陳腐化ダウンロード情報を作成してダウンロード情報44に追加する(S3710)。
以上の処理を各陳腐化情報について繰り返すことで、ダウンロード情報44が作成される。作成されたダウンロード情報44は、ダウンロード情報送信部219によりクライアント10に送信される。
==ダウンロード情報44の対応処理(S39)==
図21は、クライアント10において実行されるダウンロード情報44の対応処理の流れを示す図である。
更新処理部120は、ダウンロード情報44に含まれている陳腐化ダウンロード情報のそれぞれについて、図22に示す適用処理を行う(S3901)。すなわち、陳腐化ダウンロード情報の削除フラグが「真」であれば(S3921:YES)、削除処理部114は、陳腐化ダウンロード情報に含まれているGUIDに対応するデータをクライアントデータベース11から削除し(S3922)、削除フラグが「偽」であれば(S3921:NO)、更新処理部120は、陳腐化ダウンロード情報に含まれているGUID、キー、カラム、ヒントおよび本体と、「偽」の更新可能性フラグおよび「偽」の削除可能性フラグとを含むデータを作成してクライアントデータベース11に登録する(S3923)。なお、GUIDが一致するデータがクライアントデータベース11にすでに登録されている場合には、当該データは上書きされる。
また、更新処理部120は、ダウンロード情報44に含まれている取得ダウンロード情報のそれぞれについて、図22に示す適用処理を行う(S3902)。すなわち、取得ダウンロード情報に含まれる削除フラグが「真」であれば(S3921:YES)、削除処理部114は、取得ダウンロード情報に含まれるGUIDに対応するデータをクライアントデータベース11から削除し(S3922)、削除フラグが「偽」であれば(S3921:NO)、更新処理部120は、取得ダウンロード情報に含まれているGUID、キー、カラム、ヒントおよび本体と、「偽」の更新可能性フラグおよび「偽」の削除可能性フラグとを含むデータを作成してクライアントデータベース11に登録する(S3923)。
このようにして、ダウンロード情報に応じてクライアントデータベース11が更新される。
以上のようにして、選択フィルタにマッチするクライアントレコードとサーバレコードとの同期が行われる。
==第2の実施形態==
次に、第2の実施形態について説明する。第2の実施形態については、第1の実施形態との違いについて主に説明し、第1の実施形態と同じ部分については説明を省略する。
第2の実施形態では、クライアント10においてもデータの更新が行われるものとする。したがって、クライアント10とサーバ20との両方で同じデータについて異なる内容の更新が行われる衝突が起こり得る。データの衝突は、一般にサーバ20によって検知されるが、第2の実施形態では、クライアント10とサーバ20との両方で衝突を検知するようにしている。また、クライアント10とサーバ20との両方で異なるデータを更新したことにより、異なるデータが同一あるいは類似の内容になる重複も起こり得る。第2の実施形態では、重複についても、クライアント10とサーバ20との両方で検出するようにしている。第2の実施形態では、キーが一致した場合に、重複が発生したと判定するものとする。
==クライアント10のソフトウェア構成==
図23は、第2の実施形態に係るクライアント10のソフトウェア構成を示す図である。第2の実施形態に係るクライアント10は、上述した第1の実施形態に係るクライアント10に加えて、クライアント変更検知部110、衝突重複解消決定部121、解消要求送信部122、解消結果情報受信部123、解消処理部124、クライアント変更履歴記憶部133、未取得ID記憶部134、未検証記憶部135、重複記憶部136、衝突記憶部137を備えている。なお、クライアント変更検知部110、衝突重複解消決定部121、解消要求送信部122、解消結果情報受信部123、および解消処理部124は、クライアント10が備えるCPU101が記憶装置103に記憶されているプログラムをメモリ102に読み出して実行することにより実現される。また、クライアント変更履歴記憶部133、未取得ID記憶部134、未検証記憶部135、重複記憶部136、衝突記憶部137は、クライアント10が備えるメモリ102や記憶装置103が提供する記憶領域として実現される。
図24は、第2の実施形態に係るクライアントデータベース11が記憶するクライアントレコードの構成例を示す図である。同図に示すように、第2の実施形態に係るクライアントレコードには、第1の実施形態に係るクライアントレコードに加えて、LUID(Local Unique IDentifier)が含まれている。LUIDは、クライアント10においてデータに割り当てられる識別情報であり、クライアント10において一意な値である。後述するように、第2の実施形態では、データのGUIDはサーバ20が割り当てるため、クライアント10においてデータが作成されたときには、GUIDはまだ割り当てられておらず、この時点でデータを識別するために割り当てられるのがLUIDである。LUIDとGUIDとの対応付け(マッピング)は、同期要求41および同期情報42のやり取りにより行われる。
クライアント変更履歴記憶部133は、クライアントデータベース11に対する変更履歴を記憶する。上述したサーバ変更履歴記憶部231には、サーバ変更履歴は新しい順に所定数のみ記憶されるが、クライアント変更履歴記憶部133には、アンカー時点より後に行われたクライアントデータベース11に対する全ての変更についてのクライアント変更履歴が記憶されるものとする。
図25は、クライアント変更履歴記憶部133に記憶されるクライアント変更履歴の構成例を示す図である。クライアント変更履歴には、検知した変更が追加、変更および削除のいずれであったかを示す種別(以下、「変更種別」という。)、変更の対象となったデータを示すLUIDおよびGUID、更新時点、変更が行われる前のカラム(以下、「旧カラム」ともいう。)、変更が行われた後のカラム(以下、「現カラム」ともいう。)、キー、並びにヒントが含まれる。変更種別は、「追加」「更新」または「削除」のいずれかであるものとする。
未取得ID記憶部134は、GUIDが割り当てられていないLUID(以下、「未取得ID」という。)を記憶する。未取得ID記憶部134には、クライアントデータベース11に新しいデータが追加された際に、そのデータに割り当てられたLUIDが登録される。
未検証記憶部135は、そのデータと重複するデータが存在するか否かの判定を行っていないデータを示すGUIDを記憶する。本実施形態では、クライアント10においてデータが変更された場合に、サーバ20において重複が発生するか否かを問い合わせることはせずに、後述するように、重複はサーバ20との間のデータの同期時に判定される。そこで、データが変更された場合には、そのデータのGUIDがデータの変更時から同期時まで未検証記憶部135に登録される。
重複記憶部136は、2つの重複するデータを管理する。図26は、重複記憶部136の構成例を示す図である。重複記憶部136には、第1のデータを示すLUIDおよびGUIDと、第1のデータと重複する第2のデータを示すLUIDおよびGUIDとが対応付けて登録される。
衝突記憶部137は、衝突するデータを示すGUIDを記憶する。
クライアント変更検知部110は、クライアントデータベース11に対するデータの変更を検知し、検知に応じてクライアント変更履歴を作成してクライアント変更履歴記憶部133に登録する。図27は、クライアント変更検知部110による処理の流れを示す図である。クライアント変更検知部110は、クライアントデータベース11に対する変更を検知した場合、変更が追加または変更である場合には、追加または変更がなされたデータ(以下、「新データ」という。)を取得し、変更が削除または変更である場合には、削除または変更がなされたデータ(以下、「旧データ」という。)を取得して、図27に示す処理を行う。なお、変更が追加である場合には、新データを旧データとして取り扱うものとする。
クライアント変更検知部110は、変更が追加である場合(S401:YES)、新データにLUIDを割り当て(S402)、未取得ID記憶部134に、割り当てたLUIDを登録する(S403)。一方、変更が更新または削除である場合には(S401:NO)、クライアント変更検知部110は、新データからLUIDおよびGUIDを取得する(S404)。
クライアント変更検知部110は、変更が追加または更新である場合(S405:YES)、新データの本体に基づいてキーを作成して新キーとし(S406)、重複の判定処理を行う(S407)。
最後に、クライアント変更検知部110は、クライアント変更履歴を登録する変更履歴登録処理を行う(S408)。
図28は、上記図27のステップ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)。
図29は、上記図27のステップ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)。
以上のようにして、クライアント変更検知部110は、クライアントデータベース11に対する変更を検知すると、クライアント変更履歴を登録する。
次に、第2の実施形態において同期要求送信部112が送信する同期要求41の構成例を図30に示す。第2の実施形態に係る同期要求には、上述した図7に示す第1の実施形態に係る同期要求に加えて、未取得IDおよび変更特徴情報が含まれる。同期要求送信部112は、未取得ID記憶部134に記憶されている未取得IDを同期要求に設定する。また、変更特徴情報はクライアント変更履歴に基づいて作成される情報であり、クライアント変更履歴の変更種別、LUID、GUID、更新時点およびキーが含まれる。同期要求送信部112は、クライアント変更履歴記憶部133から、重複記憶部136および衝突記憶部137にGUIDが登録されていないクライアント変更履歴を読み出し、読み出したクライアント変更履歴のそれぞれについて、クライアント変更履歴の変更種別、LUID、GUID、更新時点およびキーを含む変更特徴情報を同期要求に設定する。
図31は、第2の実施形態において同期情報受信部113が受信する同期情報42の構成例を示す図である。第2の実施形態に係る同期情報42には、上述した図8に示す第1の実施形態に係る同期情報42に加えて、割当情報が含まれる。割当情報は、未取得IDに対してサーバ20が割り当てたGUIDを含む情報である。割当情報には、LUID、GUID、更新時点、ステータスが含まれる。更新時点は、LUIDに対応するGUIDが既にサーバ20で割り当てられていた場合の、データの更新時点である。サーバ20に未取得IDに対応するデータが記憶されていない場合には更新時点は設定されない。ステータスは、未取得IDに対応するGUIDが既にサーバ20に存在するか否かを示す情報である。
また、第2の実施形態では、同期情報42に含まれる変更特徴情報は、後述するように、サーバ20において新たに追加されたデータに加えて、クライアント10とサーバ20との間で衝突または重複しているデータに関しても追加される。
衝突重複解消決定部121は、ダウンロード情報44に含まれるGUIDが示すデータが衝突または重複する場合に、当該データをサーバ20に送信するか否かを決定する。本実施形態では、衝突重複解消決定部121は、ダウンロード情報44に含まれるGUIDが、クライアント変更履歴記憶部133、重複記憶部136または衝突記憶部137に記憶されているか否かにより、衝突または重複が発生しているか否かを判定し、衝突または重複が発生していると判定した場合に、ユーザに、クライアントレコードかサーバレコードのいずれかを選択させるようにする。なお、衝突重複解消決定部121は、例えば、クライアントレコードを常に優先するようにして、無条件にクライアントレコードを選択するようにしてもよいし、任意のアルゴリズムを適用して自動的に選択するようにしてもよい。
解消要求送信部122は、衝突または重複が発生したデータを解消するように指示するコマンド(以下、「解消要求」という。)をサーバ20に送信する。図32は、解消要求45の構成例を示す図である。解消要求45には、クライアントIDと、衝突重複解消決定部121が選択したクライアントレコードまたはサーバレコードのLUID、GUID、更新時点、削除フラグ、キー、カラム、ヒントおよび本体が設定された解消情報とが含まれる。
解消結果情報受信部123は、解消要求に応じてサーバ20から送信される、衝突または重複の解消処理の結果を示す情報(以下、「解消結果情報」という。)を受信する。図33は、解消結果情報46の構成例を示す図である。解消結果情報46には、重複情報と結果情報とが含まれる。重複情報は、解消要求45に含まれる解消情報が示すデータについて、サーバ20において重複が発生した場合に設定される。重複情報には、サーバ20において重複したデータのGUID、更新時点、キーが設定される。結果情報は、解消要求45に応じてサーバデータベース21の更新を行った処理の結果を表す情報であり、LUID、GUID、更新時点、削除フラグおよびステータスを含む。
解消処理部124は、解消結果情報46に応じてクライアントデータベース11の更新を行う。なお、解消処理部124の処理の詳細については後述する。
==サーバ20のソフトウェア構成==
図34は、第2の実施形態に係るサーバ20のソフトウェア構成を示す図である。第2の実施形態に係るサーバ20は、第1の実施形態に係るサーバ20に加えて、解消要求受信部220、解消処理部221、解消結果情報送信部222を備えている。なお、解消要求受信部220、解消処理部221、解消結果情報送信部222は、サーバ20が備えるCPU201が記憶装置203に記憶されているプログラムをメモリ202に読み出して実行することにより実現される。
図35は、第2の実施形態に係るサーバデータベース21が記憶するサーバレコードの構成例を示す図である。同図に示すように、第2の実施形態に係るサーバレコードには、第1の実施形態に係るサーバレコードに加えて、LUIDおよび作成者IDが含まれている。LUIDは、クライアント10においてデータに割り当てられる識別情報であり、クライアント10において一意な番号である。後述するように、第2の実施形態では、データのGUIDはサーバ20が割り当てるため、クライアント10においてデータが作成されたときには、GUIDはまだ割り当てられておらず、この時点でデータを識別するために割り当てられるのがLUIDである。LUIDとGUIDとの対応付け(マッピング)は、同期要求41および同期情報42のやり取りにより行われる。作成者IDは、データを最初に作成したクライアント10のクライアントIDであり、サーバレコードの追加時に設定される。
解消要求受信部220は、クライアント10から解消要求45を受信する。
解消処理部221は、解消要求45に応じてサーバデータベース21を更新する。なお、解消処理部221により実行される解消処理の詳細については後述する。
解消結果情報送信部222は、解消処理部221による解消処理の結果を示す解消結果情報を作成してクライアント10に送信する。なお、解消結果情報送信部222による解消結果情報の生成処理の詳細については後述する。
==同期処理の全体像==
図36は、第2の実施形態に係る通信システムにおいて実行される、データの同期処理の流れを説明する図である。第2の実施形態に係るデータの同期処理では、上述した図14に示す第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)==
図37は、第2の実施形態に係るステップS31における同期要求の作成処理の流れを示す図である。第2の実施形態では、上述した図15の処理に加えて、ステップS3106に続き、同期要求送信部112は、選択フィルタ条件にマッチするクライアント変更履歴をクライアント変更履歴記憶部133から読み出して変更履歴として同期要求41に設定し(S3107)、未取得ID記憶部134に記憶されている未取得IDを読み出して同期要求41に設定する(S3108)。
更新情報と未取得IDとにより、サーバ20側ではクライアント10で行われたデータの更新を把握することが可能となる。
==同期要求に対応する処理(S33)==
図38は、第2の実施形態に係るステップS33における同期要求への対応処理の流れを示す図である。第2の実施形態では、上述した図16の処理に加えて、ステップS3308に続き、同期情報送信部216は、図39に示すGUIDの割当処理を行い(S3309)、図40に示す衝突および重複の検知処理を行う(S3310)。
図39に示す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に設定される。
図40に示す衝突重複の検知処理では、同期情報42に設定された変更履歴のそれぞれについて以下の処理が行われる。
変更取得部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)==
図41は、第2の実施形態に係るステップS35における同期情報42への対応処理の流れを示す図である。第2の実施形態では、上述した図19の処理の前に、図42に示すGUIDの割当処理(S3500)を実行する。
図42に示すGUIDの割当処理では、更新処理部120は、同期情報42に含まれている各割当情報について以下の処理を行う。
更新処理部120は、LUIDに対応するクライアントレコードのGUIDに、割当情報のGUIDを設定する(S3521)。更新処理部120は、割当情報に含まれるステータスが「存在」であった場合(LUIDに対応するGUIDがサーバデータベース21に既に登録されていた場合)には(S3522)、LUIDに対応するクライアントレコードの更新時点に、割当情報の更新時点を設定する(S3523)。
更新処理部120は、変更種別が「追加」であり、かつ、割当情報のLUIDに対応するクライアント変更履歴をクライアント変更履歴記憶部133から削除する(S3524)。また、更新処理部120は、割当情報のLUIDを未取得ID記憶部134から削除する(S3525)。
以上の処理が各割当情報について行われることで、未取得IDに対応するGUIDが登録される。
なお、第2の実施形態において作成されるダウンロード要求43は第1の実施形態と同じであり、ダウンロード要求43に対応するサーバ20による処理(S37)も、第1の実施形態と同じである。
==ダウンロード情報の対応処理(S39)==
図43は、第2の実施形態に係るステップS39におけるダウンロード情報44への対応処理の流れを示す図である。第2の実施形態では、上述した図21の処理のステップS3901を実行した後、ステップS3902に変えて、ステップS3903〜S3908を実行する。
更新処理部120は、ダウンロード情報44に含まれている取得ダウンロード情報のうち、取得ダウンロード情報のGUIDに対応するクライアント変更履歴がクライアント変更履歴記憶部133に記憶されていないものを抽出し(S3903)、抽出した取得ダウンロード情報のそれぞれについて、上述した図22に示す適用処理を行う(S3904)。すなわち、取得ダウンロード情報に含まれる削除フラグが「真」であれば(S3921:YES)、削除処理部114は、取得ダウンロード情報に含まれるGUIDに対応するクライアントレコードをクライアントデータベース11から削除し(S3922)、削除フラグが「偽」であれば(S3921:NO)、更新処理部120は、取得ダウンロード情報に含まれているGUID、キー、カラム、ヒントおよび本体と、「偽」の更新可能性フラグおよび「偽」の削除可能性フラグとを含むクライアントレコードをクライアントデータベース11に登録する(S3923)。
次に、解消要求送信部122は、クライアントID記憶部131に記憶されているクライアントIDを設定した解消要求45を作成する(S3905)。更新処理部120は、ダウンロード情報44に含まれる取得ダウンロード情報のうち、取得ダウンロード情報のGUIDに対応するクライアント変更履歴がクライアント変更履歴記憶部133に記憶されているものを抽出する(S3906)。解消処理部124は、図44に示す衝突解消処理を行い(S3907)、図45に示す重複解消処理を行う(S3908)。
図44に示す衝突解消処理では、上記図43のステップS3906において抽出された取得ダウンロード情報のそれぞれについて以下の処理を行う。
解消処理部124は、取得ダウンロード情報に含まれるGUIDが衝突記憶部137に記憶されていれば(S3941)、当該GUIDに対応するクライアントレコードをクライアントデータベース11から読み出し(S3942)、読み出したクライアントレコードと取得ダウンロード情報とのいずれかを選択する(S3943)。解消処理部124は、例えば、クライアントレコードおよび取得ダウンロード情報のヒントを出力してユーザに選択させるようにすることができる。
解消処理部124は、クライアントレコードを選択した場合(S3944:YES)、クライアントレコードのLUID、GUID、更新時点、キー、カラム、ヒントおよび本体を含む解消情報を解消要求45に追加し(S3945)、取得ダウンロード情報を選択した場合には(S3944:NO)、取得ダウンロード情報のGUID、更新時点、カラム、ヒントおよび本体を含む解消情報を解消要求45に追加し(S3946)、クライアントレコードの更新時点、キー、カラム、ヒントおよび本体を、取得ダウンロード情報のものに変更するようにクライアントデータベース11を更新する(S3947)。解消処理部124は、衝突記憶部137から上記GUIDを削除する(S3948)。
図45に示す重複解消処理では、上記図43のステップS3906において抽出された取得ダウンロード情報のそれぞれについて以下の処理を行う。
解消処理部124は、取得ダウンロード情報に含まれるGUIDが重複記憶部136に記憶されていれば(S3961)、当該GUIDに対応するクライアントレコードをクライアントデータベース11から読み出し(S3962)、読み出したクライアントレコードと取得ダウンロード情報とのいずれかを選択する(S3963)。解消処理部124は、上述した衝突解消処理と同様に、例えば、クライアントレコードおよび取得ダウンロード情報のヒントを出力してユーザに選択させるようにすることができる。
解消処理部124は、クライアントレコードを選択した場合(S3964:YES)、クライアントレコードのLUID、GUID、更新時点、キー、カラム、ヒントおよび本体を含む解消情報を解消要求45に追加し(S3965)、取得ダウンロード情報を選択した場合には(S3964:NO)、取得ダウンロード情報のGUID、更新時点、カラム、ヒントおよび本体を含む解消情報を解消要求45に追加する(S3966)。解消処理部124は、取得ダウンロード情報のGUIDに対応するGUIDを重複記憶部136から読み出してGとし(S3967)、クライアントデータベース11からGUIDがGと一致するクライアントレコードを削除する(S3968)。
解消処理部124は、重複記憶部136から取得ダウンロード情報のGUIDに対応するレコードを削除し(S3969)、未検証記憶部135から取得ダウンロード情報のGUIDを削除する(S3970)。
==解消要求対応(S52)==
図46は、上述した図36のステップS52においてサーバ20が実行する、解消要求45に対応する処理の流れを示す図である。
解消処理部221は、空の解消結果情報46を作成し(S5201)、解消要求45に含まれている解消情報のそれぞれについて、以下の処理を行う。
解消処理部221は、解消情報のGUIDが設定されていない場合には(S5202:YES)、新たに割り当てたGUIDと、解消情報に設定されているLUID、更新時点、キー、カラム、ヒントおよび本体とを設定したサーバレコードを作成してサーバデータベース21に登録し(S5203)、LUID、GUID、更新時点、「偽」の削除フラグ、および「成功」のステータスを含む結果情報を解消結果情報46に追加する(S5204)。
一方、解消情報にGUIDが設定されている場合(S5202:NO)、解消処理部221は、解消情報のGUIDに対応するサーバレコードをサーバデータベース21から検索し(S5205)、当該GUIDに対応するサーバレコードが存在しなければ(S5206:NO)、解消処理部221は、解消情報のGUIDと、「真」の削除フラグおよび「衝突」のステータスとを含む結果情報を解消結果情報46に追加する(S5207)。
上記GUIDに対応するサーバレコードが存在する場合(S5206:YES)、解消処理部221は、サーバレコードの更新時点と解消情報の更新時点とが一致しなければ(S5208:NO)、サーバレコードのGUIDおよび更新時点と、「偽」の削除フラグおよび「衝突」のステータスとを含む結果情報を解消結果情報46に追加する(S5209)。
解消処理部221は、更新時点が一致し(S5208:YES)、解消情報の削除フラグが「真」であれば(S5210:YES)、GUIDに対応するサーバレコードをサーバデータベース21から削除し(S5211)、削除フラグが「偽」であれば(S5210:NO)、解消処理部221は、サーバレコードに、解消情報の更新時点、キー、カラム、ヒントおよび本体を設定するようにサーバデータベース21を更新する(S5212)。
解消処理部221は、解消情報のLUID、GUID、更新時点および削除フラグと、「成功」のステータスとを含む結果情報を解消結果情報46に追加する(S5213)。また、解消処理部221は、解消情報のキーに一致するサーバレコードをサーバデータベース21から検索し(S5214)、一致するサーバレコードが存在する場合(S5215:YES)、検索したサーバレコードのGUIDおよび更新時点と、「偽」の削除フラグおよび「衝突」のステータスとを含む重複情報を解消結果情報46に追加する(S5216)。
以上の処理が各解消情報について行われる。
==解消結果対応(S54)==
図47は、上述した図36のステップS54においてクライアント10が実行する、解消結果情報46に対応する処理の流れを示す図である。
解消処理部124は、空のダウンロード要求43を作成し(S5401)、解消結果情報46に含まれている結果情報のそれぞれについて、以下の処理を行う。
解消処理部124は、結果情報に含まれるLUIDが未取得ID記憶部134に登録されている場合には(S5402:YES)、当該LUIDに対応するクライアントレコードに、結果情報のGUIDを設定するようにクライアントデータベース11を更新し(S5403)、未取得ID記憶部134から当該LUIDを削除する(S5404)。
次に、ステータスが「衝突」であれば(S5405:YES)、解消処理部124は、結果情報のGUIDを衝突記憶部137に登録し(S5406)、ダウンロード決定部115は、当該結果情報のGUIDが示すデータをダウンロードするか否かを決定する(S5407)。ダウンロード決定部115は、例えば、衝突したデータはサーバ20を優先するものとして、自動的にダウンロードすることを決定してもよいし、クライアントデータを優先するものとして、ダウンロードしないことを決定してもよいし、ユーザにダウンロードするか否かを問い合わせるようにしてもよい。また、結果情報にキーやカラム、ヒントなどを含めるようにしておき、ダウンロード決定部115は、キーやカラム、ヒントなどが所定の条件を満たす場合にダウンロードすることを決定するようにしてもよい。ダウンロード決定部115は、ダウンロードすると決定した場合には(S5409:YES)、結果情報のGUIDを含む取得情報を生成してダウンロード要求43に設定する(S5410)。
一方、ステータスが「成功」である場合には(S5405:NO)、解消処理部124は、結果情報のGUIDに対応するクライアント変更履歴をクライアント変更履歴記憶部133から削除する(S5408)。
以上の処理を結果情報のそれぞれについて繰り返した後、ダウンロード決定部115は、解消結果情報46に含まれている重複情報のうち、対応するデータをダウンロードするものを決定し(S5411)、決定した重複情報のGUIDを含む取得情報を生成してダウンロード要求43に設定する(S5412)。なお、ダウンロード要求43に取得情報が設定されなかった場合には、上述した図36のステップS55〜S58の処理を省略するものとする。
このようにして、選択フィルタにマッチするクライアントレコードとサーバレコードとの同期が行われる。
以上説明したように、上述した第1および第2の実施形態の通信システムによれば、サーバ20にサーバ変更履歴が記録されているデータについては、サーバ変更履歴に基づいてクライアント10がデータの追加、更新または削除を反映することができる。サーバ20側では、どのクライアント10についてどのデータが更新されているかなどを管理する必要がない。したがって、サーバ20においてクライアント10ごとの状態を管理するコストを低減することができる。よって、サーバ20を効果的に運用することができる。したがって、1台のサーバ20に多数のクライアント10からアクセスされる場合には効果的である。
また、本実施形態の通信システムでは、フィルタ条件を同期要求に設定して送信することで、サーバ20においてフィルタ条件にマッチするデータのみを対象として追加や削除、更新を検知することができる。したがって、例えば、サーバ20においてクライアント10が記憶しているデータの一覧を管理したり、クライアント10から記憶しているデータの一覧を送信したりすることなく、フィルタ条件にマッチする一部のデータのみを選択的に同期することが可能となるので、効率的なデータの同期を実現することができる。
また、一般に、新しいデータほど価値が高いことが多いところ、本実施形態の通信システムによれば、新しいデータについては、大量のデータが格納されるサーバデータベース21を検索することなく、サーバ変更履歴に基づいて同期を行うことができるので、効率的にデータの同期を行うことができる。つまり、より価値の高いデータについては、より効率的にデータの同期を行うことが可能となる。よって、クライアントとサーバとの間で効果的な同期を行うことができる。
また、一般に、フィルタアウトされたデータは同期の対象とせず、クライアント10のデータを削除するような同期が行われることが行われているところ、本実施形態では、クライアント10が同期の対象とするデータを決定しているため、クライアント10は、サーバ20においてフィルタアウトされたデータについても、ダウンロード要求にデータIDを指定して、同期の対象とすることができる。クライアント10においては、クライアントデータベース11には更新前のデータが記憶されており、クライアント10のユーザは、クライアントデータベース11に記憶されているデータに対して興味を有している。本実施形態の通信システムによれば、サーバ20側でフィルタアウトされたとしても、ユーザの興味範囲に含まれるデータ、すなわちユーザにとって重要度の高いデータを優先的に同期の対象とすることが可能となり、ユーザにとって便利である。また、ユーザの興味範囲に含まれるデータを優先的にダウンロードすることにより、ユーザにとって応答時間を短く感じさせることが期待される。
また、本実施形態の通信システムでは、サーバ20において追加や変更されたデータをいきなり送信することがなく、クライアント10はヒントを参考にして、必要なデータのみをダウンロードすることができる。したがって、例えば、携帯電話などでは、記憶容量が限られ、また通信速度にも限界があり、あまり大量のデータをダウンロードすることができないこともあるが、クライアント10は、記憶容量や通信速度などの状況に応じてデータを柔軟に取得することが可能となる。
また、本実施形態の通信システムによれば、アンカー時点が、バウンダリ時点よりも前である場合には、サーバ20は、アンカー時点からバウンダリ時点までに追加されたデータを検索し、変更特徴情報としてクライアント10に通知することができる。したがって、サーバ20においてバウンダリ時点より前のサーバ変更履歴を記録しておかなかったとしても、クライアント10は、少なくとも追加および更新されたデータを取得することができる。よって、サーバ20において全ての変更履歴を記憶することなく、データの同期を行うことが可能となるので、データの同期に係るサーバ20の負荷を抑えることができる。
また、本実施形態の通信システムによれば、アンカー時点がバウンダリ時点よりも前である場合、クライアント10からバウンダリ時点より前の更新時点のデータを陳腐化情報としてサーバ20に送信することで、更新や削除がされていないかどうかをサーバ20に問い合わせることができる。したがって、変更履歴が存在するデータについての更新に後続して、変更履歴が存在しないデータについても同期を行うようにすることができる。よって、確実なデータの同期を行うことが可能となる。
また、フィルタ条件を適用する対象となるカラムが更新された場合でも、更新前のカラムを旧カラムとしてサーバ変更履歴記憶部231に管理しているので、変更履歴が存在するデータについては、サーバ20においてデータが更新され、フィルタ条件にマッチしなくなった場合でも、クライアント10に記憶されているデータを同期することができる。
また、本実施形態の通信システムでは、サーバ20は、アンカー時点よりも後に作成され、その後削除されたデータについては、更新情報をクライアント10に送信しないようにしている。したがって、効率的な同期を行うことができる。
また、第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から同一のデータに対して変更が行われるような状況であっても、適切に同期を行うことができる。
==変形例==
なお、上述した実施形態では、データの作成時点や更新時点、削除時点などは、サーバデータベース21に対する変更の順番を表す値であるものとしたが、これに限らず、タイムスタンプを採用してもよい。この場合に、タイムスタンプの単位時間(例えば、ミリ秒、マイクロ秒など)が低く、同一のタイムスタンプに複数の変更が行われる得る場合には、タイムスタンプにデータの識別情報を連結したものを「時点」として採用するようにし、サーバ変更履歴記憶部231にサーバ変更履歴を登録するタイミングを少なくとも上記単位時間以上遅らせるようにするようにしてもよい。
また、上述の実施形態では、説明を簡単にするため、クライアント10およびサーバ20は1台ずつであるものとしたが、複数のクライアント10が1台のサーバ20に接続する形態としてもよいし、1台のクライアント10が複数のサーバ20に接続する形態としてもよいし、複数のクライアント10が複数のサーバ20に接続する形態としてもよい。
また、本実施形態では、クライアントIDは予めクライアントID記憶部131に記憶されているものとしたが、これに限らず、例えば、サーバ20がクライアントIDをクライアント10に割り当て、クライアント10がサーバ20から割り当てられたクライアントIDを取得してクライアントID記憶部131に登録するようにすることもできる。クライアントIDは、例えば、クライアント10が起動する度に再設定されるようにしてもよい。
また、本実施形態では、サーバ変更履歴記憶部231には、追加、更新および削除に関するサーバ変更履歴が登録されるものとしたが、削除に関するサーバ変更履歴のみを管理するようにしてもよい。この場合、同期要求41に対応する処理(図16や図38)のステップS3307において、サーバ20は、サーバデータベース21からアンカー時点よりも更新時点が後であるサーバレコードのGUIDや更新時点、ヒント、キーを取得して、変更特徴情報に設定するようにする。削除のみを管理することにより、サーバ変更履歴を管理するリソースを低減することができる。
また、サーバ変更履歴記憶部231を省略するようにすることもできる。この場合、サーバ20は、アンカー時点より後の更新時点を含むサーバレコードをサーバデータベース21から検索して変更特徴情報を作成するようにする。クライアント10は、同期情報42の対応処理(図19や図41)のステップS3506〜S3508において、全てのクライアントレコードの削除可能性フラグに「真」を設定するようにする。またこの場合にも、削除については、サーバ変更履歴に代えてサーバレコードに削除フラグを設定するようにして履歴を管理するようにてもよい。サーバ20は、定期的に現在の時点から所定の過去の時点以前のサーバレコードをサーバデータベース21から削除するようにすることができる。
また、本実施形態では、同期情報42には、フィルタ条件に該当する変更特徴情報を全て同期情報42に含めるものとしたが、同期情報42に含める変更特徴情報の数を制限するための条件(以下、「リミット条件」という。)を同期要求に含めるようにしてもよい。リミット条件は、例えば、レコードを所定のカラムでソートしたうちのn番目から所定数個などと設定することができる。
また、本実施形態では、フィルタ条件が必ず設定されるものとしたが、フィルタ条件を指定せず、全てのデータを更新対象としてもよい。
また、本実施形態では、同期情報42やダウンロード情報44、解消要求45などは1回の送信で送られるものとしたが、例えば、複数回に分けて送信するようにしてもよい。
また、本実施形態では、バウンダリ時点よりも前に追加または更新されたデータについても、変更特徴情報を同期情報42に含めるようにしたが、同期情報42にはバウンダリ時点以後のデータについての変更特徴情報のみを含めるようにし、クライアント10の更新処理部120が、アンカー時点がバウンダリ時点よりも前である場合に、バウンダリ時点よりも前に追加または更新されたデータを取得するためのコマンド(以下、「追加更新情報取得要求」という。)にアンカー時点およびバウンダリ時点を設定してサーバ20に送信するようにし、サーバ20の変更取得部215は、作成時点が追加更新情報取得要求に含まれるアンカー時点よりも後であり、かつ更新時点が追加更新情報取得要求に含まれるバウンダリ時点よりも前であるサーバレコードをサーバデータベース21から検索して変更特徴情報を作成し、クライアント10に送信するようにしてもよい。この場合、変更履歴に基づくデータの更新をより優先して処理することが可能となる。
また、サーバ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に記憶されているデータを全て削除してから、最初から同期処理をやり直すようにしてもよい。
また、本実施形態では、例えば図19のステップS3502などにおいて、同期情報42に含まれている最新履歴時点でアンカー時点を更新するものとしたが、同期情報42に含まれている変更特徴情報のうち、ダウンロード決定部115がダウンロードすべきと決定したデータに対応するものに含まれる最も新しい更新時点をアンカー時点として選択フィルタ条件に対応付けてアンカー記憶部132に登録するようにしてもよい。さらに、同期情報42を受信したときにはアンカー時点を更新せず、その後ダウンロード要求43に応じてサーバ20からダウンロード情報44を受信し、ダウンロード情報44に基づいてデータをクライアントデータベース11に登録するごとに、登録したデータの更新時点をアンカー時点としてアンカー記憶部132に登録するようにしてもよい。これにより、例えば、一度にダウンロードを行わず、所定数のデータをダウンロードしてクライアントデータベース11に登録する処理を複数回繰り返すような場合において、途中でダウンロードが失敗したときには、次回の同期処理において、失敗した時点以後のデータについて同期をやり直すことが可能となる。この場合、同期情報42に含まれていた全ての変更特徴情報に対応するデータをダウンロードしたときにのみ、同期情報42に含まれていた最新履歴時点をアンカー時点としてアンカー記憶部132に登録するようにしてもよい。
また、本実施形態では、陳腐化情報取得部117は、削除可能性フラグまたは更新可能性フラグが「真」であるクライアントレコードのうち、GUIDが取得情報に含まれていないものの全てについて陳腐化情報を作成するものとしたが、これに限らず、削除可能性フラグおよび更新可能性フラグの少なくともいずれかが「真」であるクライアントレコード、すなわちサーバ20において削除または更新されている可能性があるデータのうち、サーバ20において削除または更新されているかどうかを調べるべきものを決定し、決定したデータについてのみ陳腐化情報を作成するようにしてもよい。この場合、クライアント10は、例えば、削除可能性フラグおよび更新可能性フラグの少なくともいずれかが「真」であるクライアントレコードの全てについて陳腐化情報を作成するようにしてもよいし、所定の条件にマッチするクライアントデータについて陳腐化情報を作成するようにしてもよいし、クライアント10のユーザから指定されたクライアントデータについて陳腐化情報を作成するようにしてもよい。
また、本実施形態では、ダウンロード決定部115がダウンロードしないと決定したデータについては端的にダウンロードを行わないようにしたが、サーバ20において更新されているデータについては、クライアントレコードに更新されている旨を示すフラグ(以下、「更新フラグ」という。)を設定しておき、次の同期処理のときに、更新フラグが真であるものについてもダウンロードをするように決定するようにすることもできる。この場合、ダウンロード決定部115は、例えば、同期情報42に含まれている変更特徴情報に基づいて追加または更新されているデータを特定するとともに、クライアントデータベース11から更新フラグが真であるクライアントレコードを検索し、特定したデータと検索したクライアントレコードとの中からダウンロードすべきデータを決定することができる。
また、ダウンロード決定部115がダウンロードしないと決定したデータについて、後からダウンロードするようにしてもよいし、クライアントデータベース11から削除するようにしてもよい。
また、クライアントデータベース11に記憶される古いデータを定期的に削除するようにしてもよい。この場合、クライアント10は、例えば、1分や5分、1時間などの所定の時間ごとあるいはクライアント10における処理の負荷が低減したことを検知したときに、クライアントレコードのうち、更新時点が現在の日時よりも所定時間以上前のものをクライアントデータベース11から削除するようにすることができる。アンカー記憶部132が、フィルタ条件とアンカー時点とに対応付けて、これらがアンカー記憶部132に登録された日時を記憶しておき、クライアント10は、登録日時が現在の日時よりも所定時間以上前か否かによりフィルタ条件が古いか新しいかを判断し、古いフィルタ条件にマッチするクライアントレコードのうち、新しいフィルタ条件にマッチしないものを、クライアントデータベース11から削除するようにすることもできる。
また、上述の実施形態では、サーバ変更履歴は、変更の種別(追加、更新または削除)を問わず、サーバ20においてデータが変更される度に1つ作成されるものとしたが、これに限らず、例えば、更新されたデータについて1つのサーバ変更履歴を記録するようにしてもよい。この場合、サーバ変更履歴には、例えば、変更されたデータの項目を、「{項目=最新値,直近値,...,最古値}」というリスト表現とするなど、データの各項目について所定数の履歴を設定可能としておく。サーバレコードが更新されるたびに、更新されたサーバレコードのGUIDに対応するサーバ変更履歴をサーバ変更履歴記憶部231から検索し、サーバ変更履歴が存在する場合には、更新されたサーバレコードの最新値を、サーバ変更履歴に含まれる項目の最新値として設定するようにする。項目の履歴のリストが所定数を越えた場合には、最古の値をリストから削除するようにする。このように、同一のサーバレコードについての複数の更新を1つの変更履歴で管理することで、ある1つのサーバレコードの対する更新頻度が高くなった場合にも、そのサーバレコードの更新についてのサーバ変更履歴がサーバ変更履歴記憶部231を独占してしまうような状況を回避することができる。したがって、変更履歴の数を有限にしている場合において、サーバレコードの更新頻度が高いときでも、より多くのデータについての変更履歴を管理することができる。よって、有限の変更履歴であっても、サーバ20におけるデータの変更を確実に管理することが可能となる。
また、本実施形態では、サーバデータベース21が、データの本体に加えてキーやカラム、ヒントなども含んだサーバレコードを記憶するものとしたが、データの本体と、そのデータのキーやカラム、ヒントなどのメタ情報とを異なるデータとして記憶するようにしてもよい。例えば、サーバデータベース21が記憶するサーバレコードには、GUID、作成時点、更新時点および本体のみが含まれているものとし、サーバ20は、サーバデータベース21に記憶されているサーバレコードのそれぞれに対応するGUID、更新時点、キー、カラムおよびヒントを含む情報(以下、「ヘッダデータ」という。)を記憶するヘッダデータベースを備えるようにすることができる。この場合、図16や図38に示す同期要求41への対応処理のステップS3307において、変更取得部215は、ヘッダデータベースから、更新時点がアンカー時点より後であり、かつ更新時点がバウンダリ時点より前であるデータを読み出して、変更特徴情報を作成する。したがって、変更取得部215は、サーバデータベース21にアクセスすることなく、同期要求41に応じて、アンカー時点からバウンダリ時点までの間に追加や更新がなされたデータを検出することが可能となり、サーバデータベース21へのアクセスが多いような場合でも、効率的に同期の対象となりうるデータを検出することができる。また、ヘッダデータベースを設けることにより、サーバデータベース21の構成を変更することなく、ヘッダデータを用いてデータの同期を行うことができる。したがって、例えば、運用中のサーバデータベース21が存在している場合などにも、容易に運用中のサーバデータベース21を同期の対象とすることが可能となる。
また、同様に、クライアント10が、クライアントデータベース11とは別に、ヘッダデータを記憶するヘッダデータベースを備えるようにしてもよい。この場合、例えば、クライアント10において、クライアントデータベース11を利用するPIM(Personal Information Manager)アプリケーションなどが動作しているときでも、クライアントデータベース11の構成を変更することなく、データの同期を行うようにすることが可能となる。
また、本実施形態では、削除についてのサーバ変更履歴をサーバ変更履歴記憶部231に登録するものとしたが、サーバレコードに削除フラグを設定するようにしてもよい。この場合、サーバレコードを削除するときには、サーバレコードの削除フラグを真に設定するとともに、更新時点に現在の時点を設定するようにする。また、定期的に、削除フラグが真に設定されているサーバレコードのうち、サーバレコードの更新時点がバウンダリ時点(サーバ変更履歴記憶部231に登録されているサーバ変更履歴の最古の更新時点)よりも古いものをサーバデータベース21から削除するようにする。変更履歴取得部214は、選択フィルタ条件にマッチするサーバ変更履歴をサーバ変更履歴記憶部231から検索するとともに、選択フィルタ条件にマッチするサーバレコードのうち削除フラグが真であるものを検索し、検索したサーバ変更履歴およびサーバレコードに基づいて変更特徴情報を作成するようにする。変更履歴取得部214は、選択フィルタ条件にマッチするサーバ変更履歴の最も新しい時点と、削除フラグが「真」であるサーバレコードの最も新しい更新時点のうち新しい方を最新履歴時点として決定するようにする。
また、本実施形態では、サーバ変更履歴は、サーバ変更履歴記憶部231にまとめて登録するものとしたが、サーバデータベース21に登録されるサーバレコードに付帯させて記憶するようにしてもよい。例えば、サーバレコードをオブジェクトとして実装する場合に、サーバレコードのインスタンスごとにサーバ変更履歴をその属性として管理するようにすることができる。この場合、インスタンスごとに所定数のサーバ変更履歴を記憶しておくようにし、所定数を超えるサーバ変更履歴は古い更新時点のものから順に削除されていくようにする。
また、本実施形態では、図41(および図19)に示す同期情報42の対応処理のステップS3508において、更新時点がバウンダリ時点よりも前のデータについて、削除可能性フラグおよび更新可能性フラグを真に設定するものとしたが、衝突または重複を検知したためにダウンロードをしなかった時点を考慮するようにしてもよい。この場合、クライアントレコードには、判明しているサーバレコードの更新時点を示す「観測時点」を含めるようにし、例えば、上述した図44の衝突解消処理や図45の重複解消処理のループの中で、取得ダウンロード情報に設定されているGUIDに対応するクライアントレコードがクライアントデータベース11に存在していれば、対応するクライアントレコードの観測時点に取得ダウンロード情報の更新時点を設定するようにする。また、フィルタ条件にマッチするクライアントレコードの観測時点が、フィルタ条件に対応するアンカー時点よりも前である場合には、クライアントレコードの観測時点をアンカー時点に更新するようにする。さらに、図41のステップS3508において更新可能性フラグのみを「真」に設定するようにし、続いてフィルタ条件にマッチし、かつ、観測時点がバウンダリ時点より前であるものを検索し、当該検索したクライアントデータの削除可能性フラグを「真」に設定するようにする。これにより、サーバ20において削除されていないことが判明している時点より前のデータに削除可能性フラグを設定することがなくなる。これにより、クライアント10は、削除可能性フラグが「偽」であり、更新可能性フラグが「真」であるクライアントレコードについては、当該クライアントレコードは少なくともサーバで削除はされていないと判断することができる。したがって、例えば、クライアント10が、クライアントレコードがサーバ20で削除されていないかどうかをサーバ20に問い合わせるような場合には、削除可能性フラグが「真」であるクライアントレコードについてのみサーバ20に問い合わせればよいので、問合わせの対象となるクライアントレコードを絞り込むことができる。また、ダウンロード決定部115がダウンロードするデータを決定する場合において、削除可能性フラグに応じて優先順位をつけるようにすることもできる。例えば、1回のダウンロード可能なデータ数に制限があるような場合には、削除可能性フラグが「偽」であるデータを先にダウンロードしたり、逆に、削除可能性フラグが「真」であるデータを先にダウンロードしたりすることができる。
また、第2の実施形態では、サーバ20は、同期要求41に含まれるフィルタ条件にマッチするサーバ変更履歴のみをクライアント10に応答するものとしたが、これに限らず、例えば、フィルタ条件にマッチしなくても、フィルタ条件に指定された値に類似するものも同期情報42に設定するようにしてもよい。この場合、サーバ20は、フィルタ条件にマッチしなかった旨を示すフラグ(以下、「マッチ不明フラグ」という。)をサーバ変更履歴に付帯させて同期情報42に設定し、クライアント10は、例えば、マッチ不明フラグが偽であるものについては、ユーザに対して、フィルタ条件にマッチはしないが、マッチする可能性がある旨の提案情報として表示するようにしてもよい。
また、第2の実施形態では、同期要求41には、重複記憶部136および衝突記憶部137にGUIDが登録されていない全てのクライアント変更履歴に対応する変更特徴情報が含まれるものとしたが、同期要求41には重複記憶部136および衝突記憶部137にGUIDが登録されておらず、かつ、変更種別が「削除」であるクライアント変更履歴に基づく変更特徴情報のみを含めるようにしてもよい。この場合、サーバ20は、図36に示すステップS33の同期要求の対応処理(図38)において、ステップS3310の衝突重複の検知処理を省略し、変更種別が「削除」以外のクライアント変更履歴については、衝突するものについては、解消処理部124によって、図44のステップ3943においてクライアントレコードと、サーバレコードのいずれかを選択した上で、解消要求45に含められ、衝突しないものについては、解消処理部124は、図43のステップ3908の後に、対応するクライアントレコードを解消要求45に含めるようにする。このようにすることで、サーバ20において衝突や重複の検出処理を行う処理負荷を軽減することができる。
以上、本実施形態について説明したが、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
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 解消結果情報受信部
124 解消処理部
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 解消処理部
222 解消結果情報送信部
231 サーバ変更履歴記憶部

Claims (20)

  1. サーバと、前記サーバに通信可能に接続されるクライアントとの間でデータを同期するシステムであって、
    前記サーバは、更新時点を含むデータを記憶する第1データベースにアクセス可能であり、
    前記クライアントは、前記サーバから取得したデータを記憶する第2データベースにアクセス可能であり、
    前記クライアントは、前記サーバから最後に前記データを取得した時点であるアンカー時点を記憶するアンカー時点記憶部と、前記アンカー時点を含む同期要求を前記サーバに送信する同期要求送信部と、を備え、
    前記サーバは、前記更新時点が前記アンカー時点よりも後の前記データである更新データを前記第1データベースから検索し、前記各更新データについて前記更新データを示すデータIDおよび前記更新データの前記更新時点を含む変更情報を生成する変更情報取得部と、前記変更情報を含む同期情報を前記クライアントに送信する同期情報送信部と、を備え、
    前記クライアントは、前記変更情報に対応する前記データのうち、ダウンロードすべきものである取得データを決定するダウンロード決定部と、前記取得データを示すデータIDを含むダウンロード要求を前記サーバに送信するダウンロード要求送信部と、を備え、
    前記サーバは、前記ダウンロード要求に含まれる前記データIDに対応する前記データを前記第1データベースから取得するデータ取得部と、前記取得したデータを含むダウンロード情報を前記クライアントに送信するダウンロード情報送信部と、を備え、
    前記クライアントは、前記ダウンロード情報に含まれる前記データを前記第2データベースに登録する更新処理部を備えること、
    を特徴とするデータ同期システム。
  2. 請求項1に記載のデータ同期システムであって、
    前記ダウンロード決定部は、前記各変更情報について、前記変更情報に含まれる前記データIDに対応する前記データに含まれる前記更新時点を前記第2データベースから取得し、前記第2データベースから取得した前記更新時点が前記変更情報に含まれる前記更新時点よりも古い場合には、当該データをダウンロードすることを決定し、前記第2データベースから取得した前記更新時点が前記変更情報に含まれる前記更新時点よりも新しい場合には、ユーザからの設定に応じて、当該データをダウンロードするか否かを決定すること、
    を特徴とするデータ同期システム。
  3. 請求項1に記載のデータ同期システムであって、
    前記サーバは、前記第1データベースから削除された前記データを示す前記データIDおよび削除時点を含む変更履歴を記憶するサーバ変更履歴記憶部と、前記同期要求に含まれる前記アンカー時点よりも後の前記削除時点を含む前記変更履歴を前記サーバ変更履歴記憶部から取得する変更履歴取得部とを備え、
    前記同期情報送信部は、前記変更履歴取得部が取得した前記変更履歴を前記同期情報にさらに含め、
    前記クライアントは、前記同期情報に含まれる前記変更履歴に対応する前記データを前記第2データベースから削除する削除処理部を備えること、
    を特徴とするデータ同期システム。
  4. 請求項1に記載のデータ同期システムであって、
    前記サーバは、前記第1データベースから削除されたデータについて、前記削除されたデータを示すデータIDおよび削除時点を含む変更履歴を、前記削除時点の新しい順に所定数記憶するサーバ変更履歴記憶部を備え、
    前記変更情報取得部は、前記アンカー時点より後の前記削除時点を含む前記変更履歴を前記サーバ変更履歴記憶部から取得し、
    前記同期情報送信部は、前記変更情報に加えて、前記サーバ変更履歴記憶部が記憶している前記変更履歴に含まれる最も古い前記削除時点であるバウンダリ時点、および前記取得した変更履歴を前記同期情報に含めて前記クライアントに送信し、
    前記クライアントは、
    前記同期情報に含まれる前記変更履歴に対応する前記データを前記第2データベースから削除する削除処理部と、
    前記アンカー時点が前記バウンダリ時点より前である場合に、前記第2データベースに記憶されている前記データのうち、前記データの前記更新時点が前記バウンダリ時点よりも前であり、かつ、前記データを示すデータIDを含む前記変更情報が前記同期情報に含まれていないものを検索し、前記検索した各データについて前記データを示すデータIDおよび前記データの前記更新時点を含む陳腐化情報を生成する陳腐化情報取得部と、
    を備え、
    前記ダウンロード要求送信部は、前記取得データIDに加えて、前記陳腐化情報を前記ダウンロード要求に含めて前記サーバに送信し、
    前記データ取得部はさらに、前記ダウンロード要求に含まれる前記各陳腐化情報について、前記陳腐化情報に対応する前記データが前記第1データベースに記憶されているか否かを判定し、前記第1データベースに記憶されていないと判定した前記データを示す前記データIDを、削除されたデータを示す削除IDとして前記ダウンロード情報に含め、
    前記削除処理部は、前記ダウンロード情報に含まれる前記削除IDに対応する前記データを前記第2データベースから削除すること、
    を特徴とするデータ同期システム。
  5. 請求項1に記載のデータ同期システムであって、
    前記クライアントは、前記同期情報に含まれている前記各変更情報について、前記変更情報に含まれる前記データIDに対応する前記データの前記更新時点を前記第2データベースから読み出し、前記読み出した更新時点が前記変更情報に含まれる前記更新時点よりも新しい場合に、前記データIDに対応する前記データを前記サーバにアップロードするか前記サーバからダウンロードするかを決定する衝突解消部を備え、
    前記ダウンロード要求送信部は、前記衝突解消部がダウンロードすると決定した前記データを示す前記データIDをさらに含む前記ダウンロード要求を前記サーバに送信し、
    前記クライアントは、前記衝突会勝負がアップロードすると決定した前記データを前記第2データベースから読み出し、読み出した前記データを含む解消要求を前記サーバに送信する解消要求送信部を備え、
    前記サーバは、前記解消要求に含まれている前記データを前記第1データベースに登録する解消処理部を備えること、
    を特徴とするデータ同期システム。
  6. サーバと、前記サーバに通信可能に接続されるクライアントとの間でデータを同期するシステムであって、
    前記サーバは、データに更新時点を付帯させて記憶する第1データベースにアクセス可能であり、前記クライアントは、前記サーバから取得したデータを記憶する第2データベースにアクセス可能であり、
    前記サーバは、前記第1データベースに対するデータの変更履歴を新しい順に所定数のみ記憶するサーバ変更履歴記憶部を備え、
    前記サーバ変更履歴記憶部が記憶する前記変更履歴であるサーバ変更履歴は、変更の対象となった前記データを示すデータIDと、当該データに付帯されている前記更新時点とを含み、
    前記クライアントは、
    前記サーバから最後に前記データを取得した時点であるアンカー時点を記憶するアンカー記憶部と、
    前記データを取得するための条件および前記アンカー時点を含む同期要求を前記サーバに送信する同期要求送信部と、
    前記サーバは、
    前記サーバ変更履歴記憶部から、前記同期要求に含まれる前記条件にマッチする前記データに対応する前記サーバ変更履歴のうち、前記更新時点が前記アンカー時点より後のものを取得する変更履歴取得部と、
    前記第1データベースから、前記同期要求に含まれる前記条件にマッチする前記データのうち、前記更新時点が前記アンカー時点より後であり、かつ前記サーバ変更履歴記憶部に記憶されている最も古い前記更新時点であるバウンダリ時点より前であるものを検索し、前記検索した各データについて、前記データを示す前記データIDおよび前記データに付帯される前記更新時点を含む変更情報を生成する変更情報取得部と、
    前記バウンダリ時点、前記取得したサーバ変更履歴、および前記変更情報を含む同期情報を前記クライアントに送信する同期情報送信部と、
    を備え、
    前記クライアントは、
    前記同期情報に含まれる前記サーバ変更履歴または前記変更情報に対応する前記データからダウンロードすべきものを決定するダウンロード決定部と、
    前記第2データベースから、前記条件にマッチする前記データのうち、前記更新時点が前記アンカー時点から前記バウンダリ時点までの間であるものを検索し、前記検索した各データについて、前記データを示す前記データIDおよび前記データに付帯される前記更新時点を含む陳腐化情報を生成する陳腐化情報取得部と、
    前記決定したデータを示す取得データIDおよび前記陳腐化情報を含むダウンロード要求を前記サーバに送信するダウンロード要求送信部と、
    を備え、
    前記サーバは、
    前記ダウンロード要求に含まれる前記陳腐化情報に対応する前記データのうち、前記更新時点が前記陳腐化情報に含まれる前記更新時点よりも新しいものと、前記取得データIDに対応する前記データとを前記第1データベースから取得するデータ取得部と、
    前記取得したデータを含むダウンロード情報を前記クライアントに送信するダウンロード情報送信部と、
    を備え、
    前記クライアントは、前記ダウンロード情報に含まれる前記データを前記第2データベースに登録する更新処理部を備えること、
    を特徴とするデータ同期システム。
  7. 請求項6に記載のデータ同期システムであって、
    前記サーバ変更履歴にはさらに、データの変更がデータの追加、更新または削除のいずれであったかを示す変更種別情報が含まれ、
    前記クライアントが、前記同期情報の受信に応じて、前記同期情報に含まれる前記サーバ変更履歴のうち、前記変更種別情報が削除を示すものについて、前記サーバ変更履歴に含まれる前記データIDが示す前記データを前記第2データベースから削除する削除処理部を備えること、
    を特徴とするデータ同期システム。
  8. 請求項6に記載のデータ同期システムであって、
    前記データ取得部は、前記ダウンロード要求に含まれる前記陳腐化情報のうち、前記陳腐化情報に含まれる前記データIDに対応する前記データが前記第1データベースに登録されていないものについて、前記陳腐化情報に含まれる前記データIDを含む削除情報を前記ダウンロード情報に設定し、
    前記クライアントは、前記ダウンロード情報に前記削除情報が含まれている場合に、前記削除情報に含まれる前記データIDに対応する前記データを前記第2データベースから削除する削除処理部を備えること、
    を特徴とするデータ同期システム。
  9. 請求項6に記載のデータ同期システムであって、
    前記データには、前記データの内容に基づいて生成される、前記条件に前記データがマッチするか否かを判定するための情報であるカラムがさらに付帯され、
    前記サーバ変更履歴には、データの変更がデータの追加、更新または削除のいずれであったかを示す変更種別情報と、前記データに付帯される前記カラムとがさらに含まれ、
    前記変更履歴取得部は、前記サーバ変更履歴のうち、前記カラムが前記同期要求に含まれる前記条件にマッチし、かつ前記更新時点が前記アンカー時点より後のものを取得し、
    前記変更情報取得部は、前記第1データベースに記憶されている前記データのうち、前記データに付帯される前記カラムが前記同期要求に含まれる前記条件にマッチするとともに、前記更新時点が前記アンカー時点より後であり、かつ前記バウンダリ時点より前であるものを検索し、前記検索した各データについて、前記データを示す前記データID、前記データに付帯される前記更新時点、および前記データに含まれる前記カラムを前記変更情報に設定し、
    前記陳腐化情報取得部は、前記第2データベースに記憶されるデータのうち、前記カラムが前記条件にマッチし、かつ前記更新時点が前記アンカー時点から前記バウンダリ時点までの間であるものを検索すること、
    を特徴とするデータ同期システム。
  10. 請求項6に記載のデータ同期システムであって、
    前記データには、前記データの内容に基づいて生成される、前記クライアントにおいて前記データをダウンロードすべきか否かを決定するための情報であるヒントがさらに付帯され、
    前記サーバ変更履歴には、データの変更がデータの追加、更新または削除のいずれであったかを示す変更種別情報と、前記データの付帯される前記ヒントとがさらに含まれ、
    前記変更情報取得部は、前記検索した各データについて、前記データに付帯される前記ヒントをさらに前記変更情報に含め、
    前記ダウンロード決定部は、前記サーバ変更履歴または前記変更情報に含まれる前記ヒントに基づいて前記ダウンロードすべきデータを決定すること、
    を特徴とするデータ同期システム。
  11. 請求項10に記載のデータ同期システムであって、
    前記ダウンロード決定部は、前記サーバ変更履歴または前記変更情報に含まれる前記ヒントを出力し、ユーザが選択した前記出力したヒントに対応する前記データを、前記ダウンロードすべきデータとして決定すること、
    を特徴とするデータ同期システム。
  12. 請求項6に記載のデータ同期システムであって、
    前記データには前記更新時点が付帯され、
    前記サーバは、前記第1データベースに対する操作が行われるごとに大きくなる数値を前記更新時点として生成する時点生成部を備え、
    前記第1データベースに書き込まれる際に、前記データには前記時点生成部が生成した前記更新時点が付帯されること、
    を特徴とするデータ同期システム。
  13. 請求項6に記載のデータ同期システムであって、
    前記データには前記更新時点が付帯され、
    前記サーバは、前記第1データベースに対する操作が行われる際に、前記サーバにおけるタイムスタンプを取得し、前記取得したタイムスタンプに、前記データの識別情報を連結した値を前記更新時点として生成する時点生成部を備え、
    前記第1データベースに書き込まれる際に、前記データには前記時点生成部が生成した前記更新時点が付帯されること、
    を特徴とするデータ同期システム。
  14. 請求項6に記載のデータ同期システムであって、
    前記クライアントは、前記第2データベースにおけるデータの変更履歴を記憶するクライアント変更履歴記憶部を備え、
    前記クライアント変更履歴記憶部が記憶する前記変更履歴であるクライアント変更履歴は、変更の対象となった前記データを示す前記データIDと、前記データに付帯されている前記更新時点とを含み、
    前記同期要求送信部は、前記条件にマッチする前記データに対応する前記クライアント変更履歴を前記クライアント変更履歴記憶部から取得し、前記取得したクライアント変更履歴を前記同期要求に設定して前記サーバに送信し、
    前記サーバは、前記同期要求に含まれる前記クライアント変更履歴のそれぞれについて、前記クライアント変更履歴に含まれる前記データIDに対応する、前記第1データベースが記憶する前記データに付帯されている前記更新時点が、前記クライアント変更履歴に含まれている前記更新時点よりも後である場合、前記第1データベースが記憶する前記データに付帯される前記更新時点および前記データIDを含む衝突情報を生成する衝突検知部を備え、
    前記同期情報送信部は、前記衝突情報をさらに含む前記同期情報を前記クライアントに送信し、
    前記クライアントは、前記衝突情報に含まれる前記データIDに対応する前記データを、前記サーバにアップロードするか前記サーバからダウンロードするかを決定する衝突解消部を備え、
    前記ダウンロード要求送信部は、前記衝突解消部がダウンロードすると決定した前記データを示す前記データIDをさらに含む前記ダウンロード要求を前記サーバに送信し、
    前記クライアントは、前記衝突解消部がアップロードすると決定した前記データを前記第2データベースから読み出し、読み出した前記データを含む解消要求を前記サーバに送信する解消要求送信部を備え、
    前記サーバは、前記解消要求に含まれている前記データを前記第1データベースに登録する解消処理部を備えること、
    を特徴とするデータ同期システム。
  15. 請求項14に記載のデータ同期システムであって、
    前記データにはさらに、前記データに所定のアルゴリズムを適用して求められるデータであるキーが付帯され、
    前記サーバ変更履歴および前記クライアント変更履歴にはそれぞれ前記キーが含まれ、
    前記サーバは、前記第1データベースに記憶されている前記データのうち、前記キーが前記同期要求に含まれる前記クライアント変更履歴のいずれかに含まれる前記キーと一致するものを検索し、前記検索したデータを示す前記データIDを含む重複情報を生成する重複検知部を備え、
    前記同期情報送信部は、前記重複情報をさらに含む前記同期情報を前記クライアントに送信し、
    前記クライアントは、前記重複情報に含まれる前記データIDに対応する前記データのうち、削除すべきものを決定する重複解消部を備え、
    前記解消要求送信部は、前記重複解消部が削除すべきと決定した前記データを示す前記データIDを含む解消情報をさらに前記解消要求に含めて前記サーバに送信し、
    前記解消処理部はさらに、前記解消要求に含まれる前記解消情報に含まれる前記データIDに対応する前記データを前記第1データベースから削除すること、
    を特徴とするデータ同期システム。
  16. 請求項14に記載のデータ同期システムであって、
    前記データには前記データ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登録部を備えること、
    を特徴とするデータ同期システム。
  17. サーバと、前記サーバに通信可能に接続されるクライアントとの間でデータを同期する方法であって、
    前記サーバは、更新時点を含むデータを記憶する第1データベースにアクセス可能であり、前記クライアントは、前記サーバから取得したデータを記憶する第2データベースにアクセス可能であり、
    前記クライアントは、前記サーバから最後に前記データを取得した時点であるアンカー時点を記憶し、前記アンカー時点を含む同期要求を前記サーバに送信し、
    前記サーバは、前記更新時点が前記アンカー時点よりも後の前記データである更新データを前記第1データベースから検索し、前記各更新データについて前記更新データを示すデータIDおよび前記更新データの前記更新時点を含む変更情報を生成し、前記変更情報を含む同期情報を前記クライアントに送信し、
    前記クライアントは、前記変更情報に対応する前記データのうち、ダウンロードすべきものである取得データを決定し、前記取得データを示すデータIDを含むダウンロード要求を前記サーバに送信し、
    前記サーバは、前記ダウンロード要求に含まれる前記データIDに対応する前記データを前記第1データベースから取得し、前記取得したデータを含むダウンロード情報を前記クライアントに送信し、
    前記クライアントは、前記ダウンロード情報に含まれる前記データを前記第2データベースに登録すること、
    を特徴とするデータ同期方法。
  18. 請求項17に記載のデータ同期方法であって、
    前記クライアントは、前記同期情報に含まれている前記各変更情報について、前記変更情報に含まれる前記データIDに対応する前記データの前記更新時点を前記第2データベースから読み出し、前記読み出した更新時点が前記変更情報に含まれる前記更新時点よりも新しい場合に、前記データIDに対応する前記データを前記サーバにアップロードするか前記サーバからダウンロードするかを決定し、
    前記クライアントは、ダウンロードすると決定した前記データを示す前記データIDをさらに含む前記ダウンロード要求を前記サーバに送信し、
    前記クライアントは、アップロードすると決定した前記データを前記第2データベースから読み出し、読み出した前記データを含む解消要求を前記サーバに送信し、
    前記サーバは、前記解消要求に含まれている前記データを前記第1データベースに登録すること、
    を特徴とするデータ同期方法。
  19. サーバと、前記サーバに通信可能に接続されるクライアントとの間でデータを同期する方法であって、
    前記サーバは、データに更新時点を付帯させて記憶する第1データベースにアクセス可能であり、前記クライアントは、前記サーバから取得したデータを記憶する第2データベースにアクセス可能であり、
    前記サーバは、前記第1データベースに対するデータの変更履歴を新しい順に所定数のみ記憶しており、
    前記サーバが記憶する前記変更履歴であるサーバ変更履歴は、変更の対象となった前記データを示すデータIDと、当該データに付帯されている前記更新時点とを含み、
    前記クライアントが、前記サーバから最後に前記データを取得した時点であるアンカー時点を記憶し、
    前記クライアントが、前記データを取得するための条件および前記アンカー時点を含む同期要求を前記サーバに送信し、
    前記サーバが、前記同期要求に含まれる前記条件にマッチする前記データに対応する前記サーバ変更履歴のうち、前記更新時点が前記アンカー時点より後のものを取得し、
    前記サーバが、前記第1データベースから、前記同期要求に含まれる前記条件にマッチする前記データのうち、前記更新時点が前記アンカー時点より後であり、かつ前記サーバが記憶している前記サーバ変更履歴の前記更新時点のうち最も古いものであるバウンダリ時点より前である前記データを検索し、前記検索した各データについて、前記データを示す前記データIDおよび前記データに付帯される前記更新時点を含む変更情報を生成し、
    前記サーバが、前記バウンダリ時点、前記取得したサーバ変更履歴、および前記変更情報を含む同期情報を前記クライアントに送信し、
    前記クライアントが、前記同期情報に含まれる前記サーバ変更履歴または前記変更情報に対応する前記データからダウンロードすべきものを決定し、
    前記クライアントが、前記第2データベースから、前記条件にマッチする前記データのうち、前記更新時点が前記アンカー時点から前記バウンダリ時点までの間であるものを検索し、前記検索した各データについて、前記データを示す前記データIDおよび前記データに付帯される前記更新時点を含む陳腐化情報を生成し、
    前記クライアントが、前記決定したデータを示す取得データIDおよび前記陳腐化情報を含むダウンロード要求を前記サーバに送信し、
    前記サーバが、前記ダウンロード要求に含まれる前記陳腐化情報に対応する前記データのうち、前記更新時点が前記陳腐化情報に含まれる前記更新時点よりも新しいものと、前記取得データIDに対応する前記データとを前記第1データベースから取得し、
    前記サーバが、前記取得したデータを含むダウンロード情報を前記クライアントに送信し、
    前記クライアントが、前記ダウンロード情報に含まれる前記データを前記第2データベースに登録すること、
    を特徴とするデータ同期方法。
  20. 請求項19に記載のデータ同期方法であって、
    前記クライアントは、前記第2データベースにおけるデータの変更履歴を記憶しており、
    前記クライアントが記憶する前記変更履歴であるクライアント変更履歴は、変更の対象となった前記データを示す前記データIDと、前記データに付帯されている前記更新時点とを含み、
    前記クライアントは、前記条件にマッチする前記データに対応する前記クライアント変更履歴を取得し、前記取得したクライアント変更履歴を前記同期要求に設定して前記サーバに送信し、
    前記サーバは、前記同期要求に含まれる前記クライアント変更履歴のそれぞれについて、前記クライアント変更履歴に含まれる前記データIDに対応する、前記第1データベースが記憶する前記データに付帯されている前記更新時点が、前記クライアント変更履歴に含まれている前記更新時点よりも後である場合、前記第1データベースが記憶する前記データに付帯される前記更新時点および前記データIDを含む衝突情報を生成し、
    前記サーバは、前記衝突情報をさらに含む前記同期情報を前記クライアントに送信し、
    前記クライアントは、前記衝突情報に含まれる前記データIDに対応する前記データを、前記サーバにアップロードするか前記サーバからダウンロードするかを決定し、
    前記クライアントは、前記ダウンロードすると決定したデータを示す前記データIDをさらに含む前記ダウンロード要求を前記サーバに送信し、
    前記クライアントは、前記アップロードすると決定したデータを前記第2データベースから読み出し、読み出した前記データを含む解消要求を前記サーバに送信し、
    前記サーバは、前記解消要求に含まれている前記データを前記第1データベースに登録すること、
    を特徴とするデータ同期方法。
JP2009204686A 2009-09-04 2009-09-04 データ同期システムおよびデータ同期方法 Expired - Fee Related JP5061166B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2009204686A JP5061166B2 (ja) 2009-09-04 2009-09-04 データ同期システムおよびデータ同期方法
PCT/JP2010/063623 WO2011027654A1 (ja) 2009-09-04 2010-08-11 データ同期システムおよびデータ同期方法
CN201080039401.8A CN102483715B (zh) 2009-09-04 2010-08-11 数据同步系统以及数据同步方法
EP10813605.2A EP2474911B1 (en) 2009-09-04 2010-08-11 Data synchronization system and data synchronization method
KR1020127007751A KR101569562B1 (ko) 2009-09-04 2010-08-11 데이터 동기 시스템 및 데이터 동기 방법
US13/390,431 US8775374B2 (en) 2009-09-04 2010-08-11 Data synchronization system and data synchronization method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009204686A JP5061166B2 (ja) 2009-09-04 2009-09-04 データ同期システムおよびデータ同期方法

Publications (2)

Publication Number Publication Date
JP2011054092A JP2011054092A (ja) 2011-03-17
JP5061166B2 true JP5061166B2 (ja) 2012-10-31

Family

ID=43649199

Family Applications (1)

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

Country Status (5)

Country Link
US (1) US8775374B2 (ja)
EP (1) EP2474911B1 (ja)
JP (1) JP5061166B2 (ja)
KR (1) KR101569562B1 (ja)
WO (1) WO2011027654A1 (ja)

Families Citing this family (193)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8924344B2 (en) * 2007-11-28 2014-12-30 Microsoft Corporation User profile replication
US9456054B2 (en) 2008-05-16 2016-09-27 Palo Alto Research Center Incorporated Controlling the spread of interests and content in a content centric network
US8923293B2 (en) 2009-10-21 2014-12-30 Palo Alto Research Center Incorporated Adaptive multi-interface use for content networking
JP2011221583A (ja) * 2010-04-02 2011-11-04 Seiko Epson Corp コンテンツ提供システム、情報処理装置、コンテンツ提供方法、プログラムおよびコンピューター読み取り可能な記録媒体
US20120117105A1 (en) * 2010-11-05 2012-05-10 Apple Inc. Collaborative Database Operations
US8707022B2 (en) * 2011-04-05 2014-04-22 Apple Inc. Apparatus and methods for distributing and storing electronic access clients
JP5656722B2 (ja) * 2011-04-11 2015-01-21 Kii株式会社 データ同期装置、データ同期システム、データ同期方法及びプログラム
US9225792B2 (en) * 2011-07-12 2015-12-29 Alcatel Lucent System and method for caching mobile services database objects
US8682868B2 (en) * 2011-12-02 2014-03-25 International Business Machines Corporation Removal of data remanence in deduplicated storage clouds
JP5890674B2 (ja) * 2011-12-07 2016-03-22 キヤノン株式会社 情報処理装置、情報処理方法
CN102571923A (zh) * 2011-12-13 2012-07-11 中国电子科技集团公司第十五研究所 数据同步系统及方法
US8601121B2 (en) * 2012-01-09 2013-12-03 International Business Machines Corporation Tracking changes to data within various data repositories
KR102039028B1 (ko) 2012-02-24 2019-10-31 삼성전자 주식회사 휴대단말기의 데이터 공유 장치 및 방법
SG194245A1 (en) * 2012-04-17 2013-11-29 ZingMobile Pte Ltd A method for real-time synchronization between a device and host servers
JP5928162B2 (ja) * 2012-05-31 2016-06-01 村田機械株式会社 画像データ処理装置、画像データ処理方法、画像データ処理プログラム、それを格納した記録媒体、および画像データ処理システム
US8892523B2 (en) * 2012-06-08 2014-11-18 Commvault Systems, Inc. Auto summarization of content
US9858288B2 (en) 2012-08-03 2018-01-02 Egnyte, Inc. System and method for event-based synchronization of remote and local file systems
JP6086124B2 (ja) * 2012-10-25 2017-03-01 富士通株式会社 情報処理端末、同期制御方法および同期制御プログラム
US9280546B2 (en) 2012-10-31 2016-03-08 Palo Alto Research Center Incorporated System and method for accessing digital content using a location-independent name
US9400800B2 (en) 2012-11-19 2016-07-26 Palo Alto Research Center Incorporated Data transport by named content synchronization
US10430839B2 (en) 2012-12-12 2019-10-01 Cisco Technology, Inc. Distributed advertisement insertion in content-centric networks
US9253075B2 (en) * 2012-12-19 2016-02-02 Palo Alto Research Center Incorporated Dynamic routing protocols using database synchronization
US9978025B2 (en) 2013-03-20 2018-05-22 Cisco Technology, Inc. Ordered-element naming for name-based packet forwarding
US9935791B2 (en) 2013-05-20 2018-04-03 Cisco Technology, Inc. Method and system for name resolution across heterogeneous architectures
US9185120B2 (en) 2013-05-23 2015-11-10 Palo Alto Research Center Incorporated Method and system for mitigating interest flooding attacks in content-centric networks
KR20150004200A (ko) * 2013-07-02 2015-01-12 한국전자통신연구원 데이터 복제 방법 및 장치
JP6136694B2 (ja) * 2013-07-19 2017-05-31 富士通株式会社 データ管理プログラム、データ管理装置およびデータ管理方法
US9444722B2 (en) 2013-08-01 2016-09-13 Palo Alto Research Center Incorporated Method and apparatus for configuring routing paths in a custodian-based routing architecture
US9407549B2 (en) 2013-10-29 2016-08-02 Palo Alto Research Center Incorporated System and method for hash-based forwarding of packets with hierarchically structured variable-length identifiers
US9282050B2 (en) 2013-10-30 2016-03-08 Palo Alto Research Center Incorporated System and method for minimum path MTU discovery in content centric networks
US9276840B2 (en) 2013-10-30 2016-03-01 Palo Alto Research Center Incorporated Interest messages with a payload for a named data network
US9401864B2 (en) 2013-10-31 2016-07-26 Palo Alto Research Center Incorporated Express header for packets with hierarchically structured variable-length identifiers
US9311377B2 (en) 2013-11-13 2016-04-12 Palo Alto Research Center Incorporated Method and apparatus for performing server handoff in a name-based content distribution system
US10129365B2 (en) 2013-11-13 2018-11-13 Cisco Technology, Inc. Method and apparatus for pre-fetching remote content based on static and dynamic recommendations
US10101801B2 (en) 2013-11-13 2018-10-16 Cisco Technology, Inc. Method and apparatus for prefetching content in a data stream
US10089655B2 (en) 2013-11-27 2018-10-02 Cisco Technology, Inc. Method and apparatus for scalable data broadcasting
US9503358B2 (en) 2013-12-05 2016-11-22 Palo Alto Research Center Incorporated Distance-based routing in an information-centric network
US9544373B2 (en) 2013-12-24 2017-01-10 Dropbox, Inc. Systems and methods for maintaining local virtual states pending server-side storage across multiple devices and users and intermittent network connections
US10067652B2 (en) 2013-12-24 2018-09-04 Dropbox, Inc. Providing access to a cloud based content management system on a mobile device
US9379979B2 (en) 2014-01-14 2016-06-28 Palo Alto Research Center Incorporated Method and apparatus for establishing a virtual interface for a set of mutual-listener devices
US10172068B2 (en) 2014-01-22 2019-01-01 Cisco Technology, Inc. Service-oriented routing in software-defined MANETs
US10098051B2 (en) 2014-01-22 2018-10-09 Cisco Technology, Inc. Gateways and routing in software-defined manets
US9374304B2 (en) 2014-01-24 2016-06-21 Palo Alto Research Center Incorporated End-to end route tracing over a named-data network
US9954678B2 (en) 2014-02-06 2018-04-24 Cisco Technology, Inc. Content-based transport security
US9531679B2 (en) 2014-02-06 2016-12-27 Palo Alto Research Center Incorporated Content-based transport security for distributed producers
US9678998B2 (en) 2014-02-28 2017-06-13 Cisco Technology, Inc. Content name resolution for information centric networking
CN103873567B (zh) * 2014-03-03 2018-09-04 北京智谷睿拓技术服务有限公司 基于任务的数据传输方法及数据传输装置
US10089651B2 (en) 2014-03-03 2018-10-02 Cisco Technology, Inc. Method and apparatus for streaming advertisements in a scalable data broadcasting system
US9836540B2 (en) 2014-03-04 2017-12-05 Cisco Technology, Inc. System and method for direct storage access in a content-centric network
US9391896B2 (en) 2014-03-10 2016-07-12 Palo Alto Research Center Incorporated System and method for packet forwarding using a conjunctive normal form strategy in a content-centric network
US9473405B2 (en) 2014-03-10 2016-10-18 Palo Alto Research Center Incorporated Concurrent hashes and sub-hashes on data streams
US9626413B2 (en) 2014-03-10 2017-04-18 Cisco Systems, Inc. System and method for ranking content popularity in a content-centric network
US9407432B2 (en) 2014-03-19 2016-08-02 Palo Alto Research Center Incorporated System and method for efficient and secure distribution of digital content
US9916601B2 (en) 2014-03-21 2018-03-13 Cisco Technology, Inc. Marketplace for presenting advertisements in a scalable data broadcasting system
US9363179B2 (en) 2014-03-26 2016-06-07 Palo Alto Research Center Incorporated Multi-publisher routing protocol for named data networks
US20150280786A1 (en) * 2014-03-31 2015-10-01 Raveeshkumar Bhat Near field communication based data transfer
US9363086B2 (en) 2014-03-31 2016-06-07 Palo Alto Research Center Incorporated Aggregate signing of data in content centric networking
US9716622B2 (en) 2014-04-01 2017-07-25 Cisco Technology, Inc. System and method for dynamic name configuration in content-centric networks
US20150286623A1 (en) * 2014-04-02 2015-10-08 Samsung Electronics Co., Ltd. Method and apparatus for marking relevant updates to html 5
US9390289B2 (en) 2014-04-07 2016-07-12 Palo Alto Research Center Incorporated Secure collection synchronization using matched network names
US9473576B2 (en) 2014-04-07 2016-10-18 Palo Alto Research Center Incorporated Service discovery using collection synchronization with exact names
US10075521B2 (en) 2014-04-07 2018-09-11 Cisco Technology, Inc. Collection synchronization using equality matched network names
US9451032B2 (en) 2014-04-10 2016-09-20 Palo Alto Research Center Incorporated System and method for simple service discovery in content-centric networks
US9203885B2 (en) 2014-04-28 2015-12-01 Palo Alto Research Center Incorporated Method and apparatus for exchanging bidirectional streams over a content centric network
US9992281B2 (en) 2014-05-01 2018-06-05 Cisco Technology, Inc. Accountable content stores for information centric networks
US9609014B2 (en) 2014-05-22 2017-03-28 Cisco Systems, Inc. Method and apparatus for preventing insertion of malicious content at a named data network router
US9455835B2 (en) 2014-05-23 2016-09-27 Palo Alto Research Center Incorporated System and method for circular link resolution with hash-based names in content-centric networks
US9276751B2 (en) 2014-05-28 2016-03-01 Palo Alto Research Center Incorporated System and method for circular link resolution with computable hash-based names in content-centric networks
US9516144B2 (en) 2014-06-19 2016-12-06 Palo Alto Research Center Incorporated Cut-through forwarding of CCNx message fragments with IP encapsulation
US9537719B2 (en) 2014-06-19 2017-01-03 Palo Alto Research Center Incorporated Method and apparatus for deploying a minimal-cost CCN topology
US9467377B2 (en) 2014-06-19 2016-10-11 Palo Alto Research Center Incorporated Associating consumer states with interests in a content-centric network
US10521417B2 (en) * 2014-06-24 2019-12-31 Google Llc Processing mutations for a remote database
US9426113B2 (en) 2014-06-30 2016-08-23 Palo Alto Research Center Incorporated System and method for managing devices over a content centric network
US9699198B2 (en) 2014-07-07 2017-07-04 Cisco Technology, Inc. System and method for parallel secure content bootstrapping in content-centric networks
US9621354B2 (en) 2014-07-17 2017-04-11 Cisco Systems, Inc. Reconstructable content objects
US9959156B2 (en) 2014-07-17 2018-05-01 Cisco Technology, Inc. Interest return control message
US9590887B2 (en) 2014-07-18 2017-03-07 Cisco Systems, Inc. Method and system for keeping interest alive in a content centric network
US9729616B2 (en) 2014-07-18 2017-08-08 Cisco Technology, Inc. Reputation-based strategy for forwarding and responding to interests over a content centric network
US9535968B2 (en) 2014-07-21 2017-01-03 Palo Alto Research Center Incorporated System for distributing nameless objects using self-certifying names
WO2016014592A1 (en) 2014-07-21 2016-01-28 Egnyte, Inc. System and method for policy based synchronization of remote and local file systems
US9882964B2 (en) 2014-08-08 2018-01-30 Cisco Technology, Inc. Explicit strategy feedback in name-based forwarding
US9729662B2 (en) 2014-08-11 2017-08-08 Cisco Technology, Inc. Probabilistic lazy-forwarding technique without validation in a content centric network
US9503365B2 (en) 2014-08-11 2016-11-22 Palo Alto Research Center Incorporated Reputation-based instruction processing over an information centric network
JP6442915B2 (ja) * 2014-08-15 2018-12-26 富士ゼロックス株式会社 通信端末、通信システム及びプログラム
US9391777B2 (en) 2014-08-15 2016-07-12 Palo Alto Research Center Incorporated System and method for performing key resolution over a content centric network
US9467492B2 (en) 2014-08-19 2016-10-11 Palo Alto Research Center Incorporated System and method for reconstructable all-in-one content stream
US9800637B2 (en) 2014-08-19 2017-10-24 Cisco Technology, Inc. System and method for all-in-one content stream in content-centric networks
US9497282B2 (en) 2014-08-27 2016-11-15 Palo Alto Research Center Incorporated Network coding for content-centric network
US10204013B2 (en) 2014-09-03 2019-02-12 Cisco Technology, Inc. System and method for maintaining a distributed and fault-tolerant state over an information centric network
US9553812B2 (en) 2014-09-09 2017-01-24 Palo Alto Research Center Incorporated Interest keep alives at intermediate routers in a CCN
US10069933B2 (en) 2014-10-23 2018-09-04 Cisco Technology, Inc. System and method for creating virtual interfaces based on network characteristics
US9536059B2 (en) 2014-12-15 2017-01-03 Palo Alto Research Center Incorporated Method and system for verifying renamed content using manifests in a content centric network
US9590948B2 (en) 2014-12-15 2017-03-07 Cisco Systems, Inc. CCN routing using hardware-assisted hash tables
US10237189B2 (en) 2014-12-16 2019-03-19 Cisco Technology, Inc. System and method for distance-based interest forwarding
US9846881B2 (en) 2014-12-19 2017-12-19 Palo Alto Research Center Incorporated Frugal user engagement help systems
US10003520B2 (en) 2014-12-22 2018-06-19 Cisco Technology, Inc. System and method for efficient name-based content routing using link-state information in information-centric networks
US9473475B2 (en) 2014-12-22 2016-10-18 Palo Alto Research Center Incorporated Low-cost authenticated signing delegation in content centric networking
US9660825B2 (en) 2014-12-24 2017-05-23 Cisco Technology, Inc. System and method for multi-source multicasting in content-centric networks
US9954795B2 (en) 2015-01-12 2018-04-24 Cisco Technology, Inc. Resource allocation using CCN manifests
US9946743B2 (en) 2015-01-12 2018-04-17 Cisco Technology, Inc. Order encoded manifests in a content centric network
US9602596B2 (en) 2015-01-12 2017-03-21 Cisco Systems, Inc. Peer-to-peer sharing in a content centric network
US9832291B2 (en) 2015-01-12 2017-11-28 Cisco Technology, Inc. Auto-configurable transport stack
US9916457B2 (en) 2015-01-12 2018-03-13 Cisco Technology, Inc. Decoupled name security binding for CCN objects
US9462006B2 (en) 2015-01-21 2016-10-04 Palo Alto Research Center Incorporated Network-layer application-specific trust model
US9552493B2 (en) 2015-02-03 2017-01-24 Palo Alto Research Center Incorporated Access control framework for information centric networking
US10333840B2 (en) 2015-02-06 2019-06-25 Cisco Technology, Inc. System and method for on-demand content exchange with adaptive naming in information-centric networks
EP3070619B1 (en) * 2015-03-16 2023-08-16 Canon Kabushiki Kaisha Information processing apparatuses performing synchronization of data and data synchronization methods
JP6611594B2 (ja) * 2015-03-16 2019-11-27 キヤノン株式会社 データの同期を行う情報処理装置、データ同期方法およびプログラム
US10075401B2 (en) 2015-03-18 2018-09-11 Cisco Technology, Inc. Pending interest table behavior
US9258415B1 (en) * 2015-03-30 2016-02-09 Captioncall, Llc Communication device and related methods for offline data record modification and synchronization with a backend server associated with a relay service for hearing-impaired users
US10963430B2 (en) 2015-04-01 2021-03-30 Dropbox, Inc. Shared workspaces with selective content item synchronization
US9922201B2 (en) 2015-04-01 2018-03-20 Dropbox, Inc. Nested namespaces for selective content sharing
CN106155925A (zh) * 2015-04-09 2016-11-23 阿里巴巴集团控股有限公司 一种获取数据的方法及装置
US10437789B2 (en) 2015-04-10 2019-10-08 Egnyte, Inc. System and method for delete fencing during synchronization of remote and local file systems
US11144510B2 (en) 2015-06-11 2021-10-12 Egnyte, Inc. System and method for synchronizing file systems with large namespaces
US10116605B2 (en) 2015-06-22 2018-10-30 Cisco Technology, Inc. Transport stack name scheme and identity management
US10075402B2 (en) 2015-06-24 2018-09-11 Cisco Technology, Inc. Flexible command and control in content centric networks
US10701038B2 (en) 2015-07-27 2020-06-30 Cisco Technology, Inc. Content negotiation in a content centric network
US20170031960A1 (en) * 2015-07-31 2017-02-02 Panasonic Intellectual Property Management Co., Ltd. Information recording device and data erasing method
US9986034B2 (en) 2015-08-03 2018-05-29 Cisco Technology, Inc. Transferring state in content centric network stacks
US10610144B2 (en) 2015-08-19 2020-04-07 Palo Alto Research Center Incorporated Interactive remote patient monitoring and condition management intervention system
JP6727775B2 (ja) * 2015-08-31 2020-07-22 キヤノン株式会社 サーバ装置、制御システム、制御方法、及び、プログラム
US9832123B2 (en) 2015-09-11 2017-11-28 Cisco Technology, Inc. Network named fragments in a content centric network
US10355999B2 (en) 2015-09-23 2019-07-16 Cisco Technology, Inc. Flow control with network named fragments
US9977809B2 (en) 2015-09-24 2018-05-22 Cisco Technology, Inc. Information and data framework in a content centric network
US10313227B2 (en) 2015-09-24 2019-06-04 Cisco Technology, Inc. System and method for eliminating undetected interest looping in information-centric networks
US10454820B2 (en) 2015-09-29 2019-10-22 Cisco Technology, Inc. System and method for stateless information-centric networking
US10263965B2 (en) 2015-10-16 2019-04-16 Cisco Technology, Inc. Encrypted CCNx
US9794238B2 (en) 2015-10-29 2017-10-17 Cisco Technology, Inc. System for key exchange in a content centric network
US9571573B1 (en) 2015-10-29 2017-02-14 Dropbox, Inc. Peer-to-peer synchronization protocol for multi-premises hosting of digital content items
US10009446B2 (en) 2015-11-02 2018-06-26 Cisco Technology, Inc. Header compression for CCN messages using dictionary learning
US9807205B2 (en) 2015-11-02 2017-10-31 Cisco Technology, Inc. Header compression for CCN messages using dictionary
US10021222B2 (en) 2015-11-04 2018-07-10 Cisco Technology, Inc. Bit-aligned header compression for CCN messages using dictionary
US10097521B2 (en) 2015-11-20 2018-10-09 Cisco Technology, Inc. Transparent encryption in a content centric network
US9912776B2 (en) 2015-12-02 2018-03-06 Cisco Technology, Inc. Explicit content deletion commands in a content centric network
US10097346B2 (en) 2015-12-09 2018-10-09 Cisco Technology, Inc. Key catalogs in a content centric network
US10078062B2 (en) 2015-12-15 2018-09-18 Palo Alto Research Center Incorporated Device health estimation by combining contextual information with sensor data
US20170177613A1 (en) * 2015-12-22 2017-06-22 Egnyte, Inc. Event-Based User State Synchronization in a Cloud Storage System
CN105577798B (zh) * 2015-12-25 2019-03-05 北京奇虎科技有限公司 更新发布数据的方法及装置
US10257271B2 (en) 2016-01-11 2019-04-09 Cisco Technology, Inc. Chandra-Toueg consensus in a content centric network
US9949301B2 (en) 2016-01-20 2018-04-17 Palo Alto Research Center Incorporated Methods for fast, secure and privacy-friendly internet connection discovery in wireless networks
US10305864B2 (en) 2016-01-25 2019-05-28 Cisco Technology, Inc. Method and system for interest encryption in a content centric network
US10043016B2 (en) 2016-02-29 2018-08-07 Cisco Technology, Inc. Method and system for name encryption agreement in a content centric network
US10003507B2 (en) 2016-03-04 2018-06-19 Cisco Technology, Inc. Transport session state protocol
US10051071B2 (en) 2016-03-04 2018-08-14 Cisco Technology, Inc. Method and system for collecting historical network information in a content centric network
US10742596B2 (en) 2016-03-04 2020-08-11 Cisco Technology, Inc. Method and system for reducing a collision probability of hash-based names using a publisher identifier
US10038633B2 (en) 2016-03-04 2018-07-31 Cisco Technology, Inc. Protocol to query for historical network information in a content centric network
US9832116B2 (en) 2016-03-14 2017-11-28 Cisco Technology, Inc. Adjusting entries in a forwarding information base in a content centric network
US10212196B2 (en) 2016-03-16 2019-02-19 Cisco Technology, Inc. Interface discovery and authentication in a name-based network
US10067948B2 (en) 2016-03-18 2018-09-04 Cisco Technology, Inc. Data deduping in content centric networking manifests
US11436656B2 (en) 2016-03-18 2022-09-06 Palo Alto Research Center Incorporated System and method for a real-time egocentric collaborative filter on large datasets
US10091330B2 (en) 2016-03-23 2018-10-02 Cisco Technology, Inc. Interest scheduling by an information and data framework in a content centric network
US10033639B2 (en) 2016-03-25 2018-07-24 Cisco Technology, Inc. System and method for routing packets in a content centric network using anonymous datagrams
US10320760B2 (en) 2016-04-01 2019-06-11 Cisco Technology, Inc. Method and system for mutating and caching content in a content centric network
US9930146B2 (en) 2016-04-04 2018-03-27 Cisco Technology, Inc. System and method for compressing content centric networking messages
US10425503B2 (en) 2016-04-07 2019-09-24 Cisco Technology, Inc. Shared pending interest table in a content centric network
US10027578B2 (en) 2016-04-11 2018-07-17 Cisco Technology, Inc. Method and system for routable prefix queries in a content centric network
US10404450B2 (en) 2016-05-02 2019-09-03 Cisco Technology, Inc. Schematized access control in a content centric network
US10320675B2 (en) 2016-05-04 2019-06-11 Cisco Technology, Inc. System and method for routing packets in a stateless content centric network
US10547589B2 (en) 2016-05-09 2020-01-28 Cisco Technology, Inc. System for implementing a small computer systems interface protocol over a content centric network
US10084764B2 (en) 2016-05-13 2018-09-25 Cisco Technology, Inc. System for a secure encryption proxy in a content centric network
US10063414B2 (en) 2016-05-13 2018-08-28 Cisco Technology, Inc. Updating a transport stack in a content centric network
US10367879B2 (en) * 2016-06-10 2019-07-30 Apple Inc. Download prioritization
US10103989B2 (en) 2016-06-13 2018-10-16 Cisco Technology, Inc. Content object return messages in a content centric network
US10305865B2 (en) 2016-06-21 2019-05-28 Cisco Technology, Inc. Permutation-based content encryption with manifests in a content centric network
US10148572B2 (en) 2016-06-27 2018-12-04 Cisco Technology, Inc. Method and system for interest groups in a content centric network
US10009266B2 (en) 2016-07-05 2018-06-26 Cisco Technology, Inc. Method and system for reference counted pending interest tables in a content centric network
US9992097B2 (en) 2016-07-11 2018-06-05 Cisco Technology, Inc. System and method for piggybacking routing information in interests in a content centric network
US10122624B2 (en) 2016-07-25 2018-11-06 Cisco Technology, Inc. System and method for ephemeral entries in a forwarding information base in a content centric network
US10069729B2 (en) 2016-08-08 2018-09-04 Cisco Technology, Inc. System and method for throttling traffic based on a forwarding information base in a content centric network
US10956412B2 (en) 2016-08-09 2021-03-23 Cisco Technology, Inc. Method and system for conjunctive normal form attribute matching in a content centric network
US10033642B2 (en) 2016-09-19 2018-07-24 Cisco Technology, Inc. System and method for making optimal routing decisions based on device-specific parameters in a content centric network
US10212248B2 (en) 2016-10-03 2019-02-19 Cisco Technology, Inc. Cache management on high availability routers in a content centric network
US10447805B2 (en) 2016-10-10 2019-10-15 Cisco Technology, Inc. Distributed consensus in a content centric network
US10135948B2 (en) 2016-10-31 2018-11-20 Cisco Technology, Inc. System and method for process migration in a content centric network
US10243851B2 (en) 2016-11-21 2019-03-26 Cisco Technology, Inc. System and method for forwarder connection information in a content centric network
CN106973099B (zh) * 2017-03-28 2019-08-06 Oppo广东移动通信有限公司 一种数据更新方法、装置及系统
US10606820B2 (en) 2017-05-12 2020-03-31 International Business Machines Corporation Synchronizing data values by requesting updates
US10614054B2 (en) 2017-05-12 2020-04-07 International Business Machines Corporation Synchronizing data values by sending updates
CN110309176B (zh) * 2018-03-15 2024-04-05 腾讯科技(深圳)有限公司 一种数据处理方法和数据中转站
US10956078B2 (en) 2018-03-27 2021-03-23 EMC IP Holding Company LLC Storage system with loopback replication process providing object-dependent slice assignment
US10866969B2 (en) * 2018-03-28 2020-12-15 EMC IP Holding Company LLC Storage system with loopback replication process providing unique identifiers for collision-free object pairing
CN108667906A (zh) * 2018-04-12 2018-10-16 广东汇泰龙科技有限公司 一种基于门锁显示屏含历史记录管理系统
CN110413684B (zh) * 2018-04-25 2023-05-02 杭州海康存储科技有限公司 一种数据库同步方法、装置及系统
CN110691112A (zh) * 2018-07-06 2020-01-14 优信拍(北京)信息科技有限公司 一种数据同步方法,装置及系统
CN110490636B (zh) * 2019-07-15 2023-07-11 平安科技(深圳)有限公司 客户信息管理方法、装置、计算机可读存储介质及服务器
US11290531B2 (en) 2019-12-04 2022-03-29 Dropbox, Inc. Immediate cloud content item creation from local file system interface
CN111460014A (zh) * 2020-03-02 2020-07-28 北京电信易通信息技术股份有限公司 一种基于警务数据库的第三方应用数据同步方法及系统
CN111400679A (zh) * 2020-03-12 2020-07-10 厦门区块链云科技有限公司 一种基于区块链的可信云存储方法及系统
JP2021189569A (ja) * 2020-05-26 2021-12-13 富士通株式会社 データ更新プログラム、データ更新装置及びデータ更新方法
GB202110155D0 (en) 2021-07-14 2021-08-25 Graphcore Ltd GSP trace unit
GB202110147D0 (en) 2021-07-14 2021-08-25 Graphcore Ltd time deterministic trace
CN116881371B (zh) * 2023-09-07 2023-11-14 北京逐风科技有限公司 数据同步方法、装置、设备及存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6564215B1 (en) * 1999-12-16 2003-05-13 International Business Machines Corporation Update support in database content management
JP3750504B2 (ja) * 2000-08-09 2006-03-01 セイコーエプソン株式会社 データ更新方法および情報処理装置
AU2002303126A1 (en) * 2001-03-16 2002-10-03 Novell, Inc. Client-server model for synchronization of files
JP2004086800A (ja) * 2002-08-29 2004-03-18 Mitsubishi Electric Corp データ同期システムおよびデータ同期方法
US20040044799A1 (en) 2002-09-03 2004-03-04 Nokia Corporation Method, device and system for synchronizing of data providing for the handling of an interrupted synchronization process
KR100728076B1 (ko) 2002-09-03 2007-06-13 노키아 코포레이션 인터럽트된 동기화 프로세스의 처리를 제공하는 데이터를동기화하는 방법, 장치 및 시스템
US7035879B2 (en) * 2002-12-26 2006-04-25 Hon Hai Precision Ind. Co., Ltd. System and method for synchronizing data of wireless devices
KR100547896B1 (ko) * 2004-03-05 2006-01-31 삼성전자주식회사 데이터 동기화 시스템 및 서버와 클라이언트의 데이터동기화 방법
KR100739729B1 (ko) 2005-09-03 2007-07-13 삼성전자주식회사 디지털 방송 네트워크에서 서버와 클라이언트 간 epg정보를 동기화시키기 위한 방법 및 장치
GB0625643D0 (en) 2006-12-21 2007-01-31 Symbian Software Ltd Sync field filtering
US7721003B2 (en) * 2007-02-02 2010-05-18 International Business Machines Corporation System and method to synchronize OSGi bundle inventories between an OSGi bundle server and a client
CN100464308C (zh) 2007-04-20 2009-02-25 北京搜狗科技发展有限公司 一种用户词库同步更新的方法和系统

Also Published As

Publication number Publication date
US8775374B2 (en) 2014-07-08
CN102483715A (zh) 2012-05-30
EP2474911A4 (en) 2014-12-03
KR20120049375A (ko) 2012-05-16
EP2474911A1 (en) 2012-07-11
US20120179653A1 (en) 2012-07-12
JP2011054092A (ja) 2011-03-17
WO2011027654A1 (ja) 2011-03-10
EP2474911B1 (en) 2017-06-21
KR101569562B1 (ko) 2015-11-16

Similar Documents

Publication Publication Date Title
JP5061166B2 (ja) データ同期システムおよびデータ同期方法
CN103026355B (zh) 数据库管理系统
JP4405812B2 (ja) 第1データ記憶部と第2データ記憶部との間で同期を取るための方法および装置
US8620926B2 (en) Using a hashing mechanism to select data entries in a directory for use with requested operations
CN112035420B (zh) 数据共享方法、共享设备和系统
CN109600410B (zh) 数据存储系统以及方法
US8326913B2 (en) Method and system for service contract discovery
CN106790131B (zh) 一种参数修改方法、装置及分布式平台
CN114610680A (zh) 分布式文件系统元数据管理方法、装置、设备及存储介质
CN112148745B (zh) 一种多HBase集群访问方法、装置及存储介质
JP2013229042A (ja) 装置へのコンテンツの分配を管理するシステムと方法
JP5217376B2 (ja) 端末キャッシュ管理装置、端末キャッシュ管理方法及びプログラム
KR20130023490A (ko) 애플리케이션 동기화 시스템 및 방법
CN111147226B (zh) 数据存储方法、装置及存储介质
JP5634178B2 (ja) データ同期システムおよびデータ同期方法
CN106993026B (zh) 一种ftp服务器新增文件检测下载方法及装置
CN114153797A (zh) 一种基于Ceph分布式对象存储检索方法及装置
CN112291343B (zh) 信息获取方法、装置及电子设备
CN113836234A (zh) 一种离线作业数据同步的方法、系统、设备和存储介质
CN114528260A (zh) 文件访问请求的处理方法、电子设备及计算机程序产品
CN102483715B (zh) 数据同步系统以及数据同步方法
EP4195068A1 (en) Storing and retrieving media recordings in an object store
CN107463670B (zh) 数据存储、读取方法及装置
KR100390590B1 (ko) 메인메모리 데이터베이스 관리 시스템을 이용한데이터베이스 실시간 캐싱 및 일치 방법
CN117234410A (zh) 一种数据文件缓存处理方法、装置、存储介质及电子装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120611

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20120611

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20120627

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: 20120710

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120806

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5061166

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees