JP5631887B2 - データの同期のための検索ベースの仕様 - Google Patents

データの同期のための検索ベースの仕様 Download PDF

Info

Publication number
JP5631887B2
JP5631887B2 JP2011533308A JP2011533308A JP5631887B2 JP 5631887 B2 JP5631887 B2 JP 5631887B2 JP 2011533308 A JP2011533308 A JP 2011533308A JP 2011533308 A JP2011533308 A JP 2011533308A JP 5631887 B2 JP5631887 B2 JP 5631887B2
Authority
JP
Japan
Prior art keywords
client
data
server
synchronization
information
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.)
Active
Application number
JP2011533308A
Other languages
English (en)
Other versions
JP2012510652A5 (ja
JP2012510652A (ja
Inventor
パレイ,アンドリュー,ジェー.
ホワイト,アーロン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of JP2012510652A publication Critical patent/JP2012510652A/ja
Publication of JP2012510652A5 publication Critical patent/JP2012510652A5/ja
Application granted granted Critical
Publication of JP5631887B2 publication Critical patent/JP5631887B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F16/275Synchronous replication
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Information Transfer Between Computers (AREA)

Description

[0001] 開示される実施形態は概して、クライアント‐サーバの相互作用の分野に関し、特に、クライアント装置とサーバとの間のデータの同期に関する。
[0002] 多くのソフトウェアアプリケーション(例えば、電子メール)は、クライアント装置およびサーバシステムの両方で、または、サーバシステムからの助力を得てクライアント装置において動作するよう設計されている。こうしたアプリケーションは、ユーザがクライアント装置またはサーバのいずれで操作しているかにかかわらず、ユーザがデータを自由に作成、受信、伝送および修正することを可能にする。クライアントとサーバとの間のデータの同期は、クライアントおよびサーバに存在するアプリケーションデータ間の整合性を維持させることができる。効率性を理由として、クライアント装置は一般的に主にローカルに記憶されたデータを用いて動作するため、同期は重要である。一般的な一実装は、クライアント‐サーバアプリケーションに関連したデータの完全なセットをサーバにおいて記憶し、かつ、ユーザに関連するか、またはユーザによって通常使用されるデータのサブセットをクライアント装置において保持することである。サーバデータをクライアント装置に同期させるとき、同期方法の多くは、同期されたデータの使用を許可する前に、完全なローカルキャッシュのプライミング(priming)を必要とする。実際、同期は典型的に、全か無かのプロセスである。ローカルキャッシュが完全にプライミング(primed)されない場合、データのいずれもクライアントによって使用することができない。
[0003] クライアントは一般に、メモリによって制約されるので、サーバに存在するアプリケーションデータのサブセットを含む。クライアントに同期させるためのサーバアプリケーションデータは、クライアントのユーザに最も関連する情報が同期されるように選択されるべきである。従来の同期機構の多くは、同期のためにユーザに関連する情報を選択し優先度を付ける能力を欠いている。例えば、情報データを組織化するためにフォルダを使用する同期システムにおけるデータは限定的である。これらのデータは、データ同期の間、1つのフォルダに関連付けられて分類されるのみでありうる。さらに、アプリケーションデータがフォルダに分類されていないシステムは、同期のためのデータの選択が一層困難になる。既存の同期機構の欠点を克服する、より柔軟なシステムが望ましい。
[実施形態の概要]
[0004] いくつかの実施形態では、サーバからクライアント装置の情報を同期させるための方法は、クライアントにおいて、サーバから通信を受信して、クライアント装置とサーバとの間の情報を同期させることを含み、この情報は、検索機構によって、1つ以上の検索基準に従い、サーバにおける全てのアプリケーションデータから選択され、サーバからの伝送に先立ち、順番に並べられ、かつ、サーバから受信した情報の少なくとも一部に従いクライアントにおけるアプリケーションデータを同期させるオペレーションを行うことを含む。
[0005] 他の実施形態では、本方法は、クライアントへの伝送前に、サーバにおいて並べられたように、高い優先度から低い優先度の順で、クライアントにおけるアプリケーションデータに、オペレーションの追加、削除および修正のうち少なくとも1つを行う命令を有する情報を含む。
[0006] また別の実施形態では、本方法の受信は、同時に動作する2つの独立した同期機構を含み、第1の同期機構は、優先度の順に情報の第1の部分を同期させ、第2の同期機構は、時系列で情報の第2の部分を同期させる。
[0007] いくつかの実施形態では、本方法は、サーバから情報を受信する責任を負う1つ以上の同期機構から独立している同期機構において、未同期のアプリケーションデータ変更を同時にサーバに対して送信することを含む。
[0008] 別の実施形態では、本方法は、選択された情報が、クライアントに伝送される情報を特定の順序で優先度を付けることができるように優先度が付けられうる検索機構によって行われる検索を含む。
[0009] 本開示のいくつかの実施形態は、サーバがクライアントと情報を同期させるための方法であって、サーバにおいて、同期に先立ちアプリケーションデータに検索を行うために使用される1つ以上の検索基準を決定することと、サーバにおける検索機構を使用し1つ以上の検索基準に従い、サーバにおける全てのアプリケーションデータから情報を選択することと、選択された情報をクライアントに伝送することと、クライアントに正常に同期された伝送された情報のレコードを付けることとを含む方法を含む。
[0010] いくつかの実施形態では、本サーバ方法は、選択された情報をクライアントに伝送する責任を有する1つ以上の同期機構から独立している同期機構において、未同期のアプリケーションデータ変更を同時にクライアントから受信することを含む。別の実施形態では、未同期のアプリケーションデータ変更は、選択された情報をクライアントに伝送する責任を有する同期機構に対して連続的に同期されうる。
[0011] 他の実施形態では、本サーバ方法の選択された情報は、サーバにおけるデータアイテムおよびデータへの変更オペレーションの両方を含むことができる。データは、高い優先度から低い優先度に並べられかつクライアントに同期される。変更オペレーションは、サーバで各変更オペレーションがいつ発生したかに基づき古いものから新しいものに時系列で並べられかつ同期される。
[0012] いくつかの実施形態では、本サーバ方法の伝送は、同時に動作する2つの独立した同期機構を含み、第1の同期機構は、優先度の順に情報の第1の部分を同期させ、、第2の同期機構は、時系列で情報の第2の部分を同期させる。
[0013] 本発明の本質および実施形態の理解を深めるために、以下の実施形態の説明および図面を参照されたい。図面において同様の符号は対応する部分を示す。
[0014] 図1は、本発明のいくつかの実施形態に従うクライアント‐サーバベースのネットワークシステムを示す図である。 [0015] 図2は、本発明のいくつかの実施形態に従うクライアント‐サーバベースのネットワークシステムにおける例示的なサーバを示すブロック図である。 [0016] 図3は、本発明のいくつかの実施形態に従うサーバと相互作用する例示的なクライアントを示すブロック図である。 [0017] 図4は、本発明のいくつかの実施形態に従うサーバとクライアント間の例示的な同期相互作用スキームを示す図である。 [0018] 図5は、本発明のいくつかの実施形態に従うデータ同期のための検索を行うための例示的な検索仕様を示す図である。 [0019] 図6は、本発明のいくつかの実施形態に従う例示的なコンフィギュレーション仕様を示す図である。 [0020] 図7は、本発明のいくつかの実施形態に従うメッセージなどの例示的なデータに含まれる情報を示す図である。 [0021] 図8(A)〜(D)は、本発明のいくつかの実施形態に従うアプリケーションデータのセットから情報を選択する例示的な検索ベースの機構を示す図である。 [0022] 図9は、本発明のいくつかの実施形態に従う検索機構によって選択されたサーバデータを受信するクライアントの例示的な方法を示すフロー図である。 [0023] 図10は、本発明のいくつかの実施形態に従う検索機構によって選択されたサーバアプリケーションデータを送信するサーバの例示的な方法を示すフロー図である。
[実施形態の説明]
[0024] 本発明は、クライアント‐サーバシステムに関し、クライアントとサーバとの間のアイテムの同期の方法およびシステムに対応する。本開示は、データの同期のための検索ベース仕様を説明する。この実装は、検索基準に基づく検索のリストによって同期を制御する。検索ベースのデータ同期は、サーバおよびクライアントにおいて独立して操作されうるアプリケーションデータおよびアプリケーションデータ変更を有する全てのタイプのクライアント‐サーバアプリケーションの同期に適用可能である。
[0025] 図1は、例示的なクライアント‐サーバベースのネットワークシステムを概略的に示す。クライアント‐サーバベースのネットワークシステムは、サーバ102、通信のためのネットワーク104、および複数のクライアント装置106A−Cを含む。本システムの一般的な実装は、少なくとも1つのサーバ、少なくとも1つの通信ネットワーク、および複数のクライアント装置を有することが理解されるべきである。別のコンフィギュレーションでは、本システムは、複数のサーバ、複数のネットワーク、および複数のクライアント装置を含んでもよい。
[0026] いくつかの実施形態では、サーバ102およびクライアント106を接続するネットワーク104は、プライベートまたはパブリックネットワークであることができ、データ交換が可能であるようにサーバ104とクライアント106との間の通信を可能にするために有線または無線であることができる。いくつかの実施形態では、ネットワークは、インターネットであることができ、他の実施形態では、通信ネットワークは、プライベートであるか、またはユーザのグループにアクセスを制限するセキュリティを有しうる。後者の場合、ネットワークはLANでありうる。ネットワーク104の他の実施形態は、WiFiネットワークおよび/またはWiMaxネットワークも含みうる。ネットワーク104の別の実施形態は、携帯電話およびスマートフォンなどのモバイル装置によるデータの伝送および受信を可能にするセルラーネットワークでありうる。このようなセルラーネットワークは、料金を支払った加入者のみがこれにアクセスできる場合、プライベートであるとみなすことができる。
[0027] クライアント装置106は、多様な形態を取りうる。いくつかの実施形態では、クライアント装置は、コンピュータサーバと通信するローカルコンピュータでありうる。他の実施形態では、クライアント装置は、パーソナルデジタルアシスタント(PDA)、スマートフォンまたは携帯電話の1つでありうる。クライアント装置は、サーバにおいても動作するソフトウェアアプリケーションを動作させうるか、または、サーバにおいて動作するアプリケーションバックエンドと協働するアプリケーションフロントエンドを動作させうる。サーバ102は、管理、データストレージリクエスト、アプリケーションの組織化および/または実行に関連したオペレーションを行うことができる。本開示においては、クライアント106およびサーバ102は、同期されるアプリケーションデータおよびアプリケーションデータ変更を記憶することができるメモリを含む。サーバおよびクライアントのより詳細な説明は、以下の図2および図3においてそれぞれなされる。
[0028] 図2は、図1を参照して記載されたクライアント‐サーバベースのネットワークシステムにおける例示的なサーバのブロック図である。サーバ200は典型的には、1つ以上の処理装置(CPU)202、1つ以上のネットワークまたは他の通信インターフェース206、メモリ205、およびこれらの構成要素を相互に接続するための1つ以上の通信バス204を含む。メモリ205は、DRAM、SRAM,DDR RAMなどの高速ランダムアクセスメモリ、またはその他のランダムアクセス固体記憶装置、および、磁気ディスク記憶装置、光学ディスク記憶装置、フラッシュメモリ素子などの不揮発性メモリ、またはその他の不揮発性固体記憶装置を含む。メモリ205は、CPU202から遠隔に位置する1つ以上の記憶装置を任意に含みうる。
[0029] いくつかの実施形態では、メモリ205は、オペレーティングシステム207、通信モジュール208、サーバアプリケーションモジュール209、サーバ同期モジュール210およびデータ構成207を含む、プログラム、モジュールおよびデータ構成またはこれらのサブセットを記憶する。これらの構成要素の図示した編成は、例示であり、構成要素に起因する機能性の代替的な構成または編成を妨げるものでないことを理解されたい。他の実施形態は、これらの構成要素、及びこれらの構成要素のサブセットまたはスーパーセットに起因する機能を任意に組合せることができる。これは、サーバまたはクライアント装置を参照して本明細書において記載される一切のソフトウェア構成要素にも当てはまる。
[0030] オペレーティングシステム207は、多様な基本的システムサービスを処理するため、およびハードウェア依存タスクを行うためのプロシージャを含む。
[0031] 通信モジュール208は、サーバアプリケーション209を他のサーバまたはクライアント装置にインターフェース接続するために使用される。通信モジュール208を使用するインターフェース接続は、1つ以上の通信ネットワークインターフェース206(有線または無線)および、インターネット、その他の広域ネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワークなどの1つ以上の通信ネットワークを介して達成される。
[0032] アプリケーションモジュール209は、クライアント駆動のまたはサーバ駆動の種々のアプリケーションを含む。アプリケーションがクライアント駆動のアプリケーションである場合で、アプリケーションがサーバにおいてアクティブであるとき、アプリケーション自体は、クライアント装置における対応するアプリケーションから発せられるコマンドによって駆動される。アプリケーションがサーバ駆動のアプリケーションである場合で、アプリケーションがサーバにおいてアクティブであるとき、サーバにおけるアプリケーションは、クライアント装置における対応するアプリケーションを駆動させる。いくつかの実施形態では、アプリケーションは、クライアントとサーバとにより等しく駆動され、携帯電話などのクライアント装置におけるオペレーションのために構成および適応されることができ、かつ、サーバ同期モジュール210を含みうる。
[0033] サーバ同期モジュール210は、クライアントおよびサーバにおいて動作するか、またはクライアントとサーバとの間で協働して動作する(電子メールクライアントおよびサーバアプリケーションの場合と同様)1つ以上のアプリケーションによって使用されうるデータの同期に使用される。同期モジュール210は、単一のアプリケーションに特有であるか、1つ以上のアプリケーションに汎化可能な同期コンフィギュレーションを含みうる。一実施形態では、同期モジュール210は、ダウンヒル(downhill)同期モジュール220、アップヒル(uphill)同期モジュール280および同期制御290を含む。これらのモジュールの機能は、図3を参照して記載されるクライアントにおけるその対応モジュールに相当する。
[0035] アップヒル同期モジュール230は、クライアントデータ変更(例えば、メッセージが作成された、メッセージが削除された、ラベルが追加または削除された、アポイントメントの情報の変更など)をサーバに同期させる責任を有する。すなわち、アップヒル同期は、クライアントにおけるアプリケーションデータ変更が、サーバアプリケーションデータに反映されることを確かにする。
[0035] アップヒル同期モジュール230は、クライアントデータ変更(例えば、メッセージが作成された、メッセージが削除された、ラベルが追加または削除された、アポイントメントの情報の変更など)をサーバに同期させる責任を有する。すなわち、アップヒル同期は、クライアントにおけるアプリケーションデータ変更が、サーバアプリケーションデータに反映されることを確かにする。ダウンヒル及びアップヒル同期の両者は、2008年10月に出願された関連する特許出願第xx/xxx,xxx号に、より詳細に開示され、その全体を本明細書の一部を構成するものとしてここに援用する。
[0036] 同期制御240は、通信ネットワークへの接続性、未同期のデータの検出またはデータ同期が行われるときに存在する他の条件に従い、データ同期のオペレーションを制御する。一実施形態では、サーバは、クライアントからの同期リクエストにレスポンスすることによって同期を開始するよう構成されるが、その逆もまた可能である。
[0037] 検索モジュール250は、クライアントとのダウンヒル同期に先立ち、サーバによって使用され、サーバにおける所定の基準を満たすデータおよびデータ変更を選択し、ソートする。検索モジュール250は、ユーザに最も関連するサーバデータが指定の基準に従い選択され、優先度が付けられ、クライアントに同期されることを可能にし、それにより、最も関連する情報が、より関連しない情報よりも前にクライアントに送信される(expedited)。これらの指定された基準を使用して、検索モジュールは、所望の効果を得るために多様なコンフィギュレーションで検索を行いうる。例えば、一連の基準が使用される場合では、複数の検索が、一度に1つの基準を使用して行われうる。他の実施形態では、単一の検索が基準の組合せを使用して行われうる。種々のコンフィギュレーションの検索の結果は多様なものになる。一実施形態では、種々のコンフィギュレーションの検索は、各データ同期について、データの特定の望ましい順序付けを得るために行われうる。他の実施形態では、様々な時間における同期のため、データまたはデータ変更を種々のグループに分離することが目的でありうる。
[0038] データモジュール270は、アプリケーションモジュール209内のアプリケーションによって使用されるアプリケーションデータ277、グローバルヒストリテーブル271およびクライアントデータ273を含む。クライアントデータ273は、個別のクライアント272A、Bのそれぞれについての情報を含む。個別のクライアントのそれぞれについての情報は、同期トークン278、クライアントコンフィギュレーションデータ279、キャッシュされたクライアントデータ276、およびクライアント281についての他のデータを含む。
[0039] グローバルヒストリテーブル271は、同期機構の一実施形態では、サーバデータに行われたデータオペレーションについての情報を含み、フォワード同期に使用される。各グローバルヒストリテーブルは、複数のサーバヒストリオペレーション識別(server history operation identifications)(SHO ID)を含み、各SHO IDは、サーバデータの1つに行われた個別のオペレーションを表す。いくつかの実施形態では、グローバルヒストリテーブルにおける情報は、時系列で記憶されている。
[0040] 同期トークン278は、サーバが知っているクライアントの状態に関するサーバによって維持されるデータを表す。いくつかの実施形態では、これらの同期トークンは、アップヒル同期においてサーバが処理したクライアントからの最高位のCHO IDを含む。他の実施形態では、同期トークンは、バックワード同期においてクライアントが処理したと確認されたデータの範囲を表す。上述の関連出願で説明したように、これらのトークンは、バックワード同期の間にサーバデータを識別し優先度を付けるために使用される。一意の識別は、正しいデータが同期されることを確かにする。
[0041] コンフィギュレーション仕様データ279は、クライアントとの同期を行うためにサーバによって使用されるコンフィギュレーション情報である。コンフィギュレーション情報は、検索基準(例えば、データのフィールド、データのコンテンツ、データに関連づけられたラベルなど)、同期されるアイテム数、同期されるデータの優先度などを含みうるがこれらに限定されない。
[0042] キャッシュクライアントデータ276は、特定のクライアントに属するサーバにおける他の全てのデータを含み、その他のクライアントアプリケーションデータを含みうるがこれに限定されない。他のクライアント特有データ281は、他のアプリケーションについての他の同期に特有の情報を含みうるがこれに限定されない。
[0043] 図3は、サーバと相互作用する例示的なクライアント300を示すブロック図である。クライアント300は、一般に1つ以上の処理装置(CPU)302、1つ以上のネットワークまたは他の通信インターフェース306、メモリ305、およびこれらの構成要素を相互に接続するための1つ以上の通信バス304を含む。通信バス304は、システム構成要素を相互接続し、これららの間の通信を制御する回路(チップセットとも呼ばれる)を含みうる。
[0044] クライアント装置300は、ディスプレイ392といった出力装置、スピーカ(図示せず)などの音声出力およびユーザ入力装置394を有するユーザインターフェース390を含みうる。ディスプレイ392は、アクティブマトリックスディスプレイまたはタッチスクリーンディスプレイなどであることができ、ユーザ入力装置394は、例えば、数値入力キーパッド、ソフトキー、タッチパッド、英数字入力キーバッド、またはタッチスクリーンなどの任意の組合せを含みうる。メモリ305は、高速ランダムアクセスメモリを含むことができ、また、中央処理装置302から遠隔に位置することができる1つ以上の磁気ディスク記憶装置およびフラッシュメモリなどの持ち運び可能な記憶装置などの非不揮発性メモリも含みうる。いくつかの実施形態では、メモリ305は、オペレーティングシステム301、通信モジュール303、グラフモジュール307、メモリキャッシュ308、クライアントアプリケーションモジュール310、クライアント同期モジュール320およびデータ380を含むプログラム、モジュールおよびデータ構成、またはこれらのサブセットを記憶しうる。
[0045] オペレーティングシステム301は、多様なベーシックシステムサービスを処理するため、およびハードウェア依存タスクを行うためのプロシージャを含む。
[0046] 通信モジュール303は、1つ以上の通信ネットワークインターフェース306(有線または無線)およびインターネット、他の広域ネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク、セルラーネットワークなどの1つ以上の通信ネットワークを介して、クライアントアプリケーション310をサーバに接続する。
[0047] メモリキャッシュ308は、アクティブなアプリケーションによる素早いアクセスのために情報を一時的に記憶する。記憶される情報の例としては、アプリケーションに特有のメタデータおよび他の情報が含まれうる。一般に、アプリケーションが非アクティブになると、情報は消去される。
[0048] クライアントアプリケーションモジュール310は、クライアント装置300において実行されることができる1つ以上のアプリケーションを含む。こうしたアプリケーション310のいくつかは、サーバ200と相互作用し、通信、ユーザインターフェース管理、アプリケーションカスタマイゼーション、および電子メール、カレンダー、テキストメッセージ、メディアプレイヤー、文書編集または閲覧ソフトウェアなどを含む特定のクライアントアプリケーションの管理に関連したタスクを行うよう構成される。クライアントアプリケーションは動作中、クライアント装置によって駆動される。
[0049] クライアント同期モジュール320は、クライアント装置またはサーバで独立して動作できるアプリケーションについてのデータの同期に使用される。クライアント同期モジュール320は、単一のアプリケーションに特有であるか、または複数のアプリケーションに汎用的である同期スキームを含みうる。一実施形態では、クライアント同期モジュール320は、ダウンヒル同期モジュール325、アップヒル同期モジュール30、同期制御34、およびラベル検索モジュールを含む。これらのモジュールの機能は、サーバにおけるそれらの対応モジュールに相当する。
[0050] ダウンヒル同期モジュール325は、クライアントがサーバからデータ変更を受信することに責任を有する。サーバの対応モジュールと同様に、ダウンヒル同期は、一実施形態では、上述した関連出願においてより詳細に記載される、上述のフォワード同期およびバックワード同期を含む。
[0051] サーバの対応モジュールにおいて上述された、アップヒル同期モジュール330は、クライアントデータ変更をサーバに同期させる責任を有する。サーバとクライアントとの間のデータ変更を同期させるための他の同期スキームも考えられうることを理解されたい。
[0052] 同期制御340は、通信ネットワークへの接続性、未同期のデータの検出またはデータ同期が行われるときに存在する他の条件に従い、データ同期のオペレーションを制御する。一実施形態では、クライアントは、サーバへの同期リクエストを開始するよう構成されるが、その逆もまた可能である。
[0053] データモジュール380は、アプリケーションモジュール310におけるアプリケーションによって使用されるデータファイルおよびサーバとの同期に使用されるデータを含みうる。いくつかの実施形態では、データモジュール380は、サーバとのデータ同期のための同期データ370、キャッシュされたデータ382およびコンフィギュレーション仕様384のうち少なくとも1つを含みうる。
[0054] 同期データ370は、いくつかのアプリケーションに特有でありうる同期トークン372、ローカル/クライアントヒストリテーブル374、および同期データ376といった、特有のデータを含みうる。これらのデータは、特にクライアント装置のサーバとの同期に使用される。
[0055] 同期トークン372は、クライアントが知っているサーバの状態に関するクライアントによって維持されるデータを表す。いくつかの実施形態では、これらのトークンは、これまでのフォワード同期においてクライアントが処理したサーバからの最高位のSHO IDを含む。他の実施形態では、同期トークンは、サーバから最後に受信した確認によって判定される、クライアントがバックワード同期中に処理したデータの範囲を表す。
[0056] ローカル/クライアントヒストリテーブル374は、クライアントにおけるデータ変更に関する情報を含む。このテーブル内の各エントリは、CHO IDを有し、特定のデータオペレーションを表す。特に、ローカル/クライアントヒストリテーブル内の情報は、データのクライアントとのアップヒル同期のために使用されうる。他のアプリケーション376に特有の同期データは、種々のアプリケーションに特有の種々のアプリケーションデータである。
[0057] キャッシュされたデータ382は、クライアントにおいて記憶された他のデータを表す。これは、多様な他のアプリケーションに使用されたデータおよびサーバに同期されるデータを含みうる。
[0058] コンフィギュレーション仕様384は、クライアント装置についての特有のコンフィギュレーション情報を含む。この情報は、同期、相互作用、およびアプリケーションの起動およびオペレーションのために、クライアントをサーバにまたは他の装置に識別するために使用されうる。例えば、コンフィギュレーション仕様に含まれる情報は、クライアント識別、クライアントの装置仕様、データが同期されるアプリケーションの識別および同期の基準などを含みうるがこれらに限定されない。
[0059] 本開示において記載される検索ベース仕様は、サーバとクライアントとの間の全ての形態のデータ同期に適用される。検索は、より大きなデータセットからデータのサブセットを選択することを目的とするので、データセットが完璧であるサーバおいて適用されることが多い。検索は、クライアント装置のユーザにとってのデータの関連性に従い優先度が付けられることができるフォーカスデータセット(a focus data set)を生成する。この検索方法は、上述の関連出願において記載される同期方法を補完する。利点の1つは、ユーザが、サーバにおけるデータ変更の同期のための選択および優先度付けをコントロールできるようになることである。検索ベースのデータ同期は、クライアントデータにも適用されうるが、クライアントにおけるデータがより少ない量であることを考慮すると、本検索方法は、一般にクライアントにおいては実装されない。
[0060] 図4は、サーバ402とクライアント404との間の例示的な同期相互作用スキーム400を示す。いくつかの実施形態では、コンフィギュレーション同期は、第1の同期開始(the first start synchronization)および主同期(the main synchronization)の前に起きる。従前のステップは、再検討されてもよく、クライアントは、任意に再構成されることができる。同期開始は、クライアントが要請すれば再度起こる。いくつかの実施形態では、同期開始は、バックワード同期に再び優先度を付ける。例えば、電子メールの文脈では、バックワード同期は、会話をロードすることができ、直近のものから開始し、最も古いもので終了する。それゆえこの場合では、同期開始は、「直近(most recent)」の意味を「現時点(now)」を意味するよう再設定する。いくつかの実施形態では、同期開始ハンドシェーク421は、サーバ402とクライアント404との間で行われ、主同期ハンドシェーク423によって表される実際のデータ同期プロセスを開始する。一般に、同期開始ハンドシェーク421の前に、コンフィギュレーションハンドシェーク422が、クライアントに特有の同期コンフィギュレーションを確認するために起こりうる。同期開始ハンドシェーク421と主同期ハンドシェーク423のいくつかの実施形態は、上述の関連出願において詳述される。例えば、いくつかの実施形態では、同期開始ハンドシェークは、クライアント404がサーバ402と通信しない期間が続いた後(例えば、通信ネットワークの範囲外、クライアント装置の電源が切れている、クライアントにおけるアプリケーションが終了している、または装置またはサーバが通信ネットワークから切断されている)か、または、クライアントとサーバとの間の第1のデータ同期に先立って開始される。
[0061] 同期開始ハンドシェーク421は、クライアントをサーバに識別し、データ同期の起点を確立する。同期開始ハンドシェークのそれぞれは、リクエスト411およびレスポンス412を有する。いくつかの実施形態では、リクエスト411は、クライアントから発生し、リクエストが確認された後で、サーバはレスポンス412を送信する。同期開始が、本開示において示されるとおりに主同期の一部として組み込まれてもよく、また完全に除外されてもよいことを理解されたい。さらに、リクエストは、クライアントの代わりにサーバから発生されてもよい。
[0062] コンフィギュレーションハンドシェーク422は、サーバとクライアントとの間のデータ同期のためのパラメータを決定し、確認するよう動作する。コンフィギュレーションパラメータは、同期のためのデータを選択し、ソートするサーバにおける検索機構を制御するよう、クライアントを使用しているユーザによって指定されるかまたは修正されることができる。例示的なハンドシェークでは、クライアントは、コンフィギュレーション仕様リクエスト413をサーバに送信し、サーバからコンフィギュレーション仕様レスポンス413を受信し、主同期の前にコンフィギュレーション仕様を確認する。他の実施形態では、コンフィギュレーションハンドシェーク422は、同期開始ハンドシェーク421の一部であるか、または、主同期ハンドシェーク423の一部であってもよい。さらに、リクエストは、サーバからクライアントへ発生し、コンフィギュレーション仕様を確認する。
[0063] 主同期ハンドシェーク423は、同期のためのサーバデータの範囲が確立された後に起こる。主同期ハンドシェークのそれぞれは、リクエスト415、417およびレスポンス416、418を有する。例示的な図では、リクエスト415、417は、クライアントから送信され、レスポンス416、418は、サーバによって送信される。いくつかの実施形態では、主同期リクエスト415、417は、サーバへのアップヒル同期においてクライアントデータ変更を含み、主同期レスポンス416、418は、クライアントへのダウンヒル同期においてフォワードおよびバックワード同期と関連づけられたサーバデータおよびサーバ変更オペレーションを含む。いくつかの実施形態では、主同期は、サーバまたはクライアントのいずれかに未同期のデータが残存する限り、直ちに繰り返される。さらに、主同期は、サーバとクライアントとの間にアクティブな接続がある限り、固定のインターバルといった所定の条件に従い、またはサーバまたはクライアントのいずれかに新しいデータまたはデータオペレーションがある場合はいつでも、繰り返される。いくつかの実施形態では、同期開始は、例えば一時間といった、予め決められた特定の時間の長期の切断がない限り、またはアプリケーションが終了し再開する(419)場合には、繰り返されない。
[0064] 図5は、データ同期のための検索を行うための例示的な検索仕様を示す。いくつかの実施形態では、検索は、データ同期に先立ちサーバにおいて行われる。他の実施形態では、検索は、データが同期されるのと同時に行われてもよい。いくつかの実施形態では、検索仕様501は、複数の検索を含みうる。検索502、505のそれぞれは、1つ以上の検索基準を含みうる。いくつかの実施形態では、これらの検索は、並列にまたは連続して行われうる。検索はまた、データタイプまたは期間に特有でありうる。いくつかの実施形態では、それぞれの検索における検索基準502−A、Bおよび505−A、Bは、データの種々のアスペクトを表しうる。例えば、基準は、データ作成日、データ修正日、データに関連付けられたラベル、データ内に存在するエントリのフィールドを含みうるが、これらに限定されない。いくつかの特定の例は、電子メールのメッセージに関連付けられたラベル、電子メールの会話に関連付けられたラベル、送信者、電子メールメッセージまたは会話の件名フィールド、アドレス、電話番号、および連絡先の電子メールフィールド、カレンダーエントリの件名、日付および時間などを含みうるがこれらに限定されない。
[0065] 図6は、コンフィギュレーションハンドシェーク内のコンフィギュレーション仕様のための例示的なリクエストを示す。コンフィギュレーション仕様は、同期に先立ち、サーバにおけるデータを選択しソートするよう検索を構成するための検索機構によって使用されるパラメータを記述する。いくつかの実施形態では、コンフィギュレーション仕様は、検索基準がどのように定義されているかを含む。例えば、検索基準は、特定の順序で検索を行うためにクライアントを介してユーザが指定した多様なラベルを含みうる。換言すると、ラベルは、基準が並べられた順序と検索の結果とが一致するように順序付けられうる。他の実施形態では、基準は、適宜順序付けられうるが、検索を行うための特定の順序を検索機構に知らせる特定のエントリが存在しうる。いくつかの実施形態では、検索基準は、クライアントによってもたらされることができ、他の実施形態では、検索基準は、サーバによって決定されてもよい。
[0066] 図6はまた、同期のためにサーバデータを選択し、優先度を付けるために検索機構によって使用されうる基準の複数のカテゴリを示す。種々のカテゴリの基準が検索に使用されうる。いくつかの実施形態では、検索基準は種々のタイプのラベルを含みうるがこれに限定されない。いくつかの例示的なラベルのカテゴリは、常に含む(always include)602、常に除外(always exclude)603、持続期間(in-duration)604、607、610、持続期間‐含む(in-duration-include)605、608、持続期間‐除外(in-duration-exclude)606、609、および優先度(priority)611を含むがこれらに限定されない。いくつかの実施形態では、「常に含む」リストは、データ同期において常に含まれるラベルを含み、「常に除外」リストは、データ同期から常に除外されるラベルを含む。例示を目的として、「常に含む」リストは、「新規」、「仕事」または「星」でラベル付けられた全てのメッセージ/会話/連絡先/カレンダー/タスクを含みうる。「常に除外」リストは、「ごみ」、またはSPAMとラベル付けられたメッセージ/会話/連絡先/カレンダー/タスクエントリを含みうる。「持続期間」は、データが検索される期間を指定するカテゴリである。
[0067] 例示を目的として、3つの持続期間が説明される。これらは、現在から現在の1週間前までの期間、1週間前から4週間前までの期間、および4週間前から8週間前までの期間を含む。これらの持続期間ラベルは、指定の時間フレーム内でアプリケーションを検索するシステムによって適用されうる。さらに、持続期間‐含む、および持続期間‐除外カテゴリはそれぞれ、各検索における包含または除外に関する時間フレーム内に含まれる属性ラベルおよび非属性ラベルを指定しうる。いくつかの単純な検索規則およびラベルの使用を組み合わせることで、アプリケーションデータを選択し順序付けるための無限の数の方法が使用されることができ、それにより、ユーザにとって最も関連のあるデータが選択され、優先順でクライアントに送信される。データ同期は、しばしば任意の理由のために中断されるため、優先度の高い関連データが、優先度の低いデータの前に同期され、クライアントに送信されることが好ましいことから、クライアントに同期されるアプリケーションデータの順序が重要となりうる。
[0068] 図7は、本開示において記載された検索機構によって使用されうる電子メールメッセージ形式のデータの例示的アイテムを示す。メッセージ701は、情報の少なくとも2つのカテゴリであるメタデータ710およびコンテンツ750を含む。一実施形態では、メタデータ710は、メッセージの識別、選択およびソートのために同期機構および検索機構によって使用されうる情報を含む。メタデータの種々のフィールドのいくつかの例は、データ/メッセージID711、属性ラベル712、および非属性ラベル713を含む。他のメタデータは図示しないが、人気率と、関連言語、関連ロケール、アプリケーションデータがクライアント装置のユーザのプレファレンス(例えば、個人的嗜好)を具体的に満たしているかどうかを識別するフィーチャといった、アプリケーションデータに付帯的なその他の2次的情報とを含みうるがこれらに限定されない。
[0069] それぞれのデータアイテム内のメタデータ710は、ユーザには可視であるか、または不可視であるが、データの状態またはコンテンツが変更されると、システムおよび/またはユーザによって編集されうる。いくつかの実施形態では、データ/メッセージID711は、バックワード同期によって使用される同期トークンと同一でありうる。一実施形態では、このデータ/メッセージID711は、各メッセージ(またはアプリケーションデータ内のアイテム)に対して一意的であり、変更することができない。このデータ/メッセージID711は一般に、同期プロセスの間、データアイテムの識別のために重要である。
[0070] 属性ラベル712は、ユーザによって変更できない情報に関するラベルである。これは元来データの一部をなしうる情報を含む。例えば、電子メールメッセージは、常に電子メールメッセージのままであり、連絡先エントリとしてはラベル付けされることはない。
[0071] 非属性ラベル713は、ユーザによって変更できるデータのアイテムについての情報を含む。例えば、メッセージはシステムによって当初SPAMラベルを有するSPAMとして分類され、ユーザがユーザを非SPAMとマークしないかぎり、ラベルは変更されることはない。同様に、ユーザが新しいメッセージを読んだ後、メッセージはもはや未読ではなく、ユーザがメッセージを意図的に未読とマークしない限り、システムは新しいメッセージに関連づけられた未読ラベルを自動的に取り除く。同様に、非属性ラベル713は、アプリケーションデータを分類するためにユーザによって設定され、システムによって影響されない(untouched)ラベルを含みうる。システムは、これらのユーザが考案したラベルには関係しない。しかしながら、システムは、削除およびSPAM分類などを含むがこれらに限定されない特定のユーザまたはシステムオペレーションに応答してデータにラベルを適用しうる。
[0072] いくつかの実施形態では、メッセージへの添付(図示せず)は、システムによって割り当てられる別個のラベル(例えば、属性ラベル)を有しうる。いくつかの実施形態では、ラベルは、添付であることを単に示す表示でありうるか、または、より洗練された実施においては、添付はさらに、添付が相当するデータタイプによってラベル付けされうる。
[0073] 同様に、データアイテム(例えば、メッセージ701)のデータコンテンツ750もまた、メッセージを識別、選択およびソートするための同期機構および検索機構によって使用されうる情報を含みうる。例えば、データコンテンツ750は、さらに、情報の種々のフィールドを含みうる。本例の電子メールメッセージでは、データコンテンツは、送信者751、受信者752、日付753、時間754、件名755、およびメッセージコンテンツ756といったフィールドを含みうる。これらのフィールドのそれぞれは、検索基準として機能することができ、これらのフィールドのそれぞれにおける特定のエントリは、検索機構にとって検索対象でありうる。同期プロセスにおいて、これらのフィールドになされた変更は、データ変更とみなされるため、データ変更がそれぞれサーバまたはクライアントで行われるかにどうかに基づき、データ変更またはアイテム全体がフォワード同期またはアップヒル同期されることになる。
[0074] 図8(A)から(D)は、データを選択しソートする検索機構の例示的なプロセスを示す。これらの図は、サーバにおけるデータを選択しソートするプロセスを示すが、このプロセスは、クライアントにおいてまたはデータの選択またはソートのための他の場所においても等しく適用される。また、図8(A)は、サーバにおける例示的なアプリケーションデータとしてのメッセージのリストを示すが、他のタイプのアプリケーションデータが、文書、スプレッドシート、チャート、グラフ、写真、RSSフィードアイテム、インスタントメッセージング(IM)におけるデータ、ショートメッセージサービス(SMS)におけるデータ、連絡先グループ、または他のデータタイプを含みうるがこれらに限定されないことを理解されたい。また例示を目的として、データアイテムが説明に使用されるが、データ変更の枝刈りおよび組織化のために同一の原理がサーバにおいておよびクライアントにおけるヒストリオペレーションに適用されうることを理解されたい。さらに、フォワードまたはアップヒル同期におけるヒストリオペレーションによって表されるデータ変更は、コンフィギュレーション仕様において指定された検索基準に従って検索されることができる。
[0075] いくつかの実施形態では、図8(A)のアプリケーションデータのリストは、電子メールアプリケーションに関するサーバにおける電子メールメッセージのリストに対応する。いくつかの実施形態では、電子メールメッセージのリストは、バックワード同期のためのバックワード同期トークン(例えば、BST)によって表される一意の識別子をそれぞれ有するデータのリストに対応する。データのリストは、連絡先情報、カレンダーエントリ、またはクライアント‐サーバアプリケーションによって使用される他のデータの形式でありうることを理解されたい。さらに、データの1つのタイプがリストされていても、データの複数のタイプがリストされ、混合されうることを理解されたい。
[0076] 図8(A)におけるメッセージのそれぞれは、検索基準として機能しうる多数のデータ属性(例えば、メッセージコンテンツ、送信者フィールド、日付フィールド、時間フィールド、件名フィールド、ラベルなど)と関連付けられている。本例では、種々のタイプのラベルが主検索基準として使用されており、各メッセージは少なくとも1つのラベルと関連づけられている。上述のとおり、ラベルは、属性ラベルおよび非属性ラベルの少なくとも2つのグループに分類される。メッセージは元来「電子メールメッセージ」という属性ラベル(図示せず)と関連付けられている。図8(A)のメッセージに示すラベルは、一般に非属性ラベルである。例示的説明を目的として、非属性ラベルは、「星」、「仕事」、「プロジェクトX」、「SPAM」、「ごみ」、「車」、「ジョディー」、「写真」、「キャンプ」、「母」、「父」、「カナダ」、「株」、「投資」、「ING」、「プロジェクトY」、「10周年同窓会」、「母の日」、「ユタスキー旅行」、「エバ」、「カレッジ」および「未読」を含むがこれらに限定されない。
[0077] 属性および非属性ラベルは、検索のためにさらに分類されうる。例えば、いくつかの実施形態では、図示されるとおりカテゴリは、「常に含む(A‐In‐)」、「常に除外(A‐Ex‐)」、および「持続期間」を含みうるがこれらに限定されない。「常に含む」として分類されるいくつかの非属性ラベルは、ジョディーおよびボビーを含み、「常に除外」として分類されるいくつかの非属性ラベルは、SPAMおよびごみを含む。「持続期間」ラベルは、一般に、期間を定義し、ユーザによって指定されうる。例えば、「持続期間1」は、現在から1週間前までの時間フレームを指し、「持続期間2」は、1週間前から4週間前までの時間フレームを指し、「持続期間3」は、4週間前から8週間前までの時間フレームを指しうる。さらに、「含む」および「除外」サブカテゴリが、これらの「持続期間」カテゴリに追加されてよく、それにより、より詳細なレベルの検索を行うためにラベルはこれらの期間に含まれる(例えば、「持続期間1‐含む」)かまたはこれらの期間から除外されることができる(例えば、「持続期間2−除外」)。いくつかの実施形態では、検索機構が実施される間、検索が行われ、データが選択されるか、または絞り込まれる。選択されたデータは、より広範なデータが特定された後に検索を絞り込むことによって順序付けられうるか、または、データは、検索の連続的な適用に従い順序付けられえ、それにより、検索結果が連続的検索の順番に並べられる。
[0078] 例示的な図において、「常に含む」ラベルを有する全てのメッセージおよび「持続期間1、2、3」に該当するメッセージを選択することによる検索機構の適用から図8(B)が得られる。図示するとおり、ラベル「A‐Ex」(例えば、ごみおよびSPAMなどの常に除外)に関連づけられたメッセージ、および「持続期間1、2、3」の範囲の外にある特定の古いメッセージ(例えば、「10周年同窓会」、「母の日」、および「ユタスキー旅行」のラベル)は除外される。
[0079] 図8(C)は、検索機構によって持続期間に従いソートされた選択されたメッセージを示す。例示的説明を目的として、クライアント装置のユーザは、まず直近のメッセージを受信することを好みうる。それゆえ、データ同期の目的上、過去1週間(例えば、現在から1週間前まで)のメッセージは、過去1ヶ月(例えば、1週間前から4週間前まで)中のメッセージの前に並べられ、これは過去2ヶ月中(例えば、4週間前から8週間前まで)のメッセージの前に並べられる。
[0080] 図8(D)は、データ同期に先立ちユーザが指定したラベルの優先度に従い検索機構によって並べられた、各持続期間におけるメッセージの最終的な順序を示す。例示的説明を目的として、ユーザは、データの全ての範囲について、「未読」、「星」、および「仕事」のラベル順に従いメッセージを優先付けるよう指定することができる。それゆえ、全ての個別の「持続期間」カテゴリにおけるメッセージについて、「未読」メッセージが「星」ラベル付きのメッセージの前に並べられ、「星」ラベル付きのメッセージは、「仕事」ラベル付きのメッセージの前に並べられる。他の実施形態では、ラベルの優先度は、「持続期間」のそれぞれについて個別に指定されうる。残りのメッセージは、適宜並べられうるか、または、検索が行われた順番によって並べられうる。
[0081] 例えば、「持続期間‐1」において、ラベル「投資」および「父」は、「持続期間‐1‐含む」に分類され、ラベル「カナダ」は「持続期間‐1‐除外」に分類される。いくつかの実施形態では、「含む」カテゴリと「除外」カテゴリとの間に対立があるときはいつでも、「含む」カテゴリが「除外」分類よりも優先し、「除外」分類を無効にする(override)。本例では、「父、カナダ」のラベルを有するメッセージは、含みかつ除外するという検索からの対立する命令を有することから、このメッセージは含まれる。しかしながら、検索がサイレント(例えば、「母」)である場合、「母、カナダ」と分類されるメッセージは、「カナダ」のラベルを有するメッセージを除外する規則が有効であるため、除外される。この「母、カナダ」のラベルを有するメッセージは、もともとは持続期間1に含まれていたが、それは「母」ラベルのためではなく、メッセージに関連付けられた日付が「持続期間‐1の分類を満たすためである。「A‐In‐ボビー、キャンプ」のラベルを有するメッセージが含まれているが、これは、「キャンプ」ラベルのせいはなく、持続期間1に該当するメッセージであり、常に含まれるメッセージであるためである。
[0082] 「持続期間2」内のメッセージについて、メッセージは「未読」、「星」および「仕事」の順に従い並べられる。例示的説明を目的として、ラベル「ミュンヘン」は、「持続期間2‐除外」に含まれるため、「ミュンヘン」とラベル付けされたメッセージは、最終リストから除外される。同様に、「A‐In‐ジョディー、写真」および「ING、投資」とラベル付けられたメッセージは、これらのラベルが「持続期間2‐含む」カテゴリに分類されるため、含まれる。
[0083] 「持続期間3」内のメッセージについて、持続期間1および2のように優先度が付けられた「未読」、「星」、「仕事」のラベル順に同様に並べられる。同様に、ラベル「カナダ」は、「持続期間3‐除外」に分類されるので、「カナダ、写真」とラベル付けられたメッセージは除外される。別の実施形態では、ユーザは、持続期間3について、「除外」と関連づけられたラベルが「含む」と関連付けられたラベルに優勢であるよう指定することができるため、ラベル「写真」が「持続期間3‐含む」に分類されているとしても、「カナダ、写真」とラベル付けられたメッセージはやはり除外される。
[0084] いくつかの実施形態では、オペレーションのアクションを判定するためにアプリケーションでオペレーションが行われる前および後に、検索ベース機構は適用されうる。例えば、ユーザがメッセージにラベルを追加し、そのラベルがメッセージを同期されることから除外するものである場合、クライアント装置にコピーを有する元のメッセージは、サーバにおける対応するアプリケーションデータにラベルが追加された後にクライアント装置から除去される。同様に、メッセージにラベルを追加することは、元のメッセージがクライアントにおいて存在しなくても、クライアントにメッセージを同期させうる。
[0085] 要約すると、検索機構は、サーバにおけるデータに種々の影響を与えうる。第1に、対応するアプリケーションデータがクライアントにおいて存在しない場合、オペレーションは、検索機構がクライアントにおいてアプリケーションデータを追加するか、これを同期させることをもたらしうる。第2に、対応するアプリケーションデータがクライアントにおいて存在する場合、オペレーションは、検索機構がクライアントにおける対応するデータに対して何らのアクションも起こさないことをもたらしうる。第3に、対応するアプリケーションデータがクライアントにおいて存在する場合、オペレーションは、検索機構が対応するクライアントを取り除くことをもたらしうる。第4に、対応するアプリケーションデータがクライアントにおいて存在する場合、オペレーションは、検索機構が、サーバにおけるアプリケーションデータに行われたオペレーションと同様に、対応するデータを編集するかまたはこれに変更を行うことをもたらしうる。
[0086] 図9は、検索機構によって選択されたデータをクライアントが受信する例示的な方法を示すフロー図である。いくつかの実施形態では、ブロック931に示すとおり、クライアントはサーバから通信を受信して、クライアント装置とサーバとの間で情報を同期させる。情報は、1つ以上の検索基準に従い全てのサーバアプリケーションデータから検索機構によって選択され、サーバからの伝送前に順番に並べられる。いくつかの実施形態では、検索基準は、クライアントにおいて決定されうる。ブロック932において、クライアントは、サーバから受信した情報の少なくとも一部に従い、クライアントにおけるアプリケーションデータを同期させるオペレーションを行う。
[0087] 図10は、検索機構によって選択されたサーバアプリケーションデータをサーバが送信する例示的な方法を示すフロー図である。ブロック1031では、サーバは、同期に先立ちサーバアプリケーションデータに検索を行うために使用される1つ以上の検索基準を決定する。ブロック1032では、サーバは、1つ以上の検索基準に従い、サーバにおける検索機構を使用して全てのサーバアプリケーションデータから情報を選択する。ブロック1033では、サーバは、選択された情報をクライアントに伝送する。ブロック1034では、サーバは、クライアントに正常に同期された伝送された情報のレコードを付ける。
[0088] 上述の記載は、特定の実施形態を参照し例示目的で記載されている。しかしながら、上述の説明的記載は、網羅的であること、または開示された明確な形式に本発明を限定することを意図していない。上述の教示に照らして多数の修正及び変形が可能である。実施形態は、本発明の原理およびその実際の適用を最もよく説明するよう選択され記述されており、それによって、当業者が本発明および意図する特定の使用法に適するよう多様に修正された多様な実施形態を最もよく利用することが可能になる。

Claims (15)

  1. 複数のプロセッサおよび前記プロセッサによる実行のためのプログラムを記憶するメモリを含むサーバにおいて、
    同期に先立ちアプリケーションデータに検索を行うために使用される1つ以上の検索基準を決定するステップであって、前記1つ以上の検索基準は複数の検索基準の中からクライアントによって指定され、順序付けられる、ステップと、
    前記1つ以上の検索基準に従い、前記サーバにおける検索機構を使用して前記サーバにおける全てのアプリケーションデータから情報を選択するステップであって、前記選択された情報内のデータは、前記検索基準に従い優先度が付けられる、ステップと、
    前記選択された情報を同期のために前記クライアントに伝送するステップと、
    前記クライアントに正常に同期された前記伝送された情報のレコードを付けるステップと、
    を含む方法。
  2. 前記クライアントからクライアントアプリケーションデータ変更およびクライアントアプリケーションデータを受信するステップをさらに含み、前記クライアントアプリケーションデータを受信するステップは、前記選択された情報を前記クライアントに前記伝送することから独立して、かつ、これと同時に行われる、請求項1に記載の方法。
  3. 前記選択された情報は、前記サーバにおけるデータおよびデータへの変更オペレーションを含み、前記データは、高い優先度から低い優先度に並べられ、かつ前記クライアントに同期され、前記変更オペレーションは、前記サーバにおいて各変更オペレーションが発生したときに基づき古いものから新しいものに時系列で並べられ、かつ前記クライアントに同期される、請求項1または2に記載の方法。
  4. 前記伝送するステップは、同時に動作する2つの独立した同期機構をさらに含み、第1の同期機構が、優先度の順に前記情報の第1の部分を同期させ、第2の同期機構が、時系列で前記情報の第2の部分を同期させる、請求項1または2に記載の方法。
  5. 前記検索基準は、複数のカテゴリを含む、請求項1に記載の方法。
  6. 前記検索基準は、前記データコンテンツのラベルおよびフィールドのうちの少なくとも1つに関する、請求項1または5に記載の方法。
  7. 前記ラベルは、ユーザによって変更不能な属性ラベルおよび前記ユーザによって変更可能な非属性ラベルをさらに含む、請求項6に記載の方法。
  8. 1つ以上のプロセッサと、
    前記1つ以上のプロセッサに接続されたメモリと、
    前記メモリに記憶され、前記1つ以上のプロセッサによる実行のために構成された1つ以上のプログラムであって、請求項1乃至7のいずれか1項に記載の方法を行う命令を含む前記1つ以上のプログラムと、
    を含む、サーバ。
  9. コンピュータシステムの1つ以上のプロセッサによる実行のために構成された1つ以上のプログラムであって、請求項1乃至7のいずれか1項に記載の方法を行うために前記1つ以上のプロセッサによって実行される命令を含む前記1つ以上のプログラムを記憶する記憶装置。
  10. プロセッサおよび前記プロセッサによる実行のためのプログラムを記憶するメモリを有するクライアントにおいて、
    サーバから通信を受信して、前記クライアントと前記サーバとの間で情報を同期させるステップと、
    前記サーバから前記情報を受信するステップであって、前記情報は、複数の検索基準の中から前記クライアントによって指定され、順序付けられた1つ以上の検索基準に従い、検索機構によって、前記サーバにおけるアプリケーションデータから選択され、前記選択された情報内のデータは、前記検索基準に従い優先度が付けられる、ステップと、
    前記サーバから受信した前記情報の少なくとも一部に従い、前記クライアントにおけるアプリケーションデータを同期させる動作を行うステップと、
    を含む、方法。
  11. 前記情報は、前記クライアントにおけるアプリケーションデータに追加、削除または修正オペレーションのうち少なくとも1つを行う命令を含み、前記情報は、前記クライアントへの伝送前に、前記サーバにおいて高い優先度から低い優先度に並べられる、請求項10に記載の方法。
  12. 前記受信するステップが、同時に動作する2つの独立した同期機構をさらに含み、第1の同期機構が、優先度の順に前記情報の第1の部分を同期させ、第2の同期機構が、時系列で前記情報の第2の部分を同期させる、請求項10または11に記載の方法。
  13. 未同期のクライアントアプリケーションデータ変更および未同期のクライアントアプリケーションデータを前記サーバに同時に送信するステップをさらに含み、前記送信するステップが、前記情報を受信するステップから独立して、かつこれと同時に行われる、請求項10または11に記載の方法。
  14. 1つ以上のプロセッサと、
    前記1つ以上のプロセッサに接続されたメモリと、
    前記メモリに記憶され、前記1つ以上のプロセッサによる実行のために構成された1つ以上のプログラムであって、請求項10乃至13のいずれか1項に記載の方法を行う命令を含む前記1つ以上のプログラムと、
    を含む、クライアント。
  15. コンピュータシステムの1つ以上のプロセッサによる実行のために構成された1つ以上のプログラムであって、請求項10乃至13のいずれか1項に記載の方法を行うために前記1つ以上のプロセッサによって実行される命令を含む前記1つ以上のプログラムを記憶する記憶装置。
JP2011533308A 2008-10-21 2009-10-21 データの同期のための検索ベースの仕様 Active JP5631887B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10727608P 2008-10-21 2008-10-21
US61/107,276 2008-10-21
PCT/US2009/061540 WO2010048329A1 (en) 2008-10-21 2009-10-21 Search based specification for data synchronization

Publications (3)

Publication Number Publication Date
JP2012510652A JP2012510652A (ja) 2012-05-10
JP2012510652A5 JP2012510652A5 (ja) 2012-12-06
JP5631887B2 true JP5631887B2 (ja) 2014-11-26

Family

ID=41491560

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011533308A Active JP5631887B2 (ja) 2008-10-21 2009-10-21 データの同期のための検索ベースの仕様

Country Status (8)

Country Link
US (1) US9367599B2 (ja)
EP (2) EP2347347B1 (ja)
JP (1) JP5631887B2 (ja)
KR (1) KR101572863B1 (ja)
AU (1) AU2009308480B2 (ja)
CA (1) CA2741216A1 (ja)
DE (1) DE202009019140U1 (ja)
WO (1) WO2010048329A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002035572A (ja) * 2000-05-18 2002-02-05 Ulvac Japan Ltd 真空処理装置と多室型真空処理装置
JP5634178B2 (ja) * 2010-09-09 2014-12-03 Kii株式会社 データ同期システムおよびデータ同期方法
JP5578106B2 (ja) * 2011-02-16 2014-08-27 沖電気工業株式会社 情報処理システム及び帳票イメージ保管サーバ
KR101779825B1 (ko) * 2011-02-21 2017-09-20 삼성전자주식회사 휴대용 단말기에서 컨텐츠 데이터를 관리하기 위한 장치 및 방법
US20130097116A1 (en) * 2011-10-17 2013-04-18 Research In Motion Limited Synchronization method and associated apparatus
US20130159851A1 (en) * 2011-12-20 2013-06-20 Bewo Technologies Pvt.Ltd Method and system for providing help content to users
US9519490B2 (en) 2013-03-07 2016-12-13 Microsoft Technology Licensing, Llc Adaptive data synchronization
US9870422B2 (en) * 2013-04-19 2018-01-16 Dropbox, Inc. Natural language search
US9588983B2 (en) * 2013-10-17 2017-03-07 Microsoft Technology Licensing, Llc Data classification for adaptive synchronization
WO2015072220A1 (ja) * 2013-11-14 2015-05-21 ソニー株式会社 情報処理装置、情報処理方法および記憶媒体
JP5857086B2 (ja) * 2014-04-14 2016-02-10 株式会社Tkc データベース・システム
CN104660492B (zh) * 2015-01-27 2019-06-25 惠州Tcl移动通信有限公司 基于智能设备和功能机的邮件同步方法及系统
CN107544999B (zh) * 2016-06-28 2022-10-21 百度在线网络技术(北京)有限公司 用于检索系统的同步装置及同步方法、检索系统及方法
US10489423B2 (en) 2016-12-30 2019-11-26 Microsoft Technology Licensing, Llc Most-relevant-first calendar event synchronization
US11184097B2 (en) * 2019-08-16 2021-11-23 Arista Networks, Inc. VLAN-aware clock hierarchy
US11201918B2 (en) * 2020-03-03 2021-12-14 Snap Inc. Minimizing number of synchs

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US50142A (en) * 1865-09-26 Improved mode of sinking well-tubes
US39629A (en) * 1863-08-25 Improvement in machines for upsetting tires
US283049A (en) * 1883-08-14 Bundling-maohine
US104133A (en) * 1870-06-14 Improved bridle-bit
US5551024A (en) * 1994-10-13 1996-08-27 Microsoft Corporation System for identifying data records in a database using a data structure with linked parameters in a search range
US6983308B1 (en) 1998-11-19 2006-01-03 Openwave Systems, Inc. Mail synchronization of remote and local mail systems
US6247135B1 (en) * 1999-03-03 2001-06-12 Starfish Software, Inc. Synchronization process negotiation for computing devices
US6560655B1 (en) * 1999-06-22 2003-05-06 Microsoft Corporation Synchronization manager for standardized synchronization of separate programs
JP2001022627A (ja) 1999-07-06 2001-01-26 Nec Commun Syst Ltd 複数装置間でのデータベース同期方式および方法
JP2002014860A (ja) 2000-06-28 2002-01-18 Hitachi Ltd 複数データベースの同期化方法
US20020078075A1 (en) * 2000-12-15 2002-06-20 Colson James C. System, method, and program product for prioritizing synchronizable data
US7024491B1 (en) * 2001-05-23 2006-04-04 Western Digital Ventures, Inc. Remotely synchronizing a mobile terminal by adapting ordering and filtering synchronization rules based on a user's operation of the mobile terminal
US7529680B2 (en) * 2002-03-29 2009-05-05 Siebel Systems, Inc. Screening electronic service requests
US7370064B2 (en) 2002-08-06 2008-05-06 Yousefi Zadeh Homayoun Database remote replication for back-end tier of multi-tier computer systems
US7131052B2 (en) * 2002-08-12 2006-10-31 International Business Machines Corporation Algebraic decoder and method for correcting an arbitrary mixture of burst and random errors
US20050050142A1 (en) * 2003-08-28 2005-03-03 Aligo Inc. Method and framework for transaction synchronization
US20050147130A1 (en) * 2003-12-23 2005-07-07 Intel Corporation Priority based synchronization of data in a personal area network
JP2005242403A (ja) * 2004-02-24 2005-09-08 Hitachi Ltd 計算機システム
US20060047819A1 (en) * 2004-05-14 2006-03-02 Caddes Scott A Simultaneous transfer of database updates between multiple clients and a server
KR100678921B1 (ko) 2005-10-18 2007-02-05 삼성전자주식회사 다중 서버 환경에 적합한 디바이스를 클라이언트로 하여동기화를 수행하는 방법 및 장치
US7747566B2 (en) * 2005-11-23 2010-06-29 Research In Motion Limited Method and apparatus for synchronizing databases connected by wireless interface
US7693832B2 (en) 2006-02-28 2010-04-06 Microsoft Corporation Rich set of synchronization rules across multiple accounts with multiple folder and consent types
US20080242370A1 (en) * 2006-03-31 2008-10-02 Ixi Mobile (R&D) Ltd. Efficient server polling system and method
US7890646B2 (en) * 2006-04-27 2011-02-15 Microsoft Corporation Synchronization orchestration
US7860825B2 (en) * 2006-05-08 2010-12-28 Palm, Inc. Method for synchronizing software application and user data for asynchronous client-server and peer to peer computer networks
US7912916B2 (en) 2006-06-02 2011-03-22 Google Inc. Resolving conflicts while synchronizing configuration information among multiple clients
US7865548B2 (en) * 2006-07-06 2011-01-04 International Business Machines Corporation Email recovery method and system
US7860827B1 (en) * 2006-10-23 2010-12-28 Field Automated Communication Systems, Llc Data synchronization method for an application database available on multiple wirelessly connected platforms
US8195605B2 (en) * 2006-10-27 2012-06-05 Purdue Pharma L.P. Data cache techniques in support of synchronization of databases in a distributed environment
JP4809198B2 (ja) * 2006-11-29 2011-11-09 株式会社リコー 画像処理機器,記事画像選択方法,プログラム,および記録媒体
US7627595B2 (en) * 2006-12-06 2009-12-01 Verizon Data Services Inc. Apparatus, method, and computer program product for synchronizing data sources
US8631088B2 (en) * 2007-01-07 2014-01-14 Apple Inc. Prioritized data synchronization with host device
US7899917B2 (en) 2007-02-01 2011-03-01 Microsoft Corporation Synchronization framework for occasionally connected applications
US20080307109A1 (en) 2007-06-08 2008-12-11 Galloway Curtis C File protocol for transaction based communication
US9584343B2 (en) * 2008-01-03 2017-02-28 Yahoo! Inc. Presentation of organized personal and public data using communication mediums
US8023934B2 (en) * 2008-03-28 2011-09-20 Ianywhere Solutions, Inc. Synchronizing communications and data between mobile devices and servers
US20090265203A1 (en) * 2008-04-17 2009-10-22 Marcus Jane B User prioritized search engine for automated meeting scheduling

Also Published As

Publication number Publication date
AU2009308480B2 (en) 2015-12-17
WO2010048329A1 (en) 2010-04-29
EP2347347B1 (en) 2017-12-06
EP2347347A1 (en) 2011-07-27
AU2009308480A1 (en) 2010-04-29
EP3318992B1 (en) 2018-12-19
US9367599B2 (en) 2016-06-14
EP3318992A1 (en) 2018-05-09
DE202009019140U1 (de) 2017-01-20
US20100121874A1 (en) 2010-05-13
KR101572863B1 (ko) 2015-11-30
CA2741216A1 (en) 2010-04-29
JP2012510652A (ja) 2012-05-10
KR20110079740A (ko) 2011-07-07

Similar Documents

Publication Publication Date Title
JP5631887B2 (ja) データの同期のための検索ベースの仕様
US8965954B2 (en) Always ready client/server data synchronization
US11831590B1 (en) Apparatus and method for context-driven determination of optimal cross- protocol communication delivery
JP5960215B2 (ja) モバイルメッセージングアプリケーションの優先受信箱通知及び同期
US9639600B2 (en) System and method of personalized message threading for a multi-format, multi-protocol communication system
US20190172013A1 (en) Classifying a portion of user contact data into local contacts
JP6817402B2 (ja) インスタントメッセンジャーアプリケーションの動作方法及び装置
JP5631886B2 (ja) 常にレディ状態のクライアント/サーバ同期
WO2015100259A1 (en) Apparatus and method for multi-format communication composition
JP2012502385A (ja) アフィニティ基準に基づくサーチ結果のランク付
US20240020305A1 (en) Systems and methods for automatic archiving, sorting, and/or indexing of secondary message content
KR20070115622A (ko) 사용자 관심 사항에 기초한 이동 통신 장치의애플리케이션의 런칭 패드 장치 및 구동 방법
WO2016106279A1 (en) System and method of personalized message threading for a multi-format, multi-protocol communication system
JP2023535173A (ja) メッセージングサービス

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121019

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121019

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140130

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140425

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140529

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141008

R150 Certificate of patent or registration of utility model

Ref document number: 5631887

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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