(58)【調査した分野】(Int.Cl.,DB名)
【技術分野】
【0001】
本発明は、データの同期に関する。
【0002】
コンピュータ技術(例えば、マイクロプロセッサ速度、メモリ容量、データ転送帯域幅、ソフトウェア機能、など)の進歩は、通常さまざまな産業でコンピュータアプリケーションの増加に貢献してきた。これまで以上に、強力なサーバシステム、しばしばサーバの配列として設定されるものは、一般的に、例えば、ワールド・ワイド・ウェブなどの外部ソースから生じる要求を処理するために提供される。
【0003】
取得する電子データ量が増大するにつれて、ユーザがデータのファイル検索および情報検索を扱いやすくおよび素早くすることを容易にする管理しやすい方法によって、データを格納することがより重要となる。しばしば、ユーザは同じ情報を複数の装置または記憶場所に格納する。そして、データの複製または同期は、各データストアが同一の情報を有することを確実にするために典型的に用いられる処理である。例えば、ユーザは、電子アドレス帳または電子メールのメッセージを無数の異なる装置または記憶場所で保持しうる。ユーザは、さらに、各記憶場所と関連するアプリケーションを使って、連絡先または送受信する電子メールアドレスを修正しうる。どこで、または、どのように変更がなされたかに関係なく、複製の主要な目的は、特定の装置または特定の記憶場所においてなされた変更が、他の装置/格納された記憶場所において最終的に反映されることを確実にすることである。
【0004】
一般的な複製方法は、前回の複製後に生じた変更の追跡を伴う。例えば、他の装置へ複製しようとする装置は、他の装置に対して変更についての要求を出すことができる。他の装置が送る変更は、最新の複製以後に生じたものであることが望ましい。更新情報についての要求に応答する装置、すなわち「レプリカ」は、前回の複製後のタイムスタンプを有する変更をチェックすることができる。そのようなタイムスタンプを有する変更は、その後、複製を要求している装置へ送られる。概して、そのような複製は、各レプリカが動作中の他のレプリカまたは複製トポロジーを認識していることを要する。各レプリカは、さらに、どのような変更が他のレプリカにおいて複製されたのかという記録を保持しうる。実質的に、各レプリカは、トポロジー内の他のレプリカに格納されていると信頼される情報を保持しうる。
【0005】
2を超えるレプリカが同じ同期群またはトポロジーに含まれるとき、複製の課題はより複雑となる。これらの課題のなかで、装置が複製されたという命令に基づき現行データを旧式データへ置換すること、すでに同期しているかもしれないデータを複製すること、衝突していると報告される同期中のデータを有すること、という問題がある。
【0006】
1つの例として、3つのレプリカを含む同期群を考える。ユーザAは、時刻1にレプリカ1を更新する。時刻2に、同じデータがレプリカ2において更新される。レプリカ2は、それからレプリカ3へ複製し、そして、レプリカ2においてなされた変更はレプリカ3へ組み込まれる。レプリカ3がその後にレプリカ1から変更を受け取ると、もともとはレプリカ2に更新されていたデータが、レプリカ1からの初期データと置き換えられてしまう。たとえ、レプリカ1からの変更が最新の変更でなかったとしてでもある。
【0007】
さらに、レプリカが誤って情報が同期外にあると認識すると、通信リソースは非効率的に割り当てられ、ゆえに、不必要な同期動作を実行する。上記の例における同期群の3つのレプリカにおいて、ユーザがレプリカ1を更新すると、その変更はレプリカ2へ複製されうる。レプリカ2はその変更をレプリカ3へ複製し、レプリカ2からの情報(現在はレプリカ1からの情報でもある)はレプリカ3において変更される。同様に、レプリカ3はレプリカ1へ複製しうる。場合によっては、レプリカ3はレプリカ1が更新されたことを認識している−けれども、レプリカ1における情報バージョンを認識していない。このように、レプリカ3はレプリカ1へその情報を複製する。たとえ、同じ情報がすでにレプリカ1にあったとしてでもある。さらに、レプリカ1がレプリカ2へ複製するか、または、次の時刻に他のペアごとの複製を実行するように、付加的で不必要な複製は続く。
【0008】
他の複製の課題は、実際に衝突が存在しないときであっても、実際に衝突しているとして現れる複製データを伴うことである。上記の例において、最初に、レプリカ1における情報は更新されて、レプリカ2へ複製されうる。その後、レプリカ1における情報はレプリカ3へ複製されうる。レプリカ2および3は、最新の複製以後に生じた各々の変更(レプリカ1との複製からの)を発見するためだけに複製を試みる。たとえ、その変更が同じであったとしても、それにもかかわらず、レプリカ2および3は衝突が存在すると結論づける。
【0009】
別の問題は、特定の時刻における、データストアのデータの部分的な複製に関連する。例えば、データストアは、さまざまなフォルダに電子メールのメッセージを含む。例えば、受信ボックスフォルダ、または、電子メールの保存メッセージが入っているフォルダを含む他のフォルダである。場合によっては、ユーザは、すべての電子メールフォルダの変更を複製することを希望する(例えば、複製している装置間の通信帯域幅が大きいときなど)。一方で、より限られた帯域幅の場合は、例えば受信ボックスのように特定のフォルダのみの複製が要求される。
【0010】
他の例において、ユーザは、すべての場合で全データの一部のみを同期しうる。例えば、ユーザは、デスクトップコンピュータまたはサーバ上ですべての電子メールを保持することを希望する。しかし、限られた記憶装置を有する小型装置へは、受信ボックスおよび選択したフォルダのみを同期することを希望する。そのような場合、いくつかの情報は特定の装置と同期されることはない。
【0011】
他の例において、データストアはデジタル音楽ファイルを含む。そこでは、ユーザは、全デジタル音楽ライブラリを携帯用音楽プレーヤまたは大容量ハードディスクを有するコンピュータと同期しうる。ユーザは、限られた容量のフラッシュメモリを有する小型携帯用音楽プレーヤを使用することも希望しうる。そこでは、彼らは選択した音楽のみを格納することを望む。1つの例において、同期される音楽はさらに既定の質のデジタル音楽ファイルを含みうる(例えば、「4つの星」または「5つの星」、または、特定の時間枠のダウンロードによる評価など)。
【0012】
加えて、特定のデータを同期するときに、さまざまな付加問題が発生しうる。例えば、データはフィルタの基準に合うかもしれないし、1回または1つの装置に望ましいデータであって他の時刻または他の装置では未だそのような基準に合わないデータ(ゆえに、望ましいデータではない)かもしれない。加えて、データが、例えばある同期間のすべてのデータのサブセットであり、他の同期間のすべてのデータのときさえ、各レプリカは異なる装置から同期されたデータの認識を保持し続けることを必要とする。
【発明を実施するための形態】
【0019】
主題のさまざまな態様は、これから添付図面を参照して記載する。そこでは、同様の数字は全体を通して同様または対応する要素について言及する。しかしながら、これに関連する図面および詳細な説明は、主張する主題を開示する特定の形式に制限する意図ではないことが、理解されるべきである。むしろ、意図は、主張する主題の精神および範囲内に含まれる、すべての修正態様、同等な態様、他に取りうる態様に及ぶことである。
【0020】
図1は、主題の態様に従って、同期中に破棄項目を実装する同期群を表わす、エンドポイントのネットワーク100を例示する。エンドポイント100のネットワークは、エンドポイント102からデータを除去するが、他のエンドポイント101、103、105(1からn(nは整数である))へ、該他のエンドポイントに関連したデータのソースを同期する際に、そのような除去を伝播しない。このことは、項目を破棄項目110、112、114(1からn(nは整数である))として指定することによってなされる。破棄項目110、112、114は、同期エンドポイント102からローカルで除去することが可能であるが、同期プロセス中に他のノード101、103、105にて削除とならない項目を表わす。
【0021】
それぞれのエンドポイント101、102、103、105は、通信リンクを介して各レプリカに電子的に連結されうる。この同期群100において、すべての
レプリカが通信リンクを介して直接接続されるわけではないにもかかわらず、いずれかのレプリカにおける変更は同期群100内で他のいずれかのレプリカへ複製されうる。
【0022】
例えば、エンドポイントにおいて項目で実行される変更は、レプリカIDおよび
該変更に関連するバージョンを含む一対を含みうる「変更ID(changeID)」と関連しうる。さらに、変更IDは、実行されるまたはレプリカ「A」と関連付けされる
そのような変更、および、それらに関連するバージョンを示す
指定を含みうる。
【0023】
あるノードに関連する各レプリカは、効率的な複製を容易にする「知識(knowledge)」を表わすメタデータを保持しうる。例えば、そのような知識は、特定のレプリカが認識している変更を表わすメタデータを含みうる。したがって、この情報
は各レプリカによって保持される知識によって効果的に表わされる
ので、他のレプリカはいずれかの他の特定のレプリカがすでに認識しているものを追跡することから解放される。
【0024】
このメタデータまたは知識は、動作を支えるため、複数の手段によって格納されまたは表わされる。例えば、
(1)知識の表現へ変更を付加
(2)変更が知識の表現に含まれるかどうかの判断
(3)単一の知識の表現を形成するための2つの知識の表現をあわせた組み合わせ
例えば、知識は、複数の対のベクトルまたは複数の変更IDとして表すことができ、ここで、各対または変更IDは、レプリカのIDと、その変更と関連する最大バージョンとである。そのような表現は、「知識ベクトル(knowledge vector)」と言われる。
【0025】
他のレプリカとデータを同期
することを望むあるレプリカ(他のレプリカから、有していないいかなる変更も受け取ることを望むレプリカ)は、最初に他のレプリカへ知識を与えうる。さらに、知識を表現するデータ量、すなわち複製しているレプリカ間に送られるデータ量を減らすため、知識は先に説明したように知識ベクトルとして表わされうる。ゆえに、レプリカ間に送られる知識はすべての変更IDを含む必要はないが、多数の変更IDを表わすベクトル形式でありうる。他のレプリカは、第1のレプリカが有さない変更を列挙するために、第1のレプリカから受け取った知識をさらに使用し、
そのような変更を第1のレプリカへ送り返す。
【0026】
その後、第1のレプリカは、受け取った変更が保持する変更と衝突するかどうかを判断する。そして、適切または有効(例えば、衝突ではない、など)とみなす変更をデータストアへ組み込む。第1のレプリカは、知識の表現が受け取った新しい変更を含むように、知識の表現を更新することもできる。
【0027】
1つの複製は、あるレプリカから別のレプリカへ変更を転送すると認められる。同様に、両レプリカが他のレプリカからの変更を有するように2つのレプリカ間の複製を達成するために、2つの一方向の同期または複製が同時に― 例えば、同時刻に ― または、同期をとって、順に、実行されうる。他の態様において、変更は一方向へのみ流れうる―レプリカは別のレプリカから変更を組み込むことができる−他のレプリカにてデータを変更しないけれど(例えば、
1つの一方向の同期など)。
【0028】
他の態様において、同期要求中に、フィルタが指定または供給されうる。そのフィルタは、データストアで特定の項目
のセットを
識別するのに役立つ構図を表わす。さらに、複製中、フィルタによって
識別される変更のみが要求側に戻されるように、変更を列挙しているレプリカによって
識別される変更は、フィルタを使用してフィルタ処理されうる。例えば、携帯電話によって表わされるフィルタ処理されたレプリカにおいて、記憶装置の制限は、レプリカのフィルタ内にローカルにある項目の削除を正当化する。フィルタは、一部または全体において、レプリカ間で複製される特定のデータ
のセットを
識別する。
【0029】
図2は、更なる態様により、主題の破棄項目210の実行と、ローカルで削除された項目215の実行との例となる対照を例示する。破棄項目210は、ユーザ/レプリカがローカルの削除をリセットする場合(明確な行為を要する)を除いて、再導入されずにローカルで削除される項目215と対照的である。その時点で、それらは有効に破棄項目となり、
同期により戻されうる。さらに、破棄項目210は、項目が破棄項目であるかどうかを示す付加ビットの形式で、付加的メタデータを使用しうる。概して、レプリカは、効率的な複製を容易にする「知識」として表わされるメタデータを保持する。したがって、削除された項目は、次の同期の発生において再び現れるべきではない。対照的に、レプリカのフィルタおよび項目
の変更
のときに−レプリカは、レプリカのフィルタの範囲外に含まれる項目を破棄する。この破棄項目は、それらがフィルタに戻るとすぐに復活すべきである。
【0030】
図3は、レプリカA302と関連付けられうる破棄項目360、370、380として項目を指定する指定構成要素301を例示する。この破棄項目360、370、380は、同期エンドポイントからローカルで除去されうる項目であり、同期中に他のノードにおいて
まだ削除とならない。
したがって、「破棄」と指定される項目は、エンドポイントに認識されていて、そこから削除されて−さらに、今一度、レプリカとの再度の同期時に、そこへ再導入されて、(例えば、作成(create)として)再び現れる項目を表わす。
【0031】
以下の議論は、2つのレプリカ:レプリカA302とレプリカB304によって、エンドポイントA、Bの間の一般的な同期に関する。一般的に、変更は、あるエンドポイントから別のエンドポイントへ転送されることが望ましい。
それにもかかわらず、項目が、1つのエンドポイントからのそのような項目の除去である指定された破棄項目である場合、その項目は同期中に他の別のエンドポイントから除去されない。
【0032】
レプリカA302は、知識308を含む。この例では、KAと名づける。知識308は、変更IDのリストを含みうる。レプリカA302は、さらに変更306
のセットを含む。この例では、ΔAと名づける。同様に、レプリカB304は、KBと名づけられる知識312を含み、また、ΔBと名づけられる変更310
のセットを含む。そして、各々は変更IDと関連している。
【0033】
複製を始めるために、時刻1の動作350において、レプリカA302はレプリカB304へ同期の要求を送る。同期の要求は、レプリカAの知識308を含む。
「変更列挙(change enumeration)」と参照される動作352の1つの特定の態様において
、レプリカB304は、知識308と、変更310
のセットでの各々の変更に関連するバージョンとを比較する。その結果、変更310がすでにレプリカAの変更306にあるか、および、レプリカAの変更に存在しない変更であるかの決定をする。別の言い方をすれば、レプリカBで各々の変更を調べる代わりに、レプリカBは、知識308と、レプリカBによって保持される各項目に関連するバージョンとを比較することができる。
いずれかのプロセスを用いて、レプリカBは、レプリカAが認識していない変更を列挙できる。例えば、レプリカAの知識ベクトルがA3B12であり、レプリカBには変更ID B13およびB14であるバージョンと関連する最新の変更がある場合、レプリカAへ送られる列挙された変更は、変更ID B13およびB14に関連するものを含むことができる。1つの態様において、B13およびB14によって確認される変更が同じ項目になされたものである場合、B14のみが送られる。
【0034】
その結果、時間2の動作354において、レプリカB304はレプリカA302へ、レプリカAの知識308に含まれないバージョンに関連するレプリカBの変更310の一部のみを送る。この変更は、変更314を用いて例示される。列挙された変更に加えて、レプリカB304はレプリカA302へ、レプリカBの知識312を送ることもできる。
【0035】
この例では、レプリカAは最初はレプリカAにあったすべての変更の知識を有する。それらの変更がレプリカB304によって送られる変更によって代わられないかぎりである。加えて、レプリカBは、すでにレプリカAにはないレプリカBにおけるすべての変更を送信した。ゆえに、レプリカAは、レプリカB304が認識しているすべての変更についての情報をも有する。したがって、時間3の動作356において、レプリカAは、変更314の追加を反映するために、知識308を更新する。この場合、レプリカAの知識308をレプリカBの知識312へ加えて、その結果をレプリカAの知識308の新しい値として定義することによって
単純になすことができる。この時、まだ完成していない
場合、レプリカAはレプリカBから受信した変更を組み込むこともできる。
【0036】
この過程を通じて、効率的な複製が実行される。そこでは、必要な変更のみが複製される。そして、
個々のレプリカが、特定のレプリカ内に存在する変更、および、レプリカが認識している前回の変更についての情報を保持することを要求されるのみである。
【0037】
変更を列挙することに加えて、レプリカの知識は、変更間の衝突を検出するためにも用いられうる。これは、同期動作を開始して、両方の変更を受け取って、別のレプリカから知識を学んだレプリカのための共通タスクである−他のレプリカから受け取った変更がすでにレプリカ内にある変更と衝突するかどうかを、開始しているレプリカは決定しようとする。この文脈において、衝突は別の変更についての知識無くなされた変更として定義される。変更が別の変更の知識によってなされた場合、後の変更― 他の変更の知識によってなされる変更― は限定的な変更であるとみなされ、そして、衝突は発生したとみなされない。
【0038】
図4は、主題の態様に従って、ローカルで修正されなかった破棄項目を実装する関連方法論400を例示する。典型的な方法が、さまざまなイベントおよび/または行為の一連のブロック表現として本願明細書において例示または記載されているが、主題は、ブロックに記載された順序に制限されるものではない。例えば、本願明細書に例示される順序から離れて、主題にしたがって、いくつかの行為またはイベントは、異なる順序によって、および/または、他の行為またはイベントと同時に発生しうる。加えて、すべての例示されるブロック、イベントまたは行為が、主題に従って方法論を実装するために要するわけではない。さらに、主題による例となる方法および他の方法は、本願明細書に例示または記載されている方法、および、例示または記載されていない他のシステムおよび装置に関連して実装されうることが理解される。
【0039】
最初に、参照符号410において、ローカルで修正されていない項目を、破棄項目として指定されるように選択することができる。関連する最新のローカルの修正tickcountがゼロである場合、その項目は識別され、そして、ローカルでは修正されていないことを示す。次に、420において、項目がレプリカによって修正されていないため−したがって、該レプリカは、そこで実行されたすべてのローカルの変更について知っており、そのような情報が識別される。430において、メタデータおよび識別された情報は、エンドポイントから完全に除去されうる。440などにおいて、エンドポイントは別のエンドポイントおよび除去された破棄項目と同期することができる。
【0040】
図5は、ローカルで修正され
ている項目を破棄項目として指定する更なる方法論500を例示する。最初に、510において、最新のローカルの修正tickcountが0より大きい項目が選択される。その
ようなローカルのtickcountは、項目がローカルで修正されたことを示す。次に、520において、
そのような項目に関連する同期メタデータは保存されて、項目は破棄項目として指定される。このように、530において、他のデータ(例えば、保存されたメタデータを除いて)は、エンドポイントから除去されうる。エンドポイントは、他のエンドポイントと同期され、破棄項目として指定された項目は、同期エンドポイントからローカルで除去される。結果として、そのような除去は同期中に他のノードにて削除とならない。
【0041】
図6は、主題の更なる態様に従って、破棄項目を記憶する関連方法論600を例示する。最初に、610において、決定は、破棄項目がローカルで修正され
ているとみなされたかどうかに関してなされる。みなされない場合は、項目は、同期セッション中に原則の形で、いかなる付加行為の実装を要求することなく、620において同期されうる。それ以外では、手順は、行為632、634、636、638へ進み、以下の行為のいずれか、または組み合わせが実装されうる。
【0042】
632において、主題は、
そのような項目の知識を減らすことができる(特別な知識動作、および/または、知識を2つに分割することを要する)。項目のローカルの更新は、少なくともこれらの項目、場合によってはレプリカ全体のために、レプリカIDの変更を要する。634において、主題は、項目の古いバージョンを同期しないとしても、すべてのローカルの修正について認識していない変更を保留することを約束する。636において、項目の古いバージョンが検出されてユーザの介入を要するときに、他の態様は衝突を起こしうる。同様に、638において、項目の古いバージョンが入ってくるときに、更なる態様はレプリカIDを変更しうる。
【0043】
図7は、一態様に従って、フィルタ処理された複製が破棄項目を指定することに関連して実装されうるシステムの例となる態様を例示する。システム700は、フィルタ処理する複製システム710、項目データストアモジュール720、知識ストアモジュール730、フィルタストアモジュール740、変更一覧モジュール750、および、変更組み込みモジュール760を表わす。
【0044】
項目データストア720は、フィルタ処理する複製システムによって複製されるデータを格納および管理するように構成される。例えば、フィルタ処理する複製システム710は、データの一部として電子メールメッセージを含み、項目データストアモジュール720は、電子メールメッセージ、および電子メールフォルダ情報のような電子メールメッセージの格納および接続に関連する他のデータを、さらに格納したり、それらへの接続を提供できる。別の態様において、項目データストアモジュール720によって格納されるデータは、コンピュータ装置上に永続的データ、例えば、すべての型の他のコンピュータ可読ファイルでありすべての種類のデータを格納する電子メールメッセージ、を含む(例えば、データストアモジュール720は、特定のデータ項目の一つまたは複数のバージョンを持つことができる)。
【0045】
別の態様において、項目データストアモジュール720は、同じデータ項目の複数のバージョン間の違いを格納することができる。これにより、異なる最終完全バージョンは、データ項目の特定の最終完全バージョンへの1つまたは複数の変更に適用することによって構成される。付加的な態様において、項目データストアモジュールは項目データ情報そのものを格納することはできず、代わりに、他のところに格納される項目データ情報への接続を提供することができる。知識ストアモジュール730は、フィルタ処理する複製システム710が認識している変更およびデータについての知識を格納および管理するように構成されうる。例えば、知識ストアモジュール730は、他の知識表現と同様に、知識ベクトルを格納して、管理して、またそれへの接続を提供するように構成されうる。
【0046】
さらに、フィルタストアモジュール740は、複製において使用するフィルタについてのデータを格納および管理するように構成されうる。例えば、フィルタストアモジュール740は、いくつかの実装において、システムによって既定として、フィルタを格納して、管理して、またそれへの接続を提供するように構成されうる。先に説明したように、他の態様において、フィルタストアモジュールはフィルタ情報そのものを格納することはできず、代わりに、他のところに格納されるフィルタ情報への接続を提供することができる。同様に、変更一覧モジュール750は、別のレプリカからの複製の要求を受け取るために必要なタスクを実行するように、他のレプリカが認識していない変更を識別するように、要求を開始するレプリカへこれらの変更およびの他の有益な知識を返すように、構成されうる。
【0047】
変更組み込みモジュール760は、別のレプリカへの複製の要求を開始および送信するために必要なタスクを実行するように構成されうる。そして、別のレプリカが応答した後、衝突のため返されたデータを判断して、適切な変更をデータストアモジュール720、知識ストアモジュール730および/またはフィルタストアモジュール740へ組み込むように構成されうる。
【0048】
フィルタ処理する複製システム710は、上述のとおり、さまざまなモジュールを含む。そして、当該モジュールは、さまざまなタスクを実行することができ、フィルタを使用する複製データに関連するさまざまな機能を供給することができる。フィルタ処理する複製システム710がさまざまなモジュールを含むと共に、他の態様において、単一モジュールがシステムのモジュールと関連する1より多
いタスクまたは機能を実行できることが好ましい。例えば、項目データストアモジュール720は、知識およびフィルタについてのデータと同様に項目についてのデータを含む、システムのすべてのデータを格納することに依存される。
【0049】
別の例において、単一モジュールは、変更一覧モジュール750および変更組み込みモジュール760に関連するタスクを実行することができる。同様に、モジュールは、付加的な関連するタスクを実行することができて、1より多くのコンピュータ装置に存在しうる。例えば、1つの実装において、変更一覧モジュール750および変更組み込みモジュール760は、特定のコンピュータ装置に存在しうるが、項目データストアモジュール720、知識ストアモジュール730およびフィルタストアモジュール740は、1つまたは複数の他のコンピュータ装置に存在する。先に説明したように、複数のメタデータは、項目のために保持されて、破棄項目として表わされる指示と同期される。それらは、バージョン情報および識別子情報の終端を含みうる。さらに、ローカルのセットチックカウントは、ローカルで修正される項目のトラックを保持することができる。同様に、エンドポイント装置についての情報、および、違いの構造に関するソースの通知(例えば、以下に詳細に説明されるデルタ)は、「変更要求知識(change request knowledge)」の形式で保持されうる。この変更要求知識は、「排除項目」を呼び出すことによってローカル知識から格納されるメタデータを有する、すべての破棄項目を排除することによって、構成されうる。加えて、メタデータ知識は、ソースが、送られるデータについてすでに知られている送信先をも提供しうる変更を送信するときに関連した情報を示すことができる。
【0050】
破棄項目の古いバージョンに関して、破棄項目の古いバージョンは、概してローカルのレプリカIDを変更することを要する。そして、最後の提供者は新しいレプリカIDに関して問題とされ、同期セッションの最後でレプリカIDを変更するために内部のフラグを設定しうる。さらに、保たれなければならなかったかもしれない破棄項目のすべてのメタデータは除去されうる(例えば、破棄項目として指定される項目は、ローカルで修正されると仮定するなど)。
【0051】
以下は、データソースのプロバイダの同期を生成して、破棄項目の機能性を使用する、他の開発者のための例となるプログラムインターフェースおよびAPIsを提供する。例えば、プロバイダは新しいレプリカIDを取得するように要求されうる。そして、プロバイダが標準IDフォーマットに従う場合、自動的に生成される−または、カスタムIDフォーマットを使用する場合、プロバイダはID生成インターフェースによる新しいレプリカIDを生成するように要求されうる。
例:
interface IGlobalIdHandler:
IUnknown
{
HRESULT GetNewReplicaId(
[in,out,size_is(cbId)]BYTE*pbld,
[in]ULONG cbld));
【0052】
関連する態様において、提供者は、変更したレプリカIDを格納するように要求されうる(ID変更を確定した後に)。したがって、新しいメタデータがレプリカIDの格納を確定することと、それを提供者へ送信することとの間のウインドウを最小化することを試みることができる。そのような方法は、トランザクションがうまく確定した直後に呼び出される。
interface ISimpleSyncProviderBase:
ISyncProvider
{
HRESULT SetNewReplicaId(
[in,size_is(cbReplicaId)]BYTE*pbReplicaId,
[in]ULONG cbReplicaId);
【0053】
図8は、項目を破棄項目として指定することを容易にする推定構成要素810を例示する。例えば、ローカルの変更が他のレプリカへ伝播する機会を持つ前に、項目がローカルで更新および破棄された場合、破棄されている項目はデータ喪失となる。他の例において、項目が外部および異なるトポロジー群と同期しないとき、たとえ項目が共通要素のない群の一部分外で同期されるとしても、他の部分では知られないままである。1つの態様では、推定構成要素910は経験則を提供でき、ローカルのレプリカにて最終修正された破棄されている項目を承認しないために使用されうる。概して、この項目が破棄項目として指定される前に、少なくとも1つの他のレプリカはローカルの変更を認識したことは確かである。
【0054】
関連した態様において、用語「推定(inference)」は、一般に、システム、環境、および/または、イベントおよび/またはデータを通じての保存として監視されるユーザ、の判断または推定のプロセスについて言及する。推定は、特定の文脈または行為を識別するために使用されうるか、または、例えば、状況の確率分布を生成することができる。推定は確率的でありうる―すなわち、関心のある状態の確率分布の計算は、データおよびイベントの考慮に基づく。推定は、イベントおよび/またはデータからより高いレベルのイベントを構成するために使用される技術についても言及する。イベントが接近した時間の近似において相関性があるにせよ、イベントおよびデータが1のまたはいくつかのイベントおよびデータソースによってもたらされるにせよ、推定は結果として一連の監視されたイベントおよび/または格納されたイベントデータからの新しいイベントまたは行為の構造となる。
【0055】
推定の構成要素810は、発明を記載する本願明細書のさまざまな態様を容易にすることに関連して、上述のとおり、適切なAIに基づくスキームのいずれかを使用することができる。例えば、いつデータの喪失無く項目を破棄項目として指示するかについて明確にまたは黙示的に知るプロセスは、自動の分類システムおよびプロセスによって容易にされうる。分類は、ユーザが自動的に実行されることを望む行為を予知または推定するために、確率的および/または統計的な分析を使用する(例えば、効果と費用の分析を考慮する)。例えば、サポートベクターマシン(SVM:support vector machine)の分類子が使用されうる。他の分類アプローチは、ベイジアン・ネットワーク、ディシジョンツリー、および使用されうる非依存性の異なる様式を提供する確率的な分類モデルを含む。本願明細書で用いられる分類は、優先度の高いモデルを展開するために利用される統計回帰をも含む。
【0056】
主題の明細を容易に正しく理解できるように、主題は明確に訓練された分類規則(例えば、市販の訓練データを通じて)を使用しうる。同様に、黙示的に訓練された分類規則(例えば、ユーザの反応を監視したり、非本質的な情報を受け取る)も使用しうる。そのため、分類規則は質問を返すために答える既定の基準により自動的に決定される。例えば、十分に理解されたSVM’sに関して、SVM’sは、分類規則コンストラクターおよび特徴選択モジュールの範囲内の段階で、認識または訓練することを通じて構成される。分類規則は、入力属性ベクトル、x=(xl、x2、x3、x4、xn)を描く関数であり、入力はクラスに属すると確信する― すなわち、f(x)=confidence(class)。
【0057】
本願明細書において、用語「構成要素(component)」、「システム(system)」、「モジュール(module)」などは、コンピュータ関連のエンティティ、いずれのハードウェア、ハードウェアおよびソフトウェアの組み合わせ、ソフトウェアまたは実行中のソフトウェアに言及することを意図とする。例えば、構成要素は、プロセッサで実行中のプロセス、プロセッサ、オブジェクト、インスタンス、実行ファイル、実行のスレッド、プログラムおよび/またはコンピュータでありうるが、それらに制限されるわけではない。例示として、コンピュータ上で実行中のアプリケーションおよびコンピュータは、構成要素でありうる。1以上の構成要素は、プロセス、および/または、実行のスレッド、および、1のコンピュータにローカライズされ、および/または、2以上のコンピュータの間に分配されるコンポーネント内に存在する。
【0058】
「例として(exemplary)」という単語は、本願明細書において、例えば、事例または例示を意味するように使われる。本願明細書において「例として」と記載されているいかなる態様または構造も、必ずしも好ましいと解釈されるわけではなく、また、他の態様または構造より好都合であるというわけではない。同様に、例は、本願明細書において単に明確さと理解を目的として提供されており、主題またはいずれかの様式に関する部分を制限することを意味していない。無数の付加的または代替の例が示されうるが、簡潔さのために省略されている。
【0059】
さらに、すべてまたは一部の主題は、システム、方法、装置、製造品として実装されうる。それらは、標準プログラミングを使用し、および/または、公開する主題を実装するためにコンピュータを制御するソフトウェア、ファームウェア、ハードウェアおよびいかなるそれらの組み合わせを作るために技術を設計する。例えば、コンピュータの可読メディアは、磁気記憶装置(例えば、ハードディスク、フロッピー(登録商標)ディスク、磁気テープ)、光学ディスク(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD))、スマートカード、フラッシュメモリ装置(例えば、カード、スティック、キードライブ)を含むが、これらに限定されない。加えて、搬送波は、電子メールの送受信、またはインターネットまたはローカル・エリア・ネットワーク(LAN)などのネットワークへの接続に使用されるコンピュータの可読電子データを運ぶために用いられうることが理解されるべきである。もちろん、当業者は、主張する主題の範囲または精神から逸脱せずに、多くの修正がこの構成になされうると認める。
【0060】
公開する主題のさまざまな態様の文脈を提供するために、以下の説明と同様に
図9および10は、公開した主題のさまざまな態様が実装されうる適切な環境の簡潔で一般的な説明を提供することを目的とする。主題が、1のコンピュータおよび/または複数のコンピュータ上で動くコンピュータプログラムのコンピュータ実行可能な指示の一般的な文脈において、上記のように記載されると共に、当業者は、新たな手法は他のプログラムモジュールと組み合わせて実装されうることを認識するであろう。通常、プログラムモジュールはルーチン、プログラム、コンポーネント、データ構造などを含む。そして、特定のタスクを実行、および/または、特定の抽象データ型を実装する。さらに、当業者は、新しい手法は、シングルプロセッサまたはマルチプロセッサ・コンピュータシステム、ミニ・コンピュータ装置、メインフレームコンピュータ、同様にパーソナルコンピュータ、携帯コンピュータ(例えば、個人用デジタル補助装置(PDA)、電話、腕時計)、マイクロプロセッサが基礎である、またはプログラミングが可能な消費者または産業用の電子機器などを含む、他のコンピュータシステム構成によって実施されうることを理解するであろう。例示された態様は、タスクが通信ネットワークを通じて連結される遠隔処理装置によって実行される、分散コンピューティング環境においても実行されうる。また一方、いくつか、すべてではないにしても、新しい手法の態様は、独立型コンピュータでも実行されうる。分散コンピューティング環境において、プログラムモジュールは、ローカルおよび遠隔メモリ記憶装置の両方に位置することができる。
【0061】
図9を参照すると、主題のさまざまな態様を実装するための典型的な環境910は、コンピュータ912を含むよう記載されている。コンピュータ912は、プロセスユニット914、システムメモリ916およびシステムバス918を含む。システムバス918は、システムメモリ916を含むがこれに限定されないシステム構成要素を、プロセスユニット914に連結する。プロセスユニット914は、さまざまな利用可能プロセッサのいずれかでありうる。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャも、プロセスユニット914として使用されうる。
【0062】
システムバス918は、メモリバスまたはメモリコントローラ、周辺バスまたは外部バスを含んでいる数種類のバス構造いずれか、および/または、11―ビットバス、ISA、MSA、EISA、IDE、VLB、PCI、USB、AGP、PCMCIAおよびSCSIを含むがこれに限定されない、利用可能なバスアーキテクチャいずれかを使用しているローカルバスでありうる。
【0063】
システムメモリ916は、揮発性メモリ920および不揮発性メモリ922を含む。基本入出力システム(BIOS)は、コンピュータ912内の要素間の情報を受信するために基本的なルーチンを含んでいて、例えば起動の間に、不揮発性メモリ922に格納される。説明のために、限定ではないが、不揮発性メモリ922は、ROM、PROM、EPROM、EEPROMまたはフラッシュメモリを含みうる。揮発性メモリ920は、外部キャッシュメモリとして作用するRAMを含む。説明のために、限定ではないが、RAMは、多くの形、例えば、SRAM、DRAM、SDRAM、DDR SDRAM、ESDRAM、SLDRAMおよびDRRAMで利用可能である。
【0064】
コンピュータ912も、取り外し可能な/取り外し不可能な、揮発性/不揮発性コンピュータ記憶媒体を含む。
図9は、ディスク記憶装置924を例示する。そこにおいて、ディスク記憶装置924は、磁気ディスクドライブ、フロッピーディスクドライブ、テープドライブ、Jazドライブ、Zipドライブ、LS―60ドライブ、フラッシュメモリカードまたはメモリースティックのような装置を含むが、これらに限定されるわけではない。加えて、ディスク記憶装置924は、別に記憶媒体を含むことができる。または、これらに限定されるわけではないが、CD―ROM、CD―RDrive、CD―RWDriveまたはDVD―ROMのような光学ディスクドライブを含む他の記録媒体と組み合わせて記憶媒体を含むことができる。システムバス918へディスク記憶装置924の接続を容易にするために、取り外し可能なまたは不揮発性のインターフェースは、インターフェース926のように典型的に用いられる。
【0065】
図9は、ユーザ間の中間として作用するソフトウェア、および、適切な動作環境910に記載されている基本的なコンピュータリソースについて記載していると認められる。ソフトウェアは、オペレーティングシステム928を含む。オペレーティングシステム928は、ディスク記憶装置924に格納されうるが、コンピュータシステム912のリソースを制御および割り当てるために動作する。システムアプリケーション930は、システムメモリ916またはディスク記憶装置924のいずれかに格納される、プログラムモジュール932およびプログラムデータ934を通じたオペレーティングシステム928によるリソースの管理を活用する。本願明細書において記載されているさまざまな構成要素は、さまざまなオペレーティングシステムまたはオペレーティングシステムの組み合わせによって実装されうる。
【0066】
ユーザAは、入力装置936を通じて、コンピュータ912へ入力命令または情報を入力する。入力装置936は、これらには限定されないが、例えばマウス、トラックボール、タッチペン、タッチパッド、キーボード、マイクロフォン、ジョイスティック、ゲームパッド、衛星アンテナ、スキャナ、TVチューナーカード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラなどの画像位置指示装置を含む。これら、または、他の入力装置は、インターフェースポート938を経て、システムバス918を通じてプロセスユニット914へつながる。インターフェースポート938は、例えば、シリアルポート、パラレルポート、ゲームポートおよびUSBを含む。出力装置940は、入力装置936と
同じ型のポートを使用する。ゆえに、例えば、USBポートは、コンピュータ912へ入力をして、コンピュータ912から出力装置940へ情報を出力するために用いることができる。出力中継装置942は、特別な中継装置を必要とする他の出力装置940の間で、モニタ、スピーカおよびプリンタのような出力装置940があることを例示するために提供されている。出力中継装置942は、例示するものであり限定するものではないが、出力装置940とシステムバス918との結合の手段を提供する、ビデオおよびサウンドカードを含む。他の装置および/または装置のシステムは、遠隔コンピュータ944のように入出力の両方が可能である点に留意すべきである。
【0067】
コンピュータ912は、例えば遠隔コンピュータ944のような1以上の遠隔コンピュータへの論理接続を使用しているネットワーク化された環境で動作しうる。遠隔コンピュータ944は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロプロセッサを基礎とするアプリケーション、同等の装置または他の共通ネットワークのノードなどでありうる。そして、概して、コンピュータ912と関連して記載されている要素の多くまたはすべてを含む。簡潔さのために、メモリ記憶装置946だけが遠隔コンピュータ944で例示される。遠隔コンピュータ944は、論理的にネットワークインターフェース948によってコンピュータ912と接続している。そして、通信接続950を経て物理的に接続される。ネットワークインターフェース948は、例えばLAN、および、WANなどの通信ネットワークを含む。LAN技術は、FDDI、CDDI、イーサネット(登録商標)/IEEE 802.3、トークンリング/IEEE 802.5などを含む。WAN技術は、ポイント・ツー・ポイントリンク、ISDNおよびそのバリエーションのような回路交換ネットワーク、パケット交換ネットワークおよびDSLを含むが、これに限定されるものではない。
【0068】
通信接続950は、ネットワークインターフェース948をバス918へ接続するために使用されるハードウェア/ソフトウェアについて言及する。通信接続950は、コンピュータ912内の例示となる明瞭さを示すと共に、コンピュータ912の外部でもありうる。ネットワークインターフェース948との接続のために必要なハードウェア/ソフトウェアは、例となる目的のためにだけ、内外の技術、例えば、標準的な電話のモデム、ケーブルモデムおよびDSLモデムを含んでいるモデム、ISDNアダプタおよびイーサネットカードを含む。
【0069】
図10は、主題の態様に従って、同期している破棄項目の一部として使用されうるサンプルコンピューティング環境1000の略ブロック図である。システム1000は、1または1より多いクライアント1010を含む。クライアント1010は、ハードウェアおよび/またはソフトウェアでありうる(例えば、スレッド、プロセス、コンピュータ装置)。システム1000は、1以上のサーバ1030も含む。サーバ1030は、ハードウェアおよび/またはソフトウェアでもありうる(例えば、スレッド、プロセス、コンピュータ装置)。サーバ1030は、例えば、本願明細書において記載されている構成要素を使用することによって変換を実行するために、スレッドを収容しうる。クライアント1010とサーバ1030の間の1つの可能な通信は、2以上のコンピュータプロセスの間に送信されるのに適しているデータパケットの形でありうる。システム1000は、クライアント1010とサーバ1030の間の通信を容易にするために使用される通信フレームワーク1050を含む。クライアント1010は、クライアント1010にローカルに情報を格納するために使用される1以上のクライアントデータストア1060に、動作可能なように接続している。同様に、サーバ1030は、サーバ1030にローカルに情報を格納するために使用される1以上のサーバデータストア1040に、動作可能なように接続している。
【0070】
上記されたことは、さまざまな例となる態様を含む。確かに、これらの態様を記載するために、考えられるすべての構成要素または方法の組み合わせを記載することは可能でない。しかし、当業者は多くの更なる組み合わせおよび置換が可能であると認めることができる。したがって、本願明細書において記載されている態様は、添付の特許請求の範囲の精神および範囲内にあるすべての変更、修正、バリエーションを包含することを目的とする。
【0071】
さらに、「含む(include)」という用語が発明を実施するための形態または特許請求の範囲のどちらかで用いられる範囲まで、特許請求の範囲で暫定的な言葉として使用されるとき、「包含する(comprising)」という用語が解釈されるのと同様に包括的であることを目的とする。