JP2010539605A - データ主導型の同期 - Google Patents
データ主導型の同期 Download PDFInfo
- Publication number
- JP2010539605A JP2010539605A JP2010525039A JP2010525039A JP2010539605A JP 2010539605 A JP2010539605 A JP 2010539605A JP 2010525039 A JP2010525039 A JP 2010525039A JP 2010525039 A JP2010525039 A JP 2010525039A JP 2010539605 A JP2010539605 A JP 2010539605A
- Authority
- JP
- Japan
- Prior art keywords
- data
- synchronization
- component
- schema
- synchronizing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 claims description 52
- 230000008859 change Effects 0.000 claims description 44
- 238000001514 detection method Methods 0.000 claims description 9
- 230000003993 interaction Effects 0.000 claims description 5
- 230000007246 mechanism Effects 0.000 abstract description 12
- 230000001360 synchronised effect Effects 0.000 description 24
- 238000004891 communication Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 14
- 230000008569 process Effects 0.000 description 12
- 238000012546 transfer Methods 0.000 description 9
- 230000009471 action Effects 0.000 description 7
- 238000007405 data analysis Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 238000013459 approach Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000000875 corresponding effect Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012706 support-vector machine Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Economics (AREA)
- Strategic Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Operations Research (AREA)
- Physics & Mathematics (AREA)
- Educational Administration (AREA)
- Marketing (AREA)
- Development Economics (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Game Theory and Decision Science (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
Abstract
同期が、特定のアプリケーションおよび/またはエンドポイントではなく、データおよび場合によっては1組の同期動作に制約される。その結果として、エンドポイント間で同期するには、カスタマイズした同期ソリューションを作成する必要がなく、ベンダおよび/またはアプリケーション固有の機構に依存する必要もない。1つの事例では、エンドポイントにわたる同期を動的に構成するために、標準的なデータおよび/または同期スキーマに参加するかそれらを利用することができる。
Description
今日では、2つの一般的なモデル、即ち、データ・リポジトリをある場所から別の場所へ複製すること、またはホスト・ストアとクライアント・ストアとの間でデータを転送すること、のうち一方を利用して2つのエンドポイント間でデータを同期するアプリケーションが数多く存在している。第1の場合の古典的な例は、データベースをデータベース・クラスタにわたって、またはウェブ・ベースのホストとクライアント・ベースのアプリケーションとの間で複製するものである。このモデルの要点は、参加者の間で明確にされているパターンで、データが転送されていることである。これらの参加者は、一般的にはソフトウェア開発の視点からデータ管理システムによって完全に制御される。第2の場合は、この文脈ではストア間同期と称するが、かなり脆弱である。なぜなら、この場合、一般的には、データセット内の項目に対して同一レベルのサポートを行わないエンドポイント間でデータが転送されるからである。デスクトップ・コンピュータと、携帯電話またはポータブル・メディア・プレイヤのようなポータブル装置との間の同期が古典的な例である。
ストア間同期の課題に対処するために、従来のソリューションでは、ホスト装置およびクライアント装置を接続するカスタムプロトコルの上にアプリケーション・スタックを生成する。一般的には、同期スタックのベンダがまた、ホスト装置およびクライアント装置の両方に対して1つまたは複数の同期プロバイダを記述して、このルート(conduit)が電子メール・プログラムのようなアプリケーションからデータを運搬できるようにする。例えば、これらのプロバイダがデスクトップ・コンピュータおよびポータブル装置の両方にインストールされると、コンジットを通した同期が可能となる。勿論、このソリューションが及ぶ範囲は、スタックのベンダがどれくらい作業を実施する意思があるかに依存する。例えば、スタックのベンダがホスト上の特定のデータソースをサポートしない場合は、そのデータソースからのコンテンツをクライアントに同期することはできない。
スタックのベンダが、システムをサードパーティに対して利用可能にし、そのサードパーティもパイプの両端で動作するプロバイダを作成し、それにより広範囲の同期エコシステムを促進できるようにすることがある。それでも、ルート(conduit)の全ての態様がスタックのベンダによって記述されるので、ソリューションは特定のベンダに固定され、ベンダがスタックを利用可能とする場所に限定されてしまう。
最終的には、自身のアプリケーションを任意のポータブル装置と同期するためのソリューションを出荷したい大多数のベンダ、またはアプリケーションの同期をサポートしたいポータブル装置の製造者は、サードパーティのソリューションを購入するか、独自のソリューションを開発するか、または単にこのような機能を提供しない、と決定することになる。
以下で、開示した主題の幾つかの態様の基本的な理解を与えるために簡略化した概要を提示する。本発明の概要は広範囲な概要ではない。本発明の概要は、クレーム主題の主要または重要な要素を特定しようとするものではなく、クレーム主題の範囲を区別しようとするものでもない。その唯一の目的は、後述のより詳細な説明に対する前置きとして幾つかの概念を簡略化した形で提示することである。
簡潔に述べると、本開示はデータ主導型の同期に関する。アプリケーションおよび/またはエンドポイントに制約されない広範囲な同期システムおよびその関連する方法を提供する。一のベンダからの専用のコードが同期パイプの両側で要求されるアプリケーション・スタックまたはサイロ・ベースのアプローチではなく、データセットおよび/またはデータセットのソースにわたって同期を実現するために情報をどのように交換するかを定義するモデル・ベースのアプローチを提示する。このようにして、任意のソースを任意の相手先(destination)と同期することができる。
本開示の一態様によれば、エンドポイントが参加する同期モデルの関数として、同期化を実施することができる。同期モデルは、データ、およびそのデータを同期のために特定のプロトコルを用いてどのように交換できるかを定義する。エンドポイントは、データ同期に関する通信および/または対話を可能とする、具体的な同期モデルを確立するために交渉を行う。続いて、同期コンポーネントを、同期およびデータ交換に関する指定された動作(behavior)を実装するように構成することができる。
前述の目的および関連する目的を達成するために、本明細書では、クレーム主題の幾つかの例示的な態様を以下の説明および付属の図面に関連して説明する。これらの態様は、主題を実践できる様々な方法を示すものであり、その全てはクレーム主題の範囲内にあることを意図している。他の利点および新規な特徴は、図面と関連して考慮すると、以下の発明を実施するための形態から明らかになろう。
以下に、ソースおよびデスティネーションに対する非依存性を実現するデータ同期システムおよびデータ同期方法を示す。その結果として、アプリケーションおよびエンドポイントは、アプリケーションおよび/またはエンドポイントに固有なソリューションに制約されることなく同期機能を行うことができる。寧ろ、同期はデータおよび1組の同期動作に制約される。より具体的には、同期を、データスキーマの関数として実施し、同期モデルを用いて最適化することができる。リッチだが基礎的な通信プロトコルの上に追加の層を構築し、この追加の層を使用してデータおよび同期のためにどのようにそのデータを交換するかを定義する。さらに、異なるストアおよび/または異なるエンドポイントにわたって最適な同期を動的に構成するために、データスキーマおよび同期モデルを任意のソースと任意のデスティネーションとの間で交渉することができる。
ここで、本開示の様々な態様を付属の図面を参照して説明する。図面全体を通して、同じ番号は同じ要素または対応する要素を指す。しかし、当然のことながら、図面およびそれに関連する詳細な説明は、クレーム主題を開示した特定の形に限定しようとするものではない。寧ろ、クレーム主題の精神および範囲の中にある全ての修正物、等価物および変形物を網羅しようとするものである。
最初に図1を参照して、クレーム主題の態様に従うデータ主導型の同期システム100を提供する。システム100は、(Nを1より大きい整数として、1からNの)幾つかのデータセット112の間の通信を可能とするコンジット・コンポーネント110を含む。例として、コンジット・コンポーネント110は、情報をデータセット112から取り出すことができるデータ転送機構またはデータ転送プロトコル(例えば、MTP(Media Transport protocol))に対応し、それらを含み、且つ/または実装することができる。データセット112を、とりわけモバイル装置、デスクトップ・コンピュータ、サーバのような複数の関連するエンドポイントまたは装置内に埋め込むことができる。コンジット・コンポーネント110は、同期コンポーネント120と通信可能に結合されており、同期コンポーネント120へデータを提供するように動作可能である。同期コンポーネント120は、コンジット・コンポーネント110を使用して、複数のデータセット112の同期を容易にする。以下にさらに説明するように、ホストおよびクライアントとして特定したエンドポイントの間で同期を実施することができる。この場合、ホストが1つまたは複数のクライアントにわたって同期を実行することができる。
クレーム主題の一態様によれば、システム100は、関連するアプリケーションおよび/またはエンドポイントに制約されずにデータセット112を同期することができる。換言すれば、データ同期は、関連するアプリケーションまたは装置のベンダによって提供される機能に限定されない。そうではなく、同期はデータ主導であるか、またはデータによって、場合によっては一連の同期動作によって、制約される。
ストアがデータセット内の項目に対して同じレベルのサポートを含まない(例えば、忠実度が失われる)ストア間同期のシナリオにおいて一般的に使用される、従来のサイロ式同期システム(silo synchronization system)を考える。このシステムでは、プロバイダは、サイロの上および底に挿入して全ての必要な同期機能がそれらの間で必ず行われるようにできるコードを提供する。コードは両側(例えば、ソースおよび相手先)で実行されているので、全ての忠実度の問題が必ず正確に処理されるようにすることはプロバイダの責任である。
従来のシステムには幾つかの問題がある。第1に、汎用的なアプリケーションは、データを係るアプリケーションにわたって同期する目的で同期サイロの作成者に振り回される。さらに、またはあるいは、エンドポイントは所与の同期サイロによって同様に制約される。それに応じて、カスタム同期ソリューションを開発することができるか、または同期を提供しないとすることができる。ここで、システム100は、ソースのアプリケーションおよびデスティネーション(destination)に対する非依存性を実現する、データ同期機構を提供する。その結果として、アプリケーションおよび/またはポータブル装置のベンダは、自身の独自のソリューションを作成したりまたは制限付きのソリューションにライセンスを与えるのではなく、所望の機能をより低コストで提供する機会が得られる。
以下のさらなる説明に照らして理解されるように、リッチなレベルのアプリケーションの独立性および/またはエンドポイントの独立性を実現し幾つかの異なるベンダからの強力なサポートを促すために、共通の明確な標準化ソリューションを使用することができる。さらに、様々なアプリケーションおよび/またはエンドポイントを扱うために、伝統的に構築されたサイロ式同期スタックをモデルとして検討することは一般に不適切である。あるいは、同期されているアプリケーションおよび/またはエンドポイント(例えば、サイロの上および底)に着目するのではなく、リッチな同期エクスペリエンスを可能とするための、エンドポイントが通信する方法(例えば、サイロの中央)に着目して同期を行うことができる。一実装形態では、標準化された通信機構を提供して、リッチな同期オプションを提供するようにサイロの上および底での発展を促すことができる。
図2に注目すると、クレーム主題の態様に従う代表的な同期コンポーネント120が示されている。この同期コンポーネントはデータ分析コンポーネント210および更新コンポーネント220を含む。これらの2つのコンポーネント210および220は基本的な同期機能の責務を負う。より具体的には、データ分析コンポーネント210は複数のデータセットを分析して、これらのデータセットを同期するために、変更が必要ならば、これらのデータセットをどのように変更する必要があるかを判定する。更新コンポーネント220は、データ分析コンポーネント210によって提供される分析結果の関数としての1つまたは複数のデータセットの変更を、容易にする。
さらに、同期コンポーネント120は、データ分析コンポーネント210に影響を及ぼすデータ・スキーマ・コンポーネント230および同期モデル/同期スキーマ・コンポーネント240を含む。データ・スキーマ・コンポーネント230は、交換すべきデータを定義する。同期モデルコンポーネント240(本明細書では、同期スキーマ・コンポーネントとも称する)は、同期のためにデータをどのように交換すべきかを規定する。換言すれば、データスキーマおよび同期スキーマをデータ分析コンポーネント210に提供してその動作をカスタマイズすることができる。特に、このようなスキーマは、どのデータを交換するか、および複数のデータセットを同期するためにそのデータをどのように交換するか、を制御することができる。
1つの事例では、データ・スキーマ・コンポーネント230および同期モデルコンポーネント240は、データ分析コンポーネント210に提供するためのスキーマを、例えばウェブサイトまたは他のネットワーク・ロケーションから取得することができる。あるいは、コンポーネント230および240はスキーマ自体に対応することができる。何れの場合でも、スキーマを、複数の異なる方法で記述することができる。この方法には、XML(eXtensible Markup Language)またはコンパイル時に生成したバイナリ構造が含まれるがこれらに限らない。
図3は、クレーム主題の態様に従う代表的なデータ・スキーマ・コンポーネント230またはその出力を示す。データセットは、同期に関して、同じ忠実度情報または同じレベルの忠実度を常に含むとは限らない。例えば、PIM(personal information manager)アプリケーションに関連付けられたモバイル装置のストアは、一般的に、特にアプリケーションが異なる製造者によって作成された場合には、デスクトップのストアと同じデータを含まない。この問題を解決するために、コンテンツ・コンポーネント310が、同期されるデータを記述することができる。これにより、同期のホストおよびクライアントは同じデータ交換の言葉を話すこと(speak)ができる。
例として、連絡先オブジェクトに関して話す同期ホストは、カレンダ・オブジェクトを話すクライアントと同期できるはずがない。しかし、ホストおよびクライアントの両方が連絡先オブジェクトのような同じコンテンツタイプを話す場合は、ホストとクライアントは同期関係に参加できるはずである。コンテンツタイプとはデータに関する特定の形式を含意すると想定されていることに留意されたい。換言すれば、2つのエンドポイントが両方とも「連絡先」を話すと表明する場合は、それらが同じ連絡先の形式(例えば、姓、名、番地、都市、州、および郵便番号)を参照していると想定されている。これは、厳密に要求されるものではなく、同期を容易にするものである。必要な場合は、異なる形式を特定の標準化された形式および/または公開された形式へマッピングするための変換を実施することができる。
データ・スキーマ・コンポーネント230はまた、コンテンツ・コンポーネント310によって記述されたデータに関連付けられた、変更単位を特定するための変更コンポーネント320を含む。同期のホストおよびクライアントの両方が同じコンテンツタイプを話すのでデータ同期を実施できる、と単に述べるだけで十分である。それにも関わらず、同期の性能を最大化するためには、変化した最小量のデータのみをあるエンドポイントから別のエンドポイントへ転送すべきである。幾つかの場合、データセット内の特定の項目を変更単位として分離することは意味がある。なぜなら、それらの項目は頻繁に変化する傾向にあり、他の項目はグループ化されればより効率的に管理できるからである。例えば、電子メール・アドレスは頻繁に変化することがあり、そういうものとして別々の変更単位として指定することができる。一方で、番地、都市、州、および郵便番号を含む物理的なアドレスは、単一の変更単位としてグループ化することができる。
図4は、クレーム主題の態様に従う代表的な同期モデル/同期スキーマ・コンポーネント240またはその出力を示す。前述のように、同期モデルコンポーネント240は、同期を実現するためにデータをどのように交換するかを特定する。代表的なコンポーネント240は、状態コンポーネント410および変更検出コンポーネント420を含む。
状態コンポーネント410は、同期の現在状態をコンテンツタイプと独立して記述するためのモデルである。以下の動作を示した順序で実施する汎用的な同期動作を考える。
1.最後に第2のエンドポイントと同期動作をしてから第1のエンドポイントで何が変更されたかを判定する。
2.第2のエンドポイント上のオブジェクトを調べることにより、第1のエンドポイントに存在する変更を第2のエンドポイントが既にもっているかどうかを判定する。
(i)データが同じならば、変更を無視する。
(ii)データが同じでなく、一方のみが変更された場合、直近の変更を一方から他方に同期する。
(iii)データが同じでなく、変更単位が両方で変更されている場合、2つの変更の間の衝突を解決するための何らかの形のビューワを使用する。
3.変更を第1のエンドポイントから第2のエンドポイントへコピーする。
エンドポイント上の同期状態に関するリッチな情報がなければ、一般的には、動作2を実施するための唯一の方法は、(動作1からの)変更セット内の各項目を列挙し、変更されたものを発見し、対応する項目を第2のエンドポイント上で見つけ(これは、共通の同期IDが共有されていない場合は、列挙して一致を探すように性能が低下する)、変更単位内のプロパティの各々を調べてそれらが異なっているかどうかを見ることである。単純なプロパティまたはデータセットの場合は、この比較は性能上の問題とはならないであろうが、大規模なプロパティまたはデータセットの場合は、この比較は非常にコストのかかるものになる。同期の現在状態を導入することによって、図2のデータ分析コンポーネント210は、変更を行う必要があるかどうかを直接判定するために、オブジェクトではなく状態ストアに問い合わせることができる。
1.最後に第2のエンドポイントと同期動作をしてから第1のエンドポイントで何が変更されたかを判定する。
2.第2のエンドポイント上のオブジェクトを調べることにより、第1のエンドポイントに存在する変更を第2のエンドポイントが既にもっているかどうかを判定する。
(i)データが同じならば、変更を無視する。
(ii)データが同じでなく、一方のみが変更された場合、直近の変更を一方から他方に同期する。
(iii)データが同じでなく、変更単位が両方で変更されている場合、2つの変更の間の衝突を解決するための何らかの形のビューワを使用する。
3.変更を第1のエンドポイントから第2のエンドポイントへコピーする。
エンドポイント上の同期状態に関するリッチな情報がなければ、一般的には、動作2を実施するための唯一の方法は、(動作1からの)変更セット内の各項目を列挙し、変更されたものを発見し、対応する項目を第2のエンドポイント上で見つけ(これは、共通の同期IDが共有されていない場合は、列挙して一致を探すように性能が低下する)、変更単位内のプロパティの各々を調べてそれらが異なっているかどうかを見ることである。単純なプロパティまたはデータセットの場合は、この比較は性能上の問題とはならないであろうが、大規模なプロパティまたはデータセットの場合は、この比較は非常にコストのかかるものになる。同期の現在状態を導入することによって、図2のデータ分析コンポーネント210は、変更を行う必要があるかどうかを直接判定するために、オブジェクトではなく状態ストアに問い合わせることができる。
変更検出コンポーネント420は、変更を一方または他方で特定する方法を記述する。変更の特定には多数の可能性が存在する。例えば、どちらのエンドポイントが同期動作を駆動していても、総列挙モデルを利用して別のストアに十分問い合わせることができる。アンカーベースのアプローチでは、ストアは変更または差分を管理するかまたは実際に提供しなければならないが、これらの差分は同期動作を行うのに最適な形態または言語ではないことがある。あるいは、アンカーベースのモデルと同様に、とりわけ同期メタデータを管理する方法に関して最適または実質的に最適である方法で差分を提供することができる。さらに、サービスモデルでは、全てのものを一まとめにして、全ての作業を行って結果を返すサービス(例えば、ウェブサービス)に、送信することができる。
同期モデルコンポーネント240はまた、同期をさらに容易にする識別子コンポーネント430およびバージョンコンポーネント440を含む。識別子コンポーネント430は、オブジェクトのようなデータのコレクションに対するコンテキスト固有の識別子を提供する。識別子を用いずにオブジェクトを見つけるコストは非常に高い可能性がある。識別子を追加することで、追加のデータを比較する必要なしに、参照されているオブジェクトが同じであるとより容易に認識することができる。当然のことながら、係る同期識別子またはIDは、既存のスキーマ内の特定の列であることができるか、または提供されたデータに基づいてIDを決定するためのマッピング関数を必要とする。
バージョンコンポーネント440は、オブジェクトのような各データ構造体に関連付けられた各変更単位のバージョンに関する情報を交換するための、コンテンツタイプに依存しない共通の形式を記述する。バージョンを導入すると、データの比較ではなくバージョンの比較を通じて、同期動作の両側において変更が加えられたかどうかを判定するプロセスが大幅に簡略化される。バージョンをもつことは、少なくとも2つの概念を含意する。第1に、バージョン情報に対する共通の形式が存在する。第2に、この形式を、オブジェクトベースごとに変更単位の粒度(granularity)で、同期クライアントのエンドポイントに記憶しそのエンドポイントから取り出すことができる。
図5は、クレーム主題の態様に従って2つのエンドポイント間でデータを同期するためのシステム500を示す。システム500はエンドポイント510および520を含む。とりわけ、エンドポイント510および520は、2つのモバイル装置か、モバイル装置とデスクトップ・コンピュータまたはサーバ、に対応することができる。各エンドポイントは、同期コンポーネント120を利用して同期できるローカルのデータストア512からなる。
各同期コンポーネント120は、同期プロトコルについて交渉し、且つ/または同期関係を確立するための交渉コンポーネント532を含む。とりわけ、COMベースのオブジェクト交換インタフェースまたはMTP(Media Transport Protocol)のようなデータ転送プロトコルが、エンドポイント通信に対する基礎としての役割を果たすことができる。交渉コンポーネント532は、同期に関する具体的な規則または手続きの識別を容易にする。従って、同期モデルを、所望の同期のリッチさをサポートする他の通信プロトコルの上に構築することができる。
同期プロトコルの交渉は本質的に動的である。固定または硬直した通信方式および1組のインタフェースを同期のために利用するのではなく、従来と同様に、エンドポイントがプロトコルまたは関係を交渉することができる。エンドポイントが対話に現れると、同期に関してエンドポイントが通信する方法を、とりわけ能力および/または優先度の関数としてその時点で決定することができる。
同期プロトコルが交渉コンポーネント532を介して確立されると、同期コンポーネント120を、特定の方法で対話するように構成コンポーネント534で構成することができる。従って、同期コンポーネント120は、具体的な事前にプログラムされた同期動作に依存するのではなく、モデルに従って同期を実装するように適応可能または構成可能な汎用機能を備えることができる。
交渉および以後の構成は、エンドポイント510および520が参加する1つまたは複数のスキーマ540に依存することができる。一の態様によれば、スキーマ(複数可)540は、例えばXML文書のように、公開されたものであることができ、または公開したものとすることができる。スキーマ(複数可)540は、データスキーマ542のサブコンポーネントおよび同期スキーマ544のサブコンポーネントを含むことができる。データ・スキーマ・コンポーネント542は、コンテンツタイプおよび関連する変更単位を含む、同期プロセスにおいて交換すべきデータを記述する。同期スキーマ・コンポーネント544は、データセットを同期するためにデータをどのように交換するかを記述する。例えば、同期スキーマは、とりわけ、現在の同期状態および変更検出を記述する1つまたは複数のモデルを含むことができる。
エンドポイント510および520は、交渉および以後の同期の間に異なるタイプの情報を交換することができる。示したように、データのコンテンツタイプまたはデータが従うスキーマの識別に関する情報を交換することができる。エンドポイントがサポートする変更検出モードおよび現在の状態モデルに関する情報も送信される。この情報を利用して、エンドポイント間の同期を構成することができる。オブジェクトまたは他のデータ構造体を、必要ならばエンドポイント510と520との間で交換することができる。さらに、装置上での実行を容易にするための、命令または動作を渡すことができる。
同期の効率は、少なくとも部分的には、各エンドポイントが同期動作に参加できるレベルに依存することができる。エンドポイントは、同期動作に参加するためにコンテンツタイプおよび変更情報の粒度を定義するデータスキーマを特定するだけでよい。エンドポイントがこの情報を提供するだけであった場合、他のエンドポイントがそれ自体のために限られたエンドポイント内の項目を列挙し、変更を発見し、変更を適用することができる同期ソリューションを生成することが可能である。反対に、例えば、2つのエンドポイントが状態情報に基づいて独立に変更を特定しどの変更を転送すべきかを判定できる場合は、その2つのエンドポイントは変更のみを交換することができる。ここで、その同期は高速且つ効率的であるはずである。なぜなら、転送される余分なデータの量は同期動作ではなく変更単位の定義によって制約されるからである。これらの2つの場合の間には、幾つかの混成型のモデルが存在する。各エンドポイントが同期関係に参加できるためには、各エンドポイントは、それが別のエンドポイントに要求するものに対して独自の能力を定義して、可能な限り効率的に動作する同期パートナーシップを生成できるようにすべきである。
開示した主題の一態様によれば、スキーマ(複数可)540を標準化することができる。データまたはオブジェクト形式および関連する同期機構を標準化することによって、任意のソースから任意のデスティネーションへの標準化を有効にすることができる。開発者、製造者、ベンダ等は幾つかのデータおよび/または同期スキーマに合意して、より広範囲な同期実施方法を可能とすることができる。例えば、標準的な連絡先オブジェクトは、姓、名、番地、州、都市、および郵便番号に関するフィールドを含むことができる。全てまたは多くのベンダ等がこの形式を連絡先オブジェクトに対して利用すれば、種々のアプリケーションおよび/またはアーキテクチャにわたって係るオブジェクトを同期できるはずである。
同期関係に参加するために追加のスキーマ項目を表現することができる。標準化されたソリューションを開発する際の最も大きな課題の1つは、交換すべき項目の領域に関して合意することになりつつある。同期関係に参加したい全ての者の定義を満足するデータスキーマを定義できると考えるのではなく、スキーマが、例えばカスタム同期モデルをサポートするために新しい項目を追加できるようにする拡張性をサポートすることができる。例えば、ビジネス連絡先マネージャはインスタントメッセージングアドレスの概念をもつことはできない。なぜなら、インスタントメッセージングは一般的にはビジネス通信では使用されないからである。しかし、消費者に着目した連絡先マネージャは一般的に係るフィールドを含む。連絡先に関する元のデータスキーマが係るフィールドなしに定義されていた場合は、消費者指向のバージョンが、標準的なスキーマおよびインスタントメッセージングフィールドの追加をそれがサポートすることを示すことができることにより、インスタントメッセージングフィールドを理解する他のアプリケーションがインスタントメッセージングフィールドと同期することができる。さらに、幾つかのクライアントを、インスタントメッセージングフィールドのような追加の同期要素を実際にそのフィールドを理解することなく運搬できる、データ・タクシー(data taxis)として構成することができる。
さらに当然のことながら、データ転送機構、または同期プロトコルの1つもしくは複数の態様を、標準化プロセスを介してより強く定義できる。例えば、デスクトップコンピュータプラットフォームは、異なる同期コンポーネントを、その両方が同じスキーマ(複数可)540をサポートすることを示すためにどのように登録できるかに関する特定のモデルを定義することができる。このモデルにおいては、変更検出および状態管理の概念を、最適な交換パターンを可能とするように強く定義することができる。しかし、個々のオブジェクトに対してデフォルトのデータ転送機構を定義することによって基本レベルの相互運用性を強制できる一方で、このシステム内の2つのエンドポイントが、追加のスキーマ項目の共通知識またはよりリッチなデータ転送モデルに基づいてよりリッチなデータ交換パターンを交渉することも依然として可能であるはずである。
このモデルにはまた、プロキシエージェントを導入できるという利点がある。図1に戻ると、コンジット・コンポーネント110が多数のデータセット112に結合できることを述べた。交換パターンがデスクトップに対して固定されているシステムにおいては、説明したデスクトップシステム内で同期するために、複数のデータセット112からデータを引き出すことができるデータ非依存のプロキシコンポーネント514を導入することができる。複数のデータセット112は、潜在的に、異なる1組のスキーマ(複数可)540を代表するものである。示したように、データストア512は、直接的にまたはプロキシコンポーネント514を介して、同期コンポーネント120と選択的に結合することができる。
図6は、クレーム主題の態様に従うプログラム的な同期モデル600を示す。モデル600は、1つまたは複数のコンポーネントを介して実装された場合に、関連付けられたアプリケーションおよび/またはアーキテクチャによって制約されない、複数のエンドポイントに記憶されたデータの同期を可能とする機能のグループを広範囲に定義する。底から始めて上へと、モデル600はデータ転送層610、同期スキーマ層620およびデータスキーマ層630を含む。
データ転送層610はエンドポイント間の通信を可能とする。限定ではなく例として、オブジェクトならびに様々な他の装置およびコンテンツ情報の交換を可能とする、COMインタフェースまたはMTPのようなリッチな通信プロトコルを利用することができる。このように、層610はエンドポイントまたはエンドポイントの装置にわたるデータ交換に関する基礎または基盤を提供する。
次の層は、同期の実現に関してデータ交換を定義する同期スキーマ層または同期モデル層620である。即ち、層620は、原始的なデータ転送層610上で交換されるデータに関する、追加の有向な同期制約を提供する。様々なデータ交換モデルおよびデータ交換機構を同期スキーマ層によって定義および/またはサポートすることができる。例えば、同期層620は現在の状態を記述するためのコンテンツタイプ独立のモデル、データ構造体に対するコンテンツ固有の識別子、変更単位ごとにバージョン情報を交換するためのコンテンツタイプ独立の形式、同期関係に参加するための追加のスキーマ項目を表現するための方法、オブジェクトスキーマ内の特定の項目を維持できる忠実度を示すための方法および/または各エンドポイントが同期動作に参加できるレベルを示す方法、を提供することができる。
最後に、データスキーマ層630は同期動作において交換すべきデータを記述する。これには、コンテンツタイプまたはオブジェクトスキーマおよび変更単位の粒度を含む、2つの態様がありうる。換言すれば、データの形式およびデータに関連付けられた変更単位である。
モデルの利用に関してさらに明快とすることを支援するため、連絡先データが携帯電話からデスクトップ・コンピュータに同期される同期シナリオを考える。各装置は同期をサポートできるかまたはサポートできない連絡先ストアを含む。装置は、オブジェクト交換プロトコルにわたるオブジェクトスキーマに従って定義されたオブジェクトを交換することができる。オブジェクトの交換の方法は、モバイル装置によって実装される同期スキーマに依存することができる。装置が変更検出モデルおよび/または他の同期機能を実装する場合は、装置は係る機能に従って変更を検出しデスクトップコンポーネントに返すことができる。あるいは、例えば、装置のベンダが係る技術に投資する意思がない場合は、モバイル装置はどのような同期スキーマも実装せず、デスクトップ装置にそれらの同期スキーマを十分に列挙させることはできない。
前述のシステム、アーキテクチャ等を幾つかのコンポーネント間の対話に関して説明した。当然のことながら、係るシステムおよびコンポーネントは、その中で規定されたコンポーネントまたはサブコンポーネント、規定されたコンポーネントまたはサブコンポーネントの一部、および/または追加のコンポーネントを含むことができる。サブコンポーネントを、親コンポーネント内に含まれるのではなく他のコンポーネントに通信可能に結合されたコンポーネントとして実装することもできる。さらに、1つもしくは複数のコンポーネントおよび/またはサブコンポーネントを単一のコンポーネントに結合して集約機能を提供することができる。システム、コンポーネントおよび/またはサブコンポーネントの間の通信をプッシュ・モデルおよび/またはプル・モデルに従って達成することができる。コンポーネントは、本明細書では簡潔さのために具体的に説明していないが、当業者によって知られている1つまたは複数の他のコンポーネントと対話してもよい。
さらに、理解されるように、上で開示したシステムおよび以下で開示する方法の様々な部分は、人口知能、機械学習、または知識ベースもしくはルール・ベースのコンポーネント、サブコンポーネント、プロセス、手段、方法、または機構(例えば、サポート・ベクタ・マシン、ニューラル・ネットワーク、エキスパート・システム、ベイジアン・ビリーフ・ネットワーク、ファジー・ロジック、データ・フュージョン・エンジン、分類器・・・)を含むことができ、またはそれらから成ることができる。係るコンポーネントは、とりわけ、システムおよび方法の一部をより適応的ならびに効率的および知的にするための、ある特定の機構またはそれによって実施される処理を自動化することができる。限定ではなく例として、係る機構を同期プロトコルの交渉および/または同期コンポーネントの構成に関して使用することができる。例えば、エンドポイントの能力および/または優先度を、暗黙的または明示的に収集した装置タイプまたは他のコンテキスト情報およびそれらに従って構成した同期の関数として、推論することができる。
上述した例示的なシステムを考慮すると、開示した主題に従って実装できる方法が図7から図10のフローチャートを参照してより良く理解されよう。説明の簡潔さのため、本方法は一連のブロックとして図示および説明されるが、当然のことながら、一部のブロックを本明細書で図示および説明したものと異なる順序で行うことができ、且つ/または一部のブロックを本明細書で図示および説明したもの以外のブロックと並行に行うことができるので、クレーム主題はブロックの順序によって限定されない。さらに、図示した全てのブロックが、以降で説明する方法を実装する必要はないこともある。
図7を参照すると、クレーム主題の態様に従うデータ同期方法700が示されている。参照番号710で、データを複数のソースから獲得する。720で、関連するアプリケーション、エンドポイント、アーキテクチャ、等に制約されずに、ソースを引き続いて同期する。同期されているアプリケーションまたはエンドポイントではなく、同期すべきデータに着目している。換言すれば、同期はデータ主導である。
従来、および前述のように、同期はカスタムなアプリケーション同期ソリューションに限定され、その範囲は限られている。係るソリューションがデータセット内の特定のデータソースまたは要素をサポートしない場合、そのデータを同期することはできない。同期ベンダが自身のシステムをサードパーティに利用可能として、サードパーティが、より広い同期エコシステムを促すためにパイプの端で動作するプロバイダを作成できるようにすることがある。しかし、こうすると同期が特定のベンダに固定され、係る同期の及ぶ範囲が制限される。従って、装置ベンダは同期機能を差し控えるか、または独自のカスタム・ソリューションを生成するコストを負担しなければならない。
方法700は、或る意味でこれらの要因から独立した、同期に対するかなり広いアプローチを提供する。一実装形態では、データセットにわたる同期を実現するために情報がどのように交換されるかを定義する、プロトコルベースのアプローチが使用される。結果として、参入する上での唯一の障壁は、例えば、サードパーティからライセンスを受けたソフトウェアではなく、単純にプロトコルおよび1組の標準を実装することである。別の言い方をすれば、同期は、特定のアプリケーションまたはアーキテクチャではなく、データおよび1組の同期の動作に制約される。
図8は、クレーム主題の態様に従う同期方法800のフローチャート図である。参照番号810で、例えばMTP等のような基本通信プロトコルを利用して、データソースを通信可能に接続する。次に番号820で、同期プロトコルを交渉する。1つの事例では、これは、幾つかの標準的なまたは事前設定されたスキーマ、モデルおよび/または機構のうちどれが会話において各エンドポイントによって実装されるかを特定すること、およびそれに基づいてデータを効率的に同期するための全体的なモデルを決定することに対応できる。モデルを、エンドポイントのデータソースによってサポートされる最高レベルまたは最もリッチな同期モデルを選択すること、および/またはエンドポイントの優先度およびコンテキスト(例えば、負荷、処理能力・・・)のような追加の情報を利用すること、にのみ基づいて選択することができる。番号830で、データを、交渉された通信プロトコルに従って交換し、複数のソースにわたって同期することができる。
図9は、クレーム主題の態様に従う、データスキーマを利用した同期方法900を示す。番号910で、所定のまたは交渉された通信プロトコルを用いて、同期の目的で、データを獲得するか、またはデータにアクセスする。参照番号920で、データのコンテンツタイプを決定する。この情報を、データおよび/または外部スキーマに関連付けられたエンドポイントから直接に獲得することができる。一態様によれば、とりわけアプリケーションおよび/またはアーキテクチャから独立したデータ交換を容易にするために、コンテンツタイプを標準化する。例えば、コンテンツタイプは、同期すべき情報の態様を定義する関連するスキーマ文書を伴った、コンテンツオブジェクトまたはメディアファイルであることができる。参照番号930で、例えばコンテンツタイプ自体と同じまたは同様な方法で、コンテンツタイプに関連付けられた変更単位を決定する。例として、住所は、番地、都市、州、および郵便番号が常にグループで交換されるように単一の変更単位を備えることができるが、一方で電子メール・アドレスは別々の変更単位であることができる。参照番号940で、データスキーマを利用してデータを同期する。例えば、同期するエンドポイントはデータを列挙し、変更を特定し、そのデータに関するそれらの変更を達成することができる。
図10は、クレーム主題の態様に従う、データおよび同期スキーマを利用したデータ同期方法1000のフローチャート図である。番号1010で、データを獲得するか、またはデータにアクセスする。参照番号1020で、例えば、コンテンツタイプおよび変更単位粒度の識別を含むデータスキーマを決定する。番号1030で、現在の同期状態を記述するコンテンツタイプ非依存のモデルを決定する。これにより、変更セット内の各項目を分析して変更を発見することを要求するのではなく、状態を比較することによって、同期プロセスを支援することができる。参照番号1040で、データのバージョンを変更単位レベルで特定するためのコンテンツタイプ非依存のバージョン形式を決定する。1050で、データを比較することなく、オブジェクトのような同じデータ構造体の発見を促進するコンテキスト識別子形式を特定する。番号1060で、とりわけ総列挙またはアンカーベースのような、変更識別方法を特定する。とりわけ、動作1030から1060で決定される全ての情報を、データに関連付けられたエンドポイントから他のエンドポイントに直接的に、または外部スキーマの識別を介して間接的に、通信することができる。さらに、この情報は、複数の標準的なまたは公開されたスキーマ、モデル、タイプ等のうち1つの識別に対応することができる。参照番号1070で、データを、データスキーマおよび収集した同期情報に従って同期することができる。例えば、データスキーマに従って定義したデータを、変更検出方法ならびに状態情報、バージョン情報および/または識別子情報に従って変更を決定するために精査し、データが同期されることを保証するために交換することができる。
本明細書で使用するとき、用語「コンポーネント」、「システム」等はコンピュータ関連の実体、即ち、ハードウェア、ハードウェアおよびソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアの何れかを指すよう意図している。例えば、コンポーネントは、プロセッサ上で稼動しているプロセス、プロセッサ、オブジェクト、インスタンス、実行可能ファイル、実行スレッド、プログラム、および/またはコンピュータであることができるがこれらに限らない。例として、コンピュータ上で稼動しているアプリケーションおよびそのコンピュータはともにコンポーネントであることができる。1つまたは複数のコンポーネントがプロセスおよび/または実行スレッド内部に常住することができ、コンポーネントを1つのコンピュータ上に配置する、および/または複数のコンピュータ間に分散させてもよい。
「例示的」という単語またはその様々な形態は、本明細書では、例、事例、または実例を意味するように使用される。「例示的」として本明細書で説明する任意の態様または設計は必ずしも他の態様または設計に対して好適または有利であると解釈すべきではない。さらに、種々の例は明快さおよび理解の目的で提供されるにすぎず、クレーム主題または本開示の関連部分を限定または制限することは決して意味しない。当然のことながら、範囲が異なる無数の追加の例または代替的な例を提示することもできたが、簡潔さのために省略した。
本明細書で使用する際、用語「推論」または「推論する」は一般にシステム、環境、および/またはユーザの状態を事象および/またはデータを介して得た1組の観測結果から推測または推論するプロセスを指す。推論を使用して、例えば具体的な文脈もしくは動作を特定するか、状態の確率分布を生成することができる。推論は確率的であることができる。即ち、着目する状態の確率分布はデータおよび事象の考察に基づいて計算される。推論はまた、高レベルな事象を1組の事象および/またはデータから構成するために使用される技法を指すことができる。係る推論の結果、事象が時間的に緊密に相関していようとなかろうと、且つ事象およびデータが1つまたは数個の事象およびデータソースから来ようと来まいと、新たな事象または動作は1組の観測した事象および/または記憶した事象データから構築されることになる。様々な分類方式および/またはシステム(例えば、サポート・ベクタ・マシン、ニューラル・ネットワーク、エキスパート・システム、ベイジアン・ビリーフ・ネットワーク、ファジー・ロジック、データ・フュージョン・エンジン・・・)を、本発明と関連して自動的な動作および/または推論した動作の実施に関連して使用することができる。
さらに、本発明の全てまたは一部を、コンピュータを制御して本発明を実装するソフトウェア、ファームウェア、ハードウェア、またはその任意の組合せを製造するための、標準的なプログラミング技術および/またはエンジニアリング技術を用いる方法、装置、または製品として実装してもよい。本明細書で使用する「製品」という用語は、任意のコンピュータ可読装置または媒体からアクセス可能なコンピュータ・プログラムを含むよう意図している。例えば、コンピュータ可読媒体は、磁気記憶装置(例えば、ハード・ディスク、フロッピー・ディスク、磁気ストリップ・・・)、光ディスク(例えば、CD(compact disk)、DVD(digital versatile disk)・・・)、スマート・カード、およびフラッシュ・メモリ装置(例えば、カード、スティック、キー・ドライブ・・・)を含むことができるがこれらに限らない。さらに、当然のことながら、搬送波を、電子メールの送受信またはインターネットもしくはLAN(local area network)のようなネットワークへのアクセスに使用されるもののようなコンピュータ可読電子データを運搬するために使用できる。勿論、クレーム主題の範囲または精神を逸脱しない多数の修正をこの構成に加えうることが当業者には認識されよう。
開示した主題の様々な態様に文脈を与えるために、図11および図12ならびに以下の議論では、開示した主題の様々な態様の実装に適した環境の簡潔で一般的な説明を与えることとする。上では主題を、1つまたは複数のコンピュータ上で稼動するプログラムのコンピュータ実行可能命令の一般的な文脈で説明したが、本発明を他のプログラム・モジュールと組み合わせて実装してもよいことは当業者には認識されよう。一般に、プログラム・モジュールには、特定のタスクを実施し、且つ/または特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造、等が含まれる。さらに、システムまたは方法を、単一のプロセッサ、マルチプロセッサまたはマルチ・コア・プロセッサのコンピュータ・システム、ミニ・コンピューティング装置、メインフレーム・コンピュータだけでなく、パーソナル・コンピュータ、ハンドヘルド・コンピューティング装置(例えば、PDA(personal digital assistant)、電話、時計・・・)、マイクロプロセッサ・ベースまたはプログラム可能な家庭用電化製品または工業電子装置、等を含む他のコンピュータ・システム構成で実践してもよいことは当業者には理解されよう。例示した態様を、通信ネットワークを通して接続されたリモート処理装置によりタスクが実施される分散コンピューティング環境で実践してもよい。しかし、クレーム主題の全てではないにしても一部の態様をスタンド・アロン・コンピュータで実践することができる。分散コンピューティング環境では、プログラム・モジュールをローカル・メモリ記憶装置およびリモート・メモリ記憶装置の両方に配置することができる。
図11を参照すると、本明細書で開示した様々な態様を実装するための例示的な環境1110はコンピュータ1112(例えば、デスクトップ、ラップトップ、サーバ、ハンド・ヘルド、プログラム可能家庭用電化製品または工業電子装置・・・)を含む。コンピュータ1112は処理ユニット1114、システム・メモリ1116およびシステム・バス1118を含む。システム・バス1118はシステム・コンポーネントを処理ユニット1114に結合させる。当該システム・コンポーネントにはシステム・メモリ1116が含まれるがこれに限らない。処理ユニット1114は様々な使用可能なプロセッサの何れかであることができる。当然のことながら、デュアル・マイクロプロセッサ、マルチ・コアおよび他のマルチプロセッサ・アーキテクチャを処理ユニット1114として使用できる。
システム・メモリ1116は揮発性メモリおよび不揮発性メモリを含む。BIOS(basic inpu t/output system)は、例えば起動中にコンピュータ1112内部の要素間で情報を転送するための基本ルーチンを含み、不揮発性メモリに記憶される。限定ではなく例として、不揮発性メモリはROM(read only memory)を含むことができる。揮発性メモリはRAM(random access memory)を含み、処理を容易にするための外部キャッシュ・メモリとして動作することができる。
コンピュータ1112はまた、取外し可能/取外し不能、揮発性/不揮発性のコンピュータ記憶媒体を含む。図11は、例えば、大容量記憶装置1124を示す。大容量記憶装置1124には、磁気ディスク・ドライブもしくは光ディスク・ドライブ、フロッピー・ディスク・ドライブ、フラッシュ・メモリ、またはメモリ・スティックのような装置が含まれるがこれらに限らない。さらに、大容量記憶装置1124は記憶媒体を、別々に含むか、または他の記憶媒体と組み合わせて含むことができる。
図11は、ユーザおよび/または他のコンピュータと、適切な動作環境1110で説明した基本的なコンピュータ・リソースとの間の中間体として動作するソフトウェア・アプリケーション(複数可)1128を提供する。係るソフトウェア・アプリケーション(複数可)1128は、システム・ソフトウェアおよびアプリケーション・ソフトウェアのうち一方またはその両方を含む。システム・ソフトウェアは、大容量記憶措置1124に記憶することができるオペレーティング・システムを含むことができ、オペレーティング・システムはコンピュータ・システム1112のリソースを制御し割り当てるように動作する。アプリケーション・ソフトウェアは、システム・メモリ1116および大容量記憶装置1124の何れかまたは両方に記憶したプログラム・モジュールおよびデータを通して、システム・ソフトウェアによるリソース管理を利用する。
コンピュータ1112はまた、バス1118に通信可能に結合されコンピュータ1112との対話を促進する、1つまたは複数のインタフェース・コンポーネント1126を含む。例として、インタフェース・コンポーネント1126はポート(例えば、シリアル、パラレル、PCMCIA、USB、FireWire・・・)またはインタフェース・カード(例えば、サウンド、ビデオ、ネットワーク・・・)等であることができる。インタフェース・コンポーネント1126は(有線または無線で)入力を受信し、出力を提供することができる。例えば、入力を、マウスのようなポインティング・デバイス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロフォン、ジョイスティック、ゲーム・パッド、パラボラ・アンテナ、スキャナ、カメラ、他のコンピュータ等を含む装置から受け取ることができるが、これらに限らない。出力をコンピュータ1112によってインタフェース・コンポーネント1126を介して出力装置(複数可)に提供することもできる。出力装置は、とりわけディスプレイ(例えば、CRT、LCD、プラズマ・・・)、スピーカ、プリンタおよび他のコンピュータを含むことができる。
図12は、本発明が対話できる例示的なコンピューティング環境1200の略ブロック図である。システム1200は1つまたは複数のクライアント(複数可)1210を含む。クライアント(複数可)1210はハードウェアおよび/またはソフトウェア(例えば、スレッド、プロセス、コンピューティング装置)であることができる。システム1200はまた、1つまたは複数のサーバ(複数可)1230を含む。従って、システム1200は、他のモデルの中でもとりわけ、2層のクライアント・サーバ・モデルまたは多層のモデル(例えば、クライアント、中間層サーバ、データ・サーバ)に対応することができる。サーバ(複数可)1230はまた、ハードウェアおよび/またはソフトウェア(例えば、スレッド、プロセス、コンピューティング装置)であることができる。サーバ1230は、例えば、本発明の態様を使用することで変換を実施するためのスレッドを収容することができる。クライアント1210とサーバ1230との間の1つの可能な通信は、複数のコンピュータ・プロセス間で送信されるデータ・パケットの形の通信であろう。
システム1200は、クライアント(複数可)1210とサーバ(複数可)1230の間の通信を容易にするために使用できる通信フレームワーク1250を含む。クライアント(複数可)1210は、クライアント(複数可)1210にローカルな情報を記憶するために使用できる1つまたは複数のクライアント・データストア(複数可)1260に、動作可能に接続される。同様に、サーバ(複数可)1230は、サーバ1230にローカルな情報を記憶するために使用できる1つまたは複数のサーバ・データストア(複数可)1240に、動作可能に接続される。
クライアント/サーバ間の対話を、本明細書で説明した同期に関して利用することができる。例として、データストア1260を含むモバイル装置(例えば、電話、携帯情報端末、ラップトップ、メディア・プレイヤ・・・)のようなクライアント1210は、通信フレームワーク1250を利用して、サーバ1230および関連するデータストア1240と同期しようとすることができる。例えば、個人のラップトップ・コンピュータ上のデータに加えられた変更を、企業サーバ上の対応するデータと同期することができる。さらに、クライアント1210は、同期エンジンまたは同期コンポーネントの構成を容易にするための、1つまたは複数のサーバ・データストア1240上の標準的なスキーマ、モデル、プロトコル等を公開、および/またはそれらにアクセスすることができる。
クレーム主題の態様の種々の例を以上で説明した。勿論、クレーム主題を説明する目的でコンポーネントまたは方法の全ての考えうる組合せを説明することは不可能であるが、開示した主題の多数のさらなる組合せおよび順列が可能であることは当業者には認識されよう。従って、開示した主題は添付の特許請求の範囲の精神および範囲内にある全ての係る代替物、修正物、および変形物を含むことを意図している。さらに、発明を実施するための形態または特許請求の範囲において用語「含む」、「包含する」、「有する」、「有している」またはその変形を使用する限りでは、係る用語は用語「備える」を請求項において移行語として使用する場合に解釈される用語「備える」と同様に、包括的であると意図している。
Claims (20)
- 複数のデータセット(112)との対話を可能とするコンジット・コンポーネント(110)と、
関連するアプリケーションおよび/またはエンドポイントによって制約されない、前記データセット(112)のデータ主導型同期を容易にする同期コンポーネント(120)と
を備えることを特徴とするデータ同期システム(100)。 - 同期のために前記データセットのデータ構造を定義するデータスキーマ・コンポーネント(230)をさらに備えることを特徴とする請求項1に記載のシステム。
- 前記データスキーマ・コンポーネント(230)は変更単位を特定することを特徴とする請求項2に記載のシステム。
- 前記データスキーマ・コンポーネント(230)はコンテンツタイプを規定することを特徴とする請求項3に記載のシステム。
- 同期のためにデータがどのように交換されるかを定義する同期モデルコンポーネント(240)をさらに備えることを特徴とする請求項2に記載のシステム。
- 前記同期モデルコンポーネント(240)は変更検出方法を規定することを特徴とする請求項5に記載のシステム。
- 前記同期モデルコンポーネント(240)は前記データの現在の状態を規定することを特徴とする請求項5に記載のシステム。
- 前記データセットを比較し、差分を特定するコンポーネント(210)をさらに備えることを特徴とする請求項5に記載のシステム。
- 前記差分を解決するために1つまたは複数の前記データセットを更新し、それによって前記セットを同期するコンポーネント(220)をさらに備えることを特徴とする請求項8に記載のシステム。
- 前記データセットまたはその一部は、拡張可能なコンテンツタイプのスキーマに従うことを特徴とする請求項1に記載のシステム。
- データセットに対してコンテンツタイプおよび変更単位を決定するステップと、
前記データセットを、前記コンテンツタイプおよび前記変更単位の関数として複数のデータストアにわたって同期するステップと
を含むことを特徴とするストア間同期方法。 - 関連するエンドポイントの能力および/または優先度に基づいて変更検出方法を決定するステップをさらに含むことを特徴とする請求項11に記載の方法。
- 複数の所定の識別方法から選択することを特徴とする請求項12に記載の方法。
- 同期状態情報を利用して前記データセットを同期するステップをさらに含むことを特徴とする請求項11に記載の方法。
- 同じデータ構造体を特定するコンテキスト固有の識別子を利用して前記データセットを同期するステップをさらに含むことを特徴とする請求項11に記載の方法。
- 前記変更単位に関連付けられたコンテンツ非依存のバージョニング情報を利用して前記データを同期するステップをさらに含むことを特徴とする請求項11に記載の方法。
- 前記コンテンツタイプおよび前記変更単位を公開のスキーマから獲得するステップをさらに含むことを特徴とする請求項11に記載の方法。
- サポートされない同期データを運搬するステップをさらに含むことを特徴とする請求項11に記載の方法。
- データがどのように交換されるかを定義する同期モデルおよび交換すべき前記データを記述するデータスキーマの関数として、複数のエンドポイント間で同期プロトコルを交渉するための手段(532)と、
前記交渉された同期プロトコルに従って同期を構成するための手段(534)と
を備えることを特徴とする同期を容易にするシステム(500)。 - 前記交渉されたプロトコルに従って複数の装置にわたって前記データを同期するための手段(120)をさらに備えることを特徴とする請求項19に記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/855,864 US8185494B2 (en) | 2007-09-14 | 2007-09-14 | Data-driven synchronization |
PCT/US2008/076262 WO2009036345A2 (en) | 2007-09-14 | 2008-09-12 | Data-driven synchronization |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010539605A true JP2010539605A (ja) | 2010-12-16 |
JP2010539605A5 JP2010539605A5 (ja) | 2011-09-29 |
Family
ID=40452853
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010525039A Withdrawn JP2010539605A (ja) | 2007-09-14 | 2008-09-12 | データ主導型の同期 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8185494B2 (ja) |
EP (1) | EP2201479A4 (ja) |
JP (1) | JP2010539605A (ja) |
CN (1) | CN101802815B (ja) |
WO (1) | WO2009036345A2 (ja) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8015270B2 (en) * | 2005-09-06 | 2011-09-06 | Reldata, Inc. | Redundant appliance configuration repository in standard hierarchical format |
US20090157909A1 (en) * | 2007-12-14 | 2009-06-18 | Pitney Bowes Inc. | Configurable method for connecting one or more devices to a media process system |
US8467300B2 (en) * | 2007-10-18 | 2013-06-18 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods and arrangements in a mobile telecommunications network |
US20100153335A1 (en) | 2008-12-12 | 2010-06-17 | Microsoft Corporation | Synchronizing multiple classes with disparate schemas in the same collection |
US20110010497A1 (en) * | 2009-07-09 | 2011-01-13 | Sandisk Il Ltd. | A storage device receiving commands and data regardless of a host |
US8284803B2 (en) | 2009-12-30 | 2012-10-09 | Microsoft Corporation | Cross-scope synchronization of data item knowledge and corresponding metadata |
US20120150801A1 (en) * | 2010-12-08 | 2012-06-14 | Microsoft Corporation | Platform agnostic file attribute synchronization |
US10599620B2 (en) * | 2011-09-01 | 2020-03-24 | Full Circle Insights, Inc. | Method and system for object synchronization in CRM systems |
US10621206B2 (en) | 2012-04-19 | 2020-04-14 | Full Circle Insights, Inc. | Method and system for recording responses in a CRM system |
CN102857949B (zh) * | 2012-09-14 | 2018-11-20 | 中兴通讯股份有限公司 | 一种规划数据一致性保证的方法和装置 |
WO2014047606A2 (en) * | 2012-09-24 | 2014-03-27 | President And Fellows Of Harvard College | Techniques for data synchronization using compressive sensing |
US9170886B2 (en) * | 2012-10-09 | 2015-10-27 | International Business Machines Corporation | Relaxed anchor validation in a distributed synchronization environment |
WO2015006565A2 (en) | 2013-07-10 | 2015-01-15 | Gemini Interface Solutions Llc | Dual screen interface |
US8937562B1 (en) * | 2013-07-29 | 2015-01-20 | Sap Se | Shared data de-duplication method and system |
CN105407143B (zh) * | 2015-10-26 | 2018-10-23 | 山东金质信息技术有限公司 | 一种标准数据的同步方法 |
US10824642B2 (en) * | 2017-08-10 | 2020-11-03 | Servicenow, Inc. | Data synchronization architecture |
WO2021174104A1 (en) | 2020-02-28 | 2021-09-02 | Clumio, Inc. | Modification of data in a time-series data lake |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5333299A (en) | 1991-12-31 | 1994-07-26 | International Business Machines Corporation | Synchronization techniques for multimedia data streams |
US5706509A (en) * | 1995-04-28 | 1998-01-06 | Intel Corporation | Application independent record level synchronization |
US20030041174A1 (en) | 2001-08-24 | 2003-02-27 | Inventec Corporation | Data exchange for two software systems co-existing on a computer |
CA2360712A1 (en) | 2001-10-31 | 2003-04-30 | Sicon Video Corporation | Method and apparatus for the data-driven synchronous parallel processing of digital data |
US6721871B2 (en) * | 2002-04-02 | 2004-04-13 | Nokia Corporation | Method and apparatus for synchronizing data stores with respect to changes in folders |
EP1495420B1 (en) | 2002-04-17 | 2008-11-12 | Nokia Corporation | Method and network device for synchronization of database data routed through a router |
US7484219B2 (en) | 2002-11-21 | 2009-01-27 | Microsoft Corporation | Synchronizing centralized data store from distributed independent data stores using fixed application programming interfaces |
US20040153473A1 (en) * | 2002-11-21 | 2004-08-05 | Norman Hutchinson | Method and system for synchronizing data in peer to peer networking environments |
US7177865B2 (en) | 2003-06-30 | 2007-02-13 | Sap Ag | Data synchronization method and system |
US20050033829A1 (en) | 2003-08-04 | 2005-02-10 | Nokia Corporation | System and method for wireless multicast downloading |
US20050216524A1 (en) | 2004-03-23 | 2005-09-29 | Integrated Data Corporation | Smart and selective synchronization between databases in a document management system |
US20060031228A1 (en) * | 2004-05-20 | 2006-02-09 | Bea Systems, Inc. | Adaptive user interface for occasionally-connected application server |
US7730026B2 (en) * | 2004-07-01 | 2010-06-01 | Apple Inc. | Method and system using reusable state information for synchronization and maintenance of data |
EP1812848A4 (en) | 2004-09-15 | 2009-04-29 | Adesso Systems Inc | SYSTEM AND METHOD FOR DATA MANAGEMENT IN A DISTRIBUTED COMPUTER SYSTEM |
US7487186B2 (en) | 2004-10-19 | 2009-02-03 | Microsoft Corporation | Protocol agnostic database change tracking |
US7317907B2 (en) | 2005-01-31 | 2008-01-08 | Research In Motion Limited | Synchronizing server and device data using device data schema |
US20060277224A1 (en) | 2005-06-07 | 2006-12-07 | Microsoft Corporation | Synchronizing arbitrary data using a flexible schema |
US20070130217A1 (en) | 2005-10-13 | 2007-06-07 | Unwired Software, Inc. | Many to many data synchronization |
-
2007
- 2007-09-14 US US11/855,864 patent/US8185494B2/en not_active Expired - Fee Related
-
2008
- 2008-09-12 JP JP2010525039A patent/JP2010539605A/ja not_active Withdrawn
- 2008-09-12 WO PCT/US2008/076262 patent/WO2009036345A2/en active Application Filing
- 2008-09-12 CN CN2008801070146A patent/CN101802815B/zh active Active
- 2008-09-12 EP EP08799519A patent/EP2201479A4/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
CN101802815A (zh) | 2010-08-11 |
WO2009036345A2 (en) | 2009-03-19 |
CN101802815B (zh) | 2013-07-17 |
US20090077138A1 (en) | 2009-03-19 |
US8185494B2 (en) | 2012-05-22 |
EP2201479A2 (en) | 2010-06-30 |
EP2201479A4 (en) | 2012-01-18 |
WO2009036345A3 (en) | 2009-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2010539605A (ja) | データ主導型の同期 | |
RU2405202C2 (ru) | Использование абстрактных описаний для генерации, обмена и конфигурирования рабочих циклов сервиса и клиента | |
JP5559140B2 (ja) | 計算環境の表現 | |
JP5046161B2 (ja) | ネットワーク・エッジ・コンピューティング向けのアプリケーション分割 | |
US20090240698A1 (en) | Computing environment platform | |
US8799230B2 (en) | Method and system for centralized issue tracking | |
Lynden et al. | The design and implementation of OGSA-DQP: A service-based distributed query processor | |
US8495594B2 (en) | Method and system for providing a componentized resource adapter architecture | |
JP2011513863A (ja) | 同期サーバープロセス | |
EP2779582B1 (en) | Automatic mobile application discovery and integration in a mobile telecommunication device | |
JP5031819B2 (ja) | サービスシーケンス内の変換のための宣言 | |
JP2012527054A (ja) | データ・ストリーム処理アプリケーションの動的な構成 | |
US20130318160A1 (en) | Device and Method for Sharing Data and Applications in Peer-to-Peer Computing Environment | |
US20200004530A1 (en) | Melding of mediation flow service component architecture (sca) components | |
KR20080023695A (ko) | 메시지를 이용하여 crm 기능성을 확장하는 방법 | |
JP2006004415A (ja) | コンテキスト交換を用いたエニュメレーションのセッションのためのフレキシブルなコンテキスト管理 | |
Mohebbi et al. | Contemporary semantic web service frameworks: An overview and comparisons | |
US11153388B2 (en) | Workflow engine framework for cross-domain extension | |
US7693807B2 (en) | Mapping between anonymous modules in a network environment | |
van Gurp et al. | Service grid variability realization | |
US11822525B2 (en) | Enterprise applications driven by common metadata repository | |
US20240152336A1 (en) | System and method for a heterogenous software platform | |
US20240054026A1 (en) | Federated distributed mutation | |
Markkula et al. | A generic architectural model approach for efficient utilization of patterns: application in the mobile domain | |
WO2008111031A2 (en) | An improved grid computing architecture and method for invoking network services for subscription |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110811 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110811 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20121010 |