JP4580390B2 - ハードウェア/ソフトウェアインターフェイスシステムによって管理可能な情報単位の拡張および継承のためのシステムおよび方法 - Google Patents
ハードウェア/ソフトウェアインターフェイスシステムによって管理可能な情報単位の拡張および継承のためのシステムおよび方法 Download PDFInfo
- Publication number
- JP4580390B2 JP4580390B2 JP2006523871A JP2006523871A JP4580390B2 JP 4580390 B2 JP4580390 B2 JP 4580390B2 JP 2006523871 A JP2006523871 A JP 2006523871A JP 2006523871 A JP2006523871 A JP 2006523871A JP 4580390 B2 JP4580390 B2 JP 4580390B2
- Authority
- JP
- Japan
- Prior art keywords
- item
- type
- relationship
- items
- extension
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4492—Inheritance
-
- 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/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
Description
I. 序文
A. 例示的な計算機環境
B. 従来のファイルベースの記憶
II. データを組織化し、検索し、共有するWINFSストレージプラットフォーム
C. 用語解説
D. ストレージプラットフォームの概観
E. データモデル
1. アイテム
2. アイテムの識別
3. アイテムフォルダおよびカテゴリ
4. スキーマ
a)基本スキーマ
b)コアスキーマ
5. 関係
a)関係の宣言
b)保持関係
c)埋込み関係
d)参照関係
e)規則および制約
f)関係の順序づけ
6. 拡張性
a)アイテムの拡張
b)NestedElement型の拡張
F. データベースエンジン
1. UDTを用いたデータストアの実装
2. アイテムのマッピング
3. 拡張のマッピング
4. ネスト要素のマッピング
5. オブジェクトの識別
6. SQLオブジェクトの命名
7. 列の命名
8. 検索ビュー
a)アイテム
(1)マスタアイテム検索ビュー
(2)型指定アイテム検索ビュー
b)アイテムの拡張
(1)マスタ拡張検索
(2)型指定拡張検索ビュー
c)ネストされた要素
d)関係
(1)マスタ関係検索ビュー
(2)関係インスタンス検索ビュー
e)
9. アップデート
10. 変更追跡および削除標識
a)変更追跡
(1)「マスタ」検索ビューにおける変更追跡
(2)「型指定」検索ビューにおける変更追跡
b)削除標識
(1)アイテム削除標識
(2)拡張削除標識
(3)関係削除標識
(4)削除標識のクリーンアップ
11. ヘルパAPIおよび関数
a)関数[System.Storage].GetItem
b)関数[System.Storage].GetExtention
c)関数[System.Storage].GetRelationship
12. メタデータ
a)スキーマメタデータ
b)インスタンスメタデータ
G. セキュリティ
H. 通知および変更追跡
I. 同期
1. ストレージプラットフォーム同士の間の同期
a)同期(Sync)制御アプリケーション
b)スキーマの注釈
c)同期構成
(1)コミュニティフォルダのマッピング
(2)プロファイル
(3)スケジュール
d)競合操作
(1)競合検出
(a)知識ベースの競合
(b)制約ベースの競合
(2)競合処理
(a)自動競合解決
(b)競合のログ記録
(c)競合検査および解決
(d)レプリカの収束および競合解決の伝播
2. 非ストレージプラットフォームデータストアとの同期
a)同期サービス
(1)変更の列挙
(2)変更の適用
(3)競合解決
b)アダプタの実装
3. セキュリティ
4. 管理性
J. 従来のファイルシステムの相互運用性
K. ストレージプラットフォームAPI
III. 拡張および継承
A. 型システム
B. 型ファミリ
1. ネスト要素型
2. アイテム型
3. 関係型
a)関係のセマンティクス
b)関係の規則および制約
4. 拡張型
C. 拡張機能
1. 継承
2. 拡張
IV. 結論
法的要件を満たすために、本発明の主題を明確に説明する。ただし、この説明自体は、本特許の範囲を限定することを意図していない。そうではなく、本発明者は、特許請求の対象が、本文書において説明されるものと類似した、異なるステップまたはステップの組合せを含むように、現在または将来の他の技術とともに、他の方法でも実施されることを企図している。さらに、「ステップ」という用語は、本明細書において、利用される方法の異なる要素を意味するのに用いることができるが、この用語は、個々のステップの順序が明確に記述されない限り、本明細書において開示される様々なステップの間のいかなる具体的な順序も含意すると解釈されるべきでない。
本発明の数多くの実施形態は、コンピュータ上で実行することができる。図1および以下の説明は、本発明を実施することができる適切な計算機環境の簡潔かつ全体的な説明の提供を意図している。そうすることが必要なわけではないが、クライアントワークステーションやサーバなどのコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令という一般的なコンテキストで、本発明の様々な態様を説明することができる。概して、プログラムモジュールは、特定のタスクを実施し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。さらに、本発明は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの家電製品またはプログラム可能な家電製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなど他のコンピュータシステム構成とともに実施できることが当業者には理解されよう。本発明は、通信ネットワークを介してリンクされるリモート処理デバイスによって特定のタスクが実施される分散型計算機環境でも実施することができる。分散型計算機環境では、プログラムモジュールは、ローカルおよびリモートメモリ記憶装置両方に置くことができる。
ほとんどのコンピュータシステムにおいて、今日、「ファイル」は、ハードウェア/ソフトウェアインターフェイスシステムならびにアプリケーションプログラム、データセットなどを含み得る、格納可能な情報単位である。現在のすべてのハードウェア/ソフトウェアインターフェイスシステム(Windows(登録商標)、Unix(登録商標)、Linux、Mac OS、仮想マシンシステムなど)において、ファイルは、ハードウェア/ソフトウェアインターフェイスシステムによって扱うことができる基本的な個別の(格納可能かつ取得可能な)情報単位(たとえば、データ、プログラムなど)である。ファイルのグループは概して、「フォルダ」に組織化される。Microsoft Windows(登録商標)、Macintosh OS、および他のハードウェア/ソフトウェアインターフェイスシステムにおいて、フォルダとは、単一の情報単位として取得し、移動し、扱うことができるファイルのコレクションである。こうしたフォルダは、「ディレクトリ」と呼ばれるツリーベースの階層構成(本明細書において、後でより詳しく論じる)に組織化される。DOS、z/OS、およびほとんどのUnix(登録商標)ベースのオペレーティングシステムなど、他の特定のハードウェア/ソフトウェアインターフェイスシステムにおいて、「ディレクトリ」および/または「フォルダ」という用語は交換可能であり、初期のAppleコンピュータシステム(たとえば、Apple IIe)では、ディレクトリではなく「カタログ」という用語を使っていたが、本明細書で使用するこうした用語はすべて、同義的であり交換可能であるとみなされ、階層情報記憶構造ならびにそのフォルダおよびファイルコンポーネント用の他のすべての等価な用語およびコンポーネントへの参照をさらに含むことを意図している。
本発明は、本明細書において上述した、参照によって組み込まれている関連発明とともに、データを組織化し、検索し、共有するストレージプラットフォームを対象とする。本発明のストレージプラットフォームは、既存のファイルシステムおよびデータベースシステムを上回るようにデータプラットフォームを拡張し拡大し、「アイテム」と呼ばれる新しい形のデータを含むあらゆるタイプのデータ用のストアとなるように設計される。
本明細書および特許請求の範囲で使用する以下の用語は、以下の意味をもつ。
・「アイテム」とは、ハードウェア/ソフトウェアインターフェイスシステムにとってアクセス可能な、格納可能な情報単位であり、単純なファイルとは異なり、ハードウェア/ソフトウェアインターフェイスシステムシェルによってエンドユーザに公開されるすべてのオブジェクトにわたって一般的にサポートされる基本的な1組のプロパティを有するオブジェクトである。「アイテム」は、新しいプロパティおよび関係(本明細書において後で詳細に論じる)を導入させる特徴を含むすべての「アイテム」型にわたって一般的にサポートされるプロパティおよび関係も有する。
・「オペレーティングシステム」(OS)とは、アプリケーションプログラムとコンピュータハードウェアの間の媒介として働く特殊なプログラムである。オペレーティングシステムは、ほとんどの場合、シェルおよびカーネルを備える。
・「ハードウェア/ソフトウェアインターフェイスシステム」とは、コンピュータシステムの基底ハードウェアコンポーネントと、コンピュータシステム上で実行されるアプリケーションとの間のインターフェイスとして働くソフトウェア、またはハードウェアおよびソフトウェアの組合せである。ハードウェア/ソフトウェアインターフェイスシステムコンポーネントは一般に、オペレーティングシステムを備える(かつ、いくつかの実施形態では、オペレーティングシステムのみからなり得る)。ハードウェア/ソフトウェアインターフェイスシステムコンポーネントは、コンピュータシステムにおいて、オペレーティングシステムの代わりにまたはそれに加えて、仮想マシンマネージャ(VMM)、共通言語ランタイム(CLR)またはその機能的等価物、Java(登録商標)仮想マシン(JVM)またはその機能的等価物、あるいは他のこのようなソフトウェアコンポーネントも備え得る。ハードウェア/ソフトウェアインターフェイスシステムの目的は、ユーザがアプリケーションプログラムを実行することができる環境を提供することである。どのハードウェア/ソフトウェアインターフェイスシステムも、コンピュータシステムを使いやすくし、かつコンピュータハードウェアを効率的に使用することを目標とする。
図3を参照すると、ストレージプラットフォーム300は、データベースエンジン314上に実装されるデータストア302を備える。一実施形態では、データベースエンジンは、オブジェクトリレーショナル拡張を有するリレーショナルデータベースエンジンを備える。一実施形態では、リレーショナルデータベースエンジン314は、Microsoft SQLサーバというリレーショナルデータベースエンジンを備える。データストア302は、データの組織化、検索、共有、同期、およびセキュリティをサポートするデータモデル304を実装する。後で十分に詳しく説明するように、具体的なデータ型は、スキーマ340などのスキーマ中に記述され、ストレージプラットフォーム300は、そうしたスキーマを展開するとともにそうしたスキーマを拡張するツール346を提供する。
本発明のストレージプラットフォーム300のデータストア302は、ストアに常駐するデータの組織化、検索、共有、同期、およびセキュリティをサポートするデータモデルを実装する。本発明のデータモデルにおいて、「アイテム」とは、記憶情報の基本的な単位である。データモデルは、後で十分に詳しく説明するように、「アイテム」および「アイテム」の拡張を宣言し、「アイテム」の間の関係を確立し、「アイテム」を「アイテムフォルダ」および「カテゴリ」に組織化する機構を提供する。
「アイテム」とは、格納可能な情報単位であり、単純なファイルとは異なり、ストレージプラットフォームによってエンドユーザまたはアプリケーションプログラムに公開されるすべてのオブジェクトにわたって一般的にサポートされる基本的な1組のプロパティを有するオブジェクトである。「アイテム」は、後で論じるように、新しいプロパティおよび関係を導入させる特徴を含むすべての「アイテム」型にわたって一般的にサポートされるプロパティおよび関係も有する。
・「アイテム」の「アイテム型」、ならびに、「アイテム」が別の「アイテム」のサブ型である場合(すべての「アイテム」が、「基本スキーマ」中で単一の「アイテム」および「アイテム型」から派生される本発明のいくつかの実施形態の場合のように)は、適用可能なあらゆるサブ型情報(つまり、親「アイテム型」に付随する情報)。コピーされた元の「アイテム」が、別の「アイテム」のサブ型である場合、コピーも、その同じ「アイテム」のサブ型となり得る。
・存在する場合、「アイテム」の複合型プロパティおよび拡張。元の「アイテム」が、複合型のプロパティ(固有または拡張)を有する場合、コピーも、同じ複合型をもち得る。
・「所有権関係」における「アイテム」のレコード、つまり、他のどのような「アイテム」(「ターゲットアイテム」)が、現在の「アイテム」(「所有側アイテム」)によって所有されるかという、「アイテム」独自のリスト。このリストは、特に、後でより詳しく論じる「アイテムフォルダ」、およびすべての「アイテム」が少なくとも1つの「アイテムフォルダ」に属さなければならないという下に挙げる規則に適している。さらに、後でより詳しく論じる埋込みアイテムに関して、埋込みアイテムは、たとえばコピー、消去などの動作のために埋め込まれる「アイテム」の一部と見なされる。
アイテムは、グローバルなアイテム空間において、ItemIDを用いて一意に識別される。Base.Item型は、「アイテム」の識別を格納するGUID型のItemIDフィールドを定義する。「アイテム」は、データストア302中でただ1つの識別をもたなければならない。
後でより詳しく論じるように、「アイテム」のグループは、「アイテムフォルダ」(ファイルフォルダと混同しないようにされたい)と呼ばれる特殊な「アイテム」に組織化することができる。ただし、ほとんどのファイルシステムの場合とは異なり、「アイテム」は、複数の「アイテムフォルダ」に属すことができ、そうすることによって、「アイテム」が、ある「アイテムフォルダ」中でアクセスされ見直されると、この見直された「アイテム」は次いで、別の「アイテム」フォルダから直接アクセスすることができる。本質的に、「アイテム」へのアクセスは、異なる「アイテムフォルダ」から起こり得るが、実際にアクセスされているものは、まさに同じ「アイテム」である。ただし、「アイテムフォルダ」は、必ずしもそのメンバー「アイテム」をすべて所有するわけではなく、あるいは、他のフォルダとともに「アイテム」を共同所有し得るに過ぎず、そうすることによって、「アイテムフォルダ」を消去しても、必ずしも「アイテム」を消去することにはならない。それにも関わらず、本発明のいくつかの実施形態では、「アイテム」は、少なくとも1つの「アイテムフォルダ」に属さなければならず、そうすることによって、ある特定の「アイテム」の唯一の「アイテムフォルダ」が消去されると、いくつかの実施形態では、「アイテム」が自動的に消去され、あるいは代替実施形態では、「アイテム」は、自動的にデフォルト「アイテムフォルダ」のメンバー(たとえば、様々なファイルおよびフォルダベースのシステムで使われる同じような名前のフォルダと概念的に類似している「ゴミ箱」という「アイテムフォルダ」)となる。
a)「基本スキーマ」
「アイテム」の作成および使用のための普遍的な基盤を提供するために、本発明のストレージプラットフォームの様々な実施形態は、「アイテム」およびプロパティを作成し組織化する概念的なフレームワークを確立する「基本スキーマ」を備える。「基本スキーマ」は、「アイテム」およびプロパティの特定の特殊型、およびサブ型をそこからさらに派生することができるこうした基本的な特殊型の特徴を定義する。この「基本スキーマ」を使うことにより、プログラマは、「アイテム」(および「アイテム」それぞれの型)をプロパティ(およびプロパティそれぞれの型)と概念的に区別することが可能になる。さらに、すべての「アイテム」(および対応する「アイテム型」)が、「基本スキーマ」(および対応する「アイテム型」)においてこの基本的な「アイテム」から派生されるので、「基本スキーマ」は、すべてのアイテムが所有し得るプロパティの基本的な組を明らかにする。
本発明のストレージプラットフォームの様々な実施形態は、最上位レベルの「アイテム」型構造のための概念的なフレームワークを提供する「コアスキーマ」をさらに備える。図8Aは、「コアスキーマ」中の「アイテム」を示すブロック図であり、図8Bは、「コアスキーマ」中のプロパティ型を示すブロック図である。ファイルは、異なる拡張子(*.com、*.exe、*.bat、*.sysなど)で区別され、ファイルおよびフォルダベースのシステムにおける、他のこのような基準は、「コアスキーマ」の関数と類似している。「アイテム」ベースのハードウェア/ソフトウェアインターフェイスシステムにおいて、「コアスキーマ」は、直接(「アイテム」型によって)または間接的に(「アイテム」サブ型によって)、すべての「アイテム」を、「アイテム」ベースのハードウェア/ソフトウェアインターフェイスシステムが理解し、所定の予測可能なやり方で直接処理することができる1つまたは複数の「コアスキーマ」という「アイテム」型に特徴づける、1組のコア「アイテム」型を定義する。予め定義された「アイテム」型は、「アイテム」ベースのハードウェア/ソフトウェアインターフェイスシステムにおけるほとんどの共通「アイテム」を反映し、したがって、「コアスキーマ」を含む、こうした予め定義された「アイテム」型を理解する「アイテム」ベースのハードウェア/ソフトウェアインターフェイスシステムによってある程度の効果が得られる。
・Category:この「アイテム型」の「アイテム」(およびそこから派生されるサブ型)は、「アイテム」ベースのハードウェア/ソフトウェアインターフェイスシステムにおける有効な「カテゴリ」を表す。
・Commodity:値の識別可能なものであるアイテム。
・Device:情報処理能力をサポートする論理構造をもつアイテム。
・Document:「アイテム」ベースのハードウェア/ソフトウェアインターフェイスシステムによって翻訳されないが、ドキュメント型に対応するアプリケーションプログラムによって翻訳される内容をもつアイテム。
・Event:環境における特定の出来事を記録するアイテム。
・Location:物理的な位置(たとえば、地理的な場所)を表すアイテム。
・Message:2つ以上のプリンシパル(下で定義する)の間の通信のアイテム。
・Principal:ItemId(たとえば、人、編集、グループ、家族、権限、サービスなどの識別)に加えて、断定的に証明可能な少なくとも1つの識別をもつアイテム。
・Statement:限定ではなく、ポリシー、登録内容、認定資格などを含む環境に関する特殊な情報をもつアイテム。
同様に、図8Bを参照すると、「コアスキーマ」によってサポートされる具体的なプロパティ型は、以下の1つまたは複数を含み得る。
・Certificate(「基本スキーマ」中で、基本的なPropertyBase型から派生される)
・Principal Identity Key(「基本スキーマ」中で、IdentityKey型から派生される)
・Postal Address(「基本スキーマ」中で、Property型から派生される)
・Rich Text(「基本スキーマ」中で、Property型から派生される)
・EAddress(「基本スキーマ」中で、Property型から派生される)
・IdentitySecurityPackage(「基本スキーマ」中で、Relation型から派生される)
・RoleOccupancy(「基本スキーマ」中で、Relation型から派生される)
・BasicPresence(「基本スキーマ」中で、Relation型から派生される)
こうした「アイテム」および「プロパティ」は、図8Aおよび図8Bに示されるそれぞれのプロパティによってさらに記述される。
ある「アイテム」がソースとして指定され、他の「アイテム」がターゲットとして指定される場合、関係は、バイナリ関係である。ソース「アイテム」およびターゲット「アイテム」は、関係によって関係づけられる。ソース「アイテム」は概して、関係の存続期間を制御する。つまり、ソース「アイテム」が消去されると、「アイテム」の間の関係も消去される。
以下の要素を用いて、明示的な関係型が定義される。
・関係名が、「名称」属性中で指定される。
・「保持」、「埋込み」、「参照」の1つである関係型。「型」属性中で指定される。
・ソースおよびターゲットエンドポイント。各エンドポイントは、参照「アイテム」の名称および型を指定する。
・ソースエンドポイントフィールドは、概してItemID型(宣言されない)であり、同じデータストア中の「アイテム」を関係インスタンスとして参照しなければならない。
・「保持」および「埋込み」関係に対して、ターゲットエンドポイントフィールドは、ItemIDReference型でなければならず、同じストア中の「アイテム」を関係インスタンスとして参照しなければならない。「参照」関係に対して、ターゲットエンドポイントは、どのItemReference型でもよく、他のストレージプラットフォームデータストア中の「アイテム」を参照することができる。
・任意選択で、スカラーまたはPropertyBase型の1つまたは複数のフィールドを宣言することができる。こうしたフィールドは、関係に関連づけられたデータを含み得る。
・関係インスタンスは、グローバルな関係テーブルに格納される。
・すべての関係インスタンスは、組合せ(ソースItemID、関係ID)によって一意に識別される。関係IDは、所与の「アイテム」をソースとするすべての関係に対して、関係の型に関わらず、所与のソースItemIDにおいて一意である。
保持関係は、参照カウントに基づく、ターゲット「アイテム」の存続期間管理をモデル化するのに使われる。
埋込み関係は、ターゲット「アイテム」の存続期間の、排他的制御の概念をモデル化する。埋込み関係は、合成「アイテム」の概念を可能にする。
参照関係は、それが参照する「アイテム」の存続期間を制御しない。さらに、参照関係は、ターゲットの存在も保証せず、関係宣言において指定されたターゲットの型も保証しない。このことは、参照関係が不安定な状態となり得ることを意味する。また、参照関係は、他のデータストア中の「アイテム」を参照することができる。参照関係は、ウェブページにおけるリンクに似た概念と見なすことができる。
以下の追加規則および制約が、関係に適用される。
・「アイテム」は、(ただ1つの埋込み関係)あるいは(1つまたは複数の保持関係)のターゲットでなければならない。ただ1つの例外は、ルート「アイテム」である。「アイテム」は、ゼロ以上の参照関係のターゲットとなり得る。
・埋込み関係のターゲットである「アイテム」は、保持関係のソースになることができない。参照関係のソースにはなり得る。
・「アイテム」は、ファイルからプロモートされる場合、保持関係のソースになることができない。埋込み関係および参照関係のソースにはなり得る。
・ファイルからプロモートされる「アイテム」は、埋込み関係のターゲットになることができない。
少なくとも一実施形態において、本発明のストレージプラットフォームは、関係の順序づけをサポートする。順序づけは、基本関係定義において、「Order」という名前のプロパティにより遂行される。Orderフィールドに対して、一意性に関する制約はない。同じ「順序」プロパティ値をもつ関係の順序は保証されないが、より低い「順序」値の関係の後、かつより高い「順序」フィールド値の関係の前に順序づけることができることが保証される。
・RelFirstは、順序値OrdFirstをもつ、番号つきコレクション中の第1の関係である。
・RelLastは、順序値OrdLastをもつ、番号つきコレクション中の最後の関係である。
・RelXは、順序値OrdXをもつ、コレクション中の所与の関係である。
・RelPrevは、OrdXより小さい順序値OrdPrevをもつ、RelXに最も近いコレクション中の関係である。
・RelNextは、OrdXより大きい順序値OrdNextをもつ、RelXに最も近いコレクション中の関係である。
・InsertBeforeFirst(SourceItemID,Relation)は、関係を、コレクション中の第1の関係として挿入する。新しい関係の「Order」プロパティ値は、OrdFirstより小さくてよい。
・InsertAfterLast(SourceItemID,Relation)は、関係を、コレクション中の最後の関係として挿入する。新しい関係の「Order」プロパティ値は、OrdLastより大きくてよい。
・InsertAt(SourceItemID,ord,Relation)は、「Order」プロパティの指定された値をもつ関係を挿入する。
・InsertBefore(SourceItemID,ord,Relation)は、与えられた順序値をもつ関係の前に関係を挿入する。新しい関係には、OrdPrevとordの間であり、境界を含まない「Order」値を割り当てることができる。
・InsertAfter(SourceItemID,ord,Relation)は、与えられた順序値をもつ関係の後に関係を挿入する。新しい関係には、ordとOrdNextの間であり、境界を含まない「Order」値を割り当てることができる。
・MoveBefore(SourceItemID,ord,RelationshipID)は、与えられた関係IDをもつ関係を、指定された「Order」値をもつ関係の前に移動する。関係には、OrdPrevとordの間であり、境界を含まない新しい「Order」値を割り当てることができる。
・MoveAfter(SourceItemID,ord,RelationshipID)は、与えられた関係IDをもつ関係を、指定された「Order」値をもつ関係の後に移動する。関係には、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に格納される。ネスト要素型の「拡張」フィールドを通してアクセス可能である。
・多値プロパティにアクセスするのに使われるコレクションインターフェイスは、拡張型の組のアクセスおよび反復にも使われる。
上述したように、データストアは、データベースエンジン上に実装される。本実施形態において、データベースエンジンは、オブジェクトリレーショナル拡張を有するMicrosoft SQLサーバエンジンなどのSQL照会言語を実装するリレーショナルデータベースエンジンを備える。このセクションでは、本実施形態に従って、データストアがリレーショナルストアに対して実装し、ストレージプラットフォームクライアントによって消費される論理的APIについての情報を提供する、データモデルのマッピングについて述べる。ただし、異なるデータベースエンジンが利用される場合は、異なるマッピングを利用できることが理解されよう。実際、ストレージプラットフォームの概念的なデータモデルをリレーショナルデータベースエンジン上に実装することに加えて、データモデルは、他の型のデータベース、たとえばオブジェクト指向およびXMLデータベースに実装することもできる。
一実施形態ではMicrosoft SQLサーバエンジンを備えるリレーショナルデータベースエンジン314は、本実施形態において、内蔵スカラー型をサポートする。内蔵スカラー型は、「固有」かつ「単純」である。内蔵スカラー型は、ユーザが独自の型を定義することができないという意味で固有であり、複合構造をカプセル化することができないという点で単純である。ユーザ定義型(以下、UDT)は、ユーザが複合構造型を定義することによって型システムを拡張できるようにすることによって、固有スカラー型システムを超えた、型の拡張性のための機構を提供する。ユーザによって定義されると、UDTは、内蔵スカラー型を使うことができる型システムのどこでも使うことができる。
「アイテム」が全域的に検索可能であること、および本実施形態のリレーショナルデータベースにおける継承および型の代用可能性のサポートが望ましいので、データベースストアでの「アイテム」記憶の可能な一実装形態は、Base.Item型の列をもつ1個のテーブルにすべての「アイテム」を格納することであろう。型の代用可能性を用いると、すべての型の「アイテム」を格納することができ、Yukonの「is of(Type)」演算子を使って、「アイテム」型およびサブ型によって検索をフィルタリングすることができよう。
拡張は、「アイテム」と非常に似ており、同じ要件をいくつか有する。継承をサポートする別のルート型として、「拡張」は、記憶における同じ検討事項およびトレードオフの多くの対象である。このため、単一テーブル手法ではなく、型の同様のファミリマッピングが、「拡張」に適用される。当然ながら、他の実施形態では、単一テーブル手法を使うことができる。本実施形態において、「拡張」は、ItemIDによってただ1つの「アイテム」に関連づけられ、「アイテム」というコンテキストにおいて一意である拡張IDを含む。「アイテム」の場合と同様、ItemIDおよび拡張IDのペアからなる識別を与えられると、「拡張」を取得するための関数を提供することができる。「アイテム」型ビューと同様、各「拡張」型ごとにビューが作成される。
ネスト要素は、「アイテム」、「拡張」、「関係」、または他の「ネスト要素」に組み込まれて、深くネストされた構造を形成することができる型である。「ネスト要素」は、「アイテム」および「拡張」のように、UDTとして実装されるが、「アイテム」および「拡張」に格納される。したがって、「ネスト要素」は、要素の「アイテム」および「拡張」コンテナのマッピングを超える記憶マッピングをもたない。言い換えると、NestedElement型のインスタンスを直接格納するテーブルがシステムにはなく、特に「ネスト要素」に専用のビューもない。
データモデルにおける各エンティティ、すなわち、各「アイテム」、「拡張」、および「関係」は、一意なキーの値をもつ。「アイテム」は、そのItemIdによって一意に識別される。「拡張」は、(ItemId,ExtensionId)からなる複合キーによって一意に識別される。「関係」は、複合キー(Itemld,RelationshipId)によって識別される。ItemId、ExtensionId、およびRelationshipIdは、GUID値である。
データストア中で作成されるすべてのオブジェクトは、ストレージプラットフォームのスキーマ名から派生されるSQLスキーマ名に格納することができる。たとえば、ストレージプラットフォームの「基本」スキーマ(しばしば、「Base」と呼ばれる)は、「[System.Storage].Item」などの「[System.Storage]」SQLスキーマ中で型を生じることができる。生成された名称は、命名の競合を排除するために、先頭に限定子をつけられる。そうすることが適切な場合、感嘆符(!)が、名称の論理的な各部分の区切り文字として使われる。以下のテーブルは、データストア中のオブジェクト用に使われる命名規則をまとめたものである。各スキーマ要素(「アイテム」、「拡張」、「関係」、および「ビュー」)、が、データストア中のインスタンスにアクセスするのに使われる装飾つき命名規則とともに列挙されている。
どのオブジェクトモデルをストア中にマッピングするときも、アプリケーションオブジェクトとともに格納される付加情報に起因する命名衝突が起こる可能性がある。命名衝突を避けるために、型固有でないすべての列(型宣言において、名前つきプロパティに直接マップしない列)は、先頭に下線(_)文字をつけられる。本実施形態において、下線(_)文字は、どの識別子プロパティの先頭文字としても認められない。さらに、CLRとデータストアの間で命名を統一するために、ストレージプラットフォーム型またはスキーマ要素(関係など)のすべてのプロパティは、先頭の文字を大文字にするべきである。
格納されている内容を検索するビューが、ストレージプラットフォームによって提供される。各「アイテム」および「拡張」型ごとに、SQLビューが提供される。さらに、ビューは、(データモデルによって定義される)「関係」および「ビュー」をサポートするように提供される。ストレージプラットフォーム中のすべてのSQLビューおよび基底テーブルは、読取り専用である。データは、後で詳細に説明するように、ストレージプラットフォームAPIのUpdate()メソッドを使って格納することも変更することもできる。
・TypeIdなどの結果の型についてのメタデータ情報
・CreateVersion、UpdateVersionなどの変更追跡列
・型特有の列(群)(宣言される型のプロパティ)
・型特有のビュー(ファミリビュー)は、オブジェクトを返すオブジェクト列も含む
各型ファミリのメンバーは、一連の「アイテム」ビューを使って検索可能であり、データストアには、「アイテム」型ごとに1つのビューがある。図28は、「アイテム」検索ビューの概念を示す図である。
各「アイテム」検索ビューは、具体的な型またはそのサブ型の「アイテム」の各インスタンス用の行を含む。たとえば、「ドキュメント」用ビューは、ドキュメント、LegalDocumentおよびReviewDocumentのインスタンスを返し得る。この例を前提として、「アイテム」ビューは、図29に示すように概念化することができる。
ストレージプラットフォームデータストアの各インスタンスは、「マスタアイテムビュー」と呼ばれる特殊な「アイテム」ビューを定義する。このビューは、データストア中の各「アイテム」についての要約情報を提供する。このビューは、「アイテム」型プロパティごとに、「アイテム」の型を記述した列を一列と、変更追跡および同期情報の提供に使われるいくつかの列とを提供する。マスタアイテムビューは、「[System.Storage].[Master!Item]」という名称を使って、データストア中で識別される。
各「アイテム」型は、検索ビューも有する。ルート「アイテム」ビューと似ているが、このビューは、「_Item」列を通して、「アイテム」オブジェクトへのアクセスも提供する。各型指定アイテム検索ビューは、[schemaName].[itemTypeName]という名称を使って、データストア中で識別される。たとえば、[AcmeCorp.Doc].[OfficeDoc]である。
WinFSストアにおけるすべてのアイテムの拡張は、検索ビューを使ってもアクセス可能である。
データストアの各インスタンスは、「マスタ拡張ビュー」と呼ばれる特殊な「拡張」ビューを定義する。このビューは、データストア中の各「拡張」についての要約情報を提供する。このビューは、「拡張」プロパティごとに、「拡張」の型を記述する列を一列と、変更追跡および同期情報の提供に使われるいくつかの列とを有する。マスタ拡張ビューは、「[System.Storage].[Master!Extension]」という名称を使って、データストア中で識別される。
各「拡張」型は、検索ビューも有する。マスタ拡張ビューと似ているが、このビューは、「_Extension」列を通して、「アイテム」オブジェクトへのアクセスも提供する。各型指定拡張検索ビューは、[schemaName].[Extension!extensionTypeName]という名称を使って、データストア中で識別される。たとえば、[AcmeCorp.Doc].[Extension!OfficeDocExt]である。
すべてのネスト要素は、「アイテム」、「拡張」、または「関係」インスタンスに格納される。このようなものとして、ネスト要素は、適切な「アイテム」、「拡張」、または「関係」検索ビューを照会することによってアクセスされる。
上述したように、「関係」は、ストレージプラットフォームデータストア中で「アイテム」の間をリンクする基本的な単位を形成する。
各データストアは、「マスタ関係ビュー」を提供する。このビューは、データストア中のすべての関係インスタンスについての情報を提供する。マスタ関係ビューは、「[System.Storage].[Master!Relationship]」という名称を使って、データストア中で識別される。
各宣言「関係」は、具体的な関係のすべてのインスタンスを返す検索ビューも有する。マスタ関係ビューと似ているが、このビューは、関係データの各プロパティごとに、名前付きの列も提供する。各関係インスタンス検索ビューは、[schemaName].[Relationship!relationshipName]という名称を使って、データストア中で識別される。たとえば、[AcmeCorp.Doc].[Relationship!DocumentAuthor]である。
9. アップデート
ストレージプラットフォームデータストア中のすべてのビューは、読取り専用である。データモデル要素の(アイテム、拡張、または関係)の新しいインスタンスを作成し、あるいは既存のインスタンスをアップデートするために、ストレージプラットフォームAPIのProcessOperationまたはProcessUpdategramメソッドを使わなければならない。ProcessOperationメソッドは、実施されるアクションを詳述する「動作」を消費するデータストアによって定義される、格納されている単一の手順である。ProcessUpdategramメソッドは、実施される1組のアクションを全体として詳述する「updategram」として知られる、順序づけられた1組の動作を行う、格納されている手順である。
a. CreateItem(埋込みまたは保持関係のコンテキストにおいて、新しいアイテムを作成する)
b. UpdateItem(既存の「アイテム」をアップデートする)
2. 関係動作:
a. CreateRelationship(参照または保持関係のインスタンスを作成する)
b. UpdateRelationship(関係インスタンスをアップデートする)
c. DeleteRelationship(関係インスタンスを削除する)
3. 拡張動作:
a. CreateExtension(既存の「アイテム」に拡張を追加する)
b. UpdateExtension(既存の拡張をアップデートする)
c. DeleteExtension(拡張を消去する)
10. 変更追跡および削除標識
変更追跡および削除標識サービスは、後でより詳しく論じるように、データストアによって提供される。このセクションでは、データストア中で公開される変更追跡情報の概要を述べる。
データストアによって提供される各検索ビューは、変更追跡情報を提供するのに使われる列を含む。こうした列は、すべての「アイテム」、「拡張」、および「関係」ビューにわたって共通である。スキーマ設計者によって明示的に定義されるストレージプラットフォーム「スキーマビュー」は、変更追跡情報を自動的には提供しない。このような情報は、ビュー自体が構築されている検索ビューを介して間接的に提供される。
マスタ検索ビューにおける変更追跡情報は、要素の作成およびアップデートバージョンについての情報、どの同期パートナーが要素を作成したかという情報、どの同期パートナーが最後に要素をアップデートしたか、ならびに作成およびアップデートの各パートナーからのバージョン番号を提供する。同期関係におけるパートナー(後で説明する)は、「パートナーキー」によって識別される。[System.Storage.Store].ChangeTrackingInfo型の_ChangeTrackingInfoという名前の単一のUDTオブジェクトは、この情報をすべて含む。この型は、System.Storageスキーマ中で定義される。_ChangeTrackingInfoは、すべてのグローバル検索ビューにおいて、「アイテム」、「拡張」、および「関係」に対して利用可能である。ChangeTrackingInfoの型定義は、以下のようになる。
グローバル検索ビューと同じ情報の提供に加えて、各型指定検索ビューは、各要素の同期状態を同期トポロジに記録する付加情報を提供する。
データストアは、「アイテム」、「拡張」、および「関係」を提供する。削除標識ビューは、活きている、および削除標識を立てられたエンティティ(アイテム、拡張、および関係)両方に対する削除標識情報を一箇所で提供する。アイテムおよび拡張削除標識ビューは、対応するオブジェクトへのアクセスを提供しないが、関係削除標識ビューは、関係オブジェクト(関係オブジェクトは、削除標識を立てられた関係の場合はNULLである)へのアクセスを提供する。
アイテム削除標識は、ビュー[System.Storage].[Tombstone!Item]を通してシステムから取得される。
拡張削除標識は、ビュー[System.Storage].[Tombstone!Extension]を使ってシステムから取得される。拡張変更追跡情報は、「アイテム」に提供されるものと似ており、ExtensionIdプロパティが追加される。
関係削除標識は、ビュー[System.Storage].[Tombstone!Relationship]を介してシステムから取得される。関係削除標識情報は、「拡張」に提供されるものと似ている。ただし、関係インスタンスのターゲットItemRefについての付加情報が提供される。さらに、関係オブジェクトも選択される。
削除標識情報が際限なく増加するのを防止するために、データストアは、削除標識クリーンアップタスクを提供する。このタスクは、削除標識情報を破棄してもよいときを判定する。タスクは、ローカルな作成/アップデートバージョンに対する限界を計算し、次いで、すべての以前の削除標識バージョンを破棄することによって、削除標識情報を切り捨てる。
基底マッピングは、いくつかのヘルパ関数も提供する。こうした関数は、データモデルに対する共通動作を補助するために供給される。
インスタンスメタデータ(「アイテム」の型など)、および型メタデータという2つの型のメタデータが、「ストア」中で表される。
スキーマメタデータは、「メタ」スキーマからの「アイテム」型のインスタンスとしてデータストアに格納される。
インスタンスメタデータは、アプリケーションによって、「アイテム」の型を照会するのに使われ、「アイテム」に関連づけられた拡張を見つける。「アイテム」に対するItemIdを与えられると、アプリケーションは、グローバルアイテムビューを照会して「アイテム」の型を返し、この値を使ってMeta.Typeビューを照会して、「アイテム」の宣言された型についての情報を返すことができる。以下に例を挙げる。
概して、すべての安全であり得るオブジェクトは、そのアクセス権を、図26に示すアクセスマスク形式を使って配列する。この形式において、下位16ビットは、オブジェクト固有のアクセス権用であり、次の7ビットは、ほとんどの型のオブジェクトに適用される標準アクセス権であり、4上位ビットは、各オブジェクト型が1組の標準およびオブジェクト固有の権利にマップし得る汎用アクセス権を指定するのに使われる。ACCESS_SYSTEM_Securityビットは、オブジェクトのSACLにアクセスするための権利に対応する。
本発明の別の態様によると、ストレージプラットフォームは、アプリケーションにデータ変更を追跡させる通知性能を提供する。この特徴は、揮発状態を維持し、またはデータ変更イベントに対してビジネス論理を実行するアプリケーションを主に対象としている。アプリケーションは、アイテム、アイテムの拡張、およびアイテムの関係に関する通知に登録を行う。通知は、データ変更が確定した後、非同期で配信される。アプリケーションは、アイテム、拡張、および関係型ならびに動作の型によって通知をフィルタリングすることができる。
本発明の別の態様によると、ストレージプラットフォームは、同期サービス330を提供し、このサービスは、(i)ストレージプラットフォームの複数のインスタンス(それぞれが独自のデータストア302を有する)に、1組の柔軟な規則に従ってその内容の一部を同期させ、(ii)サードパーティが、本発明のストレージプラットフォームのデータストアを、独自のプロトコルを実装する他のデータソースと同期させるためのインフラストラクチャを提供する。
・別のレプリカがどの変更に気づいているか判定する。
・このレプリカが気づいていない変更についての情報を要求する。
・この別のレプリカが気づいていない変更についての情報を伝える。
・2つの変更が競合しているときを判定する。
・変更をローカルに適用する。
・収束させるために、他のレプリカに競合解決を伝える。
・競合解決用に指定されたポリシーに基づいて競合を解決する。
本発明のストレージプラットフォームの同期サービス330の主アプリケーションは、ストレージプラットフォームの複数のインスタンス(それぞれが独自のデータストアを有する)を同期させる。同期サービスは、(データベースエンジン314の基底テーブルではなく)ストレージプラットフォームスキーマのレベルで動作する。したがって、たとえば、「スコープ」が、後で論じるように同期セットを定義するのに使われる。
どのアプリケーションも、同期サービスに接続し、同期動作を開始することができる。このようなアプリケーションは、同期を実施するのに必要とされるパラメータをすべて提供する(以降の同期プロファイルを参照)。このようなアプリケーションは、本明細書において、同期制御アプリケーション(SCA)と呼ばれる。
同期サービスの基本的な概念は、変更単位という概念である。変更単位とは、ストレージプラットフォームによって個々に追跡されるスキーマの最小部分である。すべての変更単位に対して、同期サービスは、最後の同期以降、変更単位が変更されたか、それとも変更されなかったか判定することが可能であり得る。
データの特定の一部を同期させたままにしておくことを望むストレージプラットフォームパートナーのグループは、同期コミュニティと呼ばれる。コミュニティのメンバーは、同期している状態を望むが、必ずしも、データを全く同じように表すわけではない。言い換えると、同期パートナーは、同期しているデータを変換することができる。
コミュニティフォルダのマッピングは、XML構成ファイルとして個々のマシンで格納される。各マッピングは、以下のスキーマを有する。
/mappings/cornmunityFolder
この要素は、このマッピングの対象であるコミュニティフォルダに名前をつける。名称は、フォルダの構文規則に従う。
/mappings/localFolder
この要素は、マッピングによる変換後のローカルフォルダに名前をつける。名称は、フォルダの構文規則に従う。ローカルフォルダは、マッピングが有効となるように存在していなければならない。このフォルダ中のアイテムは、このマッピングごとに同期が検討される。
/mappings/transformations
この要素は、アイテムを、コミュニティフォルダからローカルフォルダに、かつその反対に変換する方法を定義する。この要素が存在しない、または空の場合、変換は実施されない。具体的には、どのIDもマップされないことを意味する。この構成は主に、フォルダのキャッシュ作成に有用である。
/mappings/transformations/mapIDs
この要素は、コミュニティIDを再利用するのではなく、コミュニティフォルダからマップされるアイテムすべてに、新しく生成されたローカルIDが割り当てられることを要求する。同期ランタイムは、アイテムをコンバートし、戻すためのIDマッピングを維持する。
/mappings/transformations/localRoot
この要素は、コミュニティフォルダ内のすべてのルートアイテムが、指定されたルートの子供にされることを要求する。
/mappings/runAs
この要素は、誰の権限の下で、このマッピングに対する要求が処理されるかを制御する。存在しない場合、送信者が想定される。
/mappings/runAs/sender
この要素の存在は、このマッピングへのメッセージの送信者が、なりすましを受けなければならないことを示し、送信者の認定資格の下で処理されることを要求する。
「同期プロファイル」とは、同期を開始するのに必要とされる、パラメータの全体集合である。同期プロファイルは、同期を開始するために、SCAによって「同期ランタイム」に供給される。ストレージプラットフォーム同士の間の同期用の同期プロファイルは、以下の情報を含む。
・変更のソースおよび宛先として働くローカルフォルダ。
・同期するためのリモートフォルダ名:このフォルダは、上で定義したマッピングによって、リモートパートナーから公表されなければならない。
・方向:同期サービスは、送信専用、受信専用、および送受信同期をサポートする。
・ローカルフィルタ:どのようなローカル情報をリモートパートナーに送るかを選択する。ローカルフォルダに対するストレージプラットフォームクエリとして表現される。
・リモートフィルタ:どのようなリモート情報をリモートパートナーから取得するかを選択する。コミュニティフォルダに対するストレージプラットフォームクエリとして表現される。
・変換:アイテムとローカル形式の間で、どのようにして変換を行うかを定義する。
・ローカルセキュリティ:リモートエンドポイントから取得された変更が、リモートエンドポイントの許可(なりすまされる)の下で適用されるべきか、それともユーザが同期をローカルに開始するか指定する。
・競合解決ポリシー:競合が拒絶され、ログに記録され、または自動的に解決されるべきか指定する。自動的に解決される場合、どの競合リゾルバを使うか、ならびにリゾルバ用の構成パラメータを指定する。
一実施形態では、同期サービスは、その独自のスケジューリングインフラストラクチャを提供しない。そうではなく、同期サービスは、別のコンポーネント、すなわちMicrosoft Windows(登録商標)オペレーティングシステムを有する、市販のWindows(登録商標)スケジューラに依拠して、このタスクを実施する。同期サービスは、SCAとして働くとともにXMLファイルに保存されている同期プロファイルに基づいて同期をトリガするコマンドラインユーティリティを含む。このユーティリティにより、スケジュール通りに、またはユーザのログオンやログオフなどのイベントに応答して同期を実行するようにWindows(登録商標)スケジューラを構成することが非常に容易になる。
同期サービスにおける競合操作は、次の3つの段階に分けられる。(1)変更適用時に起こる競合検出:このステップは、変更を安全に適用することができるかどうか判定する。(2)自動競合解決およびログ記録:このステップ(競合が検出された直後に起こる)の間、自動競合リゾルバは、競合を解決することができるかどうか調べるために問合せを受ける。解決できない場合、競合は、任意選択でログに記録することができる。(3)競合検査および解決:このステップは、いくつかの競合がログに記録されている場合に起こり、同期セッションのコンテキスト外で起こる。この時点で、ログに記録された競合は、解決しログから削除することができる。
本実施形態において、同期サービスは、知識ベースおよび制約ベースの2つのタイプの競合を検出する。
2つのレプリカが、同じ変更単位に対してそれぞれ独立した変更を行うと、知識ベースの競合が起こる。2つの変更は、互いを知らずに行われた場合、独立していると言われる。言い換えると、第1の変更のバージョンは、第2の変更の知識に含まれず、その逆も同様である。同期サービスは、上述したレプリカの知識に基づいて、すべてのこのような競合を自動的に検出する。
独立変更は、一緒に適用されると、統合性制約に違反する場合がある。たとえば、同じディレクトリ中に同じ名称のファイルを作成する2つのレプリカが、このような競合を起こさせ得る。
競合が検出されると、同期サービスは、3つのアクションの1つを行い得る(「同期プロファイル」において同期イニシエータによって選択される)。(1)変更を拒絶し、変更を送信者に戻す、(2)競合を競合ログに記録する、または(3)競合を自動的に解決する。
同期サービスは、いくつかのデフォルト競合リゾルバを提供する。このリストは、以下のものを含む。
・ローカル優先:ローカルに格納されているデータと競合する場合、受信した変更を無視する。
・リモート優先:受信した変更と競合する場合、ローカルデータを無視する。
・最新版を優先:変更単位ごとに、変更のタイムスタンプに基づいて、ローカル優先か、それともリモート優先かを選ぶ(同期サービスは概して、クロック値に依拠しないことに留意されたい。この競合リゾルバは、その規則のただ1つの例外である)。
・決定論:重要なものを除くすべてのレプリカに対して同じであることが保証されるやり方で勝者を選ぶ。同期サービスの一実施形態では、パートナーIDを辞書方式で比較して、この特徴を実装する。
特殊な種類の競合リゾルバが、「競合ロガー」である。同期サービスは、競合をConflictRecord型の「アイテム」としてログに記録する。こうしたレコードは、競合しているアイテムに逆に関係づけられる(アイテム自体が消去されていない限り)。各競合レコードは、競合を引き起こした着信変更と、アップデート対アップデート、アップデート対消去、消去対アップデート、挿入対挿入、または制約という競合の型と、着信変更のバージョンおよびこの着信を送ったレプリカの関する知識とを含む。ログに記録された競合は、後で説明するように、検査および解決に利用可能である。
同期サービスは、アプリケーションが競合ログを調べ、ログの中の競合の解決を提起するためのAPIを提供する。このAPIは、アプリケーションに、すべての競合、または所与の「アイテム」に関連する競合を列挙させる。また、このようなアプリケーションに、以下の3通りのやり方の1つで、ログに記録された競合を解決させる。(1)リモート優先:ログに記録された変更を受諾し、競合しているローカル変更を上書きする。(2)ローカル優先:ログに記録されている変更の競合部を無視する。(3)新しい変更の提起:アプリケーションが、その意見として、競合を解決するマージを提案する。競合がアプリケーションによって解決されると、同期サービスは、ログから競合を削除する。
複合同期シナリオにおいて、複数のレプリカで同じ競合が検出される場合がある。同じ競合が検出されると、以下のことが起こり得る。(1)一方のレプリカにおいて競合を解決することができ、他方に解決を送ることができる。(2)競合が、両方のレプリカにおいて自動的に解決される。または(3)競合が、両方のレプリカにおいて手作業で(競合検査APIを介して)解決される。
本発明のストレージプラットフォームの別の態様によると、ストレージプラットフォームは、ISVが、たとえばMicrosoft Exchange、AD、Hotmailなどのレガシーシステムにストレージプラットフォームを同期させるための「同期アダプタ」を実装するアーキテクチャを提供する。「同期アダプタ」は、後で説明するように、同期サービスによって提供される多くの「同期サービス」から利益を受ける。
同期サービスは、アダプタの書き手にいくつかの同期サービスを提供する。このセクションの残りの部分では、ストレージプラットフォームが「クライアント」として同期しているマシン、およびアダプタが「サーバ」として会話している非ストレージプラットフォームバックエンドに言及するのが好都合である。
同期サービスによって維持される変更追跡データに基づいて、同期アダプタは、「変更列挙」により、このパートナーとの最後の同期が試みられてからデータストア「フォルダ」に対して起こった変更を容易に列挙することが可能になる。
変更の適用により、「同期アダプタ」は、アダプタのバックエンドから受け取られた変更をローカルストレージプラットフォームに適用することができる。アダプタは、変更をストレージプラットフォームスキーマに変換するものと期待される。図24は、ストレージプラットフォーム「スキーマ」からストレージプラットフォームAPIクラスを生成するためのプロセスを示す。
上述した競合解決機構(ログ記録および自動解決オプション)は、同期アダプタにも利用可能である。「同期アダプタ」は、変更を適用するとき、競合解決のためのポリシーを指定することができる。指定された場合、競合は、指定された競合ハンドラに渡され、解決することができる(可能な場合)。競合は、ログに記録することもできる。アダプタは、バックエンドへのローカル変更の適用を試みるとき、競合を検出し得ることが可能である。このような場合、アダプタはさらに、「同期ランタイム」に、ポリシーに従って解決されるべき競合を渡すことができる。さらに、「同期アダプタ」は、同期サービスによって検出されたどの競合も、処理のためにアダプタに返送されるよう、要求することができる。これは、バックエンドが競合を格納することも解決することもできる場合に特に好都合である。
いくつかの「アダプタ」は、ランタイムインターフェイスを使用する単なるアプリケーションであるが、アダプタは、標準アダプタインターフェイスを実装することを推奨される。こうしたインターフェイスにより、「同期制御アプリケーション」は、所与の「同期プロファイル」に従ってアダプタが同期を実施するよう要求し、継続中の同期をキャンセルし、継続中の同期についての進捗報告(完了パーセント数)を受け取ることが可能になる。
同期サービスは、ストレージプラットフォームによって実装されるセキュリティモデルへの導入を、できるだけ少なくすることを目指す。同期に対して新しい権利を定義するのではなく、既存の権利が用いられる。具体的には、以下のようにする。
・データストアアイテムを読むことができる人は誰でも、そのアイテムへの変更を列挙することができる。
・データストアアイテムに書き込むことができる人は誰でも、そのアイテムに変更を適用することができる。
・データストアアイテムを拡張することができる人は誰でも、同期メタデータをそのアイテムに関連づけることができる。
レプリカの分散コミュニティの監視は、複雑な問題である。同期サービスは、「スイープ」アルゴリズムを使って、レプリカの状況についての情報を収集し分散することができる。スイープアルゴリズムのプロパティにより、確実に、すべての構成レプリカについての情報が最終的に集められ、不合格な(応答のない)レプリカが検出されるようになる。
上述したように、本発明のストレージプラットフォームは、少なくともいくつかの実施形態では、コンピュータシステムのハードウェア/ソフトウェアインターフェイスシステムの不可欠な部分として実現されることを意図している。たとえば、本発明のストレージプラットフォームは、Microsoft Windows(登録商標)ファミリのオペレーティングシステムなどのオペレーティングシステムの不可欠な部分として実現することができる。ストレージプラットフォームAPIは、能力の1つとして、アプリケーションプログラムがオペレーティングシステムと対話するためのオペレーティングシステムAPIの一部となる。したがって、ストレージプラットフォームは、アプリケーションプログラムがオペレーティングシステムに情報を格納するための手段となり、ストレージプラットフォームの「アイテム」ベースのデータモデルはしたがって、このようなオペレーティングシステムの従来のファイルシステムと置き換わる。たとえば、Microsoft Windows(登録商標)ファミリのオペレーティングシステムにおいて実現されるように、ストレージプラットフォームは、そのオペレーティングシステムにおいて実装されるNTFSファイルシステムと置き換わり得る。現在、アプリケーションプログラムは、Windows(登録商標)ファミリのオペレーティングシステムによって公開されるWin32APIにより、NTFSファイルシステムのサービスを利用する。
ストレージプラットフォームは、アプリケーションプログラムが、上述したストレージプラットフォームの特徴および性能を利用するとともにデータストアに格納されているアイテムにアクセスすることを可能にするAPIを備える。このセクションでは、本発明のストレージプラットフォームのストレージプラットフォームAPIの一実施形態について述べる。この機能に関する詳細は、上記参照によって本明細書に組み込まれている関連出願において見ることができ、便宜上、この情報の一部を後で要約する。
1. アプリケーション350a、350b、または350cが、ストレージプラットフォーム中のアイテムにバインドする。
2. フレームワーク2004が、バインドアイテムに対応するItemContextオブジェクト2202を作成し、アプリケーションに返す。
3. アプリケーションが、「アイテム」のコレクションを得るために、このItemContextにおいてFindをサブミットする。返されるコレクションは、概念上、(関係により)オブジェクトグラフ2204である。
4. アプリケーションが、データを変更し、消去し、挿入する。
5. アプリケーションが、Update()メソッドをコールすることによって変更を保存する。
本発明の基本的な概念は、スキーマによって記述され、ハードウェア/ソフトウェアインターフェイスシステムによって強制される複合構造、ビヘイビア、および動作を用いて、現実世界のアプリケーションオブジェクトをある程度モデル化する「アイテム」の使用である。豊富なサブ型指定機能を提供するために、本発明の様々な実施形態では、ハードウェア/ソフトウェアインターフェイスシステム(便宜上、これ以降は単に「WinFS」と呼ぶこととする)は、「拡張」を使って「アイテム」(および「アイテム」型)を拡張することを可能にするための機構を提供することができる。拡張は、既存の「アイテム」型構造に、追加データ構造(プロパティ、関係など)を提供する。
本発明の様々な実施形態において、WinFS型システムは、データの構造を定義する機構を提供する。型システムは、WinFSに格納されるデータを表すのに使われる。WinFS型は、WinFSスキーマにおいて宣言される。WinFSスキーマは、1組の型および他のWinFSスキーマ要素用の論理的グループ化として働く名前空間を定義する。WinFSスキーマは、XML形式を使い得るWinFSスキーマ定義言語(SDL)を使って宣言することができる。以下は、可能なスキーマ宣言の例である。
要するに、WinFS型システムは、4つの特殊型ファミリを定義する。
・「ネスト要素」型(別名、「ネストされた」型または「プロパティ」型)
・「アイテム」型
・「関係」型
・「拡張」型
各型ファミリは、WinFS型システムにおいて、異なる1組のプロパティおよび使用法を有する。System.Storageスキーマ名前空間は、型ファミリそれぞれのルート型として働く4つの型を宣言する。以下のセクションでは、型ファミリを詳しく記述する。
他のWinFS型ファミリとは異なり、ネスト型は、複合WinFS型のプロパティの型として使うことができる。ネスト型のインスタンスは、別の複合型のインスタンス内部でのみネストすることができる。ただし、ネスト型のインスタンスは、全域的に照会することができない。つまり、アプリケーションは、WinFSストア中の所与のネスト型のすべてのインスタンスを返す単純クエリを組み立てることができない。
WinFS「アイテム」とは、祖先がSystem.Storage.Item型である型のインスタンスである。この型は、「アイテム」型ファミリのルートである複合型である。System.Storage.Itemは、Guid型の名称ItemIdの「プロパティ」を宣言する。このプロパティは、「アイテム」の一次キーとして働く、「アイテム」の特殊なプロパティである。この「プロパティ」の値は、所与のWinFSストア中で、「アイテム」に対して一意であることが保証される。このプロパティは、ヌルになることはなく、「アイテム」型のインスタンスを作成するときにアプリケーションによって割り当てられなければならない。ItemId「プロパティ」は、不変でもあり、絶対に変えることはできず、再利用してはならない。
関係型により、「関係」は、「アイテム」の間に存在することが可能になる。WinFS「関係」型は、ある「アイテム」がソースとして指定され、他の「アイテム」がターゲットとして指定されるバイナリ「関係」を記述する。「関係」とは、祖先がSystem.Storage.Relationship型である型のインスタンスである。この型は、「関係」型階層のルートである。System.Storage.Relationship型は、以下のプロパティを宣言する。
・SourceItemId:「関係」インスタンスのソースである「アイテム」のItemId
・RelationshipId:ソース「アイテム」に相対的。ペア(SourceItemId,RelationshipId)が、WinFSにおいて「関係」型用の一次キーを形成する
・TargetItemId:「関係」のターゲットのItemId
・Mode:3つの起こり得る「関係」インスタンスモード、すなわち「保持」、「埋込み」、または「参照」の1つ
・Name:保持「関係」用の「関係」の名称を含む
・IsHidden:アプリケーションが、表示する必要がない「関係」をフィルタリングするのに任意選択で使うことができるブール値属性
SourceItemId、RelationshipId、TargetItemId、およびMode「プロパティ」値は不変である。こうした値は、「関係」インスタンス作成時に割り当てられ、変えることができない。
・ソースおよびターゲットエンドポイントの指定:各エンドポイントが、参照「アイテム」の名称および型を指定する。
・「関係」型のインスタンスの許可されるモード:「関係」インスタンスは、「関係」宣言において許可されないMode「プロパティ」の値をもつことができない
以下は、「関係」宣言の例である。
以下のセクションでは、様々な「関係」インスタンスモードのセマンティクスについて述べる。
以下の追加規則および制約が、「関係」に適用される。
・「アイテム」は、(ただ1つの埋込み「関係」)あるいは(1つまたは複数の保持「関係」)のターゲットでなければならない。ただ1つの例外は、ルート「アイテム」である。「アイテム」は、ゼロ以上の参照「関係」のターゲットとなり得る。
・埋込み「関係」のターゲットである「アイテム」は、保持「関係」のソースになることができない。参照「関係」のソースにはなり得る。
・「アイテム」は、ファイルからプロモートされる場合、保持「関係」のソースになることができない。埋込み「関係」および参照「関係」のソースにはなり得る。
・ファイルからプロモートされる「アイテム」は、埋込み「関係」のターゲットになることができない。
・「関係」型Aは、エンドポイント型をさらに制限することができる。エンドポイント型は、基本「関係」B中の、対応するエンドポイント型のサブ型でなければならない。エンドポイントがさらに制限される場合、エンドポイント用の新しい名称が宣言されなければならない。エンドポイントが制限されない場合、エンドポイントの指定は任意選択である。
・「関係」型Aは、基本「関係」において宣言される許可されるインスタンスモードをさらに制限することができる。インスタンスモードの制限された組は、許可されるインスタンス型の基本型セットのサブセットでなければならない。
・エンドポイントの名称は、「プロパティ」名として扱われる。すなわち、「プロパティ」の名称と同じものにも、型またはその基本型のエンドポイントの名称と同じものにもなることができない。
・「ソース」および「ターゲット」要素は、対応するエンドポイント型が、派生「関係」によってそれ以上制限されない場合、任意選択である。
本明細書において上で定義されたDocumentAuthor「関係」から派生する「関係」型の宣言例を以下に挙げる。
WinFS「拡張」とは、祖先がSystem.Storage.Extension型である型のインスタンスである。この型は、「拡張」型ファミリのルートである複合型である。
・System.Storage.Extensionは、以下の2つのプロパティを定義する。
・ItemId:「拡張」と関連づけられる「アイテム」のItemId
・ExtensionId:ItemIdに相対する、「拡張」の一意な識別子。ペア(ItemId、ExtensionId)は、「拡張」インスタンスを一意に識別する。
・拡張型インスタンスは、「アイテム」から独立して存在することができない。「拡張」ItemIdと同じItemIdをもつ「アイテム」型インスタンスは、「拡張」型インスタンスが作成される前にストアに存在しなければならない。所与のItemIdをもつ「アイテム」が存在しない場合、「拡張」は、作成することができない。「アイテム」が消去されると、同じItemIDをもつ「拡張」がすべて消去される。
・所与の最終派生「拡張」型の多くとも1つのインスタンスを、個々の「アイテム」に関連づけることができる。
・拡張は、「関係」のソースおよびターゲットになることができない。
本発明のいくつかの実施形態では、ハードウェア/ソフトウェアインターフェイスシステムは、様々な「アイテム」の間の関係を明確な形にするとともにそうすることによって複数の「アイテム」を照会する能力を向上させるために、「拡張」および「継承」を使用する。
図36は、一連の相互に関係付けられた「アイテム」と、その「関係」サブセットとを示す。「ドキュメントアイテム」3602および「連絡先アイテム」3604は、指定された関係3606によって直接関係づけられ、関係3606は、この場合、「作者関係」である。つまり、「連絡先」3604は、「ドキュメント」3602の「作者」である。この例では、各「アイテム」の型が「ドキュメントアイテム」型のサブ型なので、「ピクチャアイテム」3622、「ミュージックアイテム」3624、および「スペシャルアイテム」3626はすべて、「ドキュメントアイテム」3604から継承を行う。同様に、「人」という「アイテム」3642および「組織アイテム」3644は、「連絡先アイテム」3604から継承を行う。本発明のいくつかの実施形態では、「アイテム」(「ピクチャ」3622、「ミュージック」3624、「スペシャル」3626、「人」3642、および「組織」3644)のこうした継承は、それぞれの親「アイテム」(「ドキュメント」3602および「連絡先」3604)の「プロパティ」を継承するだけでなく、こうした2つの親「アイテム」の間の指定された「関係」も継承する。たとえば、「ピクチャ」3622は、「連絡先」3604への関係3662、「人」3642への関係3664、および「組織」3644への関係3666を継承する。同様の1組の「関係」も、図に示す他の「アイテム」それぞれによって継承される。
図37Aは、アプリケーション特有の目的のための、「アイテム」の標準的なサブ型指定の欠点を示す。この図において、「連絡先」は、4つのアプリケーション、APP1、APP2、APPX、およびAPPYによってアクセス可能である。APP1およびAPP2は、標準「連絡先」にアクセスするが、APPXおよびAPPYそれぞれは、拡張連絡先オブジェクトを必要とする(追加フィールドを追加する)ので、「連絡先」からそれぞれ継承する「連絡先’」および「連絡先”」を派生する。しかし、問題は、この時点で、基本的な「連絡先アイテム」の3つの異なるインスタンスが、1つは「連絡先」として、1つは「連絡先’」として、1つは「連絡先”」として存在することである。
上記の説明のように、本発明は、データを組織化し、検索し、共有するストレージプラットフォームを対象とする。本発明のストレージプラットフォームは、既存のファイルシステムおよびデータベースシステムを上回るようにデータプラットフォームを拡張し拡大し、リレーショナル(テーブル形式)データ、XML、およびアイテムと呼ばれる新しい形のデータなど、構造化、非構造化、または半構造化データを含むあらゆるタイプのデータ用のストアとなるように設計される。共通の記憶基盤およびデータの体系化により、本発明のストレージプラットフォームは、消費者、知識労働者、および企業に対して、より効率的なアプリケーション開発を可能にする。本発明のストレージプラットフォームは、データモデル中で継承される性能を利用可能にするだけでなく、既存のファイルシステムおよびデータベースアクセス方法も包含し拡張する、豊富かつ拡張可能なアプリケーションプログラミングインターフェイスを提供する。本発明の広範な概念から逸脱することなく、上述した実施形態に変更を加えることができることを理解されたい。したがって、本発明は、開示した具体的な実施形態に限定されず、添付の特許請求の範囲によって定義される本発明の精神および範囲内であるすべての修正形態を包含することを意図している。
Claims (7)
- プロセッサと、
前記プロセッサと通信するメモリと
を備えるハードウェア/ソフトウェアインターフェイスシステムによって実行され、前記ハードウェア/ソフトウェアインターフェイスシステムが格納可能及びアクセス可能な情報単位をカスタマイズする方法であって、前記ハードウェア/ソフトウェアインターフェイスシステムは、
型構造を有する情報単位を作成するステップであって、前記情報単位は、前記情報単位を一意に識別するための第1の識別子を有する、ステップと、
アプリケーションによって要求される追加のデータ構造の拡張を表す拡張型を定義するステップと、
前記拡張型に基づいて拡張インスタンスを作成するステップであって、前記拡張インスタンスは、前記第1の識別子と前記拡張型を一意に識別するための第2の識別子とを含み、前記第1の識別子を含むことによって前記情報単位と関連付けられ、前記第1の識別子及び前記第2の識別子によって前記拡張インスタンスが一意に識別される、ステップと、
前記拡張インスタンスを前記情報単位に付加して前記情報単位を拡張するステップと
を含む方法を実行することを特徴とする方法。 - 前記拡張型は、拡張された情報単位の前記型構造とは別個に存在することができないことを特徴とする請求項1に記載の方法。
- 前記拡張型を定義するステップは、複数の拡張型を定義し、前記複数の拡張型の各々は追加のデータ構造を表すステップと
をさらに備えることを特徴とする請求項1に記載の方法。 - 前記拡張型は、重複する型インスタンスをモデル化するのに使われることを特徴とする請求項3に記載の方法。
- 複数の別個の格納可能な情報単位を扱うハードウェア/ソフトウェアインターフェイスシステムであって、前記ハードウェア/ソフトウェアインターフェイスシステムは、
プロセッサ実行可能命令を実行するように設定されたプロセッサと、
前記プロセッサと通信するメモリであって、前記プロセッサ実行可能命令を格納する、メモリとを備え、前記プロセッサは、
型構造を有する情報単位を作成し、前記情報単位は、前記情報単位を一意に識別するための第1の識別子を有し、
アプリケーションによって要求される追加のデータ構造の拡張を表す拡張型を定義し、
前記拡張型に基づいて拡張インスタンスを定義し、前記拡張インスタンスは、前記第1の識別子と前記拡張型を一意に識別するための第2の識別子とを含み、前記第1の識別子を含むことによって前記情報単位と関連付けられ、前記第1の識別子及び前記第2の識別子によって前記拡張インスタンスが一意に識別され、
前記拡張インスタンスを前記情報単位に付加して前記情報単位を拡張する、
ための前記プロセッサ実行可能命令を実行することを特徴とするハードウェア/ソフトウェアインターフェイスシステム。 - 前記拡張型は、拡張された情報単位の前記型構造とは別個に存在することができないことを特徴とする請求項5に記載のハードウェア/ソフトウェアインターフェイスシステム。
- 複数の拡張型を定義し、複数の前記拡張型の各々は、追加のデータ構造を表す、
前記プロセッサ実行可能命令をさらに備えることを特徴とする請求項5に記載のハードウェア/ソフトウェアインターフェイスシステム。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/646,580 US7428546B2 (en) | 2003-08-21 | 2003-08-21 | Systems and methods for data modeling in an item-based storage platform |
PCT/US2003/026144 WO2005029313A1 (en) | 2003-08-21 | 2003-08-21 | Systems and methods for data modeling in an item-based storage platform |
US10/693,574 US7590643B2 (en) | 2003-08-21 | 2003-10-24 | Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system |
PCT/US2004/024569 WO2005024666A2 (en) | 2003-08-21 | 2004-07-29 | Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2007503051A JP2007503051A (ja) | 2007-02-15 |
JP2007503051A5 JP2007503051A5 (ja) | 2007-09-20 |
JP4580390B2 true JP4580390B2 (ja) | 2010-11-10 |
Family
ID=34279603
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006523871A Expired - Fee Related JP4580390B2 (ja) | 2003-08-21 | 2004-07-29 | ハードウェア/ソフトウェアインターフェイスシステムによって管理可能な情報単位の拡張および継承のためのシステムおよび方法 |
Country Status (12)
Country | Link |
---|---|
EP (1) | EP1604310A4 (ja) |
JP (1) | JP4580390B2 (ja) |
KR (1) | KR101022936B1 (ja) |
CN (1) | CN1871598B (ja) |
AU (1) | AU2004271531B2 (ja) |
BR (1) | BRPI0406512A (ja) |
CA (3) | CA2506337C (ja) |
IL (1) | IL168666A (ja) |
MX (1) | MXPA05006260A (ja) |
NO (1) | NO20052052L (ja) |
TW (1) | TWI337310B (ja) |
WO (1) | WO2005024666A2 (ja) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
US8131739B2 (en) | 2003-08-21 | 2012-03-06 | Microsoft Corporation | Systems and methods for interfacing application programs with an item-based storage platform |
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 |
US7805422B2 (en) | 2005-02-28 | 2010-09-28 | Microsoft Corporation | Change notification query multiplexing |
KR100938830B1 (ko) * | 2007-12-18 | 2010-01-26 | 한국과학기술정보연구원 | 지식베이스 구축 방법 및 그 서버 |
CN101650670B (zh) | 2008-08-14 | 2013-01-09 | 鸿富锦精密工业(深圳)有限公司 | 可共享应用程序配置参数的电子系统及其方法 |
US20100318964A1 (en) * | 2009-06-12 | 2010-12-16 | Microsoft Corporation | Software extension analysis |
CN103678687B (zh) * | 2013-12-26 | 2017-04-05 | 北京奇虎科技有限公司 | 基于配置系统的项目创建方法及装置 |
CN112015405B (zh) * | 2019-05-29 | 2022-06-21 | 腾讯数码(天津)有限公司 | 界面布局文件的生成方法、界面生成方法、装置及设备 |
TWI720528B (zh) * | 2019-07-03 | 2021-03-01 | 神雲科技股份有限公司 | 用於擴充硬碟擴充單元的叢集式儲存系統 |
WO2022010491A1 (en) * | 2020-07-10 | 2022-01-13 | Hewlett-Packard Development Company, L.P. | Application version switching |
US11423025B2 (en) * | 2020-07-27 | 2022-08-23 | International Business Machines Corporation | Direct data loading of middleware-generated records |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6078925A (en) * | 1995-05-01 | 2000-06-20 | International Business Machines Corporation | Computer program product for database relational extenders |
US6324533B1 (en) * | 1998-05-29 | 2001-11-27 | International Business Machines Corporation | Integrated database and data-mining system |
US6385767B1 (en) | 1999-09-30 | 2002-05-07 | Unisys Corporation | Method and system for creating and manipulating extensions to version control systems |
US6763350B2 (en) * | 2001-06-01 | 2004-07-13 | International Business Machines Corporation | System and method for generating horizontal view for SQL queries to vertical database |
US6697818B2 (en) * | 2001-06-14 | 2004-02-24 | International Business Machines Corporation | Methods and apparatus for constructing and implementing a universal extension module for processing objects in a database |
JP3695581B2 (ja) * | 2001-08-08 | 2005-09-14 | ソニー株式会社 | 記録装置および記録方法、記録媒体、並びに、電子カメラ |
WO2003019363A1 (en) * | 2001-08-24 | 2003-03-06 | Brooks Automation, Inc. | Application class extensions |
JP2003150424A (ja) * | 2001-11-16 | 2003-05-23 | Fujitsu Ltd | ファイルシステム、制御方法及びプログラム |
-
2004
- 2004-07-28 TW TW093122603A patent/TWI337310B/zh not_active IP Right Cessation
- 2004-07-29 CA CA2506337A patent/CA2506337C/en not_active Expired - Fee Related
- 2004-07-29 CA CA2815867A patent/CA2815867C/en not_active Expired - Fee Related
- 2004-07-29 BR BR0406512-3A patent/BRPI0406512A/pt not_active IP Right Cessation
- 2004-07-29 WO PCT/US2004/024569 patent/WO2005024666A2/en active Application Filing
- 2004-07-29 MX MXPA05006260A patent/MXPA05006260A/es active IP Right Grant
- 2004-07-29 JP JP2006523871A patent/JP4580390B2/ja not_active Expired - Fee Related
- 2004-07-29 AU AU2004271531A patent/AU2004271531B2/en not_active Ceased
- 2004-07-29 CN CN200480001833.4A patent/CN1871598B/zh not_active Expired - Fee Related
- 2004-07-29 EP EP04779583A patent/EP1604310A4/en not_active Ceased
- 2004-07-29 KR KR1020057012318A patent/KR101022936B1/ko active IP Right Grant
- 2004-07-29 CA CA2815562A patent/CA2815562C/en not_active Expired - Fee Related
-
2005
- 2005-04-26 NO NO20052052A patent/NO20052052L/no unknown
- 2005-05-18 IL IL168666A patent/IL168666A/en not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
CA2815562A1 (en) | 2005-03-17 |
CA2815562C (en) | 2015-02-17 |
KR20060057524A (ko) | 2006-05-26 |
KR101022936B1 (ko) | 2011-03-16 |
WO2005024666A3 (en) | 2005-10-20 |
TWI337310B (en) | 2011-02-11 |
CA2815867C (en) | 2015-09-29 |
AU2004271531A1 (en) | 2005-03-17 |
EP1604310A2 (en) | 2005-12-14 |
CN1871598A (zh) | 2006-11-29 |
BRPI0406512A (pt) | 2005-12-06 |
CA2506337C (en) | 2015-01-20 |
AU2004271531B2 (en) | 2009-12-10 |
EP1604310A4 (en) | 2009-06-10 |
WO2005024666A8 (en) | 2005-08-18 |
WO2005024666A2 (en) | 2005-03-17 |
IL168666A (en) | 2010-11-30 |
CA2506337A1 (en) | 2005-03-17 |
CA2815867A1 (en) | 2005-03-17 |
JP2007503051A (ja) | 2007-02-15 |
MXPA05006260A (es) | 2005-08-19 |
CN1871598B (zh) | 2014-10-15 |
NO20052052D0 (no) | 2005-04-26 |
NO20052052L (no) | 2005-07-06 |
TW200513874A (en) | 2005-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4583377B2 (ja) | ハードウェア/ソフトウェアインターフェースシステムにより管理可能な情報のユニットに対する関係および階層の同期サービスを実現するシステムおよび方法 | |
JP4738908B2 (ja) | ハードウェア/ソフトウェアインターフェースシステムにより管理可能な情報の単位のピアツーピア同期化のための競合処理を提供するためのシステムおよび方法 | |
US7739316B2 (en) | Systems and methods for the implementation of base schema for organizing 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 | |
US7483915B2 (en) | Systems and method for representing relationships between units of information manageable by a hardware/software interface system | |
US8131739B2 (en) | Systems and methods for interfacing application programs with an item-based storage platform | |
US7428546B2 (en) | Systems and methods for data modeling in an item-based storage platform | |
US7529811B2 (en) | Systems and methods for the implementation of a core schema for providing a top-level structure for organizing units of information manageable by a hardware/software interface system | |
US7349913B2 (en) | Storage platform for organizing, searching, and sharing data | |
JP4583376B2 (ja) | ハードウェア/ソフトウェアインタフェースシステムにより管理可能な情報のユニットに対する同期処理サービスを実現するシステムおよび方法 | |
AU2003259959B2 (en) | Systems and methods for data modeling in an item-based storage platform | |
US20070088724A1 (en) | Systems and methods for extensions and inheritance 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 | |
JP2007521533A (ja) | アプリケーションプログラムをアイテムベースのストレージプラットフォームとインターフェースするためのシステムおよび方法 | |
JP4901472B2 (ja) | ハードウェア/ソフトウェア・インターフェース・システムにより管理可能な情報の単位を編成するデジタル・イメージ・スキーマの実装のためのシステムおよび方法 | |
JP4580390B2 (ja) | ハードウェア/ソフトウェアインターフェイスシステムによって管理可能な情報単位の拡張および継承のためのシステムおよび方法 | |
JP4580389B2 (ja) | 仲介ファイルシステム共有または仲介デバイスを介してコンピュータシステムを同期させるためのシステムおよび方法 | |
JP4583375B2 (ja) | 同期スキーマの実装のためのシステム | |
JP4394644B2 (ja) | データの編成、検索、および共有のためのストレージプラットフォーム | |
KR101109390B1 (ko) | 하드웨어/소프트웨어 인터페이스 시스템에 의해 관리가능한 정보의 단위들에 대한 동기화 서비스를 제공하는시스템 및 방법 | |
KR20060110733A (ko) | 중간 파일 시스템 공유 또는 장치를 통해 컴퓨터 시스템을동기화하는 시스템 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070730 |
|
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: 20100423 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100723 |
|
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 |
|
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 |
|
LAPS | Cancellation because of no payment of annual fees |