JP4738908B2 - ハードウェア/ソフトウェアインターフェースシステムにより管理可能な情報の単位のピアツーピア同期化のための競合処理を提供するためのシステムおよび方法 - Google Patents
ハードウェア/ソフトウェアインターフェースシステムにより管理可能な情報の単位のピアツーピア同期化のための競合処理を提供するためのシステムおよび方法 Download PDFInfo
- Publication number
- JP4738908B2 JP4738908B2 JP2005175754A JP2005175754A JP4738908B2 JP 4738908 B2 JP4738908 B2 JP 4738908B2 JP 2005175754 A JP2005175754 A JP 2005175754A JP 2005175754 A JP2005175754 A JP 2005175754A JP 4738908 B2 JP4738908 B2 JP 4738908B2
- Authority
- JP
- Japan
- Prior art keywords
- item
- conflict
- change
- data
- unit
- 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
-
- 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/08—Protocols for interworking; Protocol conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- 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
- G06F16/1834—Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- 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]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
Description
本発明の主題を、法的要件を満たすための特定性を有して説明する。しかし、説明自体は本特許の範囲を限定するように意図されない。むしろ、発明者は、主張された主題もまた他の方法で、他の現在および将来の技術と共に、異なるステップ、または本書で説明するステップに類似のステップの組合せを含むように実施される可能性もあることを企図している。また、「ステップ」という用語は本明細書で、使用された方法の異なる要素を暗示するために使用される場合があるが、この用語は、個々のステップの順序が明示的に説明される場合を除いて、本明細書で開示された様々なステップの間のいかなる特定の順序をも暗示するように解釈されるべきではない。
本発明の多数の実施形態はコンピュータ上で実行することができる。図1および以下の考察は、本発明を実施することができる適切なコンピューティング環境の簡単な全体的説明を提供するように意図される。必要ではないが、本発明の様々な態様を一般に、クライアントワークステーションまたはサーバなどのコンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令に関連して説明することができる。一般に、プログラムモジュールには、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれ、これらは特定のタスクを実行するか、あるいは特定の抽象データタイプを実装する。また、本発明を他のコンピュータシステム構成により実施することができ、これらの構成にはハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラマブルなコンシューマエレクトロニクス、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどが含まれる。本発明をまた分散コンピューティング環境において実施することもでき、この環境ではタスクが、通信ネットワークを通じてリンクされるリモート処理デバイスによって実行される。分散コンピューティング環境では、プログラムモジュールが、ローカルおよびリモートのメモリストレージデバイス内に位置することができる。
今日の大部分のコンピュータシステムでは、「ファイル」は、ハードウェア/ソフトウェアインターフェースシステム、ならびにアプリケーションプログラム、データセットなどを含むことができる、格納可能な情報の単位である。すべての現代のハードウェア/ソフトウェアインターフェースシステム(Windows(登録商標)、Unix(登録商標)、Linux、Mac OS、仮想マシンシステムなど)では、ファイルは情報(例えば、データ、プログラムなど)の基本の離散的(格納可能および検索可能な)単位であり、ハードウェア/ソフトウェアインターフェースシステムによって操作することができる。ファイルのグループは一般に「フォルダ」内に編成される。Microsoft Windows(登録商標)、Macintosh OS、および他のハードウェア/ソフトウェアインターフェースシステムでは、フォルダは、単一の情報の単位として検索、移動およびそうでない場合は操作することができるファイルのコレクションである。これらのフォルダは、「ディレクトリ」と呼ばれるツリーベースの階層構成において編成される(本明細書で以下でより詳細に論じる)。DOS、z/DOSおよび大部分のUnix(登録商標)ベースのオペレーティングシステムなど、ある他のハードウェア/ソフトウェアインターフェースシステムでは、「ディレクトリ」および/または「フォルダ」という用語は交換可能であり、初期のAppleコンピュータシステム(例えば、Apple IIe)はディレクトリの代わりに「カタログ」という用語を使用したが、本明細書で使用される場合、これらのすべての用語は同義語および交換可能であると見なされ、階層的情報ストレージ構造ならびにそれらのフォルダおよびファイルコンポーネントについてのすべての他の等価語、およびそれらへの参照をさらに含むように意図される。
本発明は、本明細書で前述したように参照により組み込まれた関連発明と組み合わせて、データを編成、検索および共有するためのストレージプラットフォームを対象とする。本発明のストレージプラットフォームは、上述の既存のファイルシステムおよびデータベースシステムの種類を超えてデータプラットフォームを拡張および拡大し、アイテムと呼ばれる新しい形式のデータを含む、すべてのタイプのデータのためのストアとなるように設計される。
本明細書および特許請求の範囲で使用される場合、以下の用語は以下の意味を有する。
図3を参照すると、ストレージプラットフォーム300は、データベースエンジン314上で実装されたデータストア302を備える。一実施形態では、データベースエンジンは、オブジェクトリレーショナルエクステンションを有するリレーショナルデータベースエンジンを備える。一実施形態では、リレーショナルデータベースエンジン314は、Microsoft SQL Serverリレーショナルデータベースエンジンを備える。データストア302は、データの編成、検索、共有、同期化およびセキュリティをサポートするデータモデル304を実装する。特定のタイプのデータは、スキーマ304などのスキーマ内に記述され、ストレージプラットフォーム300は、これらのスキーマを配置するため、ならびに、これらのスキーマを拡張するためのツール346を提供し、これを以下でより十分に説明する。
本発明のストレージプラットフォーム300のデータストア302は、ストア内に存在するデータの編成、検索、共有、同期化およびセキュリティをサポートするデータモデルを実装する。本発明のデータモデルでは、「アイテム」はストレージ情報の基本的単位である。データモデルは、アイテムおよびアイテムエクステンションを宣言するため、および、複数のアイテムの間のリレーションシップを確立するため、および、アイテムをアイテムフォルダ内およびカテゴリ内に編成するためのメカニズムを提供し、これを以下でより十分に説明する。
アイテムは格納可能な情報の単位であり、単純なファイルとは異なり、ストレージプラットフォームによってエンドユーザまたはアプリケーションプログラムにエクスポーズされたすべてのオブジェクトにわたって共通してサポートされる、プロパティの基本セットを有するオブジェクトである。アイテムはまた、新しいプロパティおよびリレーションシップが導入されることを可能にする特徴を含むすべてのアイテムタイプにわたって共通してサポートされる、プロパティおよびリレーションシップをも有し、これを以下で論じる。
アイテムはItemIDにより、グローバルアイテムスペース内で一意に識別される。Base.Itemタイプは、そのアイテムのための識別を格納するタイプGUIDのフィールドItemIDを定義する。アイテムは、データストア302内で厳密に1つの識別を有していなければならない。
以下でより十分に論じるように、アイテムのグループを、アイテムフォルダ(ファイルフォルダと混同されるべきではない)と呼ばれる特殊アイテムに編成することができる。しかし、大部分のファイルシステムとは異なり、アイテムは複数のアイテムフォルダに属することができ、アイテムがあるアイテムフォルダ内でアクセスされて訂正される場合、この訂正されたアイテムに別のアイテムフォルダから直接アクセスすることができるようになる。本質的に、アイテムへのアクセスは異なるアイテムフォルダから発生する可能性があるが、実際にアクセスされているのは実はまったく同じアイテムである。しかし、アイテムフォルダは必ずしもそのメンバアイテムのすべてを所有するとは限らず、または、単に他のフォルダと共にアイテムを共同所有することができ、あるアイテムフォルダの削除は必ずしもアイテムの削除の結果になるとは限らないようになる。それにもかかわらず、本発明のいくつかの実施形態では、アイテムは少なくとも1つのアイテムフォルダに属していなければならず、特定のアイテムのためのただ1つのアイテムフォルダが削除される場合、いくつかの実施形態では、そのアイテムは自動的に削除されるか、または代替実施形態では、アイテムは自動的にデフォルトのアイテムフォルダ(例えば、様々なファイルおよびフォルダベースのシステムで使用される類似の名前のフォルダに概念的に類似する「ごみ箱」アイテムフォルダ)のメンバとなるようになる。
a)ベーススキーマ
アイテムの作成および使用のための汎用の基礎を提供するために、本発明のストレージプラットフォームの様々な実施形態は、アイテムおよびプロパティを作成および編成するための概念的フレームワークを確立するベーススキーマを備える。ベーススキーマはある特殊なタイプのアイテムおよびプロパティ、および、それからサブタイプをさらに導出することができるこれらの特殊な基礎タイプの特徴を定義する。このベーススキーマの使用により、プログラマはアイテム(およびそれらの各タイプ)をプロパティ(およびそれらの各タイプ)から概念的に区別することができる。また、ベーススキーマは、すべてのアイテムが所有することができるプロパティの基礎セットを示し、これは、すべてのアイテム(およびそれらの対応するアイテムタイプ)はベーススキーマ(およびその対応するアイテムタイプ)内のこの基礎アイテムから導出されるからである。
本発明のストレージプラットフォームの様々な実施形態はさらに、トップレベルアイテムタイプ構造のための概念的フレームワークを提供するコアスキーマを備える。図8Aは、コアスキーマ内のアイテムを例示するブロック図であり、図8Bは、コアスキーマ内のプロパティタイプを例示するブロック図である。ファイルおよびフォルダベースのシステムにおける、異なる拡張子(*.com、*.exe、*.bat、*.sysなど)を有するファイルと他のこのような基準の間でなされる区別は、コアスキーマのファンクションに類似している。アイテムベースのハードウェア/ソフトウェアインターフェースシステムでは、コアスキーマはコアアイテムタイプのセットを定義し、このセットは直接的(アイテムタイプによる)または間接的(アイテムサブタイプによる)にすべてのアイテムを、アイテムベースのハードウェア/ソフトウェアインターフェースシステムが理解して所定の予測可能な方法で直接処理することができる1つまたは複数のコアスキーマアイテムタイプに特徴付ける。事前定義されたアイテムタイプは、アイテムベースのハードウェア/ソフトウェアインターフェースシステム内の最も共通のアイテムを反映し、したがって、アイテムベースのハードウェア/ソフトウェアインターフェースシステムが、コアスキーマを備えるこれらの事前定義されたアイテムタイプを理解することによって、あるレベルの効率が得られる。
リレーションシップは、一方のアイテムがソースとして指定され、他方のアイテムがターゲットとして指定される、2項リレーションシップである。ソースアイテムおよびターゲットアイテムはリレーションシップによって関係付けられる。ソースアイテムは一般にリレーションシップのライフタイムをコントロールする。すなわち、ソースアイテムが削除される場合、これらのアイテムの間のリレーションシップも削除される。
明示的リレーションシップタイプは以下の要素により定義される。
保留リレーションシップは、ターゲットアイテムのライフタイム管理に基づいて参照カウントをモデリングするために使用される。
埋め込みリレーションシップは、ターゲットアイテムのライフタイムの排他的コントロールの概念をモデリングする。このリレーションシップは、複合アイテムの概念を可能にする。
参照リレーションシップは、それが参照するアイテムのライフタイムをコントロールしない。さらに、参照リレーションシップは、ターゲットの存在を保証せず、リレーションシップ宣言で規定されたターゲットのタイプも保証しない。これは、参照リレーションシップがダングリングになる可能性があることを意味する。また、参照リレーションシップは他のデータストア内のアイテムを参照することができる。参照リレーションシップを、ウェブページ内のリンクに類似した概念と見なすことができる。
以下の追加のルールおよび制約がリレーションシップに対して適用される。
少なくとも1つの実施形態では、本発明のストレージプラットフォームは、リレーションシップの順序付けをサポートする。この順序付けは、ベースリレーションシップ定義内の「Order」という名前のプロパティを通じて達成される。Orderフィールド上に一意性の制約はない。同じ「order」プロパティ値を有するリレーションシップの順序は保証されないが、これらのリレーションシップを、より低い「order」値を有するリレーションシップの後、および、より高い「order」フィールド値を有するリレーションシップの前に順序付けすることができることが保証される。
ストレージプラットフォームは、上述のように、スキーマの初期セット340を備えるように意図される。加えて、しかし、少なくともいくつかの実施形態では、ストレージプラットフォームは、独立系ソフトウェアベンダー(ISV)を含む顧客が新しいスキーマ344(すなわち、新しいItemおよびNested Elementタイプ)を作成できるようにする。このセクションは、スキーマの初期セット340内で定義されたアItemタイプおよびNested Elementタイプ(または単に「Element」タイプ)を拡張することによって、このようなスキーマを作成するためのメカニズムを扱う。
・ISVは、ストレージプラットフォームスキーマの初期セット340によって定義されたいかなるタイプ(Item、Nested ElementまたはExtensionタイプ)もサブタイプ定義することはできない。
アイテム拡張可能性を提供するために、データモデルはさらに、Base.Extensionという名前の抽象タイプを定義する。これは、エクステンションタイプの階層のためのルートタイプである。アプリケーションはBase.Extensionをサブタイプ定義して、特定のエクステンションタイプを作成することができる。
ネストされた要素タイプは、アイテムタイプと同じメカニズムにより拡張されない。ネストされた要素のエクステンションは、ネストされた要素タイプのフィールドと同じメカニズムにより格納およびアクセスされる。
上述のように、データストアはデータベースエンジン上で実装される。本発明では、データベースエンジンは、Microsoft SQL Serverエンジンなど、SQLクエリ言語を実装するリレーショナルデータベースエンジンを、オブジェクトリレーショナルエクステンションと共に備える。このセクションでは、データストアが実装するデータモデルの、リレーショナルストアへのマッピングを説明し、本実施形態による、ストレージプラットフォームクライアントによって消費される論理APIについての情報を提供する。しかし、異なるデータベースエンジンが使用される場合、異なるマッピングを使用することができることは理解されよう。実際に、ストレージプラットフォームの概念データモデルをリレーショナルデータベースエンジン上に実装することに加えて、例えばオブジェクト指向およびXMLデータベースなど、他のタイプのデータベース上でも実装することができる。
この実施形態では、一実施形態ではMicrosoft SQL Serverエンジンを備えるリレーショナルデータベースエンジン314は、組み込みスカラ型をサポートする。組み込みスカラ型は「ネイティブ」および「単純」である。組み込みスカラ型は、ユーザがそれら自体のタイプを定義することができないという意味でネイティブであり、複合構造をカプセル化することができない点で単純である。ユーザ定義タイプ(以下、UDT)は、ユーザが複合の構造化タイプを定義することによってタイプシステムを拡張できるようにすることによって、ネイティブのスカラ型システム以上のタイプ拡張性のためのメカニズムを提供する。ユーザによって定義された後、UDTを、タイプシステム内で組み込みスカラ型が使用される可能性のあるいかなる所で使用することもできる。
アイテムがグローバルに検索可能であることが望ましいこと、および、継承およびタイプ置換可能性のためのこの実施形態のリレーショナルデータベースにおけるサポートが与えられると、データベースストアにおけるアイテム格納のための1つの可能な実施態様は、タイプBase.Itemの列を有する単一のテーブル内にすべてのアイテムを格納することになる。タイプ置換可能性を使用すると、すべてのタイプのアイテムを格納することができ、検索をアイテムタイプおよびサブタイプによって、Yukonの「is of(タイプ)」演算子を使用してフィルタリングすることができる。
エクステンションはアイテムに大変類似しており、同じ要件のいくつかを有する。継承をサポートするもう1つのルートタイプとして、エクステンションは、ストレージにおける同じ考慮事項およびトレードオフの多数を受ける。このため、類似のタイプのファミリマッピングは、単一テーブル手法ではなくエクステンションに適用される。言うまでもなく、他の実施形態では、単一テーブル手法を使用することができる。この実施形態では、エクステンションは、ItemIDによって厳密に1つのアイテムに関連付けられ、アイテムのコンテキストにおいて一意であるExtensionIDを含む。アイテムと同様に、その識別が与えられたエクステンションを検索するためにファンクションが提供される場合があり、この識別はItemIDおよびExtensionIDのペアからなる。アイテムタイプビューに類似して、ビューが各エクステンションタイプについて作成される。
ネストされた要素は、アイテム、エクステンション、リレーションシップ、または他のネストされた要素に埋め込んで、深くネストされた構造を形成することができるタイプである。アイテムおよびエクステンションのように、ネストされた要素はUDTとして実装されるが、アイテムおよびエクステンション内に格納される。したがって、ネストされた要素はそれらのアイテムおよびエクステンションコンテナのストレージマッピングを越えたストレージマッピングは有していない。すなわち、システム内にNestedElementタイプのインスタンスを直接格納するテーブルはなく、ネストされた要素に特に専用のビューはない。
データモデル内の各エンティティ、すなわち、各アイテム、エクステンションおよびリレーションシップは、一意のキー値を有する。アイテムはそのItemIDによって一意に識別される。エクステンションは、(ItemID、ExtensionId)の複合キーによって一意に識別される。リレーションシップは、複合キー(ItemID、RelationshipId)によって識別される。ItemId、ExtensionIdおよびRelationshipIdは、GUID値である。
データストア内で作成されたすべてのオブジェクトを、ストレージプラットフォームスキーマ名から派生されたSQLスキーマ名において格納することができる。例えば、ストレージプラットフォームのベーススキーマ(しばしば「ベース」と呼ばれる)は、「[System.Storage].Item」など、「[System.Storage]」SQLスキーマ内でタイプを作成することができる。生成された名前に、修飾子によってプレフィックスが付けられて、名前付けの競合が排除される。適切な場合には、感嘆符文字(!)が名前の各論理部のためのセパレータとして使用される。以下の表は、データストア内のオブジェクトについて使用される名前付け規則を概説する。各スキーマ要素(アイテム、エクステンション、リレーションシップおよびビュー)は、データストア内のインスタンスにアクセスするために使用された、修飾された名前付け規則と共にリストされる。
いかなるオブジェクトモデルをストアにマップする場合にも、名前付けの衝突の可能性は、アプリケーションオブジェクトと共に格納された追加の情報により発生する。名前付けの衝突を回避するために、すべてのタイプ固有でない列(タイプ宣言内で名前付きプロパティに直接マップしない列)には、下線(_)文字でプレフィックスが付けられる。この実施形態では、下線(_)文字は、いかなる識別子プロパティの開始文字としても許可されない。さらに、CLRとデータストアの間の名前付けを単一化するために、ストレージプラットフォームタイプまたはスキーマ要素のすべてのプロパティ(リレーションシップなど)は、最初の文字を大文字で有するべきである。
ビューは、格納されたコンテンツを検索するためにストレージプラットフォームによって提供される。SQLビューは、各アイテムおよびエクステンションタイプについて提供される。さらに、ビューは、リレーションシップおよびビュー(データモデルによって定義される)をサポートするために提供される。ストレージプラットフォーム内のすべてのSQLビューおよび下にあるテーブルは、読み取り専用である。データを、ストレージプラットフォームAPIのUpdate()メソッドを使用して格納または変更することができ、これを以下でより十分に説明する。
各アイテム検索ビューは、固有のタイプまたはそのサブタイプのアイテムの各インスタンスのための行を含む。例えば、Documentのためのビューは、Document、LegalDocumentおよびReviewDocumentのインスタンスを戻すことができる。この例を考えると、アイテムビューを図29のように概念化することができる。
ストレージプラットフォームデータストアの各インスタンスは、マスタアイテムビューと呼ばれる特殊アイテムビューを定義する。このビューは、データストア内の各アイテムについての概要情報を提供する。このビューは、アイテムタイププロパティにつき1つの列、アイテムのタイプを記述した列、ならびに、変更追跡および同期情報を提供するために使用されるいくつかの列を提供する。マスタアイテムビューはデータストア内で、名前「[System.Storage].[Master!Item]」を使用して識別される。
各アイテムタイプはまた検索ビューをも有する。ルートのアイテムビューに類似するが、このビューはまた「_Item」列を介してアイテムオブジェクトへのアクセスをも提供する。各型付けアイテム検索ビューはデータストア内で、名前[schemaName].[itemTypeName]を使用して識別される。例えば、[AcmeCorp.Doc].[OfficeDoc]である。
WinFS Storeにおけるすべてのアイテムエクステンションはまた、検索ビューを使用してもアクセス可能である。
データストアの各インスタンスは、マスタエクステンションビューと呼ばれる特殊エクステンションビューを定義する。このビューは、データストア内の各エクステンションについての概要情報を提供する。このビューは、エクステンションプロパティにつき1つの列、エクステンションのタイプを記述する列、ならびに、変更追跡および同期情報を提供するために使用されるいくつかの列を有する。マスタエクステンションビューはデータストア内で、名前「[System.Storage].[Master!Extension]」を使用して識別される。
(1)型付けエクステンション検索ビュー
各エクステンションタイプはまた検索ビューをも有する。マスタエクステンションビューに類似するが、このビューはまた_Extension列を介してアイテムオブジェクトへのアクセスをも提供する。各型付けエクステンション検索ビューはデータストア内で、名前[schemaName].[Extension!extensionTypeName]を使用して識別される。例えば、[AcmeCorp.Doc].[Extension!OfficeDocExt]である。
すべてのネストされた要素は、アイテム、エクステンションまたはリレーションシップインスタンス内に格納される。したがって、これらの要素は、適切なアイテム、エクステンションまたはリレーションシップ検索ビューをクエリすることによってアクセスされる。
上述のように、リレーションシップは、ストレージプラットフォームデータストア内の複数のアイテムの間でリンクする基本単位を形成する。
各データストアは、マスタリレーションシップビューを提供する。このビューは、データストア内のすべてのリレーションシップインスタンスについての情報を提供する。マスタリレーションシップビューはデータストア内で、名前「[System.Storage].[Master!Relationship]」を使用して識別される。
各宣言されたリレーションシップはまた、特定のリレーションシップのすべてのインスタンスを戻す検索ビューをも有する。マスタリレーションシップビューに類似するが、このビューはまた、リレーションシップデータの各プロパティのための名前付き列をも提供する。各リレーションシップインスタンス検索ビューはデータストア内で、名前[schemaName].[Relationship!relationshipName]を使用して識別される。例えば、[AcmeCorp.Doc].[Relationship!DocumentAuthor]である。
ストレージプラットフォームデータストア内のすべてのビューは、読み取り専用である。データモデル要素(アイテム、エクステンションまたはリレーションシップ)の新しいインスタンスを作成するため、または、既存のインスタンスをアップデートするために、ストレージプラットフォームAPIのProcessOperationまたはProcessUpdategramメソッドが使用されなければならない。ProcessOperationメソッドは、データストアによって定義された単一のストアドプロシージャであり、実行されるアクションを詳述する「オペレーション」を消費する。ProcessUpdategramメソッドは、「updategram」として知られる、実行されるアクションのセットを集合的に詳述するオペレーションの順序付きセットを取る、ストアドプロシージャである。
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つの場所で提供する。アイテムおよびエクステンション廃棄ビューは、対応するオブジェクトへのアクセスを提供しないが、リレーションシップ廃棄ビューは、リレーションシップオブジェクトへのアクセスを提供する(廃棄されたリレーションシップの場合、リレーションシップオブジェクトはNULLである)。
アイテム廃棄はシステムから、ビュー[System.Storage].[Tombstone!Item]を介して検索される。
エクステンション廃棄はシステムから、ビュー[System.Storage].[Tombstone!Extension]を介して検索される。エクステンション変更追跡情報は、ExtensionIdプロパティを追加して、アイテムについて提供された情報に類似している。
リレーションシップ廃棄はシステムから、ビュー[System.Storage].[Tombstone!Relationship]を介して検索される。リレーションシップ廃棄情報は、エクステンションについて提供された情報に類似している。しかし、リレーションシップインスタンスのターゲットItemRefについての追加の情報が提供される。加えて、リレーションシップオブジェクトもまた選択される。
廃棄情報の限りない増大を防止するため、データストアは廃棄クリーンアップタスクを提供する。このタスクは、廃棄情報を廃棄することができる場合を決定する。このタスクはローカル作成/アップデートバージョンにおける境界を計算し、次いで、すべてのより以前の廃棄バージョンを廃棄することによって廃棄情報を切り捨てる。
ベースマッピングはまたいくつかのヘルパーファンクションをも提供する、これらのファンクションは、データモデル上の共通オペレーションを助けるために供給される。
//ItemIdが与えられたアイテムオブジェクトを戻す
//
Item GetItem (ItemId ItemId)
ファンクション[System.Storage].GetExtension
//ItemIdおよびExtensionIdが与えられたエクステンションオブジェクトを戻す
//
Extension GetExtension (ItemId ItemId, ExtensionId ExtensionId)
ファンクション[System.Storage].GetRelationship
//ItemIdおよびRelationshipIdが与えられたリレーションシップオブジェクトを戻す
//
Relationship GetRelationship (ItemId ItemId, RelationshipId RelationshipId)
14.メタデータ
ストア内に表現された2つのタイプのメタデータ、すなわち、インスタンスメタデータ(アイテムのタイプなど)およびタイプメタデータがある。
スキーマメタデータはデータストア内で、メタスキーマからのアイテムタイプのインスタンスとして格納される。
インスタンスメタデータは、アプリケーションによってアイテムのタイプについてクエリするために使用され、アイテムに関連付けられたエクステンションを発見する。アイテムのためのItemIdが与えられると、アプリケーションはグローバルアイテムビューをクエリして、アイテムのタイプを戻し、この値を使用してMeta.Typeビューをクエリして、アイテムの宣言されたタイプについての情報を戻す。例えば、以下の通りである。
//所与のアイテムインスタンスについてのメタデータアイテムオブジェクトを戻す
//
SELECT m._Item AS metadataInfoObj
FROM [System.Storage].[ITEM] i INNER JOIN [Meta].[Type] m ON i._TypeId = m.ItemId
WHERE i.ItemId = @ItemId
一般に、すべての保護可能なオブジェクトはそれらのアクセス権を、図26に示すアクセスマスクフォーマットを使用して構成する。このフォーマットでは、下位の16ビットはオブジェクト固有のアクセス権のためであり、次の7ビットは、オブジェクトの大部分のタイプに適用される標準アクセス権のためであり、高位の4ビットは、各オブジェクトが標準およびオブジェクト固有の権利のセットにマップすることができる、汎用アクセス権を規定するために使用される。ACCESS_SYSTEM_SECURITYビットは、オブジェクトのSACLにアクセスするための権利に対応する。
本発明のもう1つの態様によれば、ストレージプラットフォームは、アプリケーションがデータ変更を追跡できるようにする通知機能を提供する。この機能は主として、揮発性状態を維持し、あるいはデータ変更イベントにおいてビジネスロジックを実行するアプリケーションのために意図される。アプリケーションは、アイテム、アイテムエクステンションおよびアイテムリレーションシップについての通知のために登録する。通知は、データ変更がコミットされた後、非同期的に配信される。アプリケーションは通知をアイテム、エクステンションおよびリレーションシップタイプ、ならびにオペレーションのタイプによってフィルタリングすることができる。
上述のように、本発明のストレージプラットフォームは、少なくともいくつかの実施形態では、コンピュータシステムのハードウェア/ソフトウェアインターフェースシステムの一体部分として実施されるように意図される。例えば、本発明のストレージプラットフォームを、Microsoft Windows(登録商標)ファミリのオペレーティングシステムなど、オペレーティングシステムの一体部分として実施することができる。その能力において、ストレージプラットフォームAPIは、オペレーティングシステムAPIの一部となり、これを通じてアプリケーションプログラムはオペレーティングシステムと対話する。このように、ストレージプラットフォームは、それを通じてアプリケーションプログラムが情報をオペレーティングシステム上に格納する手段となり、ストレージプラットフォームのアイテムベースのデータモデルはしたがって、このようなオペレーティングシステム従来のファイルシステムに取って代わる。例えば、Microsoft Windows(登録商標)ファミリのオペレーティングシステムで実施される場合、ストレージプラットフォームは、そのオペレーティングシステムで実装されたNTFSファイルシステムに取って代わる可能性がある。現在、アプリケーションプログラムはNTFSファイルシステムのサービスに、Windows(登録商標)ファミリのオペレーティングシステムによってエクスポーズされたWin32 APIを通じてアクセスする。
ストレージプラットフォームはAPIを備え、APIは、アプリケーションプログラムが上述のストレージプラットフォームの特徴および機能にアクセスすること、およびデータストア内に格納されたアイテムにアクセスすることを可能にする。このセクションでは、本発明のストレージプラットフォームのストレージプラットフォームAPIの一実施形態を説明する。この機能性についての詳細は、本明細書で以前に参照により組み込まれた関連出願で見ることができ、この情報のいくつかを便宜上、以下に要約する。
同期へのいくつかの手法が、アイテムベースのハードウェア/ソフトウェアインターフェースシステムにおいて可能である。
本発明のいくつかの実施形態では、また図3については、ストレージプラットフォームは同期化サービス330を提供し、このサービスは、(i)ストレージプラットフォームの複数のインスタンスが(それぞれそれ自体のデータストア302と共に)柔軟なセットのルールに従ってそれらのコンテンツの部分を同期化することを可能にし、(ii)サードパーティが本発明のストレージプラットフォームのデータストアを、メーカ独自のプロトコルを実装する他のデータソースと同期化させるためのインフラストラクチャを提供する。
本発明のストレージプラットフォームの同期化サービス330の主な応用例は、ストレージプラットフォームの複数のインスタンスを(それぞれそれ自体のデータストアと共に)同期化することである。同期化サービスは、ストレージプラットフォームスキーマ(データベースエンジン314の下にあるテーブルではない)のレベルで動作する。したがって、例えば、「Scopes」は、後述のように同期化を定義するために使用される。
いかなるアプリケーションも同期化サービスに接続し、syncオペレーションを開始することができる。このようなアプリケーションは、同期化を実行するために必要とされたパラメータのすべてを提供する(以下のsyncプロファイルを参照)。このようなアプリケーションを本明細書でSyncコントロールアプリケーション(SCA)と称する。
同期化サービスの基本的概念は、変更単位の概念である。変更単位は、ストレージプラットフォームによって個別に追跡されるスキーマの最小部分である。あらゆる変更単位について、同期化サービスは、変更単位が前回のsync以来変化したか、変化しなかったかを判定することができる場合がある。
それらのデータのある部分を同期して保持することを望むストレージプラットフォームパートナーのグループを、syncコミュニティと称する。コミュニティのメンバは同期した状態であることを望むが、これらのメンバは必ずしもデータをまったく同じ方法で表現するとは限らず、すなわち、syncパートナーは、それらが同期中であるデータを変換する場合がある。
コミュニティフォルダマッピングは、XML構成ファイルとして個々のマシン上に格納される。各マッピングは以下のスキーマを有する。
この要素は、このマッピングが対象とするコミュニティフォルダを名前付けする。名前はフォルダの構文規則に従う。
この要素は、マッピングが変換される先のローカルフォルダを名前付けする。名前はフォルダの構文規則に従う。フォルダは、マッピングが有効となるためにすでに存在していなければならない。このフォルダ内のアイテムは、このマッピング毎の同期化について考慮される。
この要素は、アイテムをコミュニティフォルダからローカルフォルダに、およびその逆に変換する方法を定義する。不在または空である場合、変換は実行されない。具体的には、これはIDがマップされないことを意味する。この構成は主として、フォルダのキャッシュを作成するために有用である。
この要素は、コミュニティIDを再利用するのではなく、新たに生成されたローカルIDが、コミュニティフォルダからマップされたアイテムのすべてに割り当てられることを要求する。Syncランタイムは、アイテムを前後に変換するためにIDマッピングを維持するようになる。
この要素は、コミュニティフォルダ内のすべてのルートアイテムが、特定されたルートの子にされることを要求する。
この要素は、誰の権限の下でこのマッピングに対する要求が処理されるかをコントロールする。不在の場合、senderが仮定される。
この要素の存在は、このマッピングへのメッセージの送信者が成りすまされなければならず、要求がその者のクレデンシャルの下で処理されなければならないことを示す。
Syncプロファイルは、同期化を開始するために必要とされたパラメータの全体セットである。SyncプロファイルはSCAによってSyncランタイムに、syncを開始するために供給される。ストレージプラットフォームとストレージプラットフォームの同期化のためのSyncプロファイルは、以下の情報を含む。
一実施形態では、同期化サービスはそれ自体のスケジューリングインフラストラクチャを提供しない。その代わりに、同期化サービスは、別のコンポーネントに依拠してこのタスクを実行し、このコンポーネントはMicrosoft Windows(登録商標)オペレーティングシステムにより使用可能なWindows(登録商標)Schedulerである。同期化サービスにはコマンドラインユーティリティが含まれ、このユーティリティはSCAの機能を果たし、XMLファイル内に保存されたsyncプロファイルに基づいて同期化をトリガする。このユーティリティにより、Windows(登録商標)Schedulerを、スケジュール通りに、またはユーザのログオンもしくはログオフなどのイベントに応答して同期化を実行するように構成することが、大変容易になる。
同期化サービスにおける競合処理は3つの段階に分割され、すなわち(1)変更適用時間で発生する競合検出−このステップは、変更を安全に適用することができるかどうかを判定する、(2)自動競合解決およびロギング−このステップ(競合が検出された直後に起こる)中に、自動競合リゾルバ(または「競合ハンドラ」)は、競合を解決することができるかどうかを確かめるために調べられ、そうでない場合、競合をオプショナルでログすることができる、および(3)競合検査および解決−このステップは、いくつかの競合がログされている場合に起こり、syncセッションのコンテキストの外側で発生し、この時間に、ログされた競合を解決してログから除去することができる。本発明の様々な実施形態は競合処理を対象とし、これを以下のセクションIVでより詳細に論じる。
本発明のストレージプラットフォームのもう1つの態様によれば、ストレージプラットフォームは、ISVがSyncアダプタを実装するためのアーキテクチャを提供し、Syncアダプタは、ストレージプラットフォームがMicrosoft Exchange、AD、Hotmailなどのレガシーシステムに同期化できるようにする。Syncアダプタは、後述のように、同期化サービスによって提供された多数のSyncサービスから利益を得る。
同期化サービスはいくつかのsyncサービスをアダプタライタに提供する。このセクションの残りでは、その上でストレージプラットフォームが「クライアント」として同期化を実行中であるマシン、および、アダプタが「サーバ」として通信中である非ストレージプラットフォームバックエンドに言及することが好都合である。
同期化サービスによって維持された変更追跡データに基づいて、変更エニュメレーションは、syncアダプタが、前回このパートナーとの同期化が試みられて以来、データストアフォルダに発生している変更を、容易にエニュメレートすることを可能にする。
変更適用は、Syncアダプタが、それらのバックエンドから受信された変更をローカルストレージプラットフォームに適用することを可能にする。アダプタは、ストレージプラットフォームスキーマへの変更を変換すると期待される。図24は、ストレージプラットフォームAPIクラスがストレージプラットフォームスキーマから生成されるプロセスを例示する。
セクションIVで後述する競合解決メカニズム(ロギングおよび自動解決オプションを含む)も、syncアダプタにとって使用可能である。Syncアダプタは、変更を適用する場合、競合解決のためのポリシーを規定することができる。規定される場合、競合を、規定された競合ハンドラ上に渡し、(可能な場合は)解決することができる。競合をまたログすることもできる。ローカル変更をバックグラウンドに適用しようと試みる場合、アダプタが競合を検出する場合があることは可能である。このような場合、アダプタはなお競合をSyncランタイム上に渡して、ポリシーに従って解決させることができる。加えて、Syncアダプタは、同期化サービスによって検出されたいかなる競合も、処理のためにSyncアダプタに戻すように送信されることを要求する場合がある。これは、バックエンドが競合を格納または解決することができる場合に特に好都合である。
いくつかの「アダプタ」は単に、ランタイムインターフェースを利用するアプリケーションであるが、アダプタは標準アダプタインターフェースを実装することが推奨される。これらのインターフェースにより、Syncコントロールアプリケーションは、アダプタが所与のSyncプロファイルに従って同期化を実行することを要求すること、進行中の同期化をキャンセルすること、および、進行中のsyncについての進行レポート(完成率)を受信することが可能となる。
同期化サービスは、可能な限りわずかな物を、ストレージプラットフォームによって実装されたセキュリティモデルに導入するように努める。同期化のための新しい権利を定義するのではなく、既存の権利が使用される。具体的には以下の通りである。
レプリカの分散コミュニティを監視することは複雑な問題である。同期化サービスは「スイープ」アルゴリズムを使用して、レプリカの状況についての情報を収集および配信することができる。スイープアルゴリズムのプロパティは、すべての構成されたレプリカについての情報が最終的に収集されること、および、障害のある(非反応)レプリカが検出されることを保証する。
ますます分散されるデジタル世界では、個人およびワークグループはしばしば情報およびデータを様々な異なるデバイスおよびロケーションに格納する。これは、これらの別々の、しばしば異種のデータストアにおける情報を常に、最小限のユーザ介入により同期化させて保持することができる、データ同期化サービスの開発を促している。
本明細書の以下は、本明細書のこのセクションIII.Bの後の考察に関する、いくつかのさらに微細な定義および重要な概念である。
ある実施形態では、同期化APIは2つの部分、すなわち、同期化構成APIおよび同期化コントローラAPIに分かれる。同期化構成APIは、アプリケーションが同期化を構成すること、および、2つのレプリカの間の特定の同期化セッションのためのパラメータを規定することを可能にする。所与の同期化セッションでは、構成パラメータには、同期化されるアイテムのセット、同期化のタイプ(一方向または双方向)、リモートデータソースについての情報、および競合解決ポリシーが含まれる。同期化コントローラAPIは同期化セッションを開始し、同期化をキャンセルし、進行中の同期化についての進行およびエラー情報を受信する。また、同期化が所定のスケジュール通りに実行される必要がある特定の実施形態では、このようなシステムには、スケジューリングをカスタマイズするためのスケジューリングメカニズムが含まれる場合がある。
本発明のいくつかの実施形態は、2つの基本的サービスである変更エニュメレーションおよび変更適用を備える同期化サービスを対象とする。
本明細書で以前に論じたように、変更エニュメレーションは、syncアダプタが、前回このパートナーとの同期化が試みられて以来、データストアフォルダに発生している変更を、同期化サービスによって維持された変更追跡データに基づいて、容易にエニュメレートすることを可能にする。変更エニュメレーションに関して、本発明のいくつかの実施形態は以下を対象とする。
本明細書で以前に論じたように、変更適用によってSyncアダプタが、それらのバックエンドから受信された変更をローカルストレージプラットフォームに適用することを可能にし、これはアダプタがストレージプラットフォームスキーマへの変更を変換すると期待されるからである。変更適用に関して、本発明のいくつかの実施形態は以下を対象とする。
以下は、FOO SyncアダプタがSyncランタイムと対話することができる方法についてのコードサンプルである(すべてのアダプタ固有のファンクションには、プレフィックスFOOが付けられる)。
ItemContext ctx = new ItemContext ("\.\System\UserData\dshah\My Contacts",true);
//レプリカアイテムidおよびリモートパートナーidをプロファイルから得る。
//大部分のアダプタはこの情報をsyncプロファイルから得るようになる。
Guid replicaItemId = FOO_GetReplicaId();
Guid remotePartnerId = FOO_Get_RemotePartnerId();
//
//上記のようなstoredKnowledgeIdを使用して、ストア内に格納されたナレッジをルックアップする。
//
ReplicaKnowledge remoteKnowledge = ...;
//
//ReplicaSynchronizerを開始する。
//
ctx.ReplicaSynchronizer = new ReplicaSynchronizer(replicaItemId,remotePartnerId);
ctx.ReplicaSynchronizer.RemoteKnowledge = remoteKnowledge;
ChangeReader reader = ctx.ReplicaSynchronizer.GetChangeReader();
//
//変更をエニュメレートして処理する。
//
bool bChangesToRead = true;
while (bChangesToRead)
{
ChangeCollection<object> changes = null;
bChangesToRead = reader.ReadChanges(10,out changes);
foreach (object change in changes)
{
//エニュメレートされたオブジェクトを処理し、アダプタはそれ自体のスキーマ変換およびIDマッピングを行う。このためにCtxから追加のオブジェクトを検索することもでき、変更がリモートストアに適用された後にアダプタメタデータを修正することもできる。
ChangeStatus status = FOOProcessAndApplyToRemoteStore(change);
//学習されたナレッジを状況によりアップデートする。
reader.AcknowledgeChange (changeStatus);
}
}
remoteKnowledge = ctx.ReplicaSynchronizer.GetUpdatedRemoteKnowledge();
readre.Close();
//
//アップデートされたナレッジ、およびある場合はアダプタメタデータを保存する。
//
ctx.Update();
//
//変更適用のためにサンプリングし、最初にリモートナレッジを、前のようなstoredKnowledgeIdを使用して初期化する。
//
remoteKnowledge = ...;
ctx.ReplicaSynchronizer.ConflictPolicy = conflictPolicy;
ctx.ReplicaSynchronizer.RemotePartnerId = remotePartnerId;
ctx.ReplicaSynchronizer.RemoteKnowledge = remoteKnowledge;
ctx.ReplicaSynchronizer.ChangesStatusEvent += FOO_OnChangeStatusEvent;
//
//変更をリモートストアから得る。アダプタは、そのバックエンド固有のメタデータをストアから検索することを担う。これをレプリカ上のエクステンションにすることができる。
//
object remoteAnchor = FOO_GetRemoteAnchorFromStore();
FOO_RemoteChangeCollection remoteChanges = FOO_GetRemoteChanges(remoteAnchor);
//
//変更コレクションを充填する。
//
foreach(FOO_RemoteChange change in remoteChanges)
{
//アダプタはIDマッピングを行うことを担う。
Guid localID = FOO_MapRemoteId(change);
//仮にPersonオブジェクトを同期化中であるとする。
ItemSearcher searcher = Person.GetSearcher(ctx);
searcher.Filters.Add("PersonId = @localId");
searcher.Parameters["PersonId"] = localId;
Person person = searcher.FindOne();
//
//アダプタはリモート変更をPersonオブジェクト上の修正に変換する。
//この一部としてアダプタは、リモートオブジェクトのためのアイテムレベルのバックエンド固有のメタデータに変更を行うこともできる。
//
FOO_TransformRemoteToLocal(remoteChange,person);
}
ctx.Update();
//
//新しいリモートアンカーを保存する(これをレプリカ上のエクステンションにすることができる)。
//
Foo_SaveRemoteAnchor();
//
//これは、リモートナレッジが同期化されないので、通常のWinFS API保存である。
//
remoteKnowledge = ctx.ReplicaSynchronizer.GetUpdatedRemoteKnowledge();
ctx.Update();
ctx.Close();
//
//アプリケーションステータスコールバックを処理するためのアダプタコールバック。
//
void FOO_OnEntitySaved(object sender,ChangeStatusEventArgs args)
{
remoteAnchor.AcceptChange(args.ChangeStatus);
}
本発明の一実施形態では、WinFSストアと非WinFSストアの間の同期化は、WinFSベースのハードウェア/ソフトウェアインターフェースシステムによってエクスポーズされた同期化APIを介して実施され、可能である。
本明細書で以前に論じたように、各レプリカ(ならびに、データソースおよび/またはアダプタ)は、その変更の増分および順次エニュメレーションを維持し、このような各変更には、対応する増分および順次変更番号が割り当てられる(すなわち、最初の変更は1であり、2番目の変更は2であり、3番目の変更は3である、など)。また、各レプリカは、そのsyncコミュニティ内の他の既知のレプリカ(syncパートナー)についての状態情報も維持し、これは、レプリカがどの変更をこれらの他のレプリカから受信しているかを追跡するためである。第2のレプリカから来た、第1のレプリカに適用された最後の変更の変更番号を知ることによって、第1のレプリカは次いでこの番号をその後に使用して、この最後に適用された変更の番号より大きい変更のみを要求、受信または処理することができる。図38A〜Dは、この順次変更エニュメレーション方法を使用して、変更がどのように追跡、エニュメレートおよび同期化されるかを例示する。
本発明のある実施形態では、レプリカの範囲が静的でない場合がある。したがって、レプリカAは、その範囲内であるアイテムとその範囲内でないアイテムの間の新しい関係を作成する変更により、その範囲を効果的に増すことができる。しかし、範囲外であるアイテムのための変更単位がレプリカAおよびBの間で同期化されていない(それらのレプリカのための同期化の範囲外であったため)と仮定すると、同期化の不整合が、その特定のアイテムのためのバージョンパスに関して発生する可能性がある。この問題の解決法は、レプリカAがレプリカBに、範囲外のアイテムに行われたすべての変更を、レプリカAにおいて範囲内アイテムと範囲外アイテムの間の関係を作成する特定の変更と共に送信することである。
本発明のある実施形態では、同期化について、親アイテムが常に子アイテムより前に送信されることが一般原則である(例えば、子であるアイテムKが、親であるアイテムJに埋め込まれる場合、アイテムKを、アイテムJが送信される前に送信することはできない)。しかし、レプリカAでは、同期化の間で、アイテムJおよびKが変更されるが、子アイテムKが親アイテムJよりも低いソート番号を有し(例えば、その識別番号の順次的先行に基づく)、したがって、通常は先に送信されるようになることが可能である。本発明の様々な実施形態における同期化のためのこの問題の1つの解決法は、これらの変更を2つのグループ、すなわちアイテムKに行われた変更のみを反映するグループ、および、アイテムJに行われた変更のみを反映する第2のグループに分割し、これらのグループを正しい順序で送信する(すなわち、子アイテムKのための変更のグループを、親アイテムJのための変更のグループを送信した後に送信する)ことである。
本明細書で以前に論じたように、廃棄は、同期化のために、削除された変更単位にマークを付けるために使用される。しかし、同期化はsyncコミュニティ内の複数のベクトルについて非同期であるので、これらの廃棄はデータプラットフォーム全体にわたって伝搬しなければならない。問題は、廃棄伝搬の責任を負うことなく、レプリカAはアイテムを作成し、レプリカBとのsync中にそのアイテムをレプリカBに送信することができることである。レプリカAは次いでこのアイテムを削除する場合があり、レプリカCとのsync中に、送信する物がない(アイテムが削除されたので)ためにこのアイテムに関して何も送信しないようになる。次いで、レプリカBおよびレプリカCがsyncしようと試みる場合、レプリカCはレプリカBから、Bの上で永続するこのアイテムを受信するようになる。
P1で、アイテムXが複数の埋め込みアイテムA、B、C、DおよびEを有する場合、P1が最初にこれらの子アイテムを、第2に親アイテムXを、同期化の間で削除する場合(すなわち、6つの変更としてdel A、del B、del C、del D、del Eおよびdel X)、興味深いシナリオが生じ、これは、P1が単に親Xを削除した場合(1つの変更)に同じ最終結果が起こっていたであろうからであり、この場合、埋め込みアイテムも自動的に削除されるようになる。これに関して、本発明のいくつかの実施形態は、同期化の上で、Xを削除することが実際には6つの別々の削除イベントに相当する物となることを認識することによって、効率を得て、このようにP1はP2に、Xの削除に対応する変更単位のみを送信し、この削除が必然的にP2内のXの埋め込みアイテムに伝搬することを可能にするようになる。
前述のように、リレーションシップは名前を有し、したがって、1つのレプリカ(P1)が、2つのリレーションシップ(R1およびR2)のための名前を、一時名前要素(X)の使用を通じてスワップすることが可能であり、すなわち、R1の名前がXにコピーされ、R2の名前が次いでR1にコピーされ、次いでXはR2にコピーされ、最後にXが削除される。しかし、パートナーレプリカ(P2)は、一時名前要素Xについて知らないので、同期化中にエラーが発生するようになり、これは、R1が新しい名前を有することを認識すると、P2によりこの名前を変更するための試みは、R1およびR2の両方で同じ名前を使用するためにエラーの結果となるからである。本発明の様々な実施形態でのこの問題の1つの解決法は、P2が、この同じ名前エラーを受信または認識すると、可能性のある名前スワップシナリオを仮定し、自動的にそれ自体の一時名前要素(Y)を作成することであり、後続の変更が実際に、R2の名前をXにおける名前に変更することを含む場合、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がこれらの変更を順番に適用する場合、許されないダングリングリレーションシップエラーの結果となる。本発明のいくつかの実施形態でのこの問題の解決法は、その代わりに、すべての他の変更がP1からP2に送信された後で、すべての参照リレーションシップ(例えば、R)が送信されるように、これらの変更を再順序付けすることであり、このようにこの問題は、最初にアイテムAおよびBを作成すること、および次いでこれらのアイテムをRにより互いに関係付けることによって、完全に回避される。
以下は、本発明の様々な実施形態のための同期化スキーマの追加の(またはより特定の)態様である。
本明細書で前述したように、同期化サービスにおける競合処理は3つの段階に分割され、すなわち(1)変更適用時間で発生する競合検出−このステップは、変更を安全に適用することができるかどうかを判定する、(2)自動競合解決およびロギング−このステップ(競合が検出された直後に起こる)中に、自動競合ハンドラは、競合を解決することができるかどうかを確かめるために調べられ、そうでない場合、競合をオプショナルでログすることができる、および(3)競合検査および解決−このステップは、いくつかの競合がログされている場合に起こり、syncセッションのコンテキストの外側で発生し、この時間に、ログされた競合を解決することができ、ログから除去することができる。
本発明の様々な実施形態は特に、ピアツーピア同期化システムで発生する競合のための競合処理(本明細書で上述した同期化システム用など)を対象とする。競合を正確および効率的に処理するための能力は、よい有用性を保持しながらデータ損失を最小限にし、同期化中のユーザ介入の必要性を低減する。本発明のいくつかの実施形態は、以下の競合処理要素のうち1つまたは複数を備える競合処理スキーマを対象とし、これらの要素は(a)競合のスキーマ化された表現、(b)競合の検出、(c)永続的ストアへの競合のロギング、(d)柔軟性があり構成可能な競合解決ポリシーによる競合の自動解決、(e)競合をフィルタリングおよび解決するための作成可能および拡張可能な競合ハンドラ、(f)古くなった競合の自動検出および除去、ならびに(g)プログラム的な競合解決である。また、競合処理スキーマとは分離して、これらの各競合処理要素はそれ自体で本発明の追加の実施形態を表す。
一般に、競合は、同期化オペレーション中にデータを同期化することができないこと(「変更適用障害」)がある場合は常に生じる。これらの障害は様々な理由のために発生する場合があるが、一般に競合を、制約競合およびナレッジ競合の2つのカテゴリに分けることができる。
ナレッジベースの競合は、2つのレプリカが独立した変更を同じ変更単位に行う場合に発生する。2つの変更は、互いのナレッジなしに行われる場合、独立してコールされ、すなわち、第1のバージョンは第2のナレッジによってカバーされず、その逆も同様である。同期化サービスはすべてのこのような競合を、上述のレプリカのナレッジに基づいて自動的に検出し、これらの競合を、本明細書で以下に説明するように処理する。ナレッジ競合のいくつかの特定のタイプには、アップデート−削除、削除−アップデート、およびアップデート−アップデート競合が含まれる(各名前は、ローカルアクションおよびリモートアクションを順番に指し、例えば、アップデート−削除競合は、同じデータに対するローカルアップデートとリモート削除による)。
複数の独立した変更が共に適用される場合、完全性制約に違反する場合がある。例えば、2つのレプリカがファイルを同じ名前で同じディレクトリ内に作成することで、このような競合を発生させる可能性があり、システム内の制約(フォルダ内の一意のアイテム名の実施など)は、このタイプの制約ベースの競合を起こす。
同期化サービスは、制約違反を変更適用時間に検出し、制約ベースの競合を自動的に引き起こす。制約ベースの競合の解決には通常、制約に違反しないような方法で変更を修正するカスタムコードが必要となり、同期化サービスは、それを行うための汎用メカニズムを提供してもしなくてもよい。
競合は、送信または受信同期化のいずれかの間に発生する場合があるが、一方向の同期化オペレーション内の両方のパートナーが類似(2つの類似に構成されたWinFSストアなど)である場合、これらのシナリオは対称的であり、自動的に競合を同期的に解決すること、または、競合を非同期的解決のためにログすること(自動または手動)によって、受信側で最も容易に処理することができる。
変更が拒否される場合、同期化サービスは、変更がレプリカに到着しなかったかのように動作し、否定応答を発信側に戻すように送信する。この解決ポリシーは主として、競合のロギングが実行可能でないヘッドレスレプリカ(ファイルサーバなど)において有用である。その代わりに、このようなレプリカはこれらの変更を拒否することによって、他者に強制的に競合を処理させる。
自動競合解決は、規定されたポリシーに従って同期的に競合を解決するプロセスである。WinFS同期化オペレーションでは、ポリシーを、送信オペレーションおよび受信オペレーションに対して独立して規定することができる。自動競合解決ポリシーは、同期化プロファイルを介して規定される。引き起こされる競合は、プロファイル内で規定されたトップレベルの競合ハンドラに渡される。この競合ハンドラは競合を解決し、ログし、または競合を別の競合ハンドラへ、競合処理パイプラインに沿ったさらなる処理のために渡すことができる。
いくつかのレポートされた競合は、自動競合解決を使用して同期的に解決される可能性があるが、他のレポートされた競合は、後のプログラム的解決のためにログされる場合がある。競合ロギングは、競合解決プロセスが非同期的に進行することを可能にし、すなわち、競合は検出される時間に解決される必要はないが、将来の解決のためにログされる場合がある。例えば、競合ビューアアプリケーションは、ユーザがログされた競合を事後に検査して手動で解決することを、可能にすることができる。
同期化サービスは、アプリケーションが競合ログを検査し、その中の競合の解決を提案するためのAPIを提供する。このAPIは、アプリケーションがすべての競合または所与のアイテムに関係付けられた競合をエニュメレートすることを可能にする。このAPIはまた、このようなアプリケーションが、ログされた競合を以下の3つの方法のうち1つで解決することも可能にし、すなわち(1)リモート勝利−ログされた変更を受け入れ、競合するローカル変更を上書きすること、(2)ローカル勝利−ログされた変更の競合部分を無視すること、および(3)新しい変更の提案−アプリケーションが、その意見において、競合を解決するマージを提案することである。競合がアプリケーションによって解決された後、同期化サービスは競合をログから除去する。
複雑な同期化シナリオでは、同じ競合が複数のレプリカで検出される可能性がある。これが起こる場合、いくつかのことが発生する可能性があり、すなわち(1)競合をあるレプリカ上で解決することができ、この解決を他のレプリカに送信することができる、(2)競合が両方のレプリカ上で自動的に解決される、または(3)競合が両方のレプリカ上で手動で解決される(競合検査APIを通じて)。
以下は、本発明の様々な実施形態のための競合処理スキーマの追加(またはより特定)の態様である。
前述が例示するように、本発明は、データを編成、検索および共有するためのストレージプラットフォームを対象とする。本発明のストレージプラットフォームは、既存のファイルシステムおよびデータベースシステムを超えてデータストレージの概念を拡張および拡大し、リレーショナル(テーブル)データ、XML、および、アイテムと呼ばれる新しい形式のデータなど、構造化、非構造化、または半構造化データを含む、すべてのタイプのデータのためのストアとなるように設計される。その共通ストレージ基盤およびスキーマ化されたデータを通じて、本発明のストレージプラットフォームは、消費者、知識労働者および企業のためのより効率的なアプリケーション開発を可能にする。本発明のストレージプラットフォームは、そのデータモデル内に固有の機能を使用可能にするだけでなく、既存のファイルシステムおよびデータベースアクセス方法の包含および拡張をも行う、豊富で拡張可能なアプリケーションプログラミングインターフェースを提供する。その幅広い発明の概念から逸脱することなく、上述の実施形態に変更を行うことができることを理解されたい。したがって、本発明は、開示された特定の実施形態に限定されないが、付属の特許請求の範囲によって定義されるような本発明の精神および範囲内であるすべての修正を包含するように意図される。
21 処理装置
22 システムメモリ
23 システムバス
27 ハードドライブ
28 フロッピー(登録商標)ドライブ
29 リムーバブルストレージ
30 光ドライブ
32 ハードディスクドライブI/F
33 磁気ディスクドライブI/F
34 光ドライブI/F
36 アプリケーションプログラム
36’ アプリケーション
37 他のプログラム
38 プログラムデータ
40 キーボード
42 マウス
46 シリアルポートI/F
47 モニタ
48 ビデオアダプタ
49 リモートコンピュータ
50 フロッピー(登録商標)ドライブ
53 ネットワークI/F
54 モデム
55 ホストアダプタ
56 SCSIバス
62 ストレージデバイス
Claims (24)
- ピアツーピア同期化システムにおける競合を処理するための方法であって、
前記ピアツーピア同期化システムが、データの変更に関する前記競合を検出するステップであって、前記競合は、同期化オペレーション中にデータストア内に格納可能なデータの単位であるアイテムに関するデータの変更を適用することができない場合に生じる、ステップと、
前記ピアツーピア同期化システムが、第1の競合アイテムを作成するステップであって、前記第1の競合アイテムは、特定のデータの単位に対する変更に関係し、前記変更がなされた前記特定のデータの単位は、特定の変更単位を定める、ステップと、
前記ピアツーピア同期化システムが、前記第1の競合アイテムを永続的データストアにログするステップであって、前記第1の競合アイテムは、前記特定のデータの単位に対する変更に関連する情報を備える、ステップとを備え、
前記ログするステップは、
前記永続的データストアを検索し、前記第1の競合アイテムと同じ特定の変更単位についてすでに存在する先在の競合アイテムがあるかどうかを判定するステップと、
前記永続的データストア内に、前記第1の競合アイテムと同じ特定の変更単位についてすでに存在する先在の競合アイテムがある場合、前記先在の競合アイテムのデータの単位に対する変更が前記第1の競合アイテムの前記データの単位に対する変更によって包含される場合に前記先在の競合アイテムを除去するステップと、
前記永続的データストア内に、前記第1の競合アイテムと同じ特定の変更単位についてすでに存在する先在の競合アイテムがある場合、前記第1の競合アイテムのデータの単位に対する変更が前記先在の競合アイテムの前記データの単位に対する変更によって包含される場合に前記第1の競合アイテムを除去するステップと、
前記永続的データストア内に、前記第1の競合アイテムと同じ特定の変更単位についてすでに存在する先在の競合アイテムがある場合、および、前記第1の競合アイテムの前記データの単位に対する変更が前記先在の競合アイテムの前記データの単位に対する変更によって包含されない場合、および、前記先在の競合アイテムの前記データの単位に対する変更が前記第1の競合アイテムの前記データの単位に対する変更によって包含されない場合、前記先在の競合アイテムを前記永続的データストア内で保持し、前記第1の競合アイテムを前記永続的データストアに追加するステップと
を備えることを特徴とする方法。 - 前記ピアツーピア同期化システムが、少なくとも1つの競合ハンドラが規定された競合解決ポリシーに従って前記競合を自動的に解決するステップであって、前記競合ハンドラは、前記競合を評価して前記競合を所定の競合ハンドラに渡すかどうかを判定するフィルタ、前記競合の解決を試みるリゾルバ、及び前記第1の競合アイテムを前記永続的データストア内にログするロガーからなるグループのうちの1つである、ステップをさらに備えることを特徴とする請求項1に記載の方法。
- 前記競合ハンドラはアイテムであり、拡張可能であり、前記競合ハンドラのグループは作成可能および拡張可能であることを特徴とする請求項2に記載の方法。
- 前記競合解決ポリシーは、競合処理パイプラインを備える少なくとも2つの競合ハンドラが規定されていることを特徴とする請求項3に記載の方法。
- 前記ピアツーピア同期化システムが、前記データストア内の古くなった競合アイテムの除去を含む、古くなった競合の自動検出および除去するステップをさらに備えることを特徴とする請求項2に記載の方法。
- ターゲットアイテムのコピーは、前記競合を起こす前記変更を反映することを特徴とする請求項1に記載の方法。
- ピアツーピア同期化システムにおける競合を処理するためのシステムであって、
データの変更に関する前記競合を検出するためのサブシステムであって、前記競合は、同期化オペレーション中にデータストア内に格納可能なデータの単位であるアイテムに関するデータの変更を適用することができない場合に生じる、サブシステムと、
第1の競合アイテムを作成するためのサブシステムであって、前記第1の競合アイテムは、特定のデータの単位に対する変更に関係し、前記変更がなされた前記特定のデータの単位は、特定の変更単位を定める、サブシステムと、
前記第1の競合アイテムを永続的データストアにログするためのサブシステムであって、前記第1の競合アイテムは、前記特定のデータの単位に対する変更に関連する情報を備える、サブシステムと、
前記競合を解決するためのサブシステムとを備え、
前記ログするためのサブシステムは、
前記永続的データストアを検索し、前記第1の競合アイテムと同じ特定の変更単位についてすでに存在する先在の競合アイテムがあるかどうかを判定するためのサブシステムと、
前記永続的データストア内に、前記第1の競合アイテムと同じ特定の変更単位についてすでに存在する先在の競合アイテムがある場合、前記先在の競合アイテムのデータの単位に対する変更が前記第1の競合アイテムの前記データの単位に対する変更によって包含される場合に前記先在の競合アイテムを除去するためのサブシステムと、
前記永続的データストア内に、前記第1の競合アイテムと同じ特定の変更単位についてすでに存在する先在の競合アイテムがある場合、前記第1の競合アイテムのデータの単位に対する変更が前記先在の競合アイテムの前記データの単位に対する変更によって包含される場合に前記第1の競合アイテムを除去するためのサブシステムと、
前記永続的データストア内に、前記第1の競合アイテムと同じ特定の変更単位についてすでに存在する先在の競合アイテムがある場合、および、前記第1の競合アイテムの前記データの単位に対する変更が前記先在の競合アイテムの前記データの単位に対する変更によって包含されない場合、および、前記先在の競合アイテムの前記データの単位に対する変更が前記第1の競合アイテムの前記データの単位に対する変更によって包含されない場合、前記先在の競合アイテムを前記永続的データストア内で保持し、前記第1の競合アイテムを前記永続的データストアに追加するためのサブシステムと
を備えることを特徴とするシステム。 - 少なくとも1つの競合ハンドラが規定された競合解決ポリシーに従って前記競合を自動的に解決するためのサブシステムであって、前記競合ハンドラは、前記競合を評価して前記競合を所定の競合ハンドラに渡すかどうかを判定するフィルタ、前記競合の解決を試みるリゾルバ、及び前記第1の競合アイテムを前記永続的データストア内にログするロガーからなるグループのうちの1つである、サブシステムと
をさらに備えることを特徴とする請求項7に記載のシステム。 - 拡張可能な競合ハンドラと、
作成可能および拡張可能な競合ハンドラのグループと
をさらに備えることを特徴とする請求項8に記載のシステム。 - 競合処理パイプラインをさらに備え、前記競合処理パイプラインは少なくとも2つの競合ハンドラを備えることを特徴とする請求項9に記載のシステム。
- 前記データストア内の古くなった競合アイテムの除去を含む、古くなった競合の自動検出および除去のためのサブシステムをさらに備えることを特徴とする請求項8に記載のシステム。
- ターゲットアイテムのコピーを、前記競合を起こす前記変更を反映するように修正するためのサブシステムをさらに備えることを特徴とする請求項8に記載のシステム。
- ピアツーピア同期化システムにおける競合を処理するための方法を実行するためのコンピュータ可読命令を格納したコンピュータ可読記録媒体であって、
前記ピアツーピア同期化システムが、データの変更に関する前記競合を検出するステップであって、前記競合は、同期化オペレーション中にデータストア内に格納可能なデータの単位であるアイテムに関するデータの変更を適用することができない場合に生じる、ステップと、
前記ピアツーピア同期化システムが、第1の競合アイテムを作成するステップであって、前記第1の競合アイテムは、特定のデータの単位に対する変更に関係し、前記変更がなされた前記特定のデータの単位は、特定の変更単位を定める、ステップと、
前記ピアツーピア同期化システムが、前記第1の競合アイテムを永続的データストアにログするステップであって、前記第1の競合アイテムは、前記特定のデータの単位に対する変更に関連する情報を備える、ステップとを備え、
前記ログするステップは、
前記永続的データストアを検索し、前記第1の競合アイテムと同じ特定の変更単位についてすでに存在する先在の競合アイテムがあるかどうかを判定するステップと、
前記永続的データストア内に、前記第1の競合アイテムと同じ特定の変更単位についてすでに存在する先在の競合アイテムがある場合、前記先在の競合アイテムのデータの単位に対する変更が前記第1の競合アイテムの前記データの単位に対する変更によって包含される場合に前記先在の競合アイテムを除去するステップと、
前記永続的データストア内に、前記第1の競合アイテムと同じ特定の変更単位についてすでに存在する先在の競合アイテムがある場合、前記第1の競合アイテムのデータの単位に対する変更が前記先在の競合アイテムの前記データの単位に対する変更によって包含される場合に前記第1の競合アイテムを除去するステップと、
前記永続的データストア内に、前記第1の競合アイテムと同じ特定の変更単位についてすでに存在する先在の競合アイテムがある場合、および、前記第1の競合アイテムの前記データの単位に対する変更が前記先在の競合アイテムの前記データの単位に対する変更によって包含されない場合、および、前記先在の競合アイテムの前記データの単位に対する変更が前記第1の競合アイテムの前記データの単位に対する変更によって包含されない場合、前記先在の競合アイテムを前記永続的データストア内で保持し、前記第1の競合アイテムを前記永続的データストアに追加するステップと
を備える方法を実行するためのコンピュータ可読命令を格納したことを特徴とするコンピュータ可読記録媒体。 - 前記方法は、前記ピアツーピア同期化システムが、少なくとも1つの競合ハンドラが規定された競合解決ポリシーに従って前記競合を自動的に解決するステップであって、前記競合ハンドラは、前記競合を評価して前記競合を所定の競合ハンドラに渡すかどうかを判定するフィルタ、前記競合の解決を試みるリゾルバ、及び前記第1の競合アイテムを前記永続的データストア内にログするロガーからなるグループのうちの1つである、ステップをさらに備えることを特徴とする請求項13に記載のコンピュータ可読記録媒体。
- 前記競合ハンドラはアイテムであり、拡張可能であり、
前記競合ハンドラのグループは作成可能および拡張可能であることを特徴とする請求項14に記載のコンピュータ可読記録媒体。 - 前記競合解決ポリシーは、競合処理パイプラインを備える少なくとも2つの競合ハンドラが規定されていることを特徴とする請求項15に記載のコンピュータ可読記録媒体。
- 前記方法は、前記ピアツーピア同期化システムが、前記データストア内の古くなった競合アイテムの除去を含む、古くなった競合の自動検出および除去するステップをさらに備えることを特徴とする請求項14に記載のコンピュータ可読記録媒体。
- ターゲットアイテムのコピーは、前記競合を起こす前記変更を反映することを特徴とする請求項13に記載のコンピュータ可読記録媒体。
- ピアツーピア同期化システムにおける競合を処理するためのハードウェアコントロールデバイスであって、
データの変更に関する前記競合を検出する手段であって、前記競合は、同期化オペレーション中にデータストア内に格納可能なデータの単位であるアイテムに関するデータの変更を適用することができない場合に生じる、手段と、
第1の競合アイテムを作成する手段であって、前記第1の競合アイテムは、特定のデータの単位に対する変更に関係し、前記変更がなされた前記特定のデータの単位は、特定の変更単位を定める、手段と、
前記第1の競合アイテムを永続的データストアにログする手段であって、前記第1の競合アイテムは、前記特定のデータの単位に対する変更に関連する情報を備える、手段とを備え、
前記ログする手段は、
前記永続的データストアを検索し、前記第1の競合アイテムと同じ特定の変更単位についてすでに存在する先在の競合アイテムがあるかどうかを判定する手段と、
前記永続的データストア内に、前記第1の競合アイテムと同じ特定の変更単位についてすでに存在する先在の競合アイテムがある場合、前記先在の競合アイテムのデータの単位に対する変更が前記第1の競合アイテムの前記データの単位に対する変更によって包含される場合に前記先在の競合アイテムを除去する手段と、
前記永続的データストア内に、前記第1の競合アイテムと同じ特定の変更単位についてすでに存在する先在の競合アイテムがある場合、前記第1の競合アイテムのデータの単位に対する変更が前記先在の競合アイテムの前記データの単位に対する変更によって包含される場合に前記第1の競合アイテムを除去する手段と、
前記永続的データストア内に、前記第1の競合アイテムと同じ特定の変更単位についてすでに存在する先在の競合アイテムがある場合、および、前記第1の競合アイテムの前記データの単位に対する変更が前記先在の競合アイテムの前記データの単位に対する変更によって包含されない場合、および、前記先在の競合アイテムの前記データの単位に対する変更が前記第1の競合アイテムの前記データの単位に対する変更によって包含されない場合、前記先在の競合アイテムを前記永続的データストア内で保持し、前記第1の競合アイテムを前記永続的データストアに追加する手段と
を備えることを特徴とするハードウェアコントロールデバイス。 - 少なくとも1つの競合ハンドラが規定された競合解決ポリシーに従って前記競合を自動的に解決する手段であって、前記競合ハンドラは、前記競合を評価して前記競合を所定の競合ハンドラに渡すかどうかを判定するフィルタ、前記競合の解決を試みるリゾルバ、及び前記第1の競合アイテムを前記永続的データストア内にログするロガーからなるグループのうちの1つである、手段と
をさらに備えることを特徴とする請求項19に記載のハードウェアコントロールデバイス。 - 前記競合ハンドラを拡張可能アイテムとする手段と、
前記競合ハンドラのグループを作成可能および拡張可能とする手段と
をさらに備えることを特徴とする請求項20に記載のハードウェアコントロールデバイス。 - 前記競合解決ポリシーは、競合処理パイプラインを備える少なくとも2つの競合ハンドラが規定されていることを特徴とする請求項20に記載のハードウェアコントロールデバイス。
- 前記データストア内の古くなった競合アイテムの除去を含む、古くなった競合の自動検出および除去の手段をさらに備えることを特徴とする請求項19に記載のハードウェアコントロールデバイス。
- ターゲットアイテムのコピーは、前記競合を起こす前記変更を反映する、手段をさらに備えることを特徴とする請求項19に記載のハードウェアコントロールデバイス。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/883,621 | 2004-06-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 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006018821A JP2006018821A (ja) | 2006-01-19 |
JP4738908B2 true JP4738908B2 (ja) | 2011-08-03 |
Family
ID=35159817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005175754A Expired - Fee Related JP4738908B2 (ja) | 2004-06-30 | 2005-06-15 | ハードウェア/ソフトウェアインターフェースシステムにより管理可能な情報の単位のピアツーピア同期化のための競合処理を提供するためのシステムおよび方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7512638B2 (ja) |
EP (1) | EP1612702A1 (ja) |
JP (1) | JP4738908B2 (ja) |
KR (1) | KR101041319B1 (ja) |
Families Citing this family (144)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9134989B2 (en) | 2002-01-31 | 2015-09-15 | Qualcomm Incorporated | System and method for updating dataset versions resident on a wireless device |
US20040068724A1 (en) * | 2002-08-30 | 2004-04-08 | Gardner Richard Wayne | Server processing for updating dataset versions resident on a wireless device |
US7565419B1 (en) * | 2002-11-22 | 2009-07-21 | Symantec Operating Corporation | Conflict resolution in a peer to peer network |
US9092286B2 (en) * | 2002-12-20 | 2015-07-28 | Qualcomm Incorporated | System to automatically process components on a device |
US7756825B2 (en) * | 2003-07-31 | 2010-07-13 | Microsoft Corporation | Synchronization peer participant model |
US7440985B2 (en) * | 2003-07-31 | 2008-10-21 | Microsoft Corporation | Filtered replication of data stores |
US7401104B2 (en) * | 2003-08-21 | 2008-07-15 | Microsoft Corporation | Systems and methods for synchronizing computer systems through an intermediary file system share or device |
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 |
US8626146B2 (en) | 2003-10-29 | 2014-01-07 | Qualcomm Incorporated | Method, software and apparatus for performing actions on a wireless device using action lists and versioning |
US7778962B2 (en) * | 2004-04-30 | 2010-08-17 | Microsoft Corporation | Client store synchronization through intermediary store change packets |
US20070271317A1 (en) * | 2004-08-16 | 2007-11-22 | Beinsync Ltd. | System and Method for the Synchronization of Data Across Multiple Computing Devices |
US8996486B2 (en) * | 2004-12-15 | 2015-03-31 | Applied Invention, Llc | Data store with lock-free stateless paging capability |
US8275804B2 (en) | 2004-12-15 | 2012-09-25 | Applied Minds, Llc | Distributed data store with a designated master to ensure consistency |
US7774308B2 (en) * | 2004-12-15 | 2010-08-10 | Applied Minds, Inc. | Anti-item for deletion of content in a distributed datastore |
US11321408B2 (en) | 2004-12-15 | 2022-05-03 | Applied Invention, Llc | Data store with lock-free stateless paging capacity |
US7392263B2 (en) * | 2005-02-28 | 2008-06-24 | Microsoft Corporation | File system represented inside a database |
US7685561B2 (en) * | 2005-02-28 | 2010-03-23 | Microsoft Corporation | Storage API for a common data platform |
US7788163B2 (en) | 2005-03-11 | 2010-08-31 | Chicago Mercantile Exchange Inc. | System and method of utilizing a distributed order book in an electronic trade match engine |
US7620668B2 (en) * | 2005-05-06 | 2009-11-17 | Microsoft Corporation | Authoritative and non-authoritative restore |
KR100725393B1 (ko) * | 2005-05-19 | 2007-06-07 | 삼성전자주식회사 | 자바 가상 머신에서 바이트 코드의 수행 시간을 줄이는시스템 및 방법 |
US8495015B2 (en) * | 2005-06-21 | 2013-07-23 | Apple Inc. | Peer-to-peer syncing in a decentralized environment |
US7523146B2 (en) | 2005-06-21 | 2009-04-21 | Apple Inc. | Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment |
US20070014277A1 (en) * | 2005-07-14 | 2007-01-18 | Yahoo! Inc. | Content router repository |
US20070038703A1 (en) * | 2005-07-14 | 2007-02-15 | Yahoo! Inc. | Content router gateway |
US20070014307A1 (en) * | 2005-07-14 | 2007-01-18 | Yahoo! Inc. | Content router forwarding |
US7849199B2 (en) * | 2005-07-14 | 2010-12-07 | Yahoo ! Inc. | Content router |
US7623515B2 (en) * | 2005-07-14 | 2009-11-24 | Yahoo! Inc. | Content router notification |
US7631045B2 (en) * | 2005-07-14 | 2009-12-08 | Yahoo! Inc. | Content router asynchronous exchange |
US7962585B2 (en) * | 2005-08-15 | 2011-06-14 | Microsoft Corporation | Partial item change tracking and synchronization |
US8065680B2 (en) * | 2005-11-15 | 2011-11-22 | Yahoo! Inc. | Data gateway for jobs management based on a persistent job table and a server table |
US8291101B1 (en) * | 2005-12-08 | 2012-10-16 | Juniper Networks, Inc. | Synchronization of mutually shared data stored on network devices |
US20070192080A1 (en) * | 2006-01-31 | 2007-08-16 | Carpenter Bryan F | Data tree structure for automatic retention of context information |
US7606838B2 (en) * | 2006-02-22 | 2009-10-20 | Microsoft Corporation | Distributed conflict resolution for replicated databases |
WO2007113836A2 (en) * | 2006-04-03 | 2007-10-11 | Beinsync Ltd. | Peer to peer syncronization system and method |
US7890646B2 (en) * | 2006-04-27 | 2011-02-15 | Microsoft Corporation | Synchronization orchestration |
US7792792B2 (en) * | 2006-05-22 | 2010-09-07 | Microsoft Corporation | Synchronizing structured web site contents |
US7925781B1 (en) * | 2006-05-26 | 2011-04-12 | The Hong Kong University Of Science And Technology | Distributed storage to support user interactivity in peer-to-peer video streaming |
US7769727B2 (en) * | 2006-05-31 | 2010-08-03 | Microsoft Corporation | Resolving update-delete conflicts |
US7805408B2 (en) * | 2006-06-09 | 2010-09-28 | Microsoft Corporation | Unified mechanism for presenting and resolving grouped synchronization conflicts |
US8024762B2 (en) * | 2006-06-13 | 2011-09-20 | Time Warner Cable Inc. | Methods and apparatus for providing virtual content over a network |
US7539827B2 (en) * | 2006-07-19 | 2009-05-26 | Microsoft Corporation | Synchronization of change-tracked data store with data store having limited or no change tracking |
US20080103977A1 (en) * | 2006-10-31 | 2008-05-01 | Microsoft Corporation | Digital rights management for distributed devices |
US20080104206A1 (en) * | 2006-10-31 | 2008-05-01 | Microsoft Corporation | Efficient knowledge representation in data synchronization systems |
US8515912B2 (en) | 2010-07-15 | 2013-08-20 | Palantir Technologies, Inc. | Sharing and deconflicting data changes in a multimaster database system |
US7778282B2 (en) * | 2006-12-18 | 2010-08-17 | Microsoft Corporation | Propagation of conflict knowledge |
US7657769B2 (en) * | 2007-01-08 | 2010-02-02 | Marcy M Scott | N-way synchronization of data |
US7620659B2 (en) * | 2007-02-09 | 2009-11-17 | Microsoft Corporation | Efficient knowledge representation in data synchronization systems |
BRPI0812543A2 (pt) * | 2007-06-19 | 2015-09-29 | Qualcomm Inc | métodos e aparelho para sincronização de conjunto de dados em um ambiente sem fio |
US20090024558A1 (en) * | 2007-07-16 | 2009-01-22 | Sap Ag | Methods and systems for storing and retrieving rejected data |
US20090083441A1 (en) * | 2007-09-24 | 2009-03-26 | Microsoft Corporation | Synchronization of web service endpoints in a multi-master synchronization environment |
US9135321B2 (en) * | 2008-02-06 | 2015-09-15 | Microsoft Technology Licensing, Llc | Synchronization infrastructure for networked devices, applications and services in a loosely coupled multi-master synchronization environment |
US7979393B2 (en) * | 2008-02-22 | 2011-07-12 | Microsoft Corporation | Multiphase topology-wide code modifications for peer-to-peer systems |
US20090315766A1 (en) | 2008-06-19 | 2009-12-24 | Microsoft Corporation | Source switching for devices supporting dynamic direction information |
US8700301B2 (en) | 2008-06-19 | 2014-04-15 | Microsoft Corporation | Mobile computing devices, architecture and user interfaces based on dynamic direction information |
US20090319166A1 (en) * | 2008-06-20 | 2009-12-24 | Microsoft Corporation | Mobile computing services based on devices with dynamic direction information |
US20090315775A1 (en) * | 2008-06-20 | 2009-12-24 | Microsoft Corporation | Mobile computing services based on devices with dynamic direction information |
US8467991B2 (en) * | 2008-06-20 | 2013-06-18 | Microsoft Corporation | Data services based on gesture and location information of device |
US8090681B2 (en) * | 2008-06-26 | 2012-01-03 | Microsoft Corporation | Resolving conflicts in content management systems |
US9477727B2 (en) * | 2008-08-01 | 2016-10-25 | Sybase, Inc. | Abstracting data for use by a mobile device having occasional connectivity |
US10303787B2 (en) | 2008-10-21 | 2019-05-28 | Microsoft Technology Licensing, Llc | Forgetting items with knowledge based synchronization |
US8412676B2 (en) * | 2008-10-21 | 2013-04-02 | Microsoft Corporation | Forgetting items with knowledge based synchronization |
US20100228612A1 (en) * | 2009-03-09 | 2010-09-09 | Microsoft Corporation | Device transaction model and services based on directional information of device |
EP2528303B1 (en) * | 2009-04-08 | 2014-07-02 | BlackBerry Limited | System and method for sharing data in a group of mobile devices |
US8254890B2 (en) | 2009-04-08 | 2012-08-28 | Research In Motion Limited | System and method for managing items in a list shared by a group of mobile devices |
US9065868B2 (en) * | 2009-04-08 | 2015-06-23 | Blackberry Limited | System and method for sharing data in a group of mobile devices |
US9917702B2 (en) * | 2009-04-08 | 2018-03-13 | Blackberry Limited | System and method for managing items in a list shared by a group of mobile devices |
US20100332324A1 (en) * | 2009-06-25 | 2010-12-30 | Microsoft Corporation | Portal services based on interactions with points of interest discovered via directional device information |
US8473543B2 (en) | 2009-07-06 | 2013-06-25 | Microsoft Corporation | Automatic conflict resolution when synchronizing data objects between two or more devices |
US8872767B2 (en) | 2009-07-07 | 2014-10-28 | Microsoft Corporation | System and method for converting gestures into digital graffiti |
GB2468742B (en) * | 2009-12-22 | 2011-01-12 | Celona Technologies Ltd | Error prevention for data replication |
US8788458B2 (en) | 2009-12-30 | 2014-07-22 | Sybase, Inc. | Data caching for mobile applications |
US8909662B2 (en) * | 2009-12-30 | 2014-12-09 | Sybase, Inc. | Message based mobile object with native PIM integration |
US9336291B2 (en) | 2009-12-30 | 2016-05-10 | Sybase, Inc. | Message based synchronization for mobile business objects |
US8572022B2 (en) * | 2010-03-02 | 2013-10-29 | Microsoft Corporation | Automatic synchronization conflict resolution |
US20110282850A1 (en) * | 2010-05-11 | 2011-11-17 | Microsoft Corporation | Concurrently Accessing Data |
US9436502B2 (en) | 2010-12-10 | 2016-09-06 | Microsoft Technology Licensing, Llc | Eventually consistent storage and transactions in cloud based environment |
US9009726B2 (en) * | 2010-12-10 | 2015-04-14 | Microsoft Technology Licensing, Llc | Deterministic sharing of data among concurrent tasks using pre-defined deterministic conflict resolution policies |
US10102242B2 (en) | 2010-12-21 | 2018-10-16 | Sybase, Inc. | Bulk initial download of mobile databases |
US9110807B2 (en) | 2012-05-23 | 2015-08-18 | Sybase, Inc. | Cache conflict detection |
US8874682B2 (en) | 2012-05-23 | 2014-10-28 | Sybase, Inc. | Composite graph cache management |
US9779260B1 (en) | 2012-06-11 | 2017-10-03 | Dell Software Inc. | Aggregation and classification of secure data |
US9081975B2 (en) | 2012-10-22 | 2015-07-14 | Palantir Technologies, Inc. | Sharing information between nexuses that use different classification schemes for information access control |
US9501761B2 (en) | 2012-11-05 | 2016-11-22 | Palantir Technologies, Inc. | System and method for sharing investigation results |
CN103873495B (zh) * | 2012-12-10 | 2019-01-15 | 联想(北京)有限公司 | 文件同步的方法和使用该方法的电子设备 |
US10182054B2 (en) | 2013-03-14 | 2019-01-15 | Open Text Sa Ulc | Systems, methods and computer program products for information integration across disparate information systems |
US9898537B2 (en) | 2013-03-14 | 2018-02-20 | Open Text Sa Ulc | Systems, methods and computer program products for information management across disparate information systems |
US10073956B2 (en) | 2013-03-14 | 2018-09-11 | Open Text Sa Ulc | Integration services systems, methods and computer program products for ECM-independent ETL tools |
KR101310070B1 (ko) | 2013-06-26 | 2013-09-24 | (주)지란지교소프트 | 프로그램간의 충돌을 예방하는 방법 및 그 방법이 기록된 기록매체 |
US9053165B2 (en) | 2013-07-08 | 2015-06-09 | Dropbox, Inc. | Structured content item synchronization |
US9626176B2 (en) | 2013-09-13 | 2017-04-18 | Microsoft Technology Licensing, Llc | Update installer with technical impact analysis |
US9665359B2 (en) * | 2013-09-13 | 2017-05-30 | Microsoft Technology Licensing, Llc | Automatically resolving conflicts after installation of selected updates in a computer system |
US10026064B2 (en) | 2013-09-13 | 2018-07-17 | Microsoft Technology Licensing, Llc | Automatically recommending updates based on stored lifecycle information |
US9830142B2 (en) | 2013-09-13 | 2017-11-28 | Microsoft Technology Licensing, Llc | Automatic installation of selected updates in multiple environments |
US9569070B1 (en) * | 2013-11-11 | 2017-02-14 | Palantir Technologies, Inc. | Assisting in deconflicting concurrency conflicts |
US20150161123A1 (en) * | 2013-12-09 | 2015-06-11 | Microsoft Corporation | Techniques to diagnose live services |
US9262344B2 (en) | 2013-12-17 | 2016-02-16 | International Business Machines Corporation | Local locking in a bi-directional synchronous mirroring environment |
US10091287B2 (en) | 2014-04-08 | 2018-10-02 | Dropbox, Inc. | Determining presence in an application accessing shared and synchronized content |
US9998555B2 (en) | 2014-04-08 | 2018-06-12 | Dropbox, Inc. | Displaying presence in an application accessing shared and synchronized content |
US10270871B2 (en) | 2014-04-08 | 2019-04-23 | Dropbox, Inc. | Browser display of native application presence and interaction data |
US10171579B2 (en) | 2014-04-08 | 2019-01-01 | Dropbox, Inc. | Managing presence among devices accessing shared and synchronized content |
US9853863B1 (en) | 2014-10-08 | 2017-12-26 | Servicenow, Inc. | Collision detection using state management of configuration items |
US10769826B2 (en) | 2014-12-31 | 2020-09-08 | Servicenow, Inc. | Visual task board visualization |
US11579774B2 (en) | 2015-01-20 | 2023-02-14 | Ultrata, Llc | Object memory data flow triggers |
WO2016118630A1 (en) | 2015-01-20 | 2016-07-28 | Ultrata Llc | Utilization of a distributed index to provide object memory fabric coherency |
US10411951B2 (en) | 2015-02-10 | 2019-09-10 | Hewlett Packard Enterprise Development Lp | Network policy conflict detection and resolution |
US10326748B1 (en) | 2015-02-25 | 2019-06-18 | Quest Software Inc. | Systems and methods for event-based authentication |
US9846528B2 (en) | 2015-03-02 | 2017-12-19 | Dropbox, Inc. | Native application collaboration |
US10417613B1 (en) | 2015-03-17 | 2019-09-17 | Quest Software Inc. | Systems and methods of patternizing logged user-initiated events for scheduling functions |
IN2015CH01317A (ja) * | 2015-03-18 | 2015-04-10 | Wipro Ltd | |
US9990506B1 (en) | 2015-03-30 | 2018-06-05 | Quest Software Inc. | Systems and methods of securing network-accessible peripheral devices |
US9852147B2 (en) | 2015-04-01 | 2017-12-26 | Dropbox, Inc. | Selective synchronization and distributed content item block caching for multi-premises hosting of digital content items |
US9922201B2 (en) | 2015-04-01 | 2018-03-20 | Dropbox, Inc. | Nested namespaces for selective content sharing |
US10963430B2 (en) | 2015-04-01 | 2021-03-30 | Dropbox, Inc. | Shared workspaces with selective content item synchronization |
US9842220B1 (en) | 2015-04-10 | 2017-12-12 | Dell Software Inc. | Systems and methods of secure self-service access to content |
US11468101B2 (en) * | 2015-05-29 | 2022-10-11 | Kuni Ahi LLC | Context-rich key framework implementations for global concept management |
US10698628B2 (en) | 2015-06-09 | 2020-06-30 | Ultrata, Llc | Infinite memory fabric hardware implementation with memory |
US9886210B2 (en) | 2015-06-09 | 2018-02-06 | Ultrata, Llc | Infinite memory fabric hardware implementation with router |
US9971542B2 (en) | 2015-06-09 | 2018-05-15 | Ultrata, Llc | Infinite memory fabric streams and APIs |
US10536352B1 (en) * | 2015-08-05 | 2020-01-14 | Quest Software Inc. | Systems and methods for tuning cross-platform data collection |
US10218588B1 (en) | 2015-10-05 | 2019-02-26 | Quest Software Inc. | Systems and methods for multi-stream performance patternization and optimization of virtual meetings |
US10157358B1 (en) | 2015-10-05 | 2018-12-18 | Quest Software Inc. | Systems and methods for multi-stream performance patternization and interval-based prediction |
US10691718B2 (en) | 2015-10-29 | 2020-06-23 | Dropbox, Inc. | Synchronization protocol for multi-premises hosting of digital content items |
US9571573B1 (en) | 2015-10-29 | 2017-02-14 | Dropbox, Inc. | Peer-to-peer synchronization protocol for multi-premises hosting of digital content items |
CA3006773A1 (en) | 2015-12-08 | 2017-06-15 | Ultrata, Llc | Memory fabric software implementation |
US10248337B2 (en) | 2015-12-08 | 2019-04-02 | Ultrata, Llc | Object memory interfaces across shared links |
CN108885607B (zh) | 2015-12-08 | 2022-04-12 | 乌尔特拉塔有限责任公司 | 使用容错对象的存储器结构操作和一致性 |
US10241676B2 (en) | 2015-12-08 | 2019-03-26 | Ultrata, Llc | Memory fabric software implementation |
US10248933B2 (en) | 2015-12-29 | 2019-04-02 | Dropbox, Inc. | Content item activity feed for presenting events associated with content items |
US10620811B2 (en) | 2015-12-30 | 2020-04-14 | Dropbox, Inc. | Native application collaboration |
US9537952B1 (en) | 2016-01-29 | 2017-01-03 | Dropbox, Inc. | Apparent cloud access for hosted content items |
US10142391B1 (en) | 2016-03-25 | 2018-11-27 | Quest Software Inc. | Systems and methods of diagnosing down-layer performance problems via multi-stream performance patternization |
US10382502B2 (en) | 2016-04-04 | 2019-08-13 | Dropbox, Inc. | Change comments for synchronized content items |
US10635559B2 (en) | 2016-11-29 | 2020-04-28 | International Business Machines Corporation | Maintaining data integrity over multiple applications |
US20180173778A1 (en) * | 2016-12-16 | 2018-06-21 | Linkedin Corporation | Database uniqueness constraints |
JP2018125728A (ja) * | 2017-02-01 | 2018-08-09 | 富士ゼロックス株式会社 | 情報処理装置及びプログラム |
US20190239037A1 (en) * | 2018-02-01 | 2019-08-01 | Blackberry Limited | System and method for managing items in a list shared by a group of mobile devices |
US10769172B2 (en) | 2018-03-28 | 2020-09-08 | Hewlett Packard Enterprise Development Lp | Globalized object names in a global namespace |
US11086757B1 (en) * | 2019-06-12 | 2021-08-10 | Express Scripts Strategic Development, Inc. | Systems and methods for providing stable deployments to mainframe environments |
US11720347B1 (en) | 2019-06-12 | 2023-08-08 | Express Scripts Strategic Development, Inc. | Systems and methods for providing stable deployments to mainframe environments |
US11321159B2 (en) | 2019-07-03 | 2022-05-03 | Red Hat, Inc. | Interchangeable plugins for detecting conflicts between server-side data and client-side data |
US11290531B2 (en) | 2019-12-04 | 2022-03-29 | Dropbox, Inc. | Immediate cloud content item creation from local file system interface |
US11803571B2 (en) | 2021-02-04 | 2023-10-31 | Hewlett Packard Enterprise Development Lp | Transfer of synchronous and asynchronous replication |
US20230259505A1 (en) * | 2022-01-26 | 2023-08-17 | Oracle International Corporation | Future transaction processing |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US198891A (en) * | 1878-01-01 | Improvement in injectors | ||
US91702A (en) * | 1869-06-22 | Improvement in velocipede | ||
US152422A (en) * | 1874-06-23 | Improvement in machines for cutting cork | ||
US5900870A (en) * | 1989-06-30 | 1999-05-04 | Massachusetts Institute Of Technology | Object-oriented computer user interface |
US6078925A (en) * | 1995-05-01 | 2000-06-20 | International Business Machines Corporation | Computer program product for database relational extenders |
US5806074A (en) * | 1996-03-19 | 1998-09-08 | Oracle Corporation | Configurable conflict resolution in a computer implemented distributed database |
US6112024A (en) * | 1996-10-02 | 2000-08-29 | Sybase, Inc. | Development system providing methods for managing different versions of objects with a meta model |
US6240414B1 (en) * | 1997-09-28 | 2001-05-29 | Eisolutions, Inc. | Method of resolving data conflicts in a shared data environment |
US6108004A (en) * | 1997-10-21 | 2000-08-22 | International Business Machines Corporation | GUI guide for data mining |
US6263342B1 (en) * | 1998-04-01 | 2001-07-17 | International Business Machines Corp. | Federated searching of heterogeneous datastores using a federated datastore object |
US6317754B1 (en) * | 1998-07-03 | 2001-11-13 | Mitsubishi Electric Research Laboratories, Inc | System for user control of version /Synchronization in mobile computing |
US6519597B1 (en) * | 1998-10-08 | 2003-02-11 | International Business Machines Corporation | Method and apparatus for indexing structured documents with rich data types |
US6338056B1 (en) * | 1998-12-14 | 2002-01-08 | International Business Machines Corporation | Relational database extender that supports user-defined index types and user-defined search |
US6199195B1 (en) * | 1999-07-08 | 2001-03-06 | Science Application International Corporation | Automatically generated objects within extensible object frameworks and links to enterprise resources |
US6393434B1 (en) * | 1999-09-14 | 2002-05-21 | International Business Machines Corporation | Method and system for synchronizing data using fine-grained synchronization plans |
US6370541B1 (en) * | 1999-09-21 | 2002-04-09 | International Business Machines Corporation | Design and implementation of a client/server framework for federated multi-search and update across heterogeneous datastores |
US6556983B1 (en) * | 2000-01-12 | 2003-04-29 | Microsoft Corporation | Methods and apparatus for finding semantic information, such as usage logs, similar to a query using a pattern lattice data space |
US6820088B1 (en) | 2000-04-10 | 2004-11-16 | Research In Motion Limited | System and method for synchronizing data records between multiple databases |
US6999956B2 (en) | 2000-11-16 | 2006-02-14 | Ward Mullins | Dynamic object-driven database manipulation and mapping system |
US6892210B1 (en) * | 2000-12-29 | 2005-05-10 | Worldsync, Inc. | Database management and synchronization across a peer-to-peer network |
EP1410202B1 (en) | 2001-03-16 | 2006-07-26 | Novell, Inc. | Client-server model for synchronization of files |
KR100445194B1 (ko) * | 2001-03-23 | 2004-08-18 | 주식회사 알티베이스 | 데이터베이스 이중화 방법 |
US6877111B2 (en) | 2001-03-26 | 2005-04-05 | Sun Microsystems, Inc. | Method and apparatus for managing replicated and migration capable session state for a Java platform |
US6920452B2 (en) * | 2001-04-26 | 2005-07-19 | International Business Machines Corporation | Sound pattern feedback for informational events during typing |
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 |
US6772178B2 (en) * | 2001-07-27 | 2004-08-03 | Sun Microsystems, Inc. | Method and apparatus for managing remote data replication in a distributed computer system |
US7089298B2 (en) * | 2001-08-20 | 2006-08-08 | Nokia Corporation | Naming distribution method for ad hoc networks |
US6983293B2 (en) * | 2002-07-24 | 2006-01-03 | International Business Machines Corporation | Mid-tier-based conflict resolution method and system usable for message synchronization and replication |
US7146385B1 (en) * | 2004-03-04 | 2006-12-05 | Sun Microsystems, Inc. | System and method for application-transparent synchronization with a persistent data store |
-
2004
- 2004-06-30 US US10/883,621 patent/US7512638B2/en not_active Expired - Fee Related
-
2005
- 2005-05-11 KR KR1020050039247A patent/KR101041319B1/ko active IP Right Grant
- 2005-06-15 JP JP2005175754A patent/JP4738908B2/ja not_active Expired - Fee Related
- 2005-06-24 EP EP05105661A patent/EP1612702A1/en not_active Ceased
Also Published As
Publication number | Publication date |
---|---|
KR20060047761A (ko) | 2006-05-18 |
US20050044187A1 (en) | 2005-02-24 |
EP1612702A1 (en) | 2006-01-04 |
JP2006018821A (ja) | 2006-01-19 |
KR101041319B1 (ko) | 2011-06-14 |
US7512638B2 (en) | 2009-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4738908B2 (ja) | ハードウェア/ソフトウェアインターフェースシステムにより管理可能な情報の単位のピアツーピア同期化のための競合処理を提供するためのシステムおよび方法 | |
JP4583377B2 (ja) | ハードウェア/ソフトウェアインターフェースシステムにより管理可能な情報のユニットに対する関係および階層の同期サービスを実現するシステムおよび方法 | |
US8166101B2 (en) | Systems and methods for the implementation of a synchronization schemas for 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 | |
US7401104B2 (en) | Systems and methods for synchronizing computer systems through an intermediary file system share or device | |
JP4583376B2 (ja) | ハードウェア/ソフトウェアインタフェースシステムにより管理可能な情報のユニットに対する同期処理サービスを実現するシステムおよび方法 | |
US20050049994A1 (en) | Systems and methods for the implementation of a base schema for organizing units of information manageable by a hardware/software interface system | |
EP1620781A2 (en) | Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system | |
JP4580389B2 (ja) | 仲介ファイルシステム共有または仲介デバイスを介してコンピュータシステムを同期させるためのシステムおよび方法 | |
JP4583375B2 (ja) | 同期スキーマの実装のためのシステム | |
JP4580390B2 (ja) | ハードウェア/ソフトウェアインターフェイスシステムによって管理可能な情報単位の拡張および継承のためのシステムおよび方法 | |
KR101109390B1 (ko) | 하드웨어/소프트웨어 인터페이스 시스템에 의해 관리가능한 정보의 단위들에 대한 동기화 서비스를 제공하는시스템 및 방법 | |
KR20060110733A (ko) | 중간 파일 시스템 공유 또는 장치를 통해 컴퓨터 시스템을동기화하는 시스템 및 방법 | |
NZ540221A (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: 20080613 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100914 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101214 |
|
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: 20110422 |
|
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: 20110427 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4738908 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140513 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |