JP4580389B2 - 仲介ファイルシステム共有または仲介デバイスを介してコンピュータシステムを同期させるためのシステムおよび方法 - Google Patents
仲介ファイルシステム共有または仲介デバイスを介してコンピュータシステムを同期させるためのシステムおよび方法 Download PDFInfo
- Publication number
- JP4580389B2 JP4580389B2 JP2006523868A JP2006523868A JP4580389B2 JP 4580389 B2 JP4580389 B2 JP 4580389B2 JP 2006523868 A JP2006523868 A JP 2006523868A JP 2006523868 A JP2006523868 A JP 2006523868A JP 4580389 B2 JP4580389 B2 JP 4580389B2
- Authority
- JP
- Japan
- Prior art keywords
- item
- computer system
- synchronization
- storage platform
- adapter
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 152
- 230000001360 synchronised effect Effects 0.000 claims abstract description 90
- 230000008859 change Effects 0.000 claims description 247
- 230000008569 process Effects 0.000 claims description 69
- 238000005056 compaction Methods 0.000 abstract description 15
- 230000006870 function Effects 0.000 description 64
- 238000013507 mapping Methods 0.000 description 41
- 230000007246 mechanism Effects 0.000 description 39
- 238000010586 diagram Methods 0.000 description 36
- 238000012545 processing Methods 0.000 description 34
- 238000013499 data model Methods 0.000 description 27
- 230000014759 maintenance of location Effects 0.000 description 26
- 238000004891 communication Methods 0.000 description 23
- 238000012217 deletion Methods 0.000 description 18
- 230000037430 deletion Effects 0.000 description 18
- 239000013598 vector Substances 0.000 description 14
- 230000005540 biological transmission Effects 0.000 description 13
- 230000008520 organization Effects 0.000 description 13
- 239000002609 medium Substances 0.000 description 12
- 238000013459 approach Methods 0.000 description 11
- 238000001514 detection method Methods 0.000 description 10
- 230000006399 behavior Effects 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 8
- 238000007726 management method Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 150000001875 compounds Chemical class 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 210000001072 colon Anatomy 0.000 description 5
- 230000008878 coupling Effects 0.000 description 5
- 238000010168 coupling process Methods 0.000 description 5
- 238000005859 coupling reaction Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000000844 transformation Methods 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 239000003999 initiator Substances 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000002688 persistence Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004587 chromatography analysis Methods 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- -1 consists of the item Chemical class 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000001404 mediated effect Effects 0.000 description 1
- 238000012806 monitoring device Methods 0.000 description 1
- 239000010813 municipal solid waste Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000006163 transport media Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/30—Profiles
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Computer Networks & Wireless Communication (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Hardware Redundancy (AREA)
- Arrangements For Transmission Of Measured Signals (AREA)
Description
本発明の多数の実施形態は、コンピュータ上で実行されることが可能である。図1および以下の説明は、本発明を実施することができる適切なコンピューティング環境の簡単な一般的説明を提供することを目的とする。必須ではないが、本発明の様々な態様は、クライアントワークステーションまたはサーバなどのコンピュータによって実行される、プログラムモジュール群などの、コンピュータ実行可能命令の一般的な文脈で説明することができる。一般に、プログラムモジュール群には、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。さらに、本発明は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの家庭用電化製品またはプログラマブル家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを含む、他のシステム構成を使用して実施することもできる。また、本発明は、通信ネットワークを介してリンクされたリモート処理装置群によってタスクが実行される、分散コンピューティング環境において実施することもできる。分散コンピューティング環境では、プログラムモジュール群は、ローカルメモリ記憶装置とリモートメモリ記憶装置の両方の中に配置されることが可能である。
今日のほとんどのコンピュータシステムでは、「ファイル」は、ハードウェア/ソフトウェアインターフェースシステム、ならびにアプリケーションプログラム群、データセットなどを含むことが可能な、格納可能な情報の単位である。すべての最新のハードウェア/ソフトウェアインターフェースシステム(Windows(登録商標)、Unix(登録商標)、Linux,Mac OS、仮想マシンシステムなど)において、ファイルは、ハードウェア/ソフトウェアインターフェースシステムが操作することができる基本的な個別の情報単位(例えば、データ、プログラムなど)である。グループのファイルは、一般に、「フォルダ」に編成される。Microsoft Windows(登録商標)、Macintosh OS、およびその他のハードウェア/ソフトウェアインターフェースシステムでは、フォルダは、単独の情報単位として取り出すこと、移動すること、およびそれ以外で操作することができるファイルの集合である。それらのフォルダは、「ディレクトリ」(以下により詳細に説明する)と呼ばれるツリーベースの階層構成に編成される。DOS、z/OS、およびほとんどのUnix(登録商標)ベースのオペレーティングシステムなどの、一部の他のハードウェア/ソフトウェアインターフェースシステムでは、「ディレクトリ」および/または「フォルダ」という用語は、互いに区別されず、早期のAppleコンピュータシステム(例えば、Apple IIe)は、ディレクトリの代わりに「カタログ」という用語を使用していたが、本明細書で使用するこれらの用語のすべては、同義であり、互いに区別されないものと考えられ、階層型の情報格納構造、およびそのような構造のフォルダコンポーネントおよびファイルコンポーネントを表す他のすべての均等の用語、およびそれらに対する参照をさらに含むことを意図している。
本発明は、上記に説明したとおり参照により本明細書に組み込まれている、関連する発明と一緒に、データの編成、探索、および共有を行うためのストレージプラットフォームを対象とする。本発明のストレージプラットフォームは、前述した種類の既存のファイルシステムおよびデータベースシステムを超えてデータプラットフォームを拡張し、広げ、項目と呼ばれる新たな形態のデータを含め、すべてのタイプのデータのためのストアとなるように設計される。
本明細書、および特許請求の範囲で使用する以下の用語は、以下の意味を有する。すなわち、
・ 「項目」は、単純なファイルとは異なり、ハードウェア/ソフトウェアインターフェースシステムシェルによってエンドユーザに公開されたすべてのオブジェクトにわたって共通でサポートされる基本的なプロパティセットを有するオブジェクトである、ハードウェア/ソフトウェアインターフェースシステムがアクセスすることができる格納可能な情報の単位である。項目は、新たなプロパティおよび関係が導入されることを可能にする特徴(以下により詳細に説明する)を含め、すべての項目タイプにわたって共通でサポートされるプロパティおよび関係も有する
・ 「OS」(オペレーティングシステム)は、アプリケーションプログラム群とコンピュータハードウェアの間の仲介として作用する特別なプログラムである。オペレーティングシステムは、ほとんどのケースで、シェルとカーネルを含む
・ 「ハードウェア/ソフトウェアインターフェースシステム」は、コンピュータシステムの基礎にあるハードウェアコンポーネント群と、コンピュータシステム上で実行されるアプリケーション群の間のインターフェースの役割をするソフトウェア、またはハードウェアとソフトウェアの組合せである。ハードウェア/ソフトウェアインターフェースシステムは、通常、オペレーティングシステムを含む(一部の実施形態では、オペレーティングシステムだけから成る)。また、ハードウェア/ソフトウェアインターフェースシステムは、VMM(仮想マシンマネージャ)、CLR(共通言語ランタイム)または機能的均等物、JVM(Java(登録商標)仮想マシン)または機能的均等物、またはコンピュータシステム内のオペレーティングシステムに代わる、または追加される他のそのようなソフトウェアコンポーネントも含むことが可能である。ハードウェア/ソフトウェアインターフェースシステムの目的は、ユーザが、アプリケーションプログラム群を実行することができる環境を提供することである。いずれのハードウェア/ソフトウェアインターフェースシステムの目標も、コンピュータシステムを使用しやすくするとともに、コンピュータハードウェアを効率的な形で利用することである
図3を参照すると、ストレージプラットフォーム300が、データベースエンジン314上に実装されたデータストア302を含む。一実施形態では、データベースエンジンは、オブジェクトリレーショナル拡張機能を有するリレーショナルデータベースエンジンを含む。一実施形態では、リレーショナルデータベースエンジン314は、Microsoft SQL Serverリレーショナルデータベースエンジンを含む。データストア302は、データの編成、探索、共有、同期、およびセキュリティをサポートするデータモデル304を実施する。特定のタイプのデータが、スキーマ340のようなスキーマの中で記述され、ストレージプラットフォーム300は、以下により十分に説明するとおり、それらのスキーマを展開するため、およびそれらのスキーマを拡張するためのツール346を提供する。
本発明のストレージプラットフォーム300のデータストア302は、ストア内に存在するデータの編成、探索、共有、同期、およびセキュリティをサポートするデータモデルを実施する。本発明のデータモデルでは、「項目」が、ストレージ情報の基本的な単位である。データモデルは、以下により十分に説明するとおり、項目および項目拡張を宣言するため、項目間の関係を確立するため、および項目フォルダ内およびカテゴリ内に項目を編成するためのメカニズムを提供する。
項目は、単純なファイルとは異なり、ストレージプラットフォームによってエンドユーザまたはアプリケーションプログラムに公開されたすべてのオブジェクトにわたって共通でサポートされるプロパティの基礎的なセットを有するオブジェクトである、格納可能な情報の単位である。また、項目は、以下に説明する、新たなプロパティおよび関係が導入されることを可能にする特徴を含め、すべての項目タイプにわたって共通でサポートされるプロパティおよび関係も有する。
・ 項目の項目タイプ、ならびに項目が、別の項目のサブタイプである場合(すべての項目が、基礎スキーマ内の単一の項目、および項目タイプから導出される本発明のいくつかの実施形態において該当するように)、あらゆる該当するサブタイプ情報。コピーされている元の項目が、別の項目のサブタイプである場合、そのコピーも、その同一の項目のサブタイプであることが可能である
・ 項目の複雑タイププロパティ、および、存在する場合、拡張。元の項目が、複雑タイプ(ネイティブの、または拡張された)のプロパティを有する場合、コピーも、その同一の複雑タイプを有することが可能である
・ 「所有権関係」に関する項目のレコード、つまり、他のどのような項目(「目標項目」)が、その項目(「所有側項目」)によって所有されているかという項目の独自のリスト。これは、以下により十分に説明する項目フォルダ、ならびにすべての項目が少なくとも1つの項目フォルダに属さなければならないとう以下に述べる規則に関連して特に重要である。さらに、以下により十分に説明する、組み込まれた項目に関して、組み込まれた項目は、コピー、削除などの操作のために項目が組み込まれる項目の一部と見なされる
項目は、ItemIDを使用してグローバル項目空間内で一意に識別される。Base.Itemタイプが、項目のIDを格納するGUIDというタイプのItemIDというフィールドを定義する。項目は、データストア320内で厳密に1つのIDを有さなければならない。
以下により十分に説明するとおり、グループの項目は、項目フォルダ(ファイルフォルダと混同されるべきでない)と呼ばれる特別な項目に編成されることが可能である。しかし、ほとんどのファイルシステムにおける場合とは異なり、項目は、複数の項目フォルダに属することが可能であり、したがって、ある項目が、1つの項目フォルダの中でアクセスされ、改訂されると、この改訂された項目には、別の項目フォルダから直接にアクセスが行われることが可能である。基本的に、項目へのアクセスは、異なる項目フォルダから行われることが可能であるが、実際にアクセスされるのは、実際、まったく同一の項目である。ただし、項目フォルダは、項目フォルダのメンバ項目のすべてを必ずしも所有しないか、または他のフォルダと連携して項目を単に共同所有することが可能であり、したがって、項目フォルダの削除は、項目の削除を必ずしももたらさない。それでも、本発明のいくつかの実施形態では、項目は、少なくとも1つの項目フォルダに属さなければならず、したがって、特定の項目に関する唯一の項目フォルダが削除された場合、一部の実施形態の場合、その項目は、自動的に削除されるか、あるいは代替の実施形態において、その項目は、既定の項目フォルダ(例えば、様々なファイル−フォルダベースのシステムにおいて使用される類似した名前のフォルダと概念上、類似する「ごみ箱」項目フォルダ)のメンバに自動的になる。
a)基礎スキーマ
項目の作成および使用の汎用の基礎を提供するため、本発明のストレージプラットフォームの様々な実施形態は、項目およびプロパティを作成し、編成するための概念上のフレームワークを確立する基礎スキーマを含む。基礎スキーマは、ある特別のタイプの項目およびプロパティを定義し、サブタイプをさらに導出することができるそれらの特別な基礎タイプの特徴を定義する。この基礎スキーマの使用により、プログラマが、項目(および項目のそれぞれのタイプ)をプロパティ(およびプロパティのそれぞれのタイプ)から概念上、区別することができるようになる。さらに、基礎スキーマは、すべての項目が有することが可能なプロパティの基礎的なセットを提示する。というのは、すべての項目(および項目の対応する項目タイプ)が、基礎スキーマ内のその基礎的な項目(およびそのような項目の対応する項目タイプ)から導出されるからである。
本発明のストレージプラットフォームの様々な実施形態は、最上レベルの項目タイプ構造の概念上のフレームワークを提供するコアスキーマをさらに含む。図8Aは、コアスキーマ内の項目を示すブロック図であり、図8Bは、コアスキーマ内のプロパティタイプを示すブロック図である。ファイル−フォルダベースのシステムにおいて異なる拡張子(*.com、*.exe、*.bat、*.sysなど)、および他のそのような基準を使用してファイル間で行われる区別が、コアスキーマの機能と類似している。項目ベースのハードウェア/ソフトウェアインターフェースシステムでは、コアスキーマは、直接に(項目タイプにより)、または間接的に(項目サブタイプにより)すべての項目を特徴付けて、項目ベースのハードウェア/ソフトウェアインターフェースシステムが理解し、所定の、予測できる形で直接に処理することができる1つまたは複数のコアスキーマ項目タイプに入れる、コア項目タイプのセットを定義する。事前定義された項目タイプは、項目ベースのハードウェア/ソフトウェアインターフェースシステム内の最も一般的な項目を反映し、このため、項目ベースのハードウェア/ソフトウェアインターフェースシステムが、コアスキーマを含むそれらの事前定義された項目タイプを理解することで、効率がある程度、向上する。
・ カテゴリ:その項目タイプの項目(およびその項目から派生させられたサブタイプ)が、項目ベースのハードウェア/ソフトウェアインターフェースシステムにおける有効なカテゴリを表す
・ 商品:識別可能な価値ある事物(things of value)
・ デバイス:情報処理能力をサポートする論理的構造を有する項目
・ ドキュメント:項目ベースのハードウェア/ソフトウェアインターフェースシステムによって解釈されないが、代わりに、ドキュメントタイプに対応するアプリケーションプログラムによって解釈される内容を有する項目
・ イベント:環境におけるある出現(occurence)を記録する項目
・ 場所:物理的場所(例えば、地理的場所)を表す項目
・ メッセージ:2つ以上のプリンシパル(以下に定義する)間における通信の項目
・ プリンシパル:ItemId以外に少なくとも1つの確実に証明可能なID(例えば、個人、組織、グループ、世帯、機関(authority)、サービスなどの識別)を有する項目
・ ステートメント:限定としてではなく、ポリシー、サブスクリプション、資格情報などを含む、環境に関する特別な情報を有する項目
・ 証明書(基礎スキーマ内の基礎的なPropertyBaseタイプから派生させられた)
・ プリンシパルIDキー(基礎スキーマ内のIdentityKeyから派生させられた)
・ 郵便アドレス(基礎スキーマ内のプロパティタイプから派生させられた)
・ リッチテキスト(基礎スキーマ内のプロパティタイプから派生させられた)
・ EAddress(基礎スキーマ内のプロパティタイプから派生させられた)
・ IdentitySecurityPackage(基礎スキーマ内の関係タイプから派生させられた)
・ RoleOccupancy(基礎スキーマ内の関係タイプから派生させられた)
・ BasicPresence(基礎スキーマ内の関係タイプから派生させられた)
以上の項目およびプロパティは、図8Aおよび図8Bに記載されたそれぞれののプロパティによってさらに記述される。
関係は、1つの項目が、ソースとして指定され、他方の項目が目標として指定されるバイナリ関係である。ソース項目および目標項目は、関係によって関連付けられる。ソース項目は、一般に、関係の有効期間(life−time)を支配する。つまり、ソース項目が削除されると、項目間の関係も削除される。
明示的な関係タイプは、以下の要素を使用して定義される。すなわち、
・ 名前属性の中で指定される関係名
・ 保持、組み込み、参照の1つである関係タイプ。これは、タイプ属性の中で指定される
・ ソースエンドポイントおよび目標エンドポイント。各エンドポイントは、名前、および参照された項目のタイプを指定する
・ ソースエンドポイントフィールドは、一般に、ItemID(宣言されない)のタイプであり、関係インスタンスと同一のデータストア内の項目を参照しなければならない
・ 保持関係および組み込み関係に関して、目標エンドポイントは、ItemIDReferenceというタイプでなければならず、関係インスタンスと同一のデータストア内の項目を参照しなければならない。参照関係に関して、目標エンドポイントは、任意のItemReferenceタイプであることが可能であり、他のストレージプラットフォームデータストア内の項目を参照することができる
・ オプションとして、スカラータイプ、またはPropertyBaseタイプの1つまたは複数のフィールドを宣言することができる。それらのフィールドは、関係に関連するデータを含むことが可能である
・ 関係インスタンスは、グローバル関係テーブルの中に格納される
・ すべての関係インスタンスは、組合せ(ソースItemID、関係ID)によって一意に識別される。関係IDは、関係のタイプにかかわらず、所与の項目をソースとするすべての関係に関する所与のソースItemID内で固有である
保持関係は、目標項目の参照カウントベースの有効期間管理をモデル化するのに使用される。
組み込み関係は、目標項目の有効期間の排他的支配の概念をモデル化する。組み込み関係は、複合項目の概念を可能にする。
参照関係は、その関係が参照する項目の有効期間を支配しない。さらに、参照関係は、目標の存在を保証せず、関係宣言の中で指定された目標のタイプを保証することもしない。これは、参照関係がぶら下がりであることが可能であることを意味する。また、参照関係は、他のデータストア内の項目を参照することもできる。参照関係は、Webページ内のリンクに類似した概念として考えることができる。
以下の追加の規則および制約が、関係に適用される。すなわち、
・ 項目は、(厳密に1つの組み込み関係)または(1つまたは複数の保持関係)の目標でなければならない。1つの例外は、ルート項目である。項目は、0以上の参照関係の目標であることが可能である
・ 組み込み関係の目標である項目は、保持関係のソースであることはできない。そのような項目は、参照関係のソースであることが可能である
・ 項目は、その項目がファイルから昇格された場合、保持関係のソースであることができない。そのような項目は、組み込み関係および参照関係のソースであることが可能である
・ ファイルから昇格された項目は、組み込み関係の目標であることができない
少なくとも1つの実施形態において、本発明のストレージプラットフォームは、関係の順序付けをサポートする。順序付けは、基礎関係定義における「順序」と名付けられたプロパティを介して達せられる。順序フィールドに対する一意性制約(uniqueness constraint)は、存在しない。同一の「順序」プロパティ値を有する関係群の順序は、保証されないが、それらの関係が、より低い「順序」値を有する関係群より後、より高い「順序」フィールド値を有する関係群より前に順序付けられることが可能であることは保証される。
・ RelFisrtは、OrdFisrtという順序値を有する順序付けられた集合内の最初の関係である
・ RelLastは、OrdLastという順序値を有する順序付けられた集合内の最後の関係である
・ RelXは、OrdXという順序値を有する集合内の所与の関係である
・ RelPrevは、OrdXより小さいOrdPrevという順序値を有する、RelXに対する集合の中の最も近い関係である
・ RelNextは、OrdXより大きいOrdNextという順序値を有するRelXに対する、集合内の最も近い関係である
・ InsertBeforeFirst(SourceItemID,Relashinship)は、関係を集合内の最初の関係として挿入する。その新たな関係の「順序」プロパティの値は、OrdFirstより小さいことが可能である
・ InsertAfterLast(SourceItemID,Relashinship)は、関係を集合内の最後の関係として挿入する。その新たな関係の「順序」プロパティの値は、OrdLastより大きいことが可能である
・ InsertAt(SourceItemID,ord,Relashinship)は、「順序」プロパティとして指定された値を有する関係を挿入する
・ InsertBefore(SourceItemID,ord,Relashinship)は、所与の順序値を有する関係より前に関係を挿入する。その新たな関係には、OrdPrevとordの中間の「順序」値が割り当てられることが可能である
・ InsertAfter(SourceItemID,ord,Relashinship)は、所与の順序値を有する関係より後に関係を挿入する。その新たな関係には、ordとOrdNextの中間の「順序」値が割り当てられることが可能である
・ MoveBefore(SourceItemID,ord,RelashinshipID)は、所与の関係IDを有する関係を、指定された「順序」値を有する関係より前に移動する。その関係には、OrdPrevとordの中間の新たな「順序」値が割り当てられることが可能である
・ MoveAfter(SourceItemID,ord,RelashinshipID)は、所与の関係IDを有する関係を、指定された「順序」値を有する関係より後に移動する。その関係には、ordとOrdNextの中間の新たな「順序」値が割り当てられることが可能である
ストレージプラットフォームは、前述したとおり、スキーマ340の初期セットを備えるものとされる。ただし、加えて、少なくとも一部の実施形態では、ストレージプラットフォームは、ISV(独立ソフトウェアベンダ)を含む顧客が、新たなスキーマ344(すなわち、新たな項目タイプおよび入れ子型要素タイプ)を作成することもできるようにする。このセクションは、スキーマ340の初期セットの中で定義された項目タイプおよび入れ子型要素タイプ(または単に「要素」タイプ)を拡張することにより、そのようなスキーマを作成するためのメカニズムを対象とする。
・ ISVが、新たな項目タイプ、すなわち、Base.Itemというサブタイプを導入することを許される
・ ISVが、新たな入れ子型要素タイプ、すなわち、Base.NestedElementというサブタイプを導入することを許される
・ ISVが、新たな拡張、すなわち、Base.NestedElementというサブタイプを導入することを許されるが、
・ ISVは、ストレージプラットフォームスキーマ340の初期セットによって定義されたいずれのタイプも(項目タイプ、入れ子型要素タイプ、または拡張タイプ)をサブタイプ付けすることができない
項目拡張性を提供するため、データモデルは、Base.Extensionと名付けられた抽象タイプをさらに定義する。これは、拡張タイプの階層に関するルートタイプである。アプリケーションは、Base.Extensionをサブタイプ付けして、特定の拡張タイプを作成することができる。
・ 拡張タイプは、フィールドを有し、
・ フィールドは、プリミティブ要素タイプまたは入れ子型要素タイプであることが可能であり、
・ 拡張タイプは、サブタイプ付けされることが可能である。
・ 拡張は、関係のソースおよび目標であることはできず、
・ 拡張タイプインスタンスは、項目とは独立に存在することができず、
・ 拡張タイプは、ストレージプラットフォームタイプ定義の中でフィールドタイプとして使用することができない。
入れ子型要素タイプは、項目タイプと同一のメカニズムを使用して拡張されない。入れ子型要素の拡張は、入れ子型要素タイプのフィールドと同一のメカニズムを使用して格納され、アクセスされる。
・ 入れ子型要素拡張は、拡張タイプではない。入れ子型要素拡張は、Base.Extensionタイプをルートとする拡張タイプ階層に属さない
・ 入れ子型要素拡張は、項目の他のフィールドとともに格納され、グローバルにアクセス可能ではない、つまり、所与の拡張タイプのすべてのインスタンスを取り出すクエリを作成することはできない
・ これらの拡張は、他の入れ子型要素(項目の)が格納されるのと同一の形で格納される。他の入れ子型セットと同様に、NestedElement拡張も、UDTの中に格納される。NestedElement拡張は、入れ子型要素タイプの拡張フィールドを介してアクセス可能である
・ 複数の値を有するプロパティにアクセスするのに使用される収集インターフェース群も、タイプ拡張のセットにアクセスし、そのセットを対象に繰り返す(iterate over)ために使用される
前述したとおり、データストアは、データベースエンジン上に実装される。この実施形態では、データベースエンジンは、オブジェクトリレーショナル拡張機能を有する、Microsoft SQL Serverエンジンなどの、SQL照会言語を実施するリレーショナルデータベースエンジンを含む。このセクションは、この実施形態に従って、データストアが実施するデータモデルの、リレーショナルストアへのマッピングを説明し、ストレージプラットフォームクライアントによって消費される論理APIに関する情報を提供する。ただし、異なるデータベースエンジンを使用する場合、異なるマッピングを使用することができるものと理解する。実際、リレーショナルデータベースエンジン上でストレージプラットフォーム概念データモデルを実施することに加え、データモデルは、他のタイプのデータベース上、例えば、オブジェクト指向データベースおよびXMLデータベースの上で実施することもできる。
この実施形態では、一実施形態では、Microsoft SQL Serverエンジンを含むリレーショナルデータベースエンジン314が、ビルトイン(built−in)スカラータイプをサポートする。ビルトインスカラータイプは、「ネイティブ」であり、「単純」である。ビルトインスカラータイプは、ユーザが、ユーザの独自のタイプを定義することができないという意味でネイティブであり、複雑な構造をカプセル化することができないという点で単純である。ユーザ定義タイプ(以降、UDT)が、ユーザが、複雑な構造化されたタイプを定義することによってタイプシステムを拡張することができるようにすることにより、ネイティブスカラータイプシステムを超えたタイプ拡張性のための機能を提供する。ユーザによって定義されると、UDTは、ビルトインスカラータイプが使用されることが可能なタイプシステム内のあらゆる場所で使用されることが可能である。
項目がグローバルに探索可能であること、およびこの実施形態のリレーショナルデータベースにおいて、継承およびタイプの代替可能性(substitutability)のサポートが望ましいことから、データベースストア内の項目ストレージに関する1つの可能な実施形態は、すべての項目をBase.Itemというタイプの列を有する単一のテーブルの中に格納することである。タイプ代替可能性を使用して、すべてのタイプの項目が格納されることが可能であり、探索が、Yukonの「is of(タイプ)」演算子を使用して、項目タイプおよび項目サブタイプに従ってフィルタリングされることが可能である。
拡張は、項目によく類似しており、同一の要件のいくつかを有する。継承をサポートする別のルートタイプとして、拡張は、ストレージにおける同一の考慮事項およびトレードオフの多くの対象となる。このため、単一テーブルアプローチではなく、類似したタイプファミリマッピングが、拡張にも適用される。もちろん、他の諸実施形態では、単一テーブルアプローチを使用することもできる。この実施形態では、拡張は、ItemIDで厳密に1つだけの項目に関連付けられ、項目のコンテキストにおいて一意であるExtensionIDを含む。項目の場合と同様に、ItemIDとExtensionIDのペアから成る拡張のIDを所与として、拡張を取り出す関数が提供されることが可能である。各拡張タイプに関して、項目タイプビューに類似したビューが作成される。
入れ子型要素は、項目、拡張、関係、または他の入れ子型要素に組み込み、深く入れ子になった構造を形成することができるタイプである。項目および拡張と同様に、入れ子型要素は、UDTとして実施されるが、項目および拡張の中に格納される。したがって、入れ子型要素は、入れ子型要素の項目コンテナおよび拡張コンテナのマッピングを超えたストレージマッピングは有さない。つまり、NestedElementのインスタンスを直接に格納するシステム内のテーブルは存在せず、入れ子型要素に専用のビューは存在しない。
データモデル内の各エンティティ、すなわち、各項目、各拡張、および各関係は、固有キー値を有する。項目は、項目のItemIdで一意に識別される。拡張は、(ItemId、ExtensionId)という合成キーで一意に識別される。関係は、(ItemId、RelationshipId)という合成キーで識別される。ItemId、ExtensionId、およびRelationIdは、GUID値である。
データストア内で作成されたすべてのオブジェクトは、ストレージプラットフォームスキーマ名から派生させられたSQLスキーマ名の中に格納されることが可能である。例えば、ストレージプラットフォーム基礎スキーマ(しばしば、「基礎」と呼ぶ)は、「[System.Storage].Item」などの「[System.Storage]」SQLスキーマの中でタイプを生成することができる。生成された名前には、修飾子が前置されて、名前付けの競合をなくす。適宜、感嘆文字(!)を、名前の各論理的部分に関する区切り記号(separator)として使用する。以下のテーブルが、データストア内のオブジェクトに関して使用される名前付け規約の概略を示す。各スキーマ要素(項目、拡張、関係、およびビュー)が、データストア内のインスタンスにアクセスするのに使用される修飾された(decorated)名前付けの規約とともにリストアップされている。
任意のオブジェクトモデルをストア内にマッピングする際、名前付け競合の可能性が、アプリケーションオブジェクトとともに格納される追加の情報に起因して生じる。名前付け競合を回避するため、すべてのタイプ固有でない列(タイプ宣言の中の名前付きプロパティに直接にマップされない列)に、下線(_)文字が前置されることになる。この実施形態では、下線(_)文字は、いずれの識別子プロパティの開始文字としては許されない。さらに、CLRとデータストアの間で名前付けを統一するため、ストレージプラットフォームのタイプまたはスキーマ要素(関係など)のすべてのプロパティは、大文字を使用した最初の文字を有さなければならない。
格納されたコンテンツを探索するためのビューが、ストレージプラットフォームによって提供される。各項目および各拡張タイプに関してSQLビューが提供される。さらに、関係およびビュー(データモデルによって定義される)をサポートするビューが提供される。ストレージプラットフォーム内のすべてのSQLビューおよび基礎にあるテーブルは、読み取り専用である。データは、以下により十分に説明するとおり、ストレージプラットフォームAPIのUpdate()メソッドを使用して、格納する、または変更することができる。
・ ItemId、ElementIdなどのビュー結果の論理的「キー」列
・ TypeIdなどの結果のタイプに関するメタデータ情報
・ CreateVersion、UpdateVersionなどの変更追跡列
・ タイプ固有の列(宣言されたタイプのプロパティ)
・ タイプ固有のビュー(ファミリビュー)は、オブジェクトを戻すオブジェクト列も含む。
各項目探索ビューは、特定のタイプ、またはそのタイプのサブタイプの項目の各インスタンスに関する行を含む。例えば、ドキュメントに関するビューは、ドキュメント、LegalDocument、およびReviewDocumentのインスタンスを戻すことが可能である。この例を所与として、項目ビューを図29に示すとおり概念化することができる。
ストレージプラットフォームデータストアの各インスタンスは、マスタ項目ビューと呼ばれる特別な項目ビューを定義する。このビューは、データストア内の各項目に関する概要情報を提供する。このビューは、項目のタイプを記述する列、ならびに変更追跡情報および同期情報を提供するのに使用されるいくつかの列である、項目タイププロパティ当たり1つの列を提供する。マスタ項目ビューは、「[System.Storage].[マスタ!項目]」という名前を使用してデータストア内で識別される。
各項目タイプは、探索ビューも有する。ルート項目ビューに類似するが、このビューは、「_Item」列を介して項目オブジェクトへのアクセスも提供する。各タイプ付き項目探索ビューは、[schemaName].[itemTypeName]という名前を使用してデータストア内で識別される。例えば、[AcmeCorp.Doc].[OfficeDoc]。
WinFSストア内のすべての項目拡張も、探索ビューを使用してアクセス可能である。
データストアの各インスタンスは、マスタ拡張ビューと呼ばれる特別な拡張ビューを定義する。このビューは、データストア内の各拡張に関する概要情報を提供する。ビューは、拡張のタイプを記述する列、ならびに変更追跡情報および同期情報を提供するのに使用されるいくつかの列である、拡張プロパティ当たり1つの列を提供する。マスタ項目ビューは、「[System.Storage].[マスタ!拡張]」という名前を使用してデータストア内で識別される。
各拡張タイプは、探索ビューも有する。マスタ拡張ビューに類似するが、このビューは、_Extension列を介して項目オブジェクトへのアクセスも提供する。各タイプ付き拡張探索ビューは、[schemaName].[拡張!extensionTypeName]という名前を使用してデータストア内で識別される。例えば、[AcmeCorp.Doc].[拡張!OfficeDocExt]。
すべての入れ子型要素は、項目インスタンス、拡張インスタンス、または関係インスタンスの中に格納される。このため、すべての入れ子型要素は、適切な項目探索ビュー、拡張探索ビュー、または関係探索ビューにクエリを行うことによってアクセスされる。
前述したとおり、関係は、ストレージプラットフォームデータストア内の項目間をリンクする基本的な単位を形成する。
各データストアは、マスタ関係ビューを提供する。このビューは、データストア内のすべての関係インスタンスに関する情報を提供する。マスタ関係ビューは、「[System.Storage].[マスタ!関係]」という名前を使用してデータストア内で識別される。
それぞれの宣言された関係は、特定の関係のすべてのインスタンスを戻す探索ビューも有する。マスタ関係ビューに類似するが、このビューは、関係データの各プロパティに関する名前付き列も提供する。各関係インスタンス探索ビューは、[schemaName].[関係!relationshipName]という名前を使用してデータストア内で識別される。例えば、[AcmeCorp.Doc].[関係!DocumentAuthor]。
ストレージプラットフォームデータストア内のすべてのビューは、読み取り専用である。データモデル要素(項目、拡張、または関係)の新たなインスタンスを作成するため、または既存のインスタンスを更新するため、ストレージプラットフォームAPIのProcessOperatoinメソッドまたはProcessUpdategramメソッドが使用されなければならない。ProcessOperatonメソッドは、実行されるべきアクションを詳述する「操作(operation)」を消費する、データストアによって定義された単一の格納された手続きである。ProcessUpdategramメソッドは、実行されるべきアクションのセットを一緒になって詳述する「アップデートグラム(updategram)」として知られる順序付けられた操作セットに従う格納された手続きである。
1.項目操作:
a.CreateItem(組み込み関係または保持関係のコンテキストにおいて新たな項目を作成する)
b.UpdateItem(既存の項目を更新する)
2.関係操作:
a.CreateRelationship(参照関係または保持関係のインスタンスを作成する)
b.UpdateRelationship(関係インスタンスを更新する)
c.DeleteRelationship(関係インスタンスを除去する)
3.拡張操作:
a.CreateExtension(既存の項目に拡張を追加する)
b.UpdateExtension(既存の拡張を更新する)
c.DeleteExtension(拡張を削除する)
変更追跡サービスおよび削除標識サービスが、以下により完全に説明するとおり、データストアによって提供される。このセクションは、データストア内で開示される変更追跡情報の概略を提供する。
データストアによって提供される各探索ビューは、変更追跡情報を提供するのに使用される列、すなわち、すべての項目ビュー、拡張ビュー、および関係ビューに共通である列を含む。スキーマ設計者によって明示的に定義されたストレージプラットフォームスキーマビューは、変更追跡情報を自動的に提供することはなく、そのような情報は、ビュー自体がその上に構築される探索ビューを介して間接的に提供される。
マスタ探索ビュー内の変更追跡情報は、要素の作成バージョンおよび更新バージョンに関する情報、いずれの同期パートナが要素を作成したか、いずれの同期パートナが、作成および更新のために各パートナからの要素およびバージョン番号を最後に更新したかに関する情報を提供する。同期関係(以下に説明する)におけるパートナは、パートナキーで識別される。[System.Storage.Store].ChangeTrackingInfoというタイプの_ChangeTrackingInfoと名付けられた単一のUDTが、以上の情報すべてを含む。タイプは、System.Storageスキーマの中で定義される。_ChangeTrackingInfoが、項目、拡張、および関係に関するすべてのグローバル探索ビューの中で入手可能である。ChangeTrackingInfoのタイプ定義は、以下のとおりである。すなわち、
グローバル探索ビューと同一の情報を提供することに加え、各タイプ付き探索ビューは、同期トポロジにおける各要素の同期状態を記録する追加の情報を提供する。
データストアは、項目、拡張、および関係に関する削除標識情報を提供する。削除標識ビューは、1つの場所でライブ(live)エンティティと削除標識付き(tombstoned)エンティティ(項目、拡張、および関係)の両方に関する情報を提供する。項目削除標識ビューおよび拡張削除標識ビューは、対応するオブジェクトへのアクセスを提供せず、他方、関係削除標識ビューは、関係オブジェクトへのアクセスを提供する(関係オブジェクトは、削除標識付き関係のケースではNULLである)。
項目削除標識は、[System.Storage].[削除標識!項目]というビューを介してシステムから取り出される。
拡張削除標識は、[System.Storage].[削除標識!拡張]というビューを使用してシステムから取り出される。拡張変更追跡情報は、項目に関して提供されるものに類似し、ExtensionIdプロパティが追加されている。
関係削除標識は、[System.Storage].[削除標識!関係]というビューを介してシステムから取り出される。関係削除標識情報は、拡張に関して提供されるものに類似する。ただし、関係インスタンスのItemRefという目標上で追加の情報が提供される。さらに、関係オブジェクトも選択される。
削除標識情報の限りない成長を防止するため、データストアは、削除標識クリーンアップタスクを提供する。このタスクは、いつ削除標識情報が破棄されるかを決める。タスクは、ローカル作成/更新バージョンの限界を計算し、すべてのより早期の削除標識バージョンを破棄することにより、削除標識情報を切り捨てる。
基礎マッピングは、いくつかのヘルパ関数も提供する。それらの関数は、データモデルに対する共通の操作を支援するように供給される。
ストア内で表される次の2つのタイプのメタデータが存在する。すなわち、インスタンスメタデータ(項目のタイプなど)、およびタイプメタデータである。
スキーマメタデータは、メタスキーマからの項目タイプのインスタンスとしてデータストアの中に格納される。
インスタンスメタデータは、アプリケーションによって、項目のタイプに関してクエリを行うのに使用され、項目に関連する拡張を探し出す。項目のItemIdを所与として、アプリケーションは、項目のタイプを戻すクエリをグローバル項目ビューに行い、その値を使用して、項目の宣言されたタイプに関する情報を戻すクエリをMeta.Typeに行うことができる。例えば、
一般に、すべてのセキュリティで保護することが可能な(securable)オブジェクトは、図26に示したアクセスマスク形式を使用してオブジェクトのアクセス権を取り決める(arrange)。この形式では、下位の16ビットが、オブジェクト固有のアクセス権に関し、次の7ビットが、ほとんどのタイプのオブジェクトに適用される標準のアクセス権に関し、4つの上位ビットは、各オブジェクトタイプが、標準の権利、およびオブジェクト固有の権利のセットにマップすることができる汎用のアクセス権を指定する。ACCESS_SYSTEM_SECURITYビットが、オブジェクトのSACLにアクセスする権利に対応する。
本発明の別の態様によれば、ストレージプラットフォームは、アプリケーションがデータ変更を追跡することを可能にする通知機能を提供する。この機能は、データ変更イベント時に、揮発性の状態を保持する、またはビジネス論理を実行するアプリケーションに主に向けられている。アプリケーションは、項目、拡張、および項目関係に関する通知のために登録する。通知は、データ変更がコミットされた後、非同期で配信される。アプリケーションは、項目、拡張、および関係タイプ、ならびに操作のタイプに従って通知をフィルタリングすることができる。
前述したとおり、本発明のストレージプラットフォームは、少なくとも一部の実施形態において、コンピュータシステムのハードウェア/ソフトウェアインターフェースシステムの不可分な部分として実施されることが意図されている。例えば、本発明のストレージプラットフォームは、Microsoft Windows(登録商標)ファミリのオペレーティングシステムなどのオペレーティングシステムの不可分な部分として実施されることが可能である。その資格で、ストレージプラットフォームAPIは、オペレーティングシステムAPIの一部分となり、その部分を介して、アプリケーションプログラム群が、オペレーティングシステムと対話する。このため、ストレージプラットフォームは、アプリケーションプログラム群が、オペレーティングシステム上に情報を格納する手段となり、したがって、ストレージプラットフォームの項目ベースのデータモデルが、そのようなオペレーティングシステムの従来のファイルシステムに置き換わる。例えば、Microsoft Windows(登録商標)ファミリのオペレーティングシステムにおいて、ストレージプラットフォームは、そのオペレーティングシステムにおいて実装されたNTFSファイルシステムに置き換わることが可能である。現在、アプリケーションプログラム群は、Windows(登録商標)ファミリのオペレーティングシステムによって公開されるWin32APIを介してNTFSファイルシステムのサービスにアクセスする。
ストレージプラットフォームは、アプリケーションプログラム群が、前述したストレージプラットフォームのメカニズムおよび機能にアクセスすること、およびデータストアの中に格納された項目にアクセスすることができるようにするAPIを含む。このセクションは、本発明のストレージプラットフォームのストレージプラットフォームAPIの一実施形態を説明する。この機能に関する詳細は、本明細書で上記に参照により組み込まれた関連出願において見ることができ、その情報の一部を便宜のために以下に要約する。
1.アプリケーション350a、350b、または350cが、ストレージプラットフォーム内の項目にバインドされる。
2.フレームワーク2004が、バインドされた項目に対応するItemContextオブジェクト2202を作成し、オブジェクト2202をアプリケーションに戻す。
3.アプリケーションが、そのItemContext上でFindをサブミットして項目の集合を獲得する。戻される集合は、概念上、オブジェクトグラフ2204(関係に起因する)である。
4.アプリケーションが、データの変更、削除、および挿入を行う。
5.アプリケーションが、Update()メソッドを呼び出すことによって変更を保存する。
同期のいくつかのアプローチが、項目ベースのハードウェア/ソフトウェアインターフェースシステムにおいて可能である。
本発明のいくつかの実施形態に関し、図3に関連して、ストレージプラットフォームは、(i)ストレージプラットフォームの複数のインスタンス(それぞれが独自のデータストア302を有する)が、柔軟な規則セットに従って自らの内容の諸部分を同期させることを可能にし、(ii)サードパーティが、本発明のストレージプラットフォームのデータストアを、独自のプロトコルを実施する他のデータソースと同期させるインフラストラクチャを提供する、同期サービス330を提供する。
・ 別のレプリカがいずれの変更を認識しているかを判定する
・ そのレプリカが認識している変更についての情報を要求する
・ その他のレプリカが認識していない変更についての情報を伝える
・ 2つの変更が互いに競合している場合を判定する
・ 変更をローカルで適用する
・ 他のレプリカに競合解決を伝えて、収束を確実にする
・ 競合解決のための指定されたポリシーに基づいて競合を解決する。
本発明のストレージプラットフォームの同期サービス330の主要な用途は、ストレージプラットフォームの複数のインスタンス(それぞれが独自のデータストアを有する)を同期させることである。同期サービスは、ストレージプラットフォームスキーマ(データベースエンジン314の基礎にあるテーブルではなく)のレベルで機能する。このため、例えば、以下に説明するとおり、「範囲」を使用して同期セットを定義する。
任意のアプリケーションが、同期サービスに接続し、同期操作を開始することができる。そのようなアプリケーションは、同期を実行するのに必要とされるパラメータのすべてを提供する(以下の同期プロファイルを参照されたい)。そのようなアプリケーションは、本明細書でSCA(同期制御アプリケーション)と呼ばれる。
同期サービスの基本的な概念が、変更単位の概念である。変更単位は、ストレージプラットフォームによって個々に追跡される最小のスキーマである。すべての変更単位に関して、同期サービスは、前回の同期以来、変更単位が変化しているか、変化していないかを判定できることが可能である。
自らのデータのある部分を同期させておくことを所望するストレージプラットフォームパートナのグループは、同期コミュニティと呼ばれる。コミュニティのメンバは、同期されたままであることを所望するが、必ずしもデータを完全に同一の形で表現することはしない。つまり、同期パートナは、同期させているデータを変換する(transform)可能性がある。
通信フォルダマッピングは、XML構成ファイルとして個々のマシン上に格納される。各マッピングは、以下のスキーマを有する。すなわち、
/mappings/communityFolder
この要素は、そのマッピングが関わるコミュニティフォルダを名付ける。名前は、フォルダの構文規則に従う。
この要素は、マッピングが変換する先のローカルフォルダを名付ける。フォルダは、マッピングが有効であるには、既に存在していなければならない。このフォルダ内の項目は、このマッピングに従って同期されるように考慮される。
この要素は、どのように項目をコミュニティフォルダからローカルフォルダに変換し、またローカルフォルダからコミュニティフォルダに変換して戻すかを定義する。詳細には、これは、IDがまったくマッピングされないことを意味する。この構成は、主にフォルダのキャッシュを作成するのに役立つ。
この要素は、コミュニティIDを再使用するのではなく、新たに生成されたローカルIDが、コミュニティフォルダからマップされた項目のすべてに割り当てられることを要求する。同期ランタイムが、項目を変換したり、戻したりする(convert back and forth)IDマッピングを保持する。
この要素は、コミュニティフォルダ内のすべてのルート項目が、指定されたルートの子にされることを要求する。
この要素は、誰の権限の元でこのマッピングに対する要求が処理されるかを支配する。存在しない場合、送信者と見なされる。
この要素の存在は、このマッピングへのメッセージの送信者が偽装(impersonate)され、要求が、送信者の資格情報の下で処理されなければならないことを示す。
同期プロファイルは、同期を開始するのに必要とされるパラメータの全セットである。同期プロファイルは、SCAによって同期ランタイムに供給されて、同期が開始される。ストレージプラットフォーム−ストレージプラットフォーム同期に関する同期プロファイルは、以下の情報を含む。すなわち、
・ ローカルフォルダ、変更の送信元および宛先の役割をする
・ 同期する相手のリモートフォルダ名−このフォルダは、上記に定義したマッピングを使用してリモートパートナによって公開されなければならない
・ 方向−同期サービスは、送信専用同期、受信専用同期、および送受信同期をサポートする
・ ローカルフィルタ−リモートパートナのどのようなローカル情報を送信すべきかを選択する
・ リモートフィルタ−リモートパートナからどのようなリモート情報を取り出すべきかを選択する−コミュニティフォルダを対象とするストレージプラットフォームクエリとして表現される
・ 変換−ローカル形式へ、およびローカル形式からどのように項目を変換するかを定義する
・ ローカルセキュリティ−リモートエンドポイントから取り出された変更が、ローカルエンドポイント(偽装された)の許可の下で適用されるべきか、または、ユーザが同期をローカルで開始するかを指定する
・ 競合解決ポリシー−競合が、拒否されるべきか、ログ記録されるべきか、または自動的に解決されるべきかを指定する−自動的に解決されるべき場合、競合解決ポリシーは、いずれの競合リゾルバ(resolver)が使用されるべきか、ならびにリゾルバのための構成パラメータを指定する。
一実施形態では、同期サービスは、独自のスケジュールインフラストラクチャを提供しない。代わりに、同期サービスは、別のコンポーネントに依拠してそのタスクを実行する。すなわち、Microsoft Windows(登録商標)オペレーティングシステムで利用可能なWindows(登録商標)Schedulerである。同期サービスは、SCAとして動作するコマンドラインユーティリティを含み、XMLファイルの中に保存された同期プロファイルに基づいて同期をトリガする。このユーティリティは、スケジュールに従って、あるいはユーザログオンまたはユーザログオフなどのイベントに応答して、同期を実行するようにWindows(登録商標)Schedulerを構成するのを非常に容易にする。
同期サービスにおける競合処理は、次の3つの段階に分けられる。すなわち、(1)変更適用時に行われる競合検出−このステップは、変更を安全に適用することができるかどうかを判定する、(2)自動競合解決およびログ記録−このステップ(競合が検出された直後に行われる)中、自動競合リゾルバ(または「競合ハンドラ」)に問い合わせが行われて、競合を解決することができるかどうかが確かめられる−解決することができない場合、競合は、オプションとしてログ記録されることが可能である、および(3)競合検査および競合解決−このステップは、いくつかの競合がログ記録されている場合に行われ、同期セッションのコンテキスト外で行われる−その時点で、ログ記録された競合が解決され、ログから削除されることが可能である。競合処理を対象とする本発明の様々な実施形態は、セクションIIIで以下にはるかに詳細に説明する。
本発明のストレージプラットフォームの別の態様によれば、セクションIVで以下に説明する本発明の様々な実施形態により密接に関連して、ストレージプラットフォームは、ストレージプラットフォームが、Microsoft Exchange、AD、Hotmailなどのレガシシステムに同期することを可能にする同期アダプタを実装するISVのためのアーキテクチャを提供する。同期アダプタは、以下に説明するとおり、同期サービスによって提供される多くの同期サービスの恩恵を受ける。
同期サービスは、いくつかのサービスをアダプタライタに提供する。このセクションの残りの部分に関して、ストレージプラットフォームが同期を行っているマシンを「クライアント」と呼び、アダプタが通信している(talking to)非ストレージプラットフォームバックエンドを「サーバ」と呼ぶことが好都合である。
同期サービスによって保持される変更追跡データに基づき、変更列挙は、そのパートナとの前回の同期が試みられて以来、データストアフォルダに対して行われた変更を同期アダプタが容易に列挙することを可能にする。
変更適用は、同期アダプタが、アダプタのバックエンドから受け取られた変更をローカルのストレージプラットフォームに適用することを可能にする。アダプタは、変更をストレージプラットフォームスキーマに変換することが予期される。図24は、ストレージプラットフォームAPIクラスがストレージプラットフォームスキーマから生成されるプロセスを示す。
以下に説明する競合解決メカニズム(ログ記録オプションおよび自動解決オプションを含む)も、同期アダプタに利用可能である。同期アダプタは、変更を適用する際、競合解決のためのポリシーを指定することができる。指定された場合、競合は、指定された競合ハンドラに送られ、解決される(可能な場合)ことが可能である。競合は、ログ記録されることも可能である。アダプタが、ローカルの変更をバックエンドに適用しようと試みている際、競合を検出する可能性があることが可能である。そのようなケースでは、アダプタは、ポリシーによって解決されるように、やはり同期ランタイムに転送することができる。加えて、同期アダプタは、同期サービスによって検出されたあらゆる競合が、処理のために同期アダプタに送り返されることを要求することができる。これは、バックエンドが競合を格納する、または解決することができる場合、特に好都合である。
一部の「アダプタ」は、単にランタイムインターフェースを利用するアプリケーションであるが、アダプタは、標準のアダプタインターフェースを実装するように奨励される。それらのインターフェースにより、同期制御アプリケーションは、アダプタが、所与の同期プロファイルに従って同期を実行するように要求すること、進行中の同期をキャンセルすること、および進行中の同期に関する進行状況レポート(完了パーセンテージ)を受け取ることができるようになる。
同期サービスは、ストレージプラットフォームによって実施されるセキュリティモデルに可能な限りわずかしか導入しないように努める。同期に関する新たな権利を定義するのではなく、既存の権利が使用される。具体的には、
・ データストア項目を読み取ることができる者は誰でも、その項目に対する変更を列挙することができる
・ データストア項目に書き込むことができる者は誰でも、その項目に変更を適用することができる
・ データストア項目を拡張することができる者は誰でも、同期メタデータをその項目に関連付けることができる
レプリカの分散コミュニティを監視することは、複雑な問題である。同期サービスは、「掃引(sweep)」アルゴリズムを使用して、レプリカに関する情報を収集し、分配することができる。掃引アルゴリズムの特性は、すべての構成されたレプリカに関する情報が、最終的に収集されること、および障害が生じた(応答しない)レプリカが検出されることを確実にする。
ますます分散するデジタル世界において、個人およびワークグループは、しばしば、情報およびデータを様々な異なるデバイスおよび場所に格納する。これにより、それらの別々の、しばしば、異種のデータストアの中の情報を最小限のユーザ介入で常時、同期させておくことができるデータ同期サービスの開発が活発化している。
・ アプリケーションおよびサービスが、異なる「WinFS」ストア間でデータを効率的に同期させることを可能にする
・ 開発者が、「WinFS」ストアと非「WinFS」ストアの間でデータを同期させるための豊かなソリューションを構築することができるようにする
・ 同期ユーザ体験をカスタマイズする適切なインターフェース群を開発者に提供する
1.一般的な用語
一部の実施形態に関して、同期APIは、次の2つの部分に分けられる。すなわち、同期構成APIおよび同期コントローラAPIである。同期構成APIは、アプリケーションが、同期を構成し、2つのレプリカ間の特定の同期セッションに関するパラメータを指定することを可能にする。所与の同期セッションに関して、構成パラメータには、同期されるべき項目のセット、同期のタイプ(一方向または双方向)、リモートデータソースに関する情報、および競合解決ポリシーが含まれる。同期コントローラAPIは、同期セッションを開始し、同期をキャンセルし、進行中の同期に関する進行状況情報およびエラー情報を受け取る。さらに、同期が所定のスケジュールに従って実行される必要がある特定の実施形態に関して、そのようなシステムは、スケジュールをカスタマイズするスケジュールメカニズムを含むことが可能である。
・ 「WinFS」項目、「WinFS」拡張、および「WinFS」関係に対する変更の追跡
・ 所与の過去の状態からの効率的な増分変更列挙のサポート
・ 「WinFS」への外部の変更の適用
・ 変更適用中の競合処理。
本発明のいくつかの実施形態は、2つの基礎的なサービス、すなわち、変更列挙および変更適用を含む同期サービスと目的とする。
本明細書で前述したとおり、変更列挙は、同期サービスによって保持される変更追跡データに基づき、そのパートナとの同期が前回に試みられて以来、データストアフォルダに対して行われた変更を、同期アダプタが容易に列挙することを可能にする。変更列挙に関して、本発明のいくつかの実施形態は、以下を目的とする。
・ 指定された知識インスタンスに関連して、所与のレプリカ内の項目、拡張、および関係に対する変更の効率的な列挙
・ WinFSスキーマの中で指定された変更単位粒状度のレベルにおける変更の列挙
・ 複合項目に関する列挙された変更のグループ化。複合項目は、項目、その項目のすべての拡張、その項目に対するすべての保持関係、およびその項目の組み込まれた項目に対応するすべての複合項目から成る。項目間の参照関係に対する変更は、別個に列挙される
・ 変更列挙のバッチ処理。バッチの粒状度は、複合項目または関係変更(参照関係に関する)である
・ 変更列挙中のレプリカ内の項目に対するフィルタの指定。例えば、レプリカは、所与のフォルダ内のすべての項目から成るが、その特定の変更列挙に関して、アプリケーションは、ファーストネームが「A」で始まるすべての連絡先項目に対する変更だけを列挙することを所望する(このサポートは、ポストBマイルストーン(milestone)に追加される)
・ 知識の中で個々の変更単位(または項目全部、拡張全部、または関係全部)を同期に失敗したものとして記録して、それらの変更単位が、次回に再び列挙されるようにすることができることを伴う、列挙された変更に関するリモート知識の使用
・ 変更列挙中に変更とともにメタデータを戻すことにより、WinFS同期メタデータを理解できる可能性がある高度なアダプタの使用
本明細書で前述したとおり、変更適用は、同期アダプタが、同期アダプタのバックエンドから受け取られた変更をローカルストレージプラットフォームに適用することを可能にする。というのは、アダプタは、ストレージプラットフォームスキーマに対する変更を変換するものと予期されているからである。変更適用に関して、本発明のいくつかの実施形態は、以下を目的とする。
・ WinFS変更メタデータに対する対応する更新を伴う、他のレプリカ(または非WinFSストア)からの増分変更の適用
・ 変更単位粒状度における変更適用に関する競合の検出
・ 変更適用に関して、個々の変更単位レベルで成功、失敗、および競合を報告して、アプリケーション(アダプタおよび同期制御アプリケーションを含む)が、進行状況報告、エラー報告、およびステータス報告のため、ならびに、存在する場合、バックエンド状態を更新ために情報を使用できるようにすること
・ 変更適用中にリモート知識を更新して、次の変更列挙操作中に、適用がもたらした変更(application supplied changes)の「反映」を防止するようにすること
・ 変更とともに、WinFS同期メタデータを理解し、提供することができる高度なアダプタの使用
以下は、FOO同期アダプタがどのように同期ランタイムと対話することが可能かに関するコードサンプルである(ただし、すべてのアダプタ固有の機能には、FOOを前置している)。
本発明の一実施形態では、WinFSストアと非WinFSストアの間の同期は、WinFSベースのハードウェア/ソフトウェアインターフェースシステムによって公開される同期APIを介して達せられる、可能である。
・ アダプタをハードウェア/ソフトウェアインターフェースシステム同期フレームワークに登録する標準のメカニズム
・ アダプタが、アダプタの機能、ならびにアダプタを初期化するのに必要とされる構成情報のタイプを宣言する標準のメカニズム
・ 初期化情報をアダプタに送るための標準のメカニズム
・ アダプタが、進行ステータスを、同期を呼び出したアプリケーションに報告するメカニズム
・ 同期中に生じたエラーを報告するメカニズム
・ 進行中の同期操作のキャンセルを要求するメカニズム
・ セキュリティ目的。アダプタが、あるプロセスまたはサービスのプロセス空間の中で実行されなければならない
・ アダプタが、呼び出し側アプリケーションからの要求を処理することに加え、他のソースからの要求、例えば、着信するネットワーク要求を処理しなければならない
本明細書で前述したとおり、各レプリカ(およびデータソースおよび/またはアダプタ)は、レプリカの変更の増分の、順次の変更を保持し、それぞれのそのような変更には、対応する増分の、順次の変更番号(すなわち、第1の変更は1であり、第2の変更は2であり、第3の変更は3であり、以下同様である)が割り当てられる。さらに、各レプリカは、レプリカの同期コミュニティ内のその他の既知のレプリカ(同期パートナ)に関する状態情報も、いずれの変更をレプリカが、それらの他のレプリカから受信したかを追跡するために保持する。第2のレプリカから来た、第1のレプリカに適用された最後の変更番号を知ることにより、第1のレプリカは、以降、その番号を使用して、その最後に適用された変更の番号より大きい変更だけを要求する、受信する、または処理することができる。図38A〜Dは、その順次の変更列挙方法を使用して、どのように変更が追跡され、列挙され、同期されるかを示す。
本発明の一部の実施形態では、レプリカの範囲は、静的ではない可能性がある。したがって、レプリカAは、レプリカAの範囲内の項目とレプリカAの範囲内にない項目の間で新たな関係を作成する変更で、レプリカAの範囲を事実上、増大させる可能性がある。しかし、範囲外の項目に関する変更単位が、レプリカAとレプリカBの間で同期されていないものと想定すると(その項目が、それらのレプリカに関する同期の範囲外にあったため)、その特定の項目に関するバージョンパスに関して同期の不整合が生じる可能性がある。この問題に対する問題解決法は、レプリカAが、レプリカBに、範囲外の項目に対して行われたすべての変更を、レプリカA内で範囲内の項目と範囲外の項目の間で関係を作成する特定の変更とともに送信することである。
本発明の一部の実施形態では、同期に関して、親項目が、子項目より常に前に送られることが一般的なプリンシパルである(例えば、子である項目Kが、親である項目Jに組み込まれている場合、項目Kは、項目Jが伝送される前に伝送されることが不可能である)。しかし、レプリカAに関して、同期の合間に、項目Jと項目Kがともに変更されるが、子の項目Kが、子の項目Jより低い並べ替え(sorting)番号を有し(例えば、項目KのID番号の順序上の優先順位(sequential precedence)に基づき)、このため、通常、先に伝送されることが可能である。本発明の様々な実施形態における同期に関するこの問題に対する1つの問題解決法は、項目Kに対して行われた変更だけを反映するグループと、項目Jに対して行われた変更だけを反映する第2のグループという2のグループに変更を分割し、それらのグループを正しい順序で送信することである(つまり、子の項目Kに関する変更のグループを、親の項目Jに関する変更のグループを送信した後に送信する)。
本明細書で前述したとおり、削除標識が、同期の目的で削除された変更単位にマークを付けるのに使用される。しかし、同期は、同期コミュニティ内の複数のベクトルに関して非同期であるため、それらの削除標識は、データプラットフォーム全体にわたって伝播しなければならない。問題は、削除標識伝播を考慮に入れずに、レプリカAが、項目を作成し、レプリカBとの同期中に、その項目をレプリカBに送信する可能性があることである。その後、レプリカAは、その項目を削除する可能性があり、レプリカCとの同期中、その項目に関して何も送信しない。というのは、送信する物が何もないからである(その項目が削除されているため)。その後、レプリカBとレプリカCが同期しようと試みると、レプリカCha,レプリカBからその項目を受け取り、B上で存続する。
P1内で、項目Xが、複数の組み込まれた項目A、B、C、D、およびEを有する場合、同期の合間に、P1が第1に、それらの子の項目を削除し、第2に、親の項目Xを削除すると(すなわち、6つの変更として、del A、del B、del C、del D、del E、およびdel X)、興味深いシナリオが生じる。というのは、P1が、親のXを単に削除したとしても(1つの変更)、同一の正味の結果が生じたことになるからであり、その場合、組み込まれた項目も、自動的に削除される。これに関して、本発明のいくつかの実施形態は、同期後、Xを削除することが、実際、6つの別々の削除イベントと均等であることを認識することによって効率を獲得し、このため、P1は、Xの削除に相当する変更単位だけをP2に送り、その削除が、P2内のXの組み込まれた項目に自然に伝播することを可能にする。
前述したとおり、関係は、名前を有し、このため、1つのレプリカ(P1)が、一時的名前要素(X)の使用を介して2つの関係(R1およびR2)の名前をスワップする(swap)ことが可能である。つまり、R1の名前がXにコピーされ、次に、R2の名前がR1にコピーされ、次に、XがR2にコピーされ、最後にXが削除される。しかし、パートナレプリカ(P2)は、一時的名前要素Xについて知らないため、同期中にエラーが生じる。というのは、R1が新たな名前を有することを認識して、その名前を変更しようとするP2の試みは、R1とR2がともに同一の名前を使用しているためにエラーとなるからである。本発明の様々な実施形態に関するこの問題に対する1つの問題解決法は、P2が、その同一名エラーを受け取る、または認識すると、可能な名前スワップシナリオを推定し、P2独自の一時的名前要素(Y)を自動的に作成することであり、後の変更に、実際、R2の名前をX内の名前に変更することが関わる場合、P2は、スワップを完了する(それ以外の場合、P2は、シナリオを通常の競合イベントとして生成する)。
レプリカP1(WinFSシステム上で実行される)とデータソースP2(非WinFSシステム上で実行される)の間の同期に関して、ぶら下がり関係(WinFSによってサポートされる)のコンテキストにおいて問題が生じる、非WinFSシステムによってサポートされない。この問題は、2つの項目AおよびBが、P1上で関係Rを有し、P1が、それらをA(変更単位P1−21として)、次にR(変更単位P1−22として)、次にB(変更単位P1−23として)の順に作成した場合に生じる。Rが作成されると(P1−22)、Rは、ぶら下がり関係であり、したがって、P2がそれらの変更を順に適用すると、許されないぶら下がり関係のエラーがもたらされる。本発明のこの問題に対する問題解決法は、代わりに変更を並べ替え、すべての参照関係(例えば、R)が、他のすべての変更がP1からP2に送信された後に送信されるようにすることであり、これにより、問題は、まず項目Aおよび項目Bを作成し、次に項目Aと項目Bを関係Rで互いに関係付けることによって完全に回避される。
本明細書で前述したとおり、同期サービスにおける競合処理は、次の3つの段階に分割される。すなわち、(1)変更適用時に行われる競合検出−このステップは、変更を安全に適用することができるかどうかを判定する、(2)自動競合解決およびログ記録−このステップ(競合が検出された直後に行われる)中、自動競合ハンドラに問い合わせが行われて、競合を解決することができるかどうかが確かめられる−解決することができない場合、競合は、オプションとしてログ記録されることが可能である、および(3)競合検査および競合解決−このステップは、いくつかの競合がログ記録されている場合に行われ、同期セッションのコンテキスト外で行われる−その時点で、ログ記録された競合が解決され、ログから削除されることが可能である。
一般に、競合は、同期操作中にデータを同期させることができない場合にはいつでも生じる(「変更適用障害」)。それらの障害は、様々な理由で生じることが可能であるが、一般に、競合は、次の2つのカテゴリに分けることができる。すなわち、制約競合および知識競合である。
知識ベースの競合は、2つのレプリカが、同一の変更単位に対して独立の変更を行った場合に生じる。2つの変更は、互いの知識なしに行われる場合に、つまり、第1の変更のバージョンが、第2の変更の知識の範囲に含まれず、その逆も同様である場合に、独立と呼ばれる。同期サービスは、前述したとおり、レプリカの知識に基づいてすべてのそのような競合を自動的に検出し、以下に説明するとおり、それらの競合に対処する。一部の特定のタイプの知識競合には、更新−削除競合、削除−更新競合、および更新−更新競合(それぞれの名前は、順にローカルアクションとリモートアクションを指し、例えば、更新−削除競合は、同一のデータに対するローカル更新とリモート削除に起因する)が含まれる。
独立した変更が、一緒に適用された場合、整合性(integrity)制約に違反するケースが存在する。例えば、2つのレプリカが、同一のディレクトリ内で同一名を有するファイルを作成することにより、システム内の制約(フォルダ内における固有項目名の実施などの)が、このタイプの制約ベースの競合を生じさせるそのような競合が生じさせられる可能性がある。
・ 挿入−挿入競合:これは、2つの同期パートナがそれぞれ、同一の名前を有するファイルなどの、同一の論理識別子を有するオブジェクトを作成した場合に生じる
・ 親なし競合:これは、作成されるべき着信オブジェクトの親が存在しない場合に生じる。例は、ファイルが、そのファイルの親フォルダより前に受信された場合である
・ 未定義タイプ競合:これは、着信オブジェクトのスキーマがインストールされておらず、オブジェクトが作成されるのを妨げる場合に生じる
競合サービスは、変更適用時に制約違反を検出し、制約ベースの競合を自動的に生じさせる。制約ベースの競合を解決することは、通常、制約に違反しないような形に変更を変えるカスタムコードを要し、同期サービスは、これを行うための汎用のメカニズムを提供することも、提供しないことも可能である。
1.ローカル知識が、リモートバージョンを認識しており、リモート知識が、ローカルバージョンを認識していない:これは、着信する変更が古く、したがって、破棄されることを意味する。
2.ローカル知識が、リモートバージョンを認識しておらず、リモート知識が、ローカルバージョンを認識している:これは、着信する変更がローカルバージョンより新しく、したがって、受け入れられることを意味する。
3.ローカル知識が、リモートバージョンを認識しており、リモート知識が、ローカルバージョンを認識している。これは、両方のバージョンが均等であり、したがって、変更がまったく適用されない場合にだけ生じる可能性がある。
4.ローカル知識が、リモートバージョンを認識しておらず、リモート知識が、ローカルバージョンを認識していない。これは、ローカルバージョンとリモートバージョンが競合しており、したがって、競合が生じさせられることを意味する。
競合は、同期送信中、または同期受信中に生じる可能性があるが、一方向同期操作における両方のパートナが類似している(2つの類似した形で構成されたWinFSストアのように)場合、シナリオは、対称的であり、同期で競合を自動的に解決することにより、または非同期の解決(自動または手動の)ために競合をログ記録することにより、受信側で最も容易に対処されることが可能である。
変更が拒否される場合、同期サービスは、あたかも変更がレプリカに着信しなかったかのように動作し、否定応答(negative acknowledgement)が送信元に送り返される。この解決ポリシーは、競合をログ記録することが実行可能でないヘッドレス(head−less)レプリカ(ファイルサーバなどの)上で主に役立つ。代わりに、そのようなレプリカは、その他のレプリカが、競合を拒否することによって競合に対処することを強制する。
自動的競合解決は、指定されたポリシーに従って競合を同期で解決するプロセスである。WinFS同期操作において、ポリシーは、送信操作と受信動作に関して独立に指定されることが可能である。自動競合解決ポリシーは、同期プロファイルを介して指定される。生じさせられた競合は、プロファイルの中で指定された最上レベルの競合ハンドラに送られる。その競合ハンドラは、競合を解決すること、競合をログ記録すること、または競合処理パイプラインに沿ったさらなる処理のために別の競合ハンドラに競合を送ることができる。
・ ローカル勝利(wins):着信するデータに対して、ローカルで格納されているデータを勝者として選択することにより、競合を解決する
・ リモート勝利:ローカルで格納されているデータに対して、着信するデータを勝者として選択することにより、競合を解決する
・ 最終書き込み側勝利(last−writer−wins):変更単位のタイムスタンプに基づき、変更単位ごとにローカル勝利またはリモート勝利(同期サービスは、一般に、クロック値に依拠しないことに留意されたい。この競合リゾルバは、その規則に対する唯一の例外である)
・ 決定論的:すべてのレプリカ上で同一であることが保証されるが、それ以外では意味のない形で勝者を選ぶ−同期サービスの一実施形態は、パートナIDの辞書式比較を使用して、この機能を実施することが可能である。
一部の報告された競合は、自動競合解決を使用して同期で解決されることが可能であるが、他の競合は、後のプログラマティック解決のためにログ記録されることが可能である。競合ログ記録により、競合解決プロセスが非同期で行われることが可能になる。つまり、競合は、検出された時点で解決される必要がなく、将来の解決のためにログ記録されることが可能である。例えば、競合ビューア(Viewer)アプリケーションが、ユーザが、事後にログ記録された競合を点検し、手動で解決することができるようにすることが可能である。
同期サービスは、競合ログを検査し、ログの中の競合の解決を示唆するAPIをアプリケーションに提供する。APIにより、アプリケーションが、すべての競合を列挙すること、または所与の項目に関連する競合を列挙することができるようになる。また、APIにより、そのようなアプリケーションが、ログ記録された競合を次の3つの形の1つで解決することもできるようになる。すなわち、(1)リモート勝利−ログ記録された変更を受け入れ、競合するローカル変更に上書きすること、(2)ローカル勝利−ログ記録された変更の競合する部分を無視すること、および(3)新たな変更を示唆する−アプリケーションが、アプリケーションの見解において、競合を解決するマージを提案することである。競合がアプリケーションによって解決されると、同期サービスは、競合をログから除去する。
複雑な同期シナリオにおいて、同一の競合が、複数のレプリカにおいて検出されることが可能である。これが生じた場合、次のとおり、いくつかのことが行われることが可能である。すなわち、(1)競合が、1つのレプリカ上で解決されることが可能であり、解決が、他のレプリカに送信される、(2)競合が、両方のレプリカ上で自動的に解決される、または(3)競合が、両方のレプリカ上で手動で解決される(競合検査APIを介して)。
以下は、本発明の様々な実施形態に関する同期スキーマのさらなる(または、より詳細な)態様である。
・ 各レプリカは、複数のインスタンスを有するデータのスライスである、データストア全体からのデータの定義された同期サブセットである
・ 同期スキーマのルートには、固有IDを有するルートフォルダ(実際には、ルート項目)を定義する基礎タイプ、レプリカがメンバである同期コミュニティのID、ならびにどのようなものであれ、その特定のレプリカに必要な、または望ましいフィルタおよびその他の要素を有するレプリカが存在する
・ 各レプリカの「マッピング」は、そのレプリカ内に保持され、このため、いずれの特定のレプリカに関するマッピングも、そのレプリカが知っているその他のレプリカに限定される。このマッピングは、同期コミュニティ全体のサブセットだけしか含まない可能性があるが、前記レプリカに対する変更は、それでも、共通で共有されるレプリカを介して同期コミュニティ全体に伝播する(ただし、いずれの特定のレプリカも、未知のレプリカと他のいずれのレプリカを共通で共有しているのかを認識していない)
・ レプリカの同期スキーマおよび使用により、真の分散型ピアツーピアマルチマスタ同期コミュニティが可能になる。さらに、同期コミュニティタイプは存在しないが、同期コミュニティは、単に、レプリカ自体のコミュニティフィールドの中の値として存在する
・ すべてのレプリカは、増分変更列挙を追跡するため、および同期コミュニティ内で知られているその他のレプリカに関する状態情報を格納するための独自のメタデータを有する
・ 変更ユニットは、以下を含む独自のメタデータを有する。すなわち、パートナキーに加えて、パートナ変更番号を含むバージョン、各変更単位に関する項目/拡張/関係バージョニング(versioning)、レプリカが経験した、同期コミュニティから受信した変更に関する知識、GUIDおよびローカルIDの構成、およびクリーンアップのために参照関係上に格納されたGUIDである
・ 競合解決ポリシーが、各レプリカ(およびアダプタ/データソースの組合せ)によって扱われる−つまり、各レプリカは、独自の基準および競合解決スキーマに基づいて競合を解決することができる。さらに、データストアの各インスタンスの相違は、さらなる将来の競合をもたらし、導く可能性があるが、更新された状態情報に反映された競合の増分の、順次の列挙は、その更新された状態情報を受信する他のレプリカには見えない
・ 同期スキーマは、すべてのレプリカが利用できる複数の事前定義された同期ハンドラと、ユーザ/開発者が定義したカスタム競合ハンドラの能力をともに含む。スキーマは、次の3つの特別な「競合ハンドラ」も含むことが可能である。すなわち、(a)例えば、(i)同一の変更単位が2つの場所で変更された場合にどのように対処するか、(ii)変更単位が、1つの場所で変更されたが、別の場所で削除された場合にどのように対処するか、および(iii)2つの異なる変更単位が、2つの異なる場所で同一の名前を有する場合にどのように対処するかに基づき、異なる形で異なる競合を解決する競合「フィルタ」、(b)競合がうまく解決されるまで、リストの各要素が、順に試みられるべき一連のアクションを指定する競合「ハンドラリスト」、および(c)競合を追跡するが、ユーザの介入なしにさらなるアクションを行うことはしない「何もしない(do−nothing)」ログである
本明細書で説明する新たなストレージプラットフォームを最初に利用すると、様々な個々のコンピュータシステムを含む同期ネットワーク群を有する企業は、一部の個々のコンピュータシステムが、新たなストレージプラットフォームを利用する一方で、他の個々のコンピュータシステムは、レガシストレージプラットフォームを利用しつづけるという点で混合を有する可能性がある。これは、2つのクライアントが、新たなストレージプラットフォームを含むが、サーバは、レガシストレージプラットフォームを含むあらゆるクライアント−サーバ同期構造において、特に重要である。したがって、そのような状況では、新たなストレージプラットフォームを利用する2つのコンピュータシステム(「クライアント」)が、レガシストレージプラットフォーム(「仲介」)を利用するコンピュータシステムを介して同期することが必要である可能性がある。例えば、一部のクライアントは、RUP(ローミングユーザプロファイル)またはCSC(Folder Redirection with Clinet Side Caching)などのソフトウェアを使用してレガシローミングサービスに登録される可能性がある。これらのレガシストレージプラットフォーム用のレガシローミングソフトウェアは、新たなストレージプラットフォームに関するローミングデータをサポートしないので、新たなストレージプラットフォーム用の新たなローミングサービスが必要である。本発明の様々な実施形態は、同一の共通ストレージプラットフォームを使用していない(例えば、代わりに、新たなストレージプラットフォームに関する同期をそれ自体、サポートしないレガシストレージプラットフォームを使用する)仲介を介して、共通のストレージプラットフォーム(例えば、関連する発明の新たなストレージプラットフォーム)をともに利用する2つのクライアントの同期のためのシステムおよび方法を対象とする。
本発明のいくつかの実施形態は、レプリカクライアントと非レプリカの仲介の間に存在し、動作するSTI(「仲介を介する同期」)アダプタを対象とする。それらの実施形態に関して、STIアダプタは、レプリカクライアントから非レプリカの仲介へ、変更列挙の結果をシリアル化するとともに、非レプリカの仲介からレプリカクライアントへ、それらの変更結果をシリアル化解除するように設計される。
本発明のいくつかの実施形態に関して、STIアダプタは、次の3つのコア操作を含む。すなわち、同期送信、同期受信、およびデータコンパクションである。
図42は、クライアントが、STIアダプタを介して、変更データを仲介に送信するステップ(「同期送信」操作)を示す流れ図である。ステップ4202で、STIアダプタはまず、クライアントの同期コミュニティに対応する仲介上にコミュニティフォルダが存在するかどうかを確かめる。存在する場合、ステップ4204で、STIアダプタは、仲介のコミュニティフォルダ内のLKFの内容のすべてをスキャンし、シリアル化解除して、その同期コミュニティに関するILK(仲介のローカル知識)の現在の状態を確かめる。他方、コミュニティフォルダが存在しない場合、ILKは、ステップ4206でNULLであると考えられ、仲介上でコミュニティフォルダが作成される。
反対方向の同期に関して、図43は、クライアントが、STIアダプタを介して、仲介から変更データを受信するステップ(「同期受信」操作)を示す流れ図である。ステップ4302で、STIアダプタはまず、CLK(クライアントローカル知識)を受け取り、これは、本発明のいくつかの実施形態に関して、クライアントがSTIアダプタを介して同期要求を仲介に送信した際に行われ、前記同期要求は、本来的に、本明細書で前述したピアツーピア同期スキーム別のCLKを含む。次に、ステップ4304で、STIアダプタは、他のクライアント(または他のピアもしくは他のプロセス)が、同期受信操作の期間中にコミュニティフォルダに対して書き込みを行うのを防止する(ただし、一部の実施形態に関して、読み取りを行うのは防止しない)ことにより、データ整合性を保つために仲介のコミュニティフォルダに対する「読み取りモード」プロセスロックを(仲介のファイルシステムを介して)獲得する。一部の実施形態に関して、この「読み取りモード」は、より良好な同時性(concurrency)のためにディレクトリ全体ではなく、各トリプレットをロックするように最適化されることも可能である。
本発明の様々な実施形態に関して、STIアダプタによって作成されるシリアル化されたデータファイル、および知識ファイルを定常的に(routinely)圧縮することが必要である。そうでなければ、増えつづける変更トリプレットが、仲介上のすべての利用可能なストレージスペースを一杯にする。これに関して、データコンパクションの目標は、データファイルおよび知識ファイルの成長が、仲介上で適切な形で限られることを確実にすることである。本発明のいくつかの実施形態によって使用される1つの方法は、共有ファイルシステム上に存在することが許される変更パケットの数に「上限(upper−threshold)」を設定することであり、その閾値を超えると、そうすることができる次のSTIアダプタが、コンパクション操作を介して仲介上の共有ファイルシステム(コミュニティフォルダ内のファイル群)を圧縮するように要求される。コンパクション操作は、(a)既存の個々のオブジェクトに関する変更履歴を圧縮すること、および(b)削除されたオブジェクトに関してブロードキャストされた変更を除去すること(明示的に、競合解決を介して、または削除標識クリーンアップの結果として)によって共有ファイルシステムの中に格納されるデータの量を減らす。しかし、コンパクションは、同期受信を実行したばかりであり、「完全な」同期送信(つまり、あたかも仲介上にまったくコミュニティフォルダが存在しないかのように、0のベースラインを有する完全な変更列挙)を即時に実行することができるクライアントに関してだけしか、STIアダプタによって実行されることが可能でない。このため、コンパクションは、仲介を使用して同期を送信するだけ、または同期を受信するだけのクライアントによっては実行されることが不可能である。
以上に加えて、本発明のいくつかのさらなる実施形態は、本明細書で前述した仲介を介する同期技術の変種を対象とする。一部の実施形態は、レガシストレージプラットフォームも実行しているクライアントをさらに含むシステムを対象とし、前記「レガシクライアント」は、すべてのデータファイルにアクセスすることもできる。一部のレガシクライアント、およびその他のアプリケーションおよびプロセスが、他の目的で、それらのデータファイルにアクセスできることも見込まれている。例えば、作成の日付、または他の何らかの本来的なファイル特性に基づいてファイルを同期させるレガシクライアントに関して。別の例は、ファイルのいずれか、またはすべて(例えば、*.CDKファイル)に直接にアクセスし、そのファイルをコピーするレガシクライアントである。多くの点で、レガシクライアントは、第1の仲介と直接に通信する(おそらく、レガシ同期技術を使用して)第2の仲介と同じように考えることができる。
以上に示すとおり、本発明は、データの編成、探索、および共有を行うためのストレージプラットフォームを対象とする。本発明のストレージプラットフォームは、既存のファイルシステムおよびデータベースシステムを超えてデータストレージの概念を拡張し、広げ、リレーショナル(表形式の(tabular))データ、XML、および項目と呼ばれる新たな形態のデータなどの、構造化データ、非構造化データ、または半構造化データを含むすべてのタイプのデータ用のストアとなるように設計される。共通のストレージの基礎、およびスキーマ化されたデータを介して、本発明のストレージプラットフォームは、消費者、知識労働者、および企業のためのより効率的なアプリケーション開発を可能にする。本発明のストレージプラットフォームは、本発明のストレージプラットフォームのデータモデルに固有の諸機能を利用可能にするだけでなく、既存のファイルシステムおよびデータベースアクセス方法を取り入れ、拡張することも行う、豊かで拡張可能なアプリケーションプログラミングインターフェースを提供する。諸実施形態の広い発明上の概念を逸脱することなく、前述した諸実施形態に様々な変更を行うことができることを理解されたい。したがって、本発明は、開示した特定の実施形態に限定されず、添付の特許請求の範囲によって定義される本発明の趣旨および範囲に含まれるすべての変更形態を範囲に含むものとする。
Claims (27)
- 第1のストレージプラットフォームを利用する少なくとも2つのクライアントコンピュータシステムを、第2のストレージプラットフォームを利用する仲介コンピュータシステムを介して同期させるための方法であって、前記第2のストレージプラットフォームは、前記第1のストレージプラットフォームに関する同期をサポートせず、
第1のクライアントコンピュータシステム上に存在する第1の同期アダプタが、変更情報を前記仲介コンピュータシステムに送信するステップと、
第2のクライアントコンピュータシステム上に存在する第2の同期アダプタアダプタが、前記仲介コンピュータシステムから前記変更情報を受信して、前記第2のクライアントコンピュータシステムに送信するステップと
を含み、前記変更情報を前記仲介コンピュータシステムに送信するステップは、
前記第1の同期アダプタが、前記少なくとも2つのコンピュータシステムが同期するコミュニティフォルダが前記仲介コンピュータシステムに存在するかどうか判定するステップと、
前記コミュニティフォルダが存在する場合、前記第1の同期アダプタが、前記コミュニティフォルダをスキャンして、前記仲介コンピュータシステムのローカル知識を確認するステップと、
前記コミュニティフォルダが存在しない場合、前記第1の同期アダプタが、前記仲介コンピュータシステム上にコミュニティフォルダを作成するステップと、
前記第1の同期アダプタが、前記仲介コンピュータシステムのローカル知識を前記第1のクライアントコンピュータシステムに送信するステップと、
前記第1のクライアントコンピュータシステムが、前記仲介コンピュータシステムのローカル知識に含まれない変更を有する場合、前記仲介コンピュータシステムのローカル知識に含まれない変更のセットを準備して、前記第1の同期アダプタに送信するステップと、
前記第1の同期アダプタが、前記変更のセットをファイルにシリアル化して、前記コミュニティフォルダに書き込むステップと
を含むことを特徴とする方法。 - 前記同期は、データ共有操作をサポートするのに利用されることを特徴とする請求項1に記載の方法。
- 前記同期は、エンドユーザローミングをサポートするのに利用されることを特徴とする請求項1に記載の方法。
- 前記第1のストレージプラットフォームは、項目ベースのストレージプラットフォームであることを特徴とする請求項1に記載の方法。
- 前記ファイルは、変更データに関するファイル、前提条件知識に関するファイル、および学習された知識に関するファイルの少なくとも1つまたは複数を含むことを特徴とする請求項1に記載の方法。
- 前記変更情報を前記仲介コンピュータシステムに送信するステップは、
前記第1の同期アダプタが、前記コミュニティフォルダに対する書き込みモードプロセスロックを獲得するステップと、
前記第1の同期アダプタが、書き込みモードプロセスロックを解放するステップと
をさらに含むことを特徴とする請求項1に記載の方法。 - 前記変更情報を前記第2のクライアントコンピュータシステムに送信するステップは、
前記第2の同期アダプタが、前記第2のクライアントコンピュータシステムのローカル知識を受信するステップと、
前記第2の同期アダプタが、前記第2のクライアントコンピュータシステムのローカル知識に適用可能なファイルを求めて、前記コミュニティフォルダをスキャンするステップと、
前記適用可能なファイルが存在する場合、前記第2の同期アダプタが、前記適用可能なファイルをシリアル化解除して、変更のセットに変更するステップと
を含むことを特徴とする請求項1に記載の方法。 - 前記変更情報を前記第2のクライアントコンピュータシステムに送信するステップは、
前記第2の同期アダプタが、前記コミュニティフォルダに対する読み取りモードプロセスロックを獲得するステップと、
前記第2の同期アダプタが、読み取りモードプロセスロックを解放するステップと
をさらに含むことを特徴とする請求項7に記載の方法。 - 前記変更情報を前記第2のクライアントコンピュータシステムに送信するステップは、読み取りモードプロセスロックを解放する前に、
前記第2の同期アダプタが、前記コミュニティフォルダ内のすべてのファイルを削除するステップと、
前記第2の同期アダプタが、変更情報を前記仲介コンピュータシステムに送信するステップを実行するステップと
をさらに含むことを特徴とする請求項8に記載の方法。 - 第1のストレージプラットフォームを利用する少なくとも2つのクライアントコンピュータシステムを、第2のストレージプラットフォームを利用する仲介コンピュータシステムを介して同期させるためのシステムであって、前記第2のストレージプラットフォームは、前記第1のストレージプラットフォームに関する同期をサポートせず、
変更情報を前記仲介コンピュータシステムに送信する第1の同期アダプタを有する第1のクライアントコンピュータシステムと、
前記仲介コンピュータシステムから前記変更情報を受信する第2の同期アダプタを有する第2のクライアントコンピュータシステムと
を含み、
前記第1の同期アダプタは、
前記少なくとも2つのコンピュータシステムが同期するコミュニティフォルダが前記仲介コンピュータシステムに存在するかどうか判定し、
前記コミュニティフォルダが存在する場合、前記コミュニティフォルダをスキャンして、前記仲介コンピュータシステムのローカル知識を確認し、
前記コミュニティフォルダが存在しない場合、前記仲介コンピュータシステム上にコミュニティフォルダを作成し、
前記仲介コンピュータシステムのローカル知識を前記第1のクライアントコンピュータシステムに送信し、
前記第1のクライアントコンピュータシステムから受信した変更のセットをファイルにシリアル化して、前記コミュニティフォルダに書き込み、
前記第1のクライアントコンピュータシステムは、
前記仲介コンピュータシステムのローカル知識に含まれない変更を有する場合、前記仲介コンピュータシステムのローカル知識に含まれない変更のセットを準備して、前記第1の同期アダプタに送信することを特徴とするシステム。 - 前記同期は、データ共有操作をサポートするのに利用されることを特徴とする請求項10に記載のシステム。
- 前記同期は、エンドユーザローミングをサポートするのに利用されることを特徴とする請求項10に記載のシステム。
- 前記第1のストレージプラットフォームは、項目ベースのストレージプラットフォームとなることを特徴とする請求項10に記載のシステム。
- 前記ファイルは、変更データに関するファイル、前提条件知識に関するファイル、および学習された知識に関するファイルの少なくとも1つまたは複数を含むことを特徴とする請求項10に記載のシステム。
- 前記第1の同期アダプタは、前記コミュニティフォルダに対する書き込みモードプロセスロックを獲得または解放することを特徴とする10に記載のシステム。
- 前記第2の同期アダプタは、
前記第2のクライアントコンピュータシステムのローカル知識を受信し、
前記第2のクライアントコンピュータシステムのローカル知識に適用可能なファイルを求めて、前記コミュニティフォルダをスキャンし、
前記適用可能なファイルが存在する場合、前記適用可能なファイルをシリアル化解除して、変更のセットに変更することを特徴とする請求項10に記載のシステム。 - 前記第2の同期アダプタは、前記コミュニティフォルダに対する読み取りモードプロセスロックを獲得または解放することを特徴とする請求項16に記載のシステム。
- 前記第2の同期アダプタは、読み取りモードプロセスロックを解放する前に、
前記コミュニティフォルダ内のすべてのファイルを削除し、変更情報を前記仲介コンピュータシステムに送信することを特徴とする請求項17に記載のシステム。 - 第1のストレージプラットフォームを利用する少なくとも2つのクライアントコンピュータシステムを、第2のストレージプラットフォームを利用する仲介コンピュータシステムを介して同期させるための方法を実施するプログラムを記録したコンピュータ可読記録媒体であって、前記第2のストレージプラットフォームは、前記第1のストレージプラットフォームに関する同期をサポートせず、前記方法は、
第1のクライアントコンピュータシステム上に存在する第1の同期アダプタが、変更情報を前記仲介コンピュータシステムに送信するステップと、
第2のクライアントコンピュータシステム上に存在する第2の同期アダプタアダプタが、前記仲介コンピュータシステムから前記変更情報を受信して、前記第2のクライアントコンピュータシステムに送信するステップと
を含み、前記変更情報を前記仲介コンピュータシステムに送信するステップは、
前記第1の同期アダプタが、前記少なくとも2つのコンピュータシステムが同期するコミュニティフォルダが前記仲介コンピュータシステムに存在するかどうか判定するステップと、
前記コミュニティフォルダが存在する場合、前記第1の同期アダプタが、前記コミュニティフォルダをスキャンして、前記仲介コンピュータシステムのローカル知識を確認するステップと、
前記コミュニティフォルダが存在しない場合、前記第1の同期アダプタが、前記仲介コンピュータシステム上にコミュニティフォルダを作成するステップと、
前記第1の同期アダプタが、前記仲介コンピュータシステムのローカル知識を前記第1のクライアントコンピュータシステムに送信するステップと、
前記第1のクライアントコンピュータシステムが、前記仲介コンピュータシステムのローカル知識に含まれない変更を有する場合、前記仲介コンピュータシステムのローカル知識に含まれない変更のセットを準備して、前記第1の同期アダプタに送信するステップと、
前記第1の同期アダプタが、前記変更のセットをファイルにシリアル化して、前記コミュニティフォルダに書き込むステップと
を含むことを特徴とするコンピュータ可読記録媒体。 - 前記同期が、データ共有操作をサポートするのに利用されることを特徴とする請求項19に記載のコンピュータ可読記録媒体。
- 前記同期が、エンドユーザローミングをサポートするのに利用されることを特徴とする請求項19に記載のコンピュータ可読記録媒体。
- 前記第1のストレージプラットフォームが、項目ベースのストレージプラットフォームであることを特徴とする請求項19に記載のコンピュータ可読記録媒体。
- 前記ファイルは、変更データに関するファイル、前提条件知識に関するファイル、および学習された知識に関するファイルの少なくとも1つまたは複数を含むことを特徴とする請求項19に記載のコンピュータ可読記録媒体。
- 前記変更情報を前記仲介コンピュータシステムに送信するステップは、
前記第1の同期アダプタが、前記コミュニティフォルダに対する書き込みモードプロセスロックを獲得するステップと、
前記第1の同期アダプタが、書き込みモードプロセスロックを解放するステップと
をさらに含むことを特徴とする請求項19に記載のコンピュータ可読記録媒体。 - 前記変更情報を前記第2のクライアントコンピュータシステムに送信するステップは、
前記第2の同期アダプタが、前記第2のクライアントコンピュータシステムのローカル知識を受信するステップと、
前記第2の同期アダプタが、前記第2のクライアントコンピュータシステムのローカル知識に適用可能なファイルを求めて、前記コミュニティフォルダをスキャンするステップと、
前記適用可能なファイルが存在する場合、前記第2の同期アダプタが、前記適用可能なファイルをシリアル化解除して、変更のセットに変更するステップと
を含むことを特徴とする請求項19に記載のコンピュータ可読記録媒体。 - 前記変更情報を前記第2のクライアントコンピュータシステムに送信するステップは、
前記第2の同期アダプタが、前記コミュニティフォルダに対する読み取りモードプロセスロックを獲得するステップと、
前記第2の同期アダプタが、読み取りモードプロセスロックを解放するステップと
をさらに含むことを特徴とする請求項25に記載のコンピュータ可読記録媒体。 - 前記変更情報を前記第2のクライアントコンピュータシステムに送信するステップは、読み取りモードプロセスロックを解放する前に、
前記第2の同期アダプタが、前記コミュニティフォルダ内のすべてのファイルを削除するステップと、
前記第2の同期アダプタが、変更情報を前記仲介コンピュータシステムに送信するステップを実行するステップと
をさらに含むことを特徴とする請求項26に記載のコンピュータ可読記録媒体。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2003/027419 WO2005029314A1 (en) | 2003-08-21 | 2003-08-21 | Storage platform for organizing, searching, and sharing data |
US10/646,646 US7349913B2 (en) | 2003-08-21 | 2003-08-21 | Storage platform for organizing, searching, and sharing data |
US10/692,508 US7483923B2 (en) | 2003-08-21 | 2003-10-24 | Systems and methods for providing relational and hierarchical synchronization services for units of information manageable by a hardware/software interface system |
US56714104P | 2004-04-30 | 2004-04-30 | |
US10/883,621 US7512638B2 (en) | 2003-08-21 | 2004-06-30 | Systems and methods for providing conflict handling for peer-to-peer synchronization of units of information manageable by a hardware/software interface system |
US10/889,423 US7401104B2 (en) | 2003-08-21 | 2004-07-12 | Systems and methods for synchronizing computer systems through an intermediary file system share or device |
PCT/US2004/024441 WO2005024551A2 (en) | 2003-08-21 | 2004-07-29 | Systems and methods for synchronizing computer systems throuth an intermediary file system share or device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2007527053A JP2007527053A (ja) | 2007-09-20 |
JP4580389B2 true JP4580389B2 (ja) | 2010-11-10 |
Family
ID=37616475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006523868A Expired - Fee Related JP4580389B2 (ja) | 2003-08-21 | 2004-07-29 | 仲介ファイルシステム共有または仲介デバイスを介してコンピュータシステムを同期させるためのシステムおよび方法 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP1573600A4 (ja) |
JP (1) | JP4580389B2 (ja) |
CN (1) | CN100565505C (ja) |
WO (1) | WO2005024551A2 (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8131739B2 (en) | 2003-08-21 | 2012-03-06 | Microsoft Corporation | Systems and methods for interfacing application programs with an item-based storage platform |
US8238696B2 (en) | 2003-08-21 | 2012-08-07 | Microsoft Corporation | Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system |
US7590643B2 (en) | 2003-08-21 | 2009-09-15 | Microsoft Corporation | Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system |
US8166101B2 (en) | 2003-08-21 | 2012-04-24 | Microsoft Corporation | Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system |
US7805422B2 (en) | 2005-02-28 | 2010-09-28 | Microsoft Corporation | Change notification query multiplexing |
US7801912B2 (en) * | 2005-12-29 | 2010-09-21 | Amazon Technologies, Inc. | Method and apparatus for a searchable data service |
US8412676B2 (en) * | 2008-10-21 | 2013-04-02 | Microsoft Corporation | Forgetting items with knowledge based synchronization |
US10303787B2 (en) | 2008-10-21 | 2019-05-28 | Microsoft Technology Licensing, Llc | Forgetting items with knowledge based synchronization |
US20120036188A1 (en) * | 2010-08-06 | 2012-02-09 | Nokia Corporation | Method and Apparatus for Aggregating Document Information |
CN106484867B (zh) * | 2016-10-10 | 2019-06-07 | Oppo广东移动通信有限公司 | 一种多开应用引用关系的删除方法、装置及终端 |
US10866963B2 (en) | 2017-12-28 | 2020-12-15 | Dropbox, Inc. | File system authentication |
CN109086032B (zh) * | 2018-06-28 | 2022-02-25 | 山东鲁软数字科技有限公司智慧能源分公司 | 一种全适应一体化电源监控方法和装置 |
CN114579190B (zh) * | 2022-02-17 | 2022-10-14 | 中国科学院计算机网络信息中心 | 基于流水线机制的跨中心协同计算的编排方法与系统 |
CN115328997B (zh) * | 2022-07-15 | 2023-04-07 | 深圳市数帝网络科技有限公司 | 数据同步方法、系统、设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6694336B1 (en) * | 2000-01-25 | 2004-02-17 | Fusionone, Inc. | Data transfer and synchronization system |
US6671757B1 (en) * | 2000-01-26 | 2003-12-30 | Fusionone, Inc. | Data transfer and synchronization system |
EP1130511A3 (en) * | 2000-01-25 | 2004-04-07 | FusionOne, Inc. | Data transfer and synchronization system |
US7734826B2 (en) * | 2001-03-16 | 2010-06-08 | Novell, Inc. | Client-server model for synchronization of files |
-
2004
- 2004-07-29 EP EP04779486A patent/EP1573600A4/en not_active Ceased
- 2004-07-29 WO PCT/US2004/024441 patent/WO2005024551A2/en active Application Filing
- 2004-07-29 CN CNB2004800032859A patent/CN100565505C/zh not_active Expired - Fee Related
- 2004-07-29 JP JP2006523868A patent/JP4580389B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP1573600A2 (en) | 2005-09-14 |
CN1781096A (zh) | 2006-05-31 |
JP2007527053A (ja) | 2007-09-20 |
WO2005024551A3 (en) | 2005-05-19 |
WO2005024551A2 (en) | 2005-03-17 |
EP1573600A4 (en) | 2006-04-19 |
CN100565505C (zh) | 2009-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7483923B2 (en) | Systems and methods for providing relational and hierarchical synchronization services for units of information manageable by a hardware/software interface system | |
US7401104B2 (en) | Systems and methods for synchronizing computer systems through an intermediary file system share or device | |
US8166101B2 (en) | Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system | |
US7512638B2 (en) | Systems and methods for providing conflict handling for peer-to-peer synchronization of units of information manageable by a hardware/software interface system | |
US7743019B2 (en) | Systems and methods for providing synchronization services for units of information manageable by a hardware/software interface system | |
US7693858B2 (en) | Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system | |
US7739316B2 (en) | Systems and methods for the implementation of base schema for organizing units of information manageable by a hardware/software interface system | |
US7428546B2 (en) | Systems and methods for data modeling in an item-based storage platform | |
US7483915B2 (en) | Systems and method for representing relationships between units of information manageable by a hardware/software interface system | |
US7555497B2 (en) | Systems and methods for separating units of information manageable by a hardware/software interface system from their physical organization | |
AU2004271525B2 (en) | Systems and methods for providing synchronization services for units of information manageable by a hardware/software interface system | |
US20050055354A1 (en) | Systems and methods for representing units of information manageable by a hardware/software interface system but independent of physical representation | |
JP4580389B2 (ja) | 仲介ファイルシステム共有または仲介デバイスを介してコンピュータシステムを同期させるためのシステムおよび方法 | |
JP4583375B2 (ja) | 同期スキーマの実装のためのシステム | |
WO2005024666A2 (en) | Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070730 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100413 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100713 |
|
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: 20100820 |
|
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: 20100827 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130903 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
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 |
|
LAPS | Cancellation because of no payment of annual fees |