JP2007503050A - System and method for realizing a synchronous processing service for a unit of information manageable by a hardware / software interface system - Google Patents

System and method for realizing a synchronous processing service for a unit of information manageable by a hardware / software interface system Download PDF

Info

Publication number
JP2007503050A
JP2007503050A JP2006523857A JP2006523857A JP2007503050A JP 2007503050 A JP2007503050 A JP 2007503050A JP 2006523857 A JP2006523857 A JP 2006523857A JP 2006523857 A JP2006523857 A JP 2006523857A JP 2007503050 A JP2007503050 A JP 2007503050A
Authority
JP
Japan
Prior art keywords
item
synchronization
winfs
replica
hardware
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006523857A
Other languages
Japanese (ja)
Other versions
JP2007503050A5 (en
JP4583376B2 (en
Inventor
シャー アシシュ
エイ. シャー ダーシャトクマー
フーディス イリナ
ノビク レブ
ジャワハー ジャベリ ヴィフェク
シー.ウー ウィニー
イー. ディーム マイケル
ジー.シェパード エドワード
ファン リャン
リー チーアン
ビー.レイラー マイケル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from PCT/US2003/026150 external-priority patent/WO2005029363A1/en
Priority claimed from US10/646,575 external-priority patent/US8131739B2/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2007503050A publication Critical patent/JP2007503050A/en
Publication of JP2007503050A5 publication Critical patent/JP2007503050A5/ja
Application granted granted Critical
Publication of JP4583376B2 publication Critical patent/JP4583376B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation

Abstract

本発明のいくつかの実施形態では、「WinFS」データソースと非「WinFS」データソースとの間の情報の同期をとるために同期アダプタを採用する(図36、3622/3666)。アダプタの例として、「WinFS」連絡先フォルダと非WinFSメールボックスとの間のアドレス帳情報の同期をとるアダプタがある(図36、3642)。これらの場合、アダプタ開発者は、「WinFS」(図36、3612)スキーマと非「WinFS」データソーススキーマ(図36、3624)との間のスキーマ変換コードを開発するため、「WinFS」(図36、3612)同期プラットフォームにより提供される本明細書で説明されている「WinFS」同期処理コアサービスAPIを使用することも可能である。さらに、アダプタ開発者は、非「WinFS」データソースの変更を伝達するためのプロトコルをサポートする。同期アダプタ(図36、3662)は、同期コントローラAPIを使用することにより呼び出され、制御され、このAPI(図36、3652)を使用して進捗状況およびエラーを報告する。
Some embodiments of the present invention employ a synchronization adapter to synchronize information between “WinFS” and non- “WinFS” data sources (FIGS. 36, 3622/3666). An example of an adapter is an adapter that synchronizes address book information between a “WinFS” contact folder and a non-WinFS mailbox (FIGS. 36 and 3642). In these cases, the adapter developer develops schema conversion code between the “WinFS” (FIGS. 36, 3612) schema and the non- “WinFS” data source schema (FIGS. 36, 3624). 36, 3612) It is also possible to use the “WinFS” synchronization processing core service API described herein provided by the synchronization platform. In addition, adapter developers support protocols for communicating non- "WinFS" data source changes. The sync adapter (FIGS. 36, 3662) is called and controlled by using the sync controller API and reports progress and errors using this API (FIG. 36, 3652).

Description

本出願は、開示全体が本明細書に組み込まれている「SYSTEMS AND METHODS FOR PROVIDING SYNCHRONIZATION SERVICES FOR UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM」という表題の2004年10月24日に出願した米国特許出願第10/692,515号明細書(整理番号MSFT−2844)、「SYSTEMS AND METHODS FOR INTERFACING APPLICATION PROGRAMS WITH AN ITEM-BASED STORAGE PLATFORM」という表題の2003年8月21日に出願した米国特許出願第10/646,575号明細書(整理番号MSFT−2733)、および「SYSTEMS AND METHODS FOR INTERFACING APPLICATION PROGRAMS WITH AN ITEM-BASED STORAGE PLATFORM」という表題の2003年8月21日に出願した国際出願第PCT/US03/26150号明細書(整理番号2777)の優先権を主張するもものである。   This application is a US patent filed October 24, 2004 entitled "SYSTEMS AND METHODS FOR PROVIDING SYNCHRONIZATION SERVICES FOR UNITS OF INFORMATION MANAGEABLE BY A HARDWARE / SOFTWARE INTERFACE SYSTEM", the entire disclosure of which is incorporated herein. Application No. 10 / 692,515 (reference number MSFT-2844), US patent application filed on August 21, 2003 entitled "SYSTEMS AND METHODS FOR INTERFACING APPLICATION PROGRAMS WITH AN ITEM-BASED STORAGE PLATFORM" No. 10 / 646,575 (reference number MSFT-2733) and International Application No. PCT / filed on August 21, 2003 entitled “SYSTEMS AND METHODS FOR INTERFACING APPLICATION PROGRAMS WITH AN ITEM-BASED STORAGE PLATFORM”. The priority of US03 / 26150 specification (reference number 2777) is also claimed.

本出願は、内容全体がこれにより本出願に組み込まれている(便宜上部分的に要約されている)、同一出願人による、「SYSTEMS AND METHODS FOR REPRESENTING UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM BUT INDEPENDENT OF PHYSICAL REPRESENTATION」という表題の2003年8月21日に出願した米国特許出願第10/647,058号明細書(整理番号MSFT−1748)、「SYSTEMS AND METHODS FOR SEPARATING UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM FROM THEIR PHYSICAL ORGANIZATION」という表題の2003年8月21日に出願した米国特許出願第10/646,941号明細書(整理番号MSFT−1749)、「SYSTEMS AND METHODS FOR THE IMPLEMENTATION OF A BASE SCHEMA FOR ORGANIZING UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM」という表題の2003年8月21日に出願した米国特許出願第10/646,940号明細書(整理番号MSFT−1750)、「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」という表題の2003年8月21日に出願した米国特許出願第10/646,632号明細書(整理番号MSFT−1751)、「SYSTEMS AND METHOD FOR REPRESENTING RELATIONSHIPS BETWEEN UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM」という表題の2003年8月21日に出願した米国特許出願第10/646,645号明細書(整理番号MSFT−1752)、「STORAGE PLATFORM FOR ORGANIZING, SEARCHING, AND SHARING DATA」という表題の2003年8月21日に出願した、米国特許出願第10/646,646号明細書(整理番号MSFT−2734)、「SYSTEMS AND METHODS FOR DATA MODELING IN AN ITEM-BASED STORAGE PLATFORM」という表題の2003年8月21日に出願した、米国特許出願第10/646,580号明細書(整理番号MSFT−2735)、「SYSTEMS AND METHODS FOR THE IMPLEMENTATION OF A DIGITAL IMAGES SCHEMA FOR ORGANIZING UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM」という表題の2003年10月24日に出願した米国特許出願第10/692,779号明細書(整理番号MSFT−2829)、「SYSTEMS AND METHODS FOR PROVIDING RELATIONAL AND HIERARCHICAL SYNCHRONIZATION SERVICES FOR UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM」という表題の2003年10月24日に出願した米国特許出願第10/692,508号明細書(整理番号MSFT−2845)、「SYSTEMS AND METHODS FOR THE IMPLEMENTATION OF A SYNCHRONIZATION SCHEMAS FOR UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM」という表題の2003年10月24日に出願した米国特許出願第10/693,362号明細書(整理番号MSFT−2846)、および「SYSTEMS AND METHODS FOR EXTENSIONS AND INHERITANCE FOR UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM」という表題の2003年10月24日に出願した米国特許出願第10/693,574号明細書(整理番号MSFT−2847)で開示されている発明の主題と関連している。   This application is hereby incorporated in its entirety by this application (partially summarized for convenience) by the same applicant, "SYSTEMS AND METHODS FOR REPRESENTING UNITS OF INFORMATION MANAGEABLE BY A HARDWARE / SOFTWARE INTERFACE SYSTEM BUT US patent application Ser. No. 10 / 647,058 (reference number MSFT-1748), filed August 21, 2003, entitled “INDEPENDENT OF PHYSICAL REPRESENTATION”, “SYSTEMS AND METHODS FOR SEPARATING UNITS OF INFORMATION MANAGEABLE BY A HARDWARE / SOFTWARE INTERFACE SYSTEM FROM THEIR PHYSICAL ORGANIZATION, US patent application Ser. No. 10 / 646,941 (reference number MSFT-1749) filed on August 21, 2003, “SYSTEMS AND METHODS FOR THE IMPLEMENTATION OF A August 2003 titled "BASE SCHEMA FOR ORGANIZING UNITS OF INFORMATION MANAGEABLE BY A HARDWARE / SOFTWARE INTERFACE SYSTEM" US Patent Application No. 10 / 646,940 filed on the 21st (reference number MSFT-1750), “SYSTEMS AND METHODS FOR THE IMPLEMENTATION OF A CORE SCHEMA FOR PROVIDING A TOP-LEVEL STRUCTURE FOR ORGANIZING UNITS OF INFORMATION MANAGEABLE BY US Patent Application No. 10 / 646,632 (reference number MSFT-1751) filed on August 21, 2003 entitled “A HARDWARE / SOFTWARE INTERFACE SYSTEM”, “SYSTEMS AND METHOD FOR REPRESENTING RELATIONSHIPS BETWEEN UNITS OF INFORMATION US patent application Ser. No. 10 / 646,645 filed Aug. 21, 2003 (reference number MSFT-1752) entitled “MANAGEABLE BY A HARDWARE / SOFTWARE INTERFACE SYSTEM”, “STORAGE PLATFORM FOR ORGANIZING, SEARCHING, AND US patent application Ser. No. 10 / 646,646 filed Aug. 21, 2003 entitled “SHARING DATA” (Reference number MSFT-2734), US patent application Ser. No. 10 / 646,580, filed Aug. 21, 2003, entitled “SYSTEMS AND METHODS FOR DATA MODELING IN AN ITEM-BASED STORAGE PLATFORM” No. MSFT-2735), US patent application No. 10 / filed on Oct. 24, 2003 entitled “SYSTEMS AND METHODS FOR THE IMPLEMENTATION OF A DIGITAL IMAGES SCHEMA FOR ORGANIZING UNITS OF INFORMATION MANAGEABLE BY A HARDWARE / SOFTWARE INTERFACE SYSTEM”. No. 692,779 (reference number MSFT-2829), filed on October 24, 2003 entitled "SYSTEMS AND METHODS FOR PROVIDING RELATIONAL AND HIERARCHICAL SYNCHRONIZATION SERVICES FOR UNITS OF INFORMATION MANAGEABLE BY A HARDWARE / SOFTWARE INTERFACE SYSTEM" US patent application Ser. No. 10 / 692,508 (reference number MSFT-2845), “SYSTEMS AN US Patent Application No. 10 / 693,362, filed Oct. 24, 2003 (reference number MSFT) entitled “D METHODS FOR THE IMPLEMENTATION OF A SYNCHRONIZATION SCHEMAS FOR UNITS OF INFORMATION MANAGEABLE BY A HARDWARE / SOFTWARE INTERFACE SYSTEM” -2846), and US patent application Ser. No. 10 / 693,574 filed Oct. 24, 2003 entitled “SYSTEMS AND METHODS FOR EXTENSIONS AND INHERITANCE FOR UNITS OF INFORMATION MANAGEABLE BY A HARDWARE / SOFTWARE INTERFACE SYSTEM”. Relevant to the subject matter of the invention disclosed in (reference number MSFT-2847).

本発明は、一般に、情報の格納および取り出しの分野に関係し、より具体的にはコンピュータ化システムにおける様々な型のデータの編成、検索、および共有のためのアクティブストレージプラットフォームに関係する。   The present invention relates generally to the field of information storage and retrieval, and more specifically to an active storage platform for organizing, retrieving, and sharing various types of data in a computerized system.

個々のディスク容量は、最近10年間に、ほぼ年70%の割合で増大してきている。Mooreの法則は、長年にわたって続いてきた中央演算処理装置(CPU)パワーの途方もない増大を正確に予測した。有線および無線技術は、驚異的な接続性および帯域幅をもたらした。現在のトレンドが続くと仮定すると、数年以内に、平均的なラップトップコンピュータでおおよそ1テラバイト(TB)のストレージを備え、数百個のファイルを格納するようになり、500ギガバイト(GB)ドライブがあたりまえになることであろう。   Individual disk capacities have increased at a rate of almost 70% per year over the last decade. Moore's law accurately predicted the tremendous increase in central processing unit (CPU) power that had been going on for many years. Wired and wireless technology has provided tremendous connectivity and bandwidth. Assuming the current trend will continue, within a few years, the average laptop computer will have roughly 1 terabyte (TB) of storage and store hundreds of files, 500 gigabyte (GB) drive It will be natural.

消費者は、コンピュータを主に通信と個人情報の編成に使用しており、これは、従来のスケジュール管理(PIM)スタイルのデータであろうとデジタル音楽であるか写真などの媒体であるかに関係しない。デジタルコンテンツの量、および未加工のバイトを格納する能力は、途方もなく増大してきているが、消費者がこのようなデータの編成および統合に使用できる方法は追随できていない。知識労働者は、情報の管理および共有に膨大な時間を費やしており、ある調査では、知識労働者は非生産的情報関連の活動に全時間の15〜25%を費やしていると推定している。また他の調査では、標準的な知識労働者は情報の検索に毎日約2.5時間を費やしている推測している。   Consumers primarily use computers to communicate and organize personal information, whether it is traditional schedule management (PIM) style data, digital music or a medium such as photography. do not do. The amount of digital content and the ability to store raw bytes has increased tremendously, but the methods that consumers can use to organize and integrate such data have not been followed. Knowledge workers spend a great deal of time managing and sharing information, and one study estimates that knowledge workers spend 15-25% of all time on non-productive information-related activities Yes. Other studies speculate that standard knowledge workers spend approximately 2.5 hours searching for information every day.

開発者および情報技術(IT)部門は、人々、場所、時間、および出来事などを表す共通ストレージ抽象化用に自データストアを構築することに対し相当の時間と資金を投資している。この結果、作業を重複させるだけでなく、そのようなデータの共通検索または共有のためのメカニズムのない共通データの孤島をいくつも生み出している。今日、Microsoft Windows(登録商標)オペレーティングシステムが稼働するコンピュータ上にいったいいくつのアドレス帳が存在しうるか考えてみよう。電子メールクライアントおよびパーソナルファイナンスプログラムなどの多くのアプリケーションは、個々にアドレス帳を保存し、そのようなそれぞれのプログラムが個別に保持するアドレス帳データのアプリケーション間の共有はほとんどない。その結果、ファイナンスプログラム(Microsoft Moneyのようなプログラム)は、受取人のアドレスを電子メール連絡先フォルダ(Microsoft Outlookが備えているようなフォルダ)に保持されているアドレスと共有しない。実際、多くのユーザは、複数のデバイスを持ち、論理的に、そのパーソナルデータをそれら自体の間で同期させ、また携帯電話からMSNおよびAOLなどの商業サービスにいたるまで、様々な追加ソースにまたがって同期させなければならないが、共有されているドキュメントのコラボレーションは、電子メールメッセージにドキュメントを添付することにより大半が行われている、つまり、手作業で、しかも非効率的に行われている。   Developers and Information Technology (IT) departments have invested considerable time and money to build their own data stores for common storage abstractions that represent people, places, time, and events. This not only duplicates work, but also creates a number of isolated islands of common data that lack a mechanism for common retrieval or sharing of such data. Today, consider how many address books can exist on a computer running the Microsoft Windows® operating system. Many applications, such as e-mail clients and personal finance programs, store address books individually and there is little sharing between applications of address book data that each such program maintains individually. As a result, finance programs (programs such as Microsoft Money) do not share recipient addresses with addresses held in email contact folders (folders provided by Microsoft Outlook). In fact, many users have multiple devices, logically synchronize their personal data among themselves, and span a variety of additional sources, from mobile phones to commercial services such as MSN and AOL. However, collaboration on shared documents is mostly done by attaching documents to email messages, which is done manually and inefficiently.

このようなコラボレーションの欠落の理由の1つは、コンピュータシステム内に情報を編成する伝統的なアプローチは、ファイル−フォルダ/ディレクトリベースのシステム(「ファイルシステム」)を使用し、複数のファイルを格納するために使用される記憶媒体の物理的編成の抽象化に基づいて複数のファイルをフォルダのディレクトリ階層に編成することを中心に機能していることである。1960年代に開発されたMulticsオペレーティングシステムは、初めてファイル、フォルダ、およびディレクトリを使用してオペレーティングシステムレベルでデータの格納可能単位を管理したことで高い評価を得ている。特に、Multicsはファイルの階層内で記号アドレスを使用し(それによってファイルパスという概念を導入)、ファイルの物理的アドレスはユーザ(アプリケーションおよびエンドユーザ)に対し透過的でなかった。このファイルシステムは、全体として、どの個別ファイルのファイル形式についても意識しておらず、ファイル間の関係は、オペレーティングシステムレベル(つまり、階層内のファイルの場所以外)で重要でないとみなされていた。Multicsの出現以来、格納可能なデータは、これまで、オペレーティングシステムレベルでファイル、フォルダ、およびディレクトリに編成されてきた。これらのファイルは、一般に、ファイルシステムにより保持されている特殊ファイルで具現化されたファイル階層自体(「ディレクトリ」)を含む。このディレクトリは、次に、ディレクトリ内の他のファイルおよび階層内のそのようなファイルのノード位置のすべてに対応するエントリのリストを保持する(ここでは、フォルダと呼ばれる)。このようなものが、約40年間にわたって究極の技術であった。   One reason for this lack of collaboration is that traditional approaches to organizing information within a computer system use a file-folder / directory-based system ("file system") to store multiple files. It functions mainly on organizing a plurality of files into a directory hierarchy of a folder based on the abstraction of the physical organization of the storage medium used to do this. Developed in the 1960s, the Multitics operating system has gained a high reputation for managing data storable units at the operating system level using files, folders, and directories for the first time. In particular, Multics used symbolic addresses within the hierarchy of files (thus introducing the concept of file paths), and the physical addresses of files were not transparent to users (applications and end users). The file system as a whole was unaware of the file format of any individual file, and the relationship between the files was considered insignificant at the operating system level (ie, other than the location of the file in the hierarchy) . Since the advent of Multics, storable data has historically been organized into files, folders, and directories at the operating system level. These files generally include the file hierarchy itself (“directory”) embodied in special files held by the file system. This directory then maintains a list of entries corresponding to all of the other file in the directory and the node location of such a file in the hierarchy (referred to herein as a folder). Such has been the ultimate technology for about 40 years.

しかし、コンピュータの物理的ストレージシステム内に置かれている情報の十分妥当な表現を実現しながら、それにもかかわらずファイルシステムは、その物理的ストレージシステムの抽象化であり、したがって、それらのファイルの利用にはユーザの操作内容(コンテキストを持つユニット、特徴、および他のユニットとの関係)とオペレーティングシステムが備える内容(ファイル、フォルダ、およびディレクトリ)との間のあるレベルの指示(解釈)を必要とする。したがって、ユーザ(アプリケーションおよび/またはエンドユーザ)には選択権がないが、そうすることが不効率であり、不整合であり、または他の何らかの形で望ましくない場合でも、情報のユニットをファイルシステム構造に強制する。さらに、既存のファイルシステムは、個別ファイルに格納されているデータの構造についてはほとんど関知せず、このため、情報のほとんどは、それらを書いたアプリケーションにしかアクセス(理解)できないファイル内にロックアップされたままとなる。その結果、このように情報のスキマティックな記述、および情報を管理するためのメカニズムを欠いているため、個別の保管場所の間でほとんどデータを共有しないままデータの保管場所を作成することになる。例えば、多くのパーソナルコンピュータ(PC)ユーザは、ファイル編成はPCユーザにとってかなり難しい作業であるためあるレベルで−例えば、Outlook Contacts、オンライン口座アドレス、Windows(登録商標)Address Book、Quicken Payees、およびインスタントメッセージング(IM)の仲間リスト−やり取りする人々に関する情報を格納する5つを超える異なるストアを持つ。ほとんどの既存のファイルシステムではファイルおよびフォルダの編成にネストされたフォルダメタファを使用しているため、ファイルの個数が増えると、柔軟で効率的な編成方式を維持するために要する労力は相当きついものとなる。このような状況では、単一ファイルの複数の分類があると非常に有益であるが、しかし、既存ファイルシステム内のハードまたはソフトリンクを使用することは厄介であり、維持も困難である。   However, a file system is nevertheless an abstraction of that physical storage system, and therefore of those files, while realizing a sufficiently reasonable representation of the information located within the computer's physical storage system Usage requires some level of instruction (interpretation) between the user's operations (contextual units, features, and relationships with other units) and the operating system's content (files, folders, and directories) And Thus, even though the user (application and / or end user) has no choice, but it is inefficient, inconsistent, or otherwise undesirable in some way, the unit of information is file system Force to structure. In addition, existing file systems know little about the structure of the data stored in individual files, so most of the information is locked up in files that can only be accessed (understood) by the application that wrote them. Will remain. As a result, this lack of a schematic description of information and a mechanism for managing information creates a data storage location with little data sharing between the individual storage locations. . For example, many personal computer (PC) users are at a certain level because file organization is a fairly difficult task for PC users—for example, Outlook Contacts, online account addresses, Windows Address Book, Quicken Payes, and Instant Messaging (IM) buddy list—has more than five different stores that store information about the people they interact with. Most existing file systems use nested folder metaphors for organizing files and folders, so as the number of files increases, the effort required to maintain a flexible and efficient organization scheme can be significant. It becomes. In such situations, having multiple classifications of a single file is very beneficial, but using hard or soft links in existing file systems is cumbersome and difficult to maintain.

過去には、ファイルシステムの欠点をなくそうとする試みが何回かあったがうまくいかなかった。それらの以前の試みのうちいくつかは、連想メモリを利用し、データを物理アドレスではなく内容でアクセスできるメカニズムを実現しようとした。しかし、連想メモリはキャッシュおよびメモリ管理ユニットなどのデバイスによる小規模な利用については有用であることが実証されたが、物理的記憶媒体などのデバイスでの大規模な利用は様々な理由からまだ可能でないため、こうした努力は成功しておらず、したがって、このような解決策はただ単に存在していない。オブジェクト指向データベース(OODB)システムを使用した他の試みもなされているが、これらの試みは、強いデータベース特性とよい非ファイル表現を特徴としており、ファイル表現の取り扱いでは効果的でなく、ハードウェア/ソフトウェアインタフェースのシステムレベルでのファイルおよびフォルダベースの構造の速度、効率、および簡潔さを再現することも可能でない。SmallTalk(およびその派生言語)を使用する試みなどの他の取り組みは、ファイルおよび非ファイル表現の取り扱いでは極めて効果的であることが実証されたが、様々なデータファイルの間に存在する関係を効率よく編成し、利用するために必要なデータベース機能を欠いており、したがって、そのようなシステムの全体的効率は許容できないものであった。さらにBeOSを使用する他の試み(および他のそのようなオペレーティングシステム研究)は、必要なデータベース機能をいくつか備えておりファイルを適切に表現できるにもかかわらず、非ファイル表現を取り扱うのには不適当である−従来のファイルシステムの中心的な欠点と同じ欠点−ことを実証した。   In the past, there have been several attempts to eliminate the flaws of the file system, but it has failed. Some of those previous attempts have made use of associative memory to provide a mechanism that allows data to be accessed by content rather than physical address. However, associative memory has proven useful for small-scale usage by devices such as caches and memory management units, but large-scale usage on devices such as physical storage media is still possible for a variety of reasons As such, these efforts have not been successful, so such a solution simply does not exist. Other attempts using object oriented database (OODB) systems have also been made, but these attempts feature strong database characteristics and good non-file representations, are not effective in handling file representations, and are not hardware / It is also not possible to reproduce the speed, efficiency, and simplicity of file and folder based structures at the system level of the software interface. Other efforts, such as attempts to use SmallTalk (and its derivatives), have proven to be very effective in handling file and non-file representations, but make efficient use of the relationships that exist between various data files. It lacked the necessary database functions to organize and use well, and thus the overall efficiency of such a system was unacceptable. In addition, other attempts to use BeOS (and other such operating system studies) have some of the necessary database functionality to handle non-file representations, even though they can represent the files properly. It has been demonstrated that it is inadequate-the same drawbacks as the central drawbacks of traditional file systems.

データベース技術は、同様の難題が存在するもう1つの技術分野である。例えば、リレーショナルデータベースモデルは大きな商業的成功を収めたが、実際には、独立系ソフトウェアベンダ(ISV)は、一般に、リレーショナルデータベースのソフトウェア製品(Microsoft SQL Server)に用意されている機能のわずかな部分を利用している。その代わりに、そのような製品とのアプリケーションの相互作用のほとんどは、単純な「読み取る」と「書き込む」の形態である。これに対しすぐにわかる理由−プラットフォームまたはデータベースがわからないなど−が多数占めるが、気づかれないことが多い重要な理由の1つは、データベースは、必ずしも、大手ビジネスアプリケーションベンダが本当に必要とする的確な抽象化を行わないということである。例えば、現実世界には、「顧客」または「注文」(それら自身の中のアイテム、またそれら自身のアイテムとして注文の埋め込まれた「ラインアイテム」とともに)「アイテム」という概念があるが、リレーショナルデータベースはテーブルおよび行に関してしか認識しない。その結果、アプリケーションは、(例えば)アイテムレベルでの整合性、ロッキング、セキュリティ、および/またはトリガの側面を持つことが望ましいかもしれないが、一般的には、データベースはこれらの機能をテーブル/行のレベルでしか備えていない。これは、それぞれのアイテムがデータベースのあるテーブル内の単一行にマッピングされる場合にうまく機能する可能性があるが、複数のラインアイテムの注文の場合、アイテムが実際に複数のテーブルにマッピングされる理由がありえ、それがその場合であれば、単純なリレーショナルデータベースシステムではまったく正しい抽象化を行わない。その結果、アプリケーションは、それらの基本的抽象化を実現するためにデータベースの上にロジックを構築しなければならない。つまり、基本的リレーショナルモデルは、基本的にリレーショナルモデルがアプリケーションとストレージシステムとの間あるレベルの間接性を必要とするため、高水準のアプリケーションが容易に開発可能であるデータを格納するのに十分なプラットフォームを提供しない−データの意味構造が、いくつかの場合でのみアプリケーション内で可視とすることが可能である。いくつかのデータベースベンダが、高水準の機能をその製品に組み込んでいる−オブジェクトリレーショナル機能、新しい組織化可能モデルなどを備える−が、どれも、必要な種類の包括的ソリューションを実現していない。というのも、本当に包括的なソリューションとは、有用なドメイン抽象化(「Persons」、「Locations」、「Events」など)に対し両方とも有用なデータモデル抽象化(「Items」、「Extensions」、「Relationships」など)を実現するものだからである。   Database technology is another technical field where similar challenges exist. For example, the relational database model has been a great commercial success, but in fact, independent software vendors (ISVs) are generally a small part of the functionality provided by relational database software products (Microsoft SQL Server). Is used. Instead, most of the application interaction with such products is in the form of simple “read” and “write”. One of the most important reasons that are often not noticed, such as the lack of a platform or database, is readily apparent, but the database is not necessarily the exact one that a large business application vendor really needs. This means that no abstraction is performed. For example, in the real world, there is a concept of “items” in “customers” or “orders” (along with items within themselves, and “line items” with orders embedded as their own items), but relational databases Only recognizes tables and rows. As a result, it may be desirable for an application to have (for example) item-level integrity, locking, security, and / or triggering aspects, but in general, a database will have these functions in a table / row. It is prepared only at the level. This can work well if each item is mapped to a single row in a table in the database, but for multiple line item orders, the item is actually mapped to multiple tables. There can be a reason, and if that is the case, a simple relational database system will not do the right abstraction at all. As a result, applications must build logic on the database to implement their basic abstraction. This means that the basic relational model is basically sufficient to store data that can be easily developed by high-level applications because the relational model basically requires some level of indirection between the application and the storage system. Does not provide a secure platform-the semantic structure of the data can only be visible in the application in some cases. Some database vendors have built high-level functionality into their products—including object-relational capabilities, new organizeable models, etc.—but none have achieved the necessary kind of comprehensive solution. This is because a truly comprehensive solution is a useful data abstraction ("Items", "Extensions", "Items", "Extensions", “Relationships” and the like).

いくつかの文献に上述のような従来の技術に関連した技術内容が開示されている(例えば、非特許文献1、2参照)。   Several documents disclose technical contents related to the conventional technique as described above (for example, see Non-Patent Documents 1 and 2).

WinFS Sync Adapter API spec [SADP]WinFS Sync Adapter API spec [SADP] WinFS Sync Controller API [SCTRL] specWinFS Sync Controller API [SCTRL] spec

既存のデータストレージ(data storage)およびデータベース技術における前記の欠点に関して、コンピュータシステム内のデータのすべての型を編成し、検索し、共有する能力を高めた新しいストレージプラットフォーム−既存のファイルシステムおよびデータベースシステムを超えてデータプラットフォームを拡張し拡大する、すべての型のデータを格納するように設計されているストレージプラットフォーム−が必要である。本発明は、本明細書に参照により前の方に組み込まれている関連する発明とともに、この要求条件を満たす。   With regard to the aforementioned shortcomings in existing data storage and database technology, a new storage platform with increased ability to organize, search and share all types of data in computer systems—existing file systems and database systems There is a need for a storage platform that is designed to store all types of data, extending and expanding the data platform beyond. The present invention meets this requirement, along with related inventions incorporated earlier by reference herein.

本発明は、このような状況に鑑みてなされたもので、その目的とするところは、ハードウェア/ソフトウェアインタフェースシステムにより管理可能な情報のユニットに対する同期処理サービスを実現するシステムおよび方法を提供することにある。   The present invention has been made in view of such circumstances, and an object of the present invention is to provide a system and method for realizing a synchronization processing service for a unit of information that can be managed by a hardware / software interface system. It is in.

以下の概要では、参照により前の方で本明細書に組み込まれている関連する発明(「関連する発明」)の背景状況において説明されている発明の様々な態様の概要を述べる。この概要は、本発明の重要な態様のすべてを網羅的に説明することも、また本発明の範囲を定めることも意図していない。むしろ、この概要は、以下の詳細な説明および図面の導入部として使用されることを意図している。   The following summary provides an overview of the various aspects of the invention described in the context of the related invention ("Related Invention") incorporated herein by reference earlier. This summary is not intended to be an exhaustive description of all important aspects of the invention or to delineate the scope of the invention. Rather, this summary is intended to be used as an introduction to the following detailed description and drawings.

本発明は、関連する発明とともに、全体として、データの編成、検索、および共有のためのストレージプラットフォームを対象とする。本発明のストレージプラットフォームは、既存のファイルシステムおよびデータベースシステムを超えるデータストレージの概念を拡張し、広げるものであり、構造化、非構造化、または半構造化データを含むすべての型のデータ用のストアとなるように設計されている。   The present invention, together with related inventions, is generally directed to a storage platform for data organization, retrieval, and sharing. The storage platform of the present invention extends and extends the concept of data storage over existing file systems and database systems for all types of data, including structured, unstructured, or semi-structured data. Designed to be a store.

本発明のストレージプラットフォームは、データベースエンジン上に実装されたデータストアを含む。データベースエンジンは、オブジェクトリレーショナルの拡張機能を備えるリレーショナルデータベースエンジンを含む。データストアは、データの編成、検索、共有、同期、およびセキュリティをサポートするデータモデルを実装する。特定の型のデータがスキーマ内に記述されており、プラットフォームは新しい型のデータ(本質的に、スキーマにより実現される基本型の子型)を定義するためスキーマの集合を拡張するメカニズムを備える。同期処理機能は、ユーザまたはシステム間のデータの共有を円滑にする。ファイルシステム風の機能が用意され、これにより、そのような従来のファイルシステムの制限のない既存のファイルシステムとのデータストアの相互運用性を実現できる。変更追跡メカニズムは、データストアに対する変更追跡の機能を備える。ストレージプラットフォームは、さらに、アプリケーションからストレージプラットフォームの前記の機能のすべてにアクセスし、スキーマで記述されているデータにアクセスするための一組のアプリケーションプログラムインタフェースを備える。   The storage platform of the present invention includes a data store implemented on a database engine. The database engine includes a relational database engine having an object-relational extension function. The data store implements a data model that supports data organization, retrieval, sharing, synchronization, and security. Specific types of data are described in the schema, and the platform provides a mechanism to extend the collection of schemas to define new types of data (essentially child types of the basic types implemented by the schema). The synchronization processing function facilitates sharing of data between users or systems. A file system-like function is provided, which enables data store interoperability with existing file systems without the limitations of such conventional file systems. The change tracking mechanism provides a change tracking function for the data store. The storage platform further comprises a set of application program interfaces for accessing all of the aforementioned functions of the storage platform from the application and accessing the data described in the schema.

データストアにより実装されるデータモデルは、アイテム、要素、および関係に関してデータストレージのユニットを定義するアイテムは、データストアに格納可能なデータの1つのユニットであり、1つまたは複数の要素および関係を含むことができる。要素は、1つまたは複数のフィールドを含む型のインスタンスである(ここではプロパティとも呼ばれる)。関係は、2つのアイテムの間のリンクである。(本明細書で使用されているように、これらの用語および他の特定の用語は、極めて密接に使用される他の用語から分けるため原文の英語では先頭文字が大文字にされている場合があるが、何であれ英語で先頭が大文字の用語は例えば「Item」とし、英語で大文字でないときの同じ用語、例えば、「item」は日本語に訳してアイテムとするが、区別する意図はなく、そのような区別は想定されるべきでも、暗黙のうちに含まれるべきでもない)。   A data model implemented by a data store defines a unit of data storage in terms of items, elements, and relationships. An item is a unit of data that can be stored in a data store and includes one or more elements and relationships. Can be included. An element is an instance of a type that includes one or more fields (also called properties here). A relationship is a link between two items. (As used herein, these and other specific terms may be capitalized in original English to separate them from other terms that are used very closely. However, in English, a capitalized first term is “Item”, and the same term when it is not capitalized in English, for example, “item” is translated into Japanese as an item, but there is no intention to distinguish it. Such distinction should not be assumed or included implicitly).

コンピュータシステムは、さらに、それぞれのItemがハードウェア/ソフトウェアインタフェースシステムにより操作することができる情報の離散的格納可能ユニットを構成する複数のItems、前記Itemsに対する組織構造を構成する複数のItem Folders、およびそれぞれのItemが少なくとも1つのItem Folderに属し、複数のItem Foldersに属す場合もある、複数のItemsを操作するためのハードウェア/ソフトウェアインタフェースシステムを備える。   The computer system further includes a plurality of Items that constitute a discrete storable unit of information, each Item being operable by a hardware / software interface system, a plurality of Item Folders that constitute an organizational structure for the Items, and Each item belongs to at least one item folder, and includes a hardware / software interface system for operating a plurality of items, which may belong to a plurality of item folders.

ItemまたはItemのプロパティ値のいくつかは、永続的ストアから派生されるのとは反対に動的に計算することができる。つまり、ハードウェア/ソフトウェアインタフェースシステムは、Itemを格納する必要はなく、Itemsの現在の集合を列挙する機能またはストレージプラットフォームの識別子(アプリケーションプログラミングインタフェースつまりAPIを説明するセッションでさらに詳しく説明する)が与えられた場合のItemを取り出す機能などのいくつかのオペレーションがサポートされる−例えば、Itemは、携帯電話の現在位置または温度センサ上の温度読み取り値とすることが可能である。ハードウェア/ソフトウェアインタフェースシステムは、複数のItemsを操作し、さらに、ハードウェア/ソフトウェアインタフェースシステムにより管理される複数のRelationshipsにより相互接続される複数のItemsを含むことができる。   Some of the Item or Item property values can be calculated dynamically as opposed to being derived from the persistent store. That is, the hardware / software interface system does not need to store the Items, but is given the ability to enumerate the current set of Items or the identifier of the storage platform (described in more detail in the session describing the application programming interface or API). Some operations are supported, such as the ability to retrieve an Item when given-for example, the Item can be the current location of the mobile phone or a temperature reading on a temperature sensor. The hardware / software interface system can include multiple Items that operate multiple Items and are interconnected by multiple Relationships managed by the hardware / software interface system.

コンピュータシステムのハードウェア/ソフトウェアインタフェースシステムは、さらに、前記ハードウェア/ソフトウェアインタフェースシステムが理解し、所定の予測可能な方法で直接処理することができるコアItemsの集合を定義するコアスキーマを備える。複数のItemsを操作するために、コンピュータシステムは、ハードウェア/ソフトウェアインタフェースシステムレベルで、前記複数のItemsと複数のRelationshipsとを相互接続し、前記Relationshipsを管理する。   The hardware / software interface system of the computer system further comprises a core schema that defines a set of core Items that the hardware / software interface system understands and can directly process in a predetermined and predictable manner. In order to operate a plurality of Items, a computer system interconnects the plurality of Items and a plurality of Relationships at a hardware / software interface system level, and manages the Relationships.

ストレージプラットフォームのAPIは、ストレージプラットフォームスキーマの集合で定義されているそれぞれのアイテム、アイテム拡張、および関係に対するデータクラスを用意する。さらに、アプリケーションプログラミングインタフェースは、データクラスに対するビヘイビアの共通の集合を定義し、データクラスとともに、ストレージプラットフォームAPIの基本プログラミングモデルを提供するフレームワーククラスの集合を実現する。ストレージプラットフォームAPIは、アプリケーションプログラマを基礎のデータベースエンジンのクエリ言語の詳細から分離する形で、データストア内のアイテムの様々なプロパティに基づいてアプリケーションプログラマがクエリを形成するために使用できる簡略化されたクエリモデルを備える。ストレージプラットフォームAPIは、さらに、アプリケーションプログラムによりアイテムに加えられた変更を集めてから、それらをデータストアが実装されているデータベースエンジン(または何らかの種類のストレージエンジン)により要求される正しい更新に編成する。これにより、アプリケーションプログラマは、APIへのデータストア更新の複雑さを任せたまま、メモリ中のアイテムに変更を加えることができる。   The storage platform API provides a data class for each item, item extension, and relationship defined in the collection of storage platform schemas. In addition, the application programming interface defines a common set of behaviors for data classes, and implements a set of framework classes that together with the data classes provide a basic programming model for the storage platform API. The storage platform API is a simplified form that can be used by application programmers to build queries based on various properties of items in the data store in a way that separates application programmers from the underlying database engine query language details. Provide a query model. The storage platform API further collects changes made to the items by the application program and then organizes them into the correct updates required by the database engine (or some type of storage engine) on which the data store is implemented. This allows application programmers to make changes to items in memory while leaving the complexity of updating the data store to the API.

本発明のストレージプラットフォームでは、共通のストレージ基盤および図式化されたデータを通じて、より効率的なアプリケーション開発を消費者、知識労働者、および企業向けに行うことができる。これは、データモデルに固有の機能を利用可能にするだけでなく、既存のファイルシステムおよびデータベースアクセス方法も包含し、拡張する機能豊富な拡張可能アプリケーションプログラミングインタフェースを備える。   The storage platform of the present invention enables more efficient application development for consumers, knowledge workers, and businesses through a common storage infrastructure and schematized data. This not only makes the functionality specific to the data model available, but also includes a rich and extensible application programming interface that encompasses and extends existing file systems and database access methods.

相互関係のある発明のこの包括的構造の一部として(「発明を実施するための最良の形態」のセクションIIで詳しく説明する)、本発明は、特に、同期APIを対象とする(「発明を実施するための最良の形態」のセクションIIIで詳しく説明する)。本発明の他の特徴および利点は、本発明の詳細な説明および付属の図面から明白になるであろう。   As part of this generic structure of interrelated inventions (described in detail in Section II of “Best Mode for Carrying Out the Invention”), the present invention is specifically directed to synchronous APIs (“Inventions” (Detailed description will be given in Section III of the “Best Mode for Carrying Out”). Other features and advantages of the present invention will become apparent from the detailed description of the invention and the accompanying drawings.

前述の概要は、本発明の以下の詳細な説明とともに、付属の図面を参照しつつ読むとよく理解できる。本発明を例示する目的のために、図面には、本発明の様々な態様の実施例が示されているが、本発明は、開示されている特定の方法および手段に限定されない。図面は以下で説明される。   The foregoing summary, together with the following detailed description of the present invention, will be better understood when read in conjunction with the appended drawings. For the purpose of illustrating the invention, there are shown in the drawings embodiments of the various aspects of the invention, but the invention is not limited to the specific methods and instrumentalities disclosed. The drawings are described below.

目次
I.はじめに
A.コンピューティング環境例
B.従来のファイルベースのストレージ
II.データの編成、検索、および共有のためのWINFSストレージプラットフォーム
A.用語
B.ストレージプラットフォームの概要
C.データモデル
1.Items
2.Itemの識別
3.Item FoldersおよびCategories
4.Schemas
a)Base Schema
b)Core Schema
5.関係
a)関係の宣言
b)保持関係
c)埋め込み関係
d)参照関係
e)規則と制約条件
f)関係の順序付け
6.拡張性
a)アイテム拡張
b)NestedElement型の拡張
D.データベースエンジン
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].GetExtension
c)関数[System.Storage].GetRelationship
12 メタデータ
a)スキーマメタデータ
b)インスタンスメタデータ
E.セキュリティ
F.通知および変更追跡
G.従来のファイルシステムの相互運用性
H.ストレージプラットフォームAPI
III.同期API
A.同期の概要
1.ストレージプラットフォームとストレージプラットフォームとの間の同期処理
a)同期(Sync)制御アプリケーション
b)スキーマ注釈
c)同期構成
(1)コミュニティフォルダ−マッピング
(2)プロファイル
(3)スケジュール
d)競合回避処理
(1)競合検出
(a)知識ベースの競合
(b)制約ベースの競合
(2)競合処理
(a)自動競合解決
(b)競合ログ作成
(c)競合の検査および解決
(d)レプリカの収束および競合解決の伝播
2.非ストレージプラットフォームデータストアの同期処理
a)同期処理サービス
(1)Change Enumeration
(2)Change Application
(3)Conflict Resolution
b)アダプタの実装
3.セキュリティ
4.管理可能性
B.同期処理APIの概要
1.一般的用語
2.同期処理APIの主要事項
C.同期処理APIサービス
1.変更列挙
2.変更適用
3.サンプルコード
4.API同期処理のメソッド
D.同期スキーマの追加態様
IV.結論
Table of Contents Introduction A. Example of computing environment Conventional file-based storage II. WINFS storage platform for data organization, retrieval and sharing Terminology B. Overview of storage platform Data model Items
2. Item identification 2. Item Folders and Categories
4). Schema
a) Base Schema
b) Core Schema
5). Relationship a) Declaration of relationship b) Retention relationship c) Embedding relationship d) Reference relationship e) Rules and constraints f) Ordering of relationships Extensibility a) Item extension b) NestedElement type extension Database engine 1. Implementation of data store using UDT 2. Item mapping Extended mapping 4. Mapping of nested elements Object identification Rules for naming SQL objects 7. Naming rules for columns Search view a) Item
(1) Master item search view
(2) Typed item search view b) Item expansion
(1) Master extended search view
(2) Typed extended search view c) Nested elements d) Relationship
(1) Master relationship search view
(2) Relation instance search view e)
9. Update 10. Change Tracking & Tombstone a) Change Tracking
(1) Change tracking in the “master” search view
(2) Change tracking in “typed” search view b) Tombstone
(1) Item Tombstone
(2) Extended tombstone
(3) Related tombstones
(4) Tombstone cleanup Helper API and functions a) Function [System. Storage]. GetItem
b) Function [System. Storage]. GetExtension
c) Function [System. Storage]. GetRelationship
12 Metadata a) Schema metadata b) Instance metadata e. Security F. Notification and change tracking Interoperability of conventional file system Storage platform API
III. Synchronous API
A. Overview of synchronization Synchronization processing between storage platforms a) Synchronization (sync) control application b) Schema annotation c) Synchronization configuration
(1) Community folder-mapping
(2) Profile
(3) Schedule d) Conflict avoidance process
(1) Competition detection
(A) Knowledge base competition
(B) Constraint-based competition
(2) Competitive processing
(A) Automatic conflict resolution
(B) Create conflict log
(C) Conflict inspection and resolution
(D) Convergence of replica and propagation of conflict resolution Non-storage platform data store synchronization a) Synchronization processing service
(1) Change enumeration
(2) Change Application
(3) Conflict Resolution
b) Mounting the adapter Security 4. Manageability B. Overview of synchronous processing API General terminology Main items of synchronous processing API Synchronous processing API service List of changes 2. Change application Sample code API synchronous processing method Additional aspect of synchronization schema IV. Conclusion

I.はじめに
本発明の主題は、法的要件を満たすように特異性とともに説明されている。しかし、説明自体は、本発明の範囲を制限することを意図されていない。むしろ、発明者は、主張されている主題は、他の現在または将来の技術とともに、本明細書で説明されている活動または要素と類似しているが異なるステップまたはステップの組合せを含むように、他の方法でも具現化されうることを考察した。さらに、「ステップ」という用語は、本明細書では、採用されている方法の異なる要素を暗示するために使用される場合があるが、この用語は、個々のステップの順序が明示的に説明されていない場合、かつ説明されている場合を除き、本明細書で開示されている様々なステップ間の特定の順序を暗示するものとして解釈すべきではない。
I. Introduction The subject matter of the present invention has been described with specificity to meet legal requirements. However, the description itself is not intended to limit the scope of the invention. Rather, the inventor believes that claimed subject matter, along with other current or future technologies, includes similar or different steps or combinations of steps to the activities or elements described herein. We considered that other methods could be implemented. Furthermore, although the term “step” may be used herein to imply different elements of the method employed, the term explicitly describes the order of the individual steps. Unless otherwise described and explained, they should not be construed as implying a particular order between the various steps disclosed herein.

A.コンピューティング環境例
本発明の数多くの実施形態は、コンピュータ上で実行することができる。図1および以下の説明は、本発明を実施できる適当なコンピューティング環境について簡潔に述べた一般的な説明である。必要というわけではないが、本発明の様々な態様は、クライアントワークステーションまたはサーバなどのコンピュータにより実行される、プログラムモジュールなどの、コンピュータ実行可能命令の一般的文脈において説明することができる。一般に、プログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。さらに、本発明は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能な家電製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを含む、他のコンピュータシステム構成を使用して実施できる。また、本発明は、通信ネットワークを通じてリンクされているリモート処理デバイスによりタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、ローカルおよびリモートの両方のメモリ記憶デバイス内に配置されうる。
A. Exemplary Computing Environment Numerous embodiments of the present invention can be executed on a computer. FIG. 1 and the following description is a general description briefly describing a suitable computing environment in which the invention may be implemented. Although not required, various aspects of the invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer such as a client workstation or server. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Furthermore, the present invention can be implemented using other computer system configurations, including handheld devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules can be located in both local and remote memory storage devices.

図1に示されているように、汎用コンピューティングシステム例は、プロセッサ21、システムメモリ22、およびシステムメモリを含む様々なシステムコンポーネントをプロセッサ21に結合するシステムバス23を備える、従来のパーソナルコンピュータ20を含む。システムバス23は、メモリバスまたはメモリコントローラ、周辺機器バス、および様々なバスアーキテクチャを使用するローカルバスを含む数種類のバス構造のうちのいずれでもよい。システムメモリは、読み取り専用メモリ(ROM)24およびランダムアクセスメモリ(RAM)25を含む。起動時などにパーソナルコンピュータ20内の要素間の情報伝送を助ける基本ルーチンを含む基本入出力システム26(BIOS)は、ROM 24に格納される。パーソナルコンピュータ20は、さらに、図に示されていないハードディスクへの読み書きを行うためのハードディスクドライブ27、取り外し可能磁気ディスク29への読み書きを行うための磁気ディスクドライブ28、およびCD−ROMまたはその他の光媒体などの取り外し可能光ディスク31への読み書きを行うための光ディスクドライブ30を備える。ハードディスクドライブ27、磁気ディスクドライブ28、および光ディスクドライブ30は、ハードディスクドライブインタフェース32、磁気ディスクドライブインタフェース33、および光ドライブインタフェース34によりそれぞれシステムバス23に接続される。ドライブおよび関連コンピュータ可読媒体は、パーソナルコンピュータ20用のコンピュータ可読命令、データ構造体、プログラムモジュール、およびその他のデータを格納する不揮発性記憶装置を実現する。本発明で説明されている環境例ではハードディスク、取り外し可能磁気ディスク29、および取り外し可能光ディスク31を採用しているが、当業者であれば、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、複数のランダムアクセスメモリ(RAM)、複数の読み取り専用メモリ(ROM)などのコンピュータからアクセス可能なデータを格納できる他のタイプのコンピュータ可読媒体もこの動作環境で使用できることを理解するであろう。同様に、この環境は、さらに、熱感知器およびセキュリティまたは火災警報装置などの様々なタイプの監視デバイス、およびその他の情報源を含むことができる。   As shown in FIG. 1, an example general purpose computing system includes a conventional personal computer 20 that includes a processor 21, a system memory 22, and a system bus 23 that couples various system components including the system memory to the processor 21. including. The system bus 23 may be any of several types of bus structures including a memory bus or memory controller, a peripheral device bus, and a local bus using various bus architectures. The system memory includes read only memory (ROM) 24 and random access memory (RAM) 25. A basic input / output system 26 (BIOS) including basic routines for helping information transmission between elements in the personal computer 20 at the time of startup or the like is stored in the ROM 24. The personal computer 20 further includes a hard disk drive 27 for reading and writing to a hard disk not shown in the figure, a magnetic disk drive 28 for reading and writing to a removable magnetic disk 29, and a CD-ROM or other light. An optical disk drive 30 is provided for reading from and writing to a removable optical disk 31 such as a medium. The hard disk drive 27, magnetic disk drive 28, and optical disk drive 30 are connected to the system bus 23 by a hard disk drive interface 32, a magnetic disk drive interface 33, and an optical drive interface 34, respectively. The drive and associated computer readable media implement non-volatile storage for storing computer readable instructions, data structures, program modules, and other data for the personal computer 20. The example environment described in the present invention employs a hard disk, a removable magnetic disk 29, and a removable optical disk 31, but those skilled in the art will appreciate that a magnetic cassette, flash memory card, digital video disk, Bernoulli cartridge, It will be appreciated that other types of computer readable media capable of storing computer accessible data such as multiple random access memories (RAM), multiple read only memories (ROM) may be used in this operating environment. Similarly, the environment can further include various types of monitoring devices such as heat detectors and security or fire alarm devices, and other sources of information.

オペレーティングシステム35、1つまたは複数のアプリケーションプログラム36、その他のプログラムモジュール37、およびプログラムデータ38を含む、多くのプログラムモジュールは、ハードディスク、磁気ディスク29、光ディスク31、ROM 24、またはRAM 25に格納されることができる。ユーザはキーボード40およびポインティングデバイス42などの入力デバイスを通じてパーソナルコンピュータ20にコマンドおよび情報を入力することができる。他の入力デバイス(図に示されていない)としては、マイク、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどがある。これらの入力デバイスやその他の入力デバイスは、システムバスに結合されているシリアポートインタフェース46を介してプロセッサ21に接続されることが多いが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの他のインタフェースにより接続されることもできる。モニタ47またはその他の種類の表示デバイスも、ビデオアダプタ48などのインタフェースを介してシステムバス23に接続される。パーソナルコンピュータは、通常、モニタ47のほかに、スピーカおよびプリンタなど、他の周辺出力装置(図に示されていない)を備える。図1のシステム例は、さらに、ホストアダプタ55、SCSI(Small Computer System Interface)バス56、およびSCSIバス56に接続された外部記憶デバイス62も含む。   Many program modules, including operating system 35, one or more application programs 36, other program modules 37, and program data 38, are stored on the hard disk, magnetic disk 29, optical disk 31, ROM 24, or RAM 25. Can. A user can input commands and information into the personal computer 20 through input devices such as a keyboard 40 and a pointing device 42. Other input devices (not shown) include a microphone, joystick, game pad, satellite dish, scanner, and the like. These input devices and other input devices are often connected to the processor 21 via a serial port interface 46 coupled to the system bus, such as a parallel port, game port, or universal serial bus (USB). It can also be connected by other interfaces. A monitor 47 or other type of display device is also connected to the system bus 23 via an interface, such as a video adapter 48. In addition to the monitor 47, the personal computer usually includes other peripheral output devices (not shown) such as a speaker and a printer. The system example of FIG. 1 further includes a host adapter 55, a SCSI (Small Computer System Interface) bus 56, and an external storage device 62 connected to the SCSI bus 56.

パーソナルコンピュータ20は、リモートコンピュータ49などの1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク接続環境で動作することができる。リモートコンピュータ49は、他のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、またはその他の共通ネットワークノードでもよく、通常は、パーソナルコンピュータ20に関係する上述の要素の多くまたはすべてを含むが、メモリ記憶デバイス50だけが図1に示されている。図1で説明されている論理接続は、ローカルエリアネットワーク(LAN)51とワイドエリアネットワーク(WAN)52を含む。このようなネットワーキング環境は、オフィス、企業全体にわたるコンピュータネットワーク、イントラネット、およびインターネットでは一般的である。   The personal computer 20 can operate in a network connection environment using logical connections to one or more remote computers, such as a remote computer 49. The remote computer 49 may be another personal computer, server, router, network PC, peer device, or other common network node, and typically includes many or all of the above-described elements associated with the personal computer 20, but with memory Only the storage device 50 is shown in FIG. The logical connections described in FIG. 1 include a local area network (LAN) 51 and a wide area network (WAN) 52. Such networking environments are common in offices, enterprise-wide computer networks, intranets, and the Internet.

LANネットワーキング環境で使用される場合、パーソナルコンピュータ20は、ネットワークインタフェースまたはアダプタ53を介してLAN 51に接続される。WANネットワーキング環境で使用される場合、パーソナルコンピュータ20は、通常、モデム54またはインターネットなどのワイドエリアネットワーク52上で通信を確立するためのその他の手段を備える。モデム54は、内蔵でも外付けでもよいが、シリアルポートインタフェース46を介してシステムバス23に接続される。ネットワーク接続環境では、パーソナルコンピュータ20またはその一部に関して示されているプログラムモジュールは、リモートメモリ記憶デバイスに格納されうる。図に示されているネットワーク接続は実施例であり、コンピュータ間の通信リンクを確立するのに他の手段が使用可能であることは理解されるであろう。   When used in a LAN networking environment, the personal computer 20 is connected to the LAN 51 via a network interface or adapter 53. When used in a WAN networking environment, the personal computer 20 typically includes a modem 54 or other means for establishing communications over a wide area network 52 such as the Internet. The modem 54, which may be internal or external, is connected to the system bus 23 via the serial port interface 46. In a network connection environment, the program modules shown for personal computer 20 or portions thereof may be stored on a remote memory storage device. It will be appreciated that the network connections shown are exemplary and other means can be used to establish a communications link between the computers.

図2のブロック図に例示されているように、コンピュータシステム200は、大まかに言って、ハードウェアコンポーネント202、ハードウェア/ソフトウェアインタフェースシステムコンポーネント204、およびアプリケーションプログラムコンポーネント206(本明細書では状況に応じて「ユーザコンポーネント」または「ソフトウェアコンポーネント」とも呼ぶ)の3つのコンポーネントグループに分けることができる。   As illustrated in the block diagram of FIG. 2, the computer system 200 broadly includes a hardware component 202, a hardware / software interface system component 204, and an application program component 206 (here, context sensitive). And can be divided into three component groups (also referred to as “user components” or “software components”).

コンピュータシステム200の様々な実施形態において、図1を再び参照すると、ハードウェアコンポーネント202は、中央演算処理装置(CPU)21、メモリ(ROM 24およびRAM 25の両方)、基本入出力システム(BIOS)26、およびとりわけキーボード40、マウス42、モニタ47、および/またはプリンタ(図に示されていない)などの様々な入出力(I/O)デバイスを備えることができる。ハードウェアコンポーネント202は、コンピュータシステム200用の基本的な物理的インフラストラクチャを備える。   In various embodiments of the computer system 200, referring again to FIG. 1, the hardware components 202 include a central processing unit (CPU) 21, memory (both ROM 24 and RAM 25), basic input / output system (BIOS). 26, and various input / output (I / O) devices such as a keyboard 40, mouse 42, monitor 47, and / or printer (not shown), among others. Hardware component 202 comprises the basic physical infrastructure for computer system 200.

アプリケーションプログラムコンポーネント206は、限定はしないが、コンパイラ、データベースシステム、ワードプロセッサ、ビジネスプログラム、ビデオゲームなどを含む、様々なソフトウェアプログラムを備える。アプリケーションプログラムは、様々なユーザ(マシン、他のコンピュータシステム、および/またはエンドユーザ)向けに問題を解決し、解決策を提供し、データを処理するためコンピュータ資源を利用するための手段を備える。   Application program component 206 comprises various software programs, including but not limited to compilers, database systems, word processors, business programs, video games, and the like. The application program comprises means for solving problems for various users (machines, other computer systems, and / or end users), providing solutions, and utilizing computer resources to process the data.

ハードウェア/ソフトウェアインタフェースシステムコンポーネント204は、それ自体、ほとんどの場合、シェルおよびカーネルを含むオペレーティングシステムを備える(および、いくつかの実施形態では、そのようなオペレーティングシステムのみで構成することができる)。「オペレーティングシステム」(OS)は、アプリケーションプログラムとコンピュータハードウェアとの間の媒介として動作する特別なプログラムである。ハードウェア/ソフトウェアインタフェースシステムコンポーネント204は、さらに、仮想マシンマネージャ(VMM)、共通言語ランタイム(CLR)またはその機能的等価物、Java(登録商標)仮想マシン(JVM)またはその機能的等価物、またはコンピュータシステム内のオペレーティングシステムの代わりとなる、またはそれへの追加となる他のそのようなソフトウェアコンポーネントを含むこともできる。ハードウェア/ソフトウェアインタフェースシステムの目的は、ユーザがアプリケーションプログラムを実行できるような環境を用意することである。ハードウェア/ソフトウェアインタフェースシステムの目標は、コンピュータシステムを使いやすくするだけでなく、コンピュータハードウェアを効率的な方法で利用できるようにすることである。   The hardware / software interface system component 204 itself comprises an operating system that includes, in most cases, a shell and a kernel (and can be configured with only such an operating system in some embodiments). An “operating system” (OS) is a special program that acts as an intermediary between application programs and computer hardware. The hardware / software interface system component 204 may further include a virtual machine manager (VMM), a common language runtime (CLR) or functional equivalent thereof, a Java virtual machine (JVM) or functional equivalent thereof, or Other such software components may also be included in place of or in addition to the operating system in the computer system. The purpose of the hardware / software interface system is to prepare an environment in which a user can execute an application program. The goal of a hardware / software interface system is not only to make the computer system easier to use, but also to make the computer hardware available in an efficient manner.

ハードウェア/ソフトウェアインタフェースシステムは、一般に、起動時にコンピュータシステムにロードされ、それ以降、コンピュータシステム内のすべてのアプリケーションプログラムを管理する。アプリケーションプログラムは、アプリケーションプログラムインタフェース(API)を介してサービスを要求することによりハードウェア/ソフトウェアインタフェースシステムとやり取りをする。一部のアプリケーションプログラムでは、エンドユーザはコマンド言語またはグラフィカルユーザインタフェース(GUI)などのユーザインタフェースを介してハードウェア/ソフトウェアインタフェースシステムとやり取りすることができる。   The hardware / software interface system is generally loaded into the computer system at startup and thereafter manages all application programs in the computer system. Application programs interact with the hardware / software interface system by requesting services via an application program interface (API). In some application programs, end users can interact with a hardware / software interface system via a user interface, such as a command language or a graphical user interface (GUI).

ハードウェア/ソフトウェアインタフェースシステムは、従来、アプリケーションに対し様々なサービスを実行するものである。複数のプログラムが同時に実行できるマルチタスクのハードウェア/ソフトウェアインタフェースシステムにおいて、ハードウェア/ソフトウェアインタフェースシステムは、どのアプリケーションをどのような順序で実行し、それぞれのアプリケーションについて次のアプリケーションに切り換えるまでにどれだけの時間を許すべきかを決定する。ハードウェア/ソフトウェアインタフェースシステムは、さらに、複数のアプリケーション間で内部メモリの共有を管理し、さらに、ハードディスク、プリンタ、およびダイアルアップポートなどの接続されているハードウェアデバイスへの入力およびそこからの出力を処理する。ハードウェア/ソフトウェアインタフェースシステムは、さらに、オペレーションのステータスおよび発生した可能性のあるエラーに関するメッセージをそれぞれのアプリケーション(および、場合によってはエンドユーザ)に送信する。ハードウェア/ソフトウェアインタフェースシステムは、さらに、バッチジョブ(例えば、印刷)の管理の負担を取り除き、開始アプリケーションがこのような作業から解放され、他の処理および/またはオペレーションを再開できるようにすることもできる。並列処理機能を備えることができるコンピュータでは、ハードウェア/ソフトウェアインタフェースシステムは、さらに、プログラムを分割して一度に複数のプロセッサ上で実行させることも管理する、ハードウェア/ソフトウェアインタフェースシステムのシェル(本明細書では単に「シェル」と呼ぶ)は、ハードウェア/ソフトウェアインタフェースシステムとの対話型エンドユーザインタフェースである。(シェルは、「コマンドインタプリタ」と呼ばれたり、オペレーティングシステムでは、「オペレーティングシステムシェル」と呼ばれたりもする。)シェルは、アプリケーションプログラムおよび/またはエンドユーザにより直接アクセス可能なハードウェア/ソフトウェアインタフェースシステムの外側の層である。シェルとは対照的に、カーネルはハードウェアコンポーネントと直接やり取りするハードウェア/ソフトウェアインタフェースシステムの一番内側の層である。   A hardware / software interface system conventionally executes various services for an application. In a multitasking hardware / software interface system in which multiple programs can be executed simultaneously, the hardware / software interface system executes which application in what order, and how much before switching to the next application for each application. Decide what time you should allow. The hardware / software interface system further manages the sharing of internal memory among multiple applications, and further inputs to and outputs from connected hardware devices such as hard disks, printers, and dialup ports. To process. The hardware / software interface system further sends a message regarding the status of the operation and any errors that may have occurred to the respective application (and possibly the end user). The hardware / software interface system may also remove the burden of managing batch jobs (eg, printing) and allow the initiating application to be freed from such work and resume other processing and / or operations. it can. In a computer having a parallel processing function, the hardware / software interface system further manages a shell of the hardware / software interface system that manages that the program is divided and executed on a plurality of processors at once. (Referred to herein simply as a “shell”) is an interactive end-user interface with a hardware / software interface system. (A shell is also called a “command interpreter” or, in the operating system, an “operating system shell.”) A shell is a hardware / software interface system that is directly accessible by application programs and / or end users. Is the outer layer. In contrast to the shell, the kernel is the innermost layer of the hardware / software interface system that interacts directly with the hardware components.

本発明の多数の実施形態は、コンピュータ化システムに特によく適していると考えられるが、本明細書では、本発明をそのような実施形態に限定することを一切意図していない。それどころか、本明細書で使用されているように、「コンピュータシステム」という用語は、情報を格納し処理することができ、および/または格納されている情報を使用してデバイス自体のビヘイビアまたは実行を、そのようなデバイスがその性質上電子デバイスであろうと、機械デバイスであろうと、論理デバイスであろうと、仮想デバイスであろうと、関係なく、制御できることができるありとあらゆるデバイスを包含することが意図されている。   Although many embodiments of the present invention may be particularly well suited for computerized systems, it is not intended herein to limit the invention to such embodiments in any way. Rather, as used herein, the term “computer system” can store and process information and / or use the stored information to perform the behavior or execution of the device itself. It is intended to encompass any and all devices that can be controlled regardless of whether such devices are electronic devices, mechanical devices, logical devices, virtual devices in nature. Yes.

B.従来のファイルベースのストレージ
ほとんどの今日のコンピュータシステムでは、「ファイル」は、ハードウェア/ソフトウェアインタフェースシステムだけでなくアプリケーションプログラム、データセットなどをも含むことができる格納可能な情報のユニットである。現代的なすべてのハードウェア/ソフトウェアインタフェースシステム(Windows(登録商標)、Unix(登録商標)、Linux、Mac OS、仮想マシンシステムなど)では、ファイルは、ハードウェア/ソフトウェアインタフェースシステムにより操作可能な情報(例えば、データ、プログラムなど)の基本的に離散的な(格納可能および取り出し可能な)ユニットである。ファイルのグループは、「フォルダ」単位で一般的には編成される。Microsoft Windows(登録商標)、Macintosh OS、および他のハードウェア/ソフトウェアインタフェースシステムは、フォルダとは、取り出し可能、移動可能、そして単一の情報ユニットとして他の何らかの手段により操作できるファイルのコレクションである。これらのフォルダは、次に、「ディレクトリ」(以下で詳述する)と呼ばれるツリーベースの階層型管理で編成される。DOS、z/OS、およびほとんどのUnix(登録商標)ベースのオペレーティングシステムなど他のいくつかのハードウェア/インタフェースシステムでは、「ディレクトリ」および/または「フォルダ」という用語は交換して使用することができ、また以前のAppleコンピュータシステム(例えば、Apple IIe)ではディレクトリの代わりに「カタログ」という用語を使用していたが、本明細書で使用されているように、これらの用語はすべて、同義語であり交換可能であるとみなし、階層型情報記憶構造およびそのフォルダおよびファイルコンポーネントに対する他のすべての相当する用語および参照を含むことを意図している。
B. Traditional File-Based Storage In most modern computer systems, a “file” is a storable unit of information that can include not only hardware / software interface systems, but also application programs, data sets, and the like. In all modern hardware / software interface systems (Windows (R), Unix (R), Linux, Mac OS, virtual machine systems, etc.), files are information that can be manipulated by the hardware / software interface system A fundamentally discrete (storable and retrievable) unit of data (eg, data, program, etc.). A group of files is generally organized in units of “folders”. Microsoft Windows (R), Macintosh OS, and other hardware / software interface systems, folders are collections of files that can be retrieved, moved, and manipulated by some other means as a single information unit. . These folders are then organized in a tree-based hierarchical management called “directories” (detailed below). In some other hardware / interface systems such as DOS, z / OS, and most Unix-based operating systems, the terms “directory” and / or “folder” may be used interchangeably. Yes, and previous Apple computer systems (eg, Apple IIe) used the term “catalog” instead of directory, but as used herein, all of these terms are synonymous And is intended to include all other equivalent terms and references to the hierarchical information storage structure and its folder and file components.

従来、ディレクトリ(別名、フォルダのディレクタ)は、ツリーベースの階層構造であり、ファイルは複数のフォルダにグループ化され、フォルダは、さらに、ディレクトリツリーを含む相対的ノード位置に応じて配列される。例えば、図2Aに例示されているように、DOSベースのファイルシステムのベースフォルダ(または「ルートディレクトリ」)212は、複数のフォルダ214を含むことができ、それぞれのフォルダは、さらに、追加フォルダ(その特定のフォルダの「サブフォルダ」として)216を含むことができ、それぞれ、さらに、追加フォルダ218を含むことができ、というように無限に続けることができる。これらのフォルダはそれぞれ、1つまたは複数のファイル220を保持できるが、ハードウェア/ソフトウェアインタフェースシステムレベルでは、フォルダ内の個々のファイルは、ツリー階層内のその位置以外共通するものは何も持たない。ファイルをフォルダ階層に編成するこのアプローチは、それらのファイルを格納するために使用される標準的な記憶媒体(例えば、ハードディスク、フロッピー(登録商標)ディスク、CD−ROMなど)の物理的構成を間接的に反映することは驚くことではない。   Conventionally, directories (also known as folder directors) have a tree-based hierarchical structure, files are grouped into a plurality of folders, and the folders are further arranged according to relative node positions including the directory tree. For example, as illustrated in FIG. 2A, a base folder (or “root directory”) 212 of a DOS-based file system may include a plurality of folders 214, each folder further including an additional folder ( 216) (as “subfolders” of that particular folder), each of which can further include an additional folder 218, and so on, and so on. Each of these folders can hold one or more files 220, but at the hardware / software interface system level, individual files within a folder have nothing in common except for their location in the tree hierarchy. . This approach of organizing files into folder hierarchies indirectly involves the physical organization of standard storage media (eg, hard disks, floppy disks, CD-ROMs, etc.) used to store those files. It is not surprising to reflect it.

前記に加えて、それぞれのフォルダは、そのサブフォルダおよびそのファイル用のコンテナである−つまり、それぞれのフォルダはそのサブフォルダおよびファイルを所有するということである。例えば、フォルダがハードウェア/ソフトウェアインタフェースシステムにより削除されると、そのフォルダのサブフォルダおよびファイルも削除される(それぞれのサブフォルダの場合、さらにその所有するサブフォルダおよびファイルを再帰的に含む)。同様に、それぞれのファイルは、一般的に、1つのフォルダのみにより所有され、ファイルはコピーされ、そのコピーは異なるフォルダに配置されることができるが、ファイルのコピーはそれ自体、オリジナルとの直接の関連を持たない異なる、別のユニットである(例えば、オリジナルのファイルに変更を加えても、ハードウェア/ソフトウェアインタフェースシステムレベルではそのコピーファイルに反映されない)。この点に関して、したがって、ファイルおよびフォルダは、本質的に特徴として「物理的」であるが、それは、フォルダは物理的コンテナのように取り扱われ、ファイルはそれらのコンテナ内の離散的な別々の物理的要素として取り扱われるからである。   In addition to the above, each folder is a container for its subfolders and its files--that is, each folder owns its subfolders and files. For example, when a folder is deleted by the hardware / software interface system, the subfolders and files of the folder are also deleted (in the case of each subfolder, its own subfolders and files are recursively included). Similarly, each file is generally owned by only one folder, the file is copied, and the copy can be placed in a different folder, but the copy of the file itself is directly Different units that are not related to each other (eg, changes to the original file are not reflected in the copy file at the hardware / software interface system level). In this regard, therefore, files and folders are “physical” in nature, but folders are treated like physical containers, and files are discrete and separate physical within those containers. This is because it is treated as a specific element.

II.データの編成、検索、および共有のためのWINFSストレージプラットフォーム
本発明は、本明細書の前の方で説明したように参照により組み込まれている関連する発明と組み合わせて、データの編成、検索、および共有のためのストレージプラットフォームを対象とするものである。本発明のストレージプラットフォームは、上述の種類の既存のファイルシステムおよびデータベースシステムを超えてデータストレージの概念を拡張し、広げるものであり、Itemsと呼ばれるデータの新しい形態を含む、すべての型のデータ用のストアとなるように設計されている。
II. WINFS Storage Platform for Organizing, Retrieving, and Sharing Data The present invention is combined with related inventions incorporated by reference as described earlier in this specification to organize, retrieve, and It is intended for storage platforms for sharing. The storage platform of the present invention extends and extends the concept of data storage beyond existing file systems and database systems of the type described above, for all types of data, including a new form of data called Items. Designed to be a store.

A.用語
本明細書で使用されているように、また請求項で使用されているように、以下の用語は以下の意味を持つ。
・ 「Item」は、単純ファイルとは異なり、ハードウェア/ソフトウェアインタフェースシステムシェルによりエンドユーザに対し公開されるすべてのオブジェクトにわたって一般的にサポートされるプロパティの基本集合を持つオブジェクトであるハードウェア/ソフトウェアインタフェースシステムにアクセスできる格納可能情報のユニットである。Itemsは、さらに、新しいプロパティおよび関係を導入することができる機能を含むすべてのItem型にわたって一般的にサポートされるプロパティおよび関係も有する(本明細書な後の方で詳述する)。
・ 「オペレーティングシステム」(OS)は、アプリケーションプログラムとコンピュータハードウェアとの間の媒介として動作する特別なプログラムである。オペレーティングシステムは、ほとんどの場合、シェルおよびカーネルを備える。
・ 「ハードウェア/ソフトウェアインタフェースシステム」は、コンピュータシステム上で実行されるコンピュータシステムおよびアプリケーションの基礎となるハードウェアコンポーネント間のインタフェースとして使用される、ソフトウェア、またはハードウェアとソフトウェアとの組合せである。ハードウェア/ソフトウェアインタフェースシステムは、通常、オペレーティングシステムを備える(いくつかの実施形態では、オペレーティングシステムのみからなる)。ハードウェア/ソフトウェアインタフェースシステムは、さらに、仮想マシンマネージャ(VMM)、共通言語ランタイム(CLR)またはその機能的等価物、Java(登録商標)仮想マシン(JVM)またはその機能的等価物、またはコンピュータシステム内のオペレーティングシステムの代わりとなる、またはそれへの追加となる他のそのようなソフトウェアコンポーネントを含むこともできる。ハードウェア/ソフトウェアインタフェースシステムの目的は、ユーザがアプリケーションプログラムを実行できるような環境を用意することである。ハードウェア/ソフトウェアインタフェースシステムの目標は、コンピュータシステムを使いやすくするだけでなく、コンピュータハードウェアを効率的な方法で利用できるようにすることである。
A. Terms As used herein and in the claims, the following terms have the following meanings.
“Item”, unlike a simple file, is a hardware / software object that has a basic set of properties that are generally supported across all objects exposed to the end user by the hardware / software interface system shell A unit of storable information that can access the interface system. Items also have properties and relationships that are generally supported across all Item types, including the ability to introduce new properties and relationships (detailed later in this document).
An “operating system” (OS) is a special program that acts as an intermediary between application programs and computer hardware. Most operating systems include a shell and a kernel.
A “hardware / software interface system” is software, or a combination of hardware and software, used as an interface between a computer system running on a computer system and the underlying hardware components of an application. A hardware / software interface system typically comprises an operating system (in some embodiments, it consists only of an operating system). The hardware / software interface system further includes a virtual machine manager (VMM), a common language runtime (CLR) or functional equivalent thereof, a Java virtual machine (JVM) or functional equivalent thereof, or a computer system. Other such software components can also be included in place of or in addition to the internal operating system. The purpose of the hardware / software interface system is to prepare an environment in which a user can execute an application program. The goal of a hardware / software interface system is not only to make the computer system easier to use, but also to make the computer hardware available in an efficient manner.

B.ストレージプラットフォームの概要
図3を参照すると、ストレージプラットフォーム300は、データベースエンジン314上に実装されたデータストア302を備える。一実施形態では、データベースエンジンは、オブジェクトリレーショナルの拡張機能を備えるリレーショナルデータベースエンジンを含む。一実施形態では、リレーショナルデータベースエンジン314は、Microsoft SQL Serverリレーショナルデータベースエンジンを含む。データストア302は、データの編成、検索、共有、同期、およびセキュリティをサポートするデータモデル304を実装する。データの特定の型は、スキーマ340などのスキーマで記述され、ストレージプラットフォーム300は、以下で詳しく説明するように、それらのスキーマを展開するとともに、それらのスキーマを拡張するためのツール346を備える。
B. Storage Platform Overview Referring to FIG. 3, the storage platform 300 includes a data store 302 implemented on a database engine 314. In one embodiment, the database engine includes a relational database engine with object-relational extensions. In one embodiment, the relational database engine 314 includes a Microsoft SQL Server relational database engine. The data store 302 implements a data model 304 that supports data organization, retrieval, sharing, synchronization, and security. Certain types of data are described in a schema, such as schema 340, and storage platform 300 includes tools 346 for expanding and extending those schemas, as described in detail below.

データストア302内に実装された変更追跡メカニズム306は、データストアへの変更を追跡する機能を備える。データストア302は、さらに、セキュリティ機能308および格上げ/格下げ機能310も備え、両方とも以下で詳述する。データストア302は、さらに、一組のアプリケーションプログラミングインタフェース312を備え、データストア302の機能を他のストレージプラットフォームコンポーネントおよびそのストレージプラットフォームを利用するアプリケーションプログラム(例えば、アプリケーションプログラム350a、350b、および350c)に公開する。本発明のストレージプラットフォームは、さらに、アプリケーションプログラム350a、350b、および350cなどのアプリケーションプログラムでストレージプラットフォームの前記の機能すべてにアクセスし、スキーマで記述されたデータにアクセスできるようにするアプリケーションプログラミングインタフェース(API)322を備える。ストレージプラットフォームAPI 322は、アプリケーションプログラムにより、OLE DB API 324およびMicrosoft Windows(登録商標)Win32 API 326などの他のAPIと併用することができる。   A change tracking mechanism 306 implemented within the data store 302 provides the ability to track changes to the data store. The data store 302 further includes a security function 308 and an upgrade / demotion function 310, both described in detail below. The data store 302 further includes a set of application programming interfaces 312 to transfer the functions of the data store 302 to other storage platform components and application programs that utilize the storage platform (eg, application programs 350a, 350b, and 350c). Publish. The storage platform of the present invention further provides an application programming interface (API) that allows application programs such as application programs 350a, 350b, and 350c to access all of the aforementioned functions of the storage platform and access data described in the schema. 322. The storage platform API 322 can be used in combination with other APIs such as OLE DB API 324 and Microsoft Windows (registered trademark) Win32 API 326, depending on the application program.

本発明のストレージプラットフォーム300は、ユーザまたはシステム間でのデータの共有を円滑にする同期処理サービス330を含む、様々なサービス328をアプリケーションプログラムに提供することができる。例えば、同期処理サービス330では、データストア302と同じ形式を持つ他のデータストアとの相互運用性とともに、他の形式を持つデータストア342へのアクセスをも可能にすることができる。ストレージプラットフォーム300は、さらに、データストア302とWindows(登録商標)NTFSファイルシステム318などの既存のファイルシステムとの相互運用を可能にするファイルシステムの機能をも備える。少なくとも一部の実施形態では、ストレージプラットフォーム320は、さらに、データへの操作を可能にし、また他のシステムとのやり取りを可能にするための追加機能をアプリケーションプログラミングに付加することもできる。これらの機能は、Info Agentサービス334および通知サービス332などの追加サービス328の形態だけでなく、他のユーティリティ336の形態で具現化することができる。   The storage platform 300 of the present invention can provide various services 328 to application programs, including a synchronization processing service 330 that facilitates sharing of data between users or systems. For example, the synchronization processing service 330 may allow interoperability with other data stores having the same format as the data store 302 as well as access to data stores 342 having other formats. The storage platform 300 further includes a file system function that enables interoperation between the data store 302 and an existing file system such as the Windows (registered trademark) NTFS file system 318. In at least some embodiments, the storage platform 320 may also add additional functionality to the application programming to allow manipulation of data and to interact with other systems. These functions can be implemented not only in the form of an additional service 328 such as the Info Agent service 334 and the notification service 332 but also in the form of other utilities 336.

少なくとも一部の実施形態では、ストレージプラットフォームは、コンピュータシステムのハードウェア/ソフトウェアインタフェースシステム内に具現化されるか、またはそのなくてはならない一部を形成する。例えば、限定はしないが、本発明のストレージプラットフォームは、オペレーティングシステム、仮想マシンマネージャ(VMM)、共通言語ランタイム(CLR)またはその機能的等価物、またはJava(登録商標)仮想マシン(JVM)またはその機能的等価物で具現化されるか、またはそのなくてはならない一部を形成することができる。本発明のストレージプラットフォームでは、共通のストレージ基盤および図式化されたデータを通じて、より効率的なアプリケーション開発を消費者、知識労働者、および企業向けに行うことができる。これは、データモデルに固有の機能を利用可能にするだけでなく、既存のファイルシステムおよびデータベースアクセス方法も包含し、拡張する機能豊富な拡張可能プログラミングサーフェスエリア(programming surface area)を提供する。   In at least some embodiments, the storage platform is embodied in, or forms an integral part of, the hardware / software interface system of the computer system. For example, without limitation, the storage platform of the present invention can be an operating system, a virtual machine manager (VMM), a common language runtime (CLR) or functional equivalent thereof, or a Java virtual machine (JVM) or its It can be embodied in or equivalent to form a functional equivalent. The storage platform of the present invention enables more efficient application development for consumers, knowledge workers, and businesses through a common storage infrastructure and schematized data. This not only makes the functionality specific to the data model available, but also encompasses existing file systems and database access methods and provides a rich and rich programming surface area.

以下の説明では、また様々な図において、本発明のストレージプラットフォーム300は、「WinFS」と呼ぶことができる。しかし、この名称を使用してストレージプラットフォームを指すのは、説明の便宜上のことにすぎず、いかなる点でも限定することを意図されていない。   In the following description and in the various figures, the storage platform 300 of the present invention may be referred to as “WinFS”. However, using this name to refer to the storage platform is for convenience of explanation only and is not intended to be limiting in any way.

C.データモデル
本発明のストレージプラットフォーム300のデータストア302は、ストア内に置かれているデータの編成、検索、共有、同期、およびセキュリティをサポートするデータモデルを実装する。本発明のデータモデルでは、「Item」は、ストレージ情報の基本ニットである。このデータモデルは、以下で詳述するが、ItemsおよびItem拡張を宣言し、Items間の関係を確立し、Item FoldersとCategories内にItemsを編成するためのメカニズムを備える。
C. Data Model The data store 302 of the storage platform 300 of the present invention implements a data model that supports the organization, retrieval, sharing, synchronization, and security of data located within the store. In the data model of the present invention, “Item” is a basic unit of storage information. This data model, described in detail below, provides a mechanism for declaring Items and Item extensions, establishing relationships between Items, and organizing Items within Item Folders and Categories.

データモデルは、TypesとRelationshipsという2つのプリミティブなメカニズムに依存している。Typesは、Typeのインスタンスの形態を制御する形式を定める構造である。その形式は、Propertiesの順序集合として表される。Propertyは、与えられたTypeの値または値の集合に対する名前である。例えば、USPostalAddress型は、プロパティStreet、City、Zip、Stateを持つことができ、その中で、Street、City、Stateは型Stringであり、ZipはType Int32である。Streetプロパティに対し住所は複数の値をとりうるので、Streetは、多値(つまり、値の集合)とすることができる。システムでは、他の型の構成で使用できるいくつかのプリミティブ型を定義している−これらは、String、Binary、Boolean、Int16、Int32、Int64、Single、Double、Byte、DateTime、Decimal、およびGUIDを含む。TypeのPropertiesは、プリミティブ型のどれかまたは(下記のいくつかの制約があるが)構成された型のどれかを使用して定義することができる。例えば、Properties CoordinateとAddressを持つLocation Typeが定義されうるが、Address Propertyは上述のようにType USPostalAddressである。Propertiesは、さらに、必須またはオプションとすることもできる。   The data model relies on two primitive mechanisms: Types and Relationships. Types is a structure that defines a form that controls the form of an instance of Type. The format is represented as an ordered set of Properties. Property is a name for a given Type value or set of values. For example, the USPostAddress type can have properties Street, City, Zip, and State, where Street, City, and State are types String, and Zip is Type Int32. Since the address can have a plurality of values for the Street property, the Street can be multi-valued (that is, a set of values). The system defines several primitive types that can be used in other types of configurations-these include String, Binary, Boolean, Int16, Int32, Int64, Single, Double, Byte, DateTime, Decimal, and GUID. Including. Type Properties can be defined using any of the primitive types or any of the constructed types (although there are some constraints below). For example, a Location Type having Properties Coordinate and Address can be defined, but the Address Property is Type USPostAddress as described above. Properties can also be required or optional.

Relationshipsは、2つの型のインスタンスの集合同士の間のマッピングとして宣言され、それを表すことができる。例えば、Person Typeとどの人々がどの場所に住んでいるかを定義するLivesAtと呼ばれるLocation Typeとの間のRelationshipを宣言することができる。Relationshipは、1つの名前、2つの終点、つまり、ソース終点とターゲット終点を持つ。Relationshipsは、さらに、プロパティの順序集合を持つこともできる。SourceとTargetの終点は両方ともNameとTypeを持つ。例えば、LivesAt RelationshipはType PersonのOccupant と呼ばれるSourceおよびType LocationのDwellingと呼ばれるTargetを持ち、さらに、居住者がその住居に住んでいた期間を示すプロパティStartDateおよびEndDateを持つ。Personは、長い期間にわたっては、複数の住居に住んでいる場合があり、また住居には複数の住人がいる場合もあり、したがってStartDateおよびEndDate情報を入れる場所として最も可能性の高いのは関係自体であることに注意されたい。   Relationships are declared and can represent a mapping between a set of instances of two types. For example, a Relationship between a Person Type and a Location Type called LivesAt that defines which people live in which place can be declared. A Relationship has one name, two endpoints, a source endpoint and a target endpoint. Relationships can also have an ordered set of properties. Both the Source and Target endpoints have Name and Type. For example, Lives At Relationship has a Source called Occupant of Type Person and a Target called Dwelling of Type Location, and also has properties StartDate and EndDate that indicate how long the resident has lived in the residence. Person may have lived in multiple residences over a long period of time, and there may be multiple inhabitants in the residence, so the relationship itself is most likely to contain StartDate and EndDate information. Please note that.

Relationshipsは、終点の型として与えられた型により制約されるインスタンス間のマッピングを定義する。例えば、LivesAt関係は、AutomobileがOccupantである関係とはなりえない、というのもAutomobileはPersonではないからである。   Relationships defines a mapping between instances that is constrained by a given type as an endpoint type. For example, the LivesAt relationship cannot be a relationship in which Automobile is an Occupant because Automobile is not a Person.

データモデルでは、型の間の子型−親型関係の定義を許容する。BaseType関係とも呼ばれる子型−親型関係は、Type AがType Bに対しBaseTypeならば、BのすべてのインスタンスはAのインスタンスでもあるという場合でなければならないように定義される。これを表現するもう1つの方法は、Bに適合するすべてのインスタンスがさらにAにも適合しなければならないとするものである。例えば、AがType StringのプロパティNameを持つが、BはType Int16のプロパティAgeを持つ場合、Bのインスタンスはどれも、NameとAgeの両方を持たなければならないという結果になる。型階層は、ルートに単一の親型のあるツリーと考えることができる。ルートからの分岐は、第1レベルの子型を定め、このレベルの分岐は、第2レベルの子型を定め、というように、それ自体子型を持たない一番左の子型へ進む。ツリーは、均一な深さとなるように制約されないが、循環を含むことはできない。与えられたTypeは、0個またはそれ以上の子型と0個または1個の親型を持つことができる。与えられたインスタンスは、その型の親型とともに高々1つの型に適合することができる。別の言い方をすると、ツリー内の任意のレベルで与えられたインスタンスについて、そのインスタンスはそのレベルで高々1つの子型に適合することができる。型は、型のインスタンスがさらに型の子型のインスタンスでもなければならない場合にAbstractいう。   The data model allows the definition of child type-parent type relationships between types. A child-to-parent relationship, also called a BaseType relationship, is defined such that if Type A is a BaseType for Type B, then all instances of B must also be instances of A. Another way of expressing this is that every instance that matches B must also match A. For example, if A has the Type Name property Name, but B has the Type Int16 property Age, then all instances of B must have both Name and Age. A type hierarchy can be thought of as a tree with a single parent type at the root. A branch from the root defines a first-level child type, a branch at this level defines a second-level child type, and so on, and so on to the leftmost child type that does not have a child type in itself. The tree is not constrained to have a uniform depth, but cannot contain cycles. A given Type can have zero or more child types and zero or one parent type. A given instance can match at most one type with its type's parent type. In other words, for an instance given at any level in the tree, that instance can fit at most one child type at that level. A type is called Abstract if an instance of the type must also be an instance of a child type of the type.

1.Items
Itemは、単純ファイルとは異なり、ストレージプラットフォームによりエンドユーザまたはアプリケーションプログラムに対し公開されるすべてのオブジェクトにわたって一般的にサポートされるプロパティの基本集合を持つオブジェクトである格納可能情報のユニットである。Itemsは、さらに、以下で説明するように、新しいプロパティおよび関係を導入することができる機能を含むすべてのItem型にわたって一般的にサポートされるプロパティおよび関係も有する。
1. Items
An Item, unlike a simple file, is a unit of storable information that is an object with a basic set of properties that are generally supported across all objects exposed to end users or application programs by the storage platform. Items also have properties and relationships that are generally supported across all Item types, including the ability to introduce new properties and relationships, as described below.

Itemsは、コピー、削除、移動、開く、印刷、バックアップ、リストア、複製などの共通オペレーション用のオブジェクトである。Itemsは、格納し、取り出すことのできるユニットであり、ストレージプラットフォームにより操作される格納可能情報のすべての形態が、Items、Itemsのプロパティ、またはItems間のRelationshipsとして存在し、それぞれについては以下で説明される。   Items are objects for common operations such as copy, delete, move, open, print, backup, restore, and copy. Items are units that can be stored and retrieved, and all forms of storable information manipulated by the storage platform exist as Items, Items properties, or Relationships between Items, each of which is described below. Is done.

Itemsは、Contacts、People、Services、Locations、Document(あらゆる種類の)などの現実世界の容易に理解できるデータのユニットを表すことを意図されている。図5Aは、Itemの構造を例示するブロック図である。Itemの未修飾の名前は「Location」である。Itemの修飾名は「Core.Location」であり、これは、このItem構造がCore Schema内のItemの特定の型として定義されることを示している。(Core Schemaは、本明細書の後の方で詳しく説明される。)
Location Itemは、EAddresses、MetropolitanRegion、Neighborhood、およびPostalAddressesを含む複数のプロパティを持つ。それぞれに対するプロパティの特定の型は、プロパティ名の直後に示され、コロン(「:」)でプロパティ名と区切られる。型名の右には、そのプロパティ型について許された値の個数があり、これは角括弧(「[ ]」)の間に示され、コロン(「:」)の右にあるアスタリスク(「」)は、未指定および/または無制限の数(「many」)を示す。コロンの右にある「1」は、高々1つの値がありえることを示す。コロンの左にあるゼロ(「0」)はプロパティがオプションであることを示す(値がまったくあり得ない)。コロンの左にある「1」は、少なくとも1つの値がなければならないことを示す(プロパティは必須である)。NeighborhoodおよびMetropolitanRegionは、両方とも、定義済みのデータ型または「単純型」(また、本明細書では大文字使用でないことにより表される)である、型「nvarchar」(または同等の型)である。しかし、EAddressesおよびPostalAddressesは、それぞれ型EAddressおよびPostalAddressの定義済み型または「複合型」(本明細書では大文字使用で表される)のプロパティである。複合型は、1つまたは複数の単純データ型および/または他の複合型から派生した型である。Itemのプロパティに対する複合型は、さらに、複合型の詳細はそのプロパティを定義するためにイミディエイトItem内にネストされるため「ネストされた要素」も構成し、それらの複合型に関係する情報は、(本明細書な後の方で説明するように、Itemの境界内の)それらのプロパティを持つItemとともに保持される。型付けのこれらの概念は、よく知られており、当業者であれば容易に理解することである。
Items are intended to represent units of data that are easily understood in the real world, such as Contacts, People, Services, Locations, Documents (any kind). FIG. 5A is a block diagram illustrating the structure of an Item. The unqualified name of Item is “Location”. The qualified name of Item is “Core.Location”, which indicates that this Item structure is defined as a specific type of Item in Core Schema. (The Core Schema is described in detail later in this document.)
The Location Item has multiple properties including EAddresses, MetropolitanRegion, Neighborhood, and PostalAddresses. The specific type of property for each is shown immediately after the property name and separated from the property name by a colon (":"). To the right of the type name is the number of values allowed for that property type, which is shown between square brackets ("[]") and is placed to the right of the colon (":") with an asterisk (" * ") Indicates an unspecified and / or unlimited number (" many "). A “1” to the right of the colon indicates that there can be at most one value. A zero ("0") to the left of the colon indicates that the property is optional (no value is possible). A “1” to the left of the colon indicates that there must be at least one value (the property is mandatory). Neighborhood and MetropolitanRegion are both the type “nvarchar” (or equivalent type), which is a predefined data type or “simple type” (also represented by not capitalization herein). However, EAddresses and PostAddresses are properties of predefined types or “composite types” (represented herein in capital letters) of types EAddress and PostAddress, respectively. A complex type is a type derived from one or more simple data types and / or other complex types. Complex types for Item properties also constitute “nested elements” because the details of the complex type are nested within the Immediate Item to define the property, and the information related to those complex types is: Retained with Items with those properties (within the boundaries of the Item, as described later in this specification). These concepts of typing are well known and readily understood by those skilled in the art.

図5Bは、複合プロパティ型PostalAddressおよびEAddressを例示するブロック図である。PostalAddressプロパティ型は、プロパティ型PostalAddressのItemが0または1つのCity値、0または1つのCountryCode値、0または1つのMailStop値、および任意の数(0から多数)のPostalAddressTypesなどを持つことを予想できるものとして定義する。このようにして、Item内の特定のプロパティに対するデータの形状がこれにより定義される。EAddressプロパティ型も、同様に、示されているとおりに定義される。このApplicationでオプションにより使用されるが、Location Item内の複合型を表すもう1つの方法は、Itemをそこにリストされている複合型の個々のプロパティで描画することである。図5Cは、複合型がさらに記述されるLocation Itemを例示するブロック図である。しかし、この図5C内のLocation Itemのこの代替え表現は図5Aに例示されているのとまったく同じItemに対するものであると理解すべきである。本発明のストレージプラットフォームでは、さらに、サブタイプ化も可能であり、それによって、一方のプロパティ型を他方の子型とすることができる(ただし、一方のプロパティ型は他方の親のプロパティ型のプロパティを継承する)。   FIG. 5B is a block diagram illustrating the composite property types PostAddress and EAddress. The PostalAddress property type can be expected to have an Item of property type PostAddress having 0 or 1 City value, 0 or 1 CountryCode value, 0 or 1 MailStop value, and any number (0 to many) of PostalAddressTypes, etc. Define as a thing. In this way, the shape of the data for a particular property in the Item is thereby defined. The EAddress property type is similarly defined as shown. Although used optionally in this Application, another way to represent a complex type in a Location Item is to render the Item with the individual properties of the complex type listed there. FIG. 5C is a block diagram illustrating a Location Item in which the composite type is further described. However, it should be understood that this alternative representation of Location Item in FIG. 5C is for the exact same Item illustrated in FIG. 5A. The storage platform of the present invention can also be subtyped so that one property type can be a child type of the other (where one property type is a property of the other parent property type). Is inherited).

プロパティおよびそのプロパティ型と似てはいるが異なる、Itemsは、本質的に、サブタイプ化の対象ともなりうる自Item Typesを表す。つまり、本発明のいくつかの実施形態におけるストレージプラットフォームでは、Itemを他のItemの子型とすることができるということである(それによって、一方のItemは他方の親Itemのプロパティを継承する)。さらに、本発明の様々な実施形態について、すべてのItemはBase Schemaに見られる第1の、基礎的なItem型である「Item」Item型の子型である。(Base Schemaは、さらに、本明細書の後の方で詳しく説明される。)図6Aは、Item、つまりこのInstanceのLocation ItemをBase SchemaにあるItem Item型の子型であるとして例示している。この図面では、矢印は、Location Item(他のすべてのItemsのように)はItem Item型の子型であることを示している。Item Item型は、他のすべてのItemsの派生元である基礎のItemとして、ItemIdおよび様々なタイムスタンプなどの重要なプロパティを多数持ち、それによって、オペレーティングシステムにおいて、すべてのItemsの標準プロパティを定義する。この図では、Item Item型のこれらのプロパティは、Locationにより継承され、それによって、Locationのプロパティになる。   Items, similar to but different from properties and their property types, essentially represent self-Item Types that can also be subtyped. That is, in the storage platform in some embodiments of the present invention, an Item can be a child of another Item (so that one Item inherits the properties of the other parent Item). . Further, for the various embodiments of the present invention, all Items are children of the “Item” Item type, which is the first basic Item type found in the Base Schema. (The Base Schema is further described in detail later in this specification.) FIG. 6A illustrates the Item, that is, the Location Item of this Instance as a child of the Item Item type in the Base Schema. Yes. In this figure, the arrows indicate that Location Items (like all other Items) are child types of Item Item type. The Item Item type has many important properties such as ItemId and various timestamps as the underlying Item from which all other Items are derived, thereby defining the standard properties for all Items in the operating system. To do. In this figure, these properties of type Item Item are inherited by Location and thereby become Location properties.

Item Item型から継承されたLocation Itemでプロパティを表す他の方法は、そこにリストされている親Itemから各プロパティ型の個々のプロパティでLocationを描画することである。図6Bは、イミディエイトプロパティに加えて継承型が記述されるLocation Itemを例示するブロック図である。このItemは図5Aに例示されているのと同じItemであるが、この図では、Locationはそのプロパティのすべてとともに例示されており、両方ともイミディエイトであり−この図と図5Aの両方に示されている−継承される−この図に示されているが、図5Aには示されていない−ことに注意し、理解されたい(しかし、図5Aでは、LocationがItem Item型の子型であることを矢印で示すことによりそれらのプロパティが参照されている)。   Another way to represent a property in a Location Item inherited from the Item Item type is to draw the Location with the individual properties of each property type from the parent Item listed there. FIG. 6B is a block diagram illustrating a Location Item in which an inheritance type is described in addition to an immediate property. This Item is the same Item illustrated in FIG. 5A, but in this figure, Location is illustrated with all of its properties, both are immediate—shown in both this figure and FIG. 5A. Note that it is inherited--shown in this figure, but not shown in FIG. 5A--but in FIG. 5A, Location is a child type of Item Item type. (These properties are referenced by showing them with arrows.)

Itemsは、スタンドアロンのオブジェクトであり、そのため、Itemを削除すると、それらのItemのイミディエイトおよび継承プロパティもすべて削除される。同様に、Itemを取り出した場合に受け取る内容は、Itemおよびそのイミディエイトおよび継承プロパティのすべて(複合プロパティ型に関係する情報を含む)である。本発明のいくつかの実施形態では、特定のItemを取り出す際にプロパティの部分集合を要求することが可能であるが、そのような実施形態の多くの既定として、取り出したときにイミディエイトおよび継承プロパティのすべてをItemに供給する。さらに、Itemsのプロパティは、新しいプロパティをそのItemの型の既存のプロパティに追加することにより拡張することもできる。これらの「拡張」は、これ以降、Itemの本物のプロパティであり、そのItem型の子型は、自動的に、拡張プロパティを含むことができる。   Items are stand-alone objects, so deleting an Item deletes all its immediate and inherited properties. Similarly, what is received when an Item is retrieved is the Item and all of its immediate and inherited properties (including information related to complex property types). In some embodiments of the invention, it is possible to request a subset of properties when retrieving a particular Item, but as a default for many such embodiments, immediate and inherited properties when retrieved All of the above are supplied to Item. In addition, Items properties can be extended by adding new properties to existing properties of the Item type. These “extensions” are hereafter the real properties of the Item, and its Item child types can automatically include extended properties.

Itemの「境界」は、そのプロパティ(複合プロパティ型、拡張などを含む)により表される。Itemの境界は、さらに、コピー、削除、移動、作成などのItemに対し実行されるオペレーションの限界も表す。例えば、本発明のいくつかの実施形態では、Itemがコピーされる場合、そのItemの境界内にあるものもすべてコピーされる。Item毎に、境界は以下を包含する。
・ ItemのItem TypeおよびItemが他のItemの子型の場合(すべてのItemsがBase Schema内の単一ItemおよびItem Typeから派生する本発明のいくつかの実施形態の場合のように)は、任意の適用可能な子型情報(つまり、親Item Typeに関係する情報)。コピー元のオリジナルのItemが他のItemの子型の場合、そのコピーも、その同じItemの子型ともなりうる。
・ もしあればItemの複合型および拡張。オリジナルのItemが複合型のプロパティ(ネイティブまたは拡張)を持つ場合、そのコピーも同じ複合型を持ちうる。
・ 「所有関係」に関するItemのレコード、つまり、このItem(「Owning Item」)によって所有される他のItem(「Target Items」)のItemの自リスト。これは、特に、以下で詳しく説明する、Item Foldersに関して特に適切であり、規則では、すべてのItemは少なくとも1つのItem Folderに属していなければならないことを以下で規定している。さらに、埋め込まれているアイテム−以下でさらに詳しく説明する−に関しては、埋め込みアイテムは、コピー、削除などのオペレーションに対して埋め込まれているItemの一部と考えられる。
The “boundary” of an Item is represented by its properties (including complex property types, extensions, etc.). Item boundaries also represent the limits of operations performed on Items such as copy, delete, move, and create. For example, in some embodiments of the present invention, when an Item is copied, everything within that Item's boundary is also copied. For each Item, the boundary includes:
If the Item Type and Item of the Item are child types of other Items (as in some embodiments of the invention where all Items are derived from a single Item and Item Type in the Base Schema), Any applicable child type information (ie, information related to the parent Item Type). If the original Item of the copy source is a child type of another Item, the copy can also be a child type of the same Item.
• Item complex types and extensions, if any. If the original Item has a complex type property (native or extended), its copy can also have the same complex type.
Item records relating to “ownership”, that is, the own list of Items of other Items (“Target Items”) owned by this Item (“Owning Items”). This is particularly relevant with respect to Item Folders, which will be described in detail below, and the rules provide that all Items must belong to at least one Item Folder. Further, with respect to embedded items—as described in more detail below—embedded items are considered part of an item that is embedded for operations such as copy, delete, etc.

2.Itemの識別
Itemsは、ItemIDを持つ大域的アイテム空間(global items space)内で一意に識別される。Base.Item型は、ItemのIDを格納する型GUIDのフィールドを定義する。Itemは、データストア302内にちょうど1つのIDがなければならない。
2. Item Identification Items are uniquely identified within a global items space with ItemID. Base. The Item type defines a field of type GUID that stores an Item ID. An Item must have exactly one ID in the data store 302.

アイテム参照は、Itemを特定し、識別するための情報を格納するデータ構造体である。データモデルでは、抽象型は、すべてのアイテム参照型の派生元のItemReferenceという名前を持つものとして定義される。ItemReference型は、Resolveという名前の仮想メソッドを定義する。Resolveメソッドは、ItemReferenceを解決して、Itemを返す。このメソッドは、参照が与えられているItemを取り出す関数を実装するItemReferenceの具体的な子型によりオーバーライドされる。Resolveメソッドは、ストレージプラットフォームAPI 322の一部として呼び出される。   An item reference is a data structure that stores information for identifying and identifying an Item. In the data model, an abstract type is defined as having the name ItemReference from which all item reference types are derived. The ItemReference type defines a virtual method named Resolve. The Resolve method resolves ItemReference and returns Item. This method is overridden by a concrete child type of ItemReference that implements a function that retrieves the Item being referenced. The Resolve method is invoked as part of the storage platform API 322.

ItemIDReferenceはItemReferenceの子型である。これは、LocatorおよびItemIDフィールドを定義する。Locatorフィールドではアイテム領域に名前を付ける(つまり、識別する)。これは、Locatorの値をアイテム領域に解決できるロケータ解決メソッドにより処理される。ItemIDフィールドは型ItemIDである。   ItemIDReference is a child type of ItemReference. This defines the Locator and ItemID fields. In the Locator field, the item area is named (that is, identified). This is handled by a locator resolution method that can resolve the value of the Locator into an item area. The ItemID field is a type ItemID.

ItemPathReferenceは、LocatorおよびPathフィールドを定義するItemReferenceの特殊化である。Locatorフィールドは、アイテム領域を識別する。これは、Locatorの値をアイテム領域に解決できるロケータ解決メソッドにより処理される。Pathフィールドは、Locatorにより与えられるアイテム領域をルートとするストレージプラットフォーム名前空間内の(相対)パスを含む。   ItemPathReference is a specialization of ItemReference that defines Locator and Path fields. The Locator field identifies the item area. This is handled by a locator resolution method that can resolve the value of the Locator into an item area. The Path field contains a (relative) path in the storage platform namespace rooted at the item area given by the Locator.

この型の参照は、setオペレーションで使用することはできない。参照は、一般に、パス解決プロセスを通じて解決されなければならない。ストレージプラットフォームAPI 322のResolveメソッドは、この機能を備える。   This type of reference cannot be used in a set operation. References must generally be resolved through a path resolution process. The Resolve method of the storage platform API 322 has this function.

上述の参照形態は、図11に例示されている参照型階層を通じて表される。これらの型から継承する追加参照型は、スキーマで定義することができる。それらは、ターゲットフィールドの型として関係宣言の中で使用することができる。   The above reference form is represented through the reference type hierarchy illustrated in FIG. Additional reference types that inherit from these types can be defined in the schema. They can be used in relationship declarations as target field types.

3.Item FoldersおよびCategories
以下で詳しく説明するが、Itemsのグループは、Item Folders(ファイルフォルダと混同すべきでない)と呼ばれる特別なItemsに編成されることができる。しかし、ほとんどのファイルシステムとは異なり、Itemは、複数のItem Folderに属すことができ、そのため、Itemが一方のItem Folderでアクセスされ改訂された場合、この改訂されたItemは、他方のItemフォルダから直接アクセスすることができる。本質的に、Itemへのアクセスは異なるItem Foldersから発生しうるが、実際にアクセスされる内容は、事実、まったく同じItemである。しかし、Item Folderは、必ずしも、そのメンバItemsのすべてを所有するわけではなく、または単に、他のフォルダとともにItemsを共同所有することができ、Item Folderを削除しても、その結果Itemの削除も必ずしも行われるわけではない。しかしながら、本発明のいくつかの実施形態では、Itemは、少なくとも1つのItem Folderに属していなければならず、したがって、特定のItemに対する単独のItem Folderが削除されると、ある実施形態では、Itemは自動的に削除されるか、または他の実施形態では、Itemは自動的に、既定のItem Folder(例えば、様々なファイル−フォルダベースのシステムで使用される類似名フォルダと概念上類似の「Trash Can」Item Folder)のメンバとなる。
3. Item Folders and Categories
As will be described in detail below, a group of Items can be organized into special Items called Item Folders (not to be confused with file folders). However, unlike most file systems, an Item can belong to multiple Item Folders, so if an Item is accessed and revised in one Item Folder, this revised Item will be in the other Item folder. Can be accessed directly from. In essence, access to an Item can originate from different Item Folders, but what is actually accessed is in fact the exact same Item. However, Item Folder does not necessarily own all of its member Items, or can simply co-own Items with other folders, and deleting Item Folder will result in the deletion of Item as well. Not necessarily done. However, in some embodiments of the present invention, an Item must belong to at least one Item Folder, and thus when an individual Item Folder for a particular Item is deleted, in one embodiment, the Item Is automatically deleted, or in other embodiments, the Item is automatically deleted by default Item Folder (eg, a “similar name folder” with a similar name folder used in various file-folder based systems). Member of “Trash Can” Item Folder).

また以下で詳述するが、Itemsは、さらに、(a)Item Type(またはTypes)、(b)特定のイミディエイトまたは継承プロパティ(または複数のプロパティ)、または(c)Itemプロパティに対応する特定の値(または複数の値)などの共通の記述されている特性に基づいてCategoriesに属している場合がある。例えば、個人連絡情報の特定のプロパティを含むItemは、自動的にContact Categoryに属すことがあり、そうすれば連絡先情報プロパティを含むItemも同様に、自動的にこのCategoryに属するのである。同様に、値「New York City」を持つ場所プロパティが設定されているItemであれば、自動的にNewYorkCity Categoryに属すことが可能である。   Also, as will be described in detail below, Items may further be defined as: (a) Item Type (or Types), (b) a specific immediate or inherited property (or properties), or (c) a specific Item property It may belong to Categories based on common described characteristics such as value (or values). For example, an Item containing a specific property of personal contact information may automatically belong to the Contact Category, and then an Item containing contact information property will automatically belong to this Category as well. Similarly, an Item in which a location property having a value “New York City” is set can automatically belong to the New York City Category.

Categoriesは、Item Foldersは相互関連性のない(つまり、共通の記述された特性なしの)Itemsを含むことができるが、CategoryのItemは、そのCategoryについて記述された共通の型、プロパティ、または値(「共通性」)を持ち、Category内の他のItems同士の間の関係の基礎をなすのがこの共通性であるという点で、Item Foldersと概念上異なる。さらに、Itemの特定のFolderへの帰属関係はそのItemの特定の態様に基づいて強制的ではないが、いくつかの実施形態では、共通性がカテゴリについてCategoryに関係しているすべてのItemsは、ハードウェア/ソフトウェアインタフェースシステムレベルでCategoryのメンバに自動的になることが可能である。概念上、Categoriesは、帰属関係が特定のクエリの結果に基づく(データベースを背景とした場合のように)仮想Item Foldersと考えることもでき、また(Categoryの共通性により定義された)このクエリの条件を満たすItemsはCategoryの帰属関係を含むであろう。   A Category can contain Items that are not related to each other (ie, no common described properties), but a Category Item can be a common type, property, or value described for that Category. It is conceptually different from Item Folders in that this commonality has ("commonality") and forms the basis for relationships between other Items in the Category. Further, although an Item's membership to a particular Folder is not mandatory based on that Item's particular aspect, in some embodiments, all Items whose commonality is related to Category for a category are: It is possible to become a Category member automatically at the hardware / software interface system level. Conceptually, Categories can be thought of as virtual Item Folders (as defined in the background of the database) whose attribution is based on the results of a particular query, and can also be defined in this query (defined by Category commonality). An Item that satisfies the condition will include a Category membership.

図4は、Items、Item Folders、およびCategories間の構造的関係を例示する。複数のItems 402、404、406、408、410、412、414、416、418、および420は、様々なItem Folders 422、424、426、428、および430のメンバである。複数のItem Folderに属すItemsもあり、例えば、Item 402はItem Folders 422および424に属している。いくつかのItems、例えば、Item 402、404、406、408、410、および412は、1つまたは複数のCategories 432、434、および436のメンバでもあるが、別のときには、例えば、Items 414、416、418、および420はどのCategoriesにも属しえない(ただし、これはプロパティの所有が自動的にCategoryへの帰属を意味するいくつかの実施形態ではほとんどありえず、Itemは、そのような実施形態におけるカテゴリのメンバとならないためには完全に無特徴でなければならないであろう)。フォルダの階層構造と対照的に、CategoriesとItem Foldersは両方とも、図に示されているように有向グラフにより類似している。いずれにせよ、Items、Item Folders、およびCategoriesは、すべてItemsである(異なるItem Typesであるにもかかわらず)。   FIG. 4 illustrates the structural relationship between Items, Item Folders, and Categories. A plurality of Items 402, 404, 406, 408, 410, 412, 414, 416, 418, and 420 are members of various Item Folders 422, 424, 426, 428, and 430. There are also Items belonging to multiple Item Folders, for example Item 402 belongs to Item Folders 422 and 424. Some Items, eg, Items 402, 404, 406, 408, 410, and 412 are also members of one or more Categories 432, 434, and 436, but at other times, for example, Items 414, 416 418 and 420 cannot belong to any Category (but this is rarely possible in some embodiments where property ownership automatically implies attribution to Category, and Item In order not to be a member of a category in, it would have to be completely featureless). In contrast to the folder hierarchy, both Categories and Item Folders are more similar to directed graphs as shown in the figure. In any case, Items, Item Folders, and Categories are all Items (although they are different Item Types).

ファイル、フォルダ、およびディレクトリとは対照的に、本発明のItems、Item Folders、およびCategoriesについては、物理的コンテナに相当する概念がなく、したがって、Itemsはそのような複数の場所に存在する可能性があるため、本質的に「物理的」という特徴を持たない。Itemsが複数のItem Folderロケーション存在できることとともに、Categoriesに編成されることにより、当業で現在利用できるレベルを超える、ハードウェア/ソフトウェアインタフェースレベルで、データ操作およびストレージ構造の機能が高められ、豊富になっている。   In contrast to files, folders, and directories, Items, Items Folders, and Categories of the present invention have no concept equivalent to physical containers, and thus Items may exist in such multiple locations. Therefore, it has essentially no “physical” characteristics. Along with the ability for Items to exist in multiple Item Folder locations and organized into Categories, the capabilities of data manipulation and storage structures are enhanced and enriched at the hardware / software interface level beyond the level currently available in the art. It has become.

4.Schemas
a)Base Schema
Itemsの作成および使用に普遍的基盤を用意するため、本発明のストレージプラットフォームの様々な実施形態は、Itemsおよびプロパティの作成および編成に使用する概念フレームワークを確立するBase Schemaを備える。Base Schemaは、Itemsおよびプロパティのいくつかの特殊な型、および子型をさらに派生することができる派生元のこれらの特別な基礎型の特徴を定義する。このBase Schemaを使用することにより、プログラマは、Items(およびそれぞれの型)をプロパティ(およびそれぞれの型)から概念的に区別することができる。さらに、Base Schemaでは、すべてのItems(およびその対応するItem Types)がBase Schema内のこの基礎的Item(およびその対応するItem Type)から派生するときにすべてのItemsが所有することができるプロパティの基礎的集合を規定する。
4). Schema
a) Base Schema
In order to provide a universal foundation for the creation and use of Items, various embodiments of the storage platform of the present invention comprise Base Schema that establishes a conceptual framework for use in creating and organizing Items and properties. Base Schema defines some special types of Items and properties, and the characteristics of these special base types from which child types can be further derived. By using this Base Schema, programmers can conceptually distinguish Items (and their respective types) from properties (and their respective types). Furthermore, in Base Schema, the properties that all Items can possess when all Items (and their corresponding Item Types) are derived from this underlying Item (and its corresponding Item Type) in Base Schema. Define the basic set.

図7に例示されているように、また本発明にいくつかの実施形態に関して、Base Schemaは、Item、Extension、およびPropertyBaseという3つの最上位タイプを定義する。図に示されているように、Item型は、この基礎的な「Item」Item型のプロパティにより定義される。対照的に、最上位レベルのプロパティ型「PropertyBase」は、定義済みプロパティを持たず、他のすべてのプロパティ型の派生元となる、すべての派生プロパティ型が相互に関係付けられる際の単なるアンカーにすぎない(単一のプロパティ型からふつうは派生する)。Extension型プロパティは、Itemが複数の拡張を持つ可能性があるときに、拡張でどのItemが拡張されるかを定義するとともに、一方の拡張を他方の拡張から区別するための識別をも定義する。   As illustrated in FIG. 7, and for some embodiments of the present invention, Base Schema defines three top-level types: Item, Extension, and PropertyBase. As shown, the Item type is defined by the properties of this basic “Item” Item type. In contrast, the top-level property type “PropertyBase” has no defined properties and is just an anchor when all derived property types are related to each other, from which all other property types are derived. Only (usually derived from a single property type). The Extension type property defines which items are extended by an extension when an Item can have multiple extensions, and also defines an identification to distinguish one extension from the other. .

ItemFolderは、Itemから継承されたプロパティに加えて、メンバ(もしあれば)へのリンクを確立するRelationshipを特徴とする、Item Item型の子型であるが、IdentityKeyとPropertyは両方ともPropertyBaseの子型である。すると、CategoryRefは、IdentityKeyの子型である。   ItemFolder is an Item Item type child that features a Relationship that establishes a link to the member (if any) in addition to the properties inherited from Item, but both IdentityKey and Property are children of PropertyBase. It is a type. Then, CategoryRef is a child type of IdentityKey.

b)Core Schema
本発明の様々な実施形態は、さらに、最上位レベルのItems型構造の概念フレームワークを提供するCore Schemaを含む。図8Aは、Core Schema内のItemを例示するブロック図であり、図8Bは、Core Schema内のプロパティ型を例示するブロック図である。異なる拡張子(.com、.exe、.bat、.sysなど)を持つファイルとファイル−フォルダベースのシステムのそのような他の基準を持つファイルとの区別は、Core Schemaの関数に類似している。Core Schemaが、Itemベースのハードウェア/ソフトウェアインタフェースシステムでは、直接的に(Item型により)または間接的に(Item子型により)、すべてのItemsを、Itemベースのハードウェア/ソフトウェアインタフェースシステムが理解し、所定の予測可能な方法で処理できる1つまたは複数のCore Schema Item型に特徴付ける、コアItem型の集合を定義する。定義済みItem型は、Itemベースのハードウェア/ソフトウェアインタフェースシステム内の最も一般的なItemsを反映し、したがって、一定レベルの効率が、Core Schemaを含む定義済みItem型を認識するItemベースのハードウェア/ソフトウェアインタフェースシステムにより得られる。
b) Core Schema
Various embodiments of the present invention further include Core Schema, which provides a conceptual framework for top-level Items-type structures. FIG. 8A is a block diagram illustrating an Item in the Core Schema, and FIG. 8B is a block diagram illustrating a property type in the Core Schema. The distinction between files with different extensions ( * .com, * .exe, * .bat, * .sys, etc.) and files with such other criteria in file-folder based systems is a function of Core Schema. Is similar. Core Schema is an Item-based hardware / software interface system that understands all Items, either directly (by Item type) or indirectly (by Item child type), by an Item-based hardware / software interface system And define a set of core Item types that characterize one or more Core Schema Item types that can be processed in a predetermined and predictable manner. Predefined Item types reflect the most common Items within an Item-based hardware / software interface system, and thus a certain level of efficiency is Item-based hardware that recognizes pre-defined Item types, including Core Schema. / Obtained by software interface system.

いくつかの実施形態では、Core Schemaは拡張可能でない−つまり、Core Schemaの一部である特定の定義済み派生Item型を除き、追加Item型を直接、Base SchemaのItem型からサブタイプ化することはできない。後のすべてのItem型が必ずCore Schema Item型の子型であるため、Core Schemaへの拡張を禁止することにより(つまり、新しいItemsをCore Schemaに追加することを禁止することにより)、ストレージプラットフォームはCore Schema Item型の使用を指示する。この構造により、コアItem型の定義済み集合を持つ利点も維持しながら、追加Itemを定義する自由度も十分に高められる。   In some embodiments, the Core Schema is not extensible—that is, subtype the additional Item types directly from the Base Schema Item types, except for certain predefined derived Item types that are part of the Core Schema. I can't. Since all subsequent Item types are necessarily child types of the Core Schema Item type, by prohibiting extensions to the Core Schema (ie, prohibiting adding new Items to the Core Schema), the storage platform Indicates the use of the Core Schema Item type. This structure also increases the degree of freedom to define additional Items while maintaining the advantage of having a predefined set of core Item types.

本発明の様々な実施形態について、図8Aを参照すると、Core Schemaによってサポートされている特定のItem型は以下のうちの1つまたは複数を含むことができる。
・ Categories:このItem Type(およびそれから派生した子型)のItemsは、Itemベースのハードウェア/ソフトウェアインタフェースシステムの有効なCategoriesを表す。
・ Commodities:価値ある識別可能なものであるItems。
・ Devices:情報処理機能をサポートする論理構造を備えるItems。
・ Documents:Itemベースのハードウェア/ソフトウェアインタフェースシステムにより解釈されないが、代わりにドキュメント型に対応するアプリケーションプログラムにより解釈されるコンテンツを持つItems。
・ Events:環境内で生じた何らかの出来事を記録するItems。
・ Locations:物理的場所を表すItems(例えば、地理的位置)。
・ Messages:2つ以上のプリンシパルの間の通信のItems(以下に定義する)。
・ Principals:ItemIDだけでなく少なくとも1つの決定的に証明可能なIDを持つItems(例えば、人、組織、グループ、世帯、機関、サービスなどの識別)。
・ Statements:限定はしないが、ポリシー、サブスクリプション、信用などを含む環境に関する特別な情報を持つItems。
For various embodiments of the present invention, and referring to FIG. 8A, certain Item types supported by Core Schema can include one or more of the following.
Category: Items of this Item Type (and child types derived from it) represent valid Categories of the Item-based hardware / software interface system.
• Commodities: Items that are valuable and identifiable.
Devices: Items with a logical structure that supports information processing functions.
Documents: Items with content that is not interpreted by the Item-based hardware / software interface system, but instead is interpreted by an application program that corresponds to the document type.
Events: Items that record any events that occur in the environment.
Locations: Items that represent physical locations (eg, geographical location).
Messages: Items for communication between two or more principals (defined below).
• Principles: Items that have at least one definable ID as well as ItemID (eg, identification of people, organizations, groups, households, institutions, services, etc.).
Statements: Items with special information about the environment, including but not limited to policies, subscriptions, credits, etc.

同様に、図8Bを参照すると、Core Schemaによってサポートされている特定のプロパティ型は以下のうちの1つまたは複数を含むことができる。
・ Certificates(Base Schema内の基礎のPropertyBase型から派生)
・ Principal Identity Keys(Base Schema内のIdentityKey型から派生)
・ Postal Address(Base Schema内のProperty型から派生)
・ Rich Text(Base Schema内のProperty型から派生)
・ EAddress(Base Schema内のProperty型から派生)
・ IdentitySecurityPackage(Base Schema内のRelationship型から派生)
・ RoleOccupancy(Base Schema内のRelationship型から派生)
・ BasicPresence(Base Schema内のRelationship型から派生)
Similarly, referring to FIG. 8B, certain property types supported by Core Schema may include one or more of the following.
Certificates (derived from the underlying PropertyBase type in Base Schema)
・ Principal Identity Keys (derived from IdentityKey type in Base Schema)
-Post Address (derived from Property type in Base Schema)
・ Rich Text (derived from Property type in Base Schema)
・ EAddress (derived from Property type in Base Schema)
・ IdentitySecurityPackage (derived from Relationship type in Base Schema)
-RoleOccupancy (Derived from Relationship type in Base Schema)
-BasicPresence (derived from the Relationship type in Base Schema)

これらのItemsおよびPropertiesは、さらに、図8Aおよび図8Bで述べられているそれぞれのプロパティにより記述される。   These Items and Properties are further described by their respective properties described in FIGS. 8A and 8B.

5.関係
Relationshipsは、一方のItemがソースとして指定され、他方のItemがターゲットとして指定されている2項関係である。ソースItemおよびターゲットItemは、この関係によって関連付けられる。ソースItemは、一般に、関係の存続期間を制御する。つまり、ソースItemが削除される、それらのItem間の関係も削除されるということである。
5). Relationships Relationships are binary relationships in which one Item is specified as a source and the other Item is specified as a target. The source Item and the target Item are related by this relationship. The source Item generally controls the lifetime of the relationship. That is, the source Item is deleted, and the relationship between those Items is also deleted.

Relationshipsは、包含関係Containmentと参照関係Referenceに分類される。包含関係は、ターゲットItemsの存続期間を制御するが、参照関係は、存続機関管理の意味を持たない。図12は、関係が分類される仕方を例示する。   Relationships are classified into an inclusion relationship Containment and a reference relationship Reference. The containment relationship controls the duration of the target Items, but the reference relationship has no meaning for surviving organization management. FIG. 12 illustrates how the relationships are classified.

Containment関係型は、さらに、保持関係Holdingと埋め込み関係Embeddingに分類される。Itemに対するすべての保持関係が削除されると、そのItemも削除される。保持関係は、参照カウントメカニズムを使ってターゲットの存続期間を制御する。埋め込み関係を使用すると、複合Itemsのモデル化が可能になり、これは排他的保持関係と考えることができる。Itemは、1つまたは複数の保持関係のターゲットとすることができるが、Itemは、ちょうど1つの埋め込み関係のターゲットとすることができる。埋め込み関係のターゲットであるItemは、他の保持または埋め込み関係のターゲットとすることはできない。   The Containment relationship type is further classified into a holding relationship Holding and an embedding relationship Embedding. When all retention relationships for an Item are deleted, the Item is also deleted. The retention relationship uses a reference counting mechanism to control the lifetime of the target. Using an embedded relationship allows modeling of complex Items, which can be considered an exclusive holding relationship. An Item can be the target of one or more retention relationships, while an Item can be the target of exactly one embedding relationship. An Item that is an embedding target cannot be another retention or embedding target.

参照関係は、ターゲットItemの存続期間を制御しない。これらは、宙ぶらりんになっていることがある−ターゲットItemが存在しない場合がある。参照関係は、大域的Item名前空間(つまり、リモートデータストアを含む)内のどこかにあるItemsへの参照をモデル化するために使用できる。   The reference relationship does not control the lifetime of the target Item. These may be dangling—the target Item may not exist. Reference relationships can be used to model references to Items anywhere in the global Item namespace (ie, including remote data stores).

Itemをフェッチしても、その関係を自動的にフェッチしない。アプリケーション側で、Itemの関係を明示的に要求しなければならない。さらに、関係を修正しても、ソースまたはターゲットItemは修正されず、同様に、関係を追加しても、ソース/ターゲットItemに影響は及ばない。   When an Item is fetched, the relationship is not automatically fetched. The application must explicitly request Item relationships. Furthermore, modifying the relationship does not modify the source or target Item, and similarly, adding a relationship does not affect the source / target Item.

a)関係の宣言
明示的関係型は、以下の要素により定義される。
・ 関係名は、Name属性で指定される。
・ 関係型として、Holding、Embedding、Referenceのうちの1つ。これは、Type属性で指定される。
・ ソースおよびターゲット終点。それぞれの終点で、参照されているItemの名前および型を指定する。
・ ソース終点フィールドは、一般的に、型ItemID(宣言されない)であり、関係インスタンスと同じデータストア内のItemを参照しなければならない。
・ HoldingおよびEmbedding関係については、ターゲット終点フィールドは、型ItemIDReferenceでなければならず、関係インスタンスと同じストア内のItemを参照しなければならない。Reference関係については、ターゲット終点は任意のItemReference型でよく、他のストレージプラットフォームのデータストア内のItemsを参照することができる。
・ オプションにより、スカラーまたはPropertyBase型の1つまたは複数のフィールドを宣言することができる。これらのフィールドは、関係に関連付けられたデータを格納することができる。
・ 関係インスタンスは、大域的関係テーブルに格納される。
・ すべての関係インスタンスは、組合せ(ソースItemID、関係ID)により一意に識別される。関係IDは、その型に関係なく与えられたItemをソースとするすべての関係について、与えられたソースItemID内で一意である。
a) Declaration of relationship The explicit relationship type is defined by the following elements.
-The relation name is specified by the Name attribute.
-One of Holding, Embedding, Reference as the relation type. This is specified by the Type attribute.
• Source and target endpoints. At each end point, specify the name and type of the referenced Item.
The source endpoint field is typically of type ItemID (not declared) and must refer to an Item in the same data store as the relationship instance.
For a Holding and Embedding relationship, the target endpoint field must be of type ItemIDReference and must reference an Item in the same store as the relationship instance. For the Reference relationship, the target endpoint may be of any ItemReference type and can reference Items in the data store of other storage platforms.
• Optionally, you can declare one or more fields of type scalar or propertybase. These fields can store data associated with the relationship.
• Relationship instances are stored in a global relationship table.
• All relationship instances are uniquely identified by the combination (source ItemID, relationship ID). The relationship ID is unique within a given source ItemID for all relationships sourced from the given Item regardless of its type.

ソースItemは、関係の所有者である。所有者として指定されているItemは関係の存続期間を制御するが、関係自体はそれが関係するItemsとは別である。ストレージプラットフォームAPI 322は、Itemと関連する関係を公開するメカニズムを提供する。   The source Item is the owner of the relationship. The Item designated as the owner controls the lifetime of the relationship, but the relationship itself is separate from the Items to which it is related. The storage platform API 322 provides a mechanism for publishing relationships associated with Items.

関係宣言の一実施例を以下に示す。   An example of a relationship declaration is shown below.

Figure 2007503050
Figure 2007503050

これは、Reference関係の一実施例である。この関係は、ソース参照によって参照された人のItemが存在しない場合には作成されることはできない。さらに、人のItemが削除された場合、人と組織との間の関係インスタンスが削除される。しかし、Organization Itemが削除された場合、関係は削除されず、宙ぶらりんになる。   This is an example of a Reference relationship. This relationship cannot be created if there is no Item of the person referenced by the source reference. Furthermore, when a person's Item is deleted, the relationship instance between the person and the organization is deleted. However, when the Organization Item is deleted, the relationship is not deleted, and it becomes dangling.

b)保持関係
保持関係は、ターゲットItemの参照カウントベースの存続期間管理をモデル化するために使用される。
b) Retention relationship The retention relationship is used to model the reference count-based lifetime management of the target Item.

Itemは、Itemsとの0またはそれ以上の関係に対するソース終点とすることができる。埋め込まれたItemではないItemは、1つまたは複数の保持関係におけるターゲットとすることができる。   Item can be a source endpoint for zero or more relationships with Items. An Item that is not an embedded Item can be a target in one or more retention relationships.

ターゲット終点参照型は、ItemIDReferenceでなければならず、また関係インスタンスと同じストア内のItemを参照しなければならない。   The target endpoint reference type must be ItemIDReference and must reference an Item in the same store as the relationship instance.

保持関係は、ターゲット終点の存続期間管理を強制する。保持関係インスタンスおよびそれがターゲットとしているItemの作成は、原子動作である。同じItemをターゲットとしている追加保持関係インスタンスの作成が可能である。与えられたItemをターゲット終点として持つ最後の保持関係インスタンスが削除されると、ターゲットItemも削除される。   The retention relationship enforces lifetime management of the target endpoint. Creating a retention relationship instance and the Item it is targeting is an atomic operation. It is possible to create an additional holding relationship instance that targets the same Item. When the last holding relationship instance having the given Item as the target end point is deleted, the target Item is also deleted.

関係宣言で指定されている終点Itemの型は、一般的に、関係のインスタンスが作成されるときに強制される。関係が確立された後では、終点Itemsの型は変更できない。   The type of endpoint Item specified in the relationship declaration is generally enforced when the relationship instance is created. After the relationship is established, the type of the endpoint Item cannot be changed.

保持関係は、Item名前空間を形成する際に重要な役割を果たす。これらは、ソースItemに相対的にターゲットItemの名前を定義する「Name」プロパティを含む。この相対名は、与えられたItemから発したすべての保持関係について一意である。ルートItemから始まり与えられたItemに至るこの相対名の順序付けリストは、Itemに対する完全な名前を形成する。   Retention relationships play an important role in forming the Item namespace. These include a “Name” property that defines the name of the target Item relative to the source Item. This relative name is unique for all retention relationships originating from a given Item. This ordered list of relative names starting from the root Item and leading to the given Item forms the complete name for the Item.

保持関係は、非循環有向グラフ(DAG)を形成する。保持関係が作成されると、システムは、サイクルが作成されないことを保証し、したがって、Item名前空間がDAGを必ず形成する。   The holding relationship forms an acyclic directed graph (DAG). When a retention relationship is created, the system ensures that no cycles are created, so the Item namespace always forms a DAG.

保持関係はターゲットItemの存続期間を制御するが、ターゲット終点Itemの動作整合性を制御しない。ターゲットItemは、保持関係を通じてそれを所有するItemから動作に関して独立している。保持関係のソースであるItemに対するCopy、Move、Backup、およびその他のオペレーションは、同じ関係のターゲットであるItemに影響を及ぼさない−例えば、つまり、Folder Itemをバックアップしても、すべてのItemsをフォルダ(FolderMember関係のターゲット)内に自動的にバックアップするわけではない。   The retention relationship controls the duration of the target Item, but does not control the operational consistency of the target endpoint Item. A target Item is independent of operation from the Item that owns it through a holding relationship. Copy, Move, Backup, and other operations on an item that is the source of a retention relationship will not affect the item that is the target of the same relationship-for example, if you back up a Folder Item, all Items will be foldered (FolderMember-related target) is not automatically backed up.

以下は、保持関係の一実施例である。   The following is an example of the retention relationship.

Figure 2007503050
Figure 2007503050

FolderMembers関係は、Folderの概念をItemsのジェネリックコレクションとして使用可能にする。   The FolderMembers relationship enables the concept of Folder to be used as a generic collection of Items.

c)埋め込み関係
埋め込み関係は、ターゲットItemの存続期間の排他的制御という概念をモデル化する。これらは、複合Itemsの概念を有効にする。
c) Embedding relationship The embedding relationship models the concept of exclusive control of the lifetime of the target Item. These validate the concept of complex items.

埋め込み関係インスタンスおよびそれがターゲットとしているItemの作成は、原子動作である。Itemは、0またはそれ以上の埋め込み関係のソースとすることができる。しかし、Itemは、唯一の埋め込み関係のターゲットとすることができる。埋め込み関係のターゲットであるItemは、保持関係のターゲットとすることはできない。   The creation of an embedded relationship instance and the Item it is targeting is an atomic operation. Item can be zero or more embedded source. However, Item can be the only embedding target. An Item that is an embedding target cannot be a retention target.

ターゲット終点参照型は、ItemIDReferenceでなければならず、また関係インスタンスと同じデータストア内のItemを参照しなければならない。   The target endpoint reference type must be ItemIDReference and must reference an Item in the same data store as the relationship instance.

関係宣言で指定されている終点Itemの型は、一般的に、関係のインスタンスが作成されるときに強制される。関係が確立された後では、終点Itemsの型は変更できない。   The type of endpoint Item specified in the relationship declaration is generally enforced when the relationship instance is created. After the relationship is established, the type of the endpoint Item cannot be changed.

埋め込み関係は、ターゲット終点の動作整合性を制御する。例えば、Itemをシリアライズするオペレーションは、そのItemから発するすべての埋め込み関係だけでなくそのターゲットのすべてのシリアライズを含むことができ、Itemをコピーする、そのすべての埋め込まれているItemsもコピーする。   The embedding relationship controls the operation consistency of the target end point. For example, an operation that serializes an Item can include all the serializations of its target as well as all embedding relationships originating from that Item, and also copies all its embedded Items that copy the Item.

以下は、宣言例である。   The following is an example declaration:

Figure 2007503050
Figure 2007503050

d)参照関係
参照関係は、参照するItemの存続期間を制御しない。さらには、参照関係は、ターゲットの存在を保証せず、また関係宣言で指定されたとおりにターゲットの型を保証するわけでもない。これは、参照関係が宙ぶらりんになる可能性のあることを意味している。また、参照関係は、他のデータストア内のItemsを参照することができる。参照関係は、Webページ内のリンクに類似の概念として考えることができる。
d) Reference relationship The reference relationship does not control the lifetime of the referenced Item. Furthermore, a reference relationship does not guarantee the existence of the target, nor does it guarantee the target type as specified in the relationship declaration. This means that the reference relationship can become dangling. In addition, the reference relationship can refer to Items in another data store. A reference relationship can be considered as a concept similar to a link in a Web page.

参照関係宣言の一例を以下に示す。   An example of a reference relationship declaration is shown below.

Figure 2007503050
Figure 2007503050

参照型は、ターゲット終点において使用できる。参照関係に関わるItemsは、任意のItem型とすることができる。   A reference type can be used at the target endpoint. Items related to the reference relationship can be of any Item type.

参照関係は、Items間のほとんどの非存続期間管理関係をモデル化するために使用される。ターゲットの存在は強制されないなめ、参照関係は、疎結合関係をモデル化するために都合がよい。参照関係は、他のコンピュータ上のストアを含む他のデータストア内のItemsをターゲットとするために使用することができる。   Reference relationships are used to model most non-lifetime management relationships between Items. The presence of the target is not enforced, and the reference relationship is convenient for modeling loosely coupled relationships. Reference relationships can be used to target Items in other data stores, including stores on other computers.

e)規則と制約条件
以下の追加規則および制約条件を関係について適用する。
・ Itemは、(ちょうど1つの埋め込み関係)または(1つまたは複数の保持関係)のターゲットでなければならない。例外の1つは、ルートItemである。Itemは、0またはそれ以上の参照関係のターゲットとすることができる。
・ 埋め込み関係のターゲットであるItemは、保持関係のソースとすることはできない。これは、参照関係のソースとすることができる。
・ ファイルから格上げされた場合、保持関係のソースとすることはできない。これは、埋め込み関係および参照関係のソースとすることができる。
・ ファイルから格上げされたItemは、埋め込み関係のターゲットとすることはできない。
e) Rules and constraints The following additional rules and constraints apply for relationships.
Item must be the target of (exactly one embedding relationship) or (one or more holding relationships). One exception is the root item. Item can be the target of zero or more reference relationships.
-Items that are targets of embedding relationships cannot be the source of retention relationships. This can be the source of a reference relationship.
-If promoted from a file, it cannot be the source of a retention relationship. This can be the source of embedding and reference relationships.
-Items upgraded from files cannot be targeted for embedding.

f)関係の順序付け
少なくとも一実施形態では、本発明のストレージプラットフォームは、関係の部順付けをサポートする。順序付けは、基本リレーショナル定義の中で「Order」という名前のプロパティを通じて実行される。Orderフィールド上には一意性制約条件はない。同じ「順序」プロパティ値を持つ関係の順序は保証されないが、低い「順序」の値を持つ関係の後、および高い「順序」フィールド値を持つ関係の前に、順序付けできることが保証される。
f) Relationship Ordering In at least one embodiment, the storage platform of the present invention supports relationship ordering. Ordering is performed through a property named “Order” in the basic relational definition. There is no uniqueness constraint on the Order field. The order of relationships with the same “order” property value is not guaranteed, but it is guaranteed that they can be ordered after a relationship with a low “order” value and before a relationship with a high “order” field value.

アプリケーションでは、組合せ(SourceItemID、RelationshipID、Order)の順序付けにより既定の順序で関係を取得することができる。与えられたItemから発するすべての関係インスタンスは、単一コレクションとして、そのコレクション内の関係の型と関係なく、順序付けされる。しかし、これは、与えられた型(例えば、FolderMembers)のすべての関係が、与えられたItemに対する関係コレクションの順序付き部分集合であることを保証する。   In the application, relationships can be acquired in a predetermined order by ordering combinations (SourceItemID, RelationshipID, Order). All relationship instances originating from a given Item are ordered as a single collection, regardless of the type of relationship within that collection. However, this ensures that all relationships of a given type (eg, FolderMembers) are an ordered subset of the relationship collection for a given Item.

関係を操作するデータストアAPI 312は、関係の順序付けをサポートするオペレーションの集合を実装している。以下の用語は、オペレーションを説明する補助として導入される。
・ RelFirstは、順序値OrdFirstを持つ順序付きコレクション内の最初の関係である。
・ RelLastは、順序値OrdLastを持つ順序付きコレクション内の最後の関係である。
・ RelXは、順序値OrdXを持つコレクション内の与えられた関係である。
・ RelPrevは、順序値OrdPrevがOrdXよりも小さい、コレクション内のRelXとの最も近い関係である。
・ RelNextは、順序値OrdNextがOrdXよりも大きい、コレクション内のRelXとの最も近い関係である。
The data store API 312 for manipulating relationships implements a set of operations that support ordering of relationships. The following terms are introduced as an aid to describing operations.
RelFirst is the first relationship in the ordered collection with the order value OrdFirst.
RelLast is the last relationship in the ordered collection with the order value OrdLast.
RelX is a given relationship in the collection with the order value OrdX.
RelPrev is the closest relationship to RelX in the collection where the order value OrdPrev is less than OrdX.
RelNext is the closest relationship to RelX in the collection, where the order value OrdNext is greater than OrdX.

これらのオペレーションは、限定はしないが、以下のものを含む。
・ InsertBeforeFirst(SourceItemID,Relationship)は、関係を第1の関係としてコレクション内に挿入する。新しい関係の「Order」プロパティの値はOrdFirstよりも小さい場合がある。
・ InsertAfterLast(SourceItemID,Relationship)は、関係を最後の関係としてコレクション内に挿入する。新しい関係の「Order」プロパティの値はOrdLastよりも大きい場合がある。
・ InsertAt(SourceItemID,ord,Relationship)は、「Order」プロパティに対する指定された値を持つ関係を挿入する。
・ InsertBefore(SourceItemID,ord,Relationship)は、与えられた順序値を持つ関係の前に関係を挿入する。新しい関係には、OrdPrevとordの間の、しかもそれを含まない、「Order」値を割り当てることができる。
・ InsertAfter(SourceItemID,ord,Relationship)は、与えられた順序値を持つ関係の後に関係を挿入する。新しい関係には、ordとOrdNextの間の、しかもそれを含まない、「Order」値を割り当てることができる。
・ MoveBefore(SourceItemID,ord,RelationshipID)は、与えられた関係IDを持つ関係を指定された「Order」値を持つ関係の前に移動する。この関係には、OrdPrevとordの間の、しかもそれを含まない、新しい「Order」値を割り当てることができる。
・ MoveAfter(SourceItemID,ord,RelationshipID)は、与えられた関係IDを持つ関係を指定された「Order」値を持つ関係の後に移動する。この関係には、ordとOrdNextの間の、しかもそれを含まない、新しい順序値を割り当てることができる。
These operations include, but are not limited to:
InsertBeforeFirst (SourceItemID, Relationship) inserts the relationship into the collection as the first relationship. The value of the “Order” property of the new relationship may be less than OrdFirst.
InsertAfterLast (SourceItemID, Relationship) inserts the relationship into the collection as the last relationship. The value of the “Order” property of the new relationship may be greater than OrdLast.
InsertAt (SourceItemID, ord, Relationship) inserts a relationship with the specified value for the “Order” property.
InsertBefore (SourceItemID, ord, Relationship) inserts a relationship before a relationship with a given order value. The new relationship can be assigned an “Order” value between, but not including, OrdPrev and ord.
InsertAfter (SourceItemID, ord, Relationship) inserts a relationship after a relationship with a given order value. The new relationship can be assigned an “Order” value between ord and OrdNext, but not including.
MoveBefore (SourceItemID, ord, RelationshipID) moves the relationship with the given relationship ID before the relationship with the specified “Order” value. This relationship can be assigned a new “Order” value between, but not including, OrdPrev and ord.
MoveAfter (SourceItemID, ord, RelationshipID) moves after the relationship with the specified “Order” value for the relationship with the given relationship ID. This relationship can be assigned a new order value between ord and OrdNext, but not including.

すでに述べたように、すべてのItemはItem Folderのメンバでなければならない。Relationshipsに関して、すべてのItemはItem Folderと関係を持っていなければならない。本発明のいくつかの実施形態では、Items間に存在するRelationshipsにより特定の関係が表される。   As already mentioned, every Item must be a member of Item Folder. With respect to Relationships, every Item must have a relationship with Item Folder. In some embodiments of the invention, specific relationships are represented by Relationships that exist between Items.

本発明の様々な実施形態で実装されているように、Relationshipは一方のItem(ソース)により他方のItem(ターゲット)に「拡張」される有向2項関係を実現する。Relationshipは、ソースItem(それを拡張したItem)により所有され、したがってRelationshipは、ソースが削除されると削除される(例えば、Relationshipは、ソースItemが削除されると削除される)。さらに、いくつかのインスタンスでは、Relationshipは、ターゲットItemの所有権を共有(共同所有)することができ、そのような所有権は、RelationshipのIsOwnedプロパティ(またはその等価物)内に反映されることが可能である(図7に、Relationshipプロパティ型について示されているように)。これらの実施形態では、新しいIsOwned Relationshipを作成すると、自動的にターゲットItemの参照カウントがインクリメントされ、そのようなRelationshipを削除すると、ターゲットItemの参照カウントがデクリメントされる。これらの特定の実施形態では、Itemsは、参照カウントが0よりも大きければ存在し続け、カウントが0になった場合に自動的に削除される。またも、Item Folderは、他のItemsとのRelationshipsの集合を持つ(または持つことができり)Itemであり、それらの他のItemsは、Item Folderの帰属関係を含む。Relationshipsの他の実際の実装も可能であり、本発明により本明細書で説明されている機能を実現することが予想される。   As implemented in various embodiments of the present invention, Relationship provides a directed binary relationship that is “extended” by one Item (source) to the other Item (target). A Relationship is owned by a source Item (an Item that extends it), and thus a Relationship is deleted when the source is deleted (eg, a Relationship is deleted when the source Item is deleted). In addition, in some instances, Relationships can share (jointly own) ownership of the target Item, and such ownership is reflected in the Relationship's IsOwned property (or its equivalent). Is possible (as shown for the Relationship property type in FIG. 7). In these embodiments, creating a new IsOwned Relationship will automatically increment the reference count of the target Item, and deleting such a Relationship will decrement the reference count of the target Item. In these particular embodiments, Items continue to exist if the reference count is greater than zero, and are automatically deleted when the count reaches zero. Also, Item Folder is an Item having (or can have) a set of Relationships with other Items, and these other Items include Item Folder attribute. Other actual implementations of Relationships are possible, and it is anticipated that the present invention will provide the functionality described herein.

実際の実装に関係なく、Relationshipは、一方のオブジェクトから他方のオブジェクトへの選択可能な接続である。Itemが複数のItem Folderに属すことができることとともに、1つまたは複数のCategoriesに属すことができること、さらに、これらのItems、Folders、およびCategoriesがパブリックであるがプライベートであるかは、Itemベースの構造内で存在すること(または存在しないこと)に対し与えられた意味により決定される。これらの論理的Relationshipsは、本明細書で説明されている機能を実現するために特に採用されている、物理的実装に関係ない、Relationshipsの集合に割り当てられた意味である。論理的Relationshipsは、ItemとそのItem Folder(s)またはCategoriesとの間で確立されている(およびその逆に)が、それは、本質的にItem FoldersおよびCategoriesはそれぞれItemの特殊な型であるからである。したがって、Item FoldersおよびCategoriesは、他のItemと同じようにして作用−限定はしないが、コピー、電子メールメッセージへの追加、ドキュメントへの埋め込み、など−を受けることができ、Item FoldersおよびCategoriesに対して、他のItemsの場合と同じメカニズムを使用してシリアライズおよびデシリアライズ(インポートおよびエクスポート)を行うことができる。(例えば、XMLでは、すべてのItemsは、シリアライズ形式を持つことができ、この形式はItem Folders、Categories、およびItemsにも等しく適用される。)   Regardless of the actual implementation, Relationship is a selectable connection from one object to the other. An Item-based structure can determine whether an Item can belong to multiple Item Folders, and can belong to one or more Categories, and whether these Items, Folders, and Categories are public but private Determined by the meaning given to being present (or not present). These logical Relationships are the meanings assigned to the set of Relationships that are specifically employed to implement the functions described herein, regardless of the physical implementation. Logical Relationships are established between an Item and its Item Folder (s) or Categories (and vice versa), because essentially Item Folders and Categories are each a special type of Item. It is. Thus, Item Folders and Categories can act in the same way as other Items—but not limited to, but can be copied, added to an email message, embedded in a document, etc., and Item Folders and Categories can receive In contrast, serialization and deserialization (import and export) can be performed using the same mechanism as for other Items. (For example, in XML, all Items can have a serialized format, which applies equally to Item Folders, Categories, and Items.)

前述のRelationshipsは、ItemとそれのItem Folder(s)と間の関係を表すが、ItemからItem Folderに、Item FolderからItemに、またはその両方に論理的に拡張することができる。論理的にItemからItem Folderに拡張するRelationshipは、Item FolderがそのItemに対しパブリックであることを表し、そのItemとの帰属関係情報を共有するが、逆に、ItemからItem Folderへの論理的Relationshipが存在しないことは、Item FolderがそのItemに対しプライベートであり、そのItemとの帰属関係情報を共有しないことを表す。同様に、Item FolderからItemに論理的に拡張するRelationshipは、ItemがそのItem Folderに対しパブリックであり共有可能であることを表すが、Item FolderからItemへの論理的Relationshipが存在しないことは、Itemがプライベートであり、非共有可能であることを表す。そのため、Item Folderが他のシステムにエクスポートされる場合、それは新しい文脈で共有される「パブリック」Itemsであり、ItemがそのItems Folders内で他の検索可能なItemsを検索する場合、それは、Itemにそれに属する共有可能Itemsに関する情報を供給する「パブリック」Item Foldersである。   The aforementioned Relationships represent the relationship between an Item and its Item Folder (s), but can be logically extended from Item to Item Folder, from Item Folder to Item, or both. Relationship that logically extends from Item to Item Folder indicates that Item Folder is public to that Item and shares attribution information with that Item, but conversely, from Item to Item Folder logically The absence of Relationship indicates that the Item Folder is private to the Item and does not share attribution information with the Item. Similarly, a Relationship that logically extends from Item Folder to Item indicates that the Item is public and sharable to the Item Folder, but there is no logical Relationship from Item Folder to Item. The item is private and can be shared. So when an Item Folder is exported to another system, it is a “public” Item shared in a new context, and when an Item searches for other searchable Items within that Item Folders, it “Public” Item Folders that provide information about sharable Items belonging to it.

図9は、Item Folder(これもまた、Item自体である)、そのメンバItems、およびItem FolderとそのメンバItemsとの間の相互接続Relationshipsを例示するブロック図である。Item Folder 900は、複数のItems 902、904、および906をメンバとして持つ。Item Folder 900は、Item 902がパブリックでありItem Folder 900、そのメンバ904および906、およびItem Folder 900にアクセスする可能性のある他のItem Folders、Categories、またはItems(図に示されていない)に対し共有可能であることを表す、それ自体からItem 902へのRelationship 912を持つ。しかし、Item Folder 900がItem 902に対しプライベートであり、Item 902と帰属関係情報を共有しないことを表す、Item 902からItem Folder 900へのRelationshipはない。他方、Item 904は、Item Folder 900がパブリックであり、Item 904と帰属関係情報を共有することを表す、それ自体からItem Folder 900へのRelationship 924を持つ。しかし、Item 904がプライベートであり、Item Folder 900、それの他のメンバ902および906、およびItem Folder 900にアクセスする可能性のある他のItem Folders、Categories、またはItems(図に示されていない)に対し共有可能でないことを表す、Item Folder 900からItem 904へのRelationshipはない。Items 902および904に対するそのRelationships(またはそれが存在しないこと)とは対照的に、Item Folder 900はそれ自体からItem 906へのRelationship 916を持ち、Item 906はItem Folder 900に戻るRelationship 926を持ち、これらは併せて、Item 906がパブリックであり、Item Folder 900、それのメンバ902および904、およびItem Folder 900にアクセスする可能性のある他のItem Folders、Categories、またはItems(図に示されていない)に対し共有可能であること、およびItem Folder 900がパブリックであり、Item 906と帰属関係情報を共有することを表す。   FIG. 9 is a block diagram illustrating Item Folder (which is also Item itself), its Member Items, and the interconnection Relationships between Item Folder and its Member Items. The Item Folder 900 has a plurality of Items 902, 904, and 906 as members. Item Folder 900 is an Item 902 that is public and Item Folder 900, its members 904 and 906, and other Item Folders, Categories, or Items (not shown) that may access Item Folder 900. It has a Relationship 912 from itself to Item 902 indicating that it can be shared. However, there is no Relationship from Item 902 to Item Folder 900 indicating that Item Folder 900 is private to Item 902 and does not share attribution information with Item 902. On the other hand, Item 904 has a Relationship 924 from itself to Item Folder 900 indicating that Item Folder 900 is public and shares attribution information with Item 904. However, Item 904 is private and Item Folder 900, its other members 902 and 906, and other Item Folders, Categories, or Items that may access Item Folder 900 (not shown) There is no Relationship from Item Folder 900 to Item 904, which indicates that it cannot be shared. In contrast to its Relationships for Items 902 and 904 (or the absence thereof), Item Folder 900 has a Relationship 916 from itself to Item 906, and Item 906 has a Relationship 926 that returns to Item Folder 900. Together, Item 906 is public, Item Folder 900, its members 902 and 904, and other Item Folders, Categories, or Items that may access Item Folder 900 (not shown) ) And Item Folder 900 is public, and Item 906 and Indicating to share genus related information.

すでに説明したように、Item Folder内のItemsは、Item Foldersが「記述」されていないため共通性を共有する必要はない。他方、Categoriesは、そのメンバItemsのすべてに共通である共通性により記述される。したがって、Categoryの帰属関係は、本質的に、記述されている共通性を持つItemsに制限され、いくつかの実施形態では、Categoryの記述を満たすすべてのItemsは自動的にCategoryのメンバにされる。したがって、Item Foldersでは自明な型構造をその帰属関係により表すことができるが、Categoriesでは、帰属関係は定義済み共通性に基づくようにできる。   As already explained, the Items in the Item Folder do not need to share commonality because the Item Folders are not “described”. On the other hand, Categories are described by a commonality common to all of its members Items. Thus, Category membership is inherently limited to Items with the described commonality, and in some embodiments, all Items that meet the Category description are automatically made members of Category. . Thus, in Item Folders, a trivial type structure can be represented by its membership, but in Categories, membership can be based on predefined commonality.

もちろん、Category記述は、その性質上論理的であり、したがって、Categoryは、型、プロパティ、および/または値の論理表現により記述することができる。例えば、Categoryの論理表現は、Itemsを含む帰属関係が2つのプロパティのうちの一方または両方を持つものとすることができる。Categoryに対するこれらの記述されたプロパティが「A」および「B」の場合、Categories帰属関係は、プロパティAを持つがBを持たないItems、プロパティBを持つがAを持たないItems、およびプロパティAおよびBの両方を持つItemsを含むことができる。プロパティのこの論理表現は、論理演算子「OR」により記述され、Categoryにより記述されるメンバの集合はプロパティA OR Bを持つItemsとなる。類似の論理オペランド(限定はしないが、「AND」、「XOR」、および「NOT」を単独で、または組み合わせて含む)も、カテゴリを記述するために使用することができることは、当業者であれば理解するであろう。   Of course, the Category description is logical in nature, and thus the Category can be described by a logical representation of types, properties, and / or values. For example, the logical representation of Category may be that the attribution relationship including Items has one or both of two properties. If these described properties for Category are “A” and “B”, then Category attributions are Items with property A but without B, Items with property B but without A, and properties A and Items with both B can be included. This logical representation of the property is described by the logical operator “OR”, and the set of members described by the Category is an Item having the property A OR B. Those skilled in the art will recognize that similar logical operands (including but not limited to “AND”, “XOR”, and “NOT”, alone or in combination) can also be used to describe a category. You will understand.

Item Folders(記述されていない)とCategories(記述されている)との区別にもかかわらず、Categories Relationship対ItemsとItems Relationship対Categoriesは、本発明の多くの実施形態におけるItem FoldersおよびItemsについて本明細書でこれまでに開示されたのと本質的に同じものである。   Despite the distinction between Item Folders (not described) and Categories (described), Categories Relationships vs. Items and Items Relationships vs. Categories are described herein for Item Folders and Items in many embodiments of the present invention. Is essentially the same as previously disclosed in the book.

図10は、Category(またも、Item自体である)、そのメンバItems、およびCategoryとそのメンバItemsとの間の相互接続のRelationshipsを例示するブロック図である。Category 1000は、複数のItems 1002、1004、および1006をメンバとして持ち、それらはすべて、Category 1000により記述されているように(共通性記述1008')共通のプロパティ、値、または型1008の何らかの組合せを共有する。Category 1000は、Item 1002がパブリックであり、Category 1000、そのメンバ1004および1006、およびCategory 1000にアクセスする可能性のある他のCategories、Item Folders、またはItems(図に示されていない)に対し共有可能であることを表す、それ自体からItem 1002へのRelationship 1012を持つ。しかし、Category 1000がItem 1002に対しプライベートであり、Item 1002と帰属関係情報を共有しないことを表す、Item 1002からCategory 1000へのRelationshipはない。他方、Item 1004は、Category 1000がパブリックであり、Item 1004と帰属関係情報を共有することを表す、それ自体からCategory 1000へのRelationship 1024を持つ。しかし、Item 1004がプライベートであり、Category 1000、それの他のメンバ1002および1006、およびCategory 1000にアクセスする可能性のある他のCategories、Item Folders、またはItems(図に示されていない)に対し共有可能でないことを表す、Category 1000からItem 1004へのRelationshipはない。Items 1002および1004に対するそのRelationships(またはそれが存在しないこと)とは対照的に、Category 1000はそれ自体からItem 1006へのRelationship 1016を持ち、Item 1006はCategory 1000に戻るRelationship 1026を持ち、これらは併せて、Item 1006がパブリックであり、Category 1000、それのItemメンバ1002および1004、およびCategory 1000にアクセスする可能性のある他のCategories、Item Folders、またはItems(図に示されていない)に対し共有可能であること、およびCategory 1000がパブリックであり、Item 1006と帰属関係情報を共有することを表す。   FIG. 10 is a block diagram illustrating Category (also Item itself), its Member Items, and the interconnection Relationships between Category and its Member Items. The Category 1000 has multiple Items 1002, 1004, and 1006 as members, all of which are any combination of common properties, values, or types 1008 as described by the Category 1000 (Commonness Description 1008 ') Share Category 1000 is shared to Item 1000, its folders 1004 and 1006, and other Categories, Item Folders, or Items (not shown) that may access Category 1000, as Item 1002 is public It has a Relationship 1012 from itself to Item 1002, indicating that it is possible. However, there is no Relationship from Item 1002 to Category 1000 indicating that Category 1000 is private to Item 1002 and does not share attribution information with Item 1002. On the other hand, Item 1004 has Relationship 1024 from itself to Category 1000 indicating that Category 1000 is public and shares attribution information with Item 1004. However, for Item 1004 is private and for Category 1000, its other members 1002 and 1006, and other Categories, Item Folders, or Items (not shown) that may access Category 1000 There is no Relationship from Category 1000 to Item 1004 indicating that it is not sharable. In contrast to its Relationships for Items 1002 and 1004 (or the absence of them), Category 1000 has a Relationship 1016 from itself to Item 1006, and Item 1006 has a Relationship 1026 back to Category 1000, which is In addition, Item 1006 is public and for Category 1000, its Item members 1002 and 1004, and other Categories, Item Folders, or Items (not shown) that may access Category 1000 Shareable and Category 1000 is public and Item 1006 and sharing attribution information.

最後に、他のいくつかの実施形態では、CategoriesおよびItem Foldersは、それ自体Itemsであり、Itemsは互いとのRelationshipを、CategoriesはItem FoldersへのRelationship およびその逆を持ち、Categories、Item Folders、およびItemsはそれぞれ他のCategories、Item Folders、およびItemに対するRelationshipを持つことができる。しかし、様々な実施形態では、Item Folder構造および/またはCategory構造は、ハードウェア/ソフトウェアインタフェースシステムレベルでサイクルを含むことが近似されている。Item FolderおよびCategory構造は、有効グラフに似ており、サイクルを禁止する実施形態は、グラフ理論の分野の数学的定義により、どのような経路も同じ頂点から始まり、終わるということのない有向グラフである、非循環有向グラフ(DAGs)に似ている。   Finally, in some other embodiments, Categories and Item Folders are Items themselves, Items has a Relationship to each other, Categories have a Relationship to Item Folders and vice versa, and Categories Folds, Items Folds, And Items can have Relationships to other Categories, Item Folders, and Items, respectively. However, in various embodiments, the Item Folder structure and / or Category structure is approximated to include cycles at the hardware / software interface system level. The Item Folder and Category structures are similar to valid graphs, and the embodiment that prohibits cycles is a directed graph in which no path starts and ends at the same vertex, due to the mathematical definition of the field of graph theory. , Similar to acyclic directed graphs (DAGs).

6.拡張性
ストレージプラットフォームに対して、上述のように、スキーマの初期集合340を与えることが意図されている。しかし、それに加えて、少なくともいくつかの実施形態では、ストレージプラットフォームにより、独立系ソフトウェアベンダ(ISV)を含む顧客は、新しいスキーマ344(つまり、新しいItemおよびNested Element型)を作成することができる。このセクションでは、スキーマの初期集合340内で定義されているItem型およびNested Element型(または単純に、「Element」型)を拡張することによりそのようなスキーマを作成するためのメカニズムを取りあげる。
6). Extensibility It is intended to give the storage platform an initial set of schemas 340 as described above. In addition, however, in at least some embodiments, the storage platform allows customers, including independent software vendors (ISVs), to create new schemas 344 (ie, new Item and Nested Element types). This section addresses the mechanism for creating such a schema by extending the Item and Nested Element types (or simply the “Element” type) defined in the initial set of schemas 340.

ItemおよびNested Element型の初期集合の拡張は、以下のように制約されるのが好ましい。
・ ISVは新しいItem型、つまり、子型Base.Itemを導入することが許される。
・ ISVは新しいNested Element型、つまり、子型Base.NestedElementを導入することが許される。
・ ISVは新しい拡張、つまり、子型Base.NestedElementを導入することが許される。しかし、
・ ISVは、ストレージプラットフォームのスキーマの初期集合340により定義されている型(Item、Nested Element、またはExtension型)をサブタイプ化することはできない。
The expansion of the initial set of Item and Nested Element types is preferably constrained as follows.
ISV is a new Item type, that is, a child type Base. It is allowed to introduce Item.
ISV is a new nested element type, that is, a child type Base. It is allowed to introduce a nested element.
ISV is a new extension, ie child type Base. It is allowed to introduce a nested element. But,
ISVs cannot subtype types (Item, Nested Element, or Extension types) defined by an initial set 340 of storage platform schemas.

ストレージプラットフォームスキーマの初期集合により定義されているItem型またはNested Element型はISVアプリケーションの要求条件に正確に一致しない場合があるので、ISV側で型をカスタマイズできるようにする必要がある。これは、Extensionsという概念で可能になる。Extensionsは、強く型付けされたインスタンスであるが、(a)それらは独立して存在することはできず、(b)ItemまたはNested Elementに付随しなければならない。   Since the Item type or the Nested Element type defined by the initial set of storage platform schema may not exactly match the requirements of the ISV application, it is necessary to be able to customize the type on the ISV side. This is possible with the concept of Extensions. Extensions are strongly typed instances, but (a) they cannot exist independently and (b) must accompany an Item or a Necessary Element.

スキーマの拡張性の必要性に応えるほかに、Extensionsは、「多重型付け」問題を解消することも意図されている。いくつかの実施形態では、ストレージプラットフォームは、多重継承または重複子型をサポートしていない場合があるため、アプリケーション側でExtensionsを重複子型のインスタンスをモデル化する一手段として使用することができる(例えば、Documentは、法律文書であるとともにセキュリティに関する文書でもある)。   In addition to meeting the need for schema extensibility, Extensions is also intended to solve the “multi-typing” problem. In some embodiments, the storage platform may not support multiple inheritance or duplicate types, so Extensions can be used as a way to model instances of duplicate types on the application side ( For example, Document is a legal document as well as a security document).

a)アイテム拡張
Item拡張を行うために、データモデルで、さらに、Base.Extensionという名前の抽象型を定義する。これは、拡張型の階層に対するルート型である。アプリケーションでは、Base.Extensionをサブタイプ化して、特定の拡張型を作成することができる。
a) Item extension To perform Item extension, in the data model, Base. Define an abstract type named Extension. This is the root type for the extended type hierarchy. In the application, Base. Extensions can be subtyped to create specific extensions.

Base.Extension型は、以下のようにBase schemaで定義される。   Base. The Extension type is defined by Base schema as follows.

Figure 2007503050
Figure 2007503050

ItemIDフィールドは、拡張子が関連付けられているアイテムのItemIDを含む。このItemIDを持つItemは存在していなければならない。拡張は、与えられたItemIDを持つアイテムが存在しない場合には、作成することができない。Itemが削除されると、同じItemIDを持つ拡張はすべて削除される。タプル(ItemID,ExtensionID)は拡張インスタンスを一意に識別する。   The ItemID field contains the ItemID of the item with which the extension is associated. An Item with this ItemID must exist. An extension cannot be created if there is no item with a given ItemID. When an Item is deleted, all extensions with the same ItemID are deleted. A tuple (ItemID, ExtensionID) uniquely identifies an extension instance.

拡張型の構造は、アイテム型のと類似している。
・ 拡張型はフィールドを持つ。
・ フィールドは、プリミティブまたはネスト要素型とすることができる。
・ 拡張型は、サブタイプ化することができる。
The extension type structure is similar to the item type.
-The extension type has a field.
A field can be a primitive or nested element type.
• Extended types can be subtyped.

以下の制約が拡張型に対し適用される。
・ 拡張は、関係のソースおよびターゲットとすることはできない。
・ 拡張型インスタンスは、アイテムから独立しては存在し得ない。
・ 拡張型は、ストレージプラットフォームの型定義でのフィールド型として使用することはできない。
The following constraints apply to extended types:
• Extensions cannot be the source and target of a relationship.
• Extended instances cannot exist independently of items.
-Extended types cannot be used as field types in storage platform type definitions.

与えられたItem型に関連付けられる拡張の型には制約はない。どのような拡張型も、アイテム型の拡張に使用することができる。複数の拡張インスタンスがアイテムに付随する場合、それらは、構造とビヘイビアの両面で互いに独立している。   There are no restrictions on the type of extension associated with a given Item type. Any extension type can be used to extend the item type. When multiple extension instances are attached to an item, they are independent of each other in both structure and behavior.

拡張インスタンスは、格納され、アイテムから別にアクセスされる。すべての拡張型インスタンスは大域的拡張ビューからアクセス可能である。関連するアイテムの型がどうであれ、与えられた拡張の型のすべてのインスタンスを返す効率的なクエリを作成することができる。ストレージプラットフォームAPIは、アイテム上の拡張の格納、取り出し、および修正を行うことができるプログラミングモデルを提供する。   Extension instances are stored and accessed separately from the item. All extended type instances are accessible from the global extended view. Regardless of the type of the associated item, you can create an efficient query that returns all instances of a given extension type. The storage platform API provides a programming model that can store, retrieve, and modify extensions on items.

拡張型は、ストレージプラットフォームの単一継承モデルを使用してサブタイプ化された型とすることができる。拡張型からの派生は、新しい拡張型を生み出す。拡張の構造またはビヘイビアは、アイテム型階層の構造またはビヘイビアをオーバーライドまたは置き換えることができない。Item型と同様に、Extension型インスタンスは、拡張型に関連付けられているビューを通じて直接アクセスされることが可能である。拡張のItemIDは、どのアイテムに属しているかを示し、これを使用して、大域的Itemビューから対応するItemオブジェクトを取り出すことができる。拡張は、動作整合性の目的のためにアイテムの一部と考えられる。ストレージプラットフォームが定義するCopy/Move、Backup/Restore、およびその他の共通オペレーションは、そのアイテムの一部として拡張上で動作することができる。   Extended types can be subtyped using the storage platform's single inheritance model. Deriving from an extension type creates a new extension type. An extension structure or behavior cannot override or replace an item type hierarchy structure or behavior. Similar to the Item type, the Extension type instance can be accessed directly through the view associated with the extension type. The extension's ItemID indicates which item it belongs to and can be used to retrieve the corresponding Item object from the global Item view. Extensions are considered part of an item for the purpose of behavioral consistency. Copy / Move, Backup / Restore, and other common operations defined by the storage platform can operate on extensions as part of that item.

以下の例を考察する。Contact型は、Windows(登録商標)Type設定で定義される。   Consider the following example: The Contact type is defined by the Windows (registered trademark) Type setting.

Figure 2007503050
Figure 2007503050

CRMアプリケーション開発者は、CRMアプリケーション拡張をストレージプラットフォームに格納されている連絡先に付随させたい。アプリケーション開発者は、アプリケーション側で操作することができる追加データ構造を含むCRM拡張を定義する。   CRM application developers want to attach CRM application extensions to contacts stored in the storage platform. Application developers define CRM extensions that contain additional data structures that can be manipulated on the application side.

Figure 2007503050
Figure 2007503050

HRアプリケーション開発者は、Contactに追加データを付随させたいとも考えている。このデータは、CRMアプリケーションデータと無関係である。ここでもまた、このアプリケーション開発者は拡張を作成することができる。   The HR application developer also wants to attach additional data to the Contact. This data is independent of the CRM application data. Again, this application developer can create an extension.

Figure 2007503050
Figure 2007503050

CRMExtensionおよびHRExtensionは、Contactアイテムに付随させることができる2つの独立の拡張である。これらは、互いに独立に作成されアクセスされる。   CRMExtension and HRExtension are two independent extensions that can be attached to a Contact item. These are created and accessed independently of each other.

上記の例では、CRMExtension型のフィールドおよびメソッドは、Contact階層のフィールドまたはメソッドをオーバーライドすることができない。CRMExtension型のインスタンスは、Contact以外のItem型に不随させることができる。   In the above example, CRMExtension type fields and methods cannot override fields or methods in the Contact hierarchy. An instance of the CRMExtension type can be associated with an Item type other than Contact.

Contactアイテムが取り出される場合、そのアイテム拡張は自動的に取り出されはしない。Contactアイテムが与えられた場合、関連するアイテム拡張は、同じItemIdで拡張の大域的拡張ビューにクエリを実行することによりアクセスすることが可能である。   When a Contact item is retrieved, the item extension is not automatically retrieved. Given a Contact item, the associated item extension can be accessed by querying the global extended view of the extension with the same ItemId.

システム内のすべてのCRMExtension拡張は、どのアイテムに属しているか関係なく、CRMExtension型ビューを通じてアクセスすることができる。アイテムのすべてのアイテム拡張は、同じアイテムidを共有する。上記の例では、Contactアイテムインスタンスおよび付随するCRMExtensionおよびHRExtensionは同じItemIDをインスタンス化する。   All CRMExtension extensions in the system can be accessed through the CRMExtension type view, regardless of which item they belong to. All item extensions for an item share the same item id. In the above example, the Contact item instance and the accompanying CRMExtension and HRExtension instantiate the same ItemID.

以下のテーブルは、Item、Extension、およびNestedElement型同士の間の類似点と相違点をまとめたものである。   The following table summarizes similarities and differences between Item, Extension, and NestedElement types.

Figure 2007503050
Figure 2007503050

b)NestedElement型の拡張
NestedElement型は、Item型と同じメカニズムで拡張されない。ネストされた要素の拡張は、ネストされた要素型のフィールドと同じメカニズムにより格納され、アクセスされる。
b) Extension of the NestedElement type The NestedElement type is not extended by the same mechanism as the Item type. Nested element extensions are stored and accessed by the same mechanism as nested element type fields.

データモデルは、Elementという名前のネストされた要素型のルートを定義する。   The data model defines a root for a nested element type named Element.

Figure 2007503050
Figure 2007503050

NestedElement型はこの型から継承する。NestedElement要素型は、さらに、Elementsの多重集合であるフィールドを定義する。   The NecessaryElement type inherits from this type. The NestedElement element type further defines a field that is a multiple set of Elements.

Figure 2007503050
Figure 2007503050

NestedElement拡張は、以下の点でアイテム拡張と異なる。
・ ネストされた要素拡張は、拡張型ではない。それらは、Base.Extension型をルートとする拡張型階層に属さない。
・ ネストされた要素拡張は、アイテムの他のフィールドとともに格納され、大域的にはアクセス可能でない−与えられた拡張型のすべてのインスタンスを取り出すクエリを作成できない。
・ これらの拡張は、他のネストされた要素(アイテムの)が格納されるとの同じ方法で格納される。他のネストされた集合のように、NestedElement拡張はUDTに格納される。これらは、ネストされた要素型のExtensionsフィールドを通じてアクセス可能である。
・ 多値プロパティにアクセスするために使用されるコレクションインタフェースも、型拡張の集合についてアクセスおよび反復するために使用される。
The nested element extension differs from the item extension in the following points.
-Nested element extensions are not extension types. They are based on Base. It does not belong to the extended type hierarchy whose root is the Extension type.
Nested element extensions are stored with the other fields of the item and are not globally accessible—you cannot create a query that retrieves all instances of a given extension type.
These extensions are stored in the same way that other nested elements (items) are stored. Like other nested sets, NestedElement extensions are stored in the UDT. These are accessible through the Extensions field of the nested element type.
The collection interface used to access multi-valued properties is also used to access and iterate over a set of type extensions.

以下の表は、Item ExtensionsおよびNestedElement拡張のまとめと比較である。   The following table is a summary and comparison of Item Extensions and NestedElement extensions.

Figure 2007503050
Figure 2007503050

D.データベースエンジン
上述のように、データストアは、データベースエンジン上に実装される。本発明では、データベースエンジンは、オブジェクトリレーショナル拡張とともに、Microsoft SQL Serverなどの、SQLクエリ言語を実装するリレーショナルデータベースエンジンを含む。このセクションでは、データストアが実装するデータモデルのリレーショナルストアへのマッピングについて説明し、また本発明によるストレージプラットフォームクライアントによって消費される論理APIに関する情報も掲載する。しかし、異なるデータベースエンジンが使用される場合に、異なるマッピングを採用できることは理解される。実際、ストレージプラットフォームの概念データモデルをリレーショナルデータベースエンジン上に実装することに加えて、さらに、他のタイプのデータベース、例えば、オブジェクト指向およびXMLデータベース上に実装されることも可能である。
D. Database Engine As described above, the data store is implemented on the database engine. In the present invention, the database engine includes a relational database engine that implements an SQL query language, such as Microsoft SQL Server, along with object-relational extensions. This section describes the mapping of the data model that the data store implements to the relational store, and also provides information about the logical API consumed by the storage platform client according to the present invention. However, it is understood that different mappings can be employed when different database engines are used. Indeed, in addition to implementing the storage platform conceptual data model on a relational database engine, it can also be implemented on other types of databases, such as object-oriented and XML databases.

オブジェクト指向(OO)データベースシステムは、プログラミング言語オブジェクト(例えば、C++、Java(登録商標))に対する永続性およびトランザクションを提供する。ストレージプラットフォームにおける「アイテム」の概念は、オブジェクト指向システムにおける「Object」にうまくマッピングされるが、ただし、埋め込まれたコレクションはObjectsに追加されなければならないであろう。継承およびネストされた要素型のような他のストレージプラットフォームの型概念も、オブジェクト指向型システムをマッピングする。オブジェクト指向システムでは、通常、オブジェクト識別をすでにサポートしており、したがって、アイテム識別は、オブジェクト識別にマッピングすることができる。アイテムビヘイビア(オペレーション)は、オブジェクトメソッドにうまくマッピングされる。しかし、オブジェクト指向システムは、通常、組織機能を欠いており、検索能力が劣る。また、オブジェクト指向システムは、非構造化および半構造化データのサポートも行わない。本明細書で説明されている完全なストレージプラットフォームデータモデルをサポートするため、関係、フォルダ、および拡張などの概念は、オブジェクトデータモデルに追加される必要があるであろう。さらに、格上げ、同期、通知、およびセキュリティなどのメカニズムも、実装される必要があるであろう。   An object oriented (OO) database system provides persistence and transactions for programming language objects (eg, C ++, Java). The concept of “items” in the storage platform maps well to “Objects” in object-oriented systems, but embedded collections will have to be added to Objects. Other storage platform type concepts, such as inherited and nested element types, also map object-oriented systems. Object-oriented systems typically already support object identification, so item identification can be mapped to object identification. Item behaviors (operations) map nicely to object methods. However, object-oriented systems usually lack organizational functions and have poor search capabilities. Also, object oriented systems do not support unstructured and semi-structured data. To support the full storage platform data model described herein, concepts such as relationships, folders, and extensions will need to be added to the object data model. In addition, mechanisms such as upgrades, synchronization, notifications, and security will also need to be implemented.

オブジェクト指向システムと同様に、XMLデータベースは、XSD(XMLスキーマ定義)に基づいており、単一継承ベースの型システムをサポートする。本発明のアイテム型システムは、XSD型モデルにマッピングされることも可能である。XSDは、さらに、ビヘイビアをサポートしない。アイテムに対するXSDは、アイテムビヘイビアにより増強されなければならないであろう。XMLデータベースでは、単一のXSDドキュメントを取り扱い、編成および広範な検索機能を欠いている。オブジェクト指向データベースの場合と同様、本明細書で説明されているデータモデルをサポートするため、関係、およびフォルダなどの他の概念は、そのようなXMLデータベースに組み込まれる必要があり、また、同期、通知、およびセキュリティなどのメカニズムも実装される必要がある。   Similar to object-oriented systems, XML databases are based on XSD (XML Schema Definition) and support a single inheritance based type system. The item type system of the present invention can also be mapped to an XSD type model. XSD also does not support behaviors. The XSD for an item will have to be augmented by an item behavior. An XML database handles a single XSD document and lacks organization and extensive search capabilities. As with object-oriented databases, other concepts such as relationships and folders need to be incorporated into such XML databases to support the data model described herein, Mechanisms such as notifications and security also need to be implemented.

以下のサブセクションに関して、開示されている一般的情報を利用しやすくするためいくつかの図が用意されており、図13は、通知メカニズムを例示するブロック図である。図14は、2つのトランザクションが両方とも新しいレコードを同じB−Tree内に挿入する実施例を示す図である。図15は、データ変更検出プロセスを例示する図である。図16は、ディレクトリツリー例を示している。図17は、ディレクトリベースのファイルシステムの既存のフォルダがストレージプラットフォームのデータストアに移動される例を示す図である。   With respect to the following subsections, several diagrams have been prepared to facilitate use of the disclosed general information, and FIG. 13 is a block diagram illustrating a notification mechanism. FIG. 14 is a diagram illustrating an embodiment in which two transactions both insert a new record into the same B-Tree. FIG. 15 is a diagram illustrating a data change detection process. FIG. 16 shows an example of a directory tree. FIG. 17 is a diagram illustrating an example in which an existing folder in a directory-based file system is moved to the data store of the storage platform.

1.UDTを使用したデータストアの実装
本発明の実施形態では、一実施形態においてMicrosoft SQL Serverエンジンを含むリレーショナルデータベースエンジン314は、組み込みスカラー型をサポートする。組み込みスカラー型は「ネイティブ」と「単純」である。それらは、ユーザが独自の型を定義することはできないという点でネイティブであり、複合構造をカプセル化できないという点で単純である。ユーザ定義型(これ以降、UDT)は、複合構造型を定義することによりユーザが型システムを拡張できるようにすることによりネイティブのスカラー型システムの上の、またそれを超える、型拡張性のためのメカニズムを用意する。UDTは、ユーザにより定義された後、型システムにおいて組み込みスカラー型が使用できる場所であればどこででも使用することができる。
1. Implementing a Data Store Using UDT In an embodiment of the invention, the relational database engine 314, which in one embodiment includes the Microsoft SQL Server engine, supports a built-in scalar type. Built-in scalar types are “native” and “simple”. They are native in that users cannot define their own types and are simple in that they cannot encapsulate composite structures. User-defined types (hereafter UDT) are for type extensibility on and beyond the native scalar type system by allowing users to extend the type system by defining complex structured types. Prepare the mechanism. Once the UDT has been defined by the user, it can be used anywhere the built-in scalar type can be used in the type system.

本発明の一態様によれば、ストレージプラットフォームスキーマは、データベースエンジンストア内のUDTクラスにマッピングされる。データストアItemsは、Base.Item型から派生するUDTクラスにマッピングされる。Itemsのように、ExtensionsもUDTクラスにマッピングされ、継承を使用する。ルートExtension型は、Base.Extensionであり、そこからすべてのExtension型が派生する。   According to one aspect of the invention, the storage platform schema is mapped to a UDT class in the database engine store. The data store Items is based on Base. Maps to a UDT class derived from the Item type. Like Items, Extensions are also mapped to UDT classes and use inheritance. The root extension type is Base. Extension, from which all Extension types are derived.

UDTはCLRクラスである−これは状態(つまり、データフィールド)とビヘイビア(つまり、ルーチン)を持つ。UDTは、マネージド言語−C#、VB.NETなどを使用して定義される。UDTメソッドおよび演算子は、その型のインスタンスに対してT−SQLで呼び出すことができる。UDTは、1行の中の1列の型、T−SQLのルーチンのパラメータの型、またはT−SQLの変数の型とすることができる。   UDT is a CLR class-it has a state (ie, a data field) and a behavior (ie, a routine). UDT is a managed language-C #, VB. It is defined using NET etc. UDT methods and operators can be called in T-SQL on instances of that type. The UDT can be a type of one column in a row, a parameter type of a T-SQL routine, or a variable type of a T-SQL.

ストレージプラットフォームスキーマをUDTクラスにマッピングすることは、高水準でかなり容易である。一般に、ストレージプラットフォームSchemaは、CLR名前空間にマッピングされる。ストレージプラットフォームTypeは、CLRクラスにマッピングされる。CLRクラス継承は、ストレージプラットフォームType継承を反映し、ストレージプラットフォームPropertyは、CLRクラスプロパティにマッピングされる。   Mapping storage platform schemas to UDT classes is fairly easy at a high level. In general, the storage platform Schema is mapped to the CLR namespace. The storage platform Type is mapped to the CLR class. The CLR class inheritance reflects the storage platform Type inheritance, and the storage platform Property is mapped to the CLR class property.

2.アイテムのマッピング
Itemsが大域的に検索可能であることが望ましく、継承および型代替可能性に対する本発明のリレーショナルデータベースでのサポートがあれば、データベースストア内のItemストレージの1つの可能な実装は、すべてのItemsを型Base.Itemの列を含む単一テーブルに格納することである。型代替可能性を使用すると、すべての型のItemsを格納することが可能になり、またYukonの「is of(Type)」演算子を使用してItem型と子型により検索をフィルタ処理することが可能になる。
2. Item Mapping It is desirable for Items to be globally searchable, and with the relational database support of the present invention for inheritance and type substitutability, one possible implementation of Item storage in a database store is all Items of type Base. It is stored in a single table that contains a column of Items. Using type substitutability, it is possible to store all types of Items, and use Yukon's “is of (Type)” operator to filter the search by Item and child types Is possible.

しかし、本発明の実施形態においては、そのようなアプローチに関連するオーバーヘッドに関する心配から、Itemsは、最上位の型により分割され、それぞれの型の「族」のItemsが別々のテーブルに格納される。このパーティション分割スキームに従って、Base.Itemから直接継承するItem型毎に1つのテーブルが作成される。これらの下の型継承は、上述のように、型代替え可能性を使用して適切な型族テーブルに格納される。Base.Itemからの継承の第1のレベルのみが特別に処理される。   However, in an embodiment of the present invention, due to the overhead concerns associated with such an approach, the Items are divided by the top-level type, and each type of “family” Item is stored in a separate table. . According to this partitioning scheme, Base. One table is created for each Item type that directly inherits from Item. These lower type inheritances are stored in the appropriate type family table using type substitutability as described above. Base. Only the first level of inheritance from Item is specially handled.

すべてのItemsに対する大域的に検索可能なプロパティのコピーを格納するために「シャドウ」テーブルが使用される。このテーブルは、すべてのデータ変更が行われる際に使用される、ストレージプラットフォームAPIのUpdate()メソッドにより保持することできる。型族テーブルと異なり、大域的Itemテーブルは、完全なUDT Itemオブジェクトではなく、Itemの最上位スカラープロパティのみを含む。大域的Itemテーブルでは、ItemIDおよびTypeIDを公開することにより型族テーブルに格納されているItemオブジェクトにナビゲートすることができる。ItemIDは、一般に、データストア内のItemを一意に識別する。TypeIDは、ここでは説明しないメタデータを使用して、型名およびItemを含むビューにマッピングすることができる。ItemをそのItemIDにより見つけることはごくふつうのオペレーションといえるので、大域的Itemテーブルおよび他の何らかの手段の両方の文脈において、ItemのItemIDを指定するとItemオブジェクトを取り出すGetItem()関数が用意されている。   A “shadow” table is used to store a globally searchable copy of the properties for all Items. This table can be maintained by the Update () method of the storage platform API that is used when all data changes are made. Unlike type family tables, global Item tables contain only the top-level scalar properties of Items, not complete UDT Item objects. In the global Item table, it is possible to navigate to the Item object stored in the type family table by publishing the ItemID and TypeID. The ItemID generally uniquely identifies the Item in the data store. A TypeID can be mapped to a view that includes a type name and an Item using metadata not described here. Finding an Item by its ItemID is a normal operation, and in the context of both the global Item table and some other means, there is a GetItem () function that retrieves an Item object when an ItemID is specified. .

アクセスを簡単に、実装の詳細をできる限り隠すために、Itemsのすべてのクエリは、上述のItemテーブル上に構築されたビューに対して行われるようにできる。特に、ビューは、該当する型族テーブルと突き合わせてItem型毎に作成されうる。これらの型ビューでは、子型を含む、関連付けられた型のすべてのItemsを選択することができる。便宜のため、UDTオブジェクトに加えて、それらのビューは、継承されたフィールドを含む、その型の最上位レベルのフィールドのすべてに対する列を公開することができる。   In order to simplify access and hide implementation details as much as possible, all Items queries can be made against views built on the Item table described above. In particular, a view can be created for each Item type against the corresponding type table. In these type views, all Items of the associated type, including child types, can be selected. For convenience, in addition to UDT objects, those views can expose columns for all of the top-level fields of that type, including inherited fields.

3.拡張マッピング
Extensionsは、Itemsに非常によく似ており、同じ要求条件のうちいくつかを持つ。継承をサポートする他のルート型として、Extensionsはストレージに対する同じ考慮事項とトレードオフの関係の多くの影響を受ける。このため、類似の型族マッピングは、単一テーブルアプローチではなく、むしろ、Extensionsに適用される。もちろん、他の実施形態では、単一テーブルアプローチを使用することが可能である。本発明の実施形態では、ExtensionはItemIDによりちょうど1つのItemに関連付けられ、Itemの文脈において一意であるExtensionIDを含む。Itemsの場合と同様に、ItemIDとExtensionIDのペアからなる、識別を与えられたExtensionを取り出す関数を用意することが可能である。Viewは、Extension型毎に作成され、Item型ビューに類似している。
3. Extension Mapping Extensions are very similar to Items and have some of the same requirements. As another root type that supports inheritance, Extensions are subject to many of the same storage considerations and tradeoffs. For this reason, the similar type family mapping is not a single table approach, but rather applies to Extensions. Of course, in other embodiments, a single table approach can be used. In an embodiment of the present invention, an Extension is associated with exactly one Item by ItemID and includes an ExtensionID that is unique in the context of the Item. As in the case of Items, it is possible to prepare a function that takes out an extension given an identification, which consists of a pair of ItemID and ExtensionID. A View is created for each Extension type and is similar to an Item type view.

4.ネストされている要素のマッピング
Nested Elementsは、深くネストされた構造を形成するためにItems、Extensions、Relationships、または他のNested Elements内に埋め込むことができる型である。ItemsおよびExtensionsのように、Nested Elementsは、UDTとして実装されるが、ItemsとExtensions内に格納される。したがって、Nested Elementsは、そのItemおよびExtensionコンテナのを超えるストレージマッピングを持たない。つまり、NestedElement型のインスタンスを直接格納するテーブルはシステムにはなく、Nested Elements専用のビューもない。
4). Nested Element Mappings Nested Elements is a type that can be embedded within Items, Extensions, Relationships, or other Nested Elements to form deeply nested structures. Like Items and Extensions, Nested Elements are implemented as UDTs, but are stored within Items and Extensions. Thus, a nested element has no storage mapping beyond that of its Item and Extension containers. In other words, there is no table in the system that directly stores a nested element type instance, and there is no view dedicated to nested elements.

5.オブジェクト識別
データモデル内の各エンティティ、つまり、各Item、Extension、およびRelationshipは一意のキー値を持つ。Itemは、ItemIDにより一意に識別される。Extensionは、(ItemId,ExtensionId)の複合キーにより一意に識別される。Relationshipは、複合キー(ItemId,RelationshipId)により識別される。ItemId、ExtensionId、およびRelationshipIdはGUID値である。
5). Object Identification Each entity in the data model, ie, each Item, Extension, and Relationship has a unique key value. Item is uniquely identified by ItemID. Extension is uniquely identified by a composite key of (ItemId, ExtensionId). The Relationship is identified by a composite key (ItemId, RelationshipId). ItemId, ExtensionId, and RelationshipId are GUID values.

6.SQLオブジェクトの命名規則
データストア内に作成されたすべてのオブジェクトは、ストレージプラットフォームスキーマ名から派生されたSQLスキーマ名で格納することができる。例え、ストレージプラットフォームBaseスキーマ(「Base」と呼ばれることが多い)は、「[System.Storage].Item」などの「[System.Storage]」SQLスキーマで型を生成することができる。生成された名前は、命名の競合をなくすため、修飾子が先頭に付けられる。適切であれば、感嘆符(!)が、名前の各論理部分の仕切りとして使用される。以下の表は、データストア内のオブジェクトに使用される命名規則の概要である。それぞれのスキーマ要素(Item、Extension、Relationship、およびView)は、データストア内のインスタンスにアクセスするために使用される装飾された命名規則とともに一覧にされている。
6). SQL Object Naming Conventions All objects created in the data store can be stored with a SQL schema name derived from the storage platform schema name. For example, a storage platform Base schema (often referred to as “Base”) can be typed with a “[System.Storage]” SQL schema such as “[System.Storage] .Item”. The generated name is prefixed with a qualifier to eliminate naming conflicts. Where appropriate, exclamation points (!) Are used as dividers for each logical part of the name. The following table outlines the naming convention used for objects in the data store. Each schema element (Item, Extension, Relationship, and View) is listed with a decorated naming convention used to access instances in the data store.

Figure 2007503050
Figure 2007503050

7.列の命名規則
オブジェクトモデルをストアにマッピングする場合、アプリケーションオブジェクトとともに追加情報が格納されているため、命名競合が発生する可能性がある。命名競合を回避するため、すべての非型固有列(型宣言で名前付きPropertyに直接マッピングされない列)の先頭に、下線(_)文字を付ける。本発明の実施形態では、下線(_)文字は、識別子プロパティの先頭文字としては禁止されている。さらに、CLRとデータストアとの間の命名法の統一のため、ストレージプラットフォームの型またはスキーマ要素(関係など)のすべてのプロパティは、先頭文字を大文字にしていなければならない。
7). Column naming conventions When mapping an object model to a store, additional information is stored with the application object, which can lead to naming conflicts. To avoid naming conflicts, an underscore (_) character is prepended to all non-type-specific columns (columns that are not directly mapped to named properties in the type declaration). In the embodiment of the present invention, the underscore (_) character is prohibited as the first character of the identifier property. In addition, all properties of storage platform types or schema elements (such as relationships) must be capitalized in order to unify naming between CLRs and data stores.

8.検索ビュー
ビューは、格納されているコンテンツを検索するためストレージプラットフォームにより用意されている。SQLビューは、各ItemおよびExtension型に用意されている。さらに、ビューは、RelationshipsとViewsをサポートするためにも用意されている(Data Modelでの定義に従って)。ストレージプラットフォーム内のすべてのSQLビューおよび基礎のテーブルは読み取り専用である。データは、以下に詳述するように、ストレージプラットフォームAPIのUpdate()メソッドを使用して格納または変更することができる。
8). Search view A view is provided by the storage platform to search stored content. The SQL view is prepared for each Item and Extension type. In addition, views are also provided to support Relationships and Views (as defined in the Data Model). All SQL views and underlying tables in the storage platform are read-only. Data can be stored or modified using the Update () method of the storage platform API, as described in detail below.

ストレージプラットフォームスキーマで明示的に定義されているそれぞれのビューは(スキーマデザイナにより定義され、ストレージプラットフォームにより自動的には生成されない)は、名前付きSQLビュー[<schema−name>].[View!<view−name>]によりアクセス可能である。例えば、スキーマ「AcmePublisher.Books」内の「BookSales」という名前のビューは、名前「[AcmePublisher.Books].[View!BookSales]」を使用するとアクセス可能である。ビューの出力形式はビュー毎に変更できるので(ビューを定義する当事者により与えられる任意のクエリにより定義される)、列は、スキーマビュー定義に基づいて直接マッピングされる。   Each view that is explicitly defined in the storage platform schema (defined by the schema designer and not automatically generated by the storage platform) is named SQL view [<schema-name>]. [View! <View-name>] is accessible. For example, a view named “BookSales” in the schema “AccumPublisher.Books” is accessible using the name “[AcmePublisher.Books]. [View! BookSales]”. Since the view output format can vary from view to view (defined by any query provided by the party defining the view), the columns are mapped directly based on the schema view definition.

ストレージプラットフォームのデータストア内のすべてのSQL検索ビューは、列に対し以下の順序付け規則を使用する。
・ ItemId、ElementId、RelationshipId、...などのビュー結果の(複数の)論理「key」列。
・ TypeIdなどの結果の型に関するメタデータ情報。
・ CreateVersion、UpdateVersion、...などの変更追跡列。
・ (複数の)型特有の列(宣言された型のProperties)
・ 型特有のビュー(族ビュー)も、オブジェクトを返すオブジェクト別を含む。
All SQL search views in the storage platform data store use the following ordering rules for the columns:
ItemId, ElementId, RelationshipId,. . . The logical “key” column of view results such as
Metadata information about the result type, such as TypeId.
CreateVersion, UpdateVersion,. . . Change tracking columns such as
(S) type-specific columns (property of declared type)
• Type-specific views (family views) also include object specific objects that return objects.

各型族のメンバは、一連のItemビューを使用して検索可能であり、データストア内にItem型毎に1つのビューがある。図28は、Itemの検索ビューの概念を例示するブロック図である。   Members of each type family can be searched using a series of Item views, with one view for each Item type in the data store. FIG. 28 is a block diagram illustrating the concept of an item search view.

a)アイテム
各Item検索ビューは、特定の型またはその子型のItemの各インスタンスに対する1つの行を含む。例えば、Documentに対するビューは、Document、LegalDocument、およびReviewDocumentのインスタンスを返すことができる。この例では、Itemビューは、図29に示されているように概念化することができる。
a) Items Each Item search view contains one row for each instance of an item of a particular type or its child types. For example, a view for Document can return an instance of Document, LegalDocument, and ReviewDocument. In this example, the Item view can be conceptualized as shown in FIG.

(1)マスターアイテム検索ビュー
ストレージプラットフォームのデータストアのそれぞれのインスタンスは、マスターアイテムビューという特別なItemビューを定義する。このビューは、データストア内のそれぞれのItemに関する概要情報を示す。ビューは、Item型プロパティ毎に1つの列を示し、列は、変更追跡および同期情報を供給するために使用されるItemおよび複数の列の型を記述している。マスターアイテムビューは、名前「[System.Storage].[Master!Item]」を使用してデータストア内で識別される。
(1) Master Item Search View Each instance of the storage platform data store defines a special Item view called the Master Item View. This view shows summary information about each Item in the data store. The view shows one column for each Item type property, which describes the Item and multiple column types that are used to provide change tracking and synchronization information. The master item view is identified in the data store using the name “[System.Storage]. [Master! Item]”.

Figure 2007503050
Figure 2007503050

(2)型付きアイテム検索ビュー
各Item型は、さらに、検索ビューを持つ。ルートItemビューに似ているが、このビューは、さらに、「_Item」列を介してItemオブジェクトにアクセスできる。各型付きアイテム検索ビューは、名前[schemaName].[itemTypeName]を使用してデータストア内で識別される。例えば、[AcmeCorp.Doc].[OfficeDoc]。
(2) Typed item search view Each Item type further has a search view. Similar to the root Item view, but this view can also access Item objects via the “_Item” column. Each typed item search view has a name [schemaName]. Identified in the data store using [itemTypeName]. For example, [Acme Corp. Doc]. [OfficeDoc].

Figure 2007503050
Figure 2007503050

b)アイテム拡張
WinFS Store内のすべてのItem Extensionsは、検索ビューを使用してアクセスすることもできる。
b) Item Extensions All Item Extensions in the WinFS Store can also be accessed using a search view.

(1)マスター拡張検索ビュー
データストアのそれぞれのインスタンスは、マスター拡張ビューという特別なExtensionビューを定義する。このビューは、データストア内のそれぞれのExtensionに関する概要情報を示す。ビューは、Extensionプロパティ毎に1つの列を持ち、列は、変更追跡および同期情報を供給するために使用されるExtensionおよび複数の列の型を記述している。マスター拡張ビューは、名前「[System.Storage].[Master!Extension]」を使用してデータストア内で識別される。
(1) Master Extended Search View Each instance of the data store defines a special Extension view called Master Extended View. This view shows summary information about each Extension in the data store. The view has one column for each Extension property, which describes the Extension and the types of columns used to provide change tracking and synchronization information. The master extended view is identified in the data store using the name “[System.Storage]. [Master! Extension]”.

Figure 2007503050
Figure 2007503050

(2)型付き拡張検索ビュー
各Extension型は、さらに、検索ビューを持つ。マスター拡張ビューに似ているが、このビューは、さらに、「_Extension」列を介してItemオブジェクトにアクセスできる。各型付き拡張検索ビューは、名前[schemaName].[Extension!extensionTypeName]を使用してデータストア内で識別される。例えば、[AcmeCorp.Doc][Extension!OfficeDocExt]。
(2) Typed Extended Search View Each Extension type further has a search view. Similar to the master extended view, but this view can also access the Item object via the “_Extension” column. Each typed extended search view has the name [schemaName]. [Extension! It is identified in the data store using extensionTypeName]. For example, [Acme Corp. Doc] [Extension! OfficeDocExt].

Figure 2007503050
Figure 2007503050

c)ネストされている要素
すべてのネストされている要素は、Items、Extensions、またはRelationshipsインスタンス内に格納される。したがって、該当するItem、Extension、またはRelationship検察ビューにクエリを行うことで、これらはアクセスされる。
c) Nested elements All nested elements are stored in an Items, Extensions, or Relations instance. Thus, these are accessed by querying the appropriate Item, Extension, or Relationship probation view.

d)関係
上述のように、Relationshipsは、ストレージプラットフォームのデータストア内にItems間のリンキングの基本ユニットを形成する。
d) Relationships As mentioned above, Relationships form the basic unit of linking between Items within the storage platform data store.

(1)マスター関係検索ビュー
それぞれのデータストアは、Master Relationship Viewを与える。このビューは、データストア内のすべての関係インスタンスに関する情報を示す。マスター関係ビューは、名前「[System.Storage].[Master!Relationship]」を使用してデータストア内で識別される。
(1) Master Relationship Search View Each data store provides a Master Relationship View. This view shows information about all relationship instances in the data store. The master relationship view is identified in the data store using the name “[System.Storage]. [Master! Relationship]”.

Figure 2007503050
Figure 2007503050

(2)関係インスタンス検索ビュー
それぞれの宣言されたRelationshipは、さらに、特定の関係のすべてのインスタンスを返す検索ビューを持つ。マスター関係ビューに似ているが、このビューは、さらに、関係データのプロパティ毎に名前付き列を示す。各関係インスタンス検索ビューは、名前[schemaName].[Relationship!relationshipName]を使用してデータストア内で識別される。例えば、[AcmeCorp.Doc].[Relationship!DocumentAuthor]。
(2) Relationship Instance Search View Each declared Relationship further has a search view that returns all instances of a particular relationship. Similar to the master relationship view, but this view also shows a named column for each property of the relationship data. Each relationship instance search view has a name [schemaName]. [Relationship! relationName] is identified in the data store. For example, [Acme Corp. Doc]. [Relationship! DocumentAuthor].

Figure 2007503050
Figure 2007503050

e)
9.更新
ストレージプラットフォームのデータストア内のすべてのビューは読み取り専用である。データモデル要素(アイテム、拡張、または関係)の新しいインスタンスを作成する、または既存のインスタンスを更新するには、ストレージプラットフォームAPIのProcessOperationまたはProcessUpdategramメソッドが使用されなければならない。ProcessOperationメソッドは、実行されるアクションの詳細を決める「オペレーション」を消費するデータストアにより定義された単一のストアドプロシージャである。ProcessUpdategramメソッドは、実行されるアクションの集合の詳細を包括的に決める、「アップデートグラム」と呼ばれる、オペレーションの順序付き集合を受け取るストアドプロシージャである。
e)
9. Update All views in the storage platform data store are read-only. To create a new instance of a data model element (item, extension, or relationship) or update an existing instance, the ProcessOperation or ProcessUpdategram method of the storage platform API must be used. The ProcessOperation method is a single stored procedure defined by the data store that consumes the “operation” that determines the details of the action to be performed. The ProcessUpdategram method is a stored procedure that receives an ordered set of operations called an “updategram” that comprehensively determines the details of the set of actions to be performed.

オペレーション形式は、拡張可能であり、スキーマ要素に対する様々なオペレーションを用意している。共通オペレーションとしては以下のものがある。
1.Itemオペレーション:
a.CreateItem(埋め込みまたは保持関係の文脈において新しいアイテムを作成する)
b.UpdateItem(既存のItemを更新する)
2.Relationshipオペレーション:
a.CreateRelationship(参照または保持関係のインスタンスを作成する)
b.UpdateRelationship(関係インスタンスを更新する)
c.DeleteRelationship(関係インスタンスを削除する)
3.Extensionオペレーション:
a.CreateExtension(既存のItemに拡張を追加する)
b.UpdateExtension(既存の拡張を更新する)
c.DeleteExtension(拡張を削除する)
The operation format is extensible and provides various operations for schema elements. Common operations include the following.
1. Item operations:
a. CreateItem (creates a new item in the context of an embedding or holding relationship)
b. UpdateItem (updates an existing Item)
2. Relationship operation:
a. CreateRelationship (create a reference or retention relationship instance)
b. UpdateRelationship (update relationship instance)
c. DeleteRelationship (delete relationship instance)
3. Extension operation:
a. CreateExtension (adds an extension to an existing Item)
b. UpdateExtension (updates an existing extension)
c. DeleteExtension (delete extension)

10.変更追跡&ツームストーン(tomb stones)
変更追跡およびツームストーンサービスは、以下で詳述するように、データストアにより提供される。このセクションでは、データストア内に公開された変更追跡情報の概要を述べる。
10. Change tracking & tomb stones
Change tracking and tombstone services are provided by the data store as detailed below. This section outlines the change tracking information published in the data store.

a)変更追跡
データストアによって与えられるそれぞれの検索ビューは、変更追跡情報を供給するために使用される列を含み、それらの列は、すべてのItem、Extension、およびRelationshipビュー間で共通である。ストレージプラットフォームのSchema Viewsは、スキーマデザイナにより明示的に定義され、変更追跡情報を自動的に供給することはしない−そのような情報は、ビュー自体が構築される検索ビューを通じて間接的に供給される。
a) Change Tracking Each search view provided by the data store includes columns that are used to provide change tracking information, and these columns are common across all Item, Extension, and Relationship views. The storage platform's Schema Views is explicitly defined by the schema designer and does not automatically supply change tracking information-such information is supplied indirectly through the search view on which the view itself is built. .

データストア内の要素毎に、変更追跡情報は2つの場所−「マスター」要素ビューと「型付き」要素ビューから利用できる。例えば、AcmeCorp.Document.Document Item型に関する変更追跡情報は、マスターアイテムビュー「[System.Storage].[Master!Item]」および型付きアイテム検索ビュー[AcmeCorp.Document].[Document]から利用できる。   For each element in the data store, change tracking information is available from two locations—a “master” element view and a “typed” element view. For example, Acme Corp. Document. The change tracking information for the Document Item type includes the master item view “[System.Storage]. [Master! Item]” and the typed item search view [AcmeCorp. Document]. Available from [Document].

(1)「マスター」検索ビューでの変更追跡
マスター検索ビュー内の変更追跡情報は、要素の作成および更新バージョンに関する情報、要素を作成した同期パートナに関する情報、要素を最後に更新した同期パートナに関する情報、および作成および更新に関する各パートナからのバージョン番号を示す。同期関係にあるパートナ(後述)は、パートナキーにより識別される。型[System.Storage.Store].ChangeTrackingInfoの_ChangeTrackingInfoという名前の単一のUDTオブジェクトがこの情報を格納する。この型は、System.Storageスキーマで定義される。_ChangeTrackingInfoは、Item、Extension、およびRelationshipについてすべての大域的検索デビューで利用可能である。ChangeTrackingInfoの型定義は以下のとおりである。
(1) Change tracking in the “master” search view The change tracking information in the master search view includes information about the creation and update version of the element, information about the synchronization partner that created the element, and information about the synchronization partner that last updated the element. And the version number from each partner for creation and update. Partners (described later) that are in a synchronous relationship are identified by a partner key. Type [System. Storage. Store]. A single UDT object named _ChangeTrackingInfo in ChangeTrackingInfo stores this information. This type is described in System. It is defined in the Storage schema. _ChangeTrackingInfo is available in all global search debuts for Items, Extensions, and Relationships. The type definition of ChangeTrackingInfo is as follows.

Figure 2007503050
Figure 2007503050

これらのプロパティは、以下の情報を含む。   These properties include the following information:

Figure 2007503050
Figure 2007503050

(2)「型付き」検索ビューでの変更追跡
大域的検索ビューと同じ情報を供給することに加えて、それぞれの型付き検索ビューは、同期トポロジ内の各要素の同期状態を記録した追加情報を供給する。
(2) Change tracking in “typed” search views In addition to providing the same information as the global search views, each typed search view has additional information that records the synchronization status of each element in the synchronization topology. Supply.

Figure 2007503050
Figure 2007503050

b)ツームストーン
データストアは、Items、Extensions、およびRelationshipsのツームストーン情報を与える。ツームストーンビューは、ある場所にあるライブ状態のエンティティとツームストーン状態のエンティティ(live and tombstoned entities)(アイテム、拡張、および関係)の両方に関する情報を示す。アイテムおよび拡張ツームストーンビューは、対応するオブジェクトへのアクセスを行えないが、関係ツームストーンビューは、関係オブジェクトへのアクセスを行える(関係オブジェクトは、ツームストーン状態の関係の場合にはNULLである)。
b) Tombstone The data store provides tombstone information for Items, Extensions, and Relationships. The tombstone view shows information about both live and tombstoned entities (items, extensions, and relationships) at a location. Item and extended tombstone views do not have access to the corresponding object, but relationship tombstone views have access to the relationship object (the relationship object is NULL for tombstone state relationships) .

(1)アイテムツームストーン
アイテムツームストーンは、ビュー[System.Storage].[Tombstone!Item]を介してシステムから取り出される。
(1) Item Tombstone Item Tombstone is a view [System. Storage]. [Tombstone! It is retrieved from the system via [Item].

Figure 2007503050
Figure 2007503050

(2)拡張ツームストーン
拡張ツームストーンは、ビュー[System.Storage].[Tombstone!Extension]を使用してシステムから取り出される。拡張変更追跡情報は、ExtensionIdプロパティの追加を含むItemsについて与えられる情報と類似している。
(2) Extended Tombstone Extended Tombstone is a view [System. Storage]. [Tombstone! It is retrieved from the system using Extension. Extended change tracking information is similar to the information provided for Items, including the addition of the ExtensionId property.

Figure 2007503050
Figure 2007503050

(3)関係ツームストーン
関係ツームストーンは、ビュー[System.Storage].[Tombstone!Relationship]を介してシステムから取り出される。関係ツームストーン情報は、Extensionsについて与えられる情報と類似している。しかし、追加情報は、関係インスタンスのターゲットItemRef上で与えられる。さらに、関係オブジェクトも選択される。
(3) Relation Tombstone Relation Tombstone is a view [System. Storage]. [Tombstone! Retrieved from the system via Relationship. The related tombstone information is similar to the information given for Extensions. However, additional information is given on the target ItemRef of the relationship instance. In addition, related objects are also selected.

Figure 2007503050
Figure 2007503050

(4)ツームストーンのクリーンアップ
ツームストーン情報の際限のない増殖を防ぐために、データストアは、ツームストーンのクリーンアップタスクを用意している。このタスクは、ツームストーン情報をいつ破棄できるかを決定する。このタスクは、ローカルの作成/更新バージョンに対する限界を計算し、その後、旧いすべてのツームストーンバージョンを破棄することによりツームストーン情報を切り詰める。
(4) Tombstone cleanup To prevent endless proliferation of tombstone information, the data store provides a tombstone cleanup task. This task determines when tombstone information can be discarded. This task calculates the limits for the local create / update version and then truncates the tombstone information by discarding all old tombstone versions.

11.ヘルパAPIおよび関数
Baseマッピングは、さらに、多数のヘルパ関数も備える。これらの関数は、データモデルに対する共通のオペレーションを補助するために用意されている。
11. Helper APIs and Functions Base mapping also includes a number of helper functions. These functions are provided to assist common operations on the data model.

a)関数[System.Storage].GetItem   a) Function [System. Storage]. GetItem

Figure 2007503050
Figure 2007503050

b)関数[System.Storage].GetExtension   b) Function [System. Storage]. GetExtension

Figure 2007503050
Figure 2007503050

c)関数[System.Storage].GetRelationship   c) Function [System. Storage]. GetRelationship

Figure 2007503050
Figure 2007503050

12.メタデータ
ストアで表されるメタデータは、インスタンスメタデータ(Itemの型など)および型メタデータの2種類がある。
a)スキーマメタデータ
スキーマメタデータは、MetaスキーマからのItem型のインスタンスとしてデータストア内に格納される。
b)インスタンスメタデータ
インスタンスメタデータは、Itemの型についてクエリを実行するためにアプリケーションによって使用され、これによりItemに関連付けられている拡張を見つける。Itemに対するItemIdが与えられれば、アプリケーションは、大域的アイテムビューにクエリを実行して、Itemの型を返し、この値を使用して、Meta.Typeビューにクエリを実行し、Itemの宣言された型に関する情報を返す。例えば、以下のようになる。
12 There are two types of metadata represented in the metadata store: instance metadata (such as Item types) and type metadata.
a) Schema metadata Schema metadata is stored in the data store as an Item type instance from the Meta schema.
b) Instance metadata Instance metadata is used by an application to query for the type of Item, thereby finding the extension associated with the Item. Given an ItemId for the Item, the application queries the global item view to return the Item type and uses this value to get the Meta. Queries the Type view and returns information about the declared type of the Item. For example:

Figure 2007503050
Figure 2007503050

E.セキュリティ
一般に、すべてのセキュリティ設定可能なオブジェクトは、図26に示されているアクセスマスク形式を使用してそのアクセス権を設定する。この形式では、下位16ビットはオブジェクト特有のアクセス権に、次の7ビットは標準アクセス権に使用され、これは、オブジェクトのほとんどの型に適用され、上位4ビットは各オブジェクト型で標準およびオブジェクト特有の権利の集合にマッピングできる汎用アクセス権を指定するために使用される。ACCESS_SYSTEM_SECURITYビットは、オブジェクトのSACLにアクセスする権利に対応する。
E. Security In general, all security-configurable objects set their access rights using the access mask format shown in FIG. In this format, the lower 16 bits are used for object-specific permissions, the next 7 bits are used for standard permissions, which apply to most types of objects, and the upper 4 bits are standard and object for each object type. Used to specify universal access rights that can be mapped to a specific set of rights. The ACCESS_SYSTEM_SECURITY bit corresponds to the right to access the SACL of the object.

図26のアクセスマスク構造では、アイテム特有の権利は「Object Specific Rights」セクション(下位16ビット)に置かれる。本発明の実施形態では、ストレージプラットフォームは、セキュリティを管理する2組のAPI−Win32およびストレージプラットフォームAPI−を公開しているため、ファイルシステムオブジェクト特有の権利は、ストレージプラットフォーム特有の権利の設計の動機付けをするために考慮されなければならない。   In the access mask structure of FIG. 26, item-specific rights are placed in the “Object Specific Rights” section (lower 16 bits). In embodiments of the present invention, the storage platform exposes two sets of API-Win32 and storage platform API- that manage security, so file system object specific rights are the motivation for designing storage platform specific rights. It must be considered in order to apply.

本発明のストレージプラットフォームのセキュリティモデルは、本明細書の前の方で参照により組み込まれている関連出願において詳しく説明されている。この点に関して、図27(パートa、b、およびc)は、セキュリティモデルの一実施形態による、既存のセキュリティ領域から切り出される新しいまったく同じように保護されているセキュリティ領域を示す図である。   The security model of the storage platform of the present invention is described in detail in the related application incorporated by reference earlier in this specification. In this regard, FIG. 27 (parts a, b, and c) illustrates a new, exactly the same protected security area that is cut out from an existing security area, according to one embodiment of the security model.

F.通知および変更追跡
本発明の他の態様によれば、ストレージプラットフォームは、データ変更をアプリケーションで追跡できるようにする通知機能を備える。この機能は、主に、揮発性状態を維持するか、またはデータ変更イベントに関するビジネスロジックを実行するアプリケーション向けである。アプリケーションは、アイテム、アイテム拡張、およびアイテム関係に関する通知を登録する。通知は、データ変更がコミットされた後に非同期に送り出される。アプリケーション側では、アイテム、拡張、および関係型さらにオペレーションの種類により、通知をフィルタ処理することができる。
F. Notification and Change Tracking According to another aspect of the present invention, the storage platform comprises a notification function that allows an application to track data changes. This functionality is primarily for applications that maintain volatile state or execute business logic for data change events. The application registers notifications about items, item extensions, and item relationships. Notifications are sent asynchronously after the data changes are committed. On the application side, notifications can be filtered by item, extension, and relation type as well as the type of operation.

一実施形態により、ストレージプラットフォームAPI 322は、2種類のインタフェースを通知用に用意している。第1に、アプリケーションはアイテム、アイテム拡張、およびアイテム関係への変更によりトリガされた単純データ変更イベントを登録する。第2に、アプリケーションは、アイテム、アイテム拡張、およびアイテム間の関係の集まりを監視する「ウォッチャ」オブジェクトを作成する。ウォッチャオブジェクトの状態は、システム障害の後、またはシステムが長時間オフライン状態になってしまった後に、保存され、再作成されるようにできる。単一の通知で、複数の更新を反映する場合がある。   According to one embodiment, the storage platform API 322 provides two types of interfaces for notification. First, the application registers simple data change events triggered by changes to items, item extensions, and item relationships. Second, the application creates a “watcher” object that monitors the collection of items, item extensions, and relationships between items. The state of the watcher object can be saved and recreated after a system failure or after the system has been offline for a long time. A single notification may reflect multiple updates.

この機能に関する追加詳細は、本明細書の前の方で参照により組み込まれている関連出願で説明されている。   Additional details regarding this functionality are described in related applications incorporated by reference earlier in this specification.

G.従来のファイルシステムの相互運用性
上述のように、本発明のストレージプラットフォームは、少なくとも一部の実施形態では、コンピュータシステムのハードウェア/ソフトウェアインタフェースシステムのなくてはならない一部として具現化されることを意図されている。例えば、本発明のストレージプラットフォームは、Microsoft Windows(登録商標)ファミリのオペレーティングシステムなどのオペレーティングシステムの重要な一部として具現化されることができる。そのようなキャパシティにおいて、ストレージプラットフォームAPIは、アプリケーションプログラムがオペレーティングシステムとやり取りするために使用するオペレーティングシステムAPIの一部となる。したがって、ストレージプラットフォームは、アプリケーションプログラムがオペレーティングシステムに関する情報を格納するために使用する手段となり、そのため、ストレージプラットフォームのItemベースのデータモデルは、そのようなオペレーティングシステムの従来のファイルシステムの代替えとなる。例えば、Microsoft Windows(登録商標)ファミリのオペレーティングシステムで具現化されているように、ストレージプラットフォームでは、そのオペレーティングシステムで実装されているNTFSファイルシステムを置き換えることも可能である。現在、アプリケーションプログラムは、Windows(登録商標)ファミリのオペレーティングシステムにより公開されているWin32 APIを通じてNTFSファイルシステムのサービスにアクセスしている。
G. Conventional File System Interoperability As described above, the storage platform of the present invention is embodied, at least in some embodiments, as an integral part of the hardware / software interface system of a computer system. Is intended. For example, the storage platform of the present invention may be embodied as an important part of an operating system, such as the Microsoft Windows® family of operating systems. In such capacity, the storage platform API becomes part of the operating system API that application programs use to interact with the operating system. Thus, the storage platform provides a means for application programs to use to store information about the operating system, so that the storage platform's Item-based data model is an alternative to the traditional file system of such operating system. For example, as embodied in the operating system of the Microsoft Windows (registered trademark) family, the storage platform can also replace the NTFS file system implemented in the operating system. Currently, application programs access services of the NTFS file system through the Win32 API published by the Windows (registered trademark) family of operating systems.

しかし、NTFSファイルシステムを本発明のストレージプラットフォームで完全に置き換えるには、既存のWin32ベースのアプリケーションプログラムをコーディングし直す必要があること、またそのようなコーディングし直しは望ましくないことを理解すると、本発明のストレージプラットフォームでNTFSなどの既存のファイルシステムとの何らかの相互運用性を実現することが有益であろう。したがって、本発明の一実施形態では、ストレージプラットフォームにおいて、Win32プログラミングモデルに依存するアプリケーションはストレージプラットフォームのデータストアと従来のNTFSファイルシステムの両方の内容にアクセスすることができる。この目的のために、ストレージプラットフォームでは、簡単な相互運用性を高めるWin32の命名規則の上位集合となる命名規則を使用する。さらに、ストレージプラットフォームでは、Win32 APIを通じてストレージプラットフォームボリューム内に格納されているファイルおよびディレクトリのアクセスをサポートする。   However, it will be appreciated that in order to completely replace the NTFS file system with the storage platform of the present invention, it is necessary to recode existing Win32-based application programs and that such recoding is undesirable. It would be beneficial to achieve some interoperability with existing file systems such as NTFS with the inventive storage platform. Thus, in one embodiment of the present invention, in a storage platform, an application that relies on the Win32 programming model can access the contents of both the storage platform data store and the traditional NTFS file system. For this purpose, the storage platform uses a naming convention that is a superset of the Win32 naming convention that enhances simple interoperability. In addition, the storage platform supports access to files and directories stored in the storage platform volume through the Win32 API.

この機能に関する追加詳細は、本明細書の前の方で参照により組み込まれている関連出願で説明されている。   Additional details regarding this functionality are described in related applications incorporated by reference earlier in this specification.

H.ストレージプラットフォームAPI
ストレージプラットフォームは、アプリケーションプログラム側で上述のストレージプラットフォームの機能および能力にアクセスし、データストアに格納されているアイテムにアクセスするために使用できるAPIを備える。このセクションでは、本発明のストレージプラットフォームのストレージプラットフォームAPIの一実施形態について説明する。この機能に関する詳細は、本明細書の前の方で参照により組み込まれている関連出願で説明されているが、便宜のため以下にこの情報の一部をまとめた。
H. Storage platform API
The storage platform provides an API that can be used on the application program side to access the functions and capabilities of the storage platform described above and to access items stored in the data store. This section describes one embodiment of the storage platform API of the storage platform of the present invention. Details regarding this functionality are described in the related applications incorporated by reference earlier in this specification, but some of this information is summarized below for convenience.

図18を参照すると、Containment Folderは他のItemsとの保持Relationshipsを含むアイテムであり、ファイルシステムのフォルダの共通概念の等価物である。それぞれのItemは少なくとも1つの包含フォルダ内に「含まれる」。   Referring to FIG. 18, Content Folder is an item including retention Relationships with other Items, and is equivalent to a common concept of a folder in a file system. Each Item is “included” in at least one inclusion folder.

図19は、本発明の一実施形態による、ストレージプラットフォームAPIの基本アーキテクチャを例示する。ストレージプラットフォームAPIでは、SQLCIient 1900を使用してローカルデータストア302とやり取りし、またSQLClient 1900を使用してリモートデータストア(例えば、データストア340)とやり取りすることができる。ローカルストア302は、さらに、DQP(分散クエリプロセッサ)を使用するか、または後述のストレージプラットフォーム同期サービス(「Sync」)を通じて、リモートデータストア340ともやり取りできる。ストレージプラットフォームAPI 322は、さらに、データストア通知用のブリッジAPIとして機能し、上述のように、アプリケーションのサブスクリプションを通知エンジン332に受け渡し、通知をアプリケーション(例えば、アプリケーション350a、350b、または350c)にルーティングする。一実施形態では、ストレージプラットフォームAPI 322は、さらに、Microsoft ExchangeおよびADでデータにアクセスできるように制限された「プロバイダ」アーキテクチャを定義することもできる。   FIG. 19 illustrates the basic architecture of the storage platform API, according to one embodiment of the invention. The storage platform API can interact with the local data store 302 using SQL Client 1900 and can interact with a remote data store (eg, data store 340) using SQL Client 1900. The local store 302 can also interact with the remote data store 340 using a DQP (distributed query processor) or through a storage platform synchronization service (“Sync”) described below. The storage platform API 322 further functions as a bridge API for data store notifications, passing application subscriptions to the notification engine 332 as described above, and notifications to applications (eg, applications 350a, 350b, or 350c). Route. In one embodiment, the storage platform API 322 may further define a “provider” architecture that is restricted to allow access to data with Microsoft Exchange and AD.

図20は、ストレージプラットフォームAPIの様々なコンポーネントを表す概略図である。ストレージプラットフォームAPIは、(1)ストレージプラットフォーム要素およびアイテム型を表す、データクラス2002、(2)オブジェクト永続性を管理し、サポートクラス2006を提供する、ランタイムフレームワーク2004、および(3)ストレージプラットフォームスキーマからCLRクラスを生成するために使用される、ツール2008の各コンポーネントからなる。   FIG. 20 is a schematic diagram representing the various components of the storage platform API. The storage platform API includes (1) a data class 2002 representing storage platform elements and item types, (2) a runtime framework 2004 that manages object persistence and provides support classes 2006, and (3) a storage platform schema. Each component of the tool 2008 used to generate a CLR class from

与えられたスキーマから生じるクラスの階層は、直接、そのスキーマ内の型の階層を反映する。例えば、図21Aおよび図21Bに示されているようなContactsスキーマで定義されているItem型を考察する。   The hierarchy of classes that arise from a given schema directly reflects the hierarchy of types within that schema. For example, consider the Item type defined in the Contacts schema as shown in FIGS. 21A and 21B.

図22は、動作中のランタイムフレームワークを例示している。ランタイムフレームワークは以下のように動作する。
1.アプリケーション350a、350b、または350cは、ストレージプラットフォーム内のアイテムにバインドする。
2.フレームワーク2004は、バインドされたアイテムに対応するItemContextオブジェクト2202を作成し、アプリケーションに返す。
3.アプリケーションは、このItemContext上でFindをサブミットして、Itemsのコレクションを取得し、返されるコレクションは、概念上オブジェクトグラフ2204となる(関係により)。
4.アプリケーションは、データを変更、削除、および挿入する。
5.アプリケーションは、Update()メソッドを呼び出して変更を保存する。
FIG. 22 illustrates the runtime framework in operation. The runtime framework works as follows.
1. Applications 350a, 350b, or 350c bind to items in the storage platform.
2. The framework 2004 creates an ItemContext object 2202 corresponding to the bound item and returns it to the application.
3. The application submits Find on this ItemContext to obtain a collection of Items, and the returned collection is conceptually an object graph 2204 (depending on the relationship).
4). The application changes, deletes, and inserts data.
5). The application saves the changes by calling the Update () method.

図23は、「FindAll」オペレーションの実行を例示する。   FIG. 23 illustrates execution of a “FindAll” operation.

図24は、ストレージプラットフォームAPIクラスがストレージプラットフォームSchemaから生成されるプロセスを例示する。   FIG. 24 illustrates the process by which the storage platform API class is generated from the storage platform Schema.

図25は、File APIが基づくスキーマを例示している。ストレージプラットフォームAPIは、ファイルオブジェクトを取り扱うための名前空間を含む。この名前空間は、System.Storage.Filesと呼ばれる。System.Storage.Filesのクラスのデータメンバは、ストレージプラットフォームストアに格納されている情報を直接反映し、この情報は、ファイルシステムオブジェクトから「格上げ」されるか、またはWin32 APIを使用してネイティブな形で作成することができる。System.Storage.Files名前空間は、FileItemおよびDirectoryItemの2つのクラスを持つ。これらのクラスおよびそのメソッドのメンバは、図25のスキーマ図を見ると容易に推測できる。FileItemおよびDirectoryItemは、ストレージプラットフォームAPIからは読み取り専用である。それらを修正するためには、Win32 APIを使用するか、またはSystem.IOのクラスを使用する必要がある。   FIG. 25 illustrates a schema on which the File API is based. The storage platform API includes a namespace for handling file objects. This namespace is System. Storage. Called Files. System. Storage. The data members of the Files class directly reflect the information stored in the storage platform store, which can be “upgraded” from the file system object or created natively using the Win32 API. be able to. System. Storage. The Files namespace has two classes: FileItem and DirectoryItem. The members of these classes and their methods can be easily guessed by looking at the schema diagram of FIG. FileItem and DirectoryItem are read-only from the storage platform API. To modify them, use the Win32 API or use System. It is necessary to use the IO class.

APIに関して、プログラミングインタフェース(またはより単純に、インタフェース)は、コードの1つまたは複数のセグメントがコードの1つまたは複数の他のセグメントにより提供される機能と通信またはアクセスできるようにするメカニズム、プロセス、プロトコルとしてみなすことができる。代替えとして、プログラミングインタフェースは、他の(複数の)コンポーネントの1つまたは複数のメカニズム、メソッド、関数呼び出し、モジュールなどに通信するように結合することができるシステムのコンポーネントの1つまたは複数のメカニズム、メソッド、関数呼び出し、モジュール、オブジェクトなどとみなすことができる。前文の「segment of code」という用語は、適用される用語、またはコードセグメントが別々にコンパイルされるかどうか、コードセグメントがソースコード、中間コード、またはオブジェクトコードとして供給されるかどうか、コードセグメントがランタイムシステムまたはプロセスで利用されるかどうか、それらが同じまたは異なるマシン上に配置されるか、または複数のマシンにまたがって分散されるかどうか、コードのセグメントにより表される機能がソフトウェアで全部実装されるのか、ハードウェアで全部実装されるのか、それともハードウェアとソフトウェアの組合せで実装されるのかに関係なく、1つまたは複数の命令またはコード行を含むことを意図しており、例えば、コードモジュール、オブジェクト、サブルーチン、関数などを含む。   With respect to an API, a programming interface (or, more simply, an interface) is a mechanism, process that allows one or more segments of code to communicate or access functions provided by one or more other segments of code. Can be regarded as a protocol. Alternatively, the programming interface may include one or more mechanisms of the components of the system that can be communicatively coupled to one or more mechanisms, methods, function calls, modules, etc. of the other component (s), It can be regarded as a method, function call, module, object, etc. The term “segment of code” in the preceding sentence refers to the term applied, whether the code segment is compiled separately, whether the code segment is supplied as source code, intermediate code, or object code, Whether the runtime system or process is used, whether they are located on the same or different machines, or distributed across multiple machines, the functionality represented by the segment of code is fully implemented in software Intended to include one or more instructions or lines of code, whether implemented in hardware, fully implemented in hardware, or a combination of hardware and software, eg code Module, object, support Includes blue tin, functions, etc.

概念上、プログラミングインタフェースは、図30Aまたは図30Bに示されているように、総称的に示すことができる。図30Aは、第1および第2のコードセグメントが通信に使用する情報伝達ルートとしてインタフェースInterface1を例示している。図30Bは、システムの第1および第2のコードセグメントが媒体Mを介して通信できるようにするインタフェースオブジェクトI1およびI2(第1および第2のコードセグメントの一部である場合もない場合もある)を含むものとしてインタフェースを例示している。図30Bを見ると、インタフェースオブジェクトI1およびI2は同じシステムの別のインタフェースとして考えることができ、またオブジェクトI1およびI2さらに媒体Mはそのインタフェースを含むものとして考えることもできる。図30Aおよび30Bは、双方向の流れおよびその流れのいずれかの側のインタフェースを示しているが、いくつかの実装では、一方向のみ情報の流れがある(または後述のようにまったく情報の流れがない)か、または片側にのみインタフェースオブジェクトがある場合がある。例えば、限定はしないが、アプリケーションプログラミングインタフェース(API)、エントリポイント、メソッド、関数、サブルーチン、リモートプロシージャ呼び出し、およびコンポーネントオブジェクトモデル(COM)インタフェースなどの用語は、プログラミングインタフェースの定義内に包含される。   Conceptually, the programming interface can be shown generically, as shown in FIG. 30A or FIG. 30B. FIG. 30A illustrates an interface Interface1 as an information transmission route used by the first and second code segments for communication. FIG. 30B illustrates interface objects I1 and I2 (which may or may not be part of the first and second code segments) that allow the first and second code segments of the system to communicate over the medium M. ) As an example. Looking at FIG. 30B, interface objects I1 and I2 can be thought of as another interface of the same system, and objects I1 and I2 and media M can also be thought of as containing that interface. 30A and 30B show a bidirectional flow and an interface on either side of that flow, but in some implementations there is information flow in only one direction (or no information flow as described below). Or there may be an interface object on one side only. For example, but not limited to, terms such as application programming interface (API), entry point, method, function, subroutine, remote procedure call, and component object model (COM) interface are encompassed within the definition of a programming interface.

このようなプログラミングインタフェースの複数の態様は、第1のコードセグメントが情報(「情報」は、最も広い意味で使用されており、データ、コマンド、要求などを含む)を第2のコードセグメントに送信するためのメソッド、第2のコードセグメントがその情報を受け取るためのメソッド、および情報の構造、系列、構文、編成、スキーマ、タイミング、および内容を含むことができる。この点に関して、基礎となる搬送媒体自体は、媒体が有線であろうと無線であろうと、両方の組合せであろうと、情報がインタフェースにより定義された方法で搬送される限り、そのインタフェースのオペレーションにとっては重要でないと考えられる。いくつかの状況では、情報は、従来の意味で一方向または双方向で受け渡されない場合があるが、それは、1つのコードセグメントが単に第2のコードセグメントにより実行される機能にアクセスする場合のように、情報転送が他のメカニズム(例えば、情報がコードセグメント間の情報の流れとは別のバッファ、ファイルなどに置かれる)を介するか、または存在しない場合があるからである。これらの態様のどれかまたは全部は、例えばコードセグメントが疎結合または密結合の構成のシステムの一部かどうかに応じて、与えられた状況では重要である場合もあり、そのため、このリストは説明を目的としているのであって、制限することを意図していないと考えるべきである。   Several aspects of such a programming interface allow the first code segment to send information ("information" is used in the broadest sense and includes data, commands, requests, etc.) to the second code segment. A method for the second code segment to receive the information, and a structure, sequence, syntax, organization, schema, timing, and content of the information. In this regard, the underlying carrier medium itself, regardless of whether the medium is wired, wireless, or a combination of both, is not relevant to the operation of that interface as long as the information is carried in a manner defined by the interface. Not considered important. In some situations, information may not be passed unidirectionally or bidirectionally in the traditional sense, but only when one code segment accesses a function performed by a second code segment. As such, information transfer may be through other mechanisms (eg, information is placed in a buffer, file, etc., separate from the information flow between code segments) or may not exist. Any or all of these aspects may be important in a given situation, for example depending on whether the code segment is part of a loosely coupled or tightly coupled configuration system, so this list is explained Should be considered as intended and not intended to be limiting.

プログラミングインタフェースのこの概念は、当業者には知られており、本発明の前述の詳細な説明から明らかである。しかし、プログラミングインタフェースを実装する方法はほかにもあり、特に断らない限り、これらも、本明細書に付属する請求項により取り込まれることが意図されている。このような他の方法は、図30Aおよび30Bの簡略化した図よりも詳しい、または複雑なものとして現れる場合があるが、そうであっても、総体的に同じ結果が得られる類似の関数を実行する。そこで、プログラミングインタフェースのいくつかの説明的な他の実装について簡単に述べることにする。   This concept of programming interface is known to those skilled in the art and is apparent from the foregoing detailed description of the invention. However, there are other ways to implement the programming interface, and unless otherwise noted, these are also intended to be incorporated by the claims appended hereto. Such other methods may appear as more detailed or complex than the simplified diagrams of FIGS. 30A and 30B, but nonetheless similar functions that yield the same overall results. Execute. We will now briefly describe some descriptive other implementations of the programming interface.

因数分解:一方のコードセグメントから他方のコードセグメントへの通信は、通信を複数の離散的通信に分割することにより間接的に実行されるようにできる。これは、図31Aおよび31Bに概略が示されている。図に示されているように、いくつかのインタフェースは、機能の分割可能な集合に関して説明することができる。そこで、図30Aおよび30Bのインタフェース機能は、ちょうど24、つまり2×2×3×2と数学的に示すことができるのと同じ結果が得られるように因数分解することができる。したがって、図31Aに例示されているように、インタフェースInterface1により提供される関数を細分し、インタフェースの通信を複数のインタフェースInterface1A、Interface1B、Interface1Cに変換し、しかも同じ結果が得られるようにすることができる。図31Bに例示されているように、インタフェースI1により提供される関数を複数のインタフェースI1a、I1b、I1cに細分し、しかも同じ結果が得られるようにすることができる。同様に、第1のコードセグメントから情報を受け取る第2のコードセグメントのインタフェースI2は、複数のインタフェースI2a、I2b、I2cなどに因数分解することができる。因数分解の際に、第1のコードセグメントとともに含まれるインタフェースの個数は、第2のコードセグメントとともに含まれるインタフェースの個数と一致している必要はない。図31Aおよび31Bの場合のいずれも、インタフェースInterface1およびI1の機能の本質は、それぞれ、図30Aおよび30Bの場合と同じままである。インタフェースの因数分解は、さらに、結合的特性、可換特性、およびその他の数学的特性にも従い、因数分解は理解しにくい場合がある。例えば、オペレーションの順序は重要でない場合があり、そのため、インタフェースにより実行される関数は、コードまたはインタフェースの他の断片により、そのインタフェースに到達するいくらか前に実行されるか、またはシステムの別のコンポーネントにより実行されることができる。さらに、プログラミング技術の通常の技能を有する者であれば、同じ結果を出す異なる関数呼び出しを実行する方法として様々な方法があることを理解できるであろう。   Factorization: Communication from one code segment to the other can be performed indirectly by dividing the communication into a plurality of discrete communications. This is illustrated schematically in FIGS. 31A and 31B. As shown in the figure, some interfaces can be described in terms of a separable set of functions. Thus, the interface function of FIGS. 30A and 30B can be factored so as to obtain the same result that can be mathematically shown as exactly 24, or 2 × 2 × 3 × 2. Therefore, as illustrated in FIG. 31A, the function provided by the interface Interface1 may be subdivided to convert the interface communication into a plurality of interfaces Interface1A, Interface1B, Interface1C, and to obtain the same result. it can. As illustrated in FIG. 31B, the function provided by interface I1 can be subdivided into a plurality of interfaces I1a, I1b, I1c, and the same result can be obtained. Similarly, the interface I2 of the second code segment that receives information from the first code segment can be factored into a plurality of interfaces I2a, I2b, I2c, etc. During the factorization, the number of interfaces included with the first code segment need not match the number of interfaces included with the second code segment. In both cases of FIGS. 31A and 31B, the essence of the functions of interfaces Interface1 and I1 remains the same as in FIGS. 30A and 30B, respectively. Interface factorization is also subject to associative, commutative, and other mathematical characteristics, which may be difficult to understand. For example, the order of operations may not be important, so a function executed by an interface may be executed some time before reaching that interface by code or other piece of the interface, or another component of the system Can be executed by. Further, those having ordinary skill in programming techniques will appreciate that there are various ways to execute different function calls that produce the same result.

再定義:場合によっては、意図した結果をそのまま達成しながら、プログラミングインタフェースのいくつかの態様(例えば、パラメータ)を無視、追加、または再定義することが可能な場合がある。これは、図32Aおよび32Bに例示されている。例えば、図30AのインタフェースInterface1が関数呼び出しSquare(input,precision,output)を含み、呼び出しは、3つのパラメータinput、precision、およびoutputを含み、第1のCode Segmentから第2のCode Segmentに発行されると仮定する。真ん中のパラメータprecisionが与えられたシナリオにおいて無関係であれば、図32Aに示されているように、ただ無視するか、さらには意味のない(この状況では)パラメータと置き換えることが可能である。また、関係のない追加パラメータを加えることも可能である。いずれにせよ、平方の機能は、第2のコードセグメントにより入力が平方された後、出力が返される限り、達成されうる。precisionは、コンピューティングシステムの何らかの下流または他の部分にとって意味のあるパラメータである可能性も十分ありえるが、平方を計算するという狭い目的についてはprecisionは不要であることがわかれば、置き換えるか、または無視することができる。例えば、有効な精度値を受け渡す代わりに、誕生日の日付など意味のない値を渡しても、結果に悪影響を及ぼさないであろう。同様に、図32Bに示されているように、インタフェースI1をインタフェースI1'で置き換えて、再定義して、そのインタフェースへのパラメータを無視するか、または追加する。インタフェースI2は、同様に、インタフェースI2'と再定義することができ、不要なパラメータ、または他のところで処理することができるパラメータを無視するように再定義することができる。ここでの要点は、場合によっては、プログラミングインタフェースは、ある目的には必要のない、パラメータなどの態様を含むことがあり、したがって、それらを無視または再定義するか、または他の目的のために他の場所で処理することができるということである。   Redefinition: In some cases, it may be possible to ignore, add, or redefine some aspect of the programming interface (eg, parameters) while still achieving the intended result. This is illustrated in FIGS. 32A and 32B. For example, the interface Interface1 of FIG. 30A includes a function call Square (input, precision, output), and the call includes three parameters input, precision, and output, and is issued from the first Code Segment to the second Code Segment. Assume that. If the middle parameter precision is irrelevant in a given scenario, it can simply be ignored or even replaced by a meaningless parameter (in this situation) as shown in FIG. 32A. It is also possible to add additional parameters that are not relevant. In any case, the square function can be achieved as long as the output is returned after the input is squared by the second code segment. The precision could be a meaningful parameter for any downstream or other part of the computing system, but if it turns out that the precision is not necessary for the narrow purpose of calculating the square, replace it, or Can be ignored. For example, instead of passing a valid precision value, passing a meaningless value, such as a birthday date, will not adversely affect the result. Similarly, as shown in FIG. 32B, interface I1 is replaced with interface I1 ′ and redefined to ignore or add parameters to that interface. Interface I2 can similarly be redefined as interface I2 ′ and can be redefined to ignore unwanted parameters or parameters that can be processed elsewhere. The point here is that, in some cases, the programming interface may include aspects such as parameters that are not necessary for one purpose, and therefore ignore or redefine them, or for other purposes. It can be processed elsewhere.

インラインコーディング:また、間に入る「インタフェース」が形態を変更するように2つの別々のコードモジュールの機能の一部または全部をマージすることが可能な場合がある。例えば、図30Aおよび30Bの機能は、それぞれ、図33Aおよび33Bの機能に変換することができる。図33Aでは、図30Aの前の第1および第2のコードセグメントは、それらの両方を含む1つのモジュールにマージされる。この場合、コードセグメントは、そのまま、他のインタフェースと通信していることが可能であるが、インタフェースを、単一モジュールにより好適な形態に適合させることができる。そこで、例えば、形式的CallおよびReturnステートメントは、もはや、必要なくなるが、インタフェースInterface1による類似の処理または応答はいぜんとして有効である。同様に、図33Bに示されているように、図30BからのインタフェースI2の一部(または全部)を、インラインでインタフェースI1に書き込んで、インタフェースI1”を形成することができる。例示されているように、インタフェースI2はI2aとI2bに分割され、インタフェース部I2aは、インタフェースI1とインラインでコーディングされており、インタフェースI1”を形成する。具体的な例として、図30BのインタフェースI1は、インタフェースI2によって受け取られ、第2のコードセグメントにより(平方するために)入力とともに渡された値を処理した後、平方された結果を出力とともに戻す、関数呼び出しsquare(input,output)を実行すると考える。このよう場合、第2のコードセグメントによりされる処理(入力の平方)は、インタフェースを呼び出さずに、第1のコードセグメントにより実行することができる。   Inline coding: It may also be possible to merge some or all of the functions of two separate code modules so that the intervening “interface” changes form. For example, the functions of FIGS. 30A and 30B can be converted to the functions of FIGS. 33A and 33B, respectively. In FIG. 33A, the first and second code segments before FIG. 30A are merged into one module that includes both. In this case, the code segment can still be in communication with other interfaces, but the interface can be adapted to a more suitable form by a single module. Thus, for example, formal Call and Return statements are no longer needed, but similar processing or response by interface Interface1 is still valid. Similarly, as shown in FIG. 33B, a portion (or all) of interface I2 from FIG. 30B can be written inline to interface I1 to form interface I1 ″. Thus, the interface I2 is divided into I2a and I2b, and the interface unit I2a is coded in-line with the interface I1 to form the interface I1 ″. As a specific example, interface I1 of FIG. 30B processes the value received by interface I2 and passed with the input (to square) by the second code segment, and then returns the squared result with the output. The function call square (input, output) is assumed to be executed. In this case, the processing (input square) performed by the second code segment can be performed by the first code segment without calling the interface.

分離:一方のコードセグメントから他方のコードセグメントへの通信は、通信を複数の離散的通信に分割することにより間接的に実行されるようにできる。これは、図34Aおよび34Bに概略が示されている。図34Aに示されているように、ミドルウェアの1つまたは複数の断片((複数の)Divorce Interface。機能および/またはインタフェース関数をオリジナルのインタフェースから分離するので)が用意されており、これにより、別のインタフェース、この場合インタフェースInterface2A、Interface2B、およびInterface2Cに適合するように第1のインタフェースInterface1上の通信を変換する。これは、例えば、Interface1プロトコルに従ってオペレーティングシステムと通信するように設計されているアプリケーションのインストールベースがあるが、そのときに、オペレーティングシステムは異なるインタフェース、この場合、インタフェースInterface2A、Interface2B、およびInterface2Cを使用するように変更される場合に行うことが可能である。この要点は、第2のコードセグメントにより使用されるオリジナルのインタフェースが変更され、第1のコードセグメントにより使用されるインタフェースと互換性がとれなくなり、そのため、媒介を使用して旧インタフェースと新インタフェースとの互換性をとるという点である。同様に、図34Bに示されているように、第3のコードセグメントを、インタフェースI1からの通信を受け取るために分離インタフェースDI1とともに導入し、インタフェース機能を例えばDI2と連携するが、同じ機能的結果を供給するように再設計されたインタフェースI2aおよびI2bに送るために分離インタフェースDI2とともに導入することができる。同様に、DI1およびDI2は、同じまたは類似の機能的結果が得られるようにしながら、連携して動作し、図30BのインタフェースI1およびI2の機能を新しいオペレーティングシステムに翻訳することができる。   Separation: Communication from one code segment to the other can be performed indirectly by dividing the communication into a plurality of discrete communications. This is illustrated schematically in FIGS. 34A and 34B. As shown in FIG. 34A, one or more pieces of middleware are provided (since the function (s) and / or interface functions are separated from the original interface), The communication on the first interface Interface1 is converted to be compatible with another interface, in this case the interfaces Interface2A, Interface2B, and Interface2C. This is for example an installed base of applications designed to communicate with the operating system according to the Interface1 protocol, when the operating system uses different interfaces, in this case the interfaces Interface2A, Interface2B and Interface2C It can be done when changed. The main point is that the original interface used by the second code segment is changed and is not compatible with the interface used by the first code segment, so the intermediary is used to connect the old and new interfaces. It is a point of taking compatibility. Similarly, as shown in FIG. 34B, a third code segment is introduced with the separation interface DI1 to receive communication from the interface I1, and the interface function works with, for example, DI2, but with the same functional result. Can be introduced with the separation interface DI2 to send to the redesigned interfaces I2a and I2b. Similarly, DI1 and DI2 can work together to translate the functionality of interfaces I1 and I2 of FIG. 30B into a new operating system, while ensuring the same or similar functional results.

書き換え:さらに他の可能な変更形態として、コードを動的に書き換えることで、インタフェース機能を他の何かの機能で置き換えるが、ただし全体として同じ結果が得られるようにする方法がある。例えば、中間言語(例えば、Microsoft IL、Java(登録商標)ByteCodeなど)で書かれたコードセグメントを実行環境(.Netフレームワーク、Java(登録商標)ランタイム環境、または他の類似のランタイム型環境によって実現されるような)内のジャストインタイム(JIT)コンパイラまたはインタプリタに送るシステムもある。JITコンパイラは、第1のコードセグメントから第2のコードセグメントに通信を動的に変換する、つまり、第2のコードセグメント(オリジナルまたは異なる第2のコードセグメントのいずれか)が必要とするとおりにそれらを異なるインタフェースに適合させるように書くことができる。これは、図35Aおよび35Bに示されている。図35Aからわかるように、このアプローチは上述の分離シナリオに似ている。これは、例えば、アプリケーションのインストールベースがInterface1プロトコルに従ってオペレーティングシステムと通信するように設計されているが、そのときに、オペレーティングシステムは異なるインタフェースを使用するように変更される場合に行うことが可能である。JITコンパイラは、インストールベースのアプリケーションからオペレーティングシステムは新しいインタフェースへ通信をオンザフライで適合させる場合に使用することが可能である。図35Bに示されているように、(複数の)インタフェースを動的に書き換えるこのアプローチを適用することで、動的に因数分解するか、または他の何らかの手段により、(複数の)インタフェースも変更することができる。   Rewriting: Yet another possible modification is to dynamically rewrite the code to replace the interface function with some other function, but to achieve the same overall result. For example, code segments written in an intermediate language (eg, Microsoft IL, Java® ByteCode, etc.) can be executed by an execution environment (.Net framework, Java® runtime environment, or other similar runtime type environment). Some systems send to just-in-time (JIT) compilers or interpreters within (as implemented). The JIT compiler dynamically translates communication from the first code segment to the second code segment, that is, as the second code segment (either the original or a different second code segment) requires. They can be written to fit different interfaces. This is illustrated in FIGS. 35A and 35B. As can be seen from FIG. 35A, this approach is similar to the separation scenario described above. This can be done, for example, if the application install base is designed to communicate with the operating system according to the Interface1 protocol, but at that time the operating system is changed to use a different interface. is there. The JIT compiler can be used when the installation system adapts communications on the fly from the installed base application to the new interface. Applying this approach of dynamically rewriting the interface (s), as shown in FIG. 35B, dynamically modifies the interface (s) either by factoring or by some other means can do.

他の実施形態を介してインタフェースと同じまたは類似の結果を得る上述のシナリオは、さらに、様々な方法で、直列に、および/または並列に、または他の介入コードを使用して、組み合わせることもできる。こうして、上記の他の実施形態は、相互排他的ではなく、図30Aおよび30Bに示されている汎用シナリオと同じまたは同等のシナリオを生成するために混合し、照合し、組み合わせることができる。また、ほとんどのプログラミング構文の場合と同様、本明細書で説明できないが、それでも、本発明の精神および範囲により表される、インタフェースの同じまたは類似の機能を実現する他の類似の方法があることにも注意されたい、つまり、少なくとも一部は、インタフェースの値の基礎となるインタフェースによって表される機能および有効にされる有利な結果であることに注意されたい。   The above scenarios that obtain the same or similar results as the interface via other embodiments can also be combined in various ways, serially and / or in parallel, or using other intervention codes. it can. Thus, the other embodiments described above are not mutually exclusive and can be mixed, collated, and combined to produce the same or equivalent scenario as the generic scenario shown in FIGS. 30A and 30B. Also, as is the case with most programming syntaxes, there are still other similar methods that cannot be described here, but that still implement the same or similar functions of the interface, represented by the spirit and scope of the present invention. Note also that, at least in part, the functionality represented by the interface underlying the value of the interface and the beneficial results to be enabled.

III.同期API
Itemベースのハードウェア/ソフトウェアインタフェースシステムにおいて同期に対するいくつかのアプローチが考えられる。セクションAでは、本発明のいくつかの実施形態を開示し、セクションBでは、同期に関してAPIの様々な実施形態に注目する。
III. Synchronous API
Several approaches to synchronization are possible in an Item-based hardware / software interface system. Section A discloses several embodiments of the present invention, and Section B focuses on various embodiments of the API with respect to synchronization.

A.同期の概要
本発明のいくつかの実施形態において、図3に関し、ストレージプラットフォームは、(i)ストレージプラットフォーム(それぞれ自データストア302を備える)の複数のインスタンスが柔軟な規則の集まりに従ってその内容の部分の同期をとれるようにし、(ii)本発明のストレージプラットフォームのデータストアと専用プロトコルを実装する他のデータソースとの同期をとるサードパーティ用のインフラストラクチャを備える同期サービス330を提供する。
A. Synchronization Overview In some embodiments of the present invention, with respect to FIG. 3, the storage platform is: (i) multiple instances of a storage platform (each with its own data store 302) are part of its content according to a flexible set of rules. And (ii) provide a synchronization service 330 comprising a third-party infrastructure that synchronizes the data store of the storage platform of the present invention with other data sources that implement a dedicated protocol.

ストレージプラットフォーム間同期は、参加「レプリカ」のグループのうちで実行される。例えば、図3を参照すると、おそらく異なるコンピュータシステム上で稼働しているであろう、ストレージプラットフォームの他のインスタンスの制御の下で、ストレージプラットフォーム300のデータストア302と他のリモートデータストア308との同期を与えることが望ましい場合がある。このグループの全体的な帰属関係は、必ずしも、与えられた時刻与えれたレプリカに知られているわけではない。   Inter-storage platform synchronization is performed among the participating “replica” groups. For example, referring to FIG. 3, the storage platform 300's data store 302 and other remote data store 308 are under the control of other instances of the storage platform, possibly running on different computer systems. It may be desirable to provide synchronization. The overall membership of this group is not necessarily known to a given replica at a given time.

異なるレプリカは、変更を独立して行うことができる(つまり、同時に)。同期処理のプロセスは、他のレプリカによって行われる変更をすべてのレプリカに気づかせることとして定義される。この同期機能は、本質的に、マルチマスターである。   Different replicas can make changes independently (ie, simultaneously). The process of synchronization is defined as making all replicas aware of changes made by other replicas. This synchronization function is essentially multi-master.

本発明の同期機能では、レプリカは以下のようにできる。
・ 他のレプリカがどの変更を認識するかを決定する。
・ このレプリカが認識しない変更に関する情報を要求する。
・ 他のレプリカが認識しない変更に関する情報を伝達する。
・ 2つの変更がいつ互いに競合するかを決定する。
・ 変更をローカルで適用する。
・ 競合する解決を他のレプリカに伝達し、収束を保証する。
・ 競合する解決に対する指定されたポリシーに基づき競合状態を解決する。
In the synchronization function of the present invention, the replica can be as follows.
Determine what changes other replicas will recognize.
Request information about changes not recognized by this replica.
Communicate information about changes that are not recognized by other replicas.
Determine when two changes conflict with each other.
• Apply changes locally.
Communicate competing solutions to other replicas to ensure convergence.
-Resolve the conflict condition based on the specified policy for conflict resolution.

1.ストレージプラットフォームとストレージプラットフォームとの間の同期処理
本発明のストレージプラットフォームの同期処理サービスの主要な適用は、ストレージプラットフォームの複数のインスタンスの同期をとることである(それぞれ、自データストアを有する)。同期処理サービスは、ストレージプラットフォームのスキーマレベルで動作する(データベースエンジン314の基礎のテーブルではなく)。したがって、例えば、「Scopes」は、後述のように同期を定義するために使用される。
1. Synchronization Processing Between Storage Platforms The main application of the storage platform synchronization processing service of the present invention is to synchronize multiple instances of the storage platform (each with its own data store). The synchronous processing service operates at the schema level of the storage platform (not the underlying table of the database engine 314). Thus, for example, “Scopes” is used to define synchronization as described below.

同期処理サービスは、「純(正味)変化(net changes)」の原理に基づいて動作する。同期処理サービスでは、個別のオペレーションを(トランザクション複製などにより)記録し、送信するのではなく、それらのオペレーションの最終結果を送り、そのため、複数のオペレーションの結果を得られた単一の変更に統合することが多い。   The synchronous processing service operates on the principle of “net changes”. Synchronous processing services send the final results of those operations, rather than recording and sending individual operations (such as transactional replication), thus consolidating the results of multiple operations into a single change Often to do.

同期処理サービスは、一般的にはトランザクション境界を尊重しない。つまり、単一のトランザクションでストレージプラットフォームのデータストアに2つの変更が加えられた場合、それらの変更が他のすべてのレプリカに最小単位として適用されることは保証されない−一方が他方なしで現れることがある。この原理の例外は、同じトランザクションで2つの変更が同じItemに加えられた場合に、それらの変更は送信され、他のレプリカに最小単位として適用されることが保証されるという点である。したがって、Itemsは、同期処理サービスの整合性ユニットである。   Synchronous processing services generally do not respect transaction boundaries. That is, if two changes are made to the storage platform data store in a single transaction, it is not guaranteed that those changes will be applied to all other replicas as a granular unit-one appears without the other There is. An exception to this principle is that if two changes are made to the same Item in the same transaction, they are sent and guaranteed to be applied as a minimum unit to other replicas. Therefore, Items is the consistency unit of the synchronous processing service.

a)同期(Sync)制御アプリケーション
どのアプリケーションも、同期処理サービスに接続し、同期処理オペレーションを開始することができる。そのようなアプリケーションは、同期処理を実行するために必要なすべてのパラメータを用意する(以下のsyncプロファイルを参照)。このようなアプリケーションは、本明細書では、同期制御アプリケーション(SCA)と呼ばれる。
a) Synchronization Control Application Any application can connect to the synchronization processing service and initiate a synchronization processing operation. Such an application provides all the parameters necessary to execute the synchronization process (see sync profile below). Such an application is referred to herein as a synchronous control application (SCA).

2つのストレージプラットフォームインスタンスの同期をとる場合、syncはSCAにより片方の側で開始される。そのSCAは、リモートパートナと同期することをローカル同期処理サービスに通知する。他方の側では、同期処理サービスは、発信側マシンから同期処理サービスにより送られるメッセージによって目覚める。これは、送信先マシン上に存在する永続的構成情報(以下のマッピングを参照)に基づいて応答する。同期処理サービスは、スケジュールに従って実行されるか、またはイベントに対する応答として実行されることが可能である。これらの場合に、スケジュールを実行する同期処理サービスがSCAとなる。   When synchronizing two storage platform instances, sync is initiated on one side by the SCA. The SCA notifies the local synchronization service that it will synchronize with the remote partner. On the other side, the synchronization service is awakened by a message sent by the synchronization service from the originating machine. This responds based on persistent configuration information (see mapping below) present on the destination machine. The synchronous processing service can be executed according to a schedule or in response to an event. In these cases, the synchronous processing service that executes the schedule is the SCA.

同期処理を有効にするには、2つのステップが実行される必要がある。第1に、スキーマデザイナが適切なsyncの意味でストレージプラットフォームスキーマに注釈を入れなければならない(後述のようにChange Unitsを指定する)。第2に、同期処理は、同期処理に関わるストレージプラットフォームのインスタンスを持つすべてのマシン上で適切に構成されなければならない(後述のように)。   Two steps need to be performed to enable the synchronization process. First, the schema designer must annotate the storage platform schema with the appropriate sync meaning (specify Change Units as described below). Second, the synchronization process must be properly configured on all machines that have storage platform instances involved in the synchronization process (as described below).

b)スキーマ注釈
同期処理サービスの基本概念は、Change Unitの概念である。Change Unitは、ストレージプラットフォームにより個別に追跡されるスキーマ最小断片である。すべてのChange Unitについて、同期処理サービスは、最後のsync以降に変化したか、変化しなかったかを判別することができる。
b) Schema annotation The basic concept of the synchronous processing service is the concept of Change Unit. The Change Unit is the smallest schema fragment that is tracked individually by the storage platform. For all Change Units, the synchronization processing service can determine whether it has changed since the last sync or not.

スキーマでChange Unitsを指定することは、複数の目的に使用される。第1に、これは、同期処理サービスが回線上でどれだけ混雑しているかを判別する。Change Unit内で変更が加えられた場合、同期処理サービスはChange Unitのどの部分が変更されたかを認識していないので、Change Unit全体が他のレプリカに送信される。第2に、これは、競合検出の精度を決定する。2つの同時変更(これらの用語は、後のセクションで詳しく定義される)が同じChange Unitに対し加えられた場合、同期処理サービスは競合の通知を発し、その一方で、同時変更が異なるChange Unitに加えられた場合、競合の通知は発せず、変更は自動的にマージされる。第3に、これは、システムによって保持されているメタデータの量を強く左右する。同期処理サービスのメタデータの多くは、Change Unit毎に保持され、そのため、Change Unitを小さくすれば、syncのオーバーヘッドが大きくなる。   Specifying Change Units in the schema is used for multiple purposes. First, it determines how busy the synchronization service is on the line. When a change is made in the Change Unit, the synchronization processing service does not know which part of the Change Unit has been changed, so the entire Change Unit is sent to the other replicas. Second, it determines the accuracy of conflict detection. If two simultaneous changes (these terms are defined in detail in later sections) are made to the same Change Unit, the synchronization service will issue a conflict notification, while the Change Units will have different simultaneous changes. Will not be notified of the conflict and changes will be merged automatically. Third, this strongly affects the amount of metadata held by the system. Most of the metadata of the synchronization processing service is held for each change unit. Therefore, if the change unit is reduced, the sync overhead increases.

Change Unitsを定義するには、正しいトレードオフを見つける必要がある。そういうわけで、同期処理サービスを使用すると、スキーマデザイナはそのプロセスに関与することができる。   To define Change Units, we need to find the right tradeoff. That's why using the synchronous processing service allows the schema designer to participate in the process.

一実施形態では、同期処理サービスは、要素よりも大きなChange Unitsをサポートしていない。しかし、スキーマデザイナが要素よりも小さいChange Unitsを指定すること−つまり、要素の複数の属性を1つの独立したChange Unitsにグループ化すること−はサポートしている。その実施形態では、これは、以下の構文を使用して行われる。   In one embodiment, the synchronization processing service does not support Change Units larger than the element. However, it is supported that the schema designer specifies Change Units that are smaller than the element—that is, grouping multiple attributes of an element into one independent Change Units. In that embodiment, this is done using the following syntax:

Figure 2007503050
Figure 2007503050

c)同期構成
データの特定の部分の同期を維持したいストレージプラットフォームパートナのグループは、syncコミュニティと呼ばれる。コミュニティのメンバが同期を維持したい場合、必ずしも、まったく同じ方法でデータを表すわけではない、つまり、syncパートナは、同期処理しているデータを変換することができる。
c) Synchronous configuration A group of storage platform partners that wants to keep a particular part of the data synchronized is called the sync community. If community members want to remain synchronized, they do not necessarily represent the data in exactly the same way, that is, the sync partner can convert the data being synchronized.

ピアツーピアのシナリオでは、ピアがそのパートナのすべてについて変換マッピングを維持することは実際的ではない。そうする代わりに、同期処理サービスは、「コミュニティフォルダ」を定義するアプローチをとる。コミュニティフォルダは、すべてのコミュニティメンバが同期をとる仮想「共有フォルダ」を表す抽象化である。   In a peer-to-peer scenario, it is impractical for a peer to maintain a transformation mapping for all of its partners. Instead, the synchronization processing service takes an approach of defining “community folders”. A community folder is an abstraction that represents a virtual “shared folder” in which all community members are synchronized.

この概念は、例を使うと最もよくわかる。Joeが複数のコンピュータのMy Documentsフォルダの同期をとりたい場合、Joeは、例えば、JoesDocumentsというコミュニティフォルダを定義する。次に、すべてのコンピュータ上で、Joeは仮想JoesDocumentsフォルダとローカルのMy Documentsフォルダとの間のマッピングを構成する。この時点以降、Joeのコンピュータが互いに同期した場合、そのローカルアイテムではなく、JoesDocuments内のドキュメントに関してやり取りすることになる。このようにして、すべてのJoeのコンピュータは相手が誰であるかを知らなくても互いに理解する−そのコミュニティフォルダが同期コミュニティの共通語となるのである。   This concept is best understood with an example. When Joe wants to synchronize My Documents folders on multiple computers, Joe defines, for example, a community folder called Joes Documents. Next, on all computers, Joe configures a mapping between the virtual Joe Documents folder and the local My Documents folder. From this point on, if Joe's computers synchronize with each other, they will interact with the document in JoesDocuments, not its local items. In this way, all Joe's computers understand each other without knowing who they are—the community folder is the common language for the sync community.

同期処理サービスの構成は、(1)ローカルフォルダとコミュニティフォルダとの間のマッピングを定義するステップ、(2)何が同期されるか(例えば、同期する相手、送信すべき部分集合、および受信すべきもの)を決定するsyncプロファイルを定義するステップ、および(3)異なるsyncプロファイルが実行されるスケジュールを定義する、または手動で実行するステップの3つのステップからなる。   The configuration of the synchronization processing service consists of (1) defining the mapping between the local folder and the community folder, (2) what is synchronized (eg, what to synchronize with, the subset to be transmitted, and what to receive). It consists of three steps: defining a sync profile to determine (kimono), and (3) defining a schedule on which different sync profiles are executed or executing manually.

(1)コミュニティフォルダ−マッピング
コミュニティフォルダマッピングは、個々のマシン上にXML構成ファイルとして格納される。それぞれのマッピングは、以下のスキーマを持つ。
/mappings/communityFolder
この要素は、このマッピングの対象となるコミュニティフォルダの名前を指定する。名前はフォルダの構文規則に従う。
(1) Community folder-mapping Community folder mapping is stored as an XML configuration file on each machine. Each mapping has the following schema.
/ mappings / communityFolder
This element specifies the name of the community folder that is the target of this mapping. The name follows the folder syntax rules.

/mappings/localFolder
この要素は、このマッピングの変換先のローカルフォルダの名前を指定する。名前はフォルダの構文規則に従う。フォルダは、マッピングが有効であるためにすでに存在していなければならない。このフォルダ内のアイテムは、このマッピングに従って同期対象とみなされる。
/ mappings / localFolder
This element specifies the name of the local folder to which this mapping is converted. The name follows the folder syntax rules. The folder must already exist for the mapping to be valid. Items in this folder are considered for synchronization according to this mapping.

/mappings/transformations
この要素は、アイテムをコミュニティフォルダからローカルフォルダに、またその逆方向に変換する方法を定義する。存在しない、または空の場合、変換は実行されない。特に、これは、IDがマッピングされないことを意味する。この構成は、主に、Folderのキャッシュを作成する際に使用される。
/ mappings / transformations
This element defines how to convert an item from a community folder to a local folder and vice versa. If not present or empty, no conversion is performed. In particular, this means that no ID is mapped. This configuration is mainly used when creating a folder cache.

lmappings/transformations/mapIDs
この要素は、コミュニティIDを再利用するのではなく、新しく生成されたローカルIDがコミュニティフォルダからマッピングされたアイテムのすべてに割り当てられることを要求する。Sync Runtimeは、アイテムの往復変換を行うIDマッピングを保持する。
lmappings / transformations / mapIDs
This element requires that the newly generated local ID is assigned to all of the mapped items from the community folder, rather than reusing the community ID. Sync Runtime holds ID mapping that performs round-trip conversion of items.

/mappings/transformations/localRoot
この要素は、コミュニティフォルダ内のすべてのルートアイテムが指定されたルートの子にされることを要求する。
/ mappings / transformations / localRoot
This element requires that all root items in the community folder be children of the specified root.

/mappings/runAs
この要素は、このマッピングに対する要求が処理される際の権限を制御する。存在しない場合、送信者が想定される。
/ mappings / runAs
This element controls the authority with which requests for this mapping are processed. If not present, a sender is assumed.

/mappings/runAs/sender
この要素が存在すると、このマッピングへのメッセージの送信者は、偽装され、要求はその信用証明書に従って処理されなければならない。
/ mappings / runAs / sender
If this element is present, the sender of the message to this mapping is impersonated and the request must be processed according to its credentials.

(2)プロファイル
同期プロファイルは、同期をキックオフするために必要なパラメータ一式である。これは、SCAにより、同期処理を開始するためSync Runtimeに供給される。ストレージプラットフォーム同士の同期をとるための同期プロファイルは、以下の情報を含む。
・ Local Folder、変更の送り元および送り先として使用される。
・ 同期をとるRemote Folder名−このFolderは、上で定義されたとおりにマッピングを使用してリモートパートナからパブリッシュされなければならない。
・ Direction−同期処理サービスは、送信のみ、受信のみ、および送受信同期をサポートする。
・ Local Filter−リモートパートナに送信するローカル情報を選択する。ローカルフォルダに対するストレージプラットフォームクエリとして表される。
・ Remote Filter−リモートパートナから取り出すリモート情報を選択する−コミュニティフォルダに対するストレージプラットフォームクエリとして表される。
・ Transformations−ローカル形式のアイテムの変換方法を定義する。
・ ローカルセキュリティ−リモート終点から取り出された変更がリモート終点(偽装)の許可を得て適用するか、またはローカルで同期を開始したユーザの許可を得て適用するかを指定する。
・ 競合解決ポリシー−競合が拒絶されるか、ログに記録されるか、または自動的に解決されるかを指定する−後者の場合、使用する競合リゾルバとともにそれに対する構成パラメータを指定する。
(2) Profile The synchronization profile is a set of parameters necessary for kicking off synchronization. This is supplied by the SCA to Sync Runtime to start the synchronization process. The synchronization profile for synchronizing storage platforms includes the following information.
• Local Folder, used as a change source and destination.
Remote Folder name to synchronize-This Folder must be published from the remote partner using the mapping as defined above.
Direction-synchronization service supports transmission only, reception only, and transmission / reception synchronization.
Local Filter—Selects local information to send to the remote partner. Expressed as a storage platform query for local folders.
Remote Filter—Select remote information to retrieve from remote partner—Represented as a storage platform query for community folders.
Transformations—Defines how to convert items in local format.
Local security-specifies whether changes retrieved from the remote endpoint are applied with the permission of the remote endpoint (impersonation) or with the permission of the user who initiated the synchronization locally.
Conflict resolution policy-specifies whether conflicts are rejected, logged or automatically resolved-in the latter case, specify the configuration parameters for it along with the conflict resolver to use.

同期処理サービスは、同期プロファイルの単純構築を可能にするランタイムCLRクラスを提供する。プロファイルは、さらに、格納を簡単に行えるようにXMLファイルとの間のシリアライズも行える(スケジュールと一緒であるのが多い)。しかし、すべてのプロファイルが格納されるストレージプラットフォーム内の標準的な場所はなく、SCAは、それを永続せずにその場でプロファイルを構築できるため願ってもないものである。同期を開始するためにローカルマッピングを用意する必要がないことに注意されたい。すべての同期情報は、プロファイル内に指定することができる。しかし、マッピングは、リモート側で開始された同期要求に応答するために必要である。   The synchronization processing service provides a runtime CLR class that allows simple construction of synchronization profiles. Profiles can also be serialized with XML files for easy storage (often with schedules). However, there is no standard place in the storage platform where all profiles are stored, and the SCA is hopeless because it can build profiles on the fly without persisting it. Note that there is no need to provide a local mapping to initiate synchronization. All synchronization information can be specified in the profile. However, mapping is necessary to respond to synchronization requests initiated on the remote side.

(3)スケジュール
一実施形態では、同期処理サービスは、それ専用のスケジューリングインフラストラクチャを用意しない。その代わりに、このタスクを実行するために他のコンポーネントに頼る−Microsoft Windows(登録商標)オペレーティングシステムに付属するWindows(登録商標)Schedulerを使用する。同期処理サービスは、SCAとして動作し、XMLファイルに保存されている同期プロファイルに基づいて同期をトリガするコマンドラインユーティリティを備える。このユーティリティを使用すると、スケジュールに従って、またはユーザがログオンまたはログオフするなどのイベントへの応答として同期処理を実行するようにWindows(登録商標)Schedulerを非常に簡単に構成できる。
(3) Schedule In one embodiment, the synchronization processing service does not provide its own scheduling infrastructure. Instead, it relies on other components to perform this task-using the Windows (R) Scheduler that comes with the Microsoft Windows (R) operating system. The synchronization processing service comprises a command line utility that operates as an SCA and triggers synchronization based on a synchronization profile stored in an XML file. Using this utility, Windows® Scheduler can be very easily configured to perform a synchronization process according to a schedule or in response to an event such as a user logging on or off.

d)競合回避処理
同期処理サービスにおける競合処理は、(1)変更適用時に実行される、競合検出−このステップでは、変更が安全に適用可能か判別する、(2)自動競合解決およびログ記録−このステップでは(競合が検出された直後に実行される)、競合を解決できるか自動競合リゾルバに問い合わせがゆき、できなればオプションで競合をログに記録できる、(3)競合検査および解決−このステップは、何らかの競合がログに記録されている場合に実行され、同期セッションの状況の外部で実行されるが、このときに、ログに記録された競合は解決され、ログから削除されるようにできる−の3つの段階に分けられる。
d) Conflict avoidance process The conflict process in the synchronous processing service is: (1) Conflict detection executed at the time of applying a change-this step determines whether the change can be safely applied; (2) Automatic conflict resolution and logging- This step (executed immediately after a conflict is detected) queries the auto-conflict resolver to see if it can be resolved, and optionally logs the conflict (3) Conflict checking and resolution-this The step is executed if any conflicts are logged and executed outside the status of the sync session so that the logged conflicts are resolved and removed from the log Can be divided into three stages.

(1)競合検出
本発明の実施形態では、同期処理サービスは、知識ベースと制約ベースの2種類の競合を検出する。
(1) Conflict detection In the embodiment of the present invention, the synchronization processing service detects two types of conflicts, knowledge base and constraint base.

(a)知識ベースの競合
知識ベースの競合は、2つのレプリカが同じChange Unitに対し独立の変更を加えたときに発生する。2つの変更は、それらが互いの変更を関知せずに行われる場合に独立して呼び出される−つまり、第1のバージョンは、第2のバージョンについての知識の対象とならず、またその逆もいえる。同期処理サービスは、上述のように、レプリカの知識に基づいてそのようなすべての競合を自動的に検出する。
(A) Knowledge Base Conflict Knowledge base conflict occurs when two replicas make independent changes to the same Change Unit. Two changes are called independently if they are made without knowing each other's changes-that is, the first version is not subject to knowledge of the second version and vice versa. I can say that. The synchronization processing service automatically detects all such conflicts based on replica knowledge, as described above.

競合をChange Unitのバージョン履歴におけるフォークと考えると役立つことがある。Change Unitの存続期間中に競合が発生しない場合、そのバージョン履歴は単純連鎖−それぞれの変更は前の変更の後に発生する−である。知識ベースの競合の場合、2つの変更は並行して発生し、そのため、連鎖は分割され、バージョンツリーとなる。   It can be useful to think of a conflict as a fork in the Change Unit version history. If no conflict occurs during the life of the Change Unit, its version history is a simple chain—each change occurs after the previous change. In the case of knowledge base conflicts, the two changes occur in parallel, so the chain is split into a version tree.

(b)制約ベースの競合
いっしょに適用された場合に独立の変更が完全性制約に違反する場合がある。例えば、2つのレプリカが同じディレクトリ内に同じ名前を持つファイルを作成しようとすると、そのような競合が発生するおそれがある。
(B) Constraint-based conflicts When applied together, independent changes may violate integrity constraints. For example, if two replicas try to create a file with the same name in the same directory, such a conflict may occur.

制約ベースの競合は、2つの独立した変更を伴うが(知識ベースの競合とまったく同様に)、同じChange Unitには影響を及ぼさない。むしろ、異なるChange Unitsに影響を及ぼすが、制約がそれらの間に存在する。   Constraint-based conflicts involve two independent changes (just like knowledge-based conflicts) but do not affect the same Change Unit. Rather, it affects different Change Units, but there are constraints between them.

同期処理サービスは、変更適用時に制約違反を検出し、制約ベースの競合の通知を自動的に発する制約ベースの競合を解決するには、通常、制約に違反しないような方法で変更を修正するカスタムコードを必要とするが、同期処理サービスは、そのようなことを行うための汎用メカニズムを備えていない。   Synchronous processing services detect constraint violations when applying changes and automatically issue constraint-based conflict notifications. To resolve constraint-based conflicts, a custom modification usually does not violate the constraint. Although code is required, synchronous processing services do not provide a general purpose mechanism for doing so.

(2)競合処理
競合が検出されると、同期処理サービスは、(1)変更を拒絶し、それを送信者に送り返すアクション、(2)競合を競合ログに記録するアクション、または(3)競合を自動的に解決するアクションのうちの1つ(同期プロファイル内の同期イニシエータにより選択される)を実行することができる。
(2) Conflict processing When a conflict is detected, the synchronization processing service (1) action to reject the change and send it back to the sender, (2) action to record the conflict in the conflict log, or (3) conflict One of the actions that automatically resolves (selected by the synchronization initiator in the synchronization profile) can be performed.

変更が拒絶された場合、同期処理サービスは、変更がレプリカに到着しなかったかのように動作する。否定応答が発信者側に送り返される。この解決ポリシーは、主に、競合のログ記録が可能でないヘッドレスレプリカ(ファイルサーバなど)で使用することができる。その代わりに、そのようなレプリカは拒絶することにより競合を処理するように他のレプリカを強制する。   If the change is rejected, the synchronization processing service behaves as if the change did not arrive at the replica. A negative response is sent back to the caller. This resolution policy can be used primarily with headless replicas (such as file servers) where conflict logging is not possible. Instead, such replicas force other replicas to handle the conflict by rejecting.

同期イニシエータは、同期プロファイルで競合解決を構成する。同期処理サービスは、以下のようにして単一プロファイル内の複数の競合リゾルバの組合せをサポートする−第1に、どれか1つが成功するまで次々に試みられる競合リゾルバのリストを指定し、第2に、競合リゾルバを競合のタイプに関連付ける、例えば、更新と更新との間の知識ベースの競合を1つのリゾルバに振り向け、他の競合をすべてログに振り向ける。   The synchronization initiator configures conflict resolution with the synchronization profile. The synchronous processing service supports the combination of multiple conflict resolvers in a single profile as follows-first, specify a list of conflict resolvers that will be tried one after the other until one succeeds; First, associate a conflict resolver with a type of conflict, for example, direct knowledge-based conflicts between updates to one resolver and all other conflicts to the log.

(a)自動競合解決
同期処理サービスは、多数の既定の競合リゾルバを備える。このリストは以下のものを含む。
・ local−wins:ローカルに格納されているデータとの競合がある場合に受け取った変更を破棄する。
・ remote−wins:受け取った変更との競合がある場合にローカルデータを破棄する。
・ last−writer−wins:変更のタイムスタンプに基づきChange Unitに従ってlocal−winsまたはremote−winsのいずれかを選択する(同期処理サービスは、一般に、クロック値に依存しないことに注意されたい。この競合リゾルバはその規則に対する唯一の例外である)。
・ Deterministic:すべてのレプリカ上で同じであることを保証される方法で勝利者を選択するが、他の方法では意味がない−同期処理サービスの一実施形態では、この機能を実装するためにパートナIDの辞書式比較を使用する。
(A) Automatic conflict resolution The synchronization processing service includes a number of default conflict resolvers. This list includes:
Local-wins: discard changes received when there is a conflict with locally stored data.
Remote-wins: Discard local data if there is a conflict with the received change.
Last-writer-wins: select either local-wins or remote-wins according to the Change Unit based on the timestamp of the change (note that synchronization processing services are generally independent of clock values. This contention The resolver is the only exception to that rule).
Deterministic: Selects the winner in a way that is guaranteed to be the same on all replicas, but otherwise has no meaning—in one embodiment of the synchronization processing service, a partner is required to implement this functionality. Use ID lexicographic comparison.

さらに、ISVは、独自の競合リゾルバを実装し、インストールすることができる。カスタム競合リゾルバは、構成パラメータを受け付けることができ、そのようなパラメータは、同期プロファイルのConflict ResolutionセクションにあるSCAにより指定されなければならない。   In addition, ISVs can implement and install their own competitive resolvers. A custom conflict resolver can accept configuration parameters, and such parameters must be specified by the SCA in the Conflict Resolution section of the synchronization profile.

競合リゾルバが競合を処理すると、これは、(競合変更の代わりに)実行される必要のあるオペレーションのリストをランタイムに返す。その後、同期処理サービスは、競合ハンドラ側で考慮していた内容を含むようにリモート知識を適切に調整してから、それらのオペレーションを適用する。   When the conflict resolver handles the conflict, it returns to the runtime a list of operations that need to be performed (instead of changing the conflict). After that, the synchronous processing service appropriately adjusts the remote knowledge so as to include the content considered by the contention handler side, and then applies those operations.

解決を適用している間に他の競合が検出される可能性がある。このような場合、新しい競合は、元の処理が再開する前に解決されなければならない。   Other conflicts may be detected while applying the solution. In such cases, the new conflict must be resolved before the original process resumes.

競合をアイテムのバージョン履歴内の分岐として考えた場合、競合解決は、結合−2つの分岐を組み合わせて1つのポイントを形成すること−であるとみなすことができる。したがって、競合解決は、バージョン履歴をDAGに変える。   Considering a conflict as a branch in an item's version history, the conflict resolution can be considered as combining—combining two branches to form a point. Thus, conflict resolution changes the version history to DAG.

(b)競合ログ作成
本当に特別な種類の競合リゾルバとして、Conffict Loggerがある。同期処理サービスは、競合を型ConflictRecordのItemsとしてログに記録する。これらの記録は、競合が生じているアイテムに再び関係する(アイテム自体が削除されていない限り)。それぞれの競合記録は、競合を引き起こした受け取った変更、競合のタイプ、更新−更新、更新−削除、削除−更新、挿入−挿入、または制約、および受け取った変更のバージョンとそれを送信するレプリカの知識を含む。ログに記録された競合は、後述のように、検査および解決のために使用できる。
(B) Competing Log Creation A truly special type of competing resolver is the Confict Logger. The synchronization processing service logs the conflict as Items of type ConflictRecord. These records are again related to the item in conflict (unless the item itself has been deleted). Each conflict record contains the received change that caused the conflict, the type of conflict, update-update, update-delete, delete-update, insert-insert, or constraint, and the version of the received change and the replica that sends it. Includes knowledge. Logged conflicts can be used for inspection and resolution, as described below.

(c)競合の検査および解決
同期処理サービスは、アプリケーション側で競合ログを調べ、その中の競合の解決を提案するためのAPIを備えている。このAPIにより、アプリケーションは、すべての競合、または与えられたItemに関係する競合を列挙することができる。これにより、さらに、そのようなアプリケーションは、ログに記録された競合を解決するために、(1)remote wins−ログに記録された変更を受け入れ、競合しているローカルの変更を上書きする、(2)local wins−ログに記録された変更の競合部分を無視する、および(3)suggest new change−アプリケーションが、オプションにより、競合を解決するマージを提案する場合、の3つの方法のうちの1つを使用することができる。アプリケーションにより競合が解決された後、同期処理サービスはそれらをログから削除する。
(C) Conflict inspection and resolution The synchronization processing service includes an API for examining the contention log on the application side and proposing the resolution of the contention therein. This API allows an application to enumerate all conflicts or conflicts related to a given Item. This further allows such applications to: (1) accept remote changes—overwrite conflicting local changes to resolve logged conflicts, ( 2) local wins--ignore the conflicting part of the logged change, and (3) suggest new change--optionally proposes a merge that resolves the conflict, one of three ways One can be used. After the conflicts are resolved by the application, the synchronous processing service deletes them from the log.

(d)レプリカの収束および競合解決の伝播
複雑な同期シナリオでは、同じ競合が複数のレプリカで検出される場合がある。このような状況が生じた場合、(1)競合が一方のレプリカで解決され、その解決が他方のレプリカに送られるようにすることができるか、または(2)競合が両方のレプリカ上で自動的に解決されるか、またはまたは(3)競合が両方のレプリカで手動で解決される(競合検査APIを通じて)。
(D) Replica Convergence and Conflict Resolution Propagation In complex synchronization scenarios, the same conflict may be detected by multiple replicas. When this happens, either (1) the conflict can be resolved at one replica and the resolution sent to the other replica, or (2) the conflict is automatic on both replicas Or (3) conflicts are resolved manually on both replicas (through a conflict checking API).

収束を保証するため、同期処理サービスは、競合解決を他のレプリカに転送する。競合を解決する変更がレプリカに届くと、同期処理サービスは、この更新により解決されるログに含まれる競合記録を自動的に見つけ出し、それらの削除する。この意味で、一方のレプリカでの競合解決は他方のすべてのレプリカ上でのバインディングになる。   To guarantee convergence, the synchronization processing service forwards the conflict resolution to other replicas. When changes that resolve conflicts arrive at the replica, the synchronization processing service automatically finds the conflict records contained in the log resolved by this update and deletes them. In this sense, conflict resolution at one replica becomes binding on all other replicas.

同じ競合について異なるレプリカにより異なる勝利者が選択された場合、同期処理サービスは競合解決をバインドする原理を適用し、2つの解決のうちの1つを選び、自動的に他方を獲得する。勝利者は、いつでも同じ結果が得られるように保証される決定論的方法で選ばれる(一実施形態ではレプリカID辞書式比較を使用する)。   When different winners are selected by different replicas for the same conflict, the synchronization service applies the principle of binding conflict resolution, picking one of the two solutions and automatically acquiring the other. The winner is chosen in a deterministic manner that ensures that the same result is always obtained (in one embodiment, a replica ID lexicographic comparison is used).

同じ競合について異なるレプリカにより異なる「新しい変更」が提案された場合、同期処理サービスは、この新しい競合を特別な競合として取り扱い、Conflict Loggerを使用して、それが他のレプリカに伝搬しないようにする。そのような状況は、一般に、手動による競合解決において生じる。   If different “new changes” are proposed by different replicas for the same conflict, the sync service will treat this new conflict as a special conflict and use Conflict Logger to prevent it from propagating to other replicas. . Such a situation typically occurs in manual conflict resolution.

2.非ストレージプラットフォームデータストアの同期処理
本発明のストレージプラットフォームの他の態様によれば、ストレージプラットフォームは、ISVが、ストレージプラットフォームとMicrosoft Exchange、AD、Hotmailなどの従来システムとを同期させるSync Adaptersを実装するためのアーキテクチャを備える。Sync Adaptersは、後述のように、同期処理サービスにより提供される多くのSync Serviceを利用する。
2. Non-Storage Platform Data Store Synchronization Processing According to another aspect of the storage platform of the present invention, the storage platform implements Sync Adapters that allow the ISV to synchronize the storage platform with legacy systems such as Microsoft Exchange, AD, and Hotmail. An architecture for Sync Adapters use many Sync Services provided by the synchronization processing service, as will be described later.

その名にもかかわらず、Sync Adaptersは、何らかのストレージプラットフォームアーキテクチャにプラグインとして実装する必要はない。そうしたければ、「sync adapter」は、単に、変更列挙およびアプリケーションなどのサービスを取得するため同期処理サービスランタイムインタフェースを利用するアプリケーションとすることもできる。   Despite its name, Sync Adapters do not need to be implemented as plug-ins in any storage platform architecture. If desired, the “sync adapter” can simply be an application that utilizes a synchronous processing service runtime interface to obtain services such as change enumeration and applications.

与えられたバックエンドとの同期をほかから構成し、実行することを簡単にするため、Sync Adapter作成者は、上述のように同期プロファイルが与えられた場合に同期処理を実行する標準のSync Adapterインタフェースを公開するよう奨励される。このプロファイルで、構成情報をアダプタに伝えるが、アダプタは、その一部をランタイムサービス(例えば、同期をとるFolder)を制御するSync Runtimeに受け渡す。   To make it easy to configure and execute synchronization with a given backend, Sync Adapter authors can use standard Sync Adapter to perform synchronization processing when given a synchronization profile as described above. You are encouraged to publish the interface. With this profile, configuration information is communicated to the adapter, which passes a portion of it to the Sync Runtime that controls the runtime service (eg, the Folder to be synchronized).

a)同期処理サービス
同期処理サービスは、多数の同期処理サービスをアダプタ作成者に提供する。このセッションの残り部分では、ストレージプラットフォームが同期処理を実行しているマシンを「クライアント」と呼び、アダプタの通信先の非ストレージプラットフォームバックエンドを「サーバ」と呼ぶと都合がよい。
a) Synchronization processing service The synchronization processing service provides a number of synchronization processing services to the adapter creator. For the remainder of this session, it is convenient to call the machine on which the storage platform is performing the synchronization process as the “client” and the non-storage platform backend with which the adapter communicates as the “server”.

(1)Change Enumeration
Change Enumerationを使用すると、同期処理サービスにより保持されている変更追跡データに基づき、同期処理アダプタは、データストアFolderに対しこのパートナとの同期が最後に試みられた以降に発生した変更を簡単に列挙することができる。
(1) Change enumeration
Using Change Enumeration, based on the change tracking data maintained by the sync processing service, the sync processing adapter can easily enumerate the changes that have occurred since the last attempt to synchronize with this partner for the data store folder. can do.

変更は、「アンカー」−最後の同期に関する情報を表す隠蔽型構造−という概念に基づいて列挙される。アンカーは、前のセクションで説明されているように、ストレージプラットフォームの知識という形をとる。変更列挙サービスを使用する同期処理アダプタは、「ストアドアンカー」を使用するものと「サプライドアンカー」を使用するものという2つの広いカテゴリに分類される。   Changes are enumerated based on the concept of “anchors” —hidden structures that represent information about the last synchronization. Anchors take the form of storage platform knowledge, as described in the previous section. Synchronous processing adapters that use the change enumeration service fall into two broad categories: those that use “stored anchors” and those that use “supplied anchors”.

この区別は、最後の同期に関する情報が格納されている場所−クライアントか、それともサーバか−に基づく。アダプタはこの情報をクライアント上に格納するのが簡単である場合が多い−バックエンドは、この情報を簡単に格納できない場合が多い。その一方で、複数のクライアントが同じバックエンドと同期をとる場合、この情報をクライアント上に格納するのは不効率であり、場合によっては正しくない−一方のクライアントが他方のクライアントがすでにサーバにプッシュアップしている変更に気づかない。アダプタ側でサーバストアドアンカーを使用したい場合、そのアダプタは、変更列挙時にストレージプラットフォーム送り返す必要がある。   This distinction is based on where the information about the last synchronization is stored-the client or the server. The adapter is often easy to store this information on the client-the back end often cannot easily store this information. On the other hand, when multiple clients synchronize with the same backend, it is inefficient to store this information on the client and in some cases is incorrect-one client has already pushed the other client to the server. Do not notice the changes that are up. If you want to use a server stored anchor on the adapter side, the adapter must send it back to the storage platform when enumerating changes.

ストレージプラットフォームがアンカー(ローカルストレージまたはリモートストレージのいずれかの)を保持するために、ストレージプラットフォームに対し、サーバ側で正常に適用された変更を認識させる必要がある。これらの変更およびこれらの変更のみをアンカーに含めることができる。変更列挙の際にSync Adaptersは、Acknowledgementインタフェースを使用して、正常に適用された変更を報告する。同期の終了時に、サプライドアンカーを使用するアダプタは、新しいアンカー(正常に適用された変更すべてを組み込んだ)を読み込み、それをバックエンドに送る必要がある。   In order for the storage platform to hold an anchor (either local storage or remote storage), it is necessary to make the storage platform aware of changes that have been successfully applied on the server side. These changes and only these changes can be included in the anchor. During change enumeration, Sync Adapters uses the Acknowledgment interface to report successfully applied changes. At the end of synchronization, adapters that use the supplied anchor need to read the new anchor (which incorporates all successfully applied changes) and send it to the backend.

多くの場合、Adaptersは、ストレージプラットフォームデータストア内に挿入するアイテムとともにアダプタ特有のデータを格納する必要がある。このようなデータの一般的な例として、リモートIDおよびリモートバージョン(タイムスタンプ)がある。同地処理サービスは、このデータを格納するメカニズムを備えており、Change Enumerationは、返される変更とともにこの付加データを受け取るためのメカニズムを備える。これにより、ほとんどの場合に、アダプタ側がデータベースに対し再度クエリを実行する必要がなくなる。   In many cases, Adapters need to store adapter specific data along with items to insert into the storage platform data store. Common examples of such data include remote ID and remote version (time stamp). The local processing service has a mechanism for storing this data, and Change Enumeration has a mechanism for receiving this additional data along with the returned changes. This eliminates the need for the adapter to re-query the database in most cases.

(2)Change Application
Change Applicationを使用すると、Sync Adapters側でバックエンドから受け取った変更をローカルストレージプラットフォームに適用することができる。アダプタは、変更をストレージプラットフォームスキーマに変換することが期待される。図24は、ストレージプラットフォームAPIクラスがストレージプラットフォームSchemaから生成されるプロセスを例示している。
(2) Change Application
Using Change Application, changes received from the back end on the Sync Adapters side can be applied to the local storage platform. The adapter is expected to convert changes to the storage platform schema. FIG. 24 illustrates the process by which the storage platform API class is generated from the storage platform Schema.

変更適用の主な機能は、競合を自動的に検出することである。ストレージプラットフォームとストレージプラットフォームとの同期の場合のように、競合は、お互いについての知識なしで2つの重なり合う変更が行われることと定義される。アダプタは、Change Applicationを使用する場合、どの競合検出が実行されるかについてアンカーを指定しなければならない。Change Applicationは、アダプタの知識の対象とならない重なり合うローカル変更が検出された場合に競合の通知を発する。Change Enumerationと同様に、アダプタは、ストアドアンカーまたはサプライドアンカーのいずれかを使用することができる。Change Applicationでは、アダプタ特有のメタデータの効率的格納をサポートする。このようなデータは、アダプタにより、適用される変更に付随させることができ、また同時処理サービスにより格納することも可能である。データは、次の変更列挙のときに返すことができるであろう。   The main function of change application is to automatically detect conflicts. As in the case of storage platform-to-storage platform synchronization, contention is defined as two overlapping changes made without knowledge of each other. If the adapter uses Change Application, the adapter must specify an anchor as to which conflict detection is performed. Change Application issues a conflict notification when an overlapping local change that is not subject to adapter knowledge is detected. Similar to Change Enumeration, adapters can use either stored anchors or supplied anchors. Change Application supports efficient storage of adapter-specific metadata. Such data can be attached to the applied changes by the adapter and can also be stored by a concurrent processing service. Data could be returned at the next change enumeration.

(3)Conflict Resolution
上述のConflict Resolutionメカニズム(ログ記録および自動解決オプション)も、同期処理アダプタで利用できる。同期処理アダプタは、変更適用する場合に競合解決のポリシーを指定することができる。指定した場合、競合は、指定された競合ハンドラに受け渡され、解決されるようにできる(可能ならば)。競合をログに記録することもできる。アダプタは、ローカル変更をバックエンドに適用しようと試みる際に競合を検出する可能性がある。このような場合、アダプタは、それでも、Sync Runtimeにその競合を受け渡し、ポリシーに従って解決することができる。さらに、同期処理アダプタは、同時処理サービスにより検出された競合が処理のため送り返されるように要求することもできる。これは、バックエンドが競合を格納または解決することができる場合に便利である。
(3) Conflict Resolution
The Conflict Resolution mechanism described above (logging and automatic resolution options) can also be used with the synchronous processing adapter. The synchronous processing adapter can specify a conflict resolution policy when applying changes. If specified, the conflict can be passed to the specified conflict handler and resolved (if possible). Conflicts can also be logged. The adapter may detect conflicts when attempting to apply local changes to the backend. In such cases, the adapter can still pass the conflict to Sync Runtime and resolve according to policy. In addition, the synchronous processing adapter may request that conflicts detected by the concurrent processing service be sent back for processing. This is useful when the backend can store or resolve conflicts.

b)アダプタの実装
いくつかの「アダプタ」が単に、ランタイムインタフェースを使用するアプリケーションである場合には、アダプタ側で標準アダプターインタフェースを実装することが奨励される。それらのインタフェースを使用することにより、Sync Controlling Applicationsは、与えられた同期プロファイルに従ってアダプタが同期処理を実行するよう要求し、進行中の同期処理をキャンセルし、進行中の同期に関する進行中報告(完了率)を受け取ることができる。
b) Adapter implementation If some "adapter" is simply an application that uses a runtime interface, it is encouraged to implement a standard adapter interface on the adapter side. By using these interfaces, Sync Controlling Applications requests that the adapter perform synchronization processing according to a given synchronization profile, cancels ongoing synchronization processing, and reports on ongoing synchronization (completed). Rate).

3.セキュリティ
同期処理サービスは、ストレージプラットフォームにより実装されたセキュリティモデルに導入するものをできるだけ少なくしようとする。同期処理のための新しい権利を定義するのではなく、既存の権利が使用される。特に、
・ データストアItemを読み込める人は誰でも、そのアイテムへの変更を列挙することができ、
・ データストアItemに書き込める人は誰でも、そのアイテムに変更を適用することができ、
・ データストアItemを拡張できる人は誰でも、そのアイテムに同期メタデータを関連付けことができるということである。
3. Security Synchronous processing services attempt to introduce as little as possible into the security model implemented by the storage platform. Rather than defining new rights for the synchronization process, existing rights are used. In particular,
Anyone who can read a data store Item can enumerate changes to that item,
• Anyone who can write to the data store Item can apply changes to the item,
Anyone who can extend the data store Item is able to associate sync metadata with the item.

同期処理サービスでは、セキュリティで保護された著作権情報を保持しない。ユーザUによりレプリカAで変更が加えられ、レプリカBに転送された場合、変更が元々Aで(またはUにより)行われたという事実は失われる。Bがこの変更をレプリカCに転送した場合、これは、Aの権限ではなくBの権限の下で実行される。このため、レプリカがアイテムに対し独自の変更を加えることについて信頼されていない場合、他者により加えられた変更を転送することはできないという制限が生じる。   The synchronous processing service does not hold copyright information protected by security. If a change is made at replica A by user U and forwarded to replica B, the fact that the change was originally made at A (or by U) is lost. If B forwards this change to Replica C, this is performed under B's authority instead of A's authority. This creates a restriction that changes made by others cannot be transferred if the replica is not trusted to make its own changes to the item.

同期処理サービスは、開始されると、Sync Controlling Applicationによって実行される。同期処理サービスは、SCAの識別を偽装し、その識別の下ですべてのオペレーション(ローカルとをリモートの両方)を実行する。説明のため、ユーザUは、ローカル同期処理サービスに、ユーザUが読み取りアクセス権を持たないアイテムについてリモートストレージプラットフォームから変更を取り出させることはできないことを観察する。   When the synchronization processing service is started, it is executed by Sync Controlling Application. The synchronization processing service impersonates the SCA identity and performs all operations (both local and remote) under that identity. For illustration purposes, user U observes that the local synchronization processing service cannot have changes retrieved from the remote storage platform for items for which user U does not have read access.

4.管理可能性
レプリカの分散コミュニティの管理は複雑な問題である。同期処理サービスは、「スイープ」アルゴリズムを使用して、レプリカのステータスに関する情報収集し分配することができる。スイープアルゴリズムの特性は、構成されたすべてのレプリカに関する情報は、最終的に回収されること、および失敗(非応答)レプリカが検出されることを保証する。
4). Manageability Managing a distributed community of replicas is a complex issue. Synchronous processing services can collect and distribute information about the status of replicas using a “sweep” algorithm. The nature of the sweep algorithm ensures that information about all configured replicas is eventually collected and that failed (non-response) replicas are detected.

このコミュニティ規模の監視情報は、すべてのレプリカで利用可能になっている。監視ツールを、任意に選択されたレプリカで実行し、この監視情報を調べて、管理上の決定を下すことができる。構成変更は、影響を受けるレプリカにおいて直接行われなければならない。   This community-wide monitoring information is available to all replicas. A monitoring tool can be run on an arbitrarily selected replica, and this monitoring information can be examined to make administrative decisions. Configuration changes must be made directly at the affected replica.

B.同期処理APIの概要
分散化傾向を強めるデジタル世界において、個人とワークグループは、情報とデータを様々なデバイスおよび場所に格納することが多くなっている。これが、これらの独立した多くの場合本質的に異なるデータストアを常に、ユーザの介入を最小限に抑えて同期させることができるデータ同期処理サービスの開発の推進要因であった。
B. Synchronous Processing API Overview In the digital world, which is increasingly decentralized, individuals and workgroups are increasingly storing information and data on various devices and locations. This has been a driving force in the development of data synchronization processing services that can always synchronize these independent and often disparate data stores with minimal user intervention.

本発明の同期処理プラットフォームは、本明細書のセクションIIで説明されているリッチストレージプラットフォーム(別名「WinFS」)の一部であり、次の3つの主要な目標に取り組むものである。
・ アプリケーションおよびサービスが異なる「WinFS」ストア間のデータを効率よく同期させることができる。
・ 開発者が「WinFS」ストアと非「WinFS」ストアとの間のデータの同期をとるリッチソリューションを構築することができる。
・ 開発者に、同期処理ユーザエクスペリエンス(synchronization user experience)をカスタマイズするのに適したインタフェースを提供する。
The synchronous processing platform of the present invention is part of the rich storage platform (also known as “WinFS”) described in Section II of this specification and addresses three main goals:
Data can be efficiently synchronized between “WinFS” stores with different applications and services.
• Developers can build rich solutions that synchronize data between “WinFS” and non- “WinFS” stores.
Provide the developer with a suitable interface for customizing the synchronization user experience.

1.一般的用語
本明細書では、以下に、このセクションのIII.Bの後の方の説明に関連するいくつかの他の精緻化された定義および重要概念を示す。
1. General Terminology As used herein, this section III. Some other refined definitions and key concepts related to the later explanation of B are given.

・ 同期レプリカ(Sync Replica):ほとんどのアプリケーションは、WinFSストア内のアイテムの与えられた部分集合に対する変更の追跡、列挙、および同期処理にしか注目していない。同期処理オペレーションに関わるアイテムの集合は、同期レプリカと呼ばれる。レプリカは、与えられたWinFS包含階層(通常は、Folderアイテムをルートとする)内に含まれるアイテムに関して定義される。すべての同期処理サービスは、与えられたレプリカのコンテキスト内で実行される。WinFS Syncが、レプリカを定義し、管理し、クリーンアップするためのメカニズムを提供する。レプリカはすべて、与えられたWinFSストア内で一意にそれを識別するGUID識別子を持つ。   Sync Replica: Most applications are only interested in tracking, enumerating, and synchronizing changes to a given subset of items in the WinFS store. A collection of items involved in a synchronization processing operation is called a synchronization replica. Replicas are defined for items contained within a given WinFS containment hierarchy (usually rooted at the Folder item). All synchronous processing services are executed within the context of a given replica. WinFS Sync provides a mechanism for defining, managing, and cleaning up replicas. Every replica has a GUID identifier that uniquely identifies it within a given WinFS store.

・ 同期パートナ(Sync Partner):同期パートナは、WinFSアイテム、拡張、および関係に対する変更に影響を及ぼすことが可能なエンティティとして定義される。したがって、すべてのWinFSストアは、同期パートナと呼ぶことができる。非WinFSストアと同期をとる場合、外部データソース(EDS)も同期パートナと呼ばれる。すべてのパートナは、それを一意に識別するGUID識別子を持つ。   Sync Partner: A synchronization partner is defined as an entity that can affect changes to WinFS items, extensions, and relationships. Thus, every WinFS store can be called a synchronization partner. When synchronizing with a non-WinFS store, an external data source (EDS) is also called a synchronization partner. Every partner has a GUID identifier that uniquely identifies it.

・ 同期コミュニティ(Sync Community):同期コミュニティは、ピアツーピア同期処理オペレーションを使用して同期が保持されるレプリカのコレクションとして定義される。これらのレプリカは、すべて、同じWinFSストア、異なるWinFSストア内にあるか、さらには、非WinFSストア上の仮想レプリカとしてさえ現れることができる。WinFS Syncでは、特にコミュニティ内の同期処理オペレーションのみがWinFS Syncサービス(WinFSアダプタ)を通じて行われる場合に、コミュニティの特定のトポロジを規定または指令しない。同期アダプタ(以下に定義されている)は、独自のトポロジ制約を導入することができる。   Sync Community: A sync community is defined as a collection of replicas that are kept in sync using peer-to-peer sync processing operations. These replicas can all appear in the same WinFS store, in different WinFS stores, or even as virtual replicas on non-WinFS stores. WinFS Sync does not prescribe or command a specific topology of the community, especially when only the synchronization processing operations within the community are performed through the WinFS Sync service (WinFS adapter). Synchronous adapters (defined below) can introduce their own topology constraints.

・ 変更追跡、変更ユニット、およびバージョン:WinFSストアはすべて、すべてのローカルのWinFS Items、Extensions、およびRelationshipsへの変更を追跡する。変更は、スキーマ内で定義されている変更ユニット精度のレベルで追跡される。Item、Extension、およびRelationship型の最上位レベルのフィールドは、スキーマデザイナにより複数の変更ユニットに細分されることが可能であり、最小精度が1つの最上位レベルのフィールドとなる。変更追跡のために、すべての変更ユニットに、同期パートナidとバージョン番号のペアであるVersionが割り当てられる(バージョン番号は、パートナ特有の単調増加番号である)。Versionは、ローカルのストア内で変更が生じたり、他のレプリカから取得されるときに更新される。
・ 同期知識:知識は、いつでも与えられた同期レプリカの状態を表す、つまり、ローカルまたは他のレプリカからの与えられたレプリカが認識するすべての変更に関するメタデータをカプセル化する。WinFS Syncは、同期処理オペレーション間で同期レプリカにする知識を保持し、更新する。注意すべき重要なこととして、知識表現により、コミュニティ全体に関して解釈できるのであって、知識が格納されている特定のレプリカに関してだけではないことである。
Change tracking, change unit, and version: All WinFS stores track changes to all local WinFS Items, Extensions, and Relationships. Changes are tracked at the level of change unit accuracy defined in the schema. The top-level fields of Item, Extension, and Relationship types can be subdivided into multiple change units by the schema designer, with a minimum accuracy of one top-level field. For change tracking, all change units are assigned a version that is a pair of synchronization partner id and version number (the version number is a monotonically increasing number unique to the partner). The Version is updated when a change occurs in the local store or is obtained from another replica.
Synchronization knowledge: Knowledge represents the state of a given synchronous replica at any time, that is, encapsulates metadata about all changes recognized by a given replica from a local or other replica. WinFS Sync maintains and updates the knowledge of making a synchronous replica between synchronous processing operations. It is important to note that knowledge representation can be interpreted for the whole community, not just for the particular replica in which the knowledge is stored.

・ 同期アダプタ: 同期アダプタは、Sync Runtime APIを通じてWinFS Syncサービスにアクセスし、WinFSデータと非WinFSデータストアとの同期をとることができるマネージドコードアプリケーションであるシナリオの要求条件に応じて、WinFSデータのどの部分集合およびどのようなWinFSデータ型の同期をとるかは、アダプタ開発者次第である。アダプタは、EDSとの通信、WinFSスキーマとEDSサポートスキーマとの間の変換、独自構成およびメタデータの定義および管理を受け持つ。アダプタでは、WinFS Sync Adapter APIを実装して、WinFS Syncチームにより提供されるアダプタの共通構成および制御インフラストラクチャを利用するよう強く奨励される。詳細については、文献(例えば、非特許文献1および非特許文献2)を参照されたい。
WinFSデータと外部の非WinFSストアとの同期をとるが、WinFS形式で知識を出力または保持できないアダプタのために、WinFS Syncは、その後の変更列挙またはアプリケーションオペレーションに使用できるリモート知識を取得するサービスを提供する。バックエンドストアの能力に応じて、アダプタ側で、このリモート知識をバックエンドまたはローカルのWinFSストア上に格納したい場合がある。
簡単のため、同期「レプリカ」は、単一の論理的ロケーション内に存在する「WinFS」ストア内のデータの集合を表す構造であるが、非「WinFS」ストア上のデータは、「データソース」と呼ばれ、一般的にアダプタを使用する必要がある。
Synchronous adapter: The synchronous adapter accesses the WinFS Sync service through the Sync Runtime API and can synchronize WinFS data with the non-WinFS data store according to the requirements of the scenario, which is a managed code application. It is up to the adapter developer which subset and what WinFS data type to synchronize. The adapter is responsible for communication with the EDS, conversion between the WinFS schema and the EDS support schema, the definition and management of the unique configuration and metadata. Adapters are strongly encouraged to implement the WinFS Sync Adapter API and take advantage of the adapter's common configuration and control infrastructure provided by the WinFS Sync team. For details, refer to documents (for example, Non-Patent Document 1 and Non-Patent Document 2).
For adapters that synchronize WinFS data with an external non-WinFS store but cannot output or maintain knowledge in the WinFS format, WinFS Sync provides a service to obtain remote knowledge that can be used for subsequent change enumeration or application operations. provide. Depending on the capabilities of the backend store, the adapter may want to store this remote knowledge on the backend or local WinFS store.
For simplicity, a synchronous “replica” is a structure that represents a collection of data in a “WinFS” store that resides in a single logical location, while data on a non- “WinFS” store is a “data source”. It is generally necessary to use an adapter.

・ リモート知識:与えられた同期レプリカで他のレプリカから変更を取得したい場合、他のレプリカが変更を列挙する際に突き合わせるベースラインとして自分の持つ知識を提供する。同様に、与えられたレプリカ側で、他のレプリカに変更を送りたい場合に、競合の検出のためにリモートレプリカにより使用されることができるベースラインとして自分の持つ知識を提供する。同期変更の列挙および適用時に提供される他のレプリカに関する知識が、リモート知識と呼ばれる。   Remote knowledge: If you want to get changes from other replicas at a given synchronous replica, provide your own knowledge as a baseline to which other replicas match when enumerating changes. Similarly, if a given replica wants to send changes to another replica, it provides its own knowledge as a baseline that can be used by the remote replica for conflict detection. Knowledge of other replicas provided when enumerating and applying synchronous changes is called remote knowledge.

2.同期処理APIの主要事項
いくつかの実施形態では、同期APIは、同期構成APIと同期コントローラAPIの2つの部分に分けられる。同期構成APIを使用すると、アプリケーション側で、同期を構成し、2つのレプリカの間の特定の同期セッションのパラメータを指定することができる。与えられた同期セッションについて、構成パラメータは、同期をとるItemsの集合、同期のタイプ(一方向または両方向)、リモートデータソースに関する情報、および競合解決ポリシーを含む。同期コントローラAPIは、同時セッションを開始し、同期をキャンセルし、進行中の同期処理に関する進行状況およびエラー情報を受け取る。さらに、所定のスケジュールに従って同期処理を実行する必要のある特定の実施形態では、そのようなシステムは、スケジューリングをカスタマイズするためのスケジューリングメカニズムを備えることができる。
2. Key Issues of the Synchronization Processing API In some embodiments, the synchronization API is divided into two parts: a synchronization configuration API and a synchronization controller API. Using the synchronization configuration API, the application can configure synchronization and specify parameters for a particular synchronization session between two replicas. For a given synchronization session, the configuration parameters include the set of Items to be synchronized, the type of synchronization (one-way or two-way), information about the remote data source, and a conflict resolution policy. The sync controller API starts a simultaneous session, cancels sync, and receives progress and error information regarding the ongoing sync process. Further, in certain embodiments where the synchronization process needs to be performed according to a predetermined schedule, such a system can include a scheduling mechanism for customizing the scheduling.

本発明のいくつかの実施形態では、「WinFS」データソースと非「WinFS」データソースとの間の情報の同期をとるために同期アダプタを採用する。アダプタの例として、「WinFS」連絡先フォルダと非WinFSメールボックスとの間のアドレス帳情報の同期をとるアダプタがある。これらの場合、アダプタ開発者は、「WinFS」スキーマと非「WinFS」データソーススキーマとの間のスキーマ変換コードを開発するため、「WinFS」同期プラットフォームにより提供される本明細書で説明されている「WinFS」同期処理コアサービスAPIを使用することも可能である。さらに、アダプタ開発者は、非「WinFS」データソースの変更を伝達するためのプロトコルをサポートする。同期アダプタは、同期コントローラAPIを使用することにより呼び出され、制御され、このAPIを使用して進捗状況およびエラーを報告する。   Some embodiments of the present invention employ a synchronization adapter to synchronize information between “WinFS” data sources and non- “WinFS” data sources. An example of an adapter is an adapter that synchronizes address book information between a “WinFS” contact folder and a non-WinFS mailbox. In these cases, the adapter developer is described herein provided by the “WinFS” synchronization platform to develop schema conversion code between “WinFS” schemas and non- “WinFS” data source schemas. It is also possible to use the “WinFS” synchronous processing core service API. In addition, adapter developers support protocols for communicating non- "WinFS" data source changes. The sync adapter is called and controlled by using the sync controller API and reports progress and errors using this API.

しかし、本発明のいくつかの実施形態では、「WinFS」データストアと他の「WinFS」データストアとの同期をとるときに、「WinFS」−「WinFS」間同期処理サービスがハードウェア/ソフトウェアインタフェースシステム内に統合されていれば、同期アダプタは不要と考えられる。いずれにせよ、いくつかのそのような実施形態は、「WinFS」−「WinFS」と同期アダプタソリューションの両方に対する同期処理サービス群を提供し、これらは以下を含む。
・ 「WinFS」アイテム、拡張、および関係への変更の追跡。
・ 与えられた過去の状態以降の効率的な漸進的変更列挙のサポート。
・ 「WinFS」への外部変更の適用。
・ 変更適用時の競合処理。
However, in some embodiments of the present invention, when the “WinFS” data store is synchronized with another “WinFS” data store, the “WinFS”-“WinFS” synchronization processing service is not included in the hardware / software interface. If it is integrated in the system, the synchronization adapter is considered unnecessary. In any case, some such embodiments provide a collection of synchronization processing services for both “WinFS” — “WinFS” and a synchronization adapter solution, which include:
• Track changes to “WinFS” items, extensions, and relationships.
Support for efficient incremental change enumeration since a given past state.
・ Application of external changes to “WinFS”.
-Conflict handling when applying changes.

図36を参照すると、これは、共通データストアの3つのインスタンスおよびそれらの同期をとるためのコンポーネントを例示している。第1のシステム3602は、利用できるように同期API 3652を公開する(3646)、WinFS−非WinFS同期のためのWinFS−WinFS同期処理サービス3622およびコア同期処理サービス3624を含むWinFSデータストア3612を備える。第1のシステム3602と同様に、第2のシステム3604は、利用できるように同期API 3652を公開する(3646)、WinFS−非WinFS同期のためのWinFS−WinFS同期処理サービス3632およびコア同期処理サービス3634を含むWinFSデータストア3614を備える。第1のシステム3602および第2のシステム3604は、それぞれのWinFS−WinFS同期処理サービス3622および3632を介して同期をとる(3642)。第3のシステム3606は、WinFSシステムではないが、WinFSレプリカとの同期コミュニティでデータソースを保持するためWinFS同期3666を使用するためのアプリケーションを備える。このアプリケーションは、WinFS Sync Config/Controlサービス3664を利用して、WinFS−WinFS同期処理サービス3622を介して(それ自身をWinFSデータストアとして仮想化できる場合)、または同期API 3652とインタフェースする(3648)同期アダプタ3662を介して、直接WinFSデータストア3612とインタフェースする(3644)ことができる。   Referring to FIG. 36, this illustrates three instances of a common data store and components for synchronizing them. The first system 3602 exposes a synchronous API 3652 for use (3646), and includes a WinFS data store 3612 including a WinFS-WinFS synchronization processing service 3622 and a core synchronization processing service 3624 for WinFS-non-WinFS synchronization. . Similar to the first system 3602, the second system 3604 exposes a synchronous API 3652 for use (3646), a WinFS-WinFS synchronization processing service 3632 and a core synchronization processing service for WinFS-non-WinFS synchronization. WinFS data store 3614 including 3634 is provided. The first system 3602 and the second system 3604 synchronize via their respective WinFS-WinFS synchronization processing services 3622 and 3632 (3642). The third system 3606 is not a WinFS system, but includes an application for using WinFS synchronization 3666 to maintain a data source in a synchronized community with a WinFS replica. This application uses the WinFS Sync Config / Control service 3664 to interface via the WinFS-WinFS synchronization processing service 3622 (if it can be virtualized as a WinFS data store) or with the synchronization API 3652 (3648). It can interface (3644) directly with the WinFS data store 3612 via the synchronization adapter 3661.

この図に例示されているように、第1のシステム3602は、第2のシステム3604と第3のシステム3606の両方を認識し、直接同期をとる。しかし、第2のシステム3604も第3のシステム3606も、互いを認識せず、したがって、互いに直接変更を同期させないが、代わりに、一方のシステムに生じた変更は、第1のシステム3602を通じて伝搬しなければならない。   As illustrated in this figure, the first system 3602 recognizes both the second system 3604 and the third system 3606 and is in direct synchronization. However, neither the second system 3604 nor the third system 3606 are aware of each other and, therefore, do not synchronize changes directly with each other, but instead changes that occur in one system propagate through the first system 3602. Must.

C.同期処理APIサービス
本発明のいくつかの実施形態は、変更列挙および変更適用という2つの基本サービスを含む同期処理サービスを対象とする。
C. Synchronous Processing API Service Some embodiments of the present invention are directed to a synchronous processing service that includes two basic services: change enumeration and change application.

1.変更列挙
本明細書の前の方で説明されているように、Change Enumerationを使用すると、同期処理アダプタは、同期処理サービスにより保持されている変更追跡データに基づき、このパートナとの同期が最後に試みられた以降に、データストアFolderに対し発生した変更を簡単に列挙することができる。変更列挙に関して、本発明のいくつかの実施形態は以下を対象とする。
・ 指定されたKnowledgeインスタンスに関して、与えられたレプリカ内のItems、Extensions、およびRelationshipsの変更の効率的列挙。
・ WinFSスキーマ内で指定された変更ユニット精度のレベルでの変更の列挙。
・ 複合アイテムに関して列挙された変更のグループ化。複合アイテムは、アイテム、そのすべての拡張、そのアイテムとのすべての保持関係、およびその埋め込まれたアイテムに対応するすべての複合アイテムからなる。アイテム間の参照関係の変更は、別々に列挙される。
・ 変更列挙に対するバッチ処理。バッチ処理の精度は、複合アイテムまたは関係変更(参照関係の)である。
・ 変更列挙時のレプリカ内のアイテムに対するフィルタの指定、例えば、レプリカは与えられたフォルダ内のすべてのアイテムからなるが、この特定の変更列挙については、アプリケーション側では、第1の名前が「A」で始まるすべてのContactアイテムに対する変更を列挙することのみを望む(このサポートはBマイルストーンの後に(post B−milestone)追加される)。
・ 個々の変更ユニット(または、アイテム、拡張、または関係全体)を知識の中で同期失敗として記録し、それらを次回に再列挙させることができる、列挙された変更に対するリモート知識の使用。
・ 変更列挙時に変更とともにメタデータを返すことによりWinFS同期メタデータを理解できる場合のある上級アダプタの使用。
1. Change Enumeration As explained earlier in this document, change enumeration allows the sync processing adapter to synchronize with this partner last based on the change tracking data maintained by the sync processing service. Changes that have occurred to the data store Folder since it was attempted can be easily listed. With respect to change listing, some embodiments of the invention are directed to the following.
Efficient enumeration of Changes to Items, Extensions, and Relationships in a given replica for a given Knowledge instance.
• Enumerate changes at the level of change unit accuracy specified in the WinFS schema.
• Grouping of changes listed for compound items. A composite item consists of an item, all its extensions, all holding relationships with that item, and all composite items corresponding to that embedded item. Changes in the reference relationship between items are listed separately.
• Batch processing for change enumeration. The accuracy of batch processing is a composite item or a relationship change (of a reference relationship).
Specification of a filter for items in a replica when enumerating changes, for example, a replica consists of all items in a given folder, but for this particular change enumeration, on the application side the first name is "A We only want to enumerate the changes to all Contact items that begin with "(this support is added after the B Milestone).
Use of remote knowledge for enumerated changes that can record individual change units (or items, extensions, or entire relationships) in the knowledge as synchronization failures and have them re-enumerated next time.
• Use of advanced adapters that may be able to understand WinFS synchronous metadata by returning metadata along with the changes when enumerating changes.

2.変更適用
本明細書のはじめの方で説明されているように、変更適用では、同期アダプタは、ストレージプラットフォームスキーマに変更を変換することが予期されているため、そのバックエンドから受け取った変更をローカルストレージプラットフォームに適用できる。変更適用に関して、本発明のいくつかの実施形態は以下を対象とする。
・ WinFS変更メタデータへの対応する更新のある、他のレプリカ(または非WinFSストア)からの漸進的変更の適用。
・ 変更ユニットの精度での変更適用後の競合の検出。
・ 変更適用後に個々の変更ユニットレベルで生じる成功、失敗、および競合の報告であって、アプリケーション(アダプタおよび同期制御アプリケーションを含む)がその情報を進捗状況、エラー、およびステータス報告およびもしあればそのバックエンド状態の更新に使用できるようにする報告。
・ 次の変更列挙オペレーションでアプリケーションにより供給された変更の「反映」を防ぐために変更適用時にリモート知識を更新すること。
・ WinFS同期メタデータを変更とともに理解し提供することができる上級アダプタの使用。
2. Change Application As explained earlier in this document, change application expects the sync adapter to convert the changes to the storage platform schema, so that changes received from its backend are local. Applicable to storage platforms. With respect to modification applications, some embodiments of the invention are directed to:
Apply progressive changes from other replicas (or non-WinFS stores) with corresponding updates to WinFS change metadata.
• Detection of conflicts after applying changes with change unit accuracy.
Success, failure, and conflict reports that occur at the individual change unit level after changes are applied, and applications (including adapters and synchronization control applications) report that information on progress, errors, and status reports, and if any A report that can be used to update the backend state.
Update remote knowledge when applying changes to prevent “reflection” of changes supplied by the application in the next change enumeration operation.
• Use advanced adapters that can understand and provide WinFS synchronization metadata with changes.

3.サンプルコード
以下に、FOO同期アダプタが同期ランタイムとやり取りする方法を示すコードサンプルを掲載した(すべてのアダプタ特有の関数の先頭にはFOOが付いている)。
3. Sample Code Below is a code sample that shows how the FOO Sync Adapter interacts with the Sync Runtime (all adapter specific functions are prefixed with FOO).

Figure 2007503050
Figure 2007503050

Figure 2007503050
Figure 2007503050

Figure 2007503050
Figure 2007503050

Figure 2007503050
Figure 2007503050

4.API同期処理のメソッド
本発明の一実施形態では、WinFSストアと非WinFSストアとの間で同期をとることは、WinFSベースのハードウェア/ソフトウェアインタフェースシステムにより公開されている同期APIを介して可能である。
4). API Synchronization Processing Method In one embodiment of the present invention, synchronization between a WinFS store and a non-WinFS store is possible via a synchronization API published by a WinFS-based hardware / software interface system. is there.

一実施形態では、すべての同期アダプタは、同期アダプタAPI、共通言語ランタイム(CLR)マネージドAPIを実装し、矛盾なく展開、初期化、および制御できるようにする必要がある。アダプタAPIは以下を備える。
・ ハードウェア/ソフトウェアインタフェースシステム同期フレームワークにアダプタを登録する標準メカニズム。
・ アダプタがその機能およびアダプタを初期化するために必要な構成情報の型を宣言する標準メカニズム。
・ 初期化情報をアダプタに受け渡す標準メカニズム。
・ アダプタが進捗状況を、同期を呼び出すアプリケーションに送り返して報告するメカニズム。
・ 同期処理時に発生したエラーを報告するメカニズム。
・ 進行中の同期処理オペレーションのキャンセルを要求するメカニズム。
In one embodiment, all synchronization adapters must implement a synchronization adapter API, a common language runtime (CLR) managed API, so that they can be deployed, initialized, and controlled consistently. The adapter API includes:
A standard mechanism for registering adapters in the hardware / software interface system synchronization framework.
A standard mechanism for declaring the type of configuration information necessary for an adapter to initialize its functionality and adapter.
A standard mechanism for passing initialization information to the adapter.
A mechanism for the adapter to report progress back to the application calling the synchronization.
-A mechanism for reporting errors that occur during synchronous processing.
A mechanism for requesting cancellation of ongoing synchronization processing operations.

シナリオの要求条件に応じて、アダプタには2つの潜在的プロセスモデルがある。アダプタは、それを呼び出すアプリケーションと同じプロセス空間内で、または独立のプロセスですべて自動的に実行することができる。アダプタは、別の自プロセスで実行するために、アダプタをインスタンス化するために使用される自ファクトリクラスを定義する。ファクトリは、呼び出し側アプリケーションと同じプロセスでアダプタのインスタンスを返すか、または異なるMicrosoft共通言語ランタイムアプリケーション領域またはプロセス内でアダプタのリモートインスタンスを返すことができる。同じプロセス内のアダプタをインスタンス化する既定のファクトリ実装が実現される。実際には、多くのアダプタが呼び出し側アプリケーションと同じプロセスで実行される。処理外モデルは、通常、以下の理由の1つまたは両方について必要である。
・ セキュリティ目的。アダプタは、特定のプロセスまたはサービスのプロセス空間内で実行されなければならない。
・ アダプタは、呼び出し側アプリケーションからの要求を処理するほかに、他のソースからの要求−例えば、受け取ったネットワーク要求−を処理しなければならない。
Depending on the scenario requirements, there are two potential process models for the adapter. The adapter can all run automatically in the same process space as the application that calls it, or in a separate process. The adapter defines its own factory class that is used to instantiate the adapter for execution in another own process. The factory can return an instance of the adapter in the same process as the calling application, or it can return a remote instance of the adapter in a different Microsoft common language runtime application area or process. A default factory implementation is instantiated that instantiates an adapter in the same process. In practice, many adapters run in the same process as the calling application. Out-of-process models are usually necessary for one or both of the following reasons.
• Security purposes. An adapter must run within the process space of a particular process or service.
In addition to processing requests from the calling application, the adapter must handle requests from other sources-eg received network requests.

図37を参照すると、本発明の一実施形態は、状態がどのように計算されるか、またはその関連するメタデータがどのように交換されるかを認識しない単純なアダプタを想定している。この実施形態では、同期処理は、同期をとりたいデータソースに関してレプリカにより行われるが、そのために、最初に、ステップ3702で、前記データソースと最後に同期した以降に発生した変更を判別し、その後、レプリカは現在の状態の情報に基づいてこの最後の同期以降に発生した漸進的変更を送り、この状態情報および漸進的変更は、アダプタを介してデータソースに送られる。ステップ3704で、アダプタは、前のステップでレプリカから変更データを受け取った後、できる限り多くのデータに対する変更を実装し、どの変更が成功し、どの変更が失敗したかを追跡し、成功−失敗情報をWinFS(レプリカの)に送り返す。レプリカ(WinFS)のハードウェア/ソフトウェアインタフェースシステムは、ステップ3706で、レプリカから成功−失敗情報を受け取った後、データソースに対する新しい状態情報を計算し、この情報を将来そのレプリカで使用するため格納しておき、この新しい状態情報をデータソース、つまりアダプタに送り返して、格納し、アダプタによって後から使用できるようにする。   Referring to FIG. 37, one embodiment of the present invention assumes a simple adapter that does not recognize how the state is calculated or how its associated metadata is exchanged. In this embodiment, the synchronization process is performed by the replica with respect to the data source to be synchronized. For this purpose, first, in step 3702, the change that has occurred since the last synchronization with the data source is determined, and thereafter The replica sends incremental changes that have occurred since this last synchronization based on the current state information, and the state information and incremental changes are sent to the data source via the adapter. In step 3704, after receiving the change data from the replica in the previous step, the adapter implements changes to as much data as possible, keeps track of which changes have succeeded and which have failed, and success-failure. Send information back to WinFS (replica). The replica (WinFS) hardware / software interface system receives the success-failure information from the replica in step 3706 and then calculates new state information for the data source and stores this information for future use by the replica. This new state information is sent back to the data source, ie, the adapter, where it is stored for later use by the adapter.

D.同期スキーマの追加態様
以下は、本発明の様々な態様に対する同期スキーマの追加(またはより具体的な)態様である。
・ それぞれのレプリカは、データストアの全体から取り出した定義済み同期部分集合−複数のインスタンスを持つスライス−である。
・ 競合解決ポリシーは、それぞれのレプリカ(およびアダプタ/データソースの組合せ)により処理される−つまり、それぞれのレプリカは、自基準と競合解決スキーマに基づいて競合を解決することができる。さらに、データストアのそれぞれのインスタンスの違いが生じ、その結果、将来さらに競合が生じるが、更新された状態情報に反映されるような競合の漸進的および順次的列挙は、その更新された状態情報を受け取る他のレプリカからは見えない。
・ 同期スキーマのルートには、一意的なIDを持つルートフォルダ(実際には、ルートItem)を定義するための基本型を持つレプリカ、それがメンバである同期コミュニティに対するID、および特定のレプリカに対し必要な、または望ましい何らかのフィルタおよびその他の要素がある。
・ それぞれのレプリカの「マッピング」は、レプリカ内に保持され、したがって、任意の特定のレプリカのマッピングは、そのようなレプリカが関知している他のレプリカに制限される。このマッピングは、同期コミュニティ全体の部分集合しか含まないが、前記レプリカに対する変更は、それでも、共通の共有レプリカを介して同期コミュニティ全体に伝搬する(ただし、特定のレプリカは、不明なレプリカと他のどのレプリカをふつうに共有しているかを認識しない)。
・ 同期スキーマは、すべてのレプリカから利用できる複数の定義済み競合ハンドラとともに、ユーザ/開発者定義済みカスタム競合ハンドラの機能を含む。スキーマは、さらに、3つの特別な「競合リゾルバ」として、(a)例えば、(i)同じ変更ユニットが2つの場所で変更された場合の取り扱い方法、(ii)変更ユニットが一方の場所で変更され、他方の場所で削除される場合の取り扱い方法、および(iii)2つの異なる変更ユニットが2つの異なる場所で同じ名前を持つ場合の取り扱い方法に基づく異なる方法で異なる競合を解決する競合「フィルタ」、(b)リストの各要素で競合が正常に解決されるまで順番に試みる一連のアクションを指定する場合の競合「ハンドラリスト」、および(c)競合を追跡するが、ユーザ介入なしでアクションをさらに実行することはしない「何もしない」ログを含むこともできる。
・ レプリカの同期スキーマおよび使用により、真の分散型ピアツーピアマルチマスター同期コミュニティが使用可能になる。さらに、同期コミュニティタイプはないが、同期コミュニティは、単に、レプリカ自体のコミュニティフィールドの中の値としてだけ存在する。
・ すべてのレプリカは、漸進的変更列挙を追跡し、同期コミュニティで知られている他のレプリカに対する状態情報を格納するため自メタデータを持つ。
・ 変更ユニットは、自メタデータを持ち、これは、パートナキーとパートナ変更番号を含むバージョン番号、各変更ユニットのItem/Extension/Relationshipのバージョニング、同期コミュニティからレプリカが見た/受信した変更に関する知識、GUIDおよびローカルID構成、およびクリーンアップのため参照関係上に格納されているGUIDを含む。
D. Additional Aspects of Synchronization Schema The following are additional (or more specific) aspects of the synchronization schema for the various aspects of the present invention.
Each replica is a predefined synchronized subset taken from the entire data store-a slice with multiple instances.
Conflict resolution policies are handled by each replica (and adapter / data source combination)-that is, each replica can resolve conflicts based on its own criteria and conflict resolution schema. In addition, differences between each instance of the data store will result in further conflicts in the future, but the progressive and sequential enumeration of conflicts as reflected in the updated state information Invisible to other replicas that receive.
The root of the synchronization schema includes a replica with a basic type for defining a root folder with a unique ID (actually a root Item), an ID for the synchronization community of which it is a member, and a specific replica There are some filters and other elements that are necessary or desirable.
The “mapping” of each replica is kept in the replica, so the mapping of any particular replica is restricted to other replicas that such replica knows about. This mapping includes only a subset of the entire sync community, but changes to the replica are still propagated to the entire sync community via a common shared replica (however, a particular replica may Does not know which replicas are normally shared).
The synchronization schema includes user / developer defined custom conflict handler functionality along with multiple predefined conflict handlers available from all replicas. The schema is further divided into three special “competing resolvers”: (a) for example, (i) how to handle the same change unit when it is changed in two locations, and (ii) the change unit is changed in one location A conflict “filter that resolves different conflicts in different ways based on how it is handled and deleted in the other location, and (iii) two different change units have the same name in two different locations (B) Conflict “handler list” to specify a series of actions to try in order until each conflict in the list is successfully resolved, and (c) Track the conflict, but without user intervention It can also include a “do nothing” log that does not perform further.
Replica synchronization schema and usage enables a truly distributed peer-to-peer multi-master synchronization community. Furthermore, although there is no sync community type, the sync community exists only as a value in the community field of the replica itself.
All replicas have their own metadata to track incremental change enumeration and store state information for other replicas known in the sync community.
The change unit has its own metadata, which is the version number including the partner key and the partner change number, the version / item / extension / relationship versioning of each change unit, and knowledge of the changes seen / received by the replica from the synchronization community. , GUID and local ID configuration, and GUID stored on the reference relationship for cleanup.

IV.結論
これまでに例示したように、本発明は、データの編成、検索、および共有のためのストレージプラットフォームを対象とする。本発明のストレージプラットフォームは、既存のファイルシステムおよびデータベースシステムを超えるデータストレージの概念を拡張し、広げるものであり、リレーショナル(表形式)データ、XML、およびItemsと呼ばれる新しいデータ形態などの、構造化、非構造化、または半構造化データを含むすべての型のデータ用のストアとなるように設計されている。本発明のストレージプラットフォームでは、共通のストレージ基盤および図式化されたデータを通じて、より効率的なアプリケーション開発を消費者、知識労働者、および企業向けに行うことができる。これは、データモデルに固有の機能を利用可能にするだけでなく、既存のファイルシステムおよびデータベースアクセス方法も包含し、拡張する機能豊富な拡張可能アプリケーションプログラミングインタフェースを備える。本発明の広範な概念から逸脱することなく、上述の実施形態に対し変更を加えられることは理解される。したがって、本発明は、開示されている特定の実施形態に限定されず、付属の請求項の定義に従って本発明の精神および範囲内にあるすべての修正形態を対象とすることを意図されている。
IV. CONCLUSION As exemplified above, the present invention is directed to a storage platform for organizing, retrieving, and sharing data. The storage platform of the present invention extends and extends the concept of data storage beyond existing file systems and database systems, and includes structured data such as relational (tabular) data, new data forms called XML, and Items. Designed to be a store for all types of data, including unstructured or semi-structured data. The storage platform of the present invention enables more efficient application development for consumers, knowledge workers, and businesses through a common storage infrastructure and schematized data. This not only makes the functionality specific to the data model available, but also includes a rich and extensible application programming interface that encompasses and extends existing file systems and database access methods. It will be understood that modifications may be made to the embodiments described above without departing from the broad concepts of the present invention. Accordingly, the invention is not limited to the specific embodiments disclosed, but is intended to cover all modifications within the spirit and scope of the invention in accordance with the definitions of the appended claims.

上述の内容から明らかなように、本発明の様々なシステム、方法、および態様の全部または一部は、プログラムコード(つまり、命令)の形で具現化できる。このプログラムコードは、限定はしないが、フロッピー(登録商標)ディスケット、CD−ROM、CD−RW、DVD−ROM、DVD−RAM、磁気テープ、フラッシュメモリ、ハードディスクドライブ、またはその他のマシン可読記憶媒体を含む、磁気、電気、または光記憶媒体などのコンピュータ可読媒体上に格納することができ、プログラムコードがコンピュータまたはサーバなどのマシン内にロードされ実行されると、マシンは本発明を実践するための装置となる。本発明は、さらに、電気配線またはケーブル配線、光ファイバの使用、インターネットまたはイントラネットを含むネットワークなどの何らかの伝送媒体で、または他の形態の伝送を介して、伝送されるプログラムコードの形態で具現化されることも可能であり、プログラムコードがコンピュータなどのマシンにより受信され、読み込まれ、実行されると、マシンは本発明を実施するための装置となる。汎用プロセッサ上に実装された場合、プログラムコードはプロセッサとの組合せで、特定のロジック回路と類似の動作をする独自の装置を実現する。   As will be apparent from the foregoing, all or some of the various systems, methods, and aspects of the present invention may be embodied in the form of program code (ie, instructions). The program code includes, but is not limited to, a floppy diskette, CD-ROM, CD-RW, DVD-ROM, DVD-RAM, magnetic tape, flash memory, hard disk drive, or other machine-readable storage medium. Can be stored on a computer readable medium, such as a magnetic, electrical, or optical storage medium, and when the program code is loaded and executed in a machine such as a computer or server, the machine is adapted to practice the invention. It becomes a device. The invention is further embodied in the form of program code transmitted in some transmission medium, such as electrical or cable wiring, the use of optical fibers, networks including the Internet or Intranet, or via other forms of transmission. When the program code is received, read and executed by a machine such as a computer, the machine becomes an apparatus for carrying out the present invention. When implemented on a general-purpose processor, the program code combines with the processor to provide a unique apparatus that operates analogously to specific logic circuits.

本発明の複数の態様が組み込まれうるコンピュータシステムを表すブロック図である。And FIG. 7 is a block diagram illustrating a computer system in which aspects of the present invention may be incorporated. 3つのコンポーネントグループであるハードウェアコンポーネント、ハードウェア/ソフトウェアインタフェースシステムコンポーネント、およびアプリケーションプログラムコンポーネントに分割されたコンピュータシステムを例示するブロック図である。FIG. 2 is a block diagram illustrating a computer system divided into three component groups: a hardware component, a hardware / software interface system component, and an application program component. ファイルベースのオペレーティングシステムにおけるディレクトリ内の複数のフォルダにグループ化されているファイルの従来のツリーベースの階層構造を例示する図である。FIG. 3 illustrates a conventional tree-based hierarchical structure of files grouped into multiple folders in a directory in a file-based operating system. ストレージプラットフォームを例示するブロック図である。1 is a block diagram illustrating a storage platform. FIG. Items、Item Folders、およびCategories間の構造的関係を例示する図である。FIG. 6 illustrates a structural relationship between Items, Item Folders, and Categories. Itemの構造を例示するブロック図である。It is a block diagram which illustrates the structure of Item. 図5AのItemの複合プロパティ型を例示するブロック図である。FIG. 5B is a block diagram illustrating a complex property type of Item in FIG. 5A. 複合型がさらに記述されている(明示的にリストされている)「Location」Itemを例示するブロック図である。FIG. 6 is a block diagram illustrating a “Location” Item in which a composite type is further described (explicitly listed). Base SchemaにあるItemの子型としてItemを例示する図である。It is a figure which illustrates Item as a child type of Item in Base Schema. 継承型が明示的にリストされている(イミディエイトプロパティのほかに)図6Aの子型Itemを例示するブロック図である。FIG. 6B is a block diagram illustrating the child type Item of FIG. 6A with inherited types explicitly listed (in addition to immediate properties). 2つの最上位レベルのクラス型を含むBase Schema、ItemおよびPropertyBase、およびそれから派生した追加Base Schema型を例示するブロック図である。FIG. 3 is a block diagram illustrating a Base Schema, Item and PropertyBase including two top level class types, and an additional Base Schema type derived therefrom. Core Schema内のItemを例示するブロック図である。It is a block diagram which illustrates Item in Core Schema. Core Schema内のプロパティ型を例示するブロック図である。It is a block diagram which illustrates the property type in Core Schema. Item Folder、そのメンバItems、およびItem FolderとそのメンバItemsとの間の相互接続のRelationshipsを例示するブロック図である。FIG. 6 is a block diagram illustrating Item Folder, its member Items, and the interconnection relationships between Item Folder and its member Items. Category(またも、Item自体である)、そのメンバItems、およびCategoryとそのメンバItemsとの間の相互接続のRelationshipsを例示するブロック図である。FIG. 3 is a block diagram illustrating Category (also Item itself), its Member Items, and the interconnection Relationships between Category and its Member Items. ストレージプラットフォームのデータモデルの参照型階層を例示する図である。It is a figure which illustrates the reference type hierarchy of the data model of a storage platform. 関係を分類する方法を例示する図である。It is a figure which illustrates the method of classifying a relationship. 通知メカニズムを例示するブロック図である。It is a block diagram which illustrates a notification mechanism. 2つのトランザクションが両方とも新しいレコードを同じB−Tree内に挿入する実施例を示す図である。FIG. 6 is a diagram illustrating an embodiment in which two transactions both insert a new record into the same B-Tree. データ変更検出プロセスを例示する図である。FIG. 6 illustrates a data change detection process. ディレクトリツリー例を示す図である。It is a figure which shows the example of a directory tree. ディレクトリベースのファイルシステムの既存のフォルダがストレージプラットフォームのデータストアに移動される例を示す図である。FIG. 3 is a diagram illustrating an example in which an existing folder of a directory-based file system is moved to a storage platform data store. Containment Foldersの概念を例示する図である。It is a figure which illustrates the concept of Containment Folders. ストレージプラットフォームAPIの基本アーキテクチャを例示する図である。It is a figure which illustrates the basic architecture of storage platform API. ストレージプラットフォームAPIスタックの様々なコンポーネントを表す概略図である。FIG. 2 is a schematic diagram representing various components of a storage platform API stack. Contacts Itemスキーマ例の図である。FIG. 6 is a diagram of an example Contact Items schema. 図21AのContacts Itemスキーマ例のElementsの図である。FIG. 21B is a diagram of Elements in the example Contact Items schema of FIG. 21A. ストレージプラットフォームAPIのランタイムフレームワークを例示する図である。It is a figure which illustrates the runtime framework of storage platform API. 「FindAll」オペレーションの実行を例示する図である。FIG. 6 is a diagram illustrating execution of a “FindAll” operation. ストレージプラットフォームAPIクラスがストレージプラットフォームSchemaから生成されるプロセスを例示する図である。FIG. 6 is a diagram illustrating a process in which a storage platform API class is generated from a storage platform Schema. File APIが基づくスキーマを例示する図である。It is a figure which illustrates the schema based on File API. データセキュリティの目的のために使用されるアクセスマスク形式を例示する図である。FIG. 6 illustrates an access mask format used for data security purposes. (パートa、b、およびc)既存のセキュリティ領域から切り出される新しいまったく同じように保護されているセキュリティ領域を示す図である。(Parts a, b, and c) A new and exactly the same protected security area that is cut out from an existing security area. Itemの検索ビューの概念を例示するブロック図である。It is a block diagram which illustrates the concept of a search view of Item. Item階層例を示すブロック図である。It is a block diagram which shows the Item hierarchy example. 第1および第2のコードセグメントが通信に使用する情報伝達ルートとしてインタフェースInterface1を例示する図である。It is a figure which illustrates interface Interface1 as an information transmission route which the 1st and 2nd code segment uses for communication. システムの第1および第2のコードセグメントが媒体Mを介して通信できるようにするインタフェースオブジェクトI1およびI2を含むものとしてインタフェースを例示する図である。FIG. 3 illustrates the interface as including interface objects I1 and I2 that allow the first and second code segments of the system to communicate over the medium M. インタフェースInterface1により提供される機能を細分し、インタフェースの通信を複数のインタフェースInterface1A、Interface1B、Interface1Cに変換する方法を例示する図である。It is a figure which illustrates the method of subdividing the function provided by interface Interface1, and converting the communication of an interface into several interface Interface1A, Interface1B, and Interface1C. インタフェースI1により提供される機能を複数のインタフェースI1a、I1b、I1cに細分する方法を例示する図である。It is a figure which illustrates the method of subdividing the function provided by the interface I1 into several interface I1a, I1b, I1c. 意味のないパラメータ精度を無視できる、または任意のパラメータで置き換えることができるシナリオを例示する図である。It is a figure which illustrates the scenario which can ignore a meaningless parameter precision or can be replaced by arbitrary parameters. パラメータを無視するか、またはインタフェースに追加するように定義される代替えインタフェースによりインタフェースが置き換えられるシナリオを例示する図である。FIG. 5 illustrates a scenario where an interface is replaced by an alternative interface defined to ignore parameters or add to the interface. 第1および第2のCode Segmentsがその両方を含むモジュールにマージされるシナリオを例示する図である。FIG. 6 illustrates a scenario where first and second Code Segments are merged into a module that includes both. インタフェースの一部または全部が他のインタフェースにインラインで書き込まれマージされたインタフェースを形成するシナリオを例示する図である。FIG. 6 illustrates a scenario in which part or all of an interface is written inline to another interface to form a merged interface. ミドルウェアの1つまたは複数が第1のインタフェース上の通信を変換し、1つまたは複数の異なるインタフェースに適合するようにする方法を例示する図である。FIG. 6 illustrates a method for one or more of the middleware to convert communications on a first interface to adapt to one or more different interfaces. 一方のインタフェースから通信を受け取るが、機能を第2および第3のインタフェースに送信するようにコードセグメントをインタフェースとともに導入する方法を例示する図である。FIG. 6 illustrates a method for introducing a code segment with an interface to receive communications from one interface but send functions to a second and third interface. ジャストインタイムコンパイラ(JIT)が一方のコードセグメントから他方のコードセグメントに通信を変換する方法を例示する図である。FIG. 6 is a diagram illustrating a method in which a just-in-time compiler (JIT) converts communication from one code segment to another code segment. 1つまたは複数のインタフェースを動的に書き換えるJIT方式が適用され、前記インタフェースを動的に因数分解するか、または他の何らかの方法で変更することができることを示す図である。FIG. 6 illustrates that a JIT scheme that dynamically rewrites one or more interfaces is applied and that the interfaces can be dynamically factored or changed in some other way. 共通データストアの3つのインスタンスおよびそれらの同期をとるためのコンポーネントを例示する図である。FIG. 3 illustrates three instances of a common data store and components for synchronizing them. 状態がどのように計算されるか、またはその関連するメタデータがどのように交換されるかを認識しない単純なアダプタを想定する本発明の一実施形態を例示する図である。FIG. 6 illustrates an embodiment of the present invention that assumes a simple adapter that does not recognize how the state is calculated or how its associated metadata is exchanged.

Claims (30)

ハードウェア/ソフトウェアインタフェースシステム用のストレージプラットフォームシステム(例えば、WinFS)であって、
ストレージプラットフォームの複数のインスタンスと、
前記システムが前記ストレージプラットフォームの前記複数のインスタンスの同期をとることができるようにする前記ハードウェア/ソフトウェアインタフェースシステムのネイティブの同期サブシステムと
を備えたことを特徴とするストレージプラットフォームシステム。
A storage platform system (eg, WinFS) for a hardware / software interface system,
Multiple instances of storage platforms,
A storage platform system comprising: a native synchronization subsystem of the hardware / software interface system that enables the system to synchronize the plurality of instances of the storage platform.
前記同期サブシステムは、同期オペレーション時に、前記データストア上のデータ全体の中からデータの部分集合のみを同期させることを特徴とする請求項1に記載のシステム。   The system of claim 1, wherein the synchronization subsystem synchronizes only a subset of data from the entire data on the data store during a synchronization operation. 前記ストレージプラットフォームの第1のインスタンスは、レプリカである、つまり、前記同期サブシステムを持つハードウェア/ソフトウェアインタフェースシステム上で実行されており(例えば、WinFS)、前記ストレージプラットフォームの第2のインスタンスは、データソースである、つまり、前記同期サブシステムを持たないハードウェア/ソフトウェアインタフェースシステム上で実行されている(例えば、非WinFS)ことを特徴とする請求項1に記載のシステム。   The first instance of the storage platform is a replica, that is, running on a hardware / software interface system with the synchronization subsystem (eg, WinFS), and the second instance of the storage platform is The system of claim 1, wherein the system is running on a hardware / software interface system that is a data source, i.e., does not have the synchronization subsystem (e.g., non-WinFS). 前記レプリカと前記データソースとの間の前記同期は、前記レプリカの前記ハードウェア/ソフトウェアインタフェースシステムのアプリケーションプログラミングインタフェース(API)とインタフェースすることにより前記データソースを仮想化する同期アダプタにより円滑にされることを特徴とする請求項3に記載のシステム。   The synchronization between the replica and the data source is facilitated by a synchronization adapter that virtualizes the data source by interfacing with an application programming interface (API) of the hardware / software interface system of the replica. The system according to claim 3. インスタンスの第1のペアは、インスタンスの第2のペアと無関係に同期し、インスタンスの前記第1のペアとインスタンスの前記第2のペアは共通同期コミュニティの一部であることを特徴とする請求項1に記載のシステム。   The first pair of instances synchronizes independently of the second pair of instances, and the first pair of instances and the second pair of instances are part of a common synchronization community. Item 4. The system according to Item 1. 同期の競合は、定義済み決定可能基準に基づいて自動的に検出され、解決されることを特徴とする請求項1に記載のシステム。   The system of claim 1, wherein synchronization conflicts are automatically detected and resolved based on predefined determinable criteria. 前記競合のいくつかは、エンドユーザによる手作業による解決のためログに記録されるようにすることにより解決されることを特徴とする請求項6に記載のシステム。   The system of claim 6, wherein some of the conflicts are resolved by allowing them to be logged for manual resolution by an end user. 前記同期サブシステムは、同期パートナとの前の同期状態を追跡し、それによって、最後の同期以降変化した変更ユニット(「純変化」)とそのパートナとの同期のみをとることを特徴とする請求項1に記載のシステム。   The synchronization subsystem keeps track of the previous synchronization state with a synchronization partner, thereby only synchronizing the change unit ("net change") that has changed since the last synchronization with that partner. Item 4. The system according to Item 1. ハードウェア/ソフトウェアインタフェースシステム用のストレージプラットフォーム(例えば、WinFS)の複数のインスタンスの同期をとる方法であって、
前記ストレージプラットフォームを基本精度ユニット(例えば、変更ユニット)に分割することと、
変更を順次列挙し、変更ユニット毎に前記変更を追跡することと、
それぞれのインスタンスについて、そのインスタンスに対する変更の前記状態とともに、同期コミュニティ(同期パートナ)内の他の知られている複数のインスタンスに対する変更の前記状態を追跡することと、
同期について、特定のインスタンスに対する前記列挙された変更とそのインスタンスに対する変更の前記状態とを比較することにより新しい変更を識別すること
とを備えることを特徴とする方法。
A method for synchronizing multiple instances of a storage platform (eg, WinFS) for a hardware / software interface system comprising:
Dividing the storage platform into basic precision units (eg, change units);
Sequentially enumerate changes and track the changes for each change unit;
For each instance, tracking the status of changes to other known instances in a sync community (synchronization partner) along with the status of changes to that instance;
Identifying, for synchronization, new changes by comparing the listed changes for a particular instance with the status of changes for that instance.
第1のインスタンスである、レプリカは、Itemベースの同期を直接サポートするハードウェア/ソフトウェアインタフェースシステム上でインスタンス化され(WinFS)、第2のインスタンスである、データソースは、Itemベースの同期を直接サポートしないハードウェア/ソフトウェアインタフェースシステム上でインスタンス化され(非WinFS)、前記方法は、同期処理アプリケーションプログラミングインタフェースを介して非WinFSインスタンスを仮想化するためにアダプタを使用することをさらに備えることを特徴とする請求項9に記載の方法。   The first instance, the replica, is instantiated on a hardware / software interface system that directly supports Item-based synchronization (WinFS), and the second instance, the data source, directly handles Item-based synchronization. Instantiated on a non-supporting hardware / software interface system (non-WinFS), the method further comprises using an adapter to virtualize the non-WinFS instance via a synchronous processing application programming interface. The method according to claim 9. 変更ユニット精度のレベルで同期競合を検出することをさらに備えることを特徴とする請求項10に記載の方法。   The method of claim 10, further comprising detecting synchronization contention at a level of change unit accuracy. 変更アプリケーション(同期データ)上の個々の変更ユニットレベルで成功、失敗、および/または競合を報告するインスタンスと、
バックエンド状態を更新するために同期データを使用するアプリケーション(限定はしないが、アダプタおよび他の同期制御アプリケーションを含む)と
をさらに備えることを特徴とする請求項10に記載の方法。
An instance that reports success, failure, and / or conflict at the individual change unit level on the change application (synchronous data);
11. The method of claim 10, further comprising: applications that use synchronization data to update backend state (including but not limited to adapters and other synchronization control applications).
レプリカとデータソース(同期パートナ毎に)との同期をとる方法であって、前記レプリカと前記データソースは両方とも、それぞれの同期パートナにより保持される変更状態情報を持ち、前記データソース(非WinFS)は、アダプタを使用して前記レプリカ(WinFS)のハードウェア/ソフトウェアシステムとインタフェースし、前記方法は、
前記レプリカが前記アダプタに、前記データソースに対する最後の状態情報に基づき、前記データソースに対する前記最後の状態情報内に反映されているような前記最後の同期以降に加えられた変更(「新しい変更」)を反映する前記レプリカに対する更新された状態情報を送ることと、
前記アダプタが、前記レプリカに対する前記更新された状態情報および前記新しい変更を受け取り、データソースへのできる限り多くの変更を実装し、変更ユニットベースで変更ユニット上の変更毎に成功または失敗を追跡することと
を備えることを特徴とする方法。
A method of synchronizing a replica with a data source (per synchronization partner), wherein both the replica and the data source have change state information held by their respective synchronization partners, and the data source (non-WinFS) ) Interface with the replica (WinFS) hardware / software system using an adapter, the method comprising:
Changes made by the replica since the last synchronization as reflected in the last state information for the data source based on the last state information for the data source ("new change") ) To send updated status information for the replica reflecting
The adapter receives the updated status information and the new changes for the replica, implements as many changes as possible to the data source, and tracks success or failure for each change on the change unit on a change unit basis And a method comprising:
前記アダプタが、変更ユニット別に変更ユニット上の変更毎に前記成功または失敗に基づき前記データソースの前記新しい状態を計算し、この新しい状態情報を格納し、この新しい状態情報を前記レプリカのハードウェア/ソフトウェアインタフェースシステム(WinFS)に送信することと、
前記レプリカの前記ハードウェア/ソフトウェアインタフェースシステム(WinFS)が前記レプリカにより将来使用できるように前記データソースに対する前記新しい状態情報を格納することと
をさらに備えることを特徴とする請求項13に記載の方法。
The adapter calculates the new state of the data source based on the success or failure for each change on the change unit by change unit, stores the new state information, and stores the new state information in the hardware / Sending to a software interface system (WinFS);
14. The method of claim 13, further comprising: storing the new state information for the data source for future use by the replica of the hardware / software interface system (WinFS) of the replica. .
前記アダプタが、前記レプリカの前記ハードウェア/ソフトウェアインタフェースシステム(WinFS)に、変更ユニット別に変更ユニット上の変更毎に前記成功または失敗を送信することと、
前記レプリカの前記ハードウェア/ソフトウェアインタフェースシステム(WinFS)は、変更ユニット別に変更ユニット上で前記データソースへのそれぞれの変更に対する前記成功または失敗に基づいて前記データソースに対する新しい状態情報を計算することと、
前記レプリカの前記ハードウェア/ソフトウェアインタフェースシステム(WinFS)が前記新しい状態情報を前記アダプタに送信し、前記レプリカにより将来使用できるように前記新しい状態情報を格納することと、
前記アダプタは、前記新しい状態情報を受け取って格納することと
をさらに備えることを特徴とする請求項13に記載の方法。
The adapter sends the success or failure for each change on a change unit to the hardware / software interface system (WinFS) of the replica for each change unit;
The hardware / software interface system (WinFS) of the replica calculates new state information for the data source based on the success or failure for each change to the data source on a change unit by change unit; ,
The hardware / software interface system (WinFS) of the replica sends the new state information to the adapter and stores the new state information for future use by the replica;
The method of claim 13, wherein the adapter further comprises receiving and storing the new status information.
ハードウェア/ソフトウェアインタフェースシステム上のストレージプラットフォームシステム(例えば、WinFS)用のコンピュータ可読命令を格納するコンピュータ可読媒体であって、前記ストレージシステムは、ストレージプラットフォームの複数のインスタンスのうちから1つのローカルインスタンスの同期をとる命令を備えたことを特徴とするコンピュータ可読媒体。   A computer readable medium storing computer readable instructions for a storage platform system (eg, WinFS) on a hardware / software interface system, wherein the storage system is a local instance of a plurality of instances of the storage platform. A computer readable medium comprising instructions for synchronizing. 前記同期サブシステムは、同期オペレーション時に、前記データストア上のデータ全体の中からデータの部分集合のみを同期させることを特徴とする請求項16に記載のシステム。   The system of claim 16, wherein the synchronization subsystem synchronizes only a subset of data from the entire data on the data store during a synchronization operation. 前記ストレージプラットフォームの第1のインスタンスは、レプリカである、つまり、前記同期サブシステムを持つハードウェア/ソフトウェアインタフェースシステム上で実行されており(例えば、WinFS)、前記ストレージプラットフォームの第2のインスタンスは、データソースである、つまり、前記同期サブシステムを持たないハードウェア/ソフトウェアインタフェースシステム上で実行されている(例えば、非WinFS)ことを特徴とする請求項16に記載のコンピュータ可読命令。   The first instance of the storage platform is a replica, that is, running on a hardware / software interface system with the synchronization subsystem (eg, WinFS), and the second instance of the storage platform is 17. Computer-readable instructions according to claim 16, wherein the instructions are executed on a hardware / software interface system that is a data source, i.e., does not have the synchronization subsystem (e.g., non-WinFS). 前記レプリカと前記データソースとの間の前記同期は、前記第1のインスタンスの前記ハードウェア/ソフトウェアインタフェースシステムのアプリケーションプログラミングインタフェース(API)とインタフェースすることにより前記第2のインスタンスを仮想化する同期アダプタにより円滑にされることを特徴とする請求項18に記載のコンピュータ可読命令。   The synchronization between the replica and the data source is a synchronization adapter that virtualizes the second instance by interfacing with an application programming interface (API) of the hardware / software interface system of the first instance The computer readable instructions of claim 18, wherein the computer readable instructions are facilitated by: インスタンスの第1のペアは、インスタンスの第2のペアと無関係に同期し、インスタンスの前記第1のペアとインスタンスの前記第2のペアは共通同期コミュニティの一部であることを特徴とする請求項16に記載のコンピュータ可読命令。   The first pair of instances synchronizes independently of the second pair of instances, and the first pair of instances and the second pair of instances are part of a common synchronization community. Item 17. A computer-readable instruction according to Item 16. 同期の競合は、定義済み決定可能基準に基づいて自動的に検出され、解決されることを特徴とする請求項16に記載のコンピュータ可読命令。   The computer-readable instructions of claim 16, wherein synchronization conflicts are automatically detected and resolved based on predefined determinable criteria. 前記競合のいくつかは、エンドユーザによる手作業による解決のためログに記録されるようにすることにより解決されることを特徴とする請求項21に記載のコンピュータ可読命令。   The computer-readable instructions of claim 21, wherein some of the conflicts are resolved by allowing them to be logged for manual resolution by an end user. 前記同期サブシステムは、同期パートナとの前の同期状態を追跡し、それによって、最後の同期以降変化した変更ユニット(「純変化」)とそのパートナとの同期のみをとることを特徴とする請求項16に記載のコンピュータ可読命令。   The synchronization subsystem keeps track of the previous synchronization state with a synchronization partner, thereby only synchronizing the change unit ("net change") that has changed since the last synchronization with that partner. Item 17. A computer-readable instruction according to Item 16. ハードウェア/ソフトウェアインタフェースシステム用のストレージプラットフォーム(例えば、WinFS)の複数のインスタンスの同期をとるためのコンピュータ可読命令を格納するコンピュータ可読媒体であって、前記コンピュータ可読命令は、
前記ストレージプラットフォームを基本精度ユニット(例えば、変更ユニット)に分割する命令と、
変更を順次列挙し、変更ユニット毎に前記変更を追跡する命令と、
それぞれのインスタンスについて、そのインスタンスに対する変更の前記状態とともに、同期コミュニティ(同期パートナ)内の他の知られている複数のインスタンスに対する変更の前記状態を追跡する命令と、
同期について、特定のインスタンスに対する前記列挙された変更とそのインスタンスに対する変更の前記状態とを比較することにより新しい変更を識別する命令とを含むことを特徴とするコンピュータ可読媒体。
A computer-readable medium storing computer-readable instructions for synchronizing multiple instances of a storage platform (eg, WinFS) for a hardware / software interface system, the computer-readable instructions comprising:
Instructions to divide the storage platform into basic precision units (eg, change units);
Instructions to enumerate changes sequentially and track said changes per change unit;
Instructions for each instance to track the state of changes to other known instances in the sync community (synchronization partner), as well as the state of changes to that instance;
A computer readable medium comprising: for synchronization, instructions for identifying new changes by comparing the listed changes for a particular instance with the status of changes for that instance.
第1のインスタンスである、レプリカがItemベースの同期を直接サポートするハードウェア/ソフトウェアインタフェースシステム上でインスタンス化されるようにする命令と(WinFS)、第2のインスタンスである、データソースがItemベースの同期を直接サポートしないハードウェア/ソフトウェアインタフェースシステム上でインスタンス化されるようにする命令と(非WinFS)をさらに含み、前記方法は、同期処理アプリケーションプログラミングインタフェースを介して非WinFSインスタンスを仮想化するためにアダプタを使用することをさらに含むことを特徴とする請求項24に記載のコンピュータ可読命令。   The first instance, instructions that allow the replica to be instantiated on a hardware / software interface system that directly supports Item-based synchronization (WinFS), and the second instance, the data source is Item-based Further comprising instructions to be instantiated on a hardware / software interface system that does not directly support synchronization (non-WinFS) and the method virtualizes a non-WinFS instance via a synchronous processing application programming interface 25. The computer readable instructions of claim 24, further comprising using an adapter for the purpose. 変更ユニット精度のレベルで同期競合を検出することさらに含むことを特徴とする請求項25に記載のコンピュータ可読命令。   The computer-readable instructions of claim 25, further comprising detecting synchronization conflicts at a modified unit accuracy level. 変更アプリケーション(同期データ)上の個々の変更ユニットレベルで成功、失敗、および/または競合を報告するインスタンスと、
バックエンド状態を更新するために同期データを使用するアプリケーション(限定はしないが、アダプタおよび他の同期制御アプリケーションを含む)と
をさらに含むことを特徴とする請求項25に記載のコンピュータ可読命令。
An instance that reports success, failure, and / or conflict at the individual change unit level on the change application (synchronous data);
26. The computer readable instructions of claim 25, further comprising: applications that use synchronization data to update backend state, including but not limited to adapters and other synchronization control applications.
レプリカとデータソース(同期パートナ毎に)との同期をとるためのコンピュータ可読命令を格納するコンピュータ可読媒体であって、前記レプリカと前記データソースは両方とも、それぞれの同期パートナにより保持される変更状態情報を持ち、前記データソース(非WinFS)は、アダプタを使用して前記レプリカ(WinFS)のハードウェア/ソフトウェアシステムとインタフェースし、前記コンピュータ可読命令は、前記レプリカが前記データソースに対する最後の状態情報に基づき、前記データソースに対する前記最後の状態情報内に反映されているような前記最後の同期以降に加えられた変更(「新しい変更」)を反映する前記レプリカに対する更新された状態情報を前記アダプタに送り、前記アダプタが前記レプリカおよび前記新しい変更に対する前記更新された状態情報を受け取ると、前記データソースに対するできる限り多くの変更を実装し、変更ユニット別に変更ユニット上でそれぞれの変更の成功または失敗を追跡するようにする命令を含むことを特徴とするコンピュータ可読媒体。   A computer readable medium for storing computer readable instructions for synchronizing a replica with a data source (for each synchronization partner), wherein both the replica and the data source are maintained by their respective synchronization partners The data source (non-WinFS) uses an adapter to interface with the hardware (software) system of the replica (WinFS), and the computer readable instructions include the last state information for the data source by the replica Updated status information for the replica reflecting changes made since the last synchronization ("new changes") as reflected in the last status information for the data source To the replica and the adapter Upon receiving the updated status information for the new change, includes instructions to implement as many changes as possible to the data source and track the success or failure of each change on the change unit by change unit A computer-readable medium characterized by the above. 前記レプリカにより将来使用できるように前記データソースに対する前記新しい状態情報を格納する前記レプリカの前記ハードウェア/ソフトウェアインタフェースシステム(WinFS)に対する命令をさらに含み、前記アダプタが、変更ユニット別に変更ユニット上でそれぞれの変更に対する前記成功または失敗に基づいて前記データソースの新しい状態をすでに計算しており、この新しい状態情報を持ち、この新しい状態情報を前記レプリカのハードウェア/ソフトウェアインタフェースシステム(WinFS)に送信していることを条件とすることを特徴とする請求項28に記載のコンピュータ可読命令。   Further comprising instructions for the hardware / software interface system (WinFS) of the replica to store the new state information for the data source for future use by the replica, wherein the adapter is on each change unit on a change unit basis. Has already calculated the new state of the data source based on the success or failure to the change, and has this new state information and sends this new state information to the hardware / software interface system (WinFS) of the replica 29. The computer readable instructions of claim 28, provided that: 前記アダプタは、前記レプリカの前記ハードウェア/ソフトウェアインタフェースシステム(WinFS)に、変更ユニット別に変更ユニット上の変更毎に前記成功または失敗を送信し、
前記レプリカの前記ハードウェア/ソフトウェアインタフェースシステム(WinFS)が変更ユニット別に変更ユニット上で前記データソースへのそれぞれの変更に対する前記成功または失敗に基づいて前記データソースに対する新しい状態情報を計算するための命令と、
前記レプリカの前記ハードウェア/ソフトウェアインタフェースシステム(WinFS)が前記新しい状態情報を前記アダプタに送信し、前記レプリカにより将来使用できるように前記新しい状態情報を格納し、前記アダプタが前記新しい状態情報を受信し、格納できるようにするための命令と
をさらに含むことを特徴とする請求項28に記載のコンピュータ可読命令。
The adapter sends the success or failure for each change on a change unit to the hardware / software interface system (WinFS) of the replica for each change unit,
Instructions for the hardware / software interface system (WinFS) of the replica to calculate new state information for the data source based on the success or failure for each change to the data source on a change unit by change unit When,
The hardware / software interface system (WinFS) of the replica sends the new state information to the adapter, stores the new state information for future use by the replica, and the adapter receives the new state information. 29. The computer readable instructions of claim 28, further comprising instructions for enabling storage.
JP2006523857A 2003-08-21 2004-07-29 System and method for realizing a synchronous processing service for a unit of information manageable by a hardware / software interface system Expired - Fee Related JP4583376B2 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
PCT/US2003/026150 WO2005029363A1 (en) 2003-08-21 2003-08-21 Systems and methods for interfacing application programs with an item-based storage platform
US10/646,575 US8131739B2 (en) 2003-08-21 2003-08-21 Systems and methods for interfacing application programs with an item-based storage platform
US10/692,515 US7743019B2 (en) 2003-08-21 2003-10-24 Systems and methods for providing synchronization services for units of information manageable by a hardware/software interface system
PCT/US2004/024288 WO2005024665A1 (en) 2003-08-21 2004-07-29 Systems and methods for providing synchronization services for units of information manageable by a hardware/software interface system

Publications (3)

Publication Number Publication Date
JP2007503050A true JP2007503050A (en) 2007-02-15
JP2007503050A5 JP2007503050A5 (en) 2007-09-20
JP4583376B2 JP4583376B2 (en) 2010-11-17

Family

ID=34279606

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006523857A Expired - Fee Related JP4583376B2 (en) 2003-08-21 2004-07-29 System and method for realizing a synchronous processing service for a unit of information manageable by a hardware / software interface system

Country Status (7)

Country Link
EP (1) EP1581894A4 (en)
JP (1) JP4583376B2 (en)
AU (1) AU2004271525B2 (en)
BR (1) BRPI0406612A (en)
CA (1) CA2512185C (en)
MX (1) MXPA05007092A (en)
WO (1) WO2005024665A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016505964A (en) * 2012-12-19 2016-02-25 ドロップボックス, インコーポレイテッド Application programming interface for data synchronization in online storage systems

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8131739B2 (en) 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
US7590643B2 (en) 2003-08-21 2009-09-15 Microsoft Corporation Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system
US8166101B2 (en) 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
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
US7711835B2 (en) 2004-09-30 2010-05-04 Citrix Systems, Inc. Method and apparatus for reducing disclosure of proprietary data in a networked environment
US8171479B2 (en) 2004-09-30 2012-05-01 Citrix Systems, Inc. Method and apparatus for providing an aggregate view of enumerated system resources from various isolation layers
US7680758B2 (en) 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
US8095940B2 (en) 2005-09-19 2012-01-10 Citrix Systems, Inc. Method and system for locating and accessing resources
US8613048B2 (en) 2004-09-30 2013-12-17 Citrix Systems, Inc. Method and apparatus for providing authorized remote access to application sessions
US7748032B2 (en) 2004-09-30 2010-06-29 Citrix Systems, Inc. Method and apparatus for associating tickets in a ticket hierarchy
US8024568B2 (en) 2005-01-28 2011-09-20 Citrix Systems, Inc. Method and system for verification of an endpoint security scan
US7805422B2 (en) 2005-02-28 2010-09-28 Microsoft Corporation Change notification query multiplexing
US7478102B2 (en) * 2005-03-28 2009-01-13 Microsoft Corporation Mapping of a file system model to a database object
US7930346B2 (en) 2005-08-24 2011-04-19 Microsoft Corporation Security in peer to peer synchronization applications
US8131825B2 (en) 2005-10-07 2012-03-06 Citrix Systems, Inc. Method and a system for responding locally to requests for file metadata associated with files stored remotely
US7779034B2 (en) 2005-10-07 2010-08-17 Citrix Systems, Inc. Method and system for accessing a remote file in a directory structure associated with an application program executing locally
US20070174429A1 (en) 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
US8533846B2 (en) 2006-11-08 2013-09-10 Citrix Systems, Inc. Method and system for dynamically associating access rights with a resource
US8631147B2 (en) 2007-03-12 2014-01-14 Citrix Systems, Inc. Systems and methods for configuring policy bank invocations
US7865589B2 (en) 2007-03-12 2011-01-04 Citrix Systems, Inc. Systems and methods for providing structured policy expressions to represent unstructured data in a network appliance
US8490148B2 (en) 2007-03-12 2013-07-16 Citrix Systems, Inc Systems and methods for managing application security profiles
US7853678B2 (en) 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring flow control of policy expressions
US7853679B2 (en) 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring handling of undefined policy events
US8171483B2 (en) 2007-10-20 2012-05-01 Citrix Systems, Inc. Method and system for communicating between isolation environments
US8090797B2 (en) 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
US9398090B2 (en) 2013-01-07 2016-07-19 Dropbox, Inc. Synchronized content library
US9697228B2 (en) 2014-04-14 2017-07-04 Vembu Technologies Private Limited Secure relational file system with version control, deduplication, and error correction
US11340919B2 (en) * 2020-06-23 2022-05-24 Vmware, Inc. Transitioning application windows between local and remote desktops
CN112527420A (en) * 2020-12-23 2021-03-19 平安普惠企业管理有限公司 Interface data flow processing method and device, computer equipment and medium

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002149464A (en) * 2000-08-17 2002-05-24 Fusionone Inc Base rolling engine for data transfer and synchronization system
WO2002097623A2 (en) * 2001-05-25 2002-12-05 Oracle International Corporation Management and synchronization application for network file system
WO2003044698A1 (en) * 2001-11-15 2003-05-30 Visto Corporation System and methods for asychronous synchronization
WO2003046759A2 (en) * 2001-11-26 2003-06-05 Cognima Ltd Method of replicating data between computing devices

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5774717A (en) * 1995-12-15 1998-06-30 International Business Machines Corporation Method and article of manufacture for resynchronizing client/server file systems and resolving file system conflicts
US6317754B1 (en) * 1998-07-03 2001-11-13 Mitsubishi Electric Research Laboratories, Inc System for user control of version /Synchronization in mobile computing
US6553391B1 (en) * 2000-06-08 2003-04-22 International Business Machines Corporation System and method for replicating external files and database metadata pertaining thereto
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
US6772178B2 (en) * 2001-07-27 2004-08-03 Sun Microsystems, Inc. Method and apparatus for managing remote data replication in a distributed computer system

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002149464A (en) * 2000-08-17 2002-05-24 Fusionone Inc Base rolling engine for data transfer and synchronization system
WO2002097623A2 (en) * 2001-05-25 2002-12-05 Oracle International Corporation Management and synchronization application for network file system
JP2005507100A (en) * 2001-05-25 2005-03-10 オラクル・インターナショナル・コーポレイション Management and synchronization application for network file systems
WO2003044698A1 (en) * 2001-11-15 2003-05-30 Visto Corporation System and methods for asychronous synchronization
JP2005509979A (en) * 2001-11-15 2005-04-14 ヴィスト・コーポレーション Asynchronous synchronization system and method
WO2003046759A2 (en) * 2001-11-26 2003-06-05 Cognima Ltd Method of replicating data between computing devices
JP2005510805A (en) * 2001-11-26 2005-04-21 コグニマ リミテッド Method for replicating data between computer devices

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016505964A (en) * 2012-12-19 2016-02-25 ドロップボックス, インコーポレイテッド Application programming interface for data synchronization in online storage systems

Also Published As

Publication number Publication date
EP1581894A1 (en) 2005-10-05
WO2005024665A1 (en) 2005-03-17
MXPA05007092A (en) 2005-09-12
EP1581894A4 (en) 2006-04-26
CA2512185A1 (en) 2005-03-17
CA2512185C (en) 2012-04-24
BRPI0406612A (en) 2005-12-06
AU2004271525A1 (en) 2005-03-17
AU2004271525B2 (en) 2010-01-21
JP4583376B2 (en) 2010-11-17

Similar Documents

Publication Publication Date Title
JP4583377B2 (en) System and method for realizing relational and hierarchical synchronization services for units of information manageable by a hardware / software interface system
JP4583376B2 (en) System and method for realizing a synchronous processing service for a unit of information manageable by a hardware / software interface system
JP4738908B2 (en) System and method for providing contention processing for peer-to-peer synchronization of units of information manageable by a hardware / software interface system
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
US7739316B2 (en) Systems and methods for the implementation of base schema for organizing units of information manageable by a hardware/software interface system
JP4394643B2 (en) System and method for data modeling in an item-based storage platform
US20050055380A1 (en) Systems and methods for separating units of information manageable by a hardware/software interface system from their physical organization
US20050055354A1 (en) Systems and methods for representing units of information manageable by a hardware/software interface system but independent of physical representation
JP2007521533A (en) System and method for interfacing application programs with item-based storage platforms
JP4583375B2 (en) System for implementation of synchronization schema
JP4580389B2 (en) System and method for synchronizing computer systems via an intermediary file system share or intermediary device
JP4580390B2 (en) System and method for extending and inheriting information units manageable by a hardware / software interface system
JP4394644B2 (en) Storage platform for organizing, searching, and sharing data
KR101109390B1 (en) Systems and methods for providing synchronization services for units of information manageable by a hardware/software interface system
KR20060110733A (en) System and methods for synchronizing computer systems through an intermediary file system share or device
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
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: 20100413

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100713

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100824

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: 20100831

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130910

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees