(57)【要約】【課題】同期エンジンが、移動デバイスとバックエンド・データ・ストアとの間で、そのバックエンド・ストアのアーキテクチャおよびデータ・フォーマットとは無関係にデータを同期化できるようにする、フレームワークを提供する。【解決手段】このフレームワークは、バックエンド・データ・ストアからの同期データにアクセスするコンテンツ・アダプタを導入する。これらのアダプタはデータをバックエンド・データ・ストアに依存しない表現に変換し、一般的な方法で異なるバックエンドにアクセスする必要のあるすべてのアプリケーションまたはモジュールは、これを使用することができる。競合の検出および解決を目的とする汎用同期エンジンは、この種のモジュールの一例である。コンテンツ・アダプタを使用することのできる他のアプリケーションは、通知フレームワークまたはポータル、およびすべての他のデータ集約アプリケーションである。
2005535947.tif 000002
【特許請求の範囲】
【請求項１】
クライアント（２、４、６）への接続およびバックエンド・データ・ストア（２４、２６）への接続を有する中央同期サーバ（１０）を使用することによって、異なる前記クライアント（２、４、６）間でデータを交換するためのシステムであって、前記クライアントは、同期化されるデータを作成するためのプログラムと、前記中央同期サーバ（１０）との同期化を実行するための同期エンジン（１２）とを有し、前記システムは、更なるコンポーネントである
前記同期エンジン（１２）との単一バックエンド中立インターフェース（ＣＡＦ−インターフェース；２２）と、
前記単一のバックエンド中立インターフェース（２２）および前記割り当てられたバックエンド・データ・ストア（２４、２６）とのインターフェースを有するバックエンド依存部分を備える、少なくとも１つのコンポーネント（コンテンツ・アダプタ；２８、３０）と、
によって特徴付けられる、システム。
【請求項２】
前記コンポーネント（２８、３０）は抽象化バックエンド非依存部分をさらに有し、前記抽象化バックエンド非依存部分は、すべてのバックエンド依存部分が使用するための共通の機能を提供する、請求項１に記載のシステム。
【請求項３】
各タイプのバックエンド・データ・ストア（２４、２６）に独自のコンポーネント（２８、３０）が割り当てられる、請求項２に記載のシステム。
【請求項４】
前記データの交換がデータの同期化である、請求項１に記載のサーバ。
【請求項５】
前記バックエンド・データ・ストア（２４）および前記クライアントの更新を永続的にバッファするためのキャッシュ（５０）をさらに有し、前記コンポーネント（２８、３０）が、前記キャッシュへ更新をバッファするのを制御し実行するための、ならびにバッファされた更新を前記それぞれのクライアントおよび前記バックエンド・データ・ストア（２４）に複製するための、キャッシュ機構を有する、請求項２に記載のシステム。
【請求項６】
前記キャッシュ機構がバックエンド・モニタ（６０）を有する、請求項５に記載のシステム。
【請求項７】
前記キャッシュ機構がキャッシュ・モニタ（７０）をさらに有する、請求項５に記載のシステム。
【請求項８】
前記キャッシュ機構がバックエンド・マネージャ（８０）をさらに有する、請求項６に記載のシステム。
【請求項９】
前記キャッシュ機構は、各タイプのバックエンド・データ・ストア（２４）に対し、そのバックエンド依存部分（６０’、７０’、８０’）および抽象化バックエンド非依存部分（６０”、７０”、８０”）を備えた独自のバックエンド・モニタ、キャッシュ・モニタ、およびバックエンド・マネージャを提供する、請求項６に記載のシステム。
【請求項１０】
前記キャッシュ機構が固定記憶（４０）をさらに有する、請求項５に記載のシステム。
【請求項１１】
前記キャッシュ・モニタ（７０）が、前記キャッシュから前記バックエンド・データ・ストア（２４）への更新を、バッチ・モードまたは連続するトリクル・モードで複製する、請求項７に記載のシステム。
【請求項１２】
前記バックエンド・モニタ（６０）は、前記キャッシュ（５０）と前記バックエンド・データ・ストア（２４）との間の更新を、バッチ・モードまたは連続するトリクル・モードで複製する、請求項６に記載のシステム。
【請求項１３】
前記キャッシュ（５０）および前記バックエンド・データ・ストア（２４）がデータベースである、請求項５に記載のシステム。
【請求項１４】
前記クライアントがモバイル・クライアントである、請求項１に記載のシステム。
【請求項１５】
同期プロトコルがＳｙｎｃＭＬである、請求項４に記載のシステム。
【請求項１６】
請求項１から１５に記載のシステムを使用することによってデータを同期化する方法であって、
前記クライアントから同期セッション要求を受信するステップと、
前記同期サーバに対して前記クライアントを認証するステップと、
前記クライアントから更新を受信するステップと、
バックエンド・モニタを使用して、前記ＣＡＦインターフェースを介してバックエンド・データ・ストアに対して前記クライアントを認証するステップと、
データ・オブジェクトを作成し、前記同期サーバによって前記クライアントから受信した前記更新にそれらを記入するステップと、
前記ＣＡＦインターフェースを呼び出して、前記データ・オブジェクトを引き渡すステップと、
前記バックエンド・データ・ストアに割り当てられた前記コンポーネントの適切なバックエンド特有部分を選択するステップと、
前記データ・オブジェクトＣＡＦをバックエンド特有フォーマットに変換するステップと、
バックエンド特有部分を呼び出してデータ・オブジェクトをそこに引き渡すことにより、前記更新を実行するステップと、
を有する方法。
【請求項１７】
前記バックエンド特有部分が、前記バックエンド・データ・ストアに割り当てられた前記抽象化バックエンド非依存部分から継承される、請求項１６に記載の方法。
【請求項１８】
前記データ・オブジェクトが、前記クライアント要求をバックエンド特有部分に渡すために使用される、請求項１６に記載の方法。
【請求項１９】
前記データ・オブジェクトがメタ・データを含む、請求項１８に記載の方法。
【請求項２０】
前記クライアントと前記中央同期サーバとの間で使用される同期プロトコルがＳｙｎｃＭＬであり、前記中央同期サーバによって受信される前記更新はＸＭＬ文書として提示される、請求項１６に記載の方法。
【請求項２１】
デジタル・コンピュータの内部メモリに格納されたコンピュータ・プログラムであって、前記コンピュータ上で実行された場合に請求項１６から２０に記載の方法を実行するためのソフトウェア・コードの一部を含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、異なるクライアント間でデータを交換または同期化するための方法およびシステムに関し、より詳細には、異なるタイプのバックエンド・データ・ストアとリンクする中央同期サーバを使用したクライアント間でのデータの同期化に関する。
【背景技術】
【０００２】
同期とは、たとえばノートブック・カレンダと携帯情報端末（ＰＤＡ）カレンダとの間などの、異なるクライアント間でデータを整合させておくこと、および、これらのクライアント側で異なる識別子を備えた異なるデータ・フォーマットでデータを格納することと定義することが可能である。同期データは、完全なコンピュータ・プログラムまたはこれらプログラムの一部からなるものとすることもできる。
【０００３】
中央同期サーバは、それを介して異なるクライアント間でデータを交換できるものとして使用されることが多い（図１を参照）。中央同期サーバは、通常は負荷の高いキャリア（たとえばＹａｈｏｏ）によって使用されるものである全データをローカルに格納する（すなわち、独自所有のデータ形式を使用する場合）か、ＤＢ２、Ｄｏｍｉｎｏ、またはＥｘｃｈａｎｇｅのようなバックエンド・データ・ストアに直接アクセスするかの、いずれかが可能である（図２を参照）。
【０００４】
バックエンド・データ・ストアは、情報にアクセスし格納するための専用のプロトコルおよびメカニズムを有する。リレーショナル・データベースはＯＤＢＣを共通インターフェースとして使用するが、たとえばパーソナル情報管理（ＰＩＭ）データを格納するデータベースは、通常、所有権を主張できる方法でアクセスされ、コンテンツの非常に特有なデータ構造に依拠するものである。その結果、ウェブ・サーバ・ベースのアプリケーションは、特有のデータベースおよびアクセスされる特定タイプのコンテンツに依存することになる。新しいデータベースおよび新しいタイプのコンテンツを既存のソフトウェアに採用するには、かなりの努力が必要である。
【０００５】
たとえば、多くの異なるデータベース製造業者および複数のマルチメディア・コンテンツに関係する大規模な同期ソリューションの開発は、これらの状況の下ではかなり困難である。複数のクライアント・デバイスを同期化するための論理を含む同期エンジンは、サポートされているタイプの各コンテンツおよび接続された各データベースに適合させる必要がある。実際、今日の同期エンジンは、データを含むバックエンド・ストアに大きく依存している。精巧な同期エンジンを実施するためにかなりの額を投資しても、１つまたは少数のバックエンド・システムが恩恵を受けるだけである（図３を参照）。
【０００６】
異なるバックエンド・システムに集められて格納されたデータを送信することによって通知システムがユーザに通知したい場合にも、同じ問題が生じる。異なるシステムからのデータを総合するポータルも、情報にアクセスするためにシステムから独立した方法を必要とする。
【０００７】
米国特許第５９７４２３８号には、それぞれが少なくとも１つの共通データ・セットを含む複数のデータ・セットを有し、それぞれのコンピュータが共通データ・セットのコピーを有する、ハンドヘルド・コンピュータに格納されたデータとホスト・コンピュータとの間で動的な同期を実行するための装置が記載されている。ハンドヘルド・コンピュータは、プロセッサと、通信ポートと、データ同期エンジンとを有する。データ同期エンジンは、擬似キャッシュと、擬似キャッシュに接続された１つまたは複数のタグとを有する。データがメイン・メモリに書き込まれた場合には必ず、および／または、関連する擬似キャッシュ・タグが無効化された場合には、データが同期化される。プロトコル・セットに厳密に準拠することによって、誰がデータを所有しているか、誰がデータのコピーを有するか、および誰がデータを修正したかを、システムが常に把握しているため、データの首尾一貫性が達成される。データ同期エンジンは、コピー内のいかなる相違点をも解決し、ホスト・コンピュータおよびハンドヘルド・コンピュータ内に共通データ・セットの同一コピーを格納できるようにする。
【０００８】
この従来技術の特許は、バックエンド・データ・ストアを使用する同期アーキテクチャは対象としていない。したがって、バックエンド・データ・ストアに関する上記の問題は、当該特許によって対処も解決もされていない。
【特許文献１】米国特許第５９７４２３８号
【発明の開示】
【発明が解決しようとする課題】
【０００９】
したがって、本発明の目的は、従来技術のソリューションの欠点を回避しながら、異なるタイプのバックエンド・データ・ストアにリンクされた中央同期サーバを使用するアーキテクチャでデータを交換または同期化するための、新しい方法およびシステムを提供することである。
【課題を解決するための手段】
【００１０】
当該目的は、独立した請求項の機能によって解決される。他の好ましい実施形態は、従属する請求項に規定されている。
【００１１】
本発明は、同期エンジンが移動デバイスとバックエンド・データ・ストアとの間で、そのバックエンド・ストアのアーキテクチャおよびデータ・フォーマットとは無関係にデータを同期化できるようにするフレームワーク（枠組み）を開示するものである。このフレームワークは、バックエンド・データ・ストアから同期データにアクセスするコンテンツ・アダプタを導入する。これらのアダプタはデータをバックエンド・データ・ストアから独立した表現に変換し、一般的な方法で異なるバックエンドにアクセスする必要のあるすべてのアプリケーションまたはモジュールは、これを使用することができる。競合の検出および解決を目的とする汎用同期エンジンは、この種のモジュールの一例である。コンテンツ・アダプタを使用することのできる他のアプリケーションは、通知のフレームワークまたはポータル、およびデータを集約するすべての他のアプリケーション、である。いずれのバックエンド・データ・ストア特有の問題もコンテンツ・アダプタのバックエンドに依存した部分によって処理され、その部分は、第三者によって容易に提供され、フレームワークにプラグインすることが可能である。
【００１２】
本発明については、添付の図面を使用してより詳細に説明される。
【発明を実施するための最良の形態】
【００１３】
中央同期サーバを使用する異なるクライアント間での同期化は、通常は以下のステップからなる同期プロトコルに基づくものである。
【００１４】
事前同期化：実際の同期化を準備するために、発生前に実行しなければならない何らかのアクション。これらのアクションは、クライアント機能の認証、許可、および決定というグループに分類される。認証は、サーバが請求の対象となるものであること、およびクライアントが請求の対象となるものであることを保証する。許可は、クライアントが要求されたアクション（たとえば削除し、更新し、または新規エントリ作成のみをする）を実行できるかどうかをチェックする。最終的にサーバは、クライアントへのデータの流れを最適化するようにデバイス機能（たとえば最大バッファ・サイズ）を決定する。
【００１５】
同期化：これは、同期データが交換される部分である。２つの同期パートナー間では、データ・エントリのすべてのローカルＩＤが双方のパートナーの知っているグローバルＩＤにマッピングされる。したがって、あらゆるパートナーは、ローカルからグローバルへＩＤをマッピングするためのマッピング・テーブルを有する。次に、更新された、新規の、または削除された、エントリのみが交換される。双方のパートナーが同じデータ・エントリを更新すると、競合が発生することになる。この更新の競合は、更新をマージ（統合）するよう試みる、エントリを重複させる、一方のエントリを他のエントリに勝たせる、または単に何も実行せずに競合を報告してユーザが解決できるようにする、といった異なる試行で解決することができる。
【００１６】
事後同期化：事後同期化では、マッピング・テーブルの更新、未解決の競合の報告、などのすべてのクリーンアップ・タスクが実行される。
【００１７】
広く使用されている同期プロトコルが、ＳｙｎｃＭＬである。ＳｙｎｃＭＬは、トランスポート（移送）・プロトコルとは独立した同期化のためにＸＭＬベースのトランスポート・プロトコルを提供するものである。各同期メッセージはＸＭＬ文書である。典型的なＳｙｎｃＭＬシステムが図４に示されており、アプリケーションＢ（たとえば携帯情報端末）がそのクライアント同期エンジンを介してＳｙｎｃＭＬフレームワークに同期データを送信している。ＳｙｎｃＭＬフレームワークは、ＡＰＩ呼出し（たとえば、更新、作成）およびデータを、有効なＳｙｎｃＭＬ文書に変換し、これをサーバに送信する。サーバ側では、ＳｙｎｃＭＬフレームワークが文書を受信し、これを解析した後、コマンドおよびデータをサーバ同期エンジンに送信し、その後サーバ同期エンジンがアプリケーションＡ（たとえばノートブックのＬｏｔｕｓ  Ｎｏｔｅｓカレンダー）と対話する。
【００１８】
図５は、モバイル（移動式）・クライアントと、これらと異なるバックエンド・データ・ストアのタイプとの間の通信アーキテクチャで使用される、本発明のコンテンツ・アダプタ・フレームワークの基本アーキテクチャを示す図である。
【００１９】
異なるモバイル・クライアント２、４、６は、無線または有線のゲートウェイ８を介しウェブ・サーバ１０を通って同期エンジン１２にアクセスし、さらに当該同期エンジン１２はＣＡＦ２０を介して異なるバックエンド・データ・ストアのタイプ２４、２６と対話する。ＣＡＦ２０は、新しいバックエンド・データ・ストアを容易に追加するために、単一のバックエンド中立インターフェース（ＣＡＦインターフェース２２）を介して異なるバックエンド・データ・ストア２４、２６のデータにアクセスする基盤を提供する。ＣＡＦ２０は、少なくとも単一のＣＡＦインターフェース２２と、１つまたは複数のコンテンツ・アダプタ２８、３０とからなる。
【００２０】
ＣＡＦインターフェース２２は、同期サーバ１０がバックエンド・データにアクセスするための単一のインターフェースを表すものであり、その結果コンテンツ検索が同期サーバから分離される。同期エンジン１２は、ＣＡＦインターフェース２２を介して、特定のバックエンド・データ・ストア２４、２６からのコンテンツに独立してアクセスすることができる。好ましいことに、ＣＡＦインターフェース２２と同期サーバ１０との間でデータを交換するために、データ・フォーマットとしてデータ・オブジェクトが使用される。
【００２１】
基本的にコンテンツ・アダプタは、すべてのデータ・ストア特有の依存関係を与えるものである。
【００２２】
本発明の好ましい実施形態では、各コンテンツ・アダプタ２８、３０が抽象化バックエンド非依存部分およびバックエンド依存部分を含む。バックエンド依存部分は、データ・ストア特有のすべての依存関係を含む。これによって同期化されたバックエンド・データへのアクセスが実施され、そのデータのデータ・ストアに依存しない表現が作成されて、ＣＡＦインターフェース２２を使用して同期エンジン１２またはアプリケーション層に提供される。ＣＡＦ特有のプロセス流れは、コンテンツ・アダプタ２８、３０のバックエンド非依存部分によって管理される。バックエンド非依存部分は、たとえばキューイング・メカニズム、通信処理など、すべてのバックエンド・データ・ストアに共通の機能を提供する。
【００２３】
アプリケーション（たとえば同期エンジン）が使用することのできるセマンティック（意味的）情報を含めるために、共通データ・オブジェクトのクラス階層が定義される。データ・オブジェクトの特殊なサブクラスは、たとえばアドレス、カレンダ、マルチメディア情報、リレーショナル・データベースといった、サポートされたデータ・タイプの典型的なプロパティを記述する。特定の種類の情報に関するデータ・オブジェクトを記述するプロパティは、アドレス・ブック情報に関するｖＣａｒｄ（ビジネス・カード情報を交換するための標準フォーマット）、またはカレンダ・エントリに関するｖＣａｌ（カレンダ情報を交換するための標準フォーマット）などの、一般標準から取得することができる。ＸＭＬを適用することによって、特定データベースから独立した顧客特有のデータベースを表すことさえも可能である。
【００２４】
最終的にフレームワーク２０は、高ボリューム・システムまたは低速バックエンド・システムのために、同期エンジン１２とバックエンド・データ・ストア２４、２６との間のキャッシュ機構を容易に統合するためのインフラストラクチャを提供する（図６を参照）。
【００２５】
コンテンツ・アダプタは、高速読取り／書込みアクセスを提供し、異なるバックエンド・システム（たとえばＤｏｍｉｎｏ、ＤＢ２、Ｅｘｃｈａｎｇｅ）に適応可能であり、複数のＳｙｎｃＭＬメッセージをサポートし、常に一貫したデータを有し、異なるコンテンツ・フォーマットに適応可能である。
【００２６】
ＣＡＦの基本アーキテクチャによって実行される方法は、以下のように簡単に要約することができる。クライアントは、同期サーバを使用して同期セッションを要求する。サーバはクライアントを認証し、同期セッションを受け入れる。クライアントはサーバに更新を送る。同期サーバはデータ・オブジェクトを作成し、クライアントから受信した更新に記入する。その後同期サーバはＣＡＦインターフェースを呼び出し、データ・オブジェクトを渡す。ＣＡＦは、コンテンツ・アダプタの適切なバックエンド特有部分を選択する。
【００２７】
ＣＡＦは、バックエンド特有部分を呼び出してデータ・オブジェクトを渡す。コンテンツ・アダプタのバックエンド特有部分は、データ・オブジェクトをバックエンド特有フォーマットに変換し、バックエンド特有ＡＰＩ（アプリケーション・プログラミング・インターフェース）を呼び出す。
【００２８】
従来技術と比較される本発明の主な利点の１つは、アクセス特有のバックエンド・データベースを呼出し側アプリケーションから独立させることである。ＣＡＦは異なるデータベース・プロバイダからのコンポーネントを統合し、高水準インターフェースを介したそれらのデータベース機能へのアクセスを提供する。
【００２９】
コンテンツ・アダプタは、共通インターフェースを使用することによって、複数のバックエンド・システムを備えたアプリケーションの相互運用性を保証する。たとえば同期エンジンは、特定データベースの独自所有コマンドに依存しない。さらにコンポーネントは、データベースとアプリケーションとの間で交換されるコンテンツの複雑さを隠すものである。これによって、プログラミングの努力およびソリューションの複雑さが大幅に軽減される。ＣＡＦは、バックエンド・システム・プロバイダが、そのバックエンド・データ・ストアにアクセスしている様々なアプリケーションに対して１つのインターフェースのみを開発できるようにするものでもある。これによって、双方の当事者（アプリケーション・プロバイダおよびバックエンド供給業者）が莫大な時間および費用を節約することになる。
【００３０】
ＣＡＦによって以下のことが可能になる。
・同期エンジンは同じプロトコルおよびＡＰＩを使用して異なるバックエンド・システムと対話することができる。
・バックエンド・システム・プロバイダは、それらのバックエンド・システムに向けて調整されたそれら専用のコンテンツ・アダプタを作成することができる。
・同期エンジン、ＣＡＦ、およびバックエンド・システムの間に、効率のためにバックエンド接続を再使用するための認証を処理するセッションを提供する。
・キャッシュ・システムを利用して、同期エンジンとＣＡＦの通信の短いレイテンシー（待ち時間）を達成することができる。
・コンポーネントのロードの均衡および障害時保管の配分を可能にする。
【００３１】
図６は、ＣＡＦの好ましい実施を示す図である。ＣＡＦ１００は、ＣＡＦインターフェース２２、コンテンツ・マネージャ３０、およびキャッシュ機構を有する。
【００３２】
ＣＡＦインターフェース２２は、同期サーバにバックエンド・データ・ストア２４にアクセスするための単一のインターフェースを提供し、その結果、同期サーバ１０からコンテンツ検索が分離される。
【００３３】
コンテンツ・マネージャ３０は、認証およびバックエンド管理要求（たとえば同期アンカーの取得）をバックエンド・マネージャ８０に転送し、固定記憶４０を使用して新しいデータをキャッシュ５０に書き込み、固定記憶４０を介してキャッシュ５０から更新を取得する。検索および実行コマンドがバックエンド上で実行される。
【００３４】
キャッシュ機構は、永続キャッシュ５０と、更新をキャッシュ５０にバッファリングし、バッファリングされた更新をそれぞれのクライアントと同期させるためのメカニズムとを、提供する。永続キャッシュ５０は、ＯｒａｃｌｅまたはＩＢＭ  ＤＢ２のようなリレーショナル・データベースとすることが可能であり、たとえばＪＤＢＣ呼出しを介してアクセスすることができる。好ましくは、キャッシュ機構は、キャッシュ・モニタ７０、バックエンド・モニタ６０、バックエンド・マネージャ８０、および固定記憶４０からなる。バックエンド・マネージャ８０は、そのバックエンド特有部分８０’（コンテンツ・アダプタ）を備えた抽象化バックエンド・マネージャ８０”を含み、キャッシュ・モニタ７０は、そのバックエンド特有のキャッシュ・モニタ部分７０’（コンテンツ・アダプタ）を備えた抽象化キャッシュ・モニタ７０”を含み、バックエンド・モニタ６０は、そのバックエンド特有のバックエンド・モニタ部分６０’（コンテンツ・アダプタ）を備えた抽象化バックエンド・モニタ６０”を含む。
【００３５】
キャッシュ・モニタ７０は、主にすべての新しいデータをキャッシュからバックエンド・データ・ストアに複製するために使用される。バックエンド要件に応じて、バッチ（一括）またはトリクル（細流）などの異なる複製方針を採用することができる。主な目的が、正規のバックエンド・クライアントの代わりに同期クライアントをより適切にサポートすることである場合は、バッチ・モードが好ましい。キャッシュ・モニタ７０のバックエンド依存部分７０’は、それぞれのバックエンド・データに特有であり、バックエンド・データ・ストアの機能（たとえばＤＢ２、Ｄｏｍｉｎｏ）を活用するものでなければならない。さらに、同期オブジェクトをコンテンツ・ストレージ特有のフォーマット（たとえばＬｏｔｕｓ  ＤｏｍｉｎｏまたはＭＳ  Ｅｘｃｈａｎｇｅ）にも変換する。
【００３６】
バックエンド・モニタ６０は、バックエンド・データ・ストア２４内で発生する更新（たとえば、正規のＬｏｔｕｓ  Ｎｏｔｅｓクライアントがデータベースを更新する）を、同期サーバの外部からキャッシュ５０にトリクルする。これによって同期クライアントは、各同期セッションに対する完全な複製のオーバヘッドを必要とせずに、常に最新のバックエンド・データと同期をとることができる。バックエンド・モニタ６０のバックエンド特有部分６０’は、各バックエンド・データ・ストアに特有であり、コンテンツ・ストレージ特有のフォーマット（たとえばＬｏｔｕｓ  ＤｏｍｉｎｏまたはＭＳ  Ｅｘｃｈａｎｇｅ）をＣＡＦ同期オブジェクトに変換する。
【００３７】
バックエンド・モニタは、全体のシステム性能を最適化するために、アグレッシブ（積極的な）更新またはレイジー（のろい）更新を含む様々な更新ポリシーを有することができる。
【００３８】
バックエンド・マネージャ８０は、バックエンド・データ・ストアの管理機能へのアクセスを提供する。好ましくはＣＡＦをサポートするために、以下の機能、すなわちユーザ認証の妥当性検査、認証済みユーザのアクセス許可の検索、現在のバックエンド特有のタイムスタンプ（現在の「同期アンカー」）の検索、およびＣＡＦが変更を監視したいＵＲＩの追加／削除が、提供される。バックエンド・マネージャ８０のバックエンド特有部分８０’は、各バックエンド・データ・ストアに特有であり、コンテンツ・ストレージ特有のフォーマット（たとえばＬｏｔｕｓ  ＤｏｍｉｎｏまたはＭＳ  Ｅｘｃｈａｎｇｅ）をＣＡＦ同期オブジェクトに変換する。
【００３９】
同期されることになるデータは、リモート・コンテンツ・ストア（バックエンド）に直接格納するか、または性能上の理由でサーバ上に（ローカルに）持続的にキャッシュすることができる。固定記憶４０は、キャッシュとして固定記憶媒体を使用してバックエンド・データ・ストアへの読取り／書込みアクセスを最適化するが、当該アーキテクチャは、固定記憶がキャッシュ５０およびバックエンド・モニタを介してバックエンド・データ・ストアに直接接続するのを妨げるものではない。
【００４０】
上記ＣＡＦ実施における通信の流れは、以下のように簡潔に要約することができる。
【００４１】
コンテンツ・マネージャ３０は、同期エンジン１２から要求を受信し、データの検出または格納を必要とする場合にはそれらを固定記憶４０に転送し、タイムスタンプが必要であるか認証が要求される場合には、それらをバックエンド・マネージャ８０に転送する。可能であれば、バックエンド・レジストリはすべての使用可能なバックエンド・マネージャ８０およびモニタ６０、７０を含み、コンテンツ・マネージャ３０および固定記憶４０がこれにアクセスする。キャッシュ・モニタ７０は、更新済みのデータを固定記憶４０から取得し、これらをバックエンド・フォーマットに変換して、当該データをキャッシュ・モニタのバックエンド依存部分７０’を使用してバックエンド・データ・ストア２４に転送する。バックエンド・モニタ６０のバックエンド依存部分６０’は、バックエンド・データ・ストア２４から更新を受信し、これらをデータ・オブジェクトに変換した後、固定記憶４０に転送する。
【００４２】
キャッシュが使用できない場合、または所与のデータベースにバックエンド２４への直接アクセスが指定されていない場合、コンテンツ・マネージャ３０はｇｅｔＵｐｄａｔｅｓ呼出しをバックエンド・モニタ６０に転送し、更新されることになる項目をキャッシュ・モニタ７０に転送する。どちらのモニタも、提供されたユーザＩＤおよびパスワードを使用してバックエンドにアクセスする。
【００４３】
ＣＡＦを使用した同期エンジンの認証
同期エンジンには、ＣＡＦへの要求を認証する際に以下の２つのオプションがある。
１．各コマンドに要求されたバックエンド・ユーザのＩＤおよびパスワードを提供する
２．ユーザＩＤおよびパスワードを提供することによって、１つのバックエンドに関するＣＡＦに認証トークンを要求する。この同期セッションに関するＣＡＦへのそれぞれの後続コマンドは、このトークン（ＬＴＰＡトークンと同様）を使用して認証することができる。読出し専用アクセス、読出し／書込みアクセス、または無制限の読出しアクセス、というトークン・タイプがサポート可能であるが、書込みはその都度バックエンド側で認証しなければならない。
【００４４】
バックエンド・データ・ストアへのＣＡＦの認証
要求されたバックエンド・データ・ストアへの認証レベルは、各バックエンド・データ・ストアに関するアクセス制御リストに格納され、同期アダプタによってチェックされる。ＣＡＦはこのリストに依存して、同期サーバを介して自身のデータを更新するすべてのユーザに有効なグループ・ユーザおよびグループ・パスワードを使用するか、あるいはユーザごとに行なうか、のいずれかによって、自身をバックエンド・データ・ストアに認証させる。
【００４５】
図７は、図6の好ましい実施におけるＣＡＦのインターフェース（Ｉ／Ｆ）を示す図である。
【００４６】
同期エンジン１２は、ＣＡＦインターフェース２２を使用して、一般的な方法でバックエンド・データ・ストアにアクセスする。汎用同期エンジン１２とＣＡＦインターフェース２２との間で効率良くデータを交換するために、好ましいことにＣＡＦインターフェース２２は、データの交換には未加工値2進コード化スキームを使用する。これらの未加工データは、ＳｙｎｃＯｂｊ内にＡｃｔｉｏｎＤａｔａオブジェクトとしてＣＡＦメタ・データと共に組み込まれる。ＣＡＦメタ・データは、以下の通りである。
・Ｔｉｍｅｓｔａｍｐは、ＳｙｎｃＯｂｊの現在の同期アンカーを表すものである。これはクラスｊａｖａ．ｓｑｌ．Ｔｉｍｅｓｔａｍｐのオブジェクトとして格納される。
・ＡｃｔｉｏｎＴｙｐｅは、データ・アクション・タイプのＳｙｎｃＯｂｊを表す。可能な値はクラス定数（ＣＲＥＡＴＥ、ＵＰＤＡＴＥ、ＤＥＬＥＴＥ）内に定義される。これはショート（短）値として格納される。
・ＧＵＩＤは、ＳｙｎｃＯｂｊのバックエンド特有のグローバルＩＤを表す。これはｊａｖａ．ｌａｎｇ．Ｓｔｒｉｎｇ値として格納される。
・ＣＵＩＤは、ＳｙｎｃＯｂｊのＣＡＦ特有のキャッシュＩＤを表す。これはｊａｖａ．ｌａｎｇ．Ｓｔｒｉｎｇ値として格納される。
・ｄａｔａｂａｓｅＵＲＩは、ＳｙｎｃＯｂｊが属するバックエンド・データベースのＵＲＩを表す。これはクラスｃｏｍ．ｉｂｍ．ｃａｆ．ＵＲＩのオブジェクトとして格納される。
・ｕｓｅｒＩＤは、ＳｙｎｃＯｂｊが属する同期化を開始したクライアントのユーザＩＤを表す。これはｊａｖａ．ｌａｎｇ．Ｓｔｒｉｎｇ値として格納される。
【００４７】
ＣＡＦのインターフェース特有のプロセス流れ
抽象化モニタ・クラスは、バックエンド特有モニタをＣＡＦアーキテクチャに統合するための基本機能を提供するものである。新しいモニタ・クラスを作成するために継承を介して使用することのできる、抽象化キャッシュ・モニタおよび抽象化バックエンド・モニタと呼ばれる２つの抽象化クラスが提供される（図８を参照）。
【００４８】
抽象化クラスは、以下の機能を提供する。
・様々な更新ポリシー（トリクル／バッチ更新）に対するキューイング・メカニズム
・バックエンド・レジストリでの登録／登録解除
・システム基本設定コンポーネントでの更新に関する読取り及び登録
・ＣＡＦ固定記憶（キャッシュ）との通信の処理
【００４９】
ＣＡＦ特有のプロセス流れは、本特許明細書で定義されたインターフェースを介して、抽象化バックエンド・モニタ６０および抽象化キャッシュ・モニタ７０によって管理される。バックエンド・データ・ストア２４との直接通信は、抽象モニタ・クラスから継承されたバックエンド特有のコンポーネント７０’、６０’で実施される（図９を参照）。
【００５０】
各モニタは、様々な更新およびデータ伝播ポリシーを実行可能にする内部キューを実施する。使用シナリオに応じて、更新済みのデータを、グループごとまたは長い時間間隔でバックエンドに送信することが必要な場合がある。
【００５１】
抽象化モニタ・コンポーネントは、以下の更新ポリシーを提供する構成可能なキューイング・メカニズムを実施する。
【００５２】
量トリガ：
量トリガは内部キューのサイズを監視する。一定の構成可能なしきい値に達すると、集められた項目を伝播する。この更新ポリシーを使用して、特定モニタ内にバッチ（しきい値＞１項目）またはトリクル（しきい値＝１項目）の更新メカニズムを構成することができる。
【００５３】
間隔トリガ：
間隔トリガは、最後の伝播からの経過時間を監視する。一定の構成可能な時間間隔に達すると、集められた項目を送信する。
【００５４】
複合トリガ：
複合トリガは、前述の両方のポリシーを利用する。当該トリガのうちの１つが活動化されると必ず、集められた項目を伝播する。
【００５５】
セッション処理
セッション処理の原則は、主に、ＣＡＦ処理全体の一部であるキャッシュ・モニタに適用される。バックエンド・モニタ内のセッション処理は、バックエンド特有の実施に完全に依存する。
【００５６】
キャッシュ・モニタには、ＣＡＦキャッシュを使用するパターンと使用しないパターンという２つの異なる使用パターンがある。キャッシュが使用される場合、セッション処理はまったくサポートされない。更新は、キャッシュからバックエンドへと非同期で複製される。バックエンド・データベースへのアクセスがアドミニストレータ（管理者）的なユーザ・アカウントを介して実行されるため、発生するすべての更新に対して接続のプールが可能である。キャッシュが使用されない場合、ｂｅｇｉｎＣｏｎｎｅｃｔ（）およびｅｎｄＣｏｎｎｅｃｔ（）の方法を使用してセッション処理が実行される。すべての更新は「ユーザごと」にグループ化され、これによって各ユーザを所与の証明書と同期させるための接続のプールが可能になる。
【００５７】
図８は、好ましくは本発明のＣＡＦによって適用されるセッション認証を使用した、双方向の同期化に関する同期流れを示す図である。
【００５８】
クライアントを、更新済み項目Ａ、Ｂ、およびＦ、削除済みＣ、ならびに新しく作成された項目Ｄとして、クライアントとサーバとの間の双方向の同期化が実行される。外部クライアント（たとえばＮｏｔｅｓクライアント）を介して、バックエンド上でＥが作成され、Ｂ、Ｃ、およびＦが更新された。
【００５９】
クライアントからのパッケージ１は、バックエンド・データ・ストアに関する証明書を送信する。同期エンジンは、これらの証明書を検証のためにＣＡＦに転送する。ＣＡＦは担当のバックエンドに証明書の検証を依頼し、同期セッションに有効な認証トークンを同期エンジンに戻す。このトークンを、この同期セッションのためのＣＡＦに対する任意の今後の要求に含めることが必要である。
【００６０】
パッケージ３で、クライアントはその更新を同期サーバに送信する。同期エンジンは、認証トークンを提示することによってＣＡＦにバックエンド更新を要求する。次に同期エンジンはリストを比較し、競合を解決し、更新済みのエントリをＣＡＦおよびクライアントに読み込む。ＣＡＦはこれらの更新をそのキャッシュに格納し、後にこれらの変更をバックエンド・システムに複製する。
【００６１】
ＣＡＦとの対話のない同期エンジンは、マッピング・テーブル情報を使用してパッケージ５を処理する。
【図面の簡単な説明】
【００６２】
【図１】本発明の基礎とすることができる簡略化された同期アーキテクチャを示す図である。
【図２】バックエンド・データ・ストアへの直接アクセスを伴う従来技術の同期アーキテクチャを示す図である。
【図３】異なるバックエンド・データ・ストアを備えた従来技術の同期アーキテクチャを示す図である。
【図４】本発明によって好ましく実施することが可能なＳｙｎｃＭＬ通信プロトコルを示す図である。
【図５】本発明のコンテンツ・アダプタ・フレームワーク（ＣＡＦ）の基本アーキテクチャを示す図である。
【図６】ＣＡＦの好ましい実施を示す図である。
【図７】ＣＡＦインターフェースを示す図である。
【図８】クライアント、同期エンジン、ＣＡＦ、およびバックエンド・システムの間の通信の流れを示す図である。
【図９】ＣＡＦによって使用される継承モデルを示す図である。
【図１０】ＣＡＦ特有のプロセスの流れを示す図である。
【符号の説明】
【００６３】
２、４、６    クライアントＡ
８    ゲートウェイ
１０    中央同期サーバ
１２    同期エンジン
２２    ＣＡＦ−インターフェース
２４、２６    バックエンド・データ・ストア
２８、３０    コンテンツ・アダプタ
４０    持続ストア
５０    キャッシュ
６０    バックエンド・モニタ
７０    キャッシュ・モニタ
８０    バックエンド・マネージャ
【図１】
2005535947.tif 000003
【図２】
2005535947.tif 000004
【図３】
2005535947.tif 000005
【図４】
2005535947.tif 000006
【図５】
2005535947.tif 000007
【図６】
2005535947.tif 000008
【図７】
2005535947.tif 000009
【図８】
2005535947.tif 000010
【図９】
2005535947.tif 000011
【図１０】
2005535947.tif 000012
【国際調査報告】
2005535947.tif 000013
2005535947.tif 000014
2005535947.tif 000015