常にレディ状態のクライアント/サーバ同期
データ同期システムおよび方法が記載される。幾つかの実施形態では、情報をサーバに同期させるクライアントのための方法が考案される。クライアントは、サーバから通信を受信してサーバとクライアント間で情報を選択的に同期させる。この情報には、クライアントに同期されたことがないデータと、最後のデータ同期において同期されていない変更オペレーションとが含まれる。データは、高い優先度から低い優先度の順で並べられかつ受信される。クライアントは、受信した順でクライアントのメモリに、データの少なくとも一部分と変更オペレーションの少なくとも一部分とを記憶し、クライアントデバイスのユーザが、情報同期の任意の終了点においてもクライアントに記憶された通信におけるデータの一部分と変更オペレーションの一部分とにすぐにアクセスできるようにする。
【発明の詳細な説明】
【技術分野】
【0001】
[0001] 開示される実施形態は、概して、クライアント‐サーバインタラクションの分野、特にクライアントデバイスとサーバ間のアイテムの同期に関する。
【背景技術】
【0002】
[0002] 多くのソフトウェアアプリケーション(例えば電子メール)は、クライアントデバイスおよびサーバシステムの両方上で、または、サーバシステムからのサポートを得てクライアントデバイス上で動作するように設計される。これらのアプリケーションは、ユーザがクライアントデバイス上で操作してようとサーバ上で操作していようと関係なく自由にデータを作成し、受信し、送信し、修正することを可能にする。クライアントとサーバ間のデータの同期によって、クライアントおよびサーバに常駐するアプリケーションデータ間に一貫性を維持することが可能となる。同期は、クライアントデバイスは通常ローカルに記憶されたデータを主に使って動作するので、効率の理由から重要である。例えば、電子メールクライアントが、別個の電子メールサーバと通信するポータブルデバイス(例えばラップトップまたはモバイル電話機)上で実行するクライアント‐サーバ電子メールアプリケーションの場合、電子メールアプリケーションデータの同期には、電子メールサーバにおいて受信された電子メールメッセージが電子メールクライアントにダウンロードされ(これはダウンヒル同期と呼ばれる)、クライアントによってローカルに記憶された電子メールデータに対して行われたオペレーションが続いて電子メールサーバにアップロードされる(これはアップヒル同期と呼ばれる)ことが必要である。
【0003】
[0003] データ同期は、サーバとクライアントが通信状態を維持する限り、ほぼ連続的にクライアントとサーバ間で作用することができる。しかし、サーバとクライアントが、通信機能停止またはクライアントがオフラインまたは「飛行機」モードで動作する必要によってしばらくの間通信が切断されていた場合、または、クライアントデバイスがサーバに接続するよう新たに設定される場合(この場合、クライアントデバイスは、そのメモリ内にローカルアプリケーションデータはほとんどまたは全く記憶されていない)、同期はより困難となる。このような状況では、通信機能停止時にサーバにおいて受信された大量のデータは、クライアントがサーバに再接続する際にはクライアントに同期されておらず、また、オフラインのクライアントオペレーションもサーバに同期されていない。大量のアプリケーションデータがクライアントにダウンロードされる必要のある、次の起きる同期ステップは、時にクライアントデバイスの「キャッシュのプライミング」と呼ばれる。
【0004】
[0004] クライアントデバイスのキャッシュをプライミングする従前のアプローチは不便および/または低速である。これは、クライアントがダウンロードされたアプリケーションデータを用いて動作開始可能となる前にプライミングが完了することを必要とする従前の実施の場合に特に言えることである。このようなキャッシュのプライミング方法は、ローカルに記憶されたデータを使用可能となる前に、ユーザは相当な時間待機しなければならない長いプロセスである。
【0005】
[0005] 例えば、クライアントデバイスのキャッシュを電子メールアプリケーションデータでプライミングするための1つの従前の実施では、サーバにおいて記憶されている電子メールデータの大部分がまず1つ以上のCDに書き込まれ、次にユーザはCDからのデータをクライアントデバイス(例えばラップトップ)に物理的にコピーする。他の実施では、クライアントに同期されるべきデータのセットがネットワーク接続を介してダウンロードされる。このことは、通信機能停止によって、長時間かかるダウンヒル同期オペレーションが中断されうることを意味し、クライアントデバイスは、ダウンロードされたデータのいずれも使用できなくなってしまう。
【0006】
[0006] ダウンヒル同期の他の実施では、クライアントに同期されるべきデータは、最も古いデータから最も新しいデータの時系列でサーバからダウンロードされる。このことは、クライアントが、同期の完了前にオフラインとなる(そして不完全なデータを使用できる)場合、クライアントデバイスでは最も古いデータのみが利用可能となることを意味し、このことは、特にユーザがもはやサーバに接続できない場合にユーザを苛立たせてしまう。
【0007】
[0007] クライアントデバイスは、通常、サーバよりもアプリケーションデータを記憶するために利用可能なメモリが少ないので、クライアントのユーザが各同期後に最も関連のあるデータにすぐアクセスできるように、サーバからクライアントへのデータ(大抵の場合、サーバに記憶された全てのデータのサブセットである)のより望ましい同期方法が好適である。
【発明の概要】
【0008】
[0008] 幾つかの実施形態では、情報をクライアントに同期させるサーバのための方法は、サーバにおいて、サーバにおいて管理される過去の同期のレコードに基づいて、クライアントに同期されたことがないデータおよびクライアントに同期されていない変更オペレーションのうち少なくとも1つを特定するステップと、通信を送信してサーバとクライアント間で情報を選択的に同期させるステップであって、情報は特定されたデータおよび特定された変更オペレーションを含み、データは高い優先度から低い優先度の順に並べられかつ伝送される、ステップと、情報同期の任意の終了時に、レコードを更新してクライアントに正常に同期された通信にデータおよび変更オペレーションを含めるステップとを含む。
【0009】
[0009] 他の実施形態では、かかるサーバ方法は、クライアントからリクエストを受信してサーバとのデータ同期を開始するステップをさらに含む。
【0010】
[0010] 他の実施形態では、かかるサーバ方法は、サーバにおいて変更オペレーションが発生した時刻に基づいた時系列に並べられる変更オペレーションを含み、古い変更は新しい変更より先に伝送される。
【0011】
[0011] 幾つかの実施形態では、情報をサーバに同期させるクライアント方法は、クライアントデバイスにおいて、リクエストを送信して、サーバに、次の同期を開始するためのデータおよび変更オペレーションの次の範囲を通知するステップと、リクエストに応じて、サーバから通信を受信して、サーバからの情報をクライアントに選択的に同期させるステップであって、情報は、第1の同期機構において、クライアントに前に同期されたことがないサーバにおけるデータを含み、高い優先度から低い優先度の順に受信される第1のデータセットと、第2の同期機構において、クライアントとの最後の同期において同期されなかった変更オペレーションを含み、サーバにおける各変更オペレーションの発生に基づいた時系列に並べられ、古い変更オペレーションが新しい変更オペレーションより先に受信される第2のデータとを含む、ステップと、クライアントのメモリに情報の少なくとも一部分を記憶するステップと、クライアントデバイスのユーザが、情報同期の任意の終了時にメモリに正常に記憶された情報の少なくとも一部分にアクセスしかつ使用できるようにするステップとを含む。
【0012】
[0012] 幾つかの実施形態では、かかるクライアント方法では、優先度の順は、データのリーセンシーといったクライアントのユーザに対するデータの関連性に応じて並べられ、したがって、関連性の多いデータには高い優先度が与えられ、低い優先度を有する関連性の少ないデータより先にクライアントに伝送される。
【0013】
[0013] かかるクライアント方法の幾つかの実施形態では、第1のデータ同期機構および第2のデータ同期機構は互いに独立しているが、第1のデータセットおよび第2のデータセットが同時に同期されるように同時に発生する。
【0014】
[0014] さらに他の実施形態では、かかるクライアント方法は、クライアントとの同期ためにサーバにおける次のデータ範囲を特定するようサーバに送信される次の同期リクエストに含めるべくサーバに正常に同期された最後のデータ範囲のレコードをクライアントにおいて維持するステップを含む。
【図面の簡単な説明】
【0015】
[0015] 本発明の本質と実施形態をより理解するために、以下の実施形態の説明を、以下の図面と共に参照すべきであり、図中、同じ参照番号は全図において対応する部分を指すものである。
【図1】[0016] 図1は、本発明の幾つかの実施形態によるクライアント‐サーバベースのネットワークシステムを示す図である。
【図2】[0017] 図2は、本発明の幾つかの実施形態による、クライアント‐サーバベースのネットワークシステムにおける例示的なサーバのブロック図である。
【図3】[0018] 図3は、本発明の幾つかの実施形態による、サーバと相互に作用する例示的なクライアントのブロック図である。
【図4】[0019] 図4は、本発明の幾つかの実施形態による、サーバにおけるグローバル履歴テーブルに含まれる情報を示す図である。
【図5】[0020] 図5は、本発明の幾つかの実施形態による、クライアントのローカル履歴テーブルに含まれる情報を示す図である。
【図6】[0021] 図6は、本発明の幾つかの実施形態による、サーバとクライアント間の例示的な同期インタラクションスキームを示す図である。
【図7A】[0022] 図7Aは、本発明の幾つかの実施形態による、サーバとクライアント間の同期開始インタラクションに含まれる情報を示す図である。
【図7B】[0022] 図7Bは、本発明の幾つかの実施形態による、サーバとクライアント間の同期開始インタラクションに含まれる情報を示す図である。
【図8A】[0023] 図8Aは、本発明の幾つかの実施形態による、サーバとクライアント間の主同期インタラクションに含まれる情報を示す図である。
【図8B】[0023] 図8Bは、本発明の幾つかの実施形態によるサーバとクライアント間の主同期インタラクションに含まれる情報を示す図である。
【図9A】[0024] 図9Aは、本発明の幾つかの実施形態による、サーバにおける、サーバアイテムとグローバル履歴テーブルとの関係を示す図である。
【図9B】[0025] 図9Bは、本発明の幾つかの実施形態による、クライアントにおける、クライアントアイテムとローカル/クライアント履歴テーブルとの関係を示す図である。
【図9C】[0026] 図9Cは、本発明の幾つかの実施形態による、サーバとクライアント間で同期可能である例示的なデータ形態を示す図である。
【図10A】[0027] 図10Aは、本発明の幾つかの実施形態による、主同期に続く同期開始の概念を説明する図である。
【図10B】[0027] 図10Bは、本発明の幾つかの実施形態による、主同期に続く同期開始の概念を説明する図である。
【図10W】[0027] 図10Wは、本発明の幾つかの実施形態による、主同期に続く同期開始の概念を説明する図である。
【図10X】[0027] 図10Xは、本発明の幾つかの実施形態による、主同期に続く同期開始の概念を説明する図である。
【図10C】[0028] 図10Cは、本発明の幾つかの実施形態による、通常の動作条件下での主同期の概念を説明する図である。
【図10D】[0028] 図10Dは、本発明の幾つかの実施形態による、通常の動作条件下での主同期の概念を説明する図である。
【図10Y】[0028] 図10Yは、本発明の幾つかの実施形態による、通常の動作条件下での主同期の概念を説明する図である。
【図10E】[0029] 図10Eは、本発明の幾つかの実施形態による、長時間の切断後の主同期の概念を説明する図である。
【図10F】[0029] 図10Fは、本発明の幾つかの実施形態による、長時間の切断後の主同期の概念を説明する図である。
【図10Z】[0029] 図10Zは、本発明の幾つかの実施形態による、長時間の切断後の主同期の概念を説明する図である。
【図11A】[0030] 図11Aは、本発明の幾つかの実施形態による、順方向同期時のサーバとクライアント間の例示的なインタラクションスキームを説明する図である。
【図11B】[0031] 図11Bは、本発明の幾つかの実施形態による、クライアントにおける例示的な順方向同期方法を説明するフローチャートである。
【図11C】[0032] 図11Cは、本発明の幾つかの実施形態による、サーバにおける例示的な順方向同期方法を説明するフローチャートである。
【図12A】[0033] 図12Aは、本発明の幾つかの実施形態による、逆方向同期時のサーバとクライアント間の例示的なインタラクションスキームを説明する図である。
【図12B】[0034] 図12Bは、本発明の幾つかの実施形態による、クライアントにおける例示的な逆方向同期方法を説明するフローチャートである。
【図12C】[0035] 図12Cは、本発明の幾つかの実施形態による、サーバにおける例示的な逆方向同期方法を説明するフローチャートである。
【図13A】[0036] 図13Aは、本発明の幾つかの実施形態による、クライアントとサーバ間のアップヒル同期の概念を説明する図である。
【図13B】[0036] 図13Bは、本発明の幾つかの実施形態による、クライアントとサーバ間のアップヒル同期の概念を説明する図である。
【図13C】[0036] 図13Cは、本発明の幾つかの実施形態による、クライアントとサーバ間のアップヒル同期の概念を説明する図である。
【図13D】[0036] 図13Dは、本発明の幾つかの実施形態による、クライアントとサーバ間のアップヒル同期の概念を説明する図である。
【図13X】[0036] 図13Xは、本発明の幾つかの実施形態による、クライアントとサーバ間のアップヒル同期の概念を説明する図である。
【図13Y】[0036] 図13Yは、本発明の幾つかの実施形態による、クライアントとサーバ間のアップヒル同期の概念を説明する図である。
【図13Z】[0036] 図13Zは、本発明の幾つかの実施形態による、クライアントとサーバ間のアップヒル同期の概念を説明する図である。
【図14A】[0037] 図14Aは、本発明の幾つかの実施形態による、アップヒル同期時のサーバとクライアント間の例示的なインタラクションスキームを説明する図である。
【図14B】[0038] 図14Bは、本発明の幾つかの実施形態による、クライアントにおける例示的なアップヒル同期方法を説明するフローチャートである。
【図14C】[0039] 図14Cは、本発明の幾つかの実施形態による、サーバにおける例示的なアップヒル同期方法を説明するフローチャートである。
【発明を実施するための形態】
【0016】
[0040] 本発明は、クライアント‐サーバシステムと、クライアントとサーバ間でのアイテムの、対応する同期方法およびシステムに関する。以下の開示には、クライアントキャッシュのプライミングと、クライアントとサーバ間のデータ交換が並列に生じて、同期済みデータがアクセス可能となる前にローカルキャッシュのプライミングが完了する必要性を解決することを可能にする同期方法およびシステムが記載される。記載される方法およびシステムは、データ同期を伴う任意のクライアント‐サーバアプリケーションに適用可能である。
【0017】
[0041] 図1は、例示的なクライアント‐サーバベースのネットワークシステムを概略的に示す。クライアント‐サーバベースのネットワークシステムは、サーバ102と、通信用のネットワーク104と、複数のクライアントデバイス106A〜Cとを含む。このシステムの通常の実施は、少なくとも1つのサーバと、少なくとも1つの通信ネットワークと、複数のクライアントデバイスとを有することを理解すべきである。異なる構成では、システムは、複数のサーバと、複数のネットワークと、複数のクライアントデバイスとを含んでもよい。
【0018】
[0042] 幾つかの実施形態では、サーバ102とクライアント106とを接続するネットワーク104は私的ネットワークでも公衆ネットワークでもよく、また、有線でも無線でもよく、データ交換を可能とするようにサーバ104とクライアント106間の通信を可能にする。幾つかの実施形態では、ネットワークはインターネットであってよい。他の実施形態では、通信ネットワークは私的ネットワークであるかまたはアクセスをあるユーザグループに制限するセキュリティを有してもよい。後者の場合、ネットワークはLANであってよい。ネットワーク104の他の実施形態はさらに、WiFiネットワークおよび/またはWiMaxネットワークを含みうる。ネットワーク104の別の実施形態は、セル式電話機およびスマートホンといったモバイルデバイスによるデータの送受信を可能にするセル式ネットワークであってもよい。このようなセル式ネットワークは、有料加入者のみがアクセスを有するので私的ネットワークと見なされうる。
【0019】
[0043] クライアントデバイス106は様々な形態をとりうる。幾つかの実施形態では、クライアントデバイスは、コンピュータサーバに通信するローカルコンピュータであってよい。他の実施形態では、クライアントデバイスは、携帯情報端末(PDA)、スマートホン、またはセル式電話機のいずれかであってよい。クライアントデバイスは、サーバ上でも動作可能なソフトウェアアプリケーションを動作しうるか、または、クライアントデバイスは、サーバ上で動作するアプリケーションバックエンドと協働するアプリケーションフロントエンドを動作しうる。サーバ102は、アプリケーションの管理、データ記憶要件、編成、および/または実行に関するオペレーションを行うことができる。この開示の目的のために、クライアント106およびサーバ102は共に、同期されるべきアプリケーションデータをその中に記憶可能なメモリを含む。サーバおよびクライアントのより詳細な説明を、図2および図3においてそれぞれ記載する。
【0020】
[0044] 図2は、図1を参照して説明したクライアント‐サーバベースのネットワークシステムにおける例示的なサーバのブロック図である。サーバ200は、通常、1つ以上の処理ユニット(CPU)202と、1つ以上のネットワークまたは他の通信インターフェース206と、メモリ205と、これらのコンポーネントを相互に接続するための1つ以上の通信バス204とを含む。メモリ205は、DRAM、SRAM、DDR RAM、若しくは他のランダムアクセス固体メモリデバイスといった高速ランダムアクセスメモリ、または、磁気ディスク記憶デバイス、光ディスク記憶デバイス、フラッシュメモリデバイス、若しくは他の不揮発性個体記憶デバイスといった不揮発性メモリを含む。メモリ205は、CPU202から離れて配置される1つ以上の記憶デバイスを任意選択的に含んでもよい。
【0021】
[0045] 幾つかの実施形態では、メモリ205は、オペレーティングシステム207と、通信モジュール208と、サーバアプリケーションモジュール209と、サーバ同期モジュール210と、データ構造270とを含む、プログラム、モジュール、およびデータ構造、または、これらのサブセットを記憶する。これらのコンポーネントの図示する編成は例示的であって、これらのコンポーネントに与えられた機能性の任意の代替の配置または編成を排除するものではないことに留意されたい。他の実施形態は、これらのコンポーネントに与えられた機能を任意の組み合わせに組み合わせてもよく、組み合わせにはこれらのコンポーネントのサブセットまたはスーパーセットも含まれる。このことは、任意のサーバまたはクライアントデバイスを参照して本明細書において説明する任意のおよびあらゆるソフトウェアコンポーネントについても当てはまることである。
【0022】
[0046] オペレーティングシステム207は、様々な基本的なシステムサービスを処理するための、および、ハードウェア依存タスクを行うための手順を含む。
【0023】
[0047] 通信モジュール208は、サーバアプリケーション209を他のサーバまたはクライアントデバイスにインターフェースを介して接続するために用いられる。通信モジュール208を用いたインターフェースを介する接続は、1つ以上の通信ネットワークインターフェース206(有線または無線)と、インターネット、他のワイドエリアネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク等といった1つ以上の通信ネットワークとによって達成される。
【0024】
[0048] アプリケーションモジュール209は、様々なクライアント駆動型またはサーバ駆動型アプリケーションを含む。アプリケーションがクライアント駆動型アプリケーションである場合、そのアプリケーションがサーバ上でアクティブであると、そのアプリケーション自体は、クライアントデバイスにおける対応アプリケーションから生じるコマンドによって駆動される。アプリケーションがサーバ駆動型アプリケーションである場合、そのアプリケーションがサーバ上でアクティブであると、サーバ上のそのアプリケーションが、クライアントデバイス上の対応アプリケーションを駆動する。幾つかの実施形態では、アプリケーションは、クライアントとサーバとによって同様に駆動されてよく、セル式電話機といったクライアントデバイスでのオペレーションのために構成および適応されてよく、また、サーバ同期モジュール210を含みうる。
【0025】
[0049] サーバ同期モジュール210は、クライアントおよびサーバ上で動作する、または、(電子メールクライアントおよびサーバアプリケーションの場合のように)クライアントとサーバ間で協働して動作する1つ以上のアプリケーションによって利用されうるデータの同期に用いられる。同期モジュール210は、単一のアプリケーションに固有の、または、2つ以上のアプリケーションに対して一般化が可能な同期設定を含みうる。一実施形態では、同期モジュール210は、ダウンヒル同期モジュール220と、アップヒル同期モジュール280と、同期制御290とを含む。これらのモジュールの機能は、クライアント上のそれらの機能の対応機能に対応し、対応機能は図3を参照して説明する。
【0026】
[0050] 同期制御290は、通信ネットワークへの接続性、未同期データの検出、またはデータ同期が行われる際にある他の条件に応じてデータ同期のオペレーションを制御するソフトウェアモジュールである。一実施形態では、サーバは、クライアントからの同期リクエストに応えることによって同期を開始するように構成されるが、その反対も可能でありうる。
【0027】
[0051] ダウンヒル同期モジュール220は、サーバからクライアントに、データと、サーバにおいて生じたデータ変更とを同期させる責任を負っている。換言すれば、このモジュールは、クライアントキャッシュをプライミングし、サーバにおけるデータ変更がクライアントに常駐するデータに確実に反映させる責任を負っている。一実施形態では、ダウンヒル同期は、順方向同期モジュールおよび逆方向同期モジュールと、他のアプリケーションに固有の任意の他の同期モジュールとによって実施される。
【0028】
[0052] 幾つかの実施形態では、順方向同期モジュール230は、サーバにおけるデータ変更をこれらの変更が時系列で生じている最中にモニタリングし、これらの変更を時系列でクライアントに報告する。つまり、順方向同期モジュールは、順方向の時系列で、すなわち、古い更新から新しい更新でクライアントデバイスにデータ更新をダウンロードする。
【0029】
[0053] 幾つかの実施形態では、逆方向同期モジュール240は、優先度またはユーザとの関連性の度合いの順で、既存のデータアイテムをクライアントにダウンロードする。幾つかの実施形態では、優先度は1つ以上の基準に基づいたデータの物理的な編成として定義されてよく、関連性は同期されるべきデータに対するユーザの関心レベルとして定義されてよい。したがって、優先度は、ユーザに対する関連性またはデータの関心レベルを定義する基準に基づいて設定されうる。例えば、特定のデータ更新の優先度または関連性は、同期されるデータのタイプ、データ変更が生じた時刻、または、データ若しくはデータ変更に対するユーザの関心を特徴付けうるデータまたはデータ変更に関連付けられる他の要素に応じて決定されうる。本発明の利点は、幾つかの実施形態において、高い優先度を有するデータアイテムが低い優先度を有するアイテムより先にクライアントにダウンロードされ、クライアントは部分的に同期されたデータを用いてオフラインモードで動作可能であるという点である。この利点により、先行技術とは対照的に、逆方向同期オペレーションがその完了前に中断されても(例えば通信機能停止となった場合、または、ユーザがクライアントデバイスをオフラインにする場合)、ユーザは、1つ以上のアプリケーションに対して最も高い優先度を有するローカルデータを用いて、クライアントデバイスをオフラインモードで依然として使用することが可能となる。幾つかの実施形態では、クライアントとサーバ間で通信が再設定されると、逆方向同期は、中断されたところから継続し、サーバは、逆方向同期が完了するまで、漸次、低い優先度/関連性のデータをダウンロードする。
【0030】
[0054] 幾つかの実施形態では、逆方向同期オペレーションのためのデータ優先度は、サーバ上に記憶されたオペレーションまたはデータ片の相対経過時間によって決定される。経過時間が短いアイテムほど、更新の優先度が高い。例えば、電子メールアプリケーションの文脈では、電子メールクライアントを有するポータブルデバイスのユーザは、サーバにおいて受信した最新の電子メールメッセージを、デバイスのオフライン使用で利用可能にすることを好む場合がある。この例では、最新のメッセージが最高優先度を有し、それによりこれらの最新メッセージが最初にクライアントデバイスに確実に同期される。他の実施形態では、最高優先度は、特定の送信者(例えばマネジャまたは配偶者)、または、特定の件名(例えば警告)に関連付けられた電子メールデータに割り当てられてもよい。このようにして、本発明の実施形態は、ポータブル電子デバイスのユーザに、ユーザの関心事項に最も関連性のあるまたは最高優先度を有するどのようなサーバデータでもオフライン使用に利用可能となることを可能にする。この優先度の概念は、次に限定されないが、写真、カレンダー、または連絡先情報といったデジタルメディアファイル、または、ドキュメントまたはスプレッドシートといったアプリケーションデータを含む、電子メール以外のアプリケーションのデータにも適用可能である。
【0031】
[0055] したがって、幾つかの実施形態では、サーバにおいて生じるデータ変更は、時系列(順方向同期の場合)と、優先度/関連性の順(逆方向同期の場合)の両方でクライアントデバイスに同期される。他の同期モジュール250も、他のアプリケーション用に存在してよく、これらのアプリケーション内のデータにカスタマイズされた設定を含みうる。
【0032】
[0056] 順方向同期および逆方向同期を用いる同じデータ同期機構が、次に限定されないが、イメージ、明白かつ別個の電子メールメッセージを含む電子メール会話、連絡先情報、およびカレンダー情報等を含む他のタイプのデータにも有用でありうる。幾つかの実施形態では、関連性または優先度は、次に限定されないが、編集時刻と、データおよびイメージの編集者と、メッセージの到着時刻と、メッセージの投稿者とを含む1つ以上の基準に基づいて設定されうる。
【0033】
[0057] アップヒル同期モジュール280は、クライアントにおいて生じたデータ変更をサーバに同期させる責任を負っている。サーバでは、アップヒル同期モジュール280は、クライアントのアップヒル同期モジュール(図3を参照して説明する)と相互に作用して、クライアントにおいて生じたデータ変更を取得し、このデータ変更がサーバにおけるデータに確実に反映されるようにする。
【0034】
[0058] データモジュール270は、サーバアプリケーションモジュール209内のアプリケーションによって用いられるデータファイルと、クライアントデバイスとの同期に用いられるデータとを含む。幾つかの実施形態では、データモジュール270は、グローバル履歴テーブル271と、クライアント固有データを含むクライアントデータ273と、アプリケーションデータ277のうち少なくとも1つを含みうる。
【0035】
[0059] グローバル履歴テーブル271は、サーバにおけるデータ変更に関する情報を含む。具体的には、グローバル履歴テーブル内の情報は、クライアントとの順方向同期に用いられうる。幾つかの実施形態では、グローバル履歴テーブル内の情報は時系列に記憶される。
【0036】
[0060] クライアントデータ273は、サーバと相互に作用する各クライアント、例えばクライアント1 272‐A〜クライアント「m」272‐Bに固有のデータを含む。各クライアントに対して記憶された固有データには、最後に処理されたサーバ履歴オペレーション識別情報(サーバ履歴opID)278と、逆方向同期領域275と、サーバによって受信確認された最後のクライアント履歴オペレーションID(クライアント履歴opID)274とが含まれる。キャッシュされたクライアントデータ276は、特定のクライアントに関連付けられた、データと、サーバ上のデータへの変更を含む一方で、他のクライアント固有データ279は、同期に用いられる他のデータ(例えば同期設定)を含む。
【0037】
[0061] サーバ上の各データアイテムは、一意の識別情報または逆方向同期トークン(BST)を有し、それにより、データを特定しかつ逆方向同期用の同期機構によって優先順位を決めることが可能となる。一意の識別情報によって確実に正しいデータが同期される。BSTは秩序正しく、したがって、逆方向同期のためのデータアイテムの優先度が設定されうること理解することが重要である。幾つかの実施形態では、一意の識別情報は、特定のデータアイテム(例えば電子メールメッセージ)が作成または受信されたタイムスタンプによって定義されてもよく、それにより、すべてのデータアイテムは時刻によって順序付けられうる。さらに他の実施形態では、各データアイテムのBSTは、他のパラメータと共に少なくとも1つのタイムスタンプを有しうる。これらのパラメータも優先度または関連性を決定するために用いられる。例えば、幾つかの実施形態は、日付とサイズに基づいて優先順位を決定する場合があり、この場合、日付が第一の基準として用いられ、サイズが第二の基準として用いられる。幾つかの実施形態では、タイムスタンプ、および、ラベル、サイズ、送信者等の他の情報を含む多数のパラメータを重み付けするおよび組み合わせるためのアルゴリズムが、逆方向同期のためのデータの順序を決定するために用いられうる。
【0038】
[0062] 逆方向同期領域275は、逆方向同期時にクライアントに同期されたデータの領域を示す。各逆方向同期領域は、2つの逆方向同期トークン(BST)を含む。これらの2つのBSTは、共に、クライアントに同期された、サーバにおけるデータの範囲の開始点と終了点を示す。したがって、1つのBSTが、同期された範囲における最初のデータアイテムを表し、第2のBSTが、同期された範囲における最後のデータアイテムを表す。逆方向同期領域におけるデータは、後続の逆方向同期では省略される。
【0039】
[0063] 最後に処理されたサーバ履歴オペレーション(SHO)ID278は、順方向同期においてクライアントに同期された最後のSHO IDである。この最後に処理されたSHO IDは、クライアントに最後に同期されたデータ変更を表す。これにより、サーバは、グローバル履歴テーブル271内のどのデータ変更がクライアントに同期されており、グローバル履歴テーブルにおいて維持する必要がなくなり除去可能であるのかを判断することができる。したがって、最後に処理されたSHO ID278は、順方向同期におけるグローバル履歴テーブルのサイズを編成ししかつ管理するために用いられる。
【0040】
[0064] サーバによって受信確認された最後のクライアント履歴オペレーション(CHO)ID274は、サーバに同期されたクライアントにおける最後のCHO IDを表す。このCHO IDは、最後の順方向同期においてサーバに同期されたクライアントにおける最後のデータ変更を表す。これは、さらに、サーバが次にクライアントに接続する際に次の順方向同期のための開始点の役割も果たす。SHO IDと同様に、CHO IDは一意で、クライアントと特別に関連付けられている。例えば、CHO IDは、クライアントにおける電子メールの作成、送信、または修正に関連付けられるタイムスタンプによって表されうる。
【0041】
[0065] 図3は、サーバと相互に作用する例示的なクライアント300のブロック図である。クライアント300は、通常、1つ以上の処理ユニット(CPU)302と、1つ以上のネットワークまたは他の通信インターフェース306と、メモリ305と、これらのコンポーネントを相互に接続するための1つ以上の通信バス304とを含む。通信バス304は、システムコンポーネント間の通信を相互に接続しかつ制御する回路(時にチップセットと呼ばれる)を含みうる。
【0042】
[0066] クライアントデバイス300は、ディスプレイ392およびユーザ入力デバイス394といった出力デバイスを有するユーザインターフェース390を含みうる。ディスプレイ392は、アクティブマトリクスディスプレイまたはタッチスクリーンディスプレイ等であってよく、ユーザ入力デバイス394は、例えば数字入力キーパッド、ソフトキー、タッチパッド、英数字入力キーパッド、またはタッチスクリーン等の任意の組み合わせを含みうる。メモリ305は高速ランダムアクセスメモリを含んでよく、また、さらに、1つ以上の磁気ディスク記憶デバイスといった不揮発性メモリ、中央処理演算ユニット302から離れて配置可能なフラッシュメモリといったポータブル記憶デバイスを含んでよい。幾つかの実施形態では、メモリ305は、オペレーティングシステム301と、通信モジュール303と、グラフィックスモジュール307と、メモリキャッシュ308と、クライアントアプリケーションモジュール310と、クライアント同期モジュール320と、データ380とを含む、プログラム、モジュール、およびデータ構造、またはこれらのサブセットを記憶しうる。
【0043】
[0067] オペレーティングシステム301は、様々な基本的なシステムサービスを処理するための、および、ハードウェア依存タスクを行うための手順を含む。
【0044】
[0068] 通信モジュール303は、1つ以上の通信ネットワークインターフェース306(有線または無線)と、インターネット、他のワイドエリアネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク、セル式ネットワーク等といった1つ以上の通信ネットワークとを介して、アプリケーション209をサーバに接続する。
【0045】
[0069] メモリキャッシュ308は、アクティブアプリケーションによるクイックアクセスのために一時的に情報を一時的に記憶する。記憶される情報の例としてはメタデータおよびアプリケーションに固有の他の情報が挙げられる。通常、アプリケーションが非アクティブになると、この情報は消去される。
【0046】
[0070] クライアントアプリケーションモジュール310は、クライアントデバイス300上で実行可能な1つ以上のアプリケーションを含む。これらのアプリケーション310のうちの幾つかは、サーバ200と相互に作用して通信、ユーザインターフェース管理、アプリケーションのカスタマイズ化、および、電子メール、カレンダー、携帯電話メール、メディアプレイヤ、またはドキュメント編集若しくはビューイングソフトウェア等を含む特定のクライアントアプリケーションの管理に関するタスクを行うように構成される。クライアントアプリケーションは、動作時、クライアントデバイスによって駆動される。
【0047】
[0071] クライアント同期モジュール320は、クライアントデバイスまたはサーバ上で独立して動作可能なアプリケーションのデータの同期のために用いられる。クライアント同期モジュール320は、単一のアプリケーションに固有の、または、2つ以上のアプリケーションに対して包括的な同期スキームを含みうる。一実施形態では、同期モジュール210は、ダウンヒル同期モジュール325と、アップヒル同期モジュール365と、同期制御375とを含む。これらのモジュールの機能は、サーバ上のそれらの機能の対応機能に対応する。
【0048】
[0072] 同期制御375は、通信ネットワークへの接続性、未同期データの検出、またはデータ同期が行われる際にある他の条件に応じてデータ同期のオペレーションを制御する。一実施形態では、クライアントは、サーバに対して同期リクエストを開始するように構成されるが、その反対も可能でありうる。
【0049】
[0073] ダウンヒル同期モジュール325は、サーバにおいて生じたクライアントデータ変更に同期させる責任を負っている。クライアントにおけるダウンヒル同期モジュール325は、(図2を参照して説明した)サーバにおけるその対応モジュールと共に作動して、サーバにおけるデータ変更が、クライアントにあるデータと確実に同期されるようにする。サーバにおける対応モジュールと同様に、ダウンヒル同期は、一実施形態において、順方向同期および逆方向同期を含む。図2を参照して説明したように、順方向同期モジュール330は、サーバにおけるデータ変更をこれらの変更が時系列で生じている最中にモニタリングし、これらの変更をクライアントに送信する。クライアントの逆方向同期モジュール340は、サーバにおけるデータ変更を、優先度の順でまたはデータ変更の関連性に基づいてモニタリングする。同様に、優先度の順および関連性の度合いは、サーバにおいて用いられた同様の所定基準に基づく。したがって、サーバにおけるデータ変更は、時系列と、優先度の順の両方でクライアントデバイスに同期されうる。他の同期モジュール350も、他のアプリケーション用に存在してよく、これらのアプリケーション内のデータにカスタマイズされた設定を含みうる。
【0050】
[0074] アップヒル同期モジュール365は、サーバにおけるその対応モジュールと同様に、クライアントにおいて生じたデータ変更をサーバに同期させる責任を負っている。クライアントでは、このアップヒル同期モジュール365は、サーバと相互に作用して、クライアントにおいて生じたデータ変更を送信し、かつ、サーバがサーバによって処理された最後のCHO IDをクライアントに送信して戻す場合に、同じ変更がサーバで確実に反映されるようにする。
【0051】
[0075] データモジュール380は、アプリケーションモジュール310内のアプリケーションによって用いられるデータファイルと、サーバとの同期に用いられるデータとを含む。幾つかの実施形態では、データモジュール380は、サーバとのデータ同期のための同期データ370と、キャッシュされたデータ382と、設定仕様384のうちの少なくとも1つを含みうる。
【0052】
[0076] 同期データ370は、ローカル/クライアント履歴テーブル374、次の逆方向同期トークン372、最上位の同期済みサーバ履歴オペレーション識別情報(SHO ID)378、および幾つかのアプリケーションに固有でありうる他の同期データ376といった固有のデータを含む。これらのデータは、特にサーバとのクライアントデバイスの同期に用いられる。
【0053】
[0077] ローカル/クライアント履歴テーブル374は、クライアントにおけるデータ変更に関する情報を含む。このテーブルにおける各エントリはCHO IDを有し、特定のデータオペレーションを表す。具体的には、ローカル/クライアント履歴テーブルにおける情報は、クライアントとのデータのアップヒル同期に用いられる。
【0054】
[0078] 次の逆方向同期トークン(BST)372は、次の逆方向同期の開始点をサーバに通知するために、クライアントから送信される次の同期トークンである。最上位の同期済みSHO ID378は、次の順方向同期の開始点をサーバに通知するために、クライアントから送信される。換言すれば、最上位の同期済みSHOは、クライアントに戻される次の変更セット(例えば最上位SHO ID378より大きいSHO IDを有する変更)における開始点を表す。
【0055】
[0079] 他のクライアント固有データ376は、包括的なアプリケーションにおける同期、または、特定のアプリケーションのために用いられうる。例えば、様々なアプリケーションが、それぞれのデータ同期のための様々な基準を有しうる。これらの様々な基準は、他のアプリケーションにおける同期に用いられる他のクライアント固有データとして記憶されうる。
【0056】
[0080] キャッシュされたデータ382は、クライアントに記憶されたデータを表す。これには各種アプリケーションに用いられるデータと、サーバに同期されるべきデータとが含まれうる。
【0057】
[0081] 設定仕様384は、クライアントデバイスに関する特定の設定情報を含む。この情報を用いて、同期、インタラクションのために、かつ、アプリケーションのアクティブ化およびオペレーションにおいてサーバまたは他のデバイスに対してクライアントを特定しうる。例えば、設定仕様に含まれる情報は、次に限定されないが、クライアント識別情報、クライアントのデバイス仕様、そのデータが同期されるべきアプリケーションの識別情報、および同期のための基準等を含みうる。
【0058】
[0082] 幾つかの実施形態では、データ同期は、1つ以上の独立した同期機構を含む。ダウンヒル同期は、サーバが、サーバにおける同期されていない変更をクライアントに送信する同期であり、アップヒル同期は、クライアントが、同期されていないデータ変更をクライアントからサーバに送信する同期である。幾つかの実施形態では、ダウンヒル同期は、逆方向同期および順方向同期を含む。逆方向同期は、クライアントと今までに同期されたことのないデータ(すなわち、クライアントに反映されていないサーバにおけるデータアイテム)を同期させる一方で、順方向同期は、変更オペレーション(すなわち、先の同期オペレーション以降に生じた進行中のデータ変更)を同期させる。これらの同期機構のそれぞれは、別個で、互いから独立していてよく、また、これらの同期機構は、必要に応じて直列にまたは同時に動作しうる。前にも述べたように、このデータ同期の概念は、電子メール会話、各電子メール会話に含まれる個々のメッセージ、および関連するデータのセット(例えば、イメージ、ドキュメント)に関する同期にも同様に適用可能である。
【0059】
[0083] 図4は、サーバにおけるグローバル履歴テーブル401に含まれる情報を示す図である。グローバル履歴テーブル401は、サーバにおけるデータへの変更を示すエントリを含み、順方向同期に用いられる。幾つかの実施形態では、サーバにおけるデータへの各変更402は、サーバ履歴オペレーション識別情報(SHO ID)として知られている一意の識別情報を有する。一実施形態では、サーバデータ変更402A〜D(1番目からn番目のサーバデータ変更に対応する)は、最も新しい変更がテーブルの最上位で最も古い変更が最下位にあって時系列に順序付けられうる。したがって、本実施形態では、順序付けは変更オペレーションの発生時刻によって決定される。変更オペレーションの、優先度によって、関連性によって、およびカテゴリまたはタイプによって等、様々な方法での順序付けも可能である。順方向同期時、サーバにおける変更オペレーションは、クライアント履歴テーブルにおける順序に応じてサーバに送信される。
【0060】
[0084] 図5は、クライアントのローカル履歴テーブルに含まれる情報を示す図である。ローカル/クライアント履歴テーブル501は、クライアントにおけるデータへの変更を含み、アップヒル同期に用いられる。各クライアントデータ変更502は、クライアント履歴オペレーション識別情報(CHO ID)として知られる一意の識別情報を有する。一実施形態では、クライアントデータ変更502A〜D(1番目からn番目のクライアントデータ変更に対応する)は、最も新しい変更がテーブルの最上位で最も古い変更が最下位にあって時系列に順序付けられうる。サーバにおける対応グローバル履歴テーブル401と同様に、クライアント履歴テーブルにおけるアイテムの順序付けは、変更オペレーションの関連性、優先度、およびカテゴリ等に基づいてといったように異なって並べられうる。アップヒル同期時、クライアントは、オペレーションが並べられた順序でクライアントに新しい変更を送信する。
【0061】
[0085] 図6は、サーバ602とクライアント604間の例示的な同期インタラクションスキーム600を示す図である。同期インタラクションスキームの幾つかの実施形態では、同期開始ハンドシェイク621がサーバ602とクライアント604間で行われ、ここでは主同期ハンドシェイク631と表される実際のデータ同期プロセスが始められる。同期開始ハンドシェイク621は、最初のデータ同期より先に、または、クライアント604がサーバ602と通信しなかった長時間(例えば、通信ネットワークの圏外、クライアントデバイスの電源が落とされている、クライアントにおけるアプリケーションが終了される、または、デバイスまたはサーバが通信ネットワークから切断される)後に発生しうる。
【0062】
[0086] 同期開始ハンドシェイク621は、データ同期の開始点を設定する役割を果たす。各同期開始ハンドシェイクは、リクエスト611とレスポンス612を有する。幾つかの実施形態では、リクエスト611はクライアントから出され、サーバはリクエストを受信すると、レスポンス612を送信する。なお、同期開始は、本開示において提示されているように主同期の一部として組み込まれても、完全になくてもよい。さらに、リクエストはクライアントではなくサーバから出されてもよい。
【0063】
[0087] 主同期ハンドシェイク631は、サーバにおいて同期のためのデータ範囲が設定された後に発生する。同期開始ハンドシェイクと同様に、各主同期は、クライアントから送信されるリクエスト613によって開始する。サーバは、リクエスト613を受信後に、レスポンス615を送信する。幾つかの実施形態では、主同期リクエスト613は、サーバに同期されるべき、クライアントからのデータ変更を含み、主同期レスポンス615は、クライアントに同期されるべきサーバからの、サーバにおけるデータおよび変更オペレーションを含む。主同期は、長い切断がある場合またはプログラムが終わると終了する(617)。
【0064】
[0088] 図7Aおよび図7Bは、サーバとクライアント間の同期開始ハンドシェイクに含まれる情報を示す図である。記載される情報は、ダウンヒル同期(順方向および逆方向同期)およびアップヒル同期用に含まれる情報を含む。図7Aは、同期開始リクエスト710の一例である。同期開始リクエスト710に含まれる情報は、クライアントID7111と、最後の逆方向同期領域712と、他のアプリケーション固有データ713とを含みうる。
【0065】
[0089] クライアントID711は、サーバに対してクライアントを特定し、それにより、サーバは適合するクライアントに対応する情報を検索することができる。最後の逆方向同期領域712は、逆方向同期においてクライアントに最後に同期されたサーバからの最後のデータ範囲を含む。逆方向同期領域712は、そのデータ範囲の始まりと終わりを画定するために2つの逆方向同期トークン(BST)を含む。各BSTは、サーバにおける一意のデータを一意に特定する。同期が行われたことがない場合(例えば、最初の同期の試み)、クライアントはデータ範囲を有さないことになる。他の場合(例えば長時間の切断後)では2つのBSTが存在する。他のアプリケーション固有データ713は、同期のための特定の設定情報を含みうる。例えばどのアイテムが最初に同期されるかに関する優先度情報、特定のデータ、オブジェクト、またはアイテムの同期用のフィルタ、および、同期のための任意の他の基準が含まれてよい。設定情報は、アプリケーションに固有でありうる。
【0066】
[0090] 図7Bは、クライアントにサーバによって送信される、同期開始リクエスト710を受信確認する同期開始レスポンス760の図である。同期開始レスポンス760に含まれる情報には、サーバによって受信確認された最後のクライアント履歴オペレーション識別情報761と、最上位のサーバ履歴オペレーション識別情報762と、最上位の逆方向同期トークン763と、他のアプリケーション固有データ764とが含まれうる。
【0067】
[0091] サーバによって受信確認された最後のクライアント履歴オペレーション識別情報(CHO ID)761は、最後のアップヒル同期において、サーバによって受信確認されたまたはサーバに同期された、クライアントからの最後のデータ変更を特定する。このCHO IDの目的は、次のアップヒル同期用の新しい範囲の決定においてクライアントを支援することである。
【0068】
[0092] 最上位のサーバ履歴オペレーション識別情報(SHO ID)762は、直近のサーバデータ変更オペレーションを表し、順方向同期のための次のSHO IDの役割も果たす。最上位の逆方向同期トークン(BST)763は、クライアントに同期されていない、サーバにおける最高優先度のデータ、オブジェクト、アイテム、またはデータ変更を表す。これはさらに、次の逆方向同期において、同期のための最初のアイテムである。幾つかの実施形態では、同期のためのイベント/データ変更の優先度または関連性は、データ変更のリーセンシー(すなわち発生時刻)、データ変更に関連付けられるアイテムのステータス(例えば、電子メールアプリケーションにおける新しいメッセージは、連絡先更新よりも高いステータス/優先度を有しうる)、および、データ変更に関連付けられるアイテムに関連付けられるラベルまたはタグ(例えば、幾つかの実施形態において、アイテムは「重要」、「至急」、または「常にダウンロード」に対して設定された関連付けられるラベルを有しうる)、または、これらのまたは同様の要素の組み合わせに基づいてよい。他の固有データ764は、特定のアプリケーションに関連付けられたデータの同期のための設定情報を含みうる。
【0069】
[0093] 図8Aおよび図8Bは、サーバとクライアント間の主同期ハンドシェイクに含まれる情報を示す図である。図8Aは、クライアントによってサーバに送信される主同期リクエスト810の図である。幾つかの実施形態では、主同期ハンドシェイクは、同期開始ハンドシェイク後にデータ同期のための情報範囲が設定された直後に発生する。主同期ハンドシェイクは、クライアントとサーバが接続されている限り、同期開始ハンドシェイクが不要となるよう無期限に繰り返されうる。一実施形態では、各主同期リクエスト810は、クライアントID811と、クライアントによって処理された最後のサーバ履歴オペレーション(SHO)ID812と、サーバに同期させるクライアントデータ変更813と、次の逆方向同期トークン(BST)814と、他のアプリケーション固有データとを含む。
【0070】
[0094] クライアントID811を用いて、データ同期のためのサーバにおける対応データセットを特定する。クライアントによって処理された最後のSHO ID812は、クライアントに同期された最後のデータ変更を特定し、クライアントとの順方向同期のための、グローバル履歴テーブルにおける、次のサーバデータ変更セットの決定に役立つ。
【0071】
[0095] サーバに同期されるクライアントデータ変更813も、クライアントからサーバへの主同期リクエストにて送信される。幾つかの実施形態では、最大数が、アップヒル同期においてサーバに送信されるクライアントデータ変更の数を制限して、同期にかかる時間を短縮する。
【0072】
[0096] 次のBST814は、次の逆方向同期が開始すべき場所を表す。長時間の切断がある場合を除いて、逆方向同期はある時点から開始し、すべての関連データが同期されるまで1つの方向において高い優先度から低い優先度で進む。換言すれば、逆方向同期は、ある特定の時点から開始して、サーバにあるデータアイテムセットを同期させることに重点を置いている。したがって、次のBST814は、通常、同期済みの前に送信された次のBST814よりも優先度が低い。しかし、サーバから長時間切断されていた後に同期が再開する場合はこれは当てはまらず、次のBST814は再接続時に優先度が最も高いデータとなる。これは、該次のBST814は、同期が開始する特定の一意の時点において優先度が最も高いデータアイテムを表すからである。したがって、主同期ハンドシェイクは中断されることなく繰り返される限り、逆方向同期は1つの方向で進み、また、新しい開始点を表す次のBST814のそれぞれは、それよりも前に送信されたすべての次のBST814よりも優先度は低い。逆方向同期が一旦終了すると、クライアントとサーバが切断されてふたたび再接続される場合を除いて、逆方向同期は再開されることはない。他のアプリケーション固有データは、1つ以上のアプリケーションに固有の同期のための設定情報を含みうる。
【0073】
[0097] 図8Bは、主同期リクエスト810に応えてサーバからクライアントに送信される主同期レスポンス860の図である。この主同期レスポンス860に含まれる情報には、新しい次のBST861と、逆方向同期のためのアイテムリスト862と、次の最上位SHO ID863と、順方向同期のためのSHOリスト868と、サーバによって処理された最後のCHO ID865と、更なる未同期の変更があるか否かを示すインジケータ866と、他のアプリケーション固有データ867とが含まれうる。
【0074】
[0098] 逆方向同期のためのアイテムリスト862は、現在の逆方向同期において同期のためにクライアントに送信された未同期サーバデータアイテムのリストを含む。このアイテムリストは、最高優先度から最低優先度の順にあり、また、データ同期にかかる時間を最小限にするよう最大数に制限されうる。幾つかの実施形態では、これらのアイテムは、サーバにおいて並べられかつ順序付けられ、他の実施形態では、これらのアイテムの順序付けは、アイテムがキューされクライアントに送信される際にリアルタイムで決定される。
【0075】
[0099] 幾つかの実施形態では、新しい次のBST861は、逆方向同期のためのリストアイテム862における最後のアイテムの後の、次の最高優先度を有する未同期データ、オブジェクト、アイテム、または変更を示す。リスト862における全データがサーバからクライアントに正常に同期されたと仮定すると、この新しい次のBST861は次の逆方向同期の始まりを示す。この新しい次のBST861は、次の逆方向同期のための次の未同期データ範囲の始まりを特定するために、クライアントがサーバに返信するための提案BSTである。長い切断の場合、現在の逆方向同期において全データが正常に同期されたと仮定すると、クライアントは、再接続された際にこの新しい次のBST861を送信しうる。しかし、現在の逆方向同期が中断されて、全データが完全に同期されたわけではない場合、クライアントは、サーバが適切な開始点を決定する代わりに、クライアントによって正常に処理された(またはサーバに正常に同期された)最後のBSTを、サーバに送信するオプションを有する。
【0076】
[00100] 順方向同期のためのサーバ履歴オペレーション(SHO)リスト868は、最後の同期以降にサーバデータに対して行われたオペレーションのリストである。このリストは、データに対して行われた変更およびオペレーションを表す。幾つかの実施形態では、これらの変更およびオペレーションは、クライアントに前に同期されたデータへの変更およびオペレーション、新しいデータの受信または作成、または、クライアントに同期されていないデータへの変更およびオペレーション等を示しうる。一実施形態では、これらの変更オペレーションは、データ自体からは別個に特定され、それにより、変更またはオペレーションだけがクライアントに、データとは独立して、同期されることが可能となる。別の実施形態では、変更およびオペレーションを含むデータが同期のために選択されうる。幾つかの実施形態では、このSHOリストは、サーバにおいて並べられかつ順序付けられ、他の実施形態では、アイテムがキューされクライアントに送信される際にリアルタイムで決定される。
【0077】
[00101] 順方向同期のための新しい最上位の同期済みSHO ID863は、クライアントに同期されるデータ変更を表すSHO IDのリスト868がサーバからクライアントに正常に順方向同期されたと仮定すると、クライアントがサーバとの順方向同期が完了しているとみなす、グローバル履歴テーブルにおける最上位SHO IDを表す。幾つかの実施形態では、この新しい最上位の同期済みSHO ID863は、クライアントに実際に同期されたグローバル履歴テーブルにおけるデータ変更でありうる。他の実施形態では、この新しい最上位の同期済みSHO ID863は、実際にはクライアントに同期されるデータ変更の範囲の終わりを示すに過ぎないグローバル履歴におけるデータ変更でありうるが、実際にはクライアントに順方向同期されない。
【0078】
[00102] この順方向同期の正常完了後、この新しい最上位SHO ID863は、クライアントからサーバに、主同期リクエストにおける処理済みの最上位SHO ID812として返信される。順方向同期が中断されて完了するまで行われなかった場合、クライアントは、次の順方向同期の適切な開始点の決定のために、正常に同期されているSHO IDリスト868における最上位SHO IDを返信する。この機構の論理的根拠は、クライアントが、クライアントに無関係と既に決定されているオペレーションをリクエストすることを防止することにある。
【0079】
[00103] 長い切断の場合、現在の順方向同期において全変更オペレーションが正常に同期されたと仮定すると、クライアントは、再接続された際にこの新しいSHO IDを送信しうる。順方向同期では、同期が最初に開始された後に変更したものが同期されることを理解すべきである。順方向同期は、逆方向同期のようには終了せず、また、順方向同期は、同期が開始された後に受信または作成されたデータまたは新しいデータへの変更を同期させる。
【0080】
[00104] 本発明の1つの優れた態様は、逆方向同期と順方向同期とを同時に実施する能力である。この実施によって、データアイテムとデータアイテムへの変更とが、時間において遡ること(逆方向同期)および時間において進むこと(順方向同期)の両方において同時に同期されて、同期プロセスを迅速化し、また、優先度の高いあらゆるデータアイテムおよびデータアイテムへの変更を確実にタイムリーに同期させることが可能となる。
【0081】
[00105] サーバによって処理された最後のCHO ID865は、サーバにおいて同期された最後のクライアントデータ変更のCHO IDである。受信すると、CHO ID865は、次のアップヒル同期を開始するためにクライアント履歴テーブルにおける次の最上位CHO IDから開始するようにクライアントに通知する。別の実施形態では、上述したように、この次の最上位CHO IDはサーバからクライアントに送信されるので、クライアントからの全データ変更がサーバに同期されている場合は、この次の最上位CHO IDは代わりに直接送信されうる。同様に、クライアントデータ変更の最大数を用いて、クライアントからサーバに送信されるアイテム数を制限してデータ同期にかかる時間を最小限にしうる。
【0082】
[00106] インジケータ866がクライアントに送信されて、未同期でかつ現在の同期に含まれていないサーバにおけるデータ変更があるか否かが示される。幾つかの実施形態では、未同期アイテムが残っている場合、クライアントからの主同期リクエストから始められる主同期プロセスは再びすぐに繰り返される。同期のためのアイテムが残っていない場合、クライアントとサーバは共に次の主同期が発生するまでスタンバイモードに入る。
【0083】
[00107] 他のアプリケーション固有データ867は、特定のアプリケーションにおける同期に用いられるデータを含みうる。
【0084】
[00108] 図9Aおよび図9Bは、サーバおよびクライアントにおける、様々なデータアイテムリストと、対応する履歴テーブルとの関係をそれぞれ示す図である。図9Aは、サーバデータ910のリストと対応するグローバル履歴テーブル920の図である。サーバデータ910は、少なくともその一部が、特定のクライアントに記憶されたデータに対応するデータリストを表す。
【0085】
[00109] サーバデータリストにおける各データには、一意の識別情報(例えば逆方向同期トークン(BST))が関連付けられており、同じBST IDを有するデータは2つとしてない。BSTは、一実施形態では日付/タイムスタンプと同じであってよいが、別の実施形態ではBSTは別に定義されてもよい。図では、各BSTは、アルファベットによって特定され(例えば、アイテムa、アイテムb等)、それぞれ、データを表す。データは、次に限定されないが、テキスト、メディア、グラフィックスを含む任意のアプリケーションに関連してよい。幾つかの実施形態では、電子メールメッセージ、連絡先情報、カレンダー情報等といった様々なタイプのデータを含む1つのデータリストがあってよい。他の実施形態では、1つの異なるタイプのデータをそれぞれ表す様々なリストがあってよい。一実施形態では、全データについて、データに対する全変更を記録する1つのグローバル履歴テーブルがある。他の実施形態では、互いに論理的に仕分けられる様々なデータのための様々なグローバル履歴テーブルがあってよい。換言すれば、1つのパーティションにおけるデータは同じグローバル履歴テーブルを有し、第2のパーティションにおけるデータは違うグローバル履歴テーブルを有することになる。幾つかの実施形態では、データは、データタイプに基づいて異なって仕分けられうる。
【0086】
[00110] サーバデータ910は、優先度、リーセンシー、関連性、またはカテゴリ等によって任意の順序に並べられうる。例えば、優先度による配列は、データアイテムは1つ以上に基準に基づいて順位付けされていることを意味する。一実施形態では、優先度による配列は、より最近のタイムスタンプを有するデータが古いタイムスタンプを有するデータよりも高く順位付けられるリーセンシーによる配列と似ている。例えば、より最近に受信または作成された電子メールメッセージは、古いメッセージよりも高い優先度を有する。関連性は、クライアントデバイスのユーザによってより望まれるアイテムを意味しうる。例えば、電子メールの文脈では、未読メッセージ、過去1週間内に受信したメッセージ、または、特定の話題に関するメッセージが他人よりもユーザにより関連がありうる。カテゴリは、同じアプリケーションに対してであろうと異なるアプリケーションに対してであろうと、次に限定されないが電子メール情報、カレンダー情報、連絡先情報等といったカテゴリを含む様々なデータグループが同期される前に順位付けられうることを意味する。
【0087】
[00111] グローバル履歴テーブル290は、サーバデータ910に対して行われたサーバ履歴オペレーション(SHO)の履歴レコードに対応するエントリを含む。グローバル履歴テーブル920における各SHOは、一意の識別情報を有する。SHO IDは、オペレーションの発生時刻に基づいて、または、特定のルールセットに従って割り当てられうる。データへの変更は、通常、同じデータへの連続した変更が適切に特定できるように時刻に対応する。順方向同期では、データへの変更を処理する様々な方法がある。幾つかの実施形態では、時間において前に進むデータへの変更は個別に処理される。この実施には、関連する全変更を、これらの変更が発生する最中に時系列に処理する必要がある。別の実施形態では、変更を有する全データアイテムのリストが維持され、これらのデータアイテムへの変更は、対応する変更を有するアイテムのリストをサーバから送信することによって、または、そのアイテムのリストへの変更のリストを送信することによって完全に置き換えられうる。アイテムのリストへの変更のリストが送信される場合、互いに関連する変更もそれらの変更が発生する最中に時系列に処理されるべきである。
【0088】
[00112] 説明のために、グローバル履歴テーブル920におけるオペレーションとサーバデータ910との関係を、電子メールアプリケーションの文脈において説明する。例えば、SHO921は、サーバ上の電子メールメッセージであるアイテムdにラベルが追加されることを示す。同様に、SHO922およびSHO928も、それぞれサーバ上の電子メールメッセージであるアイテムfおよびgにラベルが追加されたことを示す。SHO923およびSHO927は、それぞれアイテムjおよびkによって表されるサーバ上の電子メールメッセージに星印が追加されたことを示す。さらに、SHO925、926における新しいメッセージの受信、および、SHO929におけるサーバでの招待の受信は、それぞれ、サーバ上の新しいアイテムo、p、およびqを指す。アイテムmといったサーバ上のメッセージが編集されると、このメッセージへの変更は、SHO924に記録される。オペレーションは、同期されている同期されていないに関わらず、全データに適用される。オペレーションは、データに対して行われたユーザ変更(例えば、ラベルを追加する、星印を追加する等)、または、固有のシステム変更(例えば、新しく受信した電子メール、アーカイブされた電子メールメッセージ、フィルタリングルール等)も表しうる。
【0089】
[00113] 図9Bは、クライアントデータ930のリストとローカル/クライアント履歴テーブル940の図である。クライアントデータリスト930における各データは、一意の識別情報(例えばトークンID)を有する。説明のために、クライアントデータリスト930にある各アイテムには番号が付される(例えば、アイテム2020、アイテム2021等)。しかし、実際の実施では、クライアントデータ930は、対応するデータが同一であり(例えば、同じBST ID)かつ同じ情報を含む、サーバデータ910における少なくともサブセットのデータに対応する。同期されたクライアントデータ930は、全オペレーションを含めて、通常、サーバ上のデータと全く同じ複製である。クライアントのメモリ容量は、大抵の場合、サーバのメモリ容量ほど大きくはないので、クライアントデータ930のリストは、正常に同期された後は、サーバデータ910の一部と少なくとも同一である。
【0090】
[00114] 一実施形態では、クライアントデバイスにおけるクライアントデータの順序付けは任意でどのような順序であってもよい。この実施形態は、クライアントデータがサーバに直接同期されるのではなく、データ変更または変更オペレーションがサーバに同期される場合である。変更オペレーションはデータよりも包括的である。これは、データ変更は、次に限定されないがデータに適用されるデータ作成、データ削除、データ修正等のオペレーションが含まれるからである。したがって、クライアントデータ930は、データ同期のために順序付けられなくてよく、また、優先度、リーセンシー、ラベル、関連性、または任意の他の設定可能なカテゴリに基づいて並べられてもよい。
【0091】
[00115] クライアント履歴テーブル940は、クライアントデータ930の少なくとも部分に対して行われたクライアント履歴オペレーション(CHO)に関するレコードを維持する。クライアントにおけるCHOは、サーバにおけるSHOとは独立しており、CHOは、独立したオペレーションを示し、また、互いに直接的には同期されない。しかし、しかし、データへのCHOおよびSHOの効果は、ダウンヒルおよびアップヒル同期によって同期される。
【0092】
[00116] 説明のために、クライアント履歴テーブル940におけるオペレーションとクライアントデータ930との関係を、電子メールアプリケーションの文脈において説明する。例えば、クライアント履歴テーブルにおけるCHO942はクライアントにおいて削除されたアイテム2007を指し、CHO943はアイテム2011に対応する、クライアントでの新しい招待の受信を表し、CHO944はユーザによって星印が付けられたクライアントにおけるメッセージまたはアイテム2018を表し、CHO945および948を介してラベルがクライアントにおけるアイテム2017および2016にそれぞれ追加され、CHO946および947は、クライアントにおけるアイテム2020および2021として、新しいメッセージの受信をそれぞれ指す。
【0093】
[00117] サーバおよびクライアントの両方での、データの一意の識別情報およびデータ変更またはオペレーションの順序付けは、同期のために重要である。識別情報および順序付けは、データ同期が停止しかつデータ同期が再開されるべき特定の範囲を区別するために重要である。例えば、サーバデータ910は、高い優先度を有するデータ(例えばアイテムs、r、q)が低い優先度のデータ(例えばアイテムn、o、p)よりも先に列挙される優先度の順で並べられる。同様に、グローバル履歴テーブル920におけるSHOおよびクライアント履歴テーブル940におけるCHOは共に、各オペレーションが行われた時刻の時系列で、後のオペレーションが先のオペレーションより優先されて並べられる。識別情報および順序は、データ同期が停止しかつ再開されるときはいつでも同期のために次の未同期情報範囲を特定するために重要である。
【0094】
[00118] 図9Cは、サーバとクライアント間で同期可能な例示的なデータを示す。図9Cに示すデータ951は、メタデータ960とコンテンツ964とを有する。メタデータ960は、次に限定されないが一意の識別子961と、データタイプ情報962と、他の形態の識別情報963とを含む。説明のために、データ951は、電子メールメッセージ、電子メール会話、連絡先、カレンダーエントリ、またはJPGファイル、TIFFファイル、テキストファイル等といった任意の他のデータオブジェクトまたはデータファイルであってよい。一実施形態では、一意の識別子961は、データが作成または修正されたときのタイムスタンプ、または、図9Aおよび図9Bにおいて記載されたようにBST IDと同じであってもよい。
【0095】
[00119] データはさらに、そのデータタイプ識別情報962に基づいてカテゴリ化され、データ同期のプロセスにおいて優先順位が決められるまたは順序付けられる。例えば、データは、連絡先エントリ、メッセージ、カレンダーエントリ、ドキュメント、テキストファイル、イメージファイル等として分類されうる。同様に、ラベル、属性、フラグ等といった他の識別情報963もデータ同期において優先順位を決めるまたは順序付けるための追加の条件として用いられうる。例示説明のために、電子メールの文脈において、ラベルは、システムまたはユーザによって割り当てられ、また、次に限定されないが、全未読メッセージ、ゴミ箱、送信メッセージ、または、仕事、レジャー、スポーツ等といった他のユーザ定義のカテゴリを含みうる。
【0096】
[00120] コンテンツ964は、データの残りの部分を形成し、電子メールの場合、コンテンツはメッセージの本文であってよい。連絡先の場合、コンテンツは名前、電話番号、住所、電子メールアドレス等の連絡先における様々なフィールドを含みうる。カレンダーエントリの場合、コンテンツは予約時間、予約件名、および当該予約に関連付けられた任意の情報を含みうる。
【0097】
[00121] 上述したように、データ同期は、幾つかの実施形態では、3つの異なるプロセスとして説明されうる。各プロセスは別個で互いに独立して動作する。1つの好適な実施形態では、これらのプロセスは、データ同期の速度を増加すべく同時に動作する。他の実施形態では、各プロセスは、一度に1つが、一度に2つが、必要に応じて任意の並びで、優先度の順にまたは任意の適切な設定で別個のアクティブにされうる。これらのプロセスのそれぞれを以下に別個に説明するが、これらの3つを全て組み合わせて、図7および図8における同期開始および主同期ハンドシェイクの文脈において記載されるように一緒に適用可能であることを理解すべきである。
【0098】
[00122] 順方向および逆方向同期の両方を組み込むダウンヒル同期は、図10A〜図10Fに記載される。逆方向同期の個別のプロセスは、図11A〜図11Cに記載され、順方向同期の個別のプロセスは、図12A〜図12Cに記載される。アップヒル同期は、図13および図14に記載される。例示説明のために、同期プロセスは、電子メールアプリケーションの文脈において説明されるが、他のアプリケーションにも同様に適用可能でありうることを理解すべきである。
【0099】
[00123] 図10A〜図10B、図10W、および図10Xは、サーバとクライアントとの間のダウンヒル同期の開始を記載する。図10Aは、長時間の切断後またはサーバとクライアントとの間で同期が行われたことがない場合に、データ同期が再開する前の状態にあるサーバデータ1010Aのリストとグローバル履歴テーブル1010Bを示す。点線は、同期開始の始まりにおけるまたは最後の主同期が発生した後の状態を表す。本図では、主同期とは、逆方向および順方向同期が共に行われ、データがサーバからクライアントに同期される場合である。他の実施形態では、主同期は、アップヒル同期の同時のオペレーションも含みうる。
【0100】
[00124] サーバデータ1010Aのリストにおける各アイテムは、一意の逆方向同期トークン(BST)を有する。一実施形態では、サーバデータ1010Aのリストは、最高優先度が最上位で(例えばBSTn)、最低優先度が最下位(例えばBSTa)にくる優先度の順で並べられる。データを優先度に仕分けることは、データ同期の開始より先にまたはデータ同期時に行われうる。データは高い優先度から低い優先度の順で同期されて送信される。一実施形態では、優先度の順でのデータの逆方向同期は、開始時点において同期されていなかった全データが正常に同期されるまで1つの方向に進む。本実施形態における逆方向同期は、アプリケーションが終了するまたは長い切断があった場合を除いて、同期点後に追加された同期済みデータには戻らない。本実施形態では、逆方向同期は、データに対して行われた変更オペレーションは同期させない。さらに、逆方向同期の優先度の順序は、関連性、リーセンシー、または他の基準に基づいて並べられうる。
【0101】
[00125] グローバル履歴テーブル1010Bにおける各データ変更オペレーションは、一意の識別情報(SHO ID)を有する。幾つかの実施形態では、グローバル履歴テーブル1010BにおけるSHOは、各SHOが発生した時刻に応じて時系列に並べられ、したがって、古いオペレーションは最下位に登場し、新しいオペレーションは最上位に登場する。図では、最も古いオペレーションはSHO1で、最も新しいオペレーションはSHO18である。一実施形態では、SHOによって表されるこれらの変更オペレーションは、グローバル履歴テーブル1010Bにおいて並べられた順序と同じ順序で順方向同期される。
【0102】
[00126] 説明のために、一実施形態では、データ同期(例えば主同期)時に、逆方向同期および順方向同期が共に同時に発生する。今までにデータ同期されたことがなければ、逆方向同期は最高優先度のBST(例えばBSTn)から開始し、最低優先度(例えばBSTa)に進み、順方向同期はSHO1から開始し時系列でSHO2、…、SHO18に進む。幾つかの実施形態では、最大数のデータおよびSHOが毎回送信される。
【0103】
[00127] 図10Wは、データ同期を開始するための同期開始ハンドシェイク時のサーバとクライアント間のハンドシェイクを示す。アップヒル同期に関する情報の部分を除いた図7A、図7Bにおける記載と同様である。最初の同期開始ハンドシェイクでは、クライアントは、図10Wのリクエスト1047内のクライアントIDしか送信しない。サーバは、最上位BST(例えばBSTn)とグローバル履歴テーブルにおける最上位SHO(例えばSHO18)とを含むレスポンス1048によって応答する。図10Xによって示すように後続の主同期ハンドシェイクでは、クライアントリクエスト1051は、クライアントIDと、同期開始レスポンス1048から受信したサーバにおける最上位BST(例えばBSTn)および最上位SHO(例えばSHO18)とを含む。サーバは、逆方向同期のためのアイテムBSTn、m、l、kを含むが、順方向同期のためのアイテムは含まないレスポンス1052によって応答する。両方の同期において戻されるアイテム数も、同じまたは異なる所定の最大数によって制限されうる。レスポンス1052はさらに、次の主同期のための、新しい次のBST(例えばBST J)と最上位の処理済みSHO ID(例えば、SHO18)とを含む。
【0104】
[00128] 図10Bは、最初の主同期後のサーバにおけるデータおよびグローバル履歴テーブルの状態を示す。サーバBSTn、m、l、k、変更オペレーションSHO18およびSHO18より先の他の変更オペレーションは網掛けされ、これらはクライアントにもはや同期される必要がないことを示す。幾つかの実施形態では、サーバは、全データ同期のレコードを維持する。このレコードは、サーバデータリストおよびグローバル履歴テーブルの一部として維持されても、別個に記憶されてもよい。クライアントと正常に同期された、サーバにおけるデータの範囲とサーバにおける変更オペレーションの範囲とを追跡することによって、これらの同じデータ範囲と変更オペレーション範囲は、将来のデータ同期において遭遇した場合に省略される。全データは、ユーザによって削除されるまで記憶されるが、一実施形態では、グローバル履歴テーブルにおける1アイテムは、既存の全クライアントに同期された後に削除されうる。これらの同期済みSHOのオペレーションは、クライアントのローカルデータに組み込まれ、したがって、将来の同期には不要となる。
【0105】
[00129] 図10C〜図10D、図10Yは、クライアントとサーバ間に長い切断がない通常の動作条件下での主同期の概念を説明する図である。幾つかの実施形態では、アプリケーションまたはクライアントとサーバ間の接続がアクティブである限り、主同期は定期的にかつ無期限に継続する。
【0106】
[00130] 図10Cは、新しいデータおよび新しい変更オペレーションが最初の主同期後に追加された(点線で示す)、図10Bと同じ、サーバにおけるデータおよびデータ変更オペレーションの状態を示す。例えばBSToおよびBSTpに対応する新しいメッセージが、BSTfに関連付けられたメッセージがSHO20によって修正される間にサーバに到着する。新しいメッセージBSToおよびBSTpの到着は、グローバル履歴テーブルにおいてそれぞれSHO19およびSHO21として反映される。同期されているまたはされていないに関わらず、データの追加、削除、および任意のデータの修正方法を表す変更オペレーションの包括性を理解すべきである。換言すれば、グローバル履歴テーブルにおけるデータオペレーションは、サーバデータリストにおける各データの各特徴に対応する。
【0107】
[00131] 図10Yに示す第2の主同期プロセスでは、クライアントは、次のBST(例えばBSTj)とクライアントによって処理された最上位の同期済みSHO(例えばSHO18)とを有するリクエスト1053を、サーバに送信する。クライアントリクエスト1053に応えて、サーバは、逆方向および順方向同期プロセスにおいてそれぞれサーバデータ(例えばBSTj、i、h)およびSHO(例えばSHO19、20、11)の次のセットを含む通信1054を、クライアントに送信する。さらに、この通信は、サーバ上に未同期データおよび変更オペレーションがあるか否かを示す指示を含み、本実施例におけるように未同期データおよび変更オペレーション(例えばBSTgおよびSHO21)がある場合は、これらもクライアントに送信される。
【0108】
[00132] 図10Dは、第2の主同期後の、サーバにおけるデータ1010Aおよびグローバル履歴テーブル1010Bの状態の図である。同期済みデータ(例えばBSTh〜p)と同期済みSHO(例えばSHO18〜21)のすべては網掛けされる。上述したように、幾つかの実施形態では、同期済みSHOは、データ同期後すぐにまたは所定時刻にグローバル履歴テーブルから削除されてもよい。
【0109】
[00133] 図10E〜図10F、図10Zは、サーバとクライアント間の長い切断後のデータ同期を説明する図である。図10Eは、最後の(例えば第2の)主同期以後にサーバに追加された新しいアイテム(例えばBSTq、r)および新しいオペレーション(例えばSHO22〜29)を示し、これは点線で示す。新しいSHOは、古いが未同期のメッセージに対して行われたデータオペレーション(例えばBSTcに対するオペレーションのためのSHO22)と、サーバのリストへの新しいアイテムの追加(例えばBSTq、rの追加に対応するSHO23、24)と、前に同期されたデータの修正(例えばBSTlに対するオペレーションのためのSHO25)と、未同期データの修正(例えばBSTuに対するオペレーションのためのSHO29)とを含む。
【0110】
[00134] 図10Eからは、データ同期を始めるための、サーバに対するクライアントによる同期開始の発生が省略される。幾つかの実施形態では、同期開始は、クライアントIDと、当該領域の開始点(例えばBSTp)および当該領域の終了点(例えばBSTh)によって表される最後に逆方向同期された領域(例えばBSTp〜h)とを含むクライアントおよびサーバのオプションのプロセスであってよい。それに応えて、サーバは、サーバからの、最上位BST(例えばBSTv)と最上位SHO(例えばSHO29)とを含む通信によって応答する。
【0111】
[00135] したがって、同期開始に応えて、図10Zに示すように主同期、すなわち、主同期ハンドシェイクが行われる。同期開始後、クライアントは、主同期リクエスト1055においてサーバに送信する情報を選択する。主同期は、次の最上位BST(例えばBSTr)と最上位の同期済みSHO(例えばSHO21)とを含む。主同期リクエスト1055に応えて、サーバは、主同期レスポンス1056を介して、アイテムBSTr、q、g、fを、最後に同期された領域BSTp〜hは省略して高い優先度から低い優先度で逆方向同期において、また、SHO22、23、24に対応するデータへの時系列変更を、順方向同期において返信する。
【0112】
[00136] 幾つかの実施形態では、逆方向および順方向同期プロセスは、効率を維持するために同じデータおよび/または変更オペレーションを2回同期しないことを確実にするために互いのプロセスについて十分な情報を共有する。一実施形態では、このインテリジェンスは、データに対して行われたオペレーションとデータとは別個に区別されることによって可能にされる。例えばアイテム(例えば電子メールメッセージ)がサーバにおけるデータリストに追加されると、対応する追加オペレーションがグローバル履歴テーブルに記録される。同様に、ラベルが追加されるといったように同じ電子メールメッセージが修正されると、ラベルの追加が別個のデータオペレーションとしてグローバル履歴テーブルに登録される。
【0113】
[00137] データおよび変更オペレーションの別個の同期の概念は、少なくとも3つの異なるシナリオによって説明されうる。第一に、電子メールメッセージが、ユーザがラベルを追加した前にまず逆方向同期によって以前に同期されている場合、順方向同期は、メッセージ追加オペレーションは省略するが、ラベル追加オペレーションは同期させる。第二に、電子メールメッセージが前に同期されていない場合、逆方向同期が修正されかつ未同期の電子メールメッセージに到達すると、修正とメッセージ自体の両方が逆方向同期によって同期され、順方向同期はメッセージ追加およびラベル追加オペレーションの両方を省略する。第三に、電子メールメッセージが同期されておらず、データの逆方向同期の前に順方向同期においてメッセージ追加オペレーションに到達すると、未同期および未修正のメッセージがメッセージ追加オペレーションによってまず同期され、データの逆方向同期が省略される。ラベル追加オペレーションは、それがメッセージ追加オペレーションの直後であろうとメッセージ追加オペレーション後にどれだけ時間が経過していようとも、それが発生したときに応じて追加される。
【0114】
[00138] 順方向および逆方向同期の同時オペレーションは、高速かつ効率的なデータ同期を確実なものとする。順方向同期は、サーバデータに対して行われた各変更オペレーションが記録されることを可能にする。順方向同期は、サーバにおけるデータに対して行われたデータオペレーションのあらゆる特徴を包括的にカバーすることに重点を置いている。逆方向同期は、サーバにおけるデータを優先度の順に同期させることに関連し、したがって、高い優先度を有するデータは低い優先度を有するデータよりも先にクライアントに同期されることが可能である。逆方向同期は、クライアントデバイスのユーザに最も重要でありうる最高優先度を有する情報を同期させることを目指す一方で、順方向同期は、データに対するオペレーションが同期から確実に取り残されないようにする。これら2つのプロセスは同時に発生し、他方の同期プロセスに関する情報を共有するので、1つのプロセスによって同期されたデータは、もう1つのプロセスによっては同期化されず、各プロセスが他方のプロセスを支援して全データ同期プロセスをより高速かつ効率的にすることを可能にする。さらに、重複するデータおよび変更オペレーションは、1つのオペレーションによって処理され、もう1つのオペレーションによって省略されるので、サーバとクライアント間に長い切断がない限り、逆方向同期完了後短い期間内で、順方向同期が時系列でサーバデータに対する残りの全ての変更オペレーションを同期させる。長い切断がある場合、逆方向同期が行われ、未同期の優先度が高いデータを同期させることを支援し、順方向同期がプロセスにおいて追いつくことを支援する。優先度の高いサーバデータ変更を、このように逆方向同期を介してクライアントに同期させることによって、クライアントが逆方向同期が完了する前にオフラインになってもクライアントのユーザは、様々な実施形態においてどのように優先度が定義されようとも、最高優先度を有するデータがオフラインで使用するために利用可能となる。
【0115】
[00139] 順方向および逆方向同期スキームをより理解するために、各同期プロセスを個別に説明する。図11Aは、クライアントとサーバ間の例示的な順方向同期インタラクションスキームを説明する。幾つかの実施形態では、アプリケーションが起動される場合またはアプリケーションはアクティブあったが長時間の切断(特定の数分および数時間と予め決められる)がある場合に、同期開始ハンドシェイクによって同期が開始される。
【0116】
[00140] 同期開始は、同期のための始点としての役割を果たす。同期開始は同期プロセスを始めるためだけに必要であるが、本実施形態では、同期開始は長い切断の後にも用いられる。上述したように、クライアントは、サーバに対してクライアントを特定するためのクライアントIDを含む同期開始リクエスト1101をサーバに送信し、順方向同期では、前に同期された範囲におけるアイテムは不要である。サーバは、次の最上位のサーバ履歴オペレーション識別情報(SHO ID)を含む同期開始レスポンス1102によって、クライアントに応答する。このSHO IDは、サーバにおけるデータに対して行われた直近のオペレーションを表す。クライアントは、受信したばかりのSHO IDかまたは同期開始前にクライアントにある別のSHO IDか、どのSHO IDをサーバに返信するかを決定する。長い切断の場合、クライアントは、前の順方向同期からもたらされたクライアントにあるSHO IDを送信する。
【0117】
[00141] 主同期ハンドシェイクは、同期開始ハンドシェイクに続いて発生する。幾つかの実施形態では、主同期は、クライアントからサーバに送信された主同期リクエストによって開始される。他の実施形態では、主同期は、サーバからのリクエストによって、または、全くリクエストがなくても開始されうる。図11Aでは、クライアントは、クライアントIDと、サーバからクライアントに最大数の「x」個のアイテムを同期させるために、サーバグローバル履歴における開始点を特定する最上位の同期済みSHO IDとを含む主同期リクエスト1を送信する(1103)。サーバは、主同期リクエスト1(1103)におけるSHO IDから始まるグローバル履歴テーブルからの最大で「x」個のオペレーションと、新しい最上位の同期済みSHO IDと、更なるサーバ変更が残っているかどうかについてのインジケータとを含む主同期レスポンス1によって応答する(1104)。別の実施形態では、サーバは十分な情報を維持して、クライアントによって処理済みと既に確認されている変更を送信しないようにしうる。
【0118】
[00142] クライアントとサーバ間に長い切断がない通常の動作条件下では、主同期は、未同期のデータまたは変更オペレーションが残っている限りすぐに繰り返される。これには、前の主同期レスポンス(例えば主同期レスポンス1(1104))においてサーバから受信した、次の最上位の同期済みSHO IDと、クライアントIDと、サーバからの送信のためのアイテムの最大数「x」とを含む主同期リクエスト2をクライアントからサーバに送信すること(1105)が含まれる。サーバは、サーバからの「x」個またはそれ以下のオペレーションと、サーバに追加の未同期のオペレーションが残っているかどうかについてのインジケータと、残っている場合にはグローバル履歴テーブルにおける次の未同期オペレーションのSHO IDとを含む主同期レスポンス2によって応答する(1106)。
【0119】
[00143] 主同期リクエストおよびレスポンスハンドシェイクは、サーバに未同期オペレーションがある限り、または、サーバとクライアント間にアクティブな接続がある限り無期限に継続する。サーバに未同期変更オペレーションがなくなると、主同期ハンドシェイクの頻度は少なくされうる。アクティブ同期モードにない場合、クライアントおよびサーバはスタンバイモードに入る(1107)。接続中断が所定の時間を超えて続かない限り、主同期ハンドシェイクは、次に限定されないが、固定の間隔またはサーバ上のアクティビティ等を含む多数の所定の基準の1つに基づいて繰り返される(1108)。
【0120】
[00144] 図11Bは、クライアントにおける例示的な順方向同期方法を説明するフローチャートである。幾つかの実施形態では、クライアントは、クライアントIDを有する同期開始リクエストをサーバに送信することによってデータ同期を始める(1120)。これに応じて、クライアントは、サーバにおける最上位SHO IDを含む同期開始レスポンスをサーバから受信する(1121)。クライアントは、順方向同期を開始するために、前の主同期からのクライアントにあるSHO IDかまたはサーバから受信したばかりのSHO IDか、どのSHO IDをサーバに送信するのかを決定する。クライアントは、クライアントIDと、同期オペレーションのためのグローバル履歴テーブルにおける開始点を設定するための、サーバに対する選択されたSHO IDと、サーバから送信される「x」個のオペレーションの限度とを含む主同期リクエストを送信する(1122)。クライアントは次に、クライアントと以前に同期されていない最大で「x」個のオペレーションと、残っている未同期アイテムについての指示と、次の最上位の未同期SHO IDとを含む主同期レスポンスを、サーバから受信する(1123)。主同期レスポンスに基づいて、クライアントは、ステップ1124において、未同期アイテムが残っているかどうかを判断する。未同期オペレーションがある場合、クライアントは、ステップ1122に示すように別の主同期リクエストを開始する。未同期オペレーションがない場合、クライアントは、ステップ1125において、所定の基準によって決定されるように、次の主同期がアクティブにされるまでアイドル状態となる。ステップ1126に示されるように、最後の主同期から長い切断がある場合、クライアントは、ステップ1120におけるように、同期開始を再び始める。長い切断がない場合、クライアントは、所定の基準に応じて新しい主同期リクエストを始める。
【0121】
[00145] 図11Cは、サーバにおける例示的な順方向同期方法を説明するフローチャートである。サーバは、ステップ1131において、クライアントIDを有する同期開始リクエストをクライアントから受信する。次に、サーバは、ステップ1132において、サーバにおけるグローバル履歴テーブル内の最新のSHO IDを含む同期開始レスポンスをクライアントに送信する。主同期の始まりにおいて、また、ステップ1133において、サーバは、順方向同期の開始点を設定するSHO IDと、サーバから送信する最大で「x」個のオペレーションとを有する主同期リクエストを、クライアントから受信する。ステップ1134において、サーバは、最後の同期から同期されていない最大で「x」個のオペレーションと、残っている未同期アイテムの指示と、残っている場合は、グローバル履歴テーブルにおける次の未同期SHO IDとを含む主同期レスポンスを、クライアントに送信する。ステップ1135において、サーバは、クライアントからの次の主同期リクエストまで待機しかつアイドル状態となる。ステップ1136において、クライアントからの主同期リクエストが、所定の継続時間内といった所定条件に合えば、サーバは、ステップ1133にあるように、クライアントからの主同期リクエストを受信する。所定条件に合わなければ、ステップ1131にあるように、クライアントからの同期開始リクエストを受信する。
【0122】
[00146] 図12Aは、逆方向同期時のサーバとクライアント間の例示的なインタラクションスキームを説明する図である。幾つかの実施形態では、上述したように、同期開始が、サーバデータ同期プロセスを始めるか、または、長時間にわたってクライアントがサーバから切断されていた後にサーバデータ同期を再開する。クライアントIDと、クライアントによって処理された最後の逆方向同期済みデータ範囲とを含む同期開始リクエストが、クライアントからサーバに送信される(1201)。サーバは、最上位の逆方向同期トークン(BST)を含む同期開始レスポンスによって応答する(1202)。クライアントは、次に、クライアントIDと、同期開始レスポンスにおいて受信した最上位BSTと、同期のための最大数の「y」個のデータアイテムとを含む主同期リクエスト1を、サーバに送信する(1203)。これに応じて、クライアントは、高い優先度から低い優先度の順にある最大で「y」個のサーバデータアイテムと、残っている未同期データの指示と、残っている場合には新しい次のBSTとを含む主同期レスポンス1を、サーバから受信する(1204)。
【0123】
[00147] サーバとクライアント間のネットワーク接続がアクティブ状態のままであるならば、主同期ハンドシェイクは繰り返される。主同期リクエスト2(1205)において、クライアントは、次の未同期サーバデータの範囲を特定する、主同期レスポンス1(1203)から受信した次の最上位BSTと、クライアントIDと、最大数の「y」個の未同期サーバデータとを送信する(1205)。クライアントは、次に、優先度の順に並べられた最大で「y」個の未同期サーバデータと、残っている未同期データの指示と、残っている場合には、次の最上位の未同期BSTとを含む主同期レスポンス2を、サーバから受信する(1206)。主同期リクエストおよびレスポンスは、逆方向同期のためのデータがなくなるまで継続され、クライアントは、スタンバイモードに入る(1207)。主同期プロセスは、固定の間隔といった所定条件が満たされると、繰り返される。
【0124】
[00148] 図12Bは、クライアントにおける例示的な逆方向同期方法を説明するフローチャートである。ステップ1221において、クライアントは、クライアントIDと、未同期領域の開始点と終了点を伝える最初のBSTおよび最後のBSTを有する、クライアントによって処理された最後の同期済み領域とを含む同期開始リクエストを、サーバに送信する。最後の同期済み領域は、リクエストが最初の同期開始である場合は空となる。ステップ1222において、クライアントは、最高優先度を有する未同期サーバデータに対応する最上位BSTを含む同期開始レスポンスを、サーバから受信する。ステップ1223において、クライアントは、クライアントIDと、同期開始レスポンスにおいて受信した最上位BSTと、逆方向同期のための最大数の「y」個の未同期サーバデータとを含む主同期リクエストを送信する。ステップ1224において、クライアントは、優先度順にある最大数の「y」個の未同期サーバデータと、残っている未同期データアイテムのインジケータと、残っている場合には次の最上位の未同期BSTとを含む主同期レスポンスを、サーバから受信する。クライアントは次に、ステップ1225において、未同期サーバデータが残っているかどうかを判断する。残っている場合、クライアントは、ステップ1223にあるように、主同期リクエストを継続する。残っていない場合、クライアントは、所定条件によって決定されるように、次の主同期が発生するまでアイドル状態となる(1226)。ステップ1227において、クライアントは、最後の主同期から長い切断があるかどうかを判断する。ある場合、クライアントは、ステップ1221にあるように、データ同期を再び始めるように同期開始に戻る。ない場合、クライアントは、ステップ1223にあるように、主同期を繰り返す。
【0125】
[00149] 図12Cは、サーバにおける例示的な逆方向同期方法を説明するフローチャートである。ステップ1251において、サーバは、クライアントIDと、クライアントによって処理された最後の同期済みデータ領域とを含む同期開始リクエストを、クライアントから受信する。同期済みデータ領域は、そのデータ領域における最初のBSTおよび最後のBSTによって示される。同期済みデータ領域は、リクエストがクライアントの最初の同期開始リクエストである場合は空となる。ステップ1252において、サーバにおける最上位BSTを含む同期開始レスポンスが、クライアントに送信される。ステップ1253において、サーバは、クライアントIDと、逆方向同期を設定するための最上位BSTと、サーバからの逆方向同期のための最大数の「y」個のアイテムとを含む主同期リクエストを、クライアントから受信する。ステップ1254において、サーバは、優先度の順にある最大で「y」個の未同期データアイテムと、残っている未同期データの指示と、残っている場合には次の未同期データのBSTとを含む主同期レスポンスを、クライアントに送信する。ステップ1255において、サーバは、所定条件によって決定されるように次の主同期までアイドル状態となる。ステップ1256において、所定の継続時間内にクライアントから主同期リクエストがある場合、サーバは、ステップ1253にあるようにクライアントから主同期リクエストを受信する。長時間の切断があった場合、サーバは、ステップ1251にあるようにクライアントから同期開始リクエストを受信する。
【0126】
[00150] 図13A〜図13D、および図13X〜図13Zは、クライアントとサーバ間のアップヒル同期を説明する図である。図13Aは、クライアントデータ1310Aのリストと、クライアント履歴テーブル1310Bを示す。クライアント履歴における各エントリは、クライアントにおけるデータに対して行われたオペレーションを表すクライアント履歴オペレーション(CHO)である。幾つかの実施形態では、各CHOは、クライアントにおけるデータに適用された作成、修正、または削除オペレーションを含むが、サーバからの新しいデータの追加は含まない。一実施形態では、クライアントデータは、サーバにおける全データのサブセットを含む。したがって、サーバは全データの完全なレコードを維持し、クライアントデータはデータの完全セットの一部を含む。他の実施形態では、クライアントにおけるデータセットは、サーバにおけるセットと同じである。
【0127】
[00151] クライアントがサーバに同期したことがない場合、クライアントが長時間サーバから切断されていた場合、または、データを用いるアプリケーションが終了され再度アクティブにされた場合、全同期プロセスを始めるために同期開始ハンドシェイクが用いられる。クライアントがサーバに同期したことがない場合、サーバに同期されるCHOはない。したがって、開始後、クライアントからサーバに送信されるデータ変更はない。クライアントが長期間サーバから切断されていた場合、最後の同期からクライアントにおいてデータ変更が発生したことが考えられる。あるいは、最後の同期が中断されたまたは中断前の最後の同期において全データ変更が同期されたわけではない場合、クライアントには、未同期データ変更が残ったままでありうる。
【0128】
[00152] 図13Aは、クライアントとサーバ間に長い切断があり、一連のデータ変更オペレーションCHO25〜29がサーバに同期されていない例を示す。点線は、開始時点のデータおよびクライアント履歴テーブルの状態を表す。図は、CHO25はクライアントアイテムggにおけるデータ変更を表し、CHO26はクライアントアイテムkkにおけるデータ変更を表し、CHO27はクライアントアイテムiiにおけるデータ変更を表し、CHO28はアイテムooにおけるデータ変更を表し、CHO29はクライアントアイテムppにおけるデータ変更を表すことを示す。例示説明のために、各クライアントアイテムは電子メールアプリケーションにおけるメッセージだとすると、各データ変更は、次に限定されないが、クライアントにおける、ラベルの追加、メッセージに星印を付けること、メッセージの削除、メッセージの作成等を含むメッセージに対するオペレーションを表しうる。
【0129】
[00153] 図13Xは、同期プロセスを始めるためのクライアントとサーバ間の同期開始ハンドシェイクを説明する図である。クライアントは、サーバに対してクライアントを特定するためのクライアントIDを含む同期開始リクエスト1351を送信する。サーバは、データ同期の開始点として、(最後のデータ同期において)サーバによって最後に処理された最後のCHO ID(例えばCHO24)を含む同期開始レスポンス1352によって、クライアントに応答する。幾つかの実施形態では、データ変更は、上述したように、順方向同期と同様に時系列に並べられる。クライアント履歴テーブルの最上位にある新しいアイテムは、高いCHO ID(例えばCHO29)を有する一方で、古いアイテムは最下位にあり、低いCHO ID(例えばCHO26)を有する。一実施形態では、CHO IDは、データオペレーションが発生した時刻に関連付けられる。
【0130】
[00154] 図13Yは、データ同期プロセスにおけるクライアントとサーバ間の主同期ハンドシェイクを説明する図である。同期開始レスポンス1352においてCHO IDがサーバによって提供されているので、クライアントは、CHO25〜28によって表されるアイテムgg、ii、kk、ooに対応するサーバデータ変更を含む主同期リクエスト1353を送信する。幾つかの実施形態では、データ変更はデータから切り離される。これは、データ変更は、データ全体ではなくてデータへの変更オペレーションとして送信されることを意味する。例えば星印がメッセージに追加された場合、または、連絡先の電話番号が変更された場合、または、2つの新しいラベルがメッセージに追加された場合、星印を追加するオペレーション、連絡先に対して新しい電話番号に変更するオペレーション、2つのラベルを追加するオペレーションが、データから独立して送信される。他の実施形態では、修正を含むデータ(例えばアイテムgg、ii、kk、oo)が、サーバにおける対応する未修正のアイテムを置き換えるべくサーバに送信されてもよい。クライアントのリクエストにおいて送信された全CHOが同期されると、サーバは、クライアントによって提案される次のCHO(例えばCHO28)を含む主同期レスポンス1354を、次の同期のための開始点として次の主同期レスポンスにおいてクライアントに返信する。クライアントからの全CHOがサーバに同期されると、サーバは、主同期レスポンスにおいて最後に同期されたCHOをクライアントに戻すか、または、CHO IDを全く戻さなくてもよい。
【0131】
[00155] 図13Bは、最初の主同期後のクライアントデータのリストとクライアント履歴テーブルの図を示す。クライアントにおける網掛けされたアイテム(例えばアイテムgg、ii、kk、oo)は、サーバに同期された変更の影響を受けているデータを表す。ローカル履歴テーブルでは、CHO29は未同期のままである。幾つかの実施形態では、正常に同期されたCHOは、メモリスペースを節約するために削除されて取り除かれてよい。他の実施形態では、同期済みのCHOは短時間の間維持されて、特定の継続時間後にまたはメモリが必要になることにより取り除かれてもよい。
【0132】
[00156] 図13Zは、クライアントとサーバ間の第2の主同期ハンドシェイクを示す。クライアントとサーバ間の接続がアクティブであり、長い切断がない通常の動作下では、幾つかの実施形態では、前の主同期が終了すると、クライアントに未同期のデータ変更が残っている場合、新しい主同期がすぐに発生する。主同期ハンドシェイクは、クライアントに未同期アイテムがなくなるまで繰り返される。本実施例では、クライアントは、図13Cに示すように、主同期レスポンス1354によって送信された次の最上位CHO ID(例えばCHO29)に従ってアイテムpp、dd、qq、およびmmに対する変更を表すCHO29〜32と、クライアント履歴テーブルにおける次の最上位の未同期CHO(例えば未同期CHOは残っていないこと)とを含む主同期リクエスト1355を、サーバに送信する。順方向同期および逆方向同期と同様に、最大数を用いて、データ同期におけるデータ変更の数を制限し、それにより同期時間を最小限にしうる。この主同期は、クライアントにおける全CHOがサーバに同期されるまで継続する。例えばCHO32の後にはデータ変更がないので、クライアントからサーバへの主同期レスポンス1356では、次の最上位CHOは送信されない。図13Dでは、データ変更CHO29〜32に対応するアイテムpp、dd、qq、およびmmは網掛け表示され、これらの変更は、サーバに同期されたことを示している。同期済みのCHOは削除されるので、クライアント履歴テーブル内には未同期CHOは残らない。
【0133】
[00157] 幾つかの実施形態では、データ同期は、クライアントによってではなくサーバによって始められてもよいことは理解すべきである。例えば、サーバは、ある間隔で、クライアントと通信して、クライアントにおいて追加のデータ変更が発生したかどうかを判断してよい。ダウンヒル同期およびアップヒル同期のいずれにおいても、どのデバイスがデータ同期に用いられるかは重要ではない。それよりもむしろ、一方のデバイスから他方のデバイスに送信される通信および情報の方が、開始点を決定し、どのデータ変更が同期されているのかいないのかを区別するために重要である。
【0134】
[00158] 図14Aは、アップヒル同期時のサーバとクライアント間の例示的なインタラクションスキームを説明する図である。一実施形態では、クライアントは、クライアントIDと、クライアントによって最後に処理されたCHO IDとを含む同期開始リクエストを、サーバに送信する(1401)。サーバは、サーバが処理し、受信確認し、または同期した最上位CHO IDを含む同期開始レスポンスによって応答する(1402)。同期開始レスポンス1402内の情報に基づいてデータ同期が開始すべき場所を知っていることにより、クライアントは、クライアントIDと、最大数の「z」個の未同期CHOとを含む主同期リクエスト1を、サーバに送信する(1403)。サーバは、矢印1404において、サーバによって受信確認されたまたは処理された最上位CHO IDを含む主レスポンス1によって応答する(1404)。同期は中断されていないと仮定すると、次の最上位CHO IDは、主同期リクエスト1においてサーバがクライアントから受信した最上位の未同期CHO IDと同じである(1403)。しかし、中断が発生した場合、サーバは、クライアントによって処理された最後のCHO IDを送信し、それにより、サーバは次の同期が開始すべき場所を判断することができる。
【0135】
[00159] 主同期2において、クライアントにおける残りの未同期データの同期は、クライアントIDと、最大数の「z」個のデータ変更の限度とを含む主同期リクエスト2をクライアントが送信することによって継続する(1405)。サーバは、主同期リクエスト2(1405)によって示される次の最上位CHO ID、または、サーバによって処理された/同期された最上位CHOを含む主同期レスポンス2によって応答する(1406)。主同期ハンドシェイクは、クライアントにおける全データ変更がサーバに同期されるまで繰り返され、クライアントおよびサーバは共に、矢印1407にあるように、スタンバイモードに切り替わる。クライアントとサーバ間には長時間の切断がないと仮定すると、クライアントデータ変更の同期のための主同期ハンドシェイクは、矢印1408にあるように、所定条件または基準に応じて再び始められる。同期開始は、長い切断がある場合またはアプリケーションが終了する場合を除いて再開しない。
【0136】
[00160] 図14Bは、クライアントにおける例示的なアップヒル同期方法を説明するフローチャートである。ステップ1420において、開始時または長時間の切断後、クライアントは、クライアントIDと、クライアントによって受信確認された最後のCHO IDとを含む同期開始リクエストを、サーバに送信する。ステップ1421において、クライアントは次に、サーバによって処理された最後のCHO IDを含んでクライアントに、サーバに対する同期が最後に終了した場所を通知する同期開始レスポンスを、サーバから受信する。ステップ1422において、主同期またはデータ同期のプロセス時、クライアントは、クライアントIDと、最大で「z」個の未同期データ変更とを含む主同期リクエストを送信する。ステップ1423において、クライアントは、クライアントによって前に送信された次の最上位CHO IDかまたはサーバによって受信確認された最後のCHO IDのいずれかを含むサーバからの主同期レスポンスを受信する。ステップ1424において、クライアントは次に、残っている未同期データ変更があるか否かを判断する。変更が残っている場合、クライアントは、ステップ1422に示すように、これらの未同期のデータ変更をクライアントに送信し続ける。変更がもうない場合、クライアントは、ステップ1425に示すように、所定基準に応じて次の主同期が発生するまでアイドル状態となる。長い切断がある場合、クライアントは、ステップ1420に示すように、同期開始ハンドシェイクによって全プロセスを再開し、長い切断がない場合、クライアントは、ステップ1422に示すように、主同期を再開する。
【0137】
[00161] 図14Cは、サーバにおける例示的なアップヒル同期方法を説明するフローチャートである。ステップ1431において、開始時または長期間の切断後、サーバは、クライアントIDと、クライアントによって処理された最後のCHO IDとを含む同期開始リクエストを、クライアントから受信する。サーバは次に、ステップ1432に示すように、クライアントに対してサーバにおいて受信確認されたまたは同期された最後のCHO IDを含む同期開始レスポンスをクライアントに送信して、クライアントが、始めるべき次の未同期データ範囲を判断することを支援する。ステップ1433において、サーバは、クライアントIDと、最大可能数の「z」個のデータ変更とを含む主同期リクエストを、クライアントから受信する。ステップ1434において、全データ変更が正常に同期された場合、サーバは、ステップ1433に示すように、クライアントによって示される次の最上位の未同期CHO IDを含む主同期レスポンスを、クライアントに送信する。データ同期が中断された場合、サーバによって処理された最後のCHO IDが代わりに送信される。ステップ1435において、サーバは、所定条件下におけるクライアントからの次の主同期リクエストまでアイドル状態となる。所定条件を満たす主同期リクエストが受信される場合、ステップ1433にあるように、主同期が再開する。受信されない場合、サーバは、ステップ1431に示すように、クライアントから同期開始リクエストを受信して、データ同期プロセスを再開する。
【0138】
[00162] 説明のための上述の記載は、具体的な実施形態を参照して述べた。しかし、上述の例示的な説明は、包括的であることまたは本発明を開示した具体的な形態に限定することを意図したものではない。多くの修正形態および変更形態が上述の教示内容から可能である。実施形態は、本発明の原理とその実際の適用を最善に説明し、それにより、当業者が、本発明、および、考えられる特定の使用に適するように様々な修正がなされた多様な実施形態を最善に活用できるように選択かつ記載された。
【技術分野】
【0001】
[0001] 開示される実施形態は、概して、クライアント‐サーバインタラクションの分野、特にクライアントデバイスとサーバ間のアイテムの同期に関する。
【背景技術】
【0002】
[0002] 多くのソフトウェアアプリケーション(例えば電子メール)は、クライアントデバイスおよびサーバシステムの両方上で、または、サーバシステムからのサポートを得てクライアントデバイス上で動作するように設計される。これらのアプリケーションは、ユーザがクライアントデバイス上で操作してようとサーバ上で操作していようと関係なく自由にデータを作成し、受信し、送信し、修正することを可能にする。クライアントとサーバ間のデータの同期によって、クライアントおよびサーバに常駐するアプリケーションデータ間に一貫性を維持することが可能となる。同期は、クライアントデバイスは通常ローカルに記憶されたデータを主に使って動作するので、効率の理由から重要である。例えば、電子メールクライアントが、別個の電子メールサーバと通信するポータブルデバイス(例えばラップトップまたはモバイル電話機)上で実行するクライアント‐サーバ電子メールアプリケーションの場合、電子メールアプリケーションデータの同期には、電子メールサーバにおいて受信された電子メールメッセージが電子メールクライアントにダウンロードされ(これはダウンヒル同期と呼ばれる)、クライアントによってローカルに記憶された電子メールデータに対して行われたオペレーションが続いて電子メールサーバにアップロードされる(これはアップヒル同期と呼ばれる)ことが必要である。
【0003】
[0003] データ同期は、サーバとクライアントが通信状態を維持する限り、ほぼ連続的にクライアントとサーバ間で作用することができる。しかし、サーバとクライアントが、通信機能停止またはクライアントがオフラインまたは「飛行機」モードで動作する必要によってしばらくの間通信が切断されていた場合、または、クライアントデバイスがサーバに接続するよう新たに設定される場合(この場合、クライアントデバイスは、そのメモリ内にローカルアプリケーションデータはほとんどまたは全く記憶されていない)、同期はより困難となる。このような状況では、通信機能停止時にサーバにおいて受信された大量のデータは、クライアントがサーバに再接続する際にはクライアントに同期されておらず、また、オフラインのクライアントオペレーションもサーバに同期されていない。大量のアプリケーションデータがクライアントにダウンロードされる必要のある、次の起きる同期ステップは、時にクライアントデバイスの「キャッシュのプライミング」と呼ばれる。
【0004】
[0004] クライアントデバイスのキャッシュをプライミングする従前のアプローチは不便および/または低速である。これは、クライアントがダウンロードされたアプリケーションデータを用いて動作開始可能となる前にプライミングが完了することを必要とする従前の実施の場合に特に言えることである。このようなキャッシュのプライミング方法は、ローカルに記憶されたデータを使用可能となる前に、ユーザは相当な時間待機しなければならない長いプロセスである。
【0005】
[0005] 例えば、クライアントデバイスのキャッシュを電子メールアプリケーションデータでプライミングするための1つの従前の実施では、サーバにおいて記憶されている電子メールデータの大部分がまず1つ以上のCDに書き込まれ、次にユーザはCDからのデータをクライアントデバイス(例えばラップトップ)に物理的にコピーする。他の実施では、クライアントに同期されるべきデータのセットがネットワーク接続を介してダウンロードされる。このことは、通信機能停止によって、長時間かかるダウンヒル同期オペレーションが中断されうることを意味し、クライアントデバイスは、ダウンロードされたデータのいずれも使用できなくなってしまう。
【0006】
[0006] ダウンヒル同期の他の実施では、クライアントに同期されるべきデータは、最も古いデータから最も新しいデータの時系列でサーバからダウンロードされる。このことは、クライアントが、同期の完了前にオフラインとなる(そして不完全なデータを使用できる)場合、クライアントデバイスでは最も古いデータのみが利用可能となることを意味し、このことは、特にユーザがもはやサーバに接続できない場合にユーザを苛立たせてしまう。
【0007】
[0007] クライアントデバイスは、通常、サーバよりもアプリケーションデータを記憶するために利用可能なメモリが少ないので、クライアントのユーザが各同期後に最も関連のあるデータにすぐアクセスできるように、サーバからクライアントへのデータ(大抵の場合、サーバに記憶された全てのデータのサブセットである)のより望ましい同期方法が好適である。
【発明の概要】
【0008】
[0008] 幾つかの実施形態では、情報をクライアントに同期させるサーバのための方法は、サーバにおいて、サーバにおいて管理される過去の同期のレコードに基づいて、クライアントに同期されたことがないデータおよびクライアントに同期されていない変更オペレーションのうち少なくとも1つを特定するステップと、通信を送信してサーバとクライアント間で情報を選択的に同期させるステップであって、情報は特定されたデータおよび特定された変更オペレーションを含み、データは高い優先度から低い優先度の順に並べられかつ伝送される、ステップと、情報同期の任意の終了時に、レコードを更新してクライアントに正常に同期された通信にデータおよび変更オペレーションを含めるステップとを含む。
【0009】
[0009] 他の実施形態では、かかるサーバ方法は、クライアントからリクエストを受信してサーバとのデータ同期を開始するステップをさらに含む。
【0010】
[0010] 他の実施形態では、かかるサーバ方法は、サーバにおいて変更オペレーションが発生した時刻に基づいた時系列に並べられる変更オペレーションを含み、古い変更は新しい変更より先に伝送される。
【0011】
[0011] 幾つかの実施形態では、情報をサーバに同期させるクライアント方法は、クライアントデバイスにおいて、リクエストを送信して、サーバに、次の同期を開始するためのデータおよび変更オペレーションの次の範囲を通知するステップと、リクエストに応じて、サーバから通信を受信して、サーバからの情報をクライアントに選択的に同期させるステップであって、情報は、第1の同期機構において、クライアントに前に同期されたことがないサーバにおけるデータを含み、高い優先度から低い優先度の順に受信される第1のデータセットと、第2の同期機構において、クライアントとの最後の同期において同期されなかった変更オペレーションを含み、サーバにおける各変更オペレーションの発生に基づいた時系列に並べられ、古い変更オペレーションが新しい変更オペレーションより先に受信される第2のデータとを含む、ステップと、クライアントのメモリに情報の少なくとも一部分を記憶するステップと、クライアントデバイスのユーザが、情報同期の任意の終了時にメモリに正常に記憶された情報の少なくとも一部分にアクセスしかつ使用できるようにするステップとを含む。
【0012】
[0012] 幾つかの実施形態では、かかるクライアント方法では、優先度の順は、データのリーセンシーといったクライアントのユーザに対するデータの関連性に応じて並べられ、したがって、関連性の多いデータには高い優先度が与えられ、低い優先度を有する関連性の少ないデータより先にクライアントに伝送される。
【0013】
[0013] かかるクライアント方法の幾つかの実施形態では、第1のデータ同期機構および第2のデータ同期機構は互いに独立しているが、第1のデータセットおよび第2のデータセットが同時に同期されるように同時に発生する。
【0014】
[0014] さらに他の実施形態では、かかるクライアント方法は、クライアントとの同期ためにサーバにおける次のデータ範囲を特定するようサーバに送信される次の同期リクエストに含めるべくサーバに正常に同期された最後のデータ範囲のレコードをクライアントにおいて維持するステップを含む。
【図面の簡単な説明】
【0015】
[0015] 本発明の本質と実施形態をより理解するために、以下の実施形態の説明を、以下の図面と共に参照すべきであり、図中、同じ参照番号は全図において対応する部分を指すものである。
【図1】[0016] 図1は、本発明の幾つかの実施形態によるクライアント‐サーバベースのネットワークシステムを示す図である。
【図2】[0017] 図2は、本発明の幾つかの実施形態による、クライアント‐サーバベースのネットワークシステムにおける例示的なサーバのブロック図である。
【図3】[0018] 図3は、本発明の幾つかの実施形態による、サーバと相互に作用する例示的なクライアントのブロック図である。
【図4】[0019] 図4は、本発明の幾つかの実施形態による、サーバにおけるグローバル履歴テーブルに含まれる情報を示す図である。
【図5】[0020] 図5は、本発明の幾つかの実施形態による、クライアントのローカル履歴テーブルに含まれる情報を示す図である。
【図6】[0021] 図6は、本発明の幾つかの実施形態による、サーバとクライアント間の例示的な同期インタラクションスキームを示す図である。
【図7A】[0022] 図7Aは、本発明の幾つかの実施形態による、サーバとクライアント間の同期開始インタラクションに含まれる情報を示す図である。
【図7B】[0022] 図7Bは、本発明の幾つかの実施形態による、サーバとクライアント間の同期開始インタラクションに含まれる情報を示す図である。
【図8A】[0023] 図8Aは、本発明の幾つかの実施形態による、サーバとクライアント間の主同期インタラクションに含まれる情報を示す図である。
【図8B】[0023] 図8Bは、本発明の幾つかの実施形態によるサーバとクライアント間の主同期インタラクションに含まれる情報を示す図である。
【図9A】[0024] 図9Aは、本発明の幾つかの実施形態による、サーバにおける、サーバアイテムとグローバル履歴テーブルとの関係を示す図である。
【図9B】[0025] 図9Bは、本発明の幾つかの実施形態による、クライアントにおける、クライアントアイテムとローカル/クライアント履歴テーブルとの関係を示す図である。
【図9C】[0026] 図9Cは、本発明の幾つかの実施形態による、サーバとクライアント間で同期可能である例示的なデータ形態を示す図である。
【図10A】[0027] 図10Aは、本発明の幾つかの実施形態による、主同期に続く同期開始の概念を説明する図である。
【図10B】[0027] 図10Bは、本発明の幾つかの実施形態による、主同期に続く同期開始の概念を説明する図である。
【図10W】[0027] 図10Wは、本発明の幾つかの実施形態による、主同期に続く同期開始の概念を説明する図である。
【図10X】[0027] 図10Xは、本発明の幾つかの実施形態による、主同期に続く同期開始の概念を説明する図である。
【図10C】[0028] 図10Cは、本発明の幾つかの実施形態による、通常の動作条件下での主同期の概念を説明する図である。
【図10D】[0028] 図10Dは、本発明の幾つかの実施形態による、通常の動作条件下での主同期の概念を説明する図である。
【図10Y】[0028] 図10Yは、本発明の幾つかの実施形態による、通常の動作条件下での主同期の概念を説明する図である。
【図10E】[0029] 図10Eは、本発明の幾つかの実施形態による、長時間の切断後の主同期の概念を説明する図である。
【図10F】[0029] 図10Fは、本発明の幾つかの実施形態による、長時間の切断後の主同期の概念を説明する図である。
【図10Z】[0029] 図10Zは、本発明の幾つかの実施形態による、長時間の切断後の主同期の概念を説明する図である。
【図11A】[0030] 図11Aは、本発明の幾つかの実施形態による、順方向同期時のサーバとクライアント間の例示的なインタラクションスキームを説明する図である。
【図11B】[0031] 図11Bは、本発明の幾つかの実施形態による、クライアントにおける例示的な順方向同期方法を説明するフローチャートである。
【図11C】[0032] 図11Cは、本発明の幾つかの実施形態による、サーバにおける例示的な順方向同期方法を説明するフローチャートである。
【図12A】[0033] 図12Aは、本発明の幾つかの実施形態による、逆方向同期時のサーバとクライアント間の例示的なインタラクションスキームを説明する図である。
【図12B】[0034] 図12Bは、本発明の幾つかの実施形態による、クライアントにおける例示的な逆方向同期方法を説明するフローチャートである。
【図12C】[0035] 図12Cは、本発明の幾つかの実施形態による、サーバにおける例示的な逆方向同期方法を説明するフローチャートである。
【図13A】[0036] 図13Aは、本発明の幾つかの実施形態による、クライアントとサーバ間のアップヒル同期の概念を説明する図である。
【図13B】[0036] 図13Bは、本発明の幾つかの実施形態による、クライアントとサーバ間のアップヒル同期の概念を説明する図である。
【図13C】[0036] 図13Cは、本発明の幾つかの実施形態による、クライアントとサーバ間のアップヒル同期の概念を説明する図である。
【図13D】[0036] 図13Dは、本発明の幾つかの実施形態による、クライアントとサーバ間のアップヒル同期の概念を説明する図である。
【図13X】[0036] 図13Xは、本発明の幾つかの実施形態による、クライアントとサーバ間のアップヒル同期の概念を説明する図である。
【図13Y】[0036] 図13Yは、本発明の幾つかの実施形態による、クライアントとサーバ間のアップヒル同期の概念を説明する図である。
【図13Z】[0036] 図13Zは、本発明の幾つかの実施形態による、クライアントとサーバ間のアップヒル同期の概念を説明する図である。
【図14A】[0037] 図14Aは、本発明の幾つかの実施形態による、アップヒル同期時のサーバとクライアント間の例示的なインタラクションスキームを説明する図である。
【図14B】[0038] 図14Bは、本発明の幾つかの実施形態による、クライアントにおける例示的なアップヒル同期方法を説明するフローチャートである。
【図14C】[0039] 図14Cは、本発明の幾つかの実施形態による、サーバにおける例示的なアップヒル同期方法を説明するフローチャートである。
【発明を実施するための形態】
【0016】
[0040] 本発明は、クライアント‐サーバシステムと、クライアントとサーバ間でのアイテムの、対応する同期方法およびシステムに関する。以下の開示には、クライアントキャッシュのプライミングと、クライアントとサーバ間のデータ交換が並列に生じて、同期済みデータがアクセス可能となる前にローカルキャッシュのプライミングが完了する必要性を解決することを可能にする同期方法およびシステムが記載される。記載される方法およびシステムは、データ同期を伴う任意のクライアント‐サーバアプリケーションに適用可能である。
【0017】
[0041] 図1は、例示的なクライアント‐サーバベースのネットワークシステムを概略的に示す。クライアント‐サーバベースのネットワークシステムは、サーバ102と、通信用のネットワーク104と、複数のクライアントデバイス106A〜Cとを含む。このシステムの通常の実施は、少なくとも1つのサーバと、少なくとも1つの通信ネットワークと、複数のクライアントデバイスとを有することを理解すべきである。異なる構成では、システムは、複数のサーバと、複数のネットワークと、複数のクライアントデバイスとを含んでもよい。
【0018】
[0042] 幾つかの実施形態では、サーバ102とクライアント106とを接続するネットワーク104は私的ネットワークでも公衆ネットワークでもよく、また、有線でも無線でもよく、データ交換を可能とするようにサーバ104とクライアント106間の通信を可能にする。幾つかの実施形態では、ネットワークはインターネットであってよい。他の実施形態では、通信ネットワークは私的ネットワークであるかまたはアクセスをあるユーザグループに制限するセキュリティを有してもよい。後者の場合、ネットワークはLANであってよい。ネットワーク104の他の実施形態はさらに、WiFiネットワークおよび/またはWiMaxネットワークを含みうる。ネットワーク104の別の実施形態は、セル式電話機およびスマートホンといったモバイルデバイスによるデータの送受信を可能にするセル式ネットワークであってもよい。このようなセル式ネットワークは、有料加入者のみがアクセスを有するので私的ネットワークと見なされうる。
【0019】
[0043] クライアントデバイス106は様々な形態をとりうる。幾つかの実施形態では、クライアントデバイスは、コンピュータサーバに通信するローカルコンピュータであってよい。他の実施形態では、クライアントデバイスは、携帯情報端末(PDA)、スマートホン、またはセル式電話機のいずれかであってよい。クライアントデバイスは、サーバ上でも動作可能なソフトウェアアプリケーションを動作しうるか、または、クライアントデバイスは、サーバ上で動作するアプリケーションバックエンドと協働するアプリケーションフロントエンドを動作しうる。サーバ102は、アプリケーションの管理、データ記憶要件、編成、および/または実行に関するオペレーションを行うことができる。この開示の目的のために、クライアント106およびサーバ102は共に、同期されるべきアプリケーションデータをその中に記憶可能なメモリを含む。サーバおよびクライアントのより詳細な説明を、図2および図3においてそれぞれ記載する。
【0020】
[0044] 図2は、図1を参照して説明したクライアント‐サーバベースのネットワークシステムにおける例示的なサーバのブロック図である。サーバ200は、通常、1つ以上の処理ユニット(CPU)202と、1つ以上のネットワークまたは他の通信インターフェース206と、メモリ205と、これらのコンポーネントを相互に接続するための1つ以上の通信バス204とを含む。メモリ205は、DRAM、SRAM、DDR RAM、若しくは他のランダムアクセス固体メモリデバイスといった高速ランダムアクセスメモリ、または、磁気ディスク記憶デバイス、光ディスク記憶デバイス、フラッシュメモリデバイス、若しくは他の不揮発性個体記憶デバイスといった不揮発性メモリを含む。メモリ205は、CPU202から離れて配置される1つ以上の記憶デバイスを任意選択的に含んでもよい。
【0021】
[0045] 幾つかの実施形態では、メモリ205は、オペレーティングシステム207と、通信モジュール208と、サーバアプリケーションモジュール209と、サーバ同期モジュール210と、データ構造270とを含む、プログラム、モジュール、およびデータ構造、または、これらのサブセットを記憶する。これらのコンポーネントの図示する編成は例示的であって、これらのコンポーネントに与えられた機能性の任意の代替の配置または編成を排除するものではないことに留意されたい。他の実施形態は、これらのコンポーネントに与えられた機能を任意の組み合わせに組み合わせてもよく、組み合わせにはこれらのコンポーネントのサブセットまたはスーパーセットも含まれる。このことは、任意のサーバまたはクライアントデバイスを参照して本明細書において説明する任意のおよびあらゆるソフトウェアコンポーネントについても当てはまることである。
【0022】
[0046] オペレーティングシステム207は、様々な基本的なシステムサービスを処理するための、および、ハードウェア依存タスクを行うための手順を含む。
【0023】
[0047] 通信モジュール208は、サーバアプリケーション209を他のサーバまたはクライアントデバイスにインターフェースを介して接続するために用いられる。通信モジュール208を用いたインターフェースを介する接続は、1つ以上の通信ネットワークインターフェース206(有線または無線)と、インターネット、他のワイドエリアネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク等といった1つ以上の通信ネットワークとによって達成される。
【0024】
[0048] アプリケーションモジュール209は、様々なクライアント駆動型またはサーバ駆動型アプリケーションを含む。アプリケーションがクライアント駆動型アプリケーションである場合、そのアプリケーションがサーバ上でアクティブであると、そのアプリケーション自体は、クライアントデバイスにおける対応アプリケーションから生じるコマンドによって駆動される。アプリケーションがサーバ駆動型アプリケーションである場合、そのアプリケーションがサーバ上でアクティブであると、サーバ上のそのアプリケーションが、クライアントデバイス上の対応アプリケーションを駆動する。幾つかの実施形態では、アプリケーションは、クライアントとサーバとによって同様に駆動されてよく、セル式電話機といったクライアントデバイスでのオペレーションのために構成および適応されてよく、また、サーバ同期モジュール210を含みうる。
【0025】
[0049] サーバ同期モジュール210は、クライアントおよびサーバ上で動作する、または、(電子メールクライアントおよびサーバアプリケーションの場合のように)クライアントとサーバ間で協働して動作する1つ以上のアプリケーションによって利用されうるデータの同期に用いられる。同期モジュール210は、単一のアプリケーションに固有の、または、2つ以上のアプリケーションに対して一般化が可能な同期設定を含みうる。一実施形態では、同期モジュール210は、ダウンヒル同期モジュール220と、アップヒル同期モジュール280と、同期制御290とを含む。これらのモジュールの機能は、クライアント上のそれらの機能の対応機能に対応し、対応機能は図3を参照して説明する。
【0026】
[0050] 同期制御290は、通信ネットワークへの接続性、未同期データの検出、またはデータ同期が行われる際にある他の条件に応じてデータ同期のオペレーションを制御するソフトウェアモジュールである。一実施形態では、サーバは、クライアントからの同期リクエストに応えることによって同期を開始するように構成されるが、その反対も可能でありうる。
【0027】
[0051] ダウンヒル同期モジュール220は、サーバからクライアントに、データと、サーバにおいて生じたデータ変更とを同期させる責任を負っている。換言すれば、このモジュールは、クライアントキャッシュをプライミングし、サーバにおけるデータ変更がクライアントに常駐するデータに確実に反映させる責任を負っている。一実施形態では、ダウンヒル同期は、順方向同期モジュールおよび逆方向同期モジュールと、他のアプリケーションに固有の任意の他の同期モジュールとによって実施される。
【0028】
[0052] 幾つかの実施形態では、順方向同期モジュール230は、サーバにおけるデータ変更をこれらの変更が時系列で生じている最中にモニタリングし、これらの変更を時系列でクライアントに報告する。つまり、順方向同期モジュールは、順方向の時系列で、すなわち、古い更新から新しい更新でクライアントデバイスにデータ更新をダウンロードする。
【0029】
[0053] 幾つかの実施形態では、逆方向同期モジュール240は、優先度またはユーザとの関連性の度合いの順で、既存のデータアイテムをクライアントにダウンロードする。幾つかの実施形態では、優先度は1つ以上の基準に基づいたデータの物理的な編成として定義されてよく、関連性は同期されるべきデータに対するユーザの関心レベルとして定義されてよい。したがって、優先度は、ユーザに対する関連性またはデータの関心レベルを定義する基準に基づいて設定されうる。例えば、特定のデータ更新の優先度または関連性は、同期されるデータのタイプ、データ変更が生じた時刻、または、データ若しくはデータ変更に対するユーザの関心を特徴付けうるデータまたはデータ変更に関連付けられる他の要素に応じて決定されうる。本発明の利点は、幾つかの実施形態において、高い優先度を有するデータアイテムが低い優先度を有するアイテムより先にクライアントにダウンロードされ、クライアントは部分的に同期されたデータを用いてオフラインモードで動作可能であるという点である。この利点により、先行技術とは対照的に、逆方向同期オペレーションがその完了前に中断されても(例えば通信機能停止となった場合、または、ユーザがクライアントデバイスをオフラインにする場合)、ユーザは、1つ以上のアプリケーションに対して最も高い優先度を有するローカルデータを用いて、クライアントデバイスをオフラインモードで依然として使用することが可能となる。幾つかの実施形態では、クライアントとサーバ間で通信が再設定されると、逆方向同期は、中断されたところから継続し、サーバは、逆方向同期が完了するまで、漸次、低い優先度/関連性のデータをダウンロードする。
【0030】
[0054] 幾つかの実施形態では、逆方向同期オペレーションのためのデータ優先度は、サーバ上に記憶されたオペレーションまたはデータ片の相対経過時間によって決定される。経過時間が短いアイテムほど、更新の優先度が高い。例えば、電子メールアプリケーションの文脈では、電子メールクライアントを有するポータブルデバイスのユーザは、サーバにおいて受信した最新の電子メールメッセージを、デバイスのオフライン使用で利用可能にすることを好む場合がある。この例では、最新のメッセージが最高優先度を有し、それによりこれらの最新メッセージが最初にクライアントデバイスに確実に同期される。他の実施形態では、最高優先度は、特定の送信者(例えばマネジャまたは配偶者)、または、特定の件名(例えば警告)に関連付けられた電子メールデータに割り当てられてもよい。このようにして、本発明の実施形態は、ポータブル電子デバイスのユーザに、ユーザの関心事項に最も関連性のあるまたは最高優先度を有するどのようなサーバデータでもオフライン使用に利用可能となることを可能にする。この優先度の概念は、次に限定されないが、写真、カレンダー、または連絡先情報といったデジタルメディアファイル、または、ドキュメントまたはスプレッドシートといったアプリケーションデータを含む、電子メール以外のアプリケーションのデータにも適用可能である。
【0031】
[0055] したがって、幾つかの実施形態では、サーバにおいて生じるデータ変更は、時系列(順方向同期の場合)と、優先度/関連性の順(逆方向同期の場合)の両方でクライアントデバイスに同期される。他の同期モジュール250も、他のアプリケーション用に存在してよく、これらのアプリケーション内のデータにカスタマイズされた設定を含みうる。
【0032】
[0056] 順方向同期および逆方向同期を用いる同じデータ同期機構が、次に限定されないが、イメージ、明白かつ別個の電子メールメッセージを含む電子メール会話、連絡先情報、およびカレンダー情報等を含む他のタイプのデータにも有用でありうる。幾つかの実施形態では、関連性または優先度は、次に限定されないが、編集時刻と、データおよびイメージの編集者と、メッセージの到着時刻と、メッセージの投稿者とを含む1つ以上の基準に基づいて設定されうる。
【0033】
[0057] アップヒル同期モジュール280は、クライアントにおいて生じたデータ変更をサーバに同期させる責任を負っている。サーバでは、アップヒル同期モジュール280は、クライアントのアップヒル同期モジュール(図3を参照して説明する)と相互に作用して、クライアントにおいて生じたデータ変更を取得し、このデータ変更がサーバにおけるデータに確実に反映されるようにする。
【0034】
[0058] データモジュール270は、サーバアプリケーションモジュール209内のアプリケーションによって用いられるデータファイルと、クライアントデバイスとの同期に用いられるデータとを含む。幾つかの実施形態では、データモジュール270は、グローバル履歴テーブル271と、クライアント固有データを含むクライアントデータ273と、アプリケーションデータ277のうち少なくとも1つを含みうる。
【0035】
[0059] グローバル履歴テーブル271は、サーバにおけるデータ変更に関する情報を含む。具体的には、グローバル履歴テーブル内の情報は、クライアントとの順方向同期に用いられうる。幾つかの実施形態では、グローバル履歴テーブル内の情報は時系列に記憶される。
【0036】
[0060] クライアントデータ273は、サーバと相互に作用する各クライアント、例えばクライアント1 272‐A〜クライアント「m」272‐Bに固有のデータを含む。各クライアントに対して記憶された固有データには、最後に処理されたサーバ履歴オペレーション識別情報(サーバ履歴opID)278と、逆方向同期領域275と、サーバによって受信確認された最後のクライアント履歴オペレーションID(クライアント履歴opID)274とが含まれる。キャッシュされたクライアントデータ276は、特定のクライアントに関連付けられた、データと、サーバ上のデータへの変更を含む一方で、他のクライアント固有データ279は、同期に用いられる他のデータ(例えば同期設定)を含む。
【0037】
[0061] サーバ上の各データアイテムは、一意の識別情報または逆方向同期トークン(BST)を有し、それにより、データを特定しかつ逆方向同期用の同期機構によって優先順位を決めることが可能となる。一意の識別情報によって確実に正しいデータが同期される。BSTは秩序正しく、したがって、逆方向同期のためのデータアイテムの優先度が設定されうること理解することが重要である。幾つかの実施形態では、一意の識別情報は、特定のデータアイテム(例えば電子メールメッセージ)が作成または受信されたタイムスタンプによって定義されてもよく、それにより、すべてのデータアイテムは時刻によって順序付けられうる。さらに他の実施形態では、各データアイテムのBSTは、他のパラメータと共に少なくとも1つのタイムスタンプを有しうる。これらのパラメータも優先度または関連性を決定するために用いられる。例えば、幾つかの実施形態は、日付とサイズに基づいて優先順位を決定する場合があり、この場合、日付が第一の基準として用いられ、サイズが第二の基準として用いられる。幾つかの実施形態では、タイムスタンプ、および、ラベル、サイズ、送信者等の他の情報を含む多数のパラメータを重み付けするおよび組み合わせるためのアルゴリズムが、逆方向同期のためのデータの順序を決定するために用いられうる。
【0038】
[0062] 逆方向同期領域275は、逆方向同期時にクライアントに同期されたデータの領域を示す。各逆方向同期領域は、2つの逆方向同期トークン(BST)を含む。これらの2つのBSTは、共に、クライアントに同期された、サーバにおけるデータの範囲の開始点と終了点を示す。したがって、1つのBSTが、同期された範囲における最初のデータアイテムを表し、第2のBSTが、同期された範囲における最後のデータアイテムを表す。逆方向同期領域におけるデータは、後続の逆方向同期では省略される。
【0039】
[0063] 最後に処理されたサーバ履歴オペレーション(SHO)ID278は、順方向同期においてクライアントに同期された最後のSHO IDである。この最後に処理されたSHO IDは、クライアントに最後に同期されたデータ変更を表す。これにより、サーバは、グローバル履歴テーブル271内のどのデータ変更がクライアントに同期されており、グローバル履歴テーブルにおいて維持する必要がなくなり除去可能であるのかを判断することができる。したがって、最後に処理されたSHO ID278は、順方向同期におけるグローバル履歴テーブルのサイズを編成ししかつ管理するために用いられる。
【0040】
[0064] サーバによって受信確認された最後のクライアント履歴オペレーション(CHO)ID274は、サーバに同期されたクライアントにおける最後のCHO IDを表す。このCHO IDは、最後の順方向同期においてサーバに同期されたクライアントにおける最後のデータ変更を表す。これは、さらに、サーバが次にクライアントに接続する際に次の順方向同期のための開始点の役割も果たす。SHO IDと同様に、CHO IDは一意で、クライアントと特別に関連付けられている。例えば、CHO IDは、クライアントにおける電子メールの作成、送信、または修正に関連付けられるタイムスタンプによって表されうる。
【0041】
[0065] 図3は、サーバと相互に作用する例示的なクライアント300のブロック図である。クライアント300は、通常、1つ以上の処理ユニット(CPU)302と、1つ以上のネットワークまたは他の通信インターフェース306と、メモリ305と、これらのコンポーネントを相互に接続するための1つ以上の通信バス304とを含む。通信バス304は、システムコンポーネント間の通信を相互に接続しかつ制御する回路(時にチップセットと呼ばれる)を含みうる。
【0042】
[0066] クライアントデバイス300は、ディスプレイ392およびユーザ入力デバイス394といった出力デバイスを有するユーザインターフェース390を含みうる。ディスプレイ392は、アクティブマトリクスディスプレイまたはタッチスクリーンディスプレイ等であってよく、ユーザ入力デバイス394は、例えば数字入力キーパッド、ソフトキー、タッチパッド、英数字入力キーパッド、またはタッチスクリーン等の任意の組み合わせを含みうる。メモリ305は高速ランダムアクセスメモリを含んでよく、また、さらに、1つ以上の磁気ディスク記憶デバイスといった不揮発性メモリ、中央処理演算ユニット302から離れて配置可能なフラッシュメモリといったポータブル記憶デバイスを含んでよい。幾つかの実施形態では、メモリ305は、オペレーティングシステム301と、通信モジュール303と、グラフィックスモジュール307と、メモリキャッシュ308と、クライアントアプリケーションモジュール310と、クライアント同期モジュール320と、データ380とを含む、プログラム、モジュール、およびデータ構造、またはこれらのサブセットを記憶しうる。
【0043】
[0067] オペレーティングシステム301は、様々な基本的なシステムサービスを処理するための、および、ハードウェア依存タスクを行うための手順を含む。
【0044】
[0068] 通信モジュール303は、1つ以上の通信ネットワークインターフェース306(有線または無線)と、インターネット、他のワイドエリアネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク、セル式ネットワーク等といった1つ以上の通信ネットワークとを介して、アプリケーション209をサーバに接続する。
【0045】
[0069] メモリキャッシュ308は、アクティブアプリケーションによるクイックアクセスのために一時的に情報を一時的に記憶する。記憶される情報の例としてはメタデータおよびアプリケーションに固有の他の情報が挙げられる。通常、アプリケーションが非アクティブになると、この情報は消去される。
【0046】
[0070] クライアントアプリケーションモジュール310は、クライアントデバイス300上で実行可能な1つ以上のアプリケーションを含む。これらのアプリケーション310のうちの幾つかは、サーバ200と相互に作用して通信、ユーザインターフェース管理、アプリケーションのカスタマイズ化、および、電子メール、カレンダー、携帯電話メール、メディアプレイヤ、またはドキュメント編集若しくはビューイングソフトウェア等を含む特定のクライアントアプリケーションの管理に関するタスクを行うように構成される。クライアントアプリケーションは、動作時、クライアントデバイスによって駆動される。
【0047】
[0071] クライアント同期モジュール320は、クライアントデバイスまたはサーバ上で独立して動作可能なアプリケーションのデータの同期のために用いられる。クライアント同期モジュール320は、単一のアプリケーションに固有の、または、2つ以上のアプリケーションに対して包括的な同期スキームを含みうる。一実施形態では、同期モジュール210は、ダウンヒル同期モジュール325と、アップヒル同期モジュール365と、同期制御375とを含む。これらのモジュールの機能は、サーバ上のそれらの機能の対応機能に対応する。
【0048】
[0072] 同期制御375は、通信ネットワークへの接続性、未同期データの検出、またはデータ同期が行われる際にある他の条件に応じてデータ同期のオペレーションを制御する。一実施形態では、クライアントは、サーバに対して同期リクエストを開始するように構成されるが、その反対も可能でありうる。
【0049】
[0073] ダウンヒル同期モジュール325は、サーバにおいて生じたクライアントデータ変更に同期させる責任を負っている。クライアントにおけるダウンヒル同期モジュール325は、(図2を参照して説明した)サーバにおけるその対応モジュールと共に作動して、サーバにおけるデータ変更が、クライアントにあるデータと確実に同期されるようにする。サーバにおける対応モジュールと同様に、ダウンヒル同期は、一実施形態において、順方向同期および逆方向同期を含む。図2を参照して説明したように、順方向同期モジュール330は、サーバにおけるデータ変更をこれらの変更が時系列で生じている最中にモニタリングし、これらの変更をクライアントに送信する。クライアントの逆方向同期モジュール340は、サーバにおけるデータ変更を、優先度の順でまたはデータ変更の関連性に基づいてモニタリングする。同様に、優先度の順および関連性の度合いは、サーバにおいて用いられた同様の所定基準に基づく。したがって、サーバにおけるデータ変更は、時系列と、優先度の順の両方でクライアントデバイスに同期されうる。他の同期モジュール350も、他のアプリケーション用に存在してよく、これらのアプリケーション内のデータにカスタマイズされた設定を含みうる。
【0050】
[0074] アップヒル同期モジュール365は、サーバにおけるその対応モジュールと同様に、クライアントにおいて生じたデータ変更をサーバに同期させる責任を負っている。クライアントでは、このアップヒル同期モジュール365は、サーバと相互に作用して、クライアントにおいて生じたデータ変更を送信し、かつ、サーバがサーバによって処理された最後のCHO IDをクライアントに送信して戻す場合に、同じ変更がサーバで確実に反映されるようにする。
【0051】
[0075] データモジュール380は、アプリケーションモジュール310内のアプリケーションによって用いられるデータファイルと、サーバとの同期に用いられるデータとを含む。幾つかの実施形態では、データモジュール380は、サーバとのデータ同期のための同期データ370と、キャッシュされたデータ382と、設定仕様384のうちの少なくとも1つを含みうる。
【0052】
[0076] 同期データ370は、ローカル/クライアント履歴テーブル374、次の逆方向同期トークン372、最上位の同期済みサーバ履歴オペレーション識別情報(SHO ID)378、および幾つかのアプリケーションに固有でありうる他の同期データ376といった固有のデータを含む。これらのデータは、特にサーバとのクライアントデバイスの同期に用いられる。
【0053】
[0077] ローカル/クライアント履歴テーブル374は、クライアントにおけるデータ変更に関する情報を含む。このテーブルにおける各エントリはCHO IDを有し、特定のデータオペレーションを表す。具体的には、ローカル/クライアント履歴テーブルにおける情報は、クライアントとのデータのアップヒル同期に用いられる。
【0054】
[0078] 次の逆方向同期トークン(BST)372は、次の逆方向同期の開始点をサーバに通知するために、クライアントから送信される次の同期トークンである。最上位の同期済みSHO ID378は、次の順方向同期の開始点をサーバに通知するために、クライアントから送信される。換言すれば、最上位の同期済みSHOは、クライアントに戻される次の変更セット(例えば最上位SHO ID378より大きいSHO IDを有する変更)における開始点を表す。
【0055】
[0079] 他のクライアント固有データ376は、包括的なアプリケーションにおける同期、または、特定のアプリケーションのために用いられうる。例えば、様々なアプリケーションが、それぞれのデータ同期のための様々な基準を有しうる。これらの様々な基準は、他のアプリケーションにおける同期に用いられる他のクライアント固有データとして記憶されうる。
【0056】
[0080] キャッシュされたデータ382は、クライアントに記憶されたデータを表す。これには各種アプリケーションに用いられるデータと、サーバに同期されるべきデータとが含まれうる。
【0057】
[0081] 設定仕様384は、クライアントデバイスに関する特定の設定情報を含む。この情報を用いて、同期、インタラクションのために、かつ、アプリケーションのアクティブ化およびオペレーションにおいてサーバまたは他のデバイスに対してクライアントを特定しうる。例えば、設定仕様に含まれる情報は、次に限定されないが、クライアント識別情報、クライアントのデバイス仕様、そのデータが同期されるべきアプリケーションの識別情報、および同期のための基準等を含みうる。
【0058】
[0082] 幾つかの実施形態では、データ同期は、1つ以上の独立した同期機構を含む。ダウンヒル同期は、サーバが、サーバにおける同期されていない変更をクライアントに送信する同期であり、アップヒル同期は、クライアントが、同期されていないデータ変更をクライアントからサーバに送信する同期である。幾つかの実施形態では、ダウンヒル同期は、逆方向同期および順方向同期を含む。逆方向同期は、クライアントと今までに同期されたことのないデータ(すなわち、クライアントに反映されていないサーバにおけるデータアイテム)を同期させる一方で、順方向同期は、変更オペレーション(すなわち、先の同期オペレーション以降に生じた進行中のデータ変更)を同期させる。これらの同期機構のそれぞれは、別個で、互いから独立していてよく、また、これらの同期機構は、必要に応じて直列にまたは同時に動作しうる。前にも述べたように、このデータ同期の概念は、電子メール会話、各電子メール会話に含まれる個々のメッセージ、および関連するデータのセット(例えば、イメージ、ドキュメント)に関する同期にも同様に適用可能である。
【0059】
[0083] 図4は、サーバにおけるグローバル履歴テーブル401に含まれる情報を示す図である。グローバル履歴テーブル401は、サーバにおけるデータへの変更を示すエントリを含み、順方向同期に用いられる。幾つかの実施形態では、サーバにおけるデータへの各変更402は、サーバ履歴オペレーション識別情報(SHO ID)として知られている一意の識別情報を有する。一実施形態では、サーバデータ変更402A〜D(1番目からn番目のサーバデータ変更に対応する)は、最も新しい変更がテーブルの最上位で最も古い変更が最下位にあって時系列に順序付けられうる。したがって、本実施形態では、順序付けは変更オペレーションの発生時刻によって決定される。変更オペレーションの、優先度によって、関連性によって、およびカテゴリまたはタイプによって等、様々な方法での順序付けも可能である。順方向同期時、サーバにおける変更オペレーションは、クライアント履歴テーブルにおける順序に応じてサーバに送信される。
【0060】
[0084] 図5は、クライアントのローカル履歴テーブルに含まれる情報を示す図である。ローカル/クライアント履歴テーブル501は、クライアントにおけるデータへの変更を含み、アップヒル同期に用いられる。各クライアントデータ変更502は、クライアント履歴オペレーション識別情報(CHO ID)として知られる一意の識別情報を有する。一実施形態では、クライアントデータ変更502A〜D(1番目からn番目のクライアントデータ変更に対応する)は、最も新しい変更がテーブルの最上位で最も古い変更が最下位にあって時系列に順序付けられうる。サーバにおける対応グローバル履歴テーブル401と同様に、クライアント履歴テーブルにおけるアイテムの順序付けは、変更オペレーションの関連性、優先度、およびカテゴリ等に基づいてといったように異なって並べられうる。アップヒル同期時、クライアントは、オペレーションが並べられた順序でクライアントに新しい変更を送信する。
【0061】
[0085] 図6は、サーバ602とクライアント604間の例示的な同期インタラクションスキーム600を示す図である。同期インタラクションスキームの幾つかの実施形態では、同期開始ハンドシェイク621がサーバ602とクライアント604間で行われ、ここでは主同期ハンドシェイク631と表される実際のデータ同期プロセスが始められる。同期開始ハンドシェイク621は、最初のデータ同期より先に、または、クライアント604がサーバ602と通信しなかった長時間(例えば、通信ネットワークの圏外、クライアントデバイスの電源が落とされている、クライアントにおけるアプリケーションが終了される、または、デバイスまたはサーバが通信ネットワークから切断される)後に発生しうる。
【0062】
[0086] 同期開始ハンドシェイク621は、データ同期の開始点を設定する役割を果たす。各同期開始ハンドシェイクは、リクエスト611とレスポンス612を有する。幾つかの実施形態では、リクエスト611はクライアントから出され、サーバはリクエストを受信すると、レスポンス612を送信する。なお、同期開始は、本開示において提示されているように主同期の一部として組み込まれても、完全になくてもよい。さらに、リクエストはクライアントではなくサーバから出されてもよい。
【0063】
[0087] 主同期ハンドシェイク631は、サーバにおいて同期のためのデータ範囲が設定された後に発生する。同期開始ハンドシェイクと同様に、各主同期は、クライアントから送信されるリクエスト613によって開始する。サーバは、リクエスト613を受信後に、レスポンス615を送信する。幾つかの実施形態では、主同期リクエスト613は、サーバに同期されるべき、クライアントからのデータ変更を含み、主同期レスポンス615は、クライアントに同期されるべきサーバからの、サーバにおけるデータおよび変更オペレーションを含む。主同期は、長い切断がある場合またはプログラムが終わると終了する(617)。
【0064】
[0088] 図7Aおよび図7Bは、サーバとクライアント間の同期開始ハンドシェイクに含まれる情報を示す図である。記載される情報は、ダウンヒル同期(順方向および逆方向同期)およびアップヒル同期用に含まれる情報を含む。図7Aは、同期開始リクエスト710の一例である。同期開始リクエスト710に含まれる情報は、クライアントID7111と、最後の逆方向同期領域712と、他のアプリケーション固有データ713とを含みうる。
【0065】
[0089] クライアントID711は、サーバに対してクライアントを特定し、それにより、サーバは適合するクライアントに対応する情報を検索することができる。最後の逆方向同期領域712は、逆方向同期においてクライアントに最後に同期されたサーバからの最後のデータ範囲を含む。逆方向同期領域712は、そのデータ範囲の始まりと終わりを画定するために2つの逆方向同期トークン(BST)を含む。各BSTは、サーバにおける一意のデータを一意に特定する。同期が行われたことがない場合(例えば、最初の同期の試み)、クライアントはデータ範囲を有さないことになる。他の場合(例えば長時間の切断後)では2つのBSTが存在する。他のアプリケーション固有データ713は、同期のための特定の設定情報を含みうる。例えばどのアイテムが最初に同期されるかに関する優先度情報、特定のデータ、オブジェクト、またはアイテムの同期用のフィルタ、および、同期のための任意の他の基準が含まれてよい。設定情報は、アプリケーションに固有でありうる。
【0066】
[0090] 図7Bは、クライアントにサーバによって送信される、同期開始リクエスト710を受信確認する同期開始レスポンス760の図である。同期開始レスポンス760に含まれる情報には、サーバによって受信確認された最後のクライアント履歴オペレーション識別情報761と、最上位のサーバ履歴オペレーション識別情報762と、最上位の逆方向同期トークン763と、他のアプリケーション固有データ764とが含まれうる。
【0067】
[0091] サーバによって受信確認された最後のクライアント履歴オペレーション識別情報(CHO ID)761は、最後のアップヒル同期において、サーバによって受信確認されたまたはサーバに同期された、クライアントからの最後のデータ変更を特定する。このCHO IDの目的は、次のアップヒル同期用の新しい範囲の決定においてクライアントを支援することである。
【0068】
[0092] 最上位のサーバ履歴オペレーション識別情報(SHO ID)762は、直近のサーバデータ変更オペレーションを表し、順方向同期のための次のSHO IDの役割も果たす。最上位の逆方向同期トークン(BST)763は、クライアントに同期されていない、サーバにおける最高優先度のデータ、オブジェクト、アイテム、またはデータ変更を表す。これはさらに、次の逆方向同期において、同期のための最初のアイテムである。幾つかの実施形態では、同期のためのイベント/データ変更の優先度または関連性は、データ変更のリーセンシー(すなわち発生時刻)、データ変更に関連付けられるアイテムのステータス(例えば、電子メールアプリケーションにおける新しいメッセージは、連絡先更新よりも高いステータス/優先度を有しうる)、および、データ変更に関連付けられるアイテムに関連付けられるラベルまたはタグ(例えば、幾つかの実施形態において、アイテムは「重要」、「至急」、または「常にダウンロード」に対して設定された関連付けられるラベルを有しうる)、または、これらのまたは同様の要素の組み合わせに基づいてよい。他の固有データ764は、特定のアプリケーションに関連付けられたデータの同期のための設定情報を含みうる。
【0069】
[0093] 図8Aおよび図8Bは、サーバとクライアント間の主同期ハンドシェイクに含まれる情報を示す図である。図8Aは、クライアントによってサーバに送信される主同期リクエスト810の図である。幾つかの実施形態では、主同期ハンドシェイクは、同期開始ハンドシェイク後にデータ同期のための情報範囲が設定された直後に発生する。主同期ハンドシェイクは、クライアントとサーバが接続されている限り、同期開始ハンドシェイクが不要となるよう無期限に繰り返されうる。一実施形態では、各主同期リクエスト810は、クライアントID811と、クライアントによって処理された最後のサーバ履歴オペレーション(SHO)ID812と、サーバに同期させるクライアントデータ変更813と、次の逆方向同期トークン(BST)814と、他のアプリケーション固有データとを含む。
【0070】
[0094] クライアントID811を用いて、データ同期のためのサーバにおける対応データセットを特定する。クライアントによって処理された最後のSHO ID812は、クライアントに同期された最後のデータ変更を特定し、クライアントとの順方向同期のための、グローバル履歴テーブルにおける、次のサーバデータ変更セットの決定に役立つ。
【0071】
[0095] サーバに同期されるクライアントデータ変更813も、クライアントからサーバへの主同期リクエストにて送信される。幾つかの実施形態では、最大数が、アップヒル同期においてサーバに送信されるクライアントデータ変更の数を制限して、同期にかかる時間を短縮する。
【0072】
[0096] 次のBST814は、次の逆方向同期が開始すべき場所を表す。長時間の切断がある場合を除いて、逆方向同期はある時点から開始し、すべての関連データが同期されるまで1つの方向において高い優先度から低い優先度で進む。換言すれば、逆方向同期は、ある特定の時点から開始して、サーバにあるデータアイテムセットを同期させることに重点を置いている。したがって、次のBST814は、通常、同期済みの前に送信された次のBST814よりも優先度が低い。しかし、サーバから長時間切断されていた後に同期が再開する場合はこれは当てはまらず、次のBST814は再接続時に優先度が最も高いデータとなる。これは、該次のBST814は、同期が開始する特定の一意の時点において優先度が最も高いデータアイテムを表すからである。したがって、主同期ハンドシェイクは中断されることなく繰り返される限り、逆方向同期は1つの方向で進み、また、新しい開始点を表す次のBST814のそれぞれは、それよりも前に送信されたすべての次のBST814よりも優先度は低い。逆方向同期が一旦終了すると、クライアントとサーバが切断されてふたたび再接続される場合を除いて、逆方向同期は再開されることはない。他のアプリケーション固有データは、1つ以上のアプリケーションに固有の同期のための設定情報を含みうる。
【0073】
[0097] 図8Bは、主同期リクエスト810に応えてサーバからクライアントに送信される主同期レスポンス860の図である。この主同期レスポンス860に含まれる情報には、新しい次のBST861と、逆方向同期のためのアイテムリスト862と、次の最上位SHO ID863と、順方向同期のためのSHOリスト868と、サーバによって処理された最後のCHO ID865と、更なる未同期の変更があるか否かを示すインジケータ866と、他のアプリケーション固有データ867とが含まれうる。
【0074】
[0098] 逆方向同期のためのアイテムリスト862は、現在の逆方向同期において同期のためにクライアントに送信された未同期サーバデータアイテムのリストを含む。このアイテムリストは、最高優先度から最低優先度の順にあり、また、データ同期にかかる時間を最小限にするよう最大数に制限されうる。幾つかの実施形態では、これらのアイテムは、サーバにおいて並べられかつ順序付けられ、他の実施形態では、これらのアイテムの順序付けは、アイテムがキューされクライアントに送信される際にリアルタイムで決定される。
【0075】
[0099] 幾つかの実施形態では、新しい次のBST861は、逆方向同期のためのリストアイテム862における最後のアイテムの後の、次の最高優先度を有する未同期データ、オブジェクト、アイテム、または変更を示す。リスト862における全データがサーバからクライアントに正常に同期されたと仮定すると、この新しい次のBST861は次の逆方向同期の始まりを示す。この新しい次のBST861は、次の逆方向同期のための次の未同期データ範囲の始まりを特定するために、クライアントがサーバに返信するための提案BSTである。長い切断の場合、現在の逆方向同期において全データが正常に同期されたと仮定すると、クライアントは、再接続された際にこの新しい次のBST861を送信しうる。しかし、現在の逆方向同期が中断されて、全データが完全に同期されたわけではない場合、クライアントは、サーバが適切な開始点を決定する代わりに、クライアントによって正常に処理された(またはサーバに正常に同期された)最後のBSTを、サーバに送信するオプションを有する。
【0076】
[00100] 順方向同期のためのサーバ履歴オペレーション(SHO)リスト868は、最後の同期以降にサーバデータに対して行われたオペレーションのリストである。このリストは、データに対して行われた変更およびオペレーションを表す。幾つかの実施形態では、これらの変更およびオペレーションは、クライアントに前に同期されたデータへの変更およびオペレーション、新しいデータの受信または作成、または、クライアントに同期されていないデータへの変更およびオペレーション等を示しうる。一実施形態では、これらの変更オペレーションは、データ自体からは別個に特定され、それにより、変更またはオペレーションだけがクライアントに、データとは独立して、同期されることが可能となる。別の実施形態では、変更およびオペレーションを含むデータが同期のために選択されうる。幾つかの実施形態では、このSHOリストは、サーバにおいて並べられかつ順序付けられ、他の実施形態では、アイテムがキューされクライアントに送信される際にリアルタイムで決定される。
【0077】
[00101] 順方向同期のための新しい最上位の同期済みSHO ID863は、クライアントに同期されるデータ変更を表すSHO IDのリスト868がサーバからクライアントに正常に順方向同期されたと仮定すると、クライアントがサーバとの順方向同期が完了しているとみなす、グローバル履歴テーブルにおける最上位SHO IDを表す。幾つかの実施形態では、この新しい最上位の同期済みSHO ID863は、クライアントに実際に同期されたグローバル履歴テーブルにおけるデータ変更でありうる。他の実施形態では、この新しい最上位の同期済みSHO ID863は、実際にはクライアントに同期されるデータ変更の範囲の終わりを示すに過ぎないグローバル履歴におけるデータ変更でありうるが、実際にはクライアントに順方向同期されない。
【0078】
[00102] この順方向同期の正常完了後、この新しい最上位SHO ID863は、クライアントからサーバに、主同期リクエストにおける処理済みの最上位SHO ID812として返信される。順方向同期が中断されて完了するまで行われなかった場合、クライアントは、次の順方向同期の適切な開始点の決定のために、正常に同期されているSHO IDリスト868における最上位SHO IDを返信する。この機構の論理的根拠は、クライアントが、クライアントに無関係と既に決定されているオペレーションをリクエストすることを防止することにある。
【0079】
[00103] 長い切断の場合、現在の順方向同期において全変更オペレーションが正常に同期されたと仮定すると、クライアントは、再接続された際にこの新しいSHO IDを送信しうる。順方向同期では、同期が最初に開始された後に変更したものが同期されることを理解すべきである。順方向同期は、逆方向同期のようには終了せず、また、順方向同期は、同期が開始された後に受信または作成されたデータまたは新しいデータへの変更を同期させる。
【0080】
[00104] 本発明の1つの優れた態様は、逆方向同期と順方向同期とを同時に実施する能力である。この実施によって、データアイテムとデータアイテムへの変更とが、時間において遡ること(逆方向同期)および時間において進むこと(順方向同期)の両方において同時に同期されて、同期プロセスを迅速化し、また、優先度の高いあらゆるデータアイテムおよびデータアイテムへの変更を確実にタイムリーに同期させることが可能となる。
【0081】
[00105] サーバによって処理された最後のCHO ID865は、サーバにおいて同期された最後のクライアントデータ変更のCHO IDである。受信すると、CHO ID865は、次のアップヒル同期を開始するためにクライアント履歴テーブルにおける次の最上位CHO IDから開始するようにクライアントに通知する。別の実施形態では、上述したように、この次の最上位CHO IDはサーバからクライアントに送信されるので、クライアントからの全データ変更がサーバに同期されている場合は、この次の最上位CHO IDは代わりに直接送信されうる。同様に、クライアントデータ変更の最大数を用いて、クライアントからサーバに送信されるアイテム数を制限してデータ同期にかかる時間を最小限にしうる。
【0082】
[00106] インジケータ866がクライアントに送信されて、未同期でかつ現在の同期に含まれていないサーバにおけるデータ変更があるか否かが示される。幾つかの実施形態では、未同期アイテムが残っている場合、クライアントからの主同期リクエストから始められる主同期プロセスは再びすぐに繰り返される。同期のためのアイテムが残っていない場合、クライアントとサーバは共に次の主同期が発生するまでスタンバイモードに入る。
【0083】
[00107] 他のアプリケーション固有データ867は、特定のアプリケーションにおける同期に用いられるデータを含みうる。
【0084】
[00108] 図9Aおよび図9Bは、サーバおよびクライアントにおける、様々なデータアイテムリストと、対応する履歴テーブルとの関係をそれぞれ示す図である。図9Aは、サーバデータ910のリストと対応するグローバル履歴テーブル920の図である。サーバデータ910は、少なくともその一部が、特定のクライアントに記憶されたデータに対応するデータリストを表す。
【0085】
[00109] サーバデータリストにおける各データには、一意の識別情報(例えば逆方向同期トークン(BST))が関連付けられており、同じBST IDを有するデータは2つとしてない。BSTは、一実施形態では日付/タイムスタンプと同じであってよいが、別の実施形態ではBSTは別に定義されてもよい。図では、各BSTは、アルファベットによって特定され(例えば、アイテムa、アイテムb等)、それぞれ、データを表す。データは、次に限定されないが、テキスト、メディア、グラフィックスを含む任意のアプリケーションに関連してよい。幾つかの実施形態では、電子メールメッセージ、連絡先情報、カレンダー情報等といった様々なタイプのデータを含む1つのデータリストがあってよい。他の実施形態では、1つの異なるタイプのデータをそれぞれ表す様々なリストがあってよい。一実施形態では、全データについて、データに対する全変更を記録する1つのグローバル履歴テーブルがある。他の実施形態では、互いに論理的に仕分けられる様々なデータのための様々なグローバル履歴テーブルがあってよい。換言すれば、1つのパーティションにおけるデータは同じグローバル履歴テーブルを有し、第2のパーティションにおけるデータは違うグローバル履歴テーブルを有することになる。幾つかの実施形態では、データは、データタイプに基づいて異なって仕分けられうる。
【0086】
[00110] サーバデータ910は、優先度、リーセンシー、関連性、またはカテゴリ等によって任意の順序に並べられうる。例えば、優先度による配列は、データアイテムは1つ以上に基準に基づいて順位付けされていることを意味する。一実施形態では、優先度による配列は、より最近のタイムスタンプを有するデータが古いタイムスタンプを有するデータよりも高く順位付けられるリーセンシーによる配列と似ている。例えば、より最近に受信または作成された電子メールメッセージは、古いメッセージよりも高い優先度を有する。関連性は、クライアントデバイスのユーザによってより望まれるアイテムを意味しうる。例えば、電子メールの文脈では、未読メッセージ、過去1週間内に受信したメッセージ、または、特定の話題に関するメッセージが他人よりもユーザにより関連がありうる。カテゴリは、同じアプリケーションに対してであろうと異なるアプリケーションに対してであろうと、次に限定されないが電子メール情報、カレンダー情報、連絡先情報等といったカテゴリを含む様々なデータグループが同期される前に順位付けられうることを意味する。
【0087】
[00111] グローバル履歴テーブル290は、サーバデータ910に対して行われたサーバ履歴オペレーション(SHO)の履歴レコードに対応するエントリを含む。グローバル履歴テーブル920における各SHOは、一意の識別情報を有する。SHO IDは、オペレーションの発生時刻に基づいて、または、特定のルールセットに従って割り当てられうる。データへの変更は、通常、同じデータへの連続した変更が適切に特定できるように時刻に対応する。順方向同期では、データへの変更を処理する様々な方法がある。幾つかの実施形態では、時間において前に進むデータへの変更は個別に処理される。この実施には、関連する全変更を、これらの変更が発生する最中に時系列に処理する必要がある。別の実施形態では、変更を有する全データアイテムのリストが維持され、これらのデータアイテムへの変更は、対応する変更を有するアイテムのリストをサーバから送信することによって、または、そのアイテムのリストへの変更のリストを送信することによって完全に置き換えられうる。アイテムのリストへの変更のリストが送信される場合、互いに関連する変更もそれらの変更が発生する最中に時系列に処理されるべきである。
【0088】
[00112] 説明のために、グローバル履歴テーブル920におけるオペレーションとサーバデータ910との関係を、電子メールアプリケーションの文脈において説明する。例えば、SHO921は、サーバ上の電子メールメッセージであるアイテムdにラベルが追加されることを示す。同様に、SHO922およびSHO928も、それぞれサーバ上の電子メールメッセージであるアイテムfおよびgにラベルが追加されたことを示す。SHO923およびSHO927は、それぞれアイテムjおよびkによって表されるサーバ上の電子メールメッセージに星印が追加されたことを示す。さらに、SHO925、926における新しいメッセージの受信、および、SHO929におけるサーバでの招待の受信は、それぞれ、サーバ上の新しいアイテムo、p、およびqを指す。アイテムmといったサーバ上のメッセージが編集されると、このメッセージへの変更は、SHO924に記録される。オペレーションは、同期されている同期されていないに関わらず、全データに適用される。オペレーションは、データに対して行われたユーザ変更(例えば、ラベルを追加する、星印を追加する等)、または、固有のシステム変更(例えば、新しく受信した電子メール、アーカイブされた電子メールメッセージ、フィルタリングルール等)も表しうる。
【0089】
[00113] 図9Bは、クライアントデータ930のリストとローカル/クライアント履歴テーブル940の図である。クライアントデータリスト930における各データは、一意の識別情報(例えばトークンID)を有する。説明のために、クライアントデータリスト930にある各アイテムには番号が付される(例えば、アイテム2020、アイテム2021等)。しかし、実際の実施では、クライアントデータ930は、対応するデータが同一であり(例えば、同じBST ID)かつ同じ情報を含む、サーバデータ910における少なくともサブセットのデータに対応する。同期されたクライアントデータ930は、全オペレーションを含めて、通常、サーバ上のデータと全く同じ複製である。クライアントのメモリ容量は、大抵の場合、サーバのメモリ容量ほど大きくはないので、クライアントデータ930のリストは、正常に同期された後は、サーバデータ910の一部と少なくとも同一である。
【0090】
[00114] 一実施形態では、クライアントデバイスにおけるクライアントデータの順序付けは任意でどのような順序であってもよい。この実施形態は、クライアントデータがサーバに直接同期されるのではなく、データ変更または変更オペレーションがサーバに同期される場合である。変更オペレーションはデータよりも包括的である。これは、データ変更は、次に限定されないがデータに適用されるデータ作成、データ削除、データ修正等のオペレーションが含まれるからである。したがって、クライアントデータ930は、データ同期のために順序付けられなくてよく、また、優先度、リーセンシー、ラベル、関連性、または任意の他の設定可能なカテゴリに基づいて並べられてもよい。
【0091】
[00115] クライアント履歴テーブル940は、クライアントデータ930の少なくとも部分に対して行われたクライアント履歴オペレーション(CHO)に関するレコードを維持する。クライアントにおけるCHOは、サーバにおけるSHOとは独立しており、CHOは、独立したオペレーションを示し、また、互いに直接的には同期されない。しかし、しかし、データへのCHOおよびSHOの効果は、ダウンヒルおよびアップヒル同期によって同期される。
【0092】
[00116] 説明のために、クライアント履歴テーブル940におけるオペレーションとクライアントデータ930との関係を、電子メールアプリケーションの文脈において説明する。例えば、クライアント履歴テーブルにおけるCHO942はクライアントにおいて削除されたアイテム2007を指し、CHO943はアイテム2011に対応する、クライアントでの新しい招待の受信を表し、CHO944はユーザによって星印が付けられたクライアントにおけるメッセージまたはアイテム2018を表し、CHO945および948を介してラベルがクライアントにおけるアイテム2017および2016にそれぞれ追加され、CHO946および947は、クライアントにおけるアイテム2020および2021として、新しいメッセージの受信をそれぞれ指す。
【0093】
[00117] サーバおよびクライアントの両方での、データの一意の識別情報およびデータ変更またはオペレーションの順序付けは、同期のために重要である。識別情報および順序付けは、データ同期が停止しかつデータ同期が再開されるべき特定の範囲を区別するために重要である。例えば、サーバデータ910は、高い優先度を有するデータ(例えばアイテムs、r、q)が低い優先度のデータ(例えばアイテムn、o、p)よりも先に列挙される優先度の順で並べられる。同様に、グローバル履歴テーブル920におけるSHOおよびクライアント履歴テーブル940におけるCHOは共に、各オペレーションが行われた時刻の時系列で、後のオペレーションが先のオペレーションより優先されて並べられる。識別情報および順序は、データ同期が停止しかつ再開されるときはいつでも同期のために次の未同期情報範囲を特定するために重要である。
【0094】
[00118] 図9Cは、サーバとクライアント間で同期可能な例示的なデータを示す。図9Cに示すデータ951は、メタデータ960とコンテンツ964とを有する。メタデータ960は、次に限定されないが一意の識別子961と、データタイプ情報962と、他の形態の識別情報963とを含む。説明のために、データ951は、電子メールメッセージ、電子メール会話、連絡先、カレンダーエントリ、またはJPGファイル、TIFFファイル、テキストファイル等といった任意の他のデータオブジェクトまたはデータファイルであってよい。一実施形態では、一意の識別子961は、データが作成または修正されたときのタイムスタンプ、または、図9Aおよび図9Bにおいて記載されたようにBST IDと同じであってもよい。
【0095】
[00119] データはさらに、そのデータタイプ識別情報962に基づいてカテゴリ化され、データ同期のプロセスにおいて優先順位が決められるまたは順序付けられる。例えば、データは、連絡先エントリ、メッセージ、カレンダーエントリ、ドキュメント、テキストファイル、イメージファイル等として分類されうる。同様に、ラベル、属性、フラグ等といった他の識別情報963もデータ同期において優先順位を決めるまたは順序付けるための追加の条件として用いられうる。例示説明のために、電子メールの文脈において、ラベルは、システムまたはユーザによって割り当てられ、また、次に限定されないが、全未読メッセージ、ゴミ箱、送信メッセージ、または、仕事、レジャー、スポーツ等といった他のユーザ定義のカテゴリを含みうる。
【0096】
[00120] コンテンツ964は、データの残りの部分を形成し、電子メールの場合、コンテンツはメッセージの本文であってよい。連絡先の場合、コンテンツは名前、電話番号、住所、電子メールアドレス等の連絡先における様々なフィールドを含みうる。カレンダーエントリの場合、コンテンツは予約時間、予約件名、および当該予約に関連付けられた任意の情報を含みうる。
【0097】
[00121] 上述したように、データ同期は、幾つかの実施形態では、3つの異なるプロセスとして説明されうる。各プロセスは別個で互いに独立して動作する。1つの好適な実施形態では、これらのプロセスは、データ同期の速度を増加すべく同時に動作する。他の実施形態では、各プロセスは、一度に1つが、一度に2つが、必要に応じて任意の並びで、優先度の順にまたは任意の適切な設定で別個のアクティブにされうる。これらのプロセスのそれぞれを以下に別個に説明するが、これらの3つを全て組み合わせて、図7および図8における同期開始および主同期ハンドシェイクの文脈において記載されるように一緒に適用可能であることを理解すべきである。
【0098】
[00122] 順方向および逆方向同期の両方を組み込むダウンヒル同期は、図10A〜図10Fに記載される。逆方向同期の個別のプロセスは、図11A〜図11Cに記載され、順方向同期の個別のプロセスは、図12A〜図12Cに記載される。アップヒル同期は、図13および図14に記載される。例示説明のために、同期プロセスは、電子メールアプリケーションの文脈において説明されるが、他のアプリケーションにも同様に適用可能でありうることを理解すべきである。
【0099】
[00123] 図10A〜図10B、図10W、および図10Xは、サーバとクライアントとの間のダウンヒル同期の開始を記載する。図10Aは、長時間の切断後またはサーバとクライアントとの間で同期が行われたことがない場合に、データ同期が再開する前の状態にあるサーバデータ1010Aのリストとグローバル履歴テーブル1010Bを示す。点線は、同期開始の始まりにおけるまたは最後の主同期が発生した後の状態を表す。本図では、主同期とは、逆方向および順方向同期が共に行われ、データがサーバからクライアントに同期される場合である。他の実施形態では、主同期は、アップヒル同期の同時のオペレーションも含みうる。
【0100】
[00124] サーバデータ1010Aのリストにおける各アイテムは、一意の逆方向同期トークン(BST)を有する。一実施形態では、サーバデータ1010Aのリストは、最高優先度が最上位で(例えばBSTn)、最低優先度が最下位(例えばBSTa)にくる優先度の順で並べられる。データを優先度に仕分けることは、データ同期の開始より先にまたはデータ同期時に行われうる。データは高い優先度から低い優先度の順で同期されて送信される。一実施形態では、優先度の順でのデータの逆方向同期は、開始時点において同期されていなかった全データが正常に同期されるまで1つの方向に進む。本実施形態における逆方向同期は、アプリケーションが終了するまたは長い切断があった場合を除いて、同期点後に追加された同期済みデータには戻らない。本実施形態では、逆方向同期は、データに対して行われた変更オペレーションは同期させない。さらに、逆方向同期の優先度の順序は、関連性、リーセンシー、または他の基準に基づいて並べられうる。
【0101】
[00125] グローバル履歴テーブル1010Bにおける各データ変更オペレーションは、一意の識別情報(SHO ID)を有する。幾つかの実施形態では、グローバル履歴テーブル1010BにおけるSHOは、各SHOが発生した時刻に応じて時系列に並べられ、したがって、古いオペレーションは最下位に登場し、新しいオペレーションは最上位に登場する。図では、最も古いオペレーションはSHO1で、最も新しいオペレーションはSHO18である。一実施形態では、SHOによって表されるこれらの変更オペレーションは、グローバル履歴テーブル1010Bにおいて並べられた順序と同じ順序で順方向同期される。
【0102】
[00126] 説明のために、一実施形態では、データ同期(例えば主同期)時に、逆方向同期および順方向同期が共に同時に発生する。今までにデータ同期されたことがなければ、逆方向同期は最高優先度のBST(例えばBSTn)から開始し、最低優先度(例えばBSTa)に進み、順方向同期はSHO1から開始し時系列でSHO2、…、SHO18に進む。幾つかの実施形態では、最大数のデータおよびSHOが毎回送信される。
【0103】
[00127] 図10Wは、データ同期を開始するための同期開始ハンドシェイク時のサーバとクライアント間のハンドシェイクを示す。アップヒル同期に関する情報の部分を除いた図7A、図7Bにおける記載と同様である。最初の同期開始ハンドシェイクでは、クライアントは、図10Wのリクエスト1047内のクライアントIDしか送信しない。サーバは、最上位BST(例えばBSTn)とグローバル履歴テーブルにおける最上位SHO(例えばSHO18)とを含むレスポンス1048によって応答する。図10Xによって示すように後続の主同期ハンドシェイクでは、クライアントリクエスト1051は、クライアントIDと、同期開始レスポンス1048から受信したサーバにおける最上位BST(例えばBSTn)および最上位SHO(例えばSHO18)とを含む。サーバは、逆方向同期のためのアイテムBSTn、m、l、kを含むが、順方向同期のためのアイテムは含まないレスポンス1052によって応答する。両方の同期において戻されるアイテム数も、同じまたは異なる所定の最大数によって制限されうる。レスポンス1052はさらに、次の主同期のための、新しい次のBST(例えばBST J)と最上位の処理済みSHO ID(例えば、SHO18)とを含む。
【0104】
[00128] 図10Bは、最初の主同期後のサーバにおけるデータおよびグローバル履歴テーブルの状態を示す。サーバBSTn、m、l、k、変更オペレーションSHO18およびSHO18より先の他の変更オペレーションは網掛けされ、これらはクライアントにもはや同期される必要がないことを示す。幾つかの実施形態では、サーバは、全データ同期のレコードを維持する。このレコードは、サーバデータリストおよびグローバル履歴テーブルの一部として維持されても、別個に記憶されてもよい。クライアントと正常に同期された、サーバにおけるデータの範囲とサーバにおける変更オペレーションの範囲とを追跡することによって、これらの同じデータ範囲と変更オペレーション範囲は、将来のデータ同期において遭遇した場合に省略される。全データは、ユーザによって削除されるまで記憶されるが、一実施形態では、グローバル履歴テーブルにおける1アイテムは、既存の全クライアントに同期された後に削除されうる。これらの同期済みSHOのオペレーションは、クライアントのローカルデータに組み込まれ、したがって、将来の同期には不要となる。
【0105】
[00129] 図10C〜図10D、図10Yは、クライアントとサーバ間に長い切断がない通常の動作条件下での主同期の概念を説明する図である。幾つかの実施形態では、アプリケーションまたはクライアントとサーバ間の接続がアクティブである限り、主同期は定期的にかつ無期限に継続する。
【0106】
[00130] 図10Cは、新しいデータおよび新しい変更オペレーションが最初の主同期後に追加された(点線で示す)、図10Bと同じ、サーバにおけるデータおよびデータ変更オペレーションの状態を示す。例えばBSToおよびBSTpに対応する新しいメッセージが、BSTfに関連付けられたメッセージがSHO20によって修正される間にサーバに到着する。新しいメッセージBSToおよびBSTpの到着は、グローバル履歴テーブルにおいてそれぞれSHO19およびSHO21として反映される。同期されているまたはされていないに関わらず、データの追加、削除、および任意のデータの修正方法を表す変更オペレーションの包括性を理解すべきである。換言すれば、グローバル履歴テーブルにおけるデータオペレーションは、サーバデータリストにおける各データの各特徴に対応する。
【0107】
[00131] 図10Yに示す第2の主同期プロセスでは、クライアントは、次のBST(例えばBSTj)とクライアントによって処理された最上位の同期済みSHO(例えばSHO18)とを有するリクエスト1053を、サーバに送信する。クライアントリクエスト1053に応えて、サーバは、逆方向および順方向同期プロセスにおいてそれぞれサーバデータ(例えばBSTj、i、h)およびSHO(例えばSHO19、20、11)の次のセットを含む通信1054を、クライアントに送信する。さらに、この通信は、サーバ上に未同期データおよび変更オペレーションがあるか否かを示す指示を含み、本実施例におけるように未同期データおよび変更オペレーション(例えばBSTgおよびSHO21)がある場合は、これらもクライアントに送信される。
【0108】
[00132] 図10Dは、第2の主同期後の、サーバにおけるデータ1010Aおよびグローバル履歴テーブル1010Bの状態の図である。同期済みデータ(例えばBSTh〜p)と同期済みSHO(例えばSHO18〜21)のすべては網掛けされる。上述したように、幾つかの実施形態では、同期済みSHOは、データ同期後すぐにまたは所定時刻にグローバル履歴テーブルから削除されてもよい。
【0109】
[00133] 図10E〜図10F、図10Zは、サーバとクライアント間の長い切断後のデータ同期を説明する図である。図10Eは、最後の(例えば第2の)主同期以後にサーバに追加された新しいアイテム(例えばBSTq、r)および新しいオペレーション(例えばSHO22〜29)を示し、これは点線で示す。新しいSHOは、古いが未同期のメッセージに対して行われたデータオペレーション(例えばBSTcに対するオペレーションのためのSHO22)と、サーバのリストへの新しいアイテムの追加(例えばBSTq、rの追加に対応するSHO23、24)と、前に同期されたデータの修正(例えばBSTlに対するオペレーションのためのSHO25)と、未同期データの修正(例えばBSTuに対するオペレーションのためのSHO29)とを含む。
【0110】
[00134] 図10Eからは、データ同期を始めるための、サーバに対するクライアントによる同期開始の発生が省略される。幾つかの実施形態では、同期開始は、クライアントIDと、当該領域の開始点(例えばBSTp)および当該領域の終了点(例えばBSTh)によって表される最後に逆方向同期された領域(例えばBSTp〜h)とを含むクライアントおよびサーバのオプションのプロセスであってよい。それに応えて、サーバは、サーバからの、最上位BST(例えばBSTv)と最上位SHO(例えばSHO29)とを含む通信によって応答する。
【0111】
[00135] したがって、同期開始に応えて、図10Zに示すように主同期、すなわち、主同期ハンドシェイクが行われる。同期開始後、クライアントは、主同期リクエスト1055においてサーバに送信する情報を選択する。主同期は、次の最上位BST(例えばBSTr)と最上位の同期済みSHO(例えばSHO21)とを含む。主同期リクエスト1055に応えて、サーバは、主同期レスポンス1056を介して、アイテムBSTr、q、g、fを、最後に同期された領域BSTp〜hは省略して高い優先度から低い優先度で逆方向同期において、また、SHO22、23、24に対応するデータへの時系列変更を、順方向同期において返信する。
【0112】
[00136] 幾つかの実施形態では、逆方向および順方向同期プロセスは、効率を維持するために同じデータおよび/または変更オペレーションを2回同期しないことを確実にするために互いのプロセスについて十分な情報を共有する。一実施形態では、このインテリジェンスは、データに対して行われたオペレーションとデータとは別個に区別されることによって可能にされる。例えばアイテム(例えば電子メールメッセージ)がサーバにおけるデータリストに追加されると、対応する追加オペレーションがグローバル履歴テーブルに記録される。同様に、ラベルが追加されるといったように同じ電子メールメッセージが修正されると、ラベルの追加が別個のデータオペレーションとしてグローバル履歴テーブルに登録される。
【0113】
[00137] データおよび変更オペレーションの別個の同期の概念は、少なくとも3つの異なるシナリオによって説明されうる。第一に、電子メールメッセージが、ユーザがラベルを追加した前にまず逆方向同期によって以前に同期されている場合、順方向同期は、メッセージ追加オペレーションは省略するが、ラベル追加オペレーションは同期させる。第二に、電子メールメッセージが前に同期されていない場合、逆方向同期が修正されかつ未同期の電子メールメッセージに到達すると、修正とメッセージ自体の両方が逆方向同期によって同期され、順方向同期はメッセージ追加およびラベル追加オペレーションの両方を省略する。第三に、電子メールメッセージが同期されておらず、データの逆方向同期の前に順方向同期においてメッセージ追加オペレーションに到達すると、未同期および未修正のメッセージがメッセージ追加オペレーションによってまず同期され、データの逆方向同期が省略される。ラベル追加オペレーションは、それがメッセージ追加オペレーションの直後であろうとメッセージ追加オペレーション後にどれだけ時間が経過していようとも、それが発生したときに応じて追加される。
【0114】
[00138] 順方向および逆方向同期の同時オペレーションは、高速かつ効率的なデータ同期を確実なものとする。順方向同期は、サーバデータに対して行われた各変更オペレーションが記録されることを可能にする。順方向同期は、サーバにおけるデータに対して行われたデータオペレーションのあらゆる特徴を包括的にカバーすることに重点を置いている。逆方向同期は、サーバにおけるデータを優先度の順に同期させることに関連し、したがって、高い優先度を有するデータは低い優先度を有するデータよりも先にクライアントに同期されることが可能である。逆方向同期は、クライアントデバイスのユーザに最も重要でありうる最高優先度を有する情報を同期させることを目指す一方で、順方向同期は、データに対するオペレーションが同期から確実に取り残されないようにする。これら2つのプロセスは同時に発生し、他方の同期プロセスに関する情報を共有するので、1つのプロセスによって同期されたデータは、もう1つのプロセスによっては同期化されず、各プロセスが他方のプロセスを支援して全データ同期プロセスをより高速かつ効率的にすることを可能にする。さらに、重複するデータおよび変更オペレーションは、1つのオペレーションによって処理され、もう1つのオペレーションによって省略されるので、サーバとクライアント間に長い切断がない限り、逆方向同期完了後短い期間内で、順方向同期が時系列でサーバデータに対する残りの全ての変更オペレーションを同期させる。長い切断がある場合、逆方向同期が行われ、未同期の優先度が高いデータを同期させることを支援し、順方向同期がプロセスにおいて追いつくことを支援する。優先度の高いサーバデータ変更を、このように逆方向同期を介してクライアントに同期させることによって、クライアントが逆方向同期が完了する前にオフラインになってもクライアントのユーザは、様々な実施形態においてどのように優先度が定義されようとも、最高優先度を有するデータがオフラインで使用するために利用可能となる。
【0115】
[00139] 順方向および逆方向同期スキームをより理解するために、各同期プロセスを個別に説明する。図11Aは、クライアントとサーバ間の例示的な順方向同期インタラクションスキームを説明する。幾つかの実施形態では、アプリケーションが起動される場合またはアプリケーションはアクティブあったが長時間の切断(特定の数分および数時間と予め決められる)がある場合に、同期開始ハンドシェイクによって同期が開始される。
【0116】
[00140] 同期開始は、同期のための始点としての役割を果たす。同期開始は同期プロセスを始めるためだけに必要であるが、本実施形態では、同期開始は長い切断の後にも用いられる。上述したように、クライアントは、サーバに対してクライアントを特定するためのクライアントIDを含む同期開始リクエスト1101をサーバに送信し、順方向同期では、前に同期された範囲におけるアイテムは不要である。サーバは、次の最上位のサーバ履歴オペレーション識別情報(SHO ID)を含む同期開始レスポンス1102によって、クライアントに応答する。このSHO IDは、サーバにおけるデータに対して行われた直近のオペレーションを表す。クライアントは、受信したばかりのSHO IDかまたは同期開始前にクライアントにある別のSHO IDか、どのSHO IDをサーバに返信するかを決定する。長い切断の場合、クライアントは、前の順方向同期からもたらされたクライアントにあるSHO IDを送信する。
【0117】
[00141] 主同期ハンドシェイクは、同期開始ハンドシェイクに続いて発生する。幾つかの実施形態では、主同期は、クライアントからサーバに送信された主同期リクエストによって開始される。他の実施形態では、主同期は、サーバからのリクエストによって、または、全くリクエストがなくても開始されうる。図11Aでは、クライアントは、クライアントIDと、サーバからクライアントに最大数の「x」個のアイテムを同期させるために、サーバグローバル履歴における開始点を特定する最上位の同期済みSHO IDとを含む主同期リクエスト1を送信する(1103)。サーバは、主同期リクエスト1(1103)におけるSHO IDから始まるグローバル履歴テーブルからの最大で「x」個のオペレーションと、新しい最上位の同期済みSHO IDと、更なるサーバ変更が残っているかどうかについてのインジケータとを含む主同期レスポンス1によって応答する(1104)。別の実施形態では、サーバは十分な情報を維持して、クライアントによって処理済みと既に確認されている変更を送信しないようにしうる。
【0118】
[00142] クライアントとサーバ間に長い切断がない通常の動作条件下では、主同期は、未同期のデータまたは変更オペレーションが残っている限りすぐに繰り返される。これには、前の主同期レスポンス(例えば主同期レスポンス1(1104))においてサーバから受信した、次の最上位の同期済みSHO IDと、クライアントIDと、サーバからの送信のためのアイテムの最大数「x」とを含む主同期リクエスト2をクライアントからサーバに送信すること(1105)が含まれる。サーバは、サーバからの「x」個またはそれ以下のオペレーションと、サーバに追加の未同期のオペレーションが残っているかどうかについてのインジケータと、残っている場合にはグローバル履歴テーブルにおける次の未同期オペレーションのSHO IDとを含む主同期レスポンス2によって応答する(1106)。
【0119】
[00143] 主同期リクエストおよびレスポンスハンドシェイクは、サーバに未同期オペレーションがある限り、または、サーバとクライアント間にアクティブな接続がある限り無期限に継続する。サーバに未同期変更オペレーションがなくなると、主同期ハンドシェイクの頻度は少なくされうる。アクティブ同期モードにない場合、クライアントおよびサーバはスタンバイモードに入る(1107)。接続中断が所定の時間を超えて続かない限り、主同期ハンドシェイクは、次に限定されないが、固定の間隔またはサーバ上のアクティビティ等を含む多数の所定の基準の1つに基づいて繰り返される(1108)。
【0120】
[00144] 図11Bは、クライアントにおける例示的な順方向同期方法を説明するフローチャートである。幾つかの実施形態では、クライアントは、クライアントIDを有する同期開始リクエストをサーバに送信することによってデータ同期を始める(1120)。これに応じて、クライアントは、サーバにおける最上位SHO IDを含む同期開始レスポンスをサーバから受信する(1121)。クライアントは、順方向同期を開始するために、前の主同期からのクライアントにあるSHO IDかまたはサーバから受信したばかりのSHO IDか、どのSHO IDをサーバに送信するのかを決定する。クライアントは、クライアントIDと、同期オペレーションのためのグローバル履歴テーブルにおける開始点を設定するための、サーバに対する選択されたSHO IDと、サーバから送信される「x」個のオペレーションの限度とを含む主同期リクエストを送信する(1122)。クライアントは次に、クライアントと以前に同期されていない最大で「x」個のオペレーションと、残っている未同期アイテムについての指示と、次の最上位の未同期SHO IDとを含む主同期レスポンスを、サーバから受信する(1123)。主同期レスポンスに基づいて、クライアントは、ステップ1124において、未同期アイテムが残っているかどうかを判断する。未同期オペレーションがある場合、クライアントは、ステップ1122に示すように別の主同期リクエストを開始する。未同期オペレーションがない場合、クライアントは、ステップ1125において、所定の基準によって決定されるように、次の主同期がアクティブにされるまでアイドル状態となる。ステップ1126に示されるように、最後の主同期から長い切断がある場合、クライアントは、ステップ1120におけるように、同期開始を再び始める。長い切断がない場合、クライアントは、所定の基準に応じて新しい主同期リクエストを始める。
【0121】
[00145] 図11Cは、サーバにおける例示的な順方向同期方法を説明するフローチャートである。サーバは、ステップ1131において、クライアントIDを有する同期開始リクエストをクライアントから受信する。次に、サーバは、ステップ1132において、サーバにおけるグローバル履歴テーブル内の最新のSHO IDを含む同期開始レスポンスをクライアントに送信する。主同期の始まりにおいて、また、ステップ1133において、サーバは、順方向同期の開始点を設定するSHO IDと、サーバから送信する最大で「x」個のオペレーションとを有する主同期リクエストを、クライアントから受信する。ステップ1134において、サーバは、最後の同期から同期されていない最大で「x」個のオペレーションと、残っている未同期アイテムの指示と、残っている場合は、グローバル履歴テーブルにおける次の未同期SHO IDとを含む主同期レスポンスを、クライアントに送信する。ステップ1135において、サーバは、クライアントからの次の主同期リクエストまで待機しかつアイドル状態となる。ステップ1136において、クライアントからの主同期リクエストが、所定の継続時間内といった所定条件に合えば、サーバは、ステップ1133にあるように、クライアントからの主同期リクエストを受信する。所定条件に合わなければ、ステップ1131にあるように、クライアントからの同期開始リクエストを受信する。
【0122】
[00146] 図12Aは、逆方向同期時のサーバとクライアント間の例示的なインタラクションスキームを説明する図である。幾つかの実施形態では、上述したように、同期開始が、サーバデータ同期プロセスを始めるか、または、長時間にわたってクライアントがサーバから切断されていた後にサーバデータ同期を再開する。クライアントIDと、クライアントによって処理された最後の逆方向同期済みデータ範囲とを含む同期開始リクエストが、クライアントからサーバに送信される(1201)。サーバは、最上位の逆方向同期トークン(BST)を含む同期開始レスポンスによって応答する(1202)。クライアントは、次に、クライアントIDと、同期開始レスポンスにおいて受信した最上位BSTと、同期のための最大数の「y」個のデータアイテムとを含む主同期リクエスト1を、サーバに送信する(1203)。これに応じて、クライアントは、高い優先度から低い優先度の順にある最大で「y」個のサーバデータアイテムと、残っている未同期データの指示と、残っている場合には新しい次のBSTとを含む主同期レスポンス1を、サーバから受信する(1204)。
【0123】
[00147] サーバとクライアント間のネットワーク接続がアクティブ状態のままであるならば、主同期ハンドシェイクは繰り返される。主同期リクエスト2(1205)において、クライアントは、次の未同期サーバデータの範囲を特定する、主同期レスポンス1(1203)から受信した次の最上位BSTと、クライアントIDと、最大数の「y」個の未同期サーバデータとを送信する(1205)。クライアントは、次に、優先度の順に並べられた最大で「y」個の未同期サーバデータと、残っている未同期データの指示と、残っている場合には、次の最上位の未同期BSTとを含む主同期レスポンス2を、サーバから受信する(1206)。主同期リクエストおよびレスポンスは、逆方向同期のためのデータがなくなるまで継続され、クライアントは、スタンバイモードに入る(1207)。主同期プロセスは、固定の間隔といった所定条件が満たされると、繰り返される。
【0124】
[00148] 図12Bは、クライアントにおける例示的な逆方向同期方法を説明するフローチャートである。ステップ1221において、クライアントは、クライアントIDと、未同期領域の開始点と終了点を伝える最初のBSTおよび最後のBSTを有する、クライアントによって処理された最後の同期済み領域とを含む同期開始リクエストを、サーバに送信する。最後の同期済み領域は、リクエストが最初の同期開始である場合は空となる。ステップ1222において、クライアントは、最高優先度を有する未同期サーバデータに対応する最上位BSTを含む同期開始レスポンスを、サーバから受信する。ステップ1223において、クライアントは、クライアントIDと、同期開始レスポンスにおいて受信した最上位BSTと、逆方向同期のための最大数の「y」個の未同期サーバデータとを含む主同期リクエストを送信する。ステップ1224において、クライアントは、優先度順にある最大数の「y」個の未同期サーバデータと、残っている未同期データアイテムのインジケータと、残っている場合には次の最上位の未同期BSTとを含む主同期レスポンスを、サーバから受信する。クライアントは次に、ステップ1225において、未同期サーバデータが残っているかどうかを判断する。残っている場合、クライアントは、ステップ1223にあるように、主同期リクエストを継続する。残っていない場合、クライアントは、所定条件によって決定されるように、次の主同期が発生するまでアイドル状態となる(1226)。ステップ1227において、クライアントは、最後の主同期から長い切断があるかどうかを判断する。ある場合、クライアントは、ステップ1221にあるように、データ同期を再び始めるように同期開始に戻る。ない場合、クライアントは、ステップ1223にあるように、主同期を繰り返す。
【0125】
[00149] 図12Cは、サーバにおける例示的な逆方向同期方法を説明するフローチャートである。ステップ1251において、サーバは、クライアントIDと、クライアントによって処理された最後の同期済みデータ領域とを含む同期開始リクエストを、クライアントから受信する。同期済みデータ領域は、そのデータ領域における最初のBSTおよび最後のBSTによって示される。同期済みデータ領域は、リクエストがクライアントの最初の同期開始リクエストである場合は空となる。ステップ1252において、サーバにおける最上位BSTを含む同期開始レスポンスが、クライアントに送信される。ステップ1253において、サーバは、クライアントIDと、逆方向同期を設定するための最上位BSTと、サーバからの逆方向同期のための最大数の「y」個のアイテムとを含む主同期リクエストを、クライアントから受信する。ステップ1254において、サーバは、優先度の順にある最大で「y」個の未同期データアイテムと、残っている未同期データの指示と、残っている場合には次の未同期データのBSTとを含む主同期レスポンスを、クライアントに送信する。ステップ1255において、サーバは、所定条件によって決定されるように次の主同期までアイドル状態となる。ステップ1256において、所定の継続時間内にクライアントから主同期リクエストがある場合、サーバは、ステップ1253にあるようにクライアントから主同期リクエストを受信する。長時間の切断があった場合、サーバは、ステップ1251にあるようにクライアントから同期開始リクエストを受信する。
【0126】
[00150] 図13A〜図13D、および図13X〜図13Zは、クライアントとサーバ間のアップヒル同期を説明する図である。図13Aは、クライアントデータ1310Aのリストと、クライアント履歴テーブル1310Bを示す。クライアント履歴における各エントリは、クライアントにおけるデータに対して行われたオペレーションを表すクライアント履歴オペレーション(CHO)である。幾つかの実施形態では、各CHOは、クライアントにおけるデータに適用された作成、修正、または削除オペレーションを含むが、サーバからの新しいデータの追加は含まない。一実施形態では、クライアントデータは、サーバにおける全データのサブセットを含む。したがって、サーバは全データの完全なレコードを維持し、クライアントデータはデータの完全セットの一部を含む。他の実施形態では、クライアントにおけるデータセットは、サーバにおけるセットと同じである。
【0127】
[00151] クライアントがサーバに同期したことがない場合、クライアントが長時間サーバから切断されていた場合、または、データを用いるアプリケーションが終了され再度アクティブにされた場合、全同期プロセスを始めるために同期開始ハンドシェイクが用いられる。クライアントがサーバに同期したことがない場合、サーバに同期されるCHOはない。したがって、開始後、クライアントからサーバに送信されるデータ変更はない。クライアントが長期間サーバから切断されていた場合、最後の同期からクライアントにおいてデータ変更が発生したことが考えられる。あるいは、最後の同期が中断されたまたは中断前の最後の同期において全データ変更が同期されたわけではない場合、クライアントには、未同期データ変更が残ったままでありうる。
【0128】
[00152] 図13Aは、クライアントとサーバ間に長い切断があり、一連のデータ変更オペレーションCHO25〜29がサーバに同期されていない例を示す。点線は、開始時点のデータおよびクライアント履歴テーブルの状態を表す。図は、CHO25はクライアントアイテムggにおけるデータ変更を表し、CHO26はクライアントアイテムkkにおけるデータ変更を表し、CHO27はクライアントアイテムiiにおけるデータ変更を表し、CHO28はアイテムooにおけるデータ変更を表し、CHO29はクライアントアイテムppにおけるデータ変更を表すことを示す。例示説明のために、各クライアントアイテムは電子メールアプリケーションにおけるメッセージだとすると、各データ変更は、次に限定されないが、クライアントにおける、ラベルの追加、メッセージに星印を付けること、メッセージの削除、メッセージの作成等を含むメッセージに対するオペレーションを表しうる。
【0129】
[00153] 図13Xは、同期プロセスを始めるためのクライアントとサーバ間の同期開始ハンドシェイクを説明する図である。クライアントは、サーバに対してクライアントを特定するためのクライアントIDを含む同期開始リクエスト1351を送信する。サーバは、データ同期の開始点として、(最後のデータ同期において)サーバによって最後に処理された最後のCHO ID(例えばCHO24)を含む同期開始レスポンス1352によって、クライアントに応答する。幾つかの実施形態では、データ変更は、上述したように、順方向同期と同様に時系列に並べられる。クライアント履歴テーブルの最上位にある新しいアイテムは、高いCHO ID(例えばCHO29)を有する一方で、古いアイテムは最下位にあり、低いCHO ID(例えばCHO26)を有する。一実施形態では、CHO IDは、データオペレーションが発生した時刻に関連付けられる。
【0130】
[00154] 図13Yは、データ同期プロセスにおけるクライアントとサーバ間の主同期ハンドシェイクを説明する図である。同期開始レスポンス1352においてCHO IDがサーバによって提供されているので、クライアントは、CHO25〜28によって表されるアイテムgg、ii、kk、ooに対応するサーバデータ変更を含む主同期リクエスト1353を送信する。幾つかの実施形態では、データ変更はデータから切り離される。これは、データ変更は、データ全体ではなくてデータへの変更オペレーションとして送信されることを意味する。例えば星印がメッセージに追加された場合、または、連絡先の電話番号が変更された場合、または、2つの新しいラベルがメッセージに追加された場合、星印を追加するオペレーション、連絡先に対して新しい電話番号に変更するオペレーション、2つのラベルを追加するオペレーションが、データから独立して送信される。他の実施形態では、修正を含むデータ(例えばアイテムgg、ii、kk、oo)が、サーバにおける対応する未修正のアイテムを置き換えるべくサーバに送信されてもよい。クライアントのリクエストにおいて送信された全CHOが同期されると、サーバは、クライアントによって提案される次のCHO(例えばCHO28)を含む主同期レスポンス1354を、次の同期のための開始点として次の主同期レスポンスにおいてクライアントに返信する。クライアントからの全CHOがサーバに同期されると、サーバは、主同期レスポンスにおいて最後に同期されたCHOをクライアントに戻すか、または、CHO IDを全く戻さなくてもよい。
【0131】
[00155] 図13Bは、最初の主同期後のクライアントデータのリストとクライアント履歴テーブルの図を示す。クライアントにおける網掛けされたアイテム(例えばアイテムgg、ii、kk、oo)は、サーバに同期された変更の影響を受けているデータを表す。ローカル履歴テーブルでは、CHO29は未同期のままである。幾つかの実施形態では、正常に同期されたCHOは、メモリスペースを節約するために削除されて取り除かれてよい。他の実施形態では、同期済みのCHOは短時間の間維持されて、特定の継続時間後にまたはメモリが必要になることにより取り除かれてもよい。
【0132】
[00156] 図13Zは、クライアントとサーバ間の第2の主同期ハンドシェイクを示す。クライアントとサーバ間の接続がアクティブであり、長い切断がない通常の動作下では、幾つかの実施形態では、前の主同期が終了すると、クライアントに未同期のデータ変更が残っている場合、新しい主同期がすぐに発生する。主同期ハンドシェイクは、クライアントに未同期アイテムがなくなるまで繰り返される。本実施例では、クライアントは、図13Cに示すように、主同期レスポンス1354によって送信された次の最上位CHO ID(例えばCHO29)に従ってアイテムpp、dd、qq、およびmmに対する変更を表すCHO29〜32と、クライアント履歴テーブルにおける次の最上位の未同期CHO(例えば未同期CHOは残っていないこと)とを含む主同期リクエスト1355を、サーバに送信する。順方向同期および逆方向同期と同様に、最大数を用いて、データ同期におけるデータ変更の数を制限し、それにより同期時間を最小限にしうる。この主同期は、クライアントにおける全CHOがサーバに同期されるまで継続する。例えばCHO32の後にはデータ変更がないので、クライアントからサーバへの主同期レスポンス1356では、次の最上位CHOは送信されない。図13Dでは、データ変更CHO29〜32に対応するアイテムpp、dd、qq、およびmmは網掛け表示され、これらの変更は、サーバに同期されたことを示している。同期済みのCHOは削除されるので、クライアント履歴テーブル内には未同期CHOは残らない。
【0133】
[00157] 幾つかの実施形態では、データ同期は、クライアントによってではなくサーバによって始められてもよいことは理解すべきである。例えば、サーバは、ある間隔で、クライアントと通信して、クライアントにおいて追加のデータ変更が発生したかどうかを判断してよい。ダウンヒル同期およびアップヒル同期のいずれにおいても、どのデバイスがデータ同期に用いられるかは重要ではない。それよりもむしろ、一方のデバイスから他方のデバイスに送信される通信および情報の方が、開始点を決定し、どのデータ変更が同期されているのかいないのかを区別するために重要である。
【0134】
[00158] 図14Aは、アップヒル同期時のサーバとクライアント間の例示的なインタラクションスキームを説明する図である。一実施形態では、クライアントは、クライアントIDと、クライアントによって最後に処理されたCHO IDとを含む同期開始リクエストを、サーバに送信する(1401)。サーバは、サーバが処理し、受信確認し、または同期した最上位CHO IDを含む同期開始レスポンスによって応答する(1402)。同期開始レスポンス1402内の情報に基づいてデータ同期が開始すべき場所を知っていることにより、クライアントは、クライアントIDと、最大数の「z」個の未同期CHOとを含む主同期リクエスト1を、サーバに送信する(1403)。サーバは、矢印1404において、サーバによって受信確認されたまたは処理された最上位CHO IDを含む主レスポンス1によって応答する(1404)。同期は中断されていないと仮定すると、次の最上位CHO IDは、主同期リクエスト1においてサーバがクライアントから受信した最上位の未同期CHO IDと同じである(1403)。しかし、中断が発生した場合、サーバは、クライアントによって処理された最後のCHO IDを送信し、それにより、サーバは次の同期が開始すべき場所を判断することができる。
【0135】
[00159] 主同期2において、クライアントにおける残りの未同期データの同期は、クライアントIDと、最大数の「z」個のデータ変更の限度とを含む主同期リクエスト2をクライアントが送信することによって継続する(1405)。サーバは、主同期リクエスト2(1405)によって示される次の最上位CHO ID、または、サーバによって処理された/同期された最上位CHOを含む主同期レスポンス2によって応答する(1406)。主同期ハンドシェイクは、クライアントにおける全データ変更がサーバに同期されるまで繰り返され、クライアントおよびサーバは共に、矢印1407にあるように、スタンバイモードに切り替わる。クライアントとサーバ間には長時間の切断がないと仮定すると、クライアントデータ変更の同期のための主同期ハンドシェイクは、矢印1408にあるように、所定条件または基準に応じて再び始められる。同期開始は、長い切断がある場合またはアプリケーションが終了する場合を除いて再開しない。
【0136】
[00160] 図14Bは、クライアントにおける例示的なアップヒル同期方法を説明するフローチャートである。ステップ1420において、開始時または長時間の切断後、クライアントは、クライアントIDと、クライアントによって受信確認された最後のCHO IDとを含む同期開始リクエストを、サーバに送信する。ステップ1421において、クライアントは次に、サーバによって処理された最後のCHO IDを含んでクライアントに、サーバに対する同期が最後に終了した場所を通知する同期開始レスポンスを、サーバから受信する。ステップ1422において、主同期またはデータ同期のプロセス時、クライアントは、クライアントIDと、最大で「z」個の未同期データ変更とを含む主同期リクエストを送信する。ステップ1423において、クライアントは、クライアントによって前に送信された次の最上位CHO IDかまたはサーバによって受信確認された最後のCHO IDのいずれかを含むサーバからの主同期レスポンスを受信する。ステップ1424において、クライアントは次に、残っている未同期データ変更があるか否かを判断する。変更が残っている場合、クライアントは、ステップ1422に示すように、これらの未同期のデータ変更をクライアントに送信し続ける。変更がもうない場合、クライアントは、ステップ1425に示すように、所定基準に応じて次の主同期が発生するまでアイドル状態となる。長い切断がある場合、クライアントは、ステップ1420に示すように、同期開始ハンドシェイクによって全プロセスを再開し、長い切断がない場合、クライアントは、ステップ1422に示すように、主同期を再開する。
【0137】
[00161] 図14Cは、サーバにおける例示的なアップヒル同期方法を説明するフローチャートである。ステップ1431において、開始時または長期間の切断後、サーバは、クライアントIDと、クライアントによって処理された最後のCHO IDとを含む同期開始リクエストを、クライアントから受信する。サーバは次に、ステップ1432に示すように、クライアントに対してサーバにおいて受信確認されたまたは同期された最後のCHO IDを含む同期開始レスポンスをクライアントに送信して、クライアントが、始めるべき次の未同期データ範囲を判断することを支援する。ステップ1433において、サーバは、クライアントIDと、最大可能数の「z」個のデータ変更とを含む主同期リクエストを、クライアントから受信する。ステップ1434において、全データ変更が正常に同期された場合、サーバは、ステップ1433に示すように、クライアントによって示される次の最上位の未同期CHO IDを含む主同期レスポンスを、クライアントに送信する。データ同期が中断された場合、サーバによって処理された最後のCHO IDが代わりに送信される。ステップ1435において、サーバは、所定条件下におけるクライアントからの次の主同期リクエストまでアイドル状態となる。所定条件を満たす主同期リクエストが受信される場合、ステップ1433にあるように、主同期が再開する。受信されない場合、サーバは、ステップ1431に示すように、クライアントから同期開始リクエストを受信して、データ同期プロセスを再開する。
【0138】
[00162] 説明のための上述の記載は、具体的な実施形態を参照して述べた。しかし、上述の例示的な説明は、包括的であることまたは本発明を開示した具体的な形態に限定することを意図したものではない。多くの修正形態および変更形態が上述の教示内容から可能である。実施形態は、本発明の原理とその実際の適用を最善に説明し、それにより、当業者が、本発明、および、考えられる特定の使用に適するように様々な修正がなされた多様な実施形態を最善に活用できるように選択かつ記載された。
【特許請求の範囲】
【請求項1】
情報をサーバに同期させる方法であって、
クライアントにおいて、
サーバから通信を受信して前記サーバと前記クライアント間で情報を選択的に同期させるステップと、
前記サーバから情報を受信するステップであって、前記情報は前記クライアントに同期されたことがないデータおよび前記クライアントに同期されていない変更オペレーションを含み、前記データは高い優先度から低い優先度の順に並べられかつ受信される、ステップと、
前記受信した順に応じて前記クライアントのメモリ内に前記データの少なくとも一部分および前記変更オペレーションの少なくとも一部分を記憶するステップと、
同期の終了後、前記クライアントのユーザが、前記クライアントに記憶された前記データの一部分および前記変更オペレーションの一部分にすぐアクセスできるようにするステップと、
を含む方法。
【請求項2】
前記クライアントから前記サーバにリクエストを送信して前記クライアントとのデータ同期を開始するステップをさらに含む、請求項1に記載の方法。
【請求項3】
前記リクエストは、直近の同期において正常に同期されたデータに対応するデータ範囲に関する情報を含んで前記サーバに、前記クライアントに同期させる次のデータ範囲を通知する、請求項2に記載の方法。
【請求項4】
前記変更オペレーションは、前記サーバにおいて変更オペレーションが発生した時刻に基づいた時系列に並べられかつ受信され、古い変更が新しい変更より先に受信される、請求項1または2に記載の方法。
【請求項5】
前記データおよび前記変更オペレーションは同時に同期され、重複する、データに対応する変更オペレーションおよびその反対の同期は繰り返されない、請求項1または4に記載の方法。
【請求項6】
情報をクライアントに同期させる方法であって、
サーバにおいて、
前記サーバにおいて管理される過去の同期のレコードに基づいて、前記クライアントに同期されたことがないデータおよび前記クライアントに同期されていない変更オペレーションのうち少なくとも1つを特定するステップと、
前記クライアントに通信を送信して前記サーバと前記クライアント間で情報を選択的に同期させるステップと、
前記クライアントに情報を送信するステップであって、前記情報は前記特定されたデータおよび前記特定された変更オペレーションを含み、前記データは高い優先度から低い優先度の順に並べられかつ送信される、ステップと、
同期の終了後、前記レコードを更新して前記クライアントに正常に同期された前記通信に前記データおよび変更オペレーションを含めるステップと、
を含む方法。
【請求項7】
前記クライアントからリクエストを受信して前記サーバとのデータ同期を開始するステップをさらに含む、請求項6に記載の方法。
【請求項8】
前記リクエストは、直近の同期において正常に同期されたデータに対応するデータ範囲に関する情報を含んで前記サーバに、前記クライアントに同期させる次のデータ範囲を通知する、請求項7に記載の方法。
【請求項9】
前記変更オペレーションは、前記サーバにおいて前記変更オペレーションが発生した時刻に基づいた時系列に並べられかつ送信され、古い変更が新しい変更より先に伝送される、請求項6または7に記載の方法。
【請求項10】
前記データおよび前記変更オペレーションは同時に同期され、重複する、データに対応する変更オペレーションおよびその反対の同期は繰り返されない、請求項6または9に記載の方法。
【請求項11】
コンピュータ可読記憶媒体および前記コンピュータ可読記憶媒体に埋め込まれた1つ以上のコンピュータプログラムであって、前記コンピュータプログラムは、コンピュータシステムによって実行されると、前記コンピュータシステムに、
クライアントにおいて、
サーバから通信を受信させて前記サーバと前記クライアント間で情報を選択的に同期させ、
前記サーバから情報を受信させて、前記情報は前記クライアントに同期されたことがないデータおよび同期されていない変更オペレーションを含み、前記データは高い優先度から低い優先度の順に並べられかつ受信され、
前記受信した順に応じて前記クライアントのメモリ内に前記データの少なくとも一部分および前記変更オペレーションの少なくとも一部分を記憶させ、
同期の終了後、前記クライアントデバイスのユーザが、前記クライアントに記憶された前記データの一部分および前記変更オペレーションの一部分にすぐアクセスできるようにする、命令を含むコンピュータ可読記憶媒体。
【請求項12】
前記命令は、実行されると、前記コンピュータシステムにさらに、前記クライアントにおいて、前記サーバにリクエストを送信させて前記クライアントとのデータ同期を開始させ、前記リクエストは、直近の同期において正常に同期されたデータに対応するデータ範囲に関する情報を含んで前記サーバに、前記クライアントに同期させる次のデータ範囲を通知する、請求項11に記載のコンピュータ可読記憶媒体。
【請求項13】
前記変更オペレーションは、前記サーバにおいて変更オペレーションが発生した時刻に基づいた時系列に並べられかつ受信され、古い変更が新しい変更より先に受信される、請求項11または12に記載のコンピュータ可読記憶媒体。
【請求項14】
前記データおよび前記変更オペレーションは同時に同期され、重複する、データに対応する変更オペレーションおよびその反対の同期は繰り返されない、請求項11または13に記載のコンピュータ可読記憶媒体。
【請求項15】
コンピュータ可読記憶媒体および前記コンピュータ可読記憶媒体に埋め込まれた1つ以上のコンピュータプログラムであって、前記コンピュータプログラムは、コンピュータシステムによって実行されると、前記コンピュータシステムに、
サーバにおいて、
前記サーバにおいて管理される過去の同期のレコードに基づいて、前記クライアントに同期されたことがないデータおよび最後の同期において同期されていない変更オペレーションのうち少なくとも1つを特定させ、
前記クライアントに通信を送信させて前記サーバと前記クライアント間で情報を選択的に同期させ、
前記クライアントに情報を送信させ、前記情報は前記特定されたデータおよび前記特定された変更オペレーションを含み、前記データは高い優先度から低い優先度の順に並べられかつ送信され、
同期の終了後、前記レコードを更新させて前記クライアントに正常に同期された前記通信に前記データおよび変更オペレーションを含める、命令を含む、コンピュータ可読記憶媒体。
【請求項16】
前記命令は、実行されると、前記コンピュータシステムにさらに、前記サーバにおいて、前記クライアントからリクエストを受信させてデータ同期を開始し、前記リクエストは、直近の同期において正常に同期されたデータに対応するデータ範囲に関する情報を含んで前記サーバに、前記クライアントに同期させる次のデータ範囲を通知する、請求項15に記載のコンピュータ可読記憶媒体。
【請求項17】
前記データおよび前記変更オペレーションは同時に同期され、重複する、データに対応する変更オペレーションおよびその反対の同期は繰り返されない、請求項15または16に記載のコンピュータ可読記憶媒体。
【請求項18】
1つ以上のプロセッサと、
前記1つ以上のプロセッサに結合されたメモリと、
前記メモリに記憶され、前記1つ以上のプロセッサによる実行のために構成された1つ以上のプログラムと、
を含むクライアントシステムであって、
前記1つ以上のプログラムは、
サーバから通信を受信して前記クライアントに情報を選択的に同期させる命令と、
前記サーバから情報を受信する命令であって、前記情報は、
前記クライアントに前に同期されたことがない、前記サーバにおけるデータの少なくとも一部分を含み、高い優先度から低い優先度の優先度順に並べられる第1のデータセットと、
前記クライアントとの最後のデータ同期において同期されていない、前記サーバにおける変更オペレーションの少なくとも一部分を含み、古いデータから新しいデータの時系列に並べられる第2のデータセットとを含む、命令と、
正常に同期された前記情報の少なくとも一部分を記憶する命令と、
同期の終了後、前記クライアントのユーザが、前記クライアントにおける記憶された情報の前記一部分にすぐアクセスできるようにする命令とを含む、クライアントシステム。
【請求項19】
前記1つ以上のプログラムは、前記サーバにリクエストを送信して同期を開始する命令をさらに含み、前記リクエストは、前記クライアントに正常に同期されたデータに対応するデータの範囲に関する情報を含む、請求項18に記載のクライアントシステム。
【請求項20】
前記1つ以上のプログラムは、前記クライアントにおいて直近に同期された前記第1のデータセットおよび前記第2のデータセットの一部分のレコードを維持する命令をさらに含み、前記レコードを用いて、前記サーバに、後続の同期の開始点を通知する、請求項18または19に記載のクライアントシステム。
【請求項21】
前記第1のデータセットおよび前記第2のデータセットは、異なるおよび独立した機構によって同時に同期される、請求項18または20に記載のクライアントシステム。
【請求項22】
前記優先度順はリーセンシーに対応し、時系列は各変更オペレーションが発生した時刻に対応する、請求項18または21に記載のクライアントシステム。
【請求項23】
各同期にかかる時間を短縮するために、データの限度が、前記第1のデータセットおよび前記第2のデータセットのそれぞれに設定される、請求項18または22に記載のクライアントシステム。
【請求項24】
1つ以上のプロセッサと、
前記1つ以上のプロセッサに結合されたメモリと、
前記メモリに記憶され、前記1つ以上のプロセッサによる実行のために構成された1つ以上のプログラムと、
を含むサーバシステムであって、
前記1つ以上のプログラムは、
クライアントに選択的に同期される、前記サーバにおける情報を特定する命令と、
前記クライアントに通信を送信して前記情報を前記クライアントに選択的に同期させる命令と、
前記クライアントに情報を送信する命令であって、前記情報は、
前記クライアントに前に同期されたことがない、前記サーバにおけるデータの少なくとも一部分を含み、高い優先度から低い優先度の優先度順に並べられる第1のデータセットと、
前記クライアントとの最後のデータ同期において同期されていない、前記サーバにおける変更オペレーションの少なくとも一部分を含み、古いデータから新しいデータの時系列に並べられる第2のデータセットとを含む、命令と、
同期の終了後、前記クライアントに正常に同期された前記情報の一部分によって前記サーバにおける同期レコードを更新する命令とを含む、サーバシステム。
【請求項25】
前記1つ以上のプログラムは、前記クライアントからリクエストを受信する命令をさらに含み、前記リクエストは、正常に同期された最後のデータ範囲に関する情報を含み、前記情報を用いて、同期されるデータおよび変更オペレーションの次の範囲を決定する、請求項24に記載のサーバシステム。
【請求項26】
前記同期レコードは、前の同期において前記クライアントに正常に同期されたデータおよび変更オペレーションに関する履歴情報を含む、請求項24または25に記載のサーバシステム。
【請求項27】
前記1つ以上のプログラムは、重複したデータおよびデータオペレーションが繰り返し同期されないように、重複する、前記第1のデータセットに対して選択される重複データと前記第2のデータセットに対して選択される変更オペレーションとを特定する命令をさらに含む、請求項24または26に記載のサーバシステム。
【請求項28】
前記第1のデータセットおよび前記第2のデータセットは、異なるおよび独立した機構によって同時に同期される、請求項24または27に記載のサーバシステム。
【請求項29】
前記1つ以上のプログラムはさらに、独立した同期機構において前記サーバに同期されていない、前記クライアントにおけるデータ変更を受信して、前記データ変更を前記第1のデータセットおよび前記第2のデータセットに同時に同期させる命令をさらに含む、請求項24または28に記載のサーバシステム。
【請求項30】
前記1つ以上のプログラムは、前記サーバに残っている未同期データおよびデータオペレーションのために、前記第1のデータセットおよび前記第2のデータセットと共に次の開始点を前記クライアントに同時に送信する命令をさらに含む、請求項24または29に記載のサーバシステム。
【請求項31】
情報をサーバに同期させる方法であって、
クライアントデバイスにおいて、
前記サーバにリクエストを送信するステップであって、前記リクエストは、データおよび変更オペレーションの次の範囲に関する情報および次の同期を開始する命令を含む、ステップと、
前記リクエストに応じて、前記サーバから通信を受信して前記サーバからの情報を前記クライアントに選択的に同期させるステップと、
前記サーバから情報を受信するステップであって、前記情報は、
前記クライアントに前に同期されたことがない、前記サーバにおけるデータを含み、高い優先度から低い優先度の優先度順に受信される、第1のデータセットと、
前記クライアントとの最後のデータ同期において同期されていない変更オペレーションを含み、前記サーバにおける各変更オペレーションの発生に基づいた時系列に並べられ、古い変更オペレーションが新しい変更オペレーションより先に受信される、第2のデータとを含む、ステップと、
前記クライアントのメモリに前記情報の少なくとも一部分を記憶するステップと、
同期の終了後、前記クライアントデバイスのユーザが、メモリに正常に記憶された前記情報の少なくとも前記一部分にすぐにアクセスしかつ使用できるようにするステップと、
を含む方法。
【請求項32】
前記優先度順は、関連性の多いデータが高い優先度に対応し関連性の少ないデータが低い優先度に対応するように前記データのユーザ関連性の範囲に対応する、請求項31に記載の方法。
【請求項33】
前記サーバに正常に同期された最後のデータ範囲の、前記クライアントにおけるレコードを維持するステップをさらに含み、前記リクエストは前記最後のデータ範囲を含む、請求項31または32に記載の方法。
【請求項34】
前記第1のデータは第1のデータ同期機構によって同期され、前記第2のデータは第2のデータ同期機構によって同期され、前記第1のデータ同期機構および前記第2のデータ同期機構は互いに独立しているが、前記第1のデータセットおよび前記第2のデータセットが同時に同期されるように同時に動作する、請求項31または33に記載の方法。
【請求項35】
データの最大限度が、前記第1のデータセットおよび前記第2のデータセットのそれぞれに対して予め決定されて前記第1および第2のデータ同期機構のそれぞれの動作時間を短縮する、請求項34に記載の方法。
【請求項36】
前記サーバに第3のデータセットを送信するステップをさらに含み、前記第3のデータセットを送信するステップは、前記情報を受信するステップと同時に発生し、前記第3のデータセットは、前記サーバに前に同期されていない前記クライアントにおけるデータ変更を含む、請求項31または34に記載の方法。
【請求項37】
情報をクライアントデバイスに同期させる方法であって、
サーバにおいて、
前記クライアントからリクエストを受信するステップであって、前記リクエストは、同期されるデータおよび変更オペレーションの次の範囲の決定に関する情報および次の同期を開始する命令を含む、ステップと、
前記リクエストに応じて、前記クライアントとの同期のために未同期データおよび未同期変更オペレーションを特定するステップと、
前記クライアントに第1の通信を送信して前記サーバにおける情報を前記クライアントに選択的に同期させるステップと、
前記クライアントに情報を送信するステップであって、前記情報は、
前記クライアントに前に同期されたことがない、前記サーバにおけるデータを含み、高い優先度から低い優先度の優先度順に送信される、第1のデータセットと、
前記クライアントとの最後の同期において同期されていない変更オペレーションを含み、前記サーバにおける各変更オペレーションの発生に基づいた時系列に送信され、古い変更オペレーションが新しい変更オペレーションより先に受信される、第2のデータセットとを含む、ステップと、
前記サーバにおけるメモリ内のレコードを更新するステップであって、前記レコードは、同期の終了時、前記クライアントに正常に同期された情報の少なくとも一部分を含む、ステップと、
を含む方法。
【請求項38】
前記優先度順は、関連性の多いデータが高い優先度に対応し関連性の少ないデータが低い優先度に対応するように前記データのユーザ関連性の範囲に対応する、請求項37に記載の方法。
【請求項39】
前記第1のデータは第1のデータ同期機構によって同期され、前記第2のデータは第2のデータ同期機構によって同期され、前記第1のデータ同期機構および前記第2のデータ同期機構は互いに独立しているが、前記第1のデータセットおよび前記第2のデータセットが同時に同期されるように同時に動作する、請求項37または38に記載の方法。
【請求項40】
データの最大限度が、前記第1のデータセットおよび前記第2のデータセットのそれぞれに対して予め決定されて前記第1および第2のデータ同期機構のそれぞれの動作時間を短縮する、請求項39に記載の方法。
【請求項41】
前記クライアントから第3のデータセットを受信するステップをさらに含み、前記第3のデータセットを受信するステップは、前記情報を送信するステップと同時に発生し、前記第3のデータセットは、前記サーバに前に同期されていない前記クライアントにおけるデータ変更を含む、請求項37または39に記載の方法。
【請求項42】
前記クライアントに第2の通信を送信するステップをさらに含み、前記第2の通信は、前記第1の通信と同時に送信され、前記第2の通信は、前記サーバに残っている未同期データおよび変更オペレーションのための1つ以上の次の開始点を含む、請求項37または42に記載の方法。
【請求項1】
情報をサーバに同期させる方法であって、
クライアントにおいて、
サーバから通信を受信して前記サーバと前記クライアント間で情報を選択的に同期させるステップと、
前記サーバから情報を受信するステップであって、前記情報は前記クライアントに同期されたことがないデータおよび前記クライアントに同期されていない変更オペレーションを含み、前記データは高い優先度から低い優先度の順に並べられかつ受信される、ステップと、
前記受信した順に応じて前記クライアントのメモリ内に前記データの少なくとも一部分および前記変更オペレーションの少なくとも一部分を記憶するステップと、
同期の終了後、前記クライアントのユーザが、前記クライアントに記憶された前記データの一部分および前記変更オペレーションの一部分にすぐアクセスできるようにするステップと、
を含む方法。
【請求項2】
前記クライアントから前記サーバにリクエストを送信して前記クライアントとのデータ同期を開始するステップをさらに含む、請求項1に記載の方法。
【請求項3】
前記リクエストは、直近の同期において正常に同期されたデータに対応するデータ範囲に関する情報を含んで前記サーバに、前記クライアントに同期させる次のデータ範囲を通知する、請求項2に記載の方法。
【請求項4】
前記変更オペレーションは、前記サーバにおいて変更オペレーションが発生した時刻に基づいた時系列に並べられかつ受信され、古い変更が新しい変更より先に受信される、請求項1または2に記載の方法。
【請求項5】
前記データおよび前記変更オペレーションは同時に同期され、重複する、データに対応する変更オペレーションおよびその反対の同期は繰り返されない、請求項1または4に記載の方法。
【請求項6】
情報をクライアントに同期させる方法であって、
サーバにおいて、
前記サーバにおいて管理される過去の同期のレコードに基づいて、前記クライアントに同期されたことがないデータおよび前記クライアントに同期されていない変更オペレーションのうち少なくとも1つを特定するステップと、
前記クライアントに通信を送信して前記サーバと前記クライアント間で情報を選択的に同期させるステップと、
前記クライアントに情報を送信するステップであって、前記情報は前記特定されたデータおよび前記特定された変更オペレーションを含み、前記データは高い優先度から低い優先度の順に並べられかつ送信される、ステップと、
同期の終了後、前記レコードを更新して前記クライアントに正常に同期された前記通信に前記データおよび変更オペレーションを含めるステップと、
を含む方法。
【請求項7】
前記クライアントからリクエストを受信して前記サーバとのデータ同期を開始するステップをさらに含む、請求項6に記載の方法。
【請求項8】
前記リクエストは、直近の同期において正常に同期されたデータに対応するデータ範囲に関する情報を含んで前記サーバに、前記クライアントに同期させる次のデータ範囲を通知する、請求項7に記載の方法。
【請求項9】
前記変更オペレーションは、前記サーバにおいて前記変更オペレーションが発生した時刻に基づいた時系列に並べられかつ送信され、古い変更が新しい変更より先に伝送される、請求項6または7に記載の方法。
【請求項10】
前記データおよび前記変更オペレーションは同時に同期され、重複する、データに対応する変更オペレーションおよびその反対の同期は繰り返されない、請求項6または9に記載の方法。
【請求項11】
コンピュータ可読記憶媒体および前記コンピュータ可読記憶媒体に埋め込まれた1つ以上のコンピュータプログラムであって、前記コンピュータプログラムは、コンピュータシステムによって実行されると、前記コンピュータシステムに、
クライアントにおいて、
サーバから通信を受信させて前記サーバと前記クライアント間で情報を選択的に同期させ、
前記サーバから情報を受信させて、前記情報は前記クライアントに同期されたことがないデータおよび同期されていない変更オペレーションを含み、前記データは高い優先度から低い優先度の順に並べられかつ受信され、
前記受信した順に応じて前記クライアントのメモリ内に前記データの少なくとも一部分および前記変更オペレーションの少なくとも一部分を記憶させ、
同期の終了後、前記クライアントデバイスのユーザが、前記クライアントに記憶された前記データの一部分および前記変更オペレーションの一部分にすぐアクセスできるようにする、命令を含むコンピュータ可読記憶媒体。
【請求項12】
前記命令は、実行されると、前記コンピュータシステムにさらに、前記クライアントにおいて、前記サーバにリクエストを送信させて前記クライアントとのデータ同期を開始させ、前記リクエストは、直近の同期において正常に同期されたデータに対応するデータ範囲に関する情報を含んで前記サーバに、前記クライアントに同期させる次のデータ範囲を通知する、請求項11に記載のコンピュータ可読記憶媒体。
【請求項13】
前記変更オペレーションは、前記サーバにおいて変更オペレーションが発生した時刻に基づいた時系列に並べられかつ受信され、古い変更が新しい変更より先に受信される、請求項11または12に記載のコンピュータ可読記憶媒体。
【請求項14】
前記データおよび前記変更オペレーションは同時に同期され、重複する、データに対応する変更オペレーションおよびその反対の同期は繰り返されない、請求項11または13に記載のコンピュータ可読記憶媒体。
【請求項15】
コンピュータ可読記憶媒体および前記コンピュータ可読記憶媒体に埋め込まれた1つ以上のコンピュータプログラムであって、前記コンピュータプログラムは、コンピュータシステムによって実行されると、前記コンピュータシステムに、
サーバにおいて、
前記サーバにおいて管理される過去の同期のレコードに基づいて、前記クライアントに同期されたことがないデータおよび最後の同期において同期されていない変更オペレーションのうち少なくとも1つを特定させ、
前記クライアントに通信を送信させて前記サーバと前記クライアント間で情報を選択的に同期させ、
前記クライアントに情報を送信させ、前記情報は前記特定されたデータおよび前記特定された変更オペレーションを含み、前記データは高い優先度から低い優先度の順に並べられかつ送信され、
同期の終了後、前記レコードを更新させて前記クライアントに正常に同期された前記通信に前記データおよび変更オペレーションを含める、命令を含む、コンピュータ可読記憶媒体。
【請求項16】
前記命令は、実行されると、前記コンピュータシステムにさらに、前記サーバにおいて、前記クライアントからリクエストを受信させてデータ同期を開始し、前記リクエストは、直近の同期において正常に同期されたデータに対応するデータ範囲に関する情報を含んで前記サーバに、前記クライアントに同期させる次のデータ範囲を通知する、請求項15に記載のコンピュータ可読記憶媒体。
【請求項17】
前記データおよび前記変更オペレーションは同時に同期され、重複する、データに対応する変更オペレーションおよびその反対の同期は繰り返されない、請求項15または16に記載のコンピュータ可読記憶媒体。
【請求項18】
1つ以上のプロセッサと、
前記1つ以上のプロセッサに結合されたメモリと、
前記メモリに記憶され、前記1つ以上のプロセッサによる実行のために構成された1つ以上のプログラムと、
を含むクライアントシステムであって、
前記1つ以上のプログラムは、
サーバから通信を受信して前記クライアントに情報を選択的に同期させる命令と、
前記サーバから情報を受信する命令であって、前記情報は、
前記クライアントに前に同期されたことがない、前記サーバにおけるデータの少なくとも一部分を含み、高い優先度から低い優先度の優先度順に並べられる第1のデータセットと、
前記クライアントとの最後のデータ同期において同期されていない、前記サーバにおける変更オペレーションの少なくとも一部分を含み、古いデータから新しいデータの時系列に並べられる第2のデータセットとを含む、命令と、
正常に同期された前記情報の少なくとも一部分を記憶する命令と、
同期の終了後、前記クライアントのユーザが、前記クライアントにおける記憶された情報の前記一部分にすぐアクセスできるようにする命令とを含む、クライアントシステム。
【請求項19】
前記1つ以上のプログラムは、前記サーバにリクエストを送信して同期を開始する命令をさらに含み、前記リクエストは、前記クライアントに正常に同期されたデータに対応するデータの範囲に関する情報を含む、請求項18に記載のクライアントシステム。
【請求項20】
前記1つ以上のプログラムは、前記クライアントにおいて直近に同期された前記第1のデータセットおよび前記第2のデータセットの一部分のレコードを維持する命令をさらに含み、前記レコードを用いて、前記サーバに、後続の同期の開始点を通知する、請求項18または19に記載のクライアントシステム。
【請求項21】
前記第1のデータセットおよび前記第2のデータセットは、異なるおよび独立した機構によって同時に同期される、請求項18または20に記載のクライアントシステム。
【請求項22】
前記優先度順はリーセンシーに対応し、時系列は各変更オペレーションが発生した時刻に対応する、請求項18または21に記載のクライアントシステム。
【請求項23】
各同期にかかる時間を短縮するために、データの限度が、前記第1のデータセットおよび前記第2のデータセットのそれぞれに設定される、請求項18または22に記載のクライアントシステム。
【請求項24】
1つ以上のプロセッサと、
前記1つ以上のプロセッサに結合されたメモリと、
前記メモリに記憶され、前記1つ以上のプロセッサによる実行のために構成された1つ以上のプログラムと、
を含むサーバシステムであって、
前記1つ以上のプログラムは、
クライアントに選択的に同期される、前記サーバにおける情報を特定する命令と、
前記クライアントに通信を送信して前記情報を前記クライアントに選択的に同期させる命令と、
前記クライアントに情報を送信する命令であって、前記情報は、
前記クライアントに前に同期されたことがない、前記サーバにおけるデータの少なくとも一部分を含み、高い優先度から低い優先度の優先度順に並べられる第1のデータセットと、
前記クライアントとの最後のデータ同期において同期されていない、前記サーバにおける変更オペレーションの少なくとも一部分を含み、古いデータから新しいデータの時系列に並べられる第2のデータセットとを含む、命令と、
同期の終了後、前記クライアントに正常に同期された前記情報の一部分によって前記サーバにおける同期レコードを更新する命令とを含む、サーバシステム。
【請求項25】
前記1つ以上のプログラムは、前記クライアントからリクエストを受信する命令をさらに含み、前記リクエストは、正常に同期された最後のデータ範囲に関する情報を含み、前記情報を用いて、同期されるデータおよび変更オペレーションの次の範囲を決定する、請求項24に記載のサーバシステム。
【請求項26】
前記同期レコードは、前の同期において前記クライアントに正常に同期されたデータおよび変更オペレーションに関する履歴情報を含む、請求項24または25に記載のサーバシステム。
【請求項27】
前記1つ以上のプログラムは、重複したデータおよびデータオペレーションが繰り返し同期されないように、重複する、前記第1のデータセットに対して選択される重複データと前記第2のデータセットに対して選択される変更オペレーションとを特定する命令をさらに含む、請求項24または26に記載のサーバシステム。
【請求項28】
前記第1のデータセットおよび前記第2のデータセットは、異なるおよび独立した機構によって同時に同期される、請求項24または27に記載のサーバシステム。
【請求項29】
前記1つ以上のプログラムはさらに、独立した同期機構において前記サーバに同期されていない、前記クライアントにおけるデータ変更を受信して、前記データ変更を前記第1のデータセットおよび前記第2のデータセットに同時に同期させる命令をさらに含む、請求項24または28に記載のサーバシステム。
【請求項30】
前記1つ以上のプログラムは、前記サーバに残っている未同期データおよびデータオペレーションのために、前記第1のデータセットおよび前記第2のデータセットと共に次の開始点を前記クライアントに同時に送信する命令をさらに含む、請求項24または29に記載のサーバシステム。
【請求項31】
情報をサーバに同期させる方法であって、
クライアントデバイスにおいて、
前記サーバにリクエストを送信するステップであって、前記リクエストは、データおよび変更オペレーションの次の範囲に関する情報および次の同期を開始する命令を含む、ステップと、
前記リクエストに応じて、前記サーバから通信を受信して前記サーバからの情報を前記クライアントに選択的に同期させるステップと、
前記サーバから情報を受信するステップであって、前記情報は、
前記クライアントに前に同期されたことがない、前記サーバにおけるデータを含み、高い優先度から低い優先度の優先度順に受信される、第1のデータセットと、
前記クライアントとの最後のデータ同期において同期されていない変更オペレーションを含み、前記サーバにおける各変更オペレーションの発生に基づいた時系列に並べられ、古い変更オペレーションが新しい変更オペレーションより先に受信される、第2のデータとを含む、ステップと、
前記クライアントのメモリに前記情報の少なくとも一部分を記憶するステップと、
同期の終了後、前記クライアントデバイスのユーザが、メモリに正常に記憶された前記情報の少なくとも前記一部分にすぐにアクセスしかつ使用できるようにするステップと、
を含む方法。
【請求項32】
前記優先度順は、関連性の多いデータが高い優先度に対応し関連性の少ないデータが低い優先度に対応するように前記データのユーザ関連性の範囲に対応する、請求項31に記載の方法。
【請求項33】
前記サーバに正常に同期された最後のデータ範囲の、前記クライアントにおけるレコードを維持するステップをさらに含み、前記リクエストは前記最後のデータ範囲を含む、請求項31または32に記載の方法。
【請求項34】
前記第1のデータは第1のデータ同期機構によって同期され、前記第2のデータは第2のデータ同期機構によって同期され、前記第1のデータ同期機構および前記第2のデータ同期機構は互いに独立しているが、前記第1のデータセットおよび前記第2のデータセットが同時に同期されるように同時に動作する、請求項31または33に記載の方法。
【請求項35】
データの最大限度が、前記第1のデータセットおよび前記第2のデータセットのそれぞれに対して予め決定されて前記第1および第2のデータ同期機構のそれぞれの動作時間を短縮する、請求項34に記載の方法。
【請求項36】
前記サーバに第3のデータセットを送信するステップをさらに含み、前記第3のデータセットを送信するステップは、前記情報を受信するステップと同時に発生し、前記第3のデータセットは、前記サーバに前に同期されていない前記クライアントにおけるデータ変更を含む、請求項31または34に記載の方法。
【請求項37】
情報をクライアントデバイスに同期させる方法であって、
サーバにおいて、
前記クライアントからリクエストを受信するステップであって、前記リクエストは、同期されるデータおよび変更オペレーションの次の範囲の決定に関する情報および次の同期を開始する命令を含む、ステップと、
前記リクエストに応じて、前記クライアントとの同期のために未同期データおよび未同期変更オペレーションを特定するステップと、
前記クライアントに第1の通信を送信して前記サーバにおける情報を前記クライアントに選択的に同期させるステップと、
前記クライアントに情報を送信するステップであって、前記情報は、
前記クライアントに前に同期されたことがない、前記サーバにおけるデータを含み、高い優先度から低い優先度の優先度順に送信される、第1のデータセットと、
前記クライアントとの最後の同期において同期されていない変更オペレーションを含み、前記サーバにおける各変更オペレーションの発生に基づいた時系列に送信され、古い変更オペレーションが新しい変更オペレーションより先に受信される、第2のデータセットとを含む、ステップと、
前記サーバにおけるメモリ内のレコードを更新するステップであって、前記レコードは、同期の終了時、前記クライアントに正常に同期された情報の少なくとも一部分を含む、ステップと、
を含む方法。
【請求項38】
前記優先度順は、関連性の多いデータが高い優先度に対応し関連性の少ないデータが低い優先度に対応するように前記データのユーザ関連性の範囲に対応する、請求項37に記載の方法。
【請求項39】
前記第1のデータは第1のデータ同期機構によって同期され、前記第2のデータは第2のデータ同期機構によって同期され、前記第1のデータ同期機構および前記第2のデータ同期機構は互いに独立しているが、前記第1のデータセットおよび前記第2のデータセットが同時に同期されるように同時に動作する、請求項37または38に記載の方法。
【請求項40】
データの最大限度が、前記第1のデータセットおよび前記第2のデータセットのそれぞれに対して予め決定されて前記第1および第2のデータ同期機構のそれぞれの動作時間を短縮する、請求項39に記載の方法。
【請求項41】
前記クライアントから第3のデータセットを受信するステップをさらに含み、前記第3のデータセットを受信するステップは、前記情報を送信するステップと同時に発生し、前記第3のデータセットは、前記サーバに前に同期されていない前記クライアントにおけるデータ変更を含む、請求項37または39に記載の方法。
【請求項42】
前記クライアントに第2の通信を送信するステップをさらに含み、前記第2の通信は、前記第1の通信と同時に送信され、前記第2の通信は、前記サーバに残っている未同期データおよび変更オペレーションのための1つ以上の次の開始点を含む、請求項37または42に記載の方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7A】
【図7B】
【図8A】
【図8B】
【図9A】
【図9B】
【図9C】
【図10A】
【図10B】
【図10C】
【図10D】
【図10E】
【図10F】
【図10W】
【図10X】
【図10Y】
【図10Z】
【図11A】
【図11B】
【図11C】
【図12A】
【図12B】
【図12C】
【図13A】
【図13B】
【図13C】
【図13D】
【図13X】
【図13Y】
【図13Z】
【図14A】
【図14B】
【図14C】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7A】
【図7B】
【図8A】
【図8B】
【図9A】
【図9B】
【図9C】
【図10A】
【図10B】
【図10C】
【図10D】
【図10E】
【図10F】
【図10W】
【図10X】
【図10Y】
【図10Z】
【図11A】
【図11B】
【図11C】
【図12A】
【図12B】
【図12C】
【図13A】
【図13B】
【図13C】
【図13D】
【図13X】
【図13Y】
【図13Z】
【図14A】
【図14B】
【図14C】
【公表番号】特表2012−510094(P2012−510094A)
【公表日】平成24年4月26日(2012.4.26)
【国際特許分類】
【出願番号】特願2011−533306(P2011−533306)
【出願日】平成21年10月21日(2009.10.21)
【国際出願番号】PCT/US2009/061530
【国際公開番号】WO2010/048324
【国際公開日】平成22年4月29日(2010.4.29)
【出願人】(502208397)グーグル インコーポレイテッド (161)
【Fターム(参考)】
【公表日】平成24年4月26日(2012.4.26)
【国際特許分類】
【出願日】平成21年10月21日(2009.10.21)
【国際出願番号】PCT/US2009/061530
【国際公開番号】WO2010/048324
【国際公開日】平成22年4月29日(2010.4.29)
【出願人】(502208397)グーグル インコーポレイテッド (161)
【Fターム(参考)】
[ Back to top ]