JP2011520189A - ステートレスなプロトコルを介したドキュメントの同期 - Google Patents

ステートレスなプロトコルを介したドキュメントの同期 Download PDF

Info

Publication number
JP2011520189A
JP2011520189A JP2011507525A JP2011507525A JP2011520189A JP 2011520189 A JP2011520189 A JP 2011520189A JP 2011507525 A JP2011507525 A JP 2011507525A JP 2011507525 A JP2011507525 A JP 2011507525A JP 2011520189 A JP2011520189 A JP 2011520189A
Authority
JP
Japan
Prior art keywords
revision
cell
data
identifier
cells
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.)
Granted
Application number
JP2011507525A
Other languages
English (en)
Other versions
JP2011520189A5 (ja
JP4977801B2 (ja
Inventor
ピー.クラーク サイモン
アルナブ サクヤ シンハ ボーズ ミコ
ピー.ベアー ピーター
サリバ ハニ
スン シュエレイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2011520189A publication Critical patent/JP2011520189A/ja
Publication of JP2011520189A5 publication Critical patent/JP2011520189A5/ja
Application granted granted Critical
Publication of JP4977801B2 publication Critical patent/JP4977801B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/194Calculation of difference between files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/197Version control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

システム、方法およびデータ構造の例は、ドキュメントを同期化することに対して行われる。データ構成の一例は、第1のクライアントからドキュメントを編集する要求を受信し、編集セッションを始めるために短期チェックアウト(check out)メタデータ(metadata)を第1のクライアントに送信することを含む。データ構造は、ドキュメントのコンテンツを定義する複数のセルおよび複数のデータオブジェクトを含む。各データオブジェクトは、セルの1つに関連し、関連するセル内のデータオブジェクトを区別するオブジェクト識別子を有し、他のセルおよび関連するセル内のオブジェクトと通信するように構成される。さらに、セルの各々は、セルのデータオブジェクトへの変更による影響を他の各セルが受けないように定義される。

Description

本願は、ステートレスなプロトコルを介したドキュメントの同期に関する。
典型的なドキュメントシステムにおいて、ドキュメントは全体のドキュメントレベルでアクセスされ、その結果、全体のドキュメントは編集のためにクライアントコンピュータによってサーバから受信される。これは、下層のドキュメントフォーマットに関連する低レベルデータがサーバからクライアントコンピュータに伝送されることを要求する。さらに、増分のドキュメントフォーマットは、ネットワーク接続を介してガーベジコレクションされ、デフラグメンテーションされ(garbage collected and defragmented)なければならない。さらに、ロックはネットワークを介して制御される必要がある。ロックの制御は、かなりの量のコンテンツが交換されることを要求する、複雑で脆弱なタスクになる可能性がある。ガーベジコレクションおよびデフラグメンテーション(garbage collection and defragmentation)の情報を含む低レベルデータの伝送は、ロックを制御するのと同様に、不必要にアプリケーションをその低レベルのファイルフォーマットに結び付け、柔軟性がなくて非効率を招く可能性がある。
本明細書に説明されるシステムおよび方法の例は、ステートレスなプロトコル(stateless protocol)を介したファイル(例えばドキュメント)の同期および/またはローディングに関する。
1つの態様によれば、ドキュメントのドキュメントフォーマットと関係なく第1のコンピュータ装置上にドキュメントを格納するためのデータ構造は、ドキュメントのコンテンツを定義する複数のセルおよび複数のデータオブジェクトを含む。セルの各々は、ドキュメント内に特定のセルを区別するセル識別子を有し、少なくとも1つのリビジョン(revision)に関連する。各データオブジェクトは、セルの1つに関連し、関連するセル内のデータオブジェクトを区別するオブジェクト識別子を有し、他のセルおよび関連するセル内のオブジェクトに通信するように構成される。さらに、セルの各々は、このセルのデータオブジェクトへの変更による影響を他の各セルが受けないように定義される。
別の態様によれば、リビジョンのリビジョンマニフェストは、第1のコンピュータ装置のコンピュータ読み取り可能媒体上に格納される。リビジョンマニフェストは、ある時点でのセルのステート(state)を表すリビジョンを定義する。リビジョンマニフェストは、複数のオブジェクトグループ(object group)であって、各オブジェクトグループは少なくとも1つのデータオブジェクトを含む複数のオブジェクトグループと、少なくとも1つのデータオブジェクトを含む整合性ユニットであって、各整合性ユニットは整合性ユニットの1つを編集することが他の整合性ユニットに影響しないように定義されている整合性ユニットとを含む。
さらに別の態様によれば、第1のコンピュータ装置上のドキュメントを同期化する方法であって、ドキュメントがセルに分割され、各セルは少なくとも1つのリビジョンマニフェストによって定義され、上記方法は、ドキュメントに関連する第1のリビジョンおよび少なくとも1つのセルを受信するステップと、第1のコンピュータ装置の更新を受信するステップであって、上記更新は上記ドキュメントに関連する各セルに関連する更新されるリビジョン識別子を示すステップと、セルの第1のリビジョン識別子がセルの更新されるリビジョン識別子と一致する場合に、各セルの第1のリビジョンを保持するステップと、各セルの新規のリビジョンを生成するステップであって、上記新規のリビジョンの生成は、セルの第1のリビジョン識別子が、セルの更新されるリビジョン識別子と一致しない場合に、新規のリビジョンに新規のリビジョン識別子を割り当てることを含むステップと、ルートオブジェクトによって参照されないあらゆるセルを削除するステップと、セルを各セルの新規のリビジョンで置換することにより、ドキュメントを同期化するステップとを含む。セル識別子は、グローバル一意識別子(GUID:global unique identifier)および整数(INT:integer)ペアを含み、GUIDはセルおよびリビジョンのセットを定義してルートオブジェクトを含む範囲内でグローバルに一意であり、範囲内のセルはルートオブジェクトを介してアクセス可能である。セル識別子は、少なくとも1つの第1のリビジョン識別子を有する第1のリビジョンに関連する。少なくとも1つのリビジョン識別子の各々は、ある時点でのセルのステートを表す。セルは、セルおよびリビジョンのセットを定義する範囲を含み、範囲は少なくとも1つのルートオブジェクトを含む。範囲内のセルは、ルートオブジェクトを介してアクセス可能である。
この概要は、以下の詳細な説明においてさらに説明される概念の抜粋をを単純化した形式で導くように提供される。この概要は、請求項の内容の重要な特徴または本質的な特徴を特定するようには意図されていない。また、この概要も、請求された本発明の範囲を限定するために用いられるようには意図されていない。
非限定的および非網羅的な実施形態は、添付の図面を参照して説明されており、別段の定めがない限り、様々な図の全体にわたって同様の参照符号は同様の構成部分を示す。
オーサリング(authoring)システムの例を図示する概略ブロック図である。 第1のコンピュータ装置上に格納されたドキュメントが整合性のコンテンツユニットを含むことができる図1のオーサリングシステムを図示する概略ブロック図である。 整合性ユニットを示す概略ブロック図である。 範囲の概略ブロック図である。 オーサリング環境を実現するように構成されたクライアントコンピューティングシステムの例を示す概略ブロック図である。 オーサリングアプリケーションによって実行された同期処理の例を図示するフローチャートである。
以下の詳細な説明において、明細書の一部を形成する添付の図面を参照し、それにおいて特定の実施形態または実施例を実例として示す。本開示はコンピュータシステムにおけるオペレーティングシステム上で作動するアプリケーションプログラムと共に実行するプログラムモジュールの一般的なコンテキストで説明されるが、当業者は本開示を他のプログラムモジュールと組み合わせて実行することもできることを認識するであろう。本開示における原理または範囲から逸脱しない限り、本明細書に説明される実施形態は、結合されてもよいし、他の実施形態が利用されてもよい。したがって、以下の詳細な説明は、限定的な意味で解釈されるべきではなく、本開示の範囲は添付の請求項およびそれらの等価物によって特定される。
本開示における実施形態は、最小限のサーバおよび伝送資源を消費する一方で単一のクライアントがドキュメントをオーサリングでき、または複数のクライアントが共同的にドキュメントをオーサリングできる環境を提供する。実施形態の例において、共同オーサリング(coauthoring)対応のアプリケーションがドキュメントを編集している時、アプリケーションはドキュメントのピース(piece)のみを取得する。クライアントがドキュメントピース(document piece)を受信する前に、アプリケーションのデータモデルは、整合性の明示的なユニットへ分割された。
本明細書に説明される実施形態の例において、ドキュメントは整合性ユニットと呼ばれる一連のパーツに分割される。デフォルトで、ドキュメントは、全体のドキュメントを包含する単一の整合性ユニットに分割することができる。ドキュメントの構成の特定の知識が既知の場合、ドキュメントは1つ以上の整合性ユニットへ分割することができる。例えば、プレゼンテーションにおいて、POWERPOINT(登録商標)プレゼンテーショングラフィックスプログラムを用いて作成された、1つ以上のスライドから構成されるプレゼンテーションなどは、複数の整合性ユニットへ分割することができ、その中、各整合性ユニットが1つのスライドを含んでいる。例えば、10スライドから成るプレゼンテーションは、10個の整合性ユニットに分割することができる。
上述の例において、多かれ少なかれ10個の整合性ユニットが可能である。例えば、各スライドは、フッタ(footer)を含んでもよく、各フッタは整合性ユニットになりえる。したがって、10個のスライドから成るプレゼンテーションは、20個の整合性ユニットを有してもよい。さらに、デフォルトで、全体のドキュメントは1つの整合性ユニットであってもよい。
差分(delta)を実現することへの2つの主要な手法がある。第1に、差分は「diff」アルゴリズムによって明示的に計算することができる。例えば、用いられるアルゴリズムは、WINDOWSプラットフォームで見つけられるRDC(Remote Differential Compression)ライブラリであってもよい。アルゴリズム的な手法は、データが不透明(opaque)であると見なすことができ、構造または構造上の知識は必要としないことができるという長所を有する。ドキュメントのフォーマットが修正され、未知であり、または変更することができないシナリオにとって理想的である。修正され、未知であり、または変更することができないファイルフォーマットの非限定的な例は、テキストファイル、ビットマップ画像およびオーディオファイルを含む。
但し、この柔軟性に対するトレードオフは、アルゴリズムによって十分に追跡することができない変更によってもたらされた高い計算コストおよび伝送の非効率である。データが効率的な同期のために設計されていない場合、これが発生するかもしれない。すなわち、データには「明示的な」差分、または適当な変更局所性(locality)がない。
第2に、差分は、期待される変更と比較的密接に配列することができる「顆粒(granule)」と呼ぶより小さな変更ユニットに細分化することができる。差分はその後2つのステートの間で異なることができる顆粒のセットである。このスキームは、期待される更新と密接に整列される小さな変更単位にデータを効率的に細分することができる場合、それほど計算上高価でなく、より効率的になるポテンシャルがある。
2つの手法は、独立してまたは組み合わせて用いることができる。例えば、両方の手法が併用して用いられる場合、ドキュメントアクセスモデルは、整合性ユニット内の任意のレベルの粒度を提供することができる。明示的な差分スキーム(delta sheme)を介して、同期エンジンは、効率を向上させるために粒度の任意のレベルを活用することができる。
ここで図に移って、図1は、本開示の例の態様を示す特徴があるオーサリングシステム100の例を図示する。編集システム100は、ドキュメント150の原本を格納する記憶装置120を含む。1つの実施形態において、記憶装置120は、サーバ、クライアントコンピュータまたは他のコンピュータ装置を含むことができるが、それに限定されない。別の実施形態において、記憶装置120は1つ以上の記憶デバイス(例えばコンピュータ装置のネットワーク)を含むことができる。
オーサリングシステム100は、さらに、記憶装置120に通信接続された1つ以上のクライアントコンピュータ装置110A、110B、110C、110Dを含む。クライアントコンピュータ装置の各々は、1つ以上の整合性ユニット155への更新の受信し、整合性ユニット155内のデータオブジェクトを編集することにより、ドキュメント150を編集することができる。クライアントコンピュータ装置が他のクライアントコンピュータ装置と共有される更新を記憶装置120に対して定期的に送信する場合、整合性ユニット155が同期化される。
本明細書で用いられる用語として、クライアントコンピュータ装置は、ドキュメントの原本からオーサリングされるべき整合性ユニットを取得するいかなるコンピュータ装置を含む。クライアントコンピュータ装置は、記憶装置120とは異なることができる、または記憶装置120上で実行される異なるクライアントアカウントを含むことができる。1つの実施形態において、1部のドキュメントのための記憶装置120として作用するコンピュータ装置は、異なるドキュメントのための、および逆もまた同様に、クライアントコンピュータ装置として作用してもよい。
表示された例において、4つのクライアントコンピュータ装置110A、110B、110Cおよび110Dが、記憶装置120に通信接続している。但し、他の実施形態において、任意数のコンピュータ装置が記憶装置120に接続しているかもしれない。表示された例において、各クライアントコンピュータ装置110A、110B、110Cおよび110Dは、クライアントコンピュータ装置のクライアントによって生成された更新を記憶装置120に送信することができ、編集/オーサリングをするために他の整合性ユニットを記憶装置120から要求することができる。1つの実施形態において、記憶装置120は、サーバコンピュータ装置になりえるし、クライアントコンピュータ装置110A、110B、110Cおよび110Dは、クライアントコンピュータ装置になりえる。他のシステム構成も可能である。例えば、代替の実施形態において、複数サーバコンピュータ装置を用いることができる。
図2において示されるように、記憶装置120上に格納されたドキュメント150は、整合性ユニット155A、155Bへ分割されたコンテンツ152Aおよび152Bを含むことができる。クライアントコンピュータ装置110上のオーサリングアプリケーション130は、ドキュメント150の整合性ユニット155Aおよび155Bのコンテンツを処理し扱う。一般に、クライアントコンピュータ装置110Aは、コンテンツ152Aへの更新をクライアントコンピュータ装置110Bによって提供される更新とは別々に同期化することができる。更新が異なる整合性ユニットに対してなされているので、整合性ユニット間に結合競合はないであろう。
図3を参照して、整合性ユニット155A(すなわちデータ構造)は、整合性ユニット155A 305、310および315の複数のリビジョンを含んで示される。セルは同様のプロパティを有するデータオブジェクトのグループである。例えば、セルは、テキストのグルーピング、画像のグルーピングなどを包含してもよい。セル305、310および315の各々は、ドキュメント150内の特定のセルを区別するセル識別子320(セル305のみについて表示されている)を含む。セル305、310および315の各々は、セル識別子を用いて、ドキュメント150内の少なくとも1つの他のセルと通信することができる。さらに、セル305、310および315の各々は、少なくとも1つのリビジョン325(セル305のみについて表示されている)に関連する。データオブジェクトのグループのステートを包含するリビジョンによってセルのステートが記述されることに留意されたい。
各セルは、グローバル一意識別子(GUID)および整数(INT)のペアを含むセル識別子を含むことができる。各セルは、さらにセルおよびリビジョンのセットを定義するファイル内に含まれてよい。範囲はさらに少なくとも1つのルートオブジェクトを含むことができる。範囲内のセルは、ルートオブジェクトを介してアクセス可能になりえる。セル識別子は、少なくとも1つの第1のリビジョン識別子を含む第1のリビジョンに関連することができる。少なくとも1つのリビジョン識別子の各々は、ある時点でのセルのステートを表すことができる。用語ファイルは、指定された記憶装置「エンティティ」を表すために用いられており、テキストファイルまたはjpeg画像などの物理ファイルであったりする必要がないことに留意されたい。
整合性ユニット155Aは、ドキュメント150のコンテンツを定義する複数のデータオブジェクト330、335、340および345を含む。一般に、データオブジェクトは任意のバイナリデータになりえる。データオブジェクトの非排他的な例は、テキスト、画像、表、ハイパーリンク、映画ファイル、オーディオファイルなどを含む。各データオブジェクト330、335、340および345は、セル305、310および315の1つに関連して、関連するセル内にデータオブジェクトを区別するオブジェクト識別子を有する。例えば、オブジェクト識別子350は、セル305内のデータオブジェクト330を区別する。セル識別子、オブジェクト識別子およびリビジョン識別子は、GUIDとINTのペアを含むことができる。さらに、GUIDは、セル内でグローバルに一意になりえる。
各データオブジェクト330、335、340および345は、他のセルおよび関連するセル内のオブジェクトと通信するように構成される。例えば、データオブジェクト330は、対照セル310および315と通信することができ、セル310および315内に包含されるオブジェクトではない。これは、1つのセルがもう一つのセルとは別々に変更されても、整合性を保証することを支援する。一般に、オブジェクトは、同一のセルおよび他のセル内の他のオブジェクトも参照することができるが、他のセルのオブジェクトではない。さらに、セル305、310および315の各々は、セルのデータオブジェクトへの変更による影響を他の各セルが受けないように定義される。さらに、各セル305、310および315は、範囲内の少なくとも1つのセルを参照できてもよい。範囲はセルおよびリビジョンのセットを定義することができる。範囲の概略図については、図4を参照されたい。
分割の間、データオブジェクト330、335、340および345の各々は、少なくとも1つのオブジェクトグループへグループ化することができる。オブジェクトグループの利用は、対象を追跡するオーバヘッドを個々に最小化する。すべてのオブジェクトが比較的大型のシナリオにおいては、オーバヘッドが小さいので、オブジェクトグループは不必要だろう。但し、オブジェクトが任意に小さくなりうるシナリオにおいては、オブジェクトグループはオーバヘッドを制御するために用いられる。オブジェクトグループはさらにオブジェクト(すなわち変更ユニット)を得て、より大型のユニットへそれらをひとまとめにすることを可能にする。割り当ての間、グループが作られるにもかかわらず、「変更のユニット」の特性を維持しようとする必要がある。
記憶装置120は、データオブジェクトが各クライアントコンピュータ110によって更新される見込み(すなわち用法ベースのヒューリスティック)などの、様々な要因に基づいてオブジェクトグループへデータオブジェクト330、335、340および345をソートすることができる。例えば、オブジェクトは多くのカテゴリに分類することができる。カテゴリの非限定的な例は、次のものを含む。i)頻繁に変更すると知られているオブジェクトタイプ(例えばワードカウントおよび最終更新時間などのドキュメントメタデータプロパティ)、ii)非常に頻繁に変更すると知られているオブジェクトタイプ(例えば画像)、iii)周波数の変更が未知であるオブジェクト、およびiv)頻繁に変更しているオブジェクト(例えばユーザがよく修正しているリストのリスト構造)。
さらに、記憶装置120は、各データオブジェクトのサイズに基づいてオブジェクトグループへデータオブジェクト330、335、340および345をソートすることができる。例えば、サイズは、ソートアルゴリズムのための入力になりえる。オブジェクトが大型であると見なされる場合、単一のオブジェクトが些少になるように、オブジェクトを追跡するオーバヘッドがある。有益性が見なされる場合(すなわち、これは、オブジェクトを不必要に取り込むことまたは同期化することを防ぐのに役立つ)、これは特にあてはまる。オブジェクトが、オブジェクトグループのオーバヘッドに関して非常に小さい場合、オブジェクトは、オブジェクトの変更の頻度に関係なくグループ化されてもよい。
上述したように、各セル305、310および315は、範囲内の少なくとも1つのセルを参照することができてもよいし、範囲はセルおよびリビジョンのセットを定義することができる。図4は、範囲400の概略ブロック図を表示している。範囲400は、ルートセル405、セル410およびガーベジセル415を含む。例えば、ルートセル405は、リビジョン420、425および430を含む。リビジョンの一例は、最終変更の前のファイルのステートである、整合性ユニット155Aの最終に自動セーブされた実例を含んでもよい。例えば、テキストが追加された前に、リビジョンは、テキストフィールドのステートを含んでもよい(リビジョン1)。テキストがテキストフィールドに対して追加される場合、新規のリビジョンを作成することができる(リビジョン2)。したがって、「元に戻す」動作は、リビジョン2からリビジョン1に戻すであろう。さらに、各セルは、異なる数のリビジョンを含んでもよい。例えば、セル405は、2つのリビジョン(リビジョン435および440)を含み、ガーベジセルは1つのリビジョン(リビジョン445)を含む。
セルのリビジョンは、複製(または更新)ユニットが全体のドキュメントより著しく小さいことを可能にする整合性ユニットへドキュメントを分割することにより達成される。セルのリビジョンを用いることは、変更をより迅速に見ることを可能にする。部分的な同期(すなわち整合性ユニットを同期化すること対全体のドキュメント)の場合には、分割により他で見られない更新が見られる。効率的な分割により、さらにマージアプリケーションをより少なく実行することが可能になる。例えば、定義により、変更が同一の整合性ユニットにおいて発生する場合のみ、衝突が発生することができ、異なる整合性ユニットの他の変更は衝突を生じさせることができず、また、同期アプリケーションはマージを必要とせずに作動することができる。さらに、整合性ユニットは、増分のロード/セーブ動作のための実効ベースを形成することができる。アプリケーションに十分に統合された時、ロードと同期のシナリオはより応答性が高く、新規の共有/共同作業の特性を作成することができる。
整合性ユニット内の整合性を維持するために、すべての更新が整合であることを保証する必要がある。これは潜在的にトランザクションである整合的更新を形成するために相互に一括される不整合的更新を要する。サブファイルアクセスアプリケーションプログラムインタフェース(API:application programming interface)は、トランザクションを介して、抑制されない範囲レベルのバイトのアクセスなしで、更新を実行することができる。
効率的な同期およびサブファイルの複製のために、バージョニングは整合性ユニットレベル(すなわちパーティション)で用いられ実行されてもよい。その最も単純な形式では、これはそのパーティションの更新がされる場合は常に、変更する各パーティションに対してGUIDを割り当てることしか含むものはない。
更新は、整合性ユニットレベルのトラフの新バージョンを介してトランジションの形式においてなされる。同期は、クライアントとサーバとの間で新バージョン(すなわちステート)を転送することを含むことができる。但し、更新は通常小さく、クライアントとサーバとの両方が既に持つかもしれないいくつかの前ステートに基づく。これは、同期をより効率的にするために、相違あるいは差分を転送することにより活用することができる。
各リビジョンは、任意数のデータオブジェクトを含むことができる。例えば、リビジョン425には3つのデータオブジェクト(データオブジェクト450、455および460)がある。セルの各リビジョンのために、リビジョンマニフェスト470を作成することができる。リビジョンマニフェスト470は、リビジョンに包含されるオブジェクト、他のリビジョンマニフェストへの任意の依存関係/参照、およびオブジェクトグループ(すなわち、オブジェクトがどのようオブジェクトグループに配置されるか)のためのルートセットを示すことができる。各リビジョンマニフェスト470は、以前のリビジョンマニフェストにおいて定義された他のオブジェクトグループを指し示すことができる。
リビジョンマニフェスト470は、ある時点でのドキュメント150のステートを表すリビジョンを定義することができる。リビジョンマニフェスト470は、少なくとも1つのオブジェクトグループを含み、各オブジェクトグループは、少なくとも1つのデータオブジェクトを含む。リビジョンマニフェスト470は、さらに単一のリビジョンを記述し、単一のセル(それは整合性ユニットである)内のオブジェクトのステートを記述するために、定義によってのみ用いることができる。
第2のコンピュータ装置(例えば記憶装置120)は、どのデータオブジェクトがどのオブジェクトグループへ配置されるかを部分的にまたは十分に判断することができる。第2のコンピュータ装置は、さらに各オブジェクトの更新頻度に基づいて、各オブジェクトグループを定義することができる。さらに、第2のコンピュータ装置は、オブジェクトのサイズに基づいて、各オブジェクトグループを定義することができる。さらに、第1のコンピュータ装置(例えばクライアントコンピュータ110)は、どのデータオブジェクトがどのオブジェクトグループへ配置されるかに影響を及ぼすことができる。
ここで図5を参照すると、クライアント装置110Aが、より詳細に表示されている。クライアント装置110Aは、パーソナルコンピュータ、サーバコンピュータ、ノート型コンピュータ、PDA、スマートフォンまたは他の同様なコンピュータ装置になりえる。
図5において、クライアントコンピュータ装置110Aの例は、システムメモリ520に格納されたアプリケーションとプログラムとを実行するために典型的には少なくとも1つの処理装置515を含む。コンピュータ装置110A自体の構成およびタイプに依存して、システムメモリ520は、RAM、ROM、EEPROM、フラッシュメモリ、CD−ROM、DVD(digital versatile disc;デジタル多用途ディスク)または他の光記憶装置デバイス、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、または他のメモリ技術を含くことができるが、それに限定されない。
システムメモリ520は、典型的にはコンピュータ装置110Aの動作を制御するのに適している、本願特許出願人からのWINDOWS(登録商標)オペレーティングシステムなどのオペレーティングシステム522を格納する。システムメモリ520は、ドキュメントの整合性ユニット527を格納することができるドキュメントキャッシュ526をさらに含んでもよい。さらにドキュメントのメタデータ529は、クライアントキャッシュ526内に格納することができる。
システムメモリ520は、さらにドキュメントを作成し編集するために用いられる、オーサリングアプリケーション130などの、1つ以上のソフトウェアアプリケーションを格納してもよい。本開示の原理に従ってドキュメントをオーサリングするのに適しているオーサリングアプリケーション130の非限定的な1つの例は、本願特許出願人からのWORD(登録商標)ワープロソフトである。オーサリングアプリケーションの他の非限定的な例は、すべて本願特許出願人からのPOWERPOINT(登録商標)プレゼンテーションソフトウェア、VISIO(登録商標)描画および作図ソフトウェアおよびINTERNET EXPLORER(登録商標)インターネットブラウザを含む。他のソフトウェアアプリケーションも用いることができる。
コンピュータ装置110Aは、さらにデータの入力および操作のための、キーボード、マウス、ペン、音声入力デバイス、タッチ入力装置などの入力装置(複数可)530を有してもよい。表示画面、スピーカ、プリンタなどの出力装置(複数可)535も含まれてもよい。これらの出力装置535は、当業者によってよく知られており、詳細を本明細書で論じる必要はない。
コンピュータ装置110Aは、装置110Aとが分散コンピューティング環境(例えばイントラネットまたはインターネット)内のネットワークを介して、例えば図1の記憶装置120といった他のコンピュータ装置と通信することを可能にする通信接続540をさらに包含してもよい。限定ではなく具体例として、通信装置媒体540は、有線ネットワークまたはダイレクトな有線接続などの有線媒体、および音響、RF、赤外線および他の無線媒体などの無線媒体を含む。
図6は、変更が整合性ユニットに対して行なわれた後、ドキュメントを同期化する開示における実施形態に従う方法600に含まれる一般ステージを説明するフローチャートである。方法600は、図5に関して上述されているようなコンピュータ装置110Aを用いて実行されてもよい。方法600のステージを実現する方法は、よりいっそう詳細に以下で説明される。
方法600はスターティングブロック605で開始し、リビジョンおよびリビジョンが適用する任意のセルをコンピュータ装置110Aが受信してもよい場合には、ステージ610に移る。例えば、リビジョンのセットは、どのセルがそれらのステートをどのリビジョンに対してセットさせなければならないかに関して、対応する命令により受信することができる。言いかえれば、同期化するときは以下ものを受信する:i){リビジョン}−リビジョンのセット、およびii){(セル、リビジョン)}−セルidのリビジョンidタプル(tuple)のセット、これは「修正される」セルおよび受信されるリビジョンに関するそれらの新規のステートを記述する。「修正される」とは、リビジョン内のある情報が変更されたことを意味する。例えば、コンピュータ装置110Aを用いるクライアント(例えばクライアントコンピュータ)は、プレゼンテーションからスライドを受信するか、またはワープロドキュメントからヘッダ/フッタ情報を受信してもよい。一旦、変更が適用されると、格納は、ルートセルでスタートしオブジェクト/セルの参照をトラバース(tranverse)することにより「発見」されることがありえない、あらゆるセルおよび/またはリビジョンを省略することができる。「発見する」には、クライアントにデータにアクセスする方法がないので、クライアントによってもはや用いられない無関係のデータを取り除くように格納を行うことができる最適化を言及する。例えば、一旦、変更が適用されると、格納は、ルートセルからもはや直接または間接的に参照されないリビジョンおよび/または任意のセルを省略することができる。
コンピュータ装置110Aが、リビジョンおよびリビジョンが適用する任意のセルを受信するステージ610から、方法600は、コンピュータ装置110Aが整合性ユニット527への更新を受信することができるステージ620へ進めることができる。更新は、更新されるリビジョン識別子が整合性ユニット527またはドキュメント150に関連する各セルに関連することを示すことができる。例えば、コンピュータ装置110Aは、POWERPOINT(登録商標)プレゼンテーショングラフィックスプログラムを実行していてもよいし、整合性ユニット527はスライドであるかもしれない。ユーザがスライドを編集するように、スライドの更新が受信されてもよい。
一旦コンピュータ装置110Aがステージ620で整合性ユニット527への更新を受信すると、方法600は、第1のリビジョンが保持されるべきであるか、新規のリビジョンが生成されるかをコンピュータ装置110Aが判断する、ステージ680に継続することができる。第1のリビジョンが保持されるべきであるとコンピュータ装置110Aが判断する場合、方法600は、コンピュータ装置110Aが第1のリビジョンを保持することができるステージ630に継続する。セルの第1のリビジョン識別子がセルの更新されるリビジョン識別子と一致する場合、第1のリビジョンを保持することができる。第1のリビジョン識別子が、更新されるリビジョン識別子と一致することができる場合の一例は、リビジョンが作られて、その後、リビジョンが取り消される場合である。例えば、ユーザはスライド上に用語をタイプし、その後、新しくタイプされた用語を削除することができる。スライドは変更されていないので、新規のリビジョンを生成する必要はない。
新規のリビジョンが作成されるべきであるとコンピュータ装置110Aが判断する場合、方法600は、ステージ680から、コンピュータ装置110Aが新規のリビジョンを生成するステージ640に継続する。新規のリビジョンの生成は、セルの第1のリビジョン識別子がセルの更新されるリビジョン識別子と一致しない場合に、新規のリビジョンに新規のリビジョン識別子を割り当てることを含むことができる。新規のリビジョンの生成は、さらにセル内の各オブジェクトのオブジェクト識別子が更新されるオブジェクト識別子と一致するか否かを、各セルに対して判断することを含むことができる。更新されるオブジェクト識別子は、リビジョンマニフェストを定義することができる。リビジョンマニフェストは、整合性ユニット527またはドキュメントのリビジョンを定義することができ、少なくとも第1のデータオブジェクトを包含する少なくとも第1のオブジェクトグループを含んでもよい。リビジョンマニフェストは、さらに以前のリビジョンマニフェストを指し示してもよい。例えば、ユーザ編集の間に、アプリケーションは、ユーザ編集の一部として修正されるオブジェクトのセットを追跡する。その後、新規のリビジョンIDは、標準GUID発生アルゴリズムを用いて作られる。その後、オブジェクトのセットは、(上で説明されたように)オブジェクトグループへパッケージされ、その後、オブジェクトグループおよび以前のリビジョンのマニフェストは、新規のリビジョンを表す新規のリビジョンマニフェストから参照される。
一旦コンピュータ装置110Aがステージ640の新規のリビジョンを生成すると、方法600は、コンピュータ装置110Aがルートオブジェクトにより参照されないあらゆるセルをガーベジコレクションする(garbage collect)ことができるステージ650に継続することができる。ガーベジコレクション(garbage collection)は、ルートセルでスタートするオブジェクト/セルの参照をトラバースすることにより「発見者」になりえないオブジェクトを判断することを含む。ガーベジコレクションされたセルにアクセスすることができないので、それらは必要とされないであろうし、それらの削除によりディスクスペース/リソースは解放されることができる。
一旦コンピュータ装置110Aがステージ650のルートオブジェクトによって参照されないあらゆるセルを削除すると、方法600は、コンピュータ装置110Aがドキュメント150または整合性ユニット527を同期化することができるステージ660に継続することができる。例えば、コンピュータ装置110Aは、既存のセルを新規のリビジョンの各セルで置換することにより、ドキュメントを同期化することができる。一旦コンピュータ装置110Aがステージ660でドキュメント150または整合性ユニット527を同期すると、そして方法600はステージ670で終了することができる。
「1つの実施形態」「実施形態」「(複数の)実施形態」「態様」または「(複数の)態様」は、この明細書を通じて、本明細書の説明の少なくとも1つの実施形態において特定の説明された機能、構成または特性を含むかもしれないという意味で言及されてもよい。したがって、同様な語句の用法は、まさに1つ以上の実施形態または態様に言及していてもよい。さらに、説明された機能、構成または特性は、1つ以上の実施形態または態様の任意の適切な方式で結合されてもよい。さらに、複数項目への参照が単一項目を意味してもよいのと同様に、単一項目への参照が単一項目または複数項目を意味してもよい。さらに、リストに組み入れられた時「そして」という用語の利用は、リストの構成要素、リストの単一項目またはリスト内のアイテムの任意の組み合わせをすべて想定したことを示唆するように意図している。
本明細書に説明の実施形態は、コンピュータプロセス(方法)、コンピューティングシステム、またはコンピュータプログラムプロダクトもしくはコンピュータ読取り可能媒体などのような製品として実行されてもよい。その処理(プログラム)は、本明細書に記載されている構成を含む任意数の方法で実行することができる。当該方法の1つは、本明細書に記載されている型の装置の機械操作によるものである。別のオプションの方法は、動作のいくつかを実行する1人以上の人間オペレータに関連してコンピュータ装置上で実行される方法の1つ以上の単独操作に対するものである。これらの人間オペレータを互いに連結させる必要はないが、各々は、プログラムの一部を実行する機械のみである場合もある。
コンピュータプログラムプロダクトは、コンピュータシステムにより判読可能で、コンピュータプロセスを実行するための命令のコンピュータプログラムをエンコードするコンピュータ記憶装置媒体であってもよい。コンピュータプログラムプロダクトは、さらにコンピューティングシステムにより判読可能で、コンピュータプロセスを実行するための命令のコンピュータプログラムをエンコードするキャリア上の伝播された信号であってもよい。本明細書で使用される用語「コンピュータ読取り可能媒体」は、記憶媒体と通信媒体の両方を含む。
当業者は、携帯端末、マルチプロセッサシステム、マイクロプロセサベースのまたはプログラミング可能な家電、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成により明細書の説明が実施されてもよいことを十分に理解するであろう。その明細書の説明も、通信網を介してリンクされる遠隔処理装置によってタスクが実行される分散コンピューティング環境で実施することができる。分散コンピューティング環境において、プログラムモジュールは、ローカルと遠隔の記憶デバイスの両方に配置してもよい。一般に、プログラムモジュールは、特別のタスクを実施しまたは特別の抽象データ型を実行する、ルーチン、プログラム、構成要素、データ構造、および他の型の構成を含む。

Claims (20)

  1. 第1のコンピュータ装置(110A、110B、110C、110D)のコンピュータ読み取り可能媒体上でエンコードされたデータ構造(155A、155B、155C、155D)であって、前記データ構造は、
    複数のセル(305、310、315)であって、前記各セル(305、310、315)は、ドキュメント(150)内の特定のセル(305、310、315)を区別するセル識別子(320)を有し、少なくとも1つのリビジョン(revision)(445)に関連する、複数のセルと、
    前記ドキュメント(150)のコンテンツを定義する複数のデータオブジェクト(330、335、340、450、455)であって、前記データオブジェクト(330、335、340、450、455)の各々は、前記セル(305、310、315)の1つのみに関連し、前記関連するセル(305、310、315)内の前記データオブジェクト(330、335、340、450、455)を区別するオブジェクト識別子(350)を有し、他のセル(305、310、315)および前記関連するセル(305、310、315)内のオブジェクトと通信するように構成された、複数のデータオブジェクトと
    を備え、
    前記セル(305、310、315)の各々は、前記セル(305、310、315)のデータオブジェクト(330、335、340、450、455)への変更による影響を他の各セル(305、310、315)が受けないように定義されることを特徴とするデータ構造。
  2. 各セルは範囲内の少なくとも1つのセルを参照し、前記範囲はセルおよびリビジョンのセットを定義することを特徴とする請求項1に記載のデータ構造。
  3. 前記セルおよびリビジョンのセットの各々は、少なくとも1つのオブジェクトグループ(object group)にグループ化されることを特徴とする請求項2に記載のデータ構造。
  4. 前記第1のコンピュータ装置は、各データオブジェクトが更新される見込みに基づいて、前記複数のデータオブジェクトを少なくとも1つのオブジェクトグループにソート(sort)することを特徴とする請求項3に記載のデータ構造。
  5. 前記第1のコンピュータ装置は、各データオブジェクトのサイズに基づいて、前記複数のデータオブジェクトを前記少なくとも1つのオブジェクトグループにソートすることを特徴とする請求項3に記載のデータ構造。
  6. 前記セル識別子は、グローバル一意識別子および整数ペアを備えることを特徴とする請求項1に記載のデータ構造。
  7. 前記グローバル一意識別子は、前記セル内でグローバルに一意であることを特徴とする請求項6に記載のデータ構造。
  8. 前記データ構造は、修正される時に別の整合性ユニットを修正しない整合性ユニットを表すことを特徴とする請求項1に記載のデータ構造。
  9. 第1のコンピュータ装置(110A 110B、110C 110D)のコンピュータ読み取り可能媒体上に格納されたリビジョン(425)のリビジョンマニフェスト(revision manifest)(470)であって、前記リビジョンマニフェスト(470)は、ある時点でセル(305、310、315)のステート(state)を表すリビジョン(425)を定義し、前記リビジョンマニフェスト(470)は、
    複数のオブジェクトグループ(object group)であって、各オブジェクトグループは少なくとも1つのデータオブジェクト(450、455、460)を備える、複数のオブジェクトグループと、
    前記少なくとも1つのデータオブジェクト(330、335、340、450、455)を備える整合性ユニット(155、155A、155B、155C、155D)であって、各整合性ユニット(470)は、前記整合性ユニット(155、155A、155B、155C、155D)の1つを編集することが他のどの整合性ユニット(155、155A、155B、155C、155D)にも影響しないように定義されている、前記整合性ユニットと
    を備えることを特徴とするリビジョンマニフェスト。
  10. 第2のコンピュータ装置は、どのデータオブジェクトがどのオブジェクトグループへ配置されるかを、少なくとも部分的に判断することを特徴とする請求項9に記載のリビジョンマニフェスト。
  11. 前記第1のコンピュータ装置は、どのデータオブジェクトがどのオブジェクトグループへ配置されるかに影響を及ぼすことを特徴とする請求項9に記載のリビジョンマニフェスト。
  12. 第2のコンピュータ装置は、各データオブジェクトがどれくらいの頻度で更新されるかに基づいて、各オブジェクトグループを定義することを特徴とする請求項9に記載のリビジョンマニフェスト。
  13. 第2のコンピュータ装置は、前記データオブジェクトのサイズに基づいて、各オブジェクトグループを定義することを特徴とする請求項9に記載のリビジョンマニフェスト。
  14. 前記少なくとも1つのデータグループ(data group)の各々における前記少なくとも1つのデータオブジェクトは、各データオブジェクトが更新される見込みに基づいて、前記少なくとも1つのオブジェクトグループへソートされることを特徴とする請求項9に記載のリビジョンマニフェスト。
  15. 前記少なくとも1つのデータグループの各々における前記少なくとも1つのデータオブジェクトは、各データオブジェクトのサイズに基づいて、前記少なくとも1つのオブジェクトグループへソートされることを特徴とする請求項9に記載のリビジョンマニフェスト。
  16. 前記リビジョンマニフェストは、以前のリビジョンマニフェスト内で定義された少なくとも1つのオブジェクトグループを指し示すことを特徴とする請求項9に記載のリビジョンマニフェスト。
  17. 第1のコンピュータ装置(110A 110B、110C 110D)上のドキュメント(150)を同期化する方法であって、前記ドキュメント(150)はセル(305、310、315)に分割され、各セル(305、310、315)は少なくとも1つのリビジョンマニフェスト(470)によって定義され、前記方法は、
    前記ドキュメント(150)に関連する第1のリビジョン(420、425、435、440)および少なくとも1つのセル(305、310、315)を受信するステップであって、前記少なくとも1つのセル(305、310、315)はグローバル一意識別子および整数ペアを備えるセル識別子(320)を備え、前記グローバル一意識別子はグローバルに一意であり、前記セル識別子は少なくとも1つの第1のリビジョン識別子(325)を備える前記第1のリビジョン(420、425、435、440)に関連し、前記少なくとも1つのリビジョン識別子(325)の各々は、ある時点での前記セル(305、310、315)のステート(state)と、セル(305、310、315)およびリビジョン(420、425、435、440)のセットを定義する範囲とを表し、、前記範囲は少なくとも1つのルートオブジェクト(405)を含み、前記範囲内のセル(305、310、315)は前記少なくとも1つのルートオブジェクト(405)を介してアクセス可能である、ステップと、
    前記第1のコンピュータ装置(110A 110B、110C 110D)の更新を受信するステップであって、前記更新は前記ドキュメント(150)に関連する各セル(305、310、315)に関連する更新されるリビジョン識別子(325)を示す、ステップと、
    前記セルの前記第1のリビジョン識別子(325)が前記セル(305、310、315)の前記更新されるリビジョン識別子(325)と一致する場合に、各セル(305、310、315)の前記第1のリビジョン(420、425、435、440)を保持するステップと、
    各セル(305、310、315)の新規のリビジョンを生成するステップであって、前記新規のリビジョンを生成することは、セル(305、310、315)の前記第1のリビジョン識別子が前記セル(305、310、315)の前記更新されるリビジョン識別子と一致しない場合に、前記新規のリビジョンに新規のリビジョン識別子を割り当てることを備える、ステップと、
    前記ルートオブジェクト(405)によって参照されないあらゆるセル(305、310、315)を削除するステップと、
    前記セル(305、310、315)を各セル(305、310、315)の前記新規のリビジョンで置換することにより、前記ドキュメント(150)を同期化するステップと
    を備えることを特徴とする方法。
  18. 前記新規のリビジョンを生成するステップは、前記セル内の各オブジェクトのオブジェクト識別子が更新されるオブジェクト識別子と一致するか否かを、各セルに対して判断することを備えることを特徴とする請求項17に記載の方法。
  19. 前記更新されるオブジェクト識別子は、前記ドキュメントのリビジョンを定義し、少なくとも第1のデータオブジェクトを包含する少なくとも第1のオブジェクトグループを含む、リビジョンマニフェストを定義することを特徴とする請求項18に記載の方法。
  20. 前記リビジョンマニフェストは、以前のリビジョンマニフェストに定義されたオブジェクトグループを指し示すことを特徴とする請求項19に記載の方法。
JP2011507525A 2008-05-02 2009-04-07 ステートレスなプロトコルを介したドキュメントの同期 Active JP4977801B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/113,975 US8078957B2 (en) 2008-05-02 2008-05-02 Document synchronization over stateless protocols
US12/113,975 2008-05-02
PCT/US2009/039796 WO2009134596A2 (en) 2008-05-02 2009-04-07 Document synchronization over stateless protocols

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2012093148A Division JP5376696B2 (ja) 2008-05-02 2012-04-16 ステートレスなプロトコルを介したドキュメントの同期

Publications (3)

Publication Number Publication Date
JP2011520189A true JP2011520189A (ja) 2011-07-14
JP2011520189A5 JP2011520189A5 (ja) 2012-03-22
JP4977801B2 JP4977801B2 (ja) 2012-07-18

Family

ID=41255667

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2011507525A Active JP4977801B2 (ja) 2008-05-02 2009-04-07 ステートレスなプロトコルを介したドキュメントの同期
JP2012093148A Active JP5376696B2 (ja) 2008-05-02 2012-04-16 ステートレスなプロトコルを介したドキュメントの同期

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2012093148A Active JP5376696B2 (ja) 2008-05-02 2012-04-16 ステートレスなプロトコルを介したドキュメントの同期

Country Status (12)

Country Link
US (2) US8078957B2 (ja)
EP (1) EP2283439B1 (ja)
JP (2) JP4977801B2 (ja)
KR (1) KR20110010598A (ja)
CN (1) CN102016835B (ja)
AU (1) AU2009241494B2 (ja)
BR (1) BRPI0910917A2 (ja)
CA (1) CA2720235C (ja)
HK (1) HK1154670A1 (ja)
MX (1) MX2010011958A (ja)
RU (1) RU2500023C2 (ja)
WO (1) WO2009134596A2 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078957B2 (en) 2008-05-02 2011-12-13 Microsoft Corporation Document synchronization over stateless protocols
US9396279B1 (en) 2009-02-17 2016-07-19 Jpmorgan Chase Bank, Na Collaborative virtual markup
US20100268784A1 (en) * 2009-04-17 2010-10-21 Marc Henness Data synchronization system and method
US8219526B2 (en) 2009-06-05 2012-07-10 Microsoft Corporation Synchronizing file partitions utilizing a server storage model
US10140588B2 (en) * 2009-12-28 2018-11-27 International Business Machines Corporation Bill of material synchronization
US8224874B2 (en) * 2010-01-05 2012-07-17 Symantec Corporation Systems and methods for removing unreferenced data segments from deduplicated data systems
US11611595B2 (en) 2011-05-06 2023-03-21 David H. Sitrick Systems and methodologies providing collaboration among a plurality of computing appliances, utilizing a plurality of areas of memory to store user input as associated with an associated computing appliance providing the input
US10402485B2 (en) 2011-05-06 2019-09-03 David H. Sitrick Systems and methodologies providing controlled collaboration among a plurality of users
US10733151B2 (en) 2011-10-27 2020-08-04 Microsoft Technology Licensing, Llc Techniques to share media files
US9053079B2 (en) * 2011-12-12 2015-06-09 Microsoft Technology Licensing, Llc Techniques to manage collaborative documents
US8744999B2 (en) 2012-01-30 2014-06-03 Microsoft Corporation Identifier compression for file synchronization via soap over HTTP
US9372833B2 (en) 2012-09-14 2016-06-21 David H. Sitrick Systems and methodologies for document processing and interacting with a user, providing storing of events representative of document edits relative to a document; selection of a selected set of document edits; generating presentation data responsive to said selected set of documents edits and the stored events; and providing a display presentation responsive to the presentation data
US20140082473A1 (en) * 2012-09-14 2014-03-20 David H. Sitrick Systems And Methodologies Of Event Content Based Document Editing, Generating Of Respective Events Comprising Event Content, Then Defining A Selected Set Of Events, And Generating Of A Display Presentation Responsive To Processing Said Selected Set Of Events, For One To Multiple Users
US20140082472A1 (en) * 2012-09-14 2014-03-20 David H. Sitrick Systems And Methodologies For Event Processing Of Events For Edits Made Relative To A Presentation, Selecting A Selected Set Of Events; And Generating A Modified Presentation Of The Events In The Selected Set
US9336226B2 (en) 2013-01-11 2016-05-10 Commvault Systems, Inc. Criteria-based data synchronization management
US10025464B1 (en) 2013-10-07 2018-07-17 Google Llc System and method for highlighting dependent slides while editing master slides of a presentation
US10423713B1 (en) * 2013-10-15 2019-09-24 Google Llc System and method for updating a master slide of a presentation
US9336228B2 (en) * 2013-12-18 2016-05-10 Verizon Patent And Licensing Inc. Synchronization of program code between revision management applications utilizing different version-control architectures
US10169121B2 (en) 2014-02-27 2019-01-01 Commvault Systems, Inc. Work flow management for an information management system
US9785637B2 (en) * 2014-03-18 2017-10-10 Google Inc. System and method for computing, applying, and displaying document deltas
US9898520B2 (en) 2014-03-25 2018-02-20 Open Text Sa Ulc Systems and methods for seamless access to remotely managed documents using synchronization of locally stored documents
US9645891B2 (en) 2014-12-04 2017-05-09 Commvault Systems, Inc. Opportunistic execution of secondary copy operations
US9753816B2 (en) 2014-12-05 2017-09-05 Commvault Systems, Inc. Synchronization based on filtered browsing
US9588849B2 (en) 2015-01-20 2017-03-07 Commvault Systems, Inc. Synchronizing selected portions of data in a storage management system
US9952934B2 (en) 2015-01-20 2018-04-24 Commvault Systems, Inc. Synchronizing selected portions of data in a storage management system
US20160321226A1 (en) * 2015-05-01 2016-11-03 Microsoft Technology Licensing, Llc Insertion of unsaved content via content channel
US11003632B2 (en) 2016-11-28 2021-05-11 Open Text Sa Ulc System and method for content synchronization
US11301431B2 (en) 2017-06-02 2022-04-12 Open Text Sa Ulc System and method for selective synchronization
US20200327116A1 (en) * 2017-10-03 2020-10-15 Lyconos, Inc. Systems and methods for document automation
US11570099B2 (en) 2020-02-04 2023-01-31 Bank Of America Corporation System and method for autopartitioning and processing electronic resources

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020029227A1 (en) * 2000-01-25 2002-03-07 Multer David L. Management server for synchronization system
WO2002067128A1 (fr) * 2001-02-22 2002-08-29 Sony Corporation Emetteur, recepteur, emetteur/recepteur, procede de transmission et de reception
US20030004955A1 (en) * 2001-06-27 2003-01-02 Microsoft Corporation System and method for translating synchronization information between two networks based on different synchronization protocols
US20050015436A1 (en) * 2003-05-09 2005-01-20 Singh Ram P. Architecture for partition computation and propagation of changes in data replication
US20060085561A1 (en) * 2004-09-24 2006-04-20 Microsoft Corporation Efficient algorithm for finding candidate objects for remote differential compression
US20070106679A1 (en) * 2005-11-04 2007-05-10 Sun Microsystems, Inc. Dynamic intent log
WO2007126381A2 (en) * 2006-05-03 2007-11-08 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for re-constructing media from a media representation

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5867399A (en) * 1990-04-06 1999-02-02 Lsi Logic Corporation System and method for creating and validating structural description of electronic system from higher-level and behavior-oriented description
US5774868A (en) * 1994-12-23 1998-06-30 International Business And Machines Corporation Automatic sales promotion selection system and method
US6182121B1 (en) * 1995-02-03 2001-01-30 Enfish, Inc. Method and apparatus for a physical storage architecture having an improved information storage and retrieval system for a shared file environment
US5924092A (en) * 1997-02-07 1999-07-13 International Business Machines Corporation Computer system and method which sort array elements to optimize array modifications
JPH10301828A (ja) 1997-04-23 1998-11-13 Fujitsu Ltd データベース管理方法
JPH11232159A (ja) 1998-02-13 1999-08-27 The Japan Reserch Institute Ltd ファイル管理方法およびファイル管理のためのプログラムを記憶した媒体
US6801938B1 (en) 1999-06-18 2004-10-05 Torrent Systems, Inc. Segmentation and processing of continuous data streams using transactional semantics
US6671757B1 (en) * 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
AU2001288495A1 (en) * 2000-08-29 2002-03-13 Eloquent Tool for collaborative edit/search of dyanamic objects
EP1532543A4 (en) 2000-09-11 2008-04-16 Agami Systems Inc STORAGE SYSTEM COMPRISING PARTITIONED METADATA THAT MIGRATE LIKELY
JP4270771B2 (ja) * 2001-05-29 2009-06-03 富士通株式会社 表示プログラム、表示方法、および記録媒体
US7389201B2 (en) * 2001-05-30 2008-06-17 Microsoft Corporation System and process for automatically providing fast recommendations using local probability distributions
US7702563B2 (en) * 2001-06-11 2010-04-20 Otc Online Partners Integrated electronic exchange of structured contracts with dynamic risk-based transaction permissioning
TW579463B (en) 2001-06-30 2004-03-11 Ibm System and method for a caching mechanism for a central synchronization server
CA2461025A1 (en) 2001-09-26 2003-04-03 Mark Saake Efficient mangement of large files
US20030117398A1 (en) * 2001-12-21 2003-06-26 Hubrecht Alain Yves Nestor Systems and methods for rendering frames of complex virtual environments
US7127512B2 (en) * 2002-02-19 2006-10-24 Qualcomm Inc. Method and apparatus for two-phase commit in data distribution to a web farm
US7200668B2 (en) * 2002-03-05 2007-04-03 Sun Microsystems, Inc. Document conversion with merging
US7058664B1 (en) 2002-04-29 2006-06-06 Sprint Communications Company L.P. Method and system for data recovery
US6925467B2 (en) * 2002-05-13 2005-08-02 Innopath Software, Inc. Byte-level file differencing and updating algorithms
US7096311B2 (en) * 2002-09-30 2006-08-22 Innopath Software, Inc. Updating electronic files using byte-level file differencing and updating algorithms
US7138998B2 (en) * 2002-11-14 2006-11-21 Intel Corporation Multi-resolution spatial partitioning
US7325202B2 (en) * 2003-03-31 2008-01-29 Sun Microsystems, Inc. Method and system for selectively retrieving updated information from one or more websites
US7750908B2 (en) * 2003-04-04 2010-07-06 Agilent Technologies, Inc. Focus plus context viewing and manipulation of large collections of graphs
US7299404B2 (en) 2003-05-06 2007-11-20 International Business Machines Corporation Dynamic maintenance of web indices using landmarks
US20040230894A1 (en) 2003-05-16 2004-11-18 Dethe Elza Method and system for enabling collaborative authoring of hierarchical documents with versioning
US20050010576A1 (en) * 2003-07-09 2005-01-13 Liwei Ren File differencing and updating engines
US20050033811A1 (en) 2003-08-07 2005-02-10 International Business Machines Corporation Collaborative email
US7401104B2 (en) 2003-08-21 2008-07-15 Microsoft Corporation Systems and methods for synchronizing computer systems through an intermediary file system share or device
JP2005092583A (ja) 2003-09-18 2005-04-07 Nippon Telegr & Teleph Corp <Ntt> メタデータ保存方法及び装置並びにプログラム、メタデータ保存プログラムを記録した記録媒体
US20050289152A1 (en) 2004-06-10 2005-12-29 Earl William J Method and apparatus for implementing a file system
US7313575B2 (en) * 2004-06-14 2007-12-25 Hewlett-Packard Development Company, L.P. Data services handler
US7873669B2 (en) * 2004-07-09 2011-01-18 Microsoft Corporation Direct write back systems and methodologies
US7853615B2 (en) * 2004-09-03 2010-12-14 International Business Machines Corporation Hierarchical space partitioning for scalable data dissemination in large-scale distributed interactive applications
US7401192B2 (en) * 2004-10-04 2008-07-15 International Business Machines Corporation Method of replicating a file using a base, delta, and reference file
US7933868B2 (en) 2004-11-04 2011-04-26 Microsoft Corporation Method and system for partition level cleanup of replication conflict metadata
WO2006052897A2 (en) * 2004-11-08 2006-05-18 Innopath Software, Inc. Reorganizing images in static file system differencing and updating
US7480654B2 (en) 2004-12-20 2009-01-20 International Business Machines Corporation Achieving cache consistency while allowing concurrent changes to metadata
US7519579B2 (en) 2004-12-20 2009-04-14 Microsoft Corporation Method and system for updating a summary page of a document
US7953794B2 (en) 2005-01-14 2011-05-31 Microsoft Corporation Method and system for transitioning between synchronous and asynchronous communication modes
US7720890B2 (en) 2005-02-22 2010-05-18 Microsoft Corporation Ghosted synchronization
US7680835B2 (en) 2005-02-28 2010-03-16 Microsoft Corporation Online storage with metadata-based retrieval
US20080195601A1 (en) * 2005-04-14 2008-08-14 The Regents Of The University Of California Method For Information Retrieval
KR100733054B1 (ko) * 2005-07-27 2007-06-27 주식회사 유텍 구조화 문서의 동기화를 이용한 문서변환 시스템 및문서변환 방법
CA2837984C (en) * 2005-11-28 2021-11-16 Commvault Systems, Inc. Systems and methods for classifying and transferring information in a storage network
CN101005428A (zh) 2006-01-19 2007-07-25 华为技术有限公司 一种检测与解决数据同步冲突的实现方法
US20070198659A1 (en) 2006-01-25 2007-08-23 Lam Wai T Method and system for storing data
US8307119B2 (en) 2006-03-31 2012-11-06 Google Inc. Collaborative online spreadsheet application
US20080059539A1 (en) * 2006-08-08 2008-03-06 Richard Chin Document Collaboration System and Method
JP2008077485A (ja) 2006-09-22 2008-04-03 Sharp Corp 通信端末装置および制御プログラム
JP2008165299A (ja) 2006-12-27 2008-07-17 Update It Inc ドキュメント作成システム
US20080163056A1 (en) * 2006-12-28 2008-07-03 Thibaut Lamadon Method and apparatus for providing a graphical representation of content
US7933952B2 (en) 2007-06-29 2011-04-26 Microsoft Corporation Collaborative document authoring
CN100501744C (zh) * 2007-09-29 2009-06-17 腾讯科技(深圳)有限公司 一种文档同步方法及系统
US20090144654A1 (en) * 2007-10-03 2009-06-04 Robert Brouwer Methods and apparatus for facilitating content consumption
US7941399B2 (en) 2007-11-09 2011-05-10 Microsoft Corporation Collaborative authoring
US9436927B2 (en) * 2008-03-14 2016-09-06 Microsoft Technology Licensing, Llc Web-based multiuser collaboration
US9262764B2 (en) * 2008-04-30 2016-02-16 Yahoo! Inc. Modification of content representation by a brand engine in a social network
US8078957B2 (en) 2008-05-02 2011-12-13 Microsoft Corporation Document synchronization over stateless protocols
US8219526B2 (en) 2009-06-05 2012-07-10 Microsoft Corporation Synchronizing file partitions utilizing a server storage model

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020029227A1 (en) * 2000-01-25 2002-03-07 Multer David L. Management server for synchronization system
WO2002067128A1 (fr) * 2001-02-22 2002-08-29 Sony Corporation Emetteur, recepteur, emetteur/recepteur, procede de transmission et de reception
US20030004955A1 (en) * 2001-06-27 2003-01-02 Microsoft Corporation System and method for translating synchronization information between two networks based on different synchronization protocols
US20050015436A1 (en) * 2003-05-09 2005-01-20 Singh Ram P. Architecture for partition computation and propagation of changes in data replication
US20060085561A1 (en) * 2004-09-24 2006-04-20 Microsoft Corporation Efficient algorithm for finding candidate objects for remote differential compression
US20070106679A1 (en) * 2005-11-04 2007-05-10 Sun Microsystems, Inc. Dynamic intent log
WO2007126381A2 (en) * 2006-05-03 2007-11-08 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for re-constructing media from a media representation

Also Published As

Publication number Publication date
AU2009241494B2 (en) 2014-06-26
WO2009134596A2 (en) 2009-11-05
EP2283439B1 (en) 2017-02-15
US20120204090A1 (en) 2012-08-09
MX2010011958A (es) 2010-11-30
JP5376696B2 (ja) 2013-12-25
HK1154670A1 (en) 2012-04-27
US20090276698A1 (en) 2009-11-05
EP2283439A2 (en) 2011-02-16
JP2012168968A (ja) 2012-09-06
WO2009134596A3 (en) 2010-01-21
BRPI0910917A2 (pt) 2015-09-29
RU2500023C2 (ru) 2013-11-27
US8984392B2 (en) 2015-03-17
JP4977801B2 (ja) 2012-07-18
US8078957B2 (en) 2011-12-13
KR20110010598A (ko) 2011-02-01
RU2010144794A (ru) 2012-05-10
CN102016835A (zh) 2011-04-13
AU2009241494A1 (en) 2009-11-05
CN102016835B (zh) 2013-04-03
CA2720235A1 (en) 2009-11-05
EP2283439A4 (en) 2013-05-29
CA2720235C (en) 2017-03-21

Similar Documents

Publication Publication Date Title
JP5376696B2 (ja) ステートレスなプロトコルを介したドキュメントの同期
KR102432304B1 (ko) 클라이언트 동기화에서의 위반 해결
US8655840B2 (en) Method, apparatus and computer program product for sub-file level synchronization
CN107077483B (zh) 共享文件夹和文件的同步
US8983905B2 (en) Merging playlists from multiple sources
US9619546B2 (en) Synchronization adapter for synchronizing data to applications that do not directly support synchronization

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120203

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120203

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20120203

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20120308

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120316

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120416

R150 Certificate of patent or registration of utility model

Ref document number: 4977801

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150420

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250