JP2007521532A - System and method for data modeling in an item-based storage platform - Google Patents

System and method for data modeling in an item-based storage platform Download PDF

Info

Publication number
JP2007521532A
JP2007521532A JP2005509096A JP2005509096A JP2007521532A JP 2007521532 A JP2007521532 A JP 2007521532A JP 2005509096 A JP2005509096 A JP 2005509096A JP 2005509096 A JP2005509096 A JP 2005509096A JP 2007521532 A JP2007521532 A JP 2007521532A
Authority
JP
Japan
Prior art keywords
item
items
relationship
computer
storage medium
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
JP2005509096A
Other languages
Japanese (ja)
Other versions
JP4394643B2 (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
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2007521532A publication Critical patent/JP2007521532A/en
Application granted granted Critical
Publication of JP4394643B2 publication Critical patent/JP4394643B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/288Entity relationship models
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本発明の様々な実施形態は、Item、Element、およびRelationshipを含むデータストア(302)を対象とする。Itemは、データストア(302)内のデータ格納ユニットであり、さらに前記要素および前記関係を含む。Elementは、1つまたは複数のフィールドを含む型の1つのインスタンスである。Relationshipは、少なくとも2つのItem間の1つのリンクである。データストア(302)は、さらに、Core Itemの集合を定義するCore Schema(340)を含み、これにより、ハードウェア/ソフトウェアインターフェースシステムは、所定の、予測可能な方法で、Core Itemの前記集合を理解し、直接処理する。コアItemは、共通単一基本Itemから派生し、共通単一基本Itemは、基本スキーマ内の基礎的なアイテムである。
Various embodiments of the present invention are directed to a data store (302) that includes Items, Elements, and Relationships. Item is a data storage unit in the data store (302), and further includes the element and the relationship. An Element is an instance of a type that includes one or more fields. A Relationship is a link between at least two Items. The data store (302) further includes a Core Schema (340) that defines a collection of Core Items so that the hardware / software interface system can store the collection of Core Items in a predetermined and predictable manner. Understand and process directly. A core Item is derived from a common single basic Item, which is a basic item in the basic schema.

Description

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

個々のディスク容量は、最近10年間に、ほぼ年70%の割合で増大してきている。ムーアの法則は、長年にわたって続いている中央演算処理装置(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 a tremendous increase in central processing unit (CPU) power that has continued 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 will store millions of files, 500 gigabytes (GB) The drive will become commonplace.

消費者は、コンピュータを主に通信と個人情報の編成に使用しており、これは、従来の個人情報管理(Personal Information Manager)スタイルのデータであるか、デジタル音楽または写真などの媒体であるかを問わない。デジタルコンテンツの量、および未加工のバイトを格納する能力は、途方もなく増大してきているが、消費者がこのようなデータの編成および統合に使用できる方法は対応できていない。知識労働者は、情報の管理および共有に膨大な時間を費やしており、ある調査では、知識労働者は非生産的情報関連の活動に全時間の15〜25%を費やしていると推定している。また他の調査では、標準的な知識労働者は情報の検索に毎日約2.5時間を費やしている推定している。   Consumers primarily use computers to communicate and organize personal information, whether it is traditional Personal Information Manager style data or media such as digital music or photos It doesn't matter. 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 addressed. 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 estimate that standard knowledge workers spend about 2.5 hours each day searching for information.

開発者および情報技術(IT)部門は、人々、場所、時間、および出来事などを表す共通ストレージ抽象化(common storage abstractions)のための、彼ら自身のデータストアを構築することに相当の時間と資金を費やしている。この結果、作業を重複させるだけでなく、データの共通の検索または共有のためのメカニズムのない、共通データの孤島をいくつも生み出している。今日、Microsoft Windows(登録商標)オペレーティングシステムが稼働するコンピュータ上に、いったいいくつのアドレス帳が存在しうるか考えてみよう。電子メールクライアントおよびパーソナルファイナンスプログラムなどの多くのアプリケーションは、個々にアドレス帳を保存し、そのようなそれぞれのプログラムが個別に保持するアドレス帳データのアプリケーション間の共有はほとんどない。その結果、ファイナンスプログラム(Microsoft Money(登録商標)のようなプログラム)は、受取人のアドレスを、電子メール連絡先フォルダ(Microsoft Outlook(登録商標)が備えているようなフォルダ)に保持されているアドレスと共有しない。実際、多くのユーザは、複数のデバイスを持ち、論理的に、そのパーソナルデータをそれら自体の間で同期させ、また携帯電話からMSNおよびAOLなどの商業サービスに至るまで、様々な追加ソースにまたがって同期させなければならないが、共有されているドキュメントのコラボレーションは、電子メールメッセージにドキュメントを添付することにより大半が行われている、つまり、手作業で、しかも非効率的に行われている。   Developers and information technology (IT) departments spend considerable time and money building their own data stores for common storage abstractions that represent people, places, time, and events. Spend. This results in a number of isolated islands of common data that not only duplicate work but also lack a mechanism for common search or sharing of 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 (such as Microsoft Money (registered trademark)) have the recipient's address held in an email contact folder (such as a folder that is included in Microsoft Outlook (registered trademark)). Do not share with address. 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の出現以来、格納可能なデータは、オペレーティングシステムレベルにおいてファイル、フォルダ、およびディレクトリに編成されてきた。これらのファイルは、一般に、ファイルシステムにより保持されている特殊ファイルにおいて具現化されたファイル階層自体(「ディレクトリ」)を含む。このディレクトリは、次に、ディレクトリ内のその他のファイルおよび階層内のそのようなファイルの位置(nodal location)のすべてに対応するエントリのリストを保持する(ここでは、フォルダと呼ぶ)。このようなシステムが、約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. Based on the abstraction of the physical organization of the storage medium used to do this, it functions mainly on organizing a plurality of files into a directory hierarchy of folders. Developed in the 1960s, the first Multitics operating system has gained a reputation for managing files 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 is unaware of the file format of any individual file, and the relationship between the files is considered insignificant at the operating system level (ie, other than the location of the file in the hierarchy). It was. Since the advent of Multics, storable data has been organized into files, folders, and directories at the operating system level. These files generally include the file hierarchy itself (“directory”) embodied in a special file maintained by the file system. This directory then holds a list of entries corresponding to all other files in the directory and all such nodal locations in the hierarchy (referred to herein as folders). Such a system has been state of the art for about 40 years.

しかし、コンピュータの物理的ストレージシステム内に置かれている情報の十分妥当な表現を実現しているにもかかわらず、ファイルシステムは、その物理的ストレージシステムの抽象化であり、それらのファイルの利用には、ユーザの操作内容(コンテクストを持つユニット、特徴、および他のユニットとの関係)とオペレーティングシステムが備える内容(ファイル、フォルダ、およびディレクトリ)との間のあるレベルの指示(解釈)を必要とする。したがって、ユーザ(アプリケーションおよび/またはエンドユーザ)には、そうすることが非効率であり、不整合であり、または他の何らかの形で望ましくない場合でも、情報のユニットにファイルシステム構造を強いる以外に選択肢がない。さらに、既存のファイルシステムは、個別ファイルに格納されているデータの構造についてはほとんど関知しないため、情報のほとんどは、それらを書いたアプリケーションにしかアクセス(理解)できないファイル内にロックアップされたままとなる。その結果、このように情報のスキマティック(schematic)な記述、および情報を管理するためのメカニズムを欠いているため、個別の保管場所の間でほとんどデータを共有しないままデータの保管場所を作成することになる。例えば、多くのパーソナルコンピュータ(PC)ユーザは、ファイル編成はPCユーザにとってかなり難しい作業であるため、あるレベル−例えば、Outlook Contacts、オンライン口座アドレス、Windows(登録商標)Address Book、Quicken Payees、およびインスタントメッセージング(IM)の仲間リスト−においてやり取りする人々に関する情報を格納する5つを超える異なるストアを持つ。ほとんどの既存のファイルシステムではファイルおよびフォルダの編成にネストされたフォルダメタファを使用しているため、ファイルの個数が増えると、柔軟で効率的な編成方式を維持するために要する労力はかなり大変なものとなる。このような状況では、単一ファイルの複数の分類があると非常に有益であるが、既存ファイルシステム内のハードまたはソフトリンクを使用することは厄介であり、維持も困難である。   However, despite realizing a sufficiently reasonable representation of the information located in a computer's physical storage system, a file system is an abstraction of that physical storage system and the use of those files Requires some level of instruction (interpretation) between the user's operations (contextual units, features, and relationships with other units) and the operating system content (files, folders, and directories) And Thus, users (applications and / or end-users), other than forcing a unit of information into a file system structure, even if it is inefficient, inconsistent, or otherwise undesirable in some way There is no choice. In addition, existing file systems have little knowledge of the structure of data stored in individual files, so most of the information remains locked up in files that can only be accessed (understood) by the application that wrote them. It becomes. 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. It will be. For example, for many personal computer (PC) users, file organization is a fairly difficult task for PC users, so some level-eg Outlook Contacts, online account addresses, Windows Address Book, Quicken Payes, and Instant There are more than five different stores that store information about the people you interact with in your messaging (IM) buddy list. 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 will be a thing. 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.

過去には、ファイルシステムの欠点をなくそうとする試みが何回かあったがうまくいかなかった。それらの以前の試みのうちいくつかは、連想メモリ(content addressable memory)を利用し、データに物理アドレスではなく内容でアクセスできるメカニズムを実現しようとした。しかし、連想メモリはキャッシュおよびメモリ管理ユニットなどのデバイスによる小規模な利用については有用であることが実証されたが、物理的記憶媒体などのデバイスでの大規模な利用は様々な理由からまだ可能でないため、こうした努力は成功しておらず、したがって、このような解決策はただ単に存在していない。オブジェクト指向データベース(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 content addressable memory to provide a mechanism for accessing data 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 have been made using object-oriented database (OODB) systems, but these attempts are characterized by strong database characteristics and good non-file representation, but are not effective in handling file representations and are hard. Nor can it replicate the speed, efficiency, and simplicity of files and folders based on the system level hierarchy of the hardware / 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. Demonstrated inadequacy-the same drawbacks as the central drawbacks of traditional file systems.

データベース技術は、同様の難題が存在するもう1つの技術分野である。例えば、リレーショナルデータベースモデルは大きな商業的成功を収めたが、実際には、独立系ソフトウェアベンダ(ISV)は、一般に、リレーショナルデータベースのソフトウェア製品(Microsoft SQL Serverなど)に用意されている機能のわずかな部分を利用している。その代わりに、そのような製品とのアプリケーションの相互作用のほとんどは、単純な「読み取る」と「書き込む」の形態である。これに対しすぐにわかる理由−プラットフォームまたはデータベースがわからないなど−が多数占めるが、気づかれないことが多い重要な理由の1つは、データベースは、必ずしも、大手ビジネスアプリケーションベンダが本当に必要とする的確な抽象化を行わないということである。例えば、現実世界には、「顧客」または「注文」(それら自身の中のアイテム、またそれら自身のアイテムとして注文の埋め込まれた「ラインアイテム」とともに)「アイテム」という概念があるが、リレーショナルデータベースはテーブルおよび行に関してしか認識しない。その結果、アプリケーションは、(例えば)アイテムレベルでの整合性、ロッキング、セキュリティ、および/またはトリガの側面を持つことが望ましいかもしれないが、一般的には、データベースはこれらの機能をテーブル/行のレベルでしか備えていない。これは、それぞれのアイテムがデータベースのあるテーブル内の単一行にマッピングされる場合にうまく機能する可能性があるが、複数のラインアイテムの注文の場合、アイテムが実際に複数のテーブルにマッピングされる理由がありえ、それがその場合であれば、単純なリレーショナルデータベースシステムではまったく正しい抽象化を行わない。その結果、アプリケーションは、それらの基本的抽象化を実現するためにデータベースの上にロジックを構築しなければならない。つまり、基本的リレーショナルモデルは、アプリケーションとストレージシステムとの間にあるレベルの間接性を必要とし、その場合データの意味構造は、特定の場合にしかアプリケーション内では見えない場合があるため、基本的リレーショナルモデルは、高水準のアプリケーションを容易に開発可能であるデータを格納するために十分なプラットフォームを提供しない。いくつかのデータベースベンダが、高水準の機能をその製品に組み込んでいる−オブジェクトリレーショナル機能、新しい組織化可能モデルなどを備える−が、どれも、必要な種類の包括的ソリューションを実現していない。というのも、本当に包括的なソリューションとは、有用なドメイン抽象化(「Persons」、「Locations」、「Events」など)に対し両方とも有用なデータモデル抽象化(「Item」、「Extensions」、「Relationships」など)を実現するものだからである。   Database technology is another technical field where similar challenges exist. For example, the relational database model has had great commercial success, but in fact, independent software vendors (ISVs) generally have a few of the features available in relational database software products (such as Microsoft SQL Server). The part 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 requires a certain level of indirection between the application and the storage system, in which case the semantic structure of the data may only be visible within the application in certain cases. The relational model does not provide a sufficient platform to store data that can be easily developed for high-level applications. 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 ("Item", "Extensions", "Items", "Extensions", “Relationships” and the like).

既存のデータストレージおよびデータベース技術における前記の欠点に関して、コンピュータシステム内のデータのすべての型を編成し、検索し、共有する能力を高めた新しいストレージプラットフォーム−既存のファイルシステムおよびデータベースシステムを超えてデータプラットフォームを拡張し拡大する、すべての型のデータを格納するように設計されているストレージプラットフォーム−が必要である。本発明は、この要求条件を満たす。   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-data beyond existing file systems and database systems There is a need for a storage platform that is designed to store all types of data that expands and expands the platform. The present invention satisfies this requirement.

以下の説明では、本発明の様々な態様の概要を述べる。この説明は、本発明の重要な態様のすべてを網羅的に説明することも、また本発明の範囲を定めることも意図していない。むしろ、この説明は、以下の詳細な説明および図面の導入部として使用されることを意図している。   The following description provides an overview of various aspects of the invention. This description 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 description is intended to be used as an introduction to the following detailed description and drawings.

本発明は、データの編成、検索、および共有のためのストレージプラットフォームを対象とする。本発明のストレージプラットフォームは、既存のファイルシステムおよびデータベースシステムを超えるデータストレージの概念を拡張し、広げるものであり、構造化、非構造化、または半構造化データを含むすべての型のデータ用のストアとなるように設計されている。   The present invention is 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.

本発明の一態様によれば、本発明のストレージプラットフォームは、データベースエンジン上に実装されたデータストアを含む。本発明の様々な実施形態では、データベースエンジンは、オブジェクトリレーショナルの拡張機能を備えるリレーショナルデータベースエンジンを含む。データストアは、データの編成、検索、共有、同期、およびセキュリティをサポートするデータモデルを実装する。特定の型のデータがスキーマ内に記述されており、プラットフォームは新しい型のデータ(本質的に、スキーマにより実現される基本型の子型(subtype))を定義するためスキーマの集合を拡張するメカニズムを備える。同期処理機能は、ユーザまたはシステム間のデータの共有を円滑にする。ファイルシステム風の機能が用意され、これにより、そのような従来のファイルシステムの制限のない既存のファイルシステムとのデータストアの相互運用性を実現できる。変更追跡メカニズムは、データストアに対する変更追跡の機能を備える。ストレージプラットフォームは、さらに、アプリケーションからストレージプラットフォームの前記の機能のすべてにアクセスし、スキーマで記述されているデータにアクセスするための一組のアプリケーションプログラムインターフェースを備える。   According to one aspect of the present invention, the storage platform of the present invention includes a data store implemented on a database engine. In various embodiments of the present invention, the database engine includes a relational database engine with object-relational extensions. The data store implements a data model that supports data organization, retrieval, sharing, synchronization, and security. A mechanism that extends a set of schemas to define a new type of data (essentially a subtype of the basic type implemented by the schema) where a particular type of data is described in the schema Is provided. 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」は日本語に訳してアイテムとするが、区別する意図はなく、そのような区別は想定されるべきでも、暗黙のうちに含まれるべきでもない)。   According to another aspect of the invention, a data model implemented by a data store defines a unit of data storage with respect to items, elements, and relationships. An item is a unit of data that can be stored in a data store and can include one or more elements and relationships. 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がハードウェア/ソフトウェアインターフェースシステムにより操作することができる情報の離散的(discrete)格納可能ユニットを構成する複数のItem、前記Itemに対する組織構造を構成する複数のItem Folder、およびそれぞれのItemが少なくとも1つのItem Folderに属し、複数のItem Folderに属す場合もある、複数のItemを操作するためのハードウェア/ソフトウェアインターフェースシステムを備える。   According to another aspect of the invention, a computer system provides a plurality of Items, each of which constitutes a discrete storable unit of information that can be manipulated by a hardware / software interface system. A hardware / software interface system for manipulating a plurality of Items, which includes a plurality of Item Folders constituting the organizational structure, and each Item belongs to at least one Item Folder, and may belong to the plurality of Item Folders.

本発明の他の態様によれば、コンピュータシステムは、複数のItemを備え、それぞれのItemは、ハードウェア/ソフトウェアインターフェースシステムにより操作することができる離散的情報ユニットを構成し、ItemまたはItemのプロパティ値のいくつかは、永続的ストアから求められるのとは反対に動的に計算される。つまり、ハードウェア/ソフトウェアインターフェースシステムは、Itemを格納する必要はなく、Itemの現在の集合を列挙する機能またはストレージプラットフォームの識別子(アプリケーションプログラミングインターフェースつまりAPIを説明する節でさらに詳しく説明する)が与えられた場合のItemを取り出す機能などのいくつかのオペレーションがサポートされる−例えば、Itemは、携帯電話の現在位置または温度センサ上の温度読み取り値とすることが可能である。   According to another aspect of the invention, a computer system comprises a plurality of Items, each Item comprising a discrete information unit that can be manipulated by a hardware / software interface system, and the Item or Item properties Some of the values are calculated dynamically as opposed to being obtained 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 section 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.

本発明の他の態様によれば、複数のItemを操作する、コンピュータシステムのハードウェア/ソフトウェアインターフェースシステムは、さらに、ハードウェア/ソフトウェアインターフェースシステムにより管理される複数のRelationshipにより相互接続されるItemを含む。本発明の他の態様によれば、コンピュータシステムのハードウェア/ソフトウェアインターフェースシステムは、前記ハードウェア/ソフトウェアインターフェースシステムにより理解可能なプロパティを持つ複数の離散的情報ユニットを操作する、コンピュータシステムのハードウェア/ソフトウェアインターフェースシステムである。本発明の他の態様によれば、コンピュータシステムのハードウェア/ソフトウェアインターフェースシステムは、前記ハードウェア/ソフトウェアインターフェースシステムが理解し、所定の予測可能な方法で直接処理することができるコアItemの集合を定義するコアスキーマを備える。本発明の他の態様によれば、前記Itemと複数のRelationshipとを相互接続し、ハードウェア/ソフトウェアインターフェースシステムレベルで前記Relationshipを管理することを含む、コンピュータシステムのハードウェア/ソフトウェアインターフェースシステムの複数の離散的情報ユニット(「Item」)を操作する方法が開示される。   According to another aspect of the present invention, a hardware / software interface system of a computer system that operates a plurality of Items further includes an Item interconnected by a plurality of Relationships managed by the hardware / software interface system. Including. According to another aspect of the present invention, a computer system hardware / software interface system operates a plurality of discrete information units having properties understandable by the hardware / software interface system. / Software interface system. According to another aspect of the present invention, a hardware / software interface system of a computer system is a collection of core Items that the hardware / software interface system understands and can directly process in a predetermined and predictable manner. It has a core schema to define. According to another aspect of the present invention, a plurality of hardware / software interface systems of a computer system comprising interconnecting the Item and a plurality of Relationships and managing the Relationships at a hardware / software interface system level A method of operating a discrete information unit ("Item") of a computer is disclosed.

本発明の他の特徴によれば、ストレージプラットフォームのAPIは、ストレージプラットフォームスキーマの集合で定義されているそれぞれのアイテム、アイテム拡張、および関係に対するデータクラスを用意する。さらに、アプリケーションプログラミングインターフェースは、データクラスに対するビヘイビア(behaviors)の共通の集合を定義し、データクラスとともに、ストレージプラットフォームAPIの基本プログラミングモデルを提供するフレームワーククラスの集合を実現する。本発明の他の特徴によれば、ストレージプラットフォームAPIは、アプリケーションプログラマを基礎のデータベースエンジンのクエリ言語の詳細から分離する形で、データストア内のアイテムの様々なプロパティに基づいてアプリケーションプログラマがクエリを形成するために使用できる簡略化されたクエリモデルを備える。本発明のストレージプラットフォームAPIのさらに他の態様によれば、このAPIは、アプリケーションプログラムによりアイテムに加えられた変更を集めてから、それらをデータストアが実装されているデータベースエンジン(または何らかの種類のストレージエンジン)により要求される正しい更新に編成する。これにより、アプリケーションプログラマは、データストア更新の複雑な部分をAPIに任せつつ、メモリ中のアイテムに変更を加えることができる。   According to another aspect of the invention, 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 the data class and, together with the data class, implements a set of framework classes that provide the basic programming model of the storage platform API. According to another aspect of the present invention, the storage platform API separates the application programmer from the details of the underlying database engine query language, allowing the application programmer to query based on various properties of the items in the data store. Provide a simplified query model that can be used to form. According to yet another aspect of the storage platform API of the present invention, the API collects changes made to items by application programs and then uses them to create a database engine (or some type of storage) that implements the data store. Organize into the correct updates required by the engine). This allows application programmers to make changes to items in memory while leaving the complex part of data store updates 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.

本発明の他の特徴および利点は、本発明の以下の詳細な説明および付属の図面から明白になるであろう。   Other features and advantages of the present invention will become apparent from the following 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.データの編成、検索、および共有のための新しいストレージプラットフォーム
A.用語解説
B.ストレージプラットフォームの概要
C.データモデル
1.Items
2.Itemの識別
a)アイテム参照
(1)ItemIDReference
(2)ItemPathReference
b)参照型階層
3.Item FoldersおよびCategories
4.Schemas
a)Base Schema
b)Core Schema
5.関係
a)関係の宣言
b)保持Relationship
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)関係インスタンス検索ビュー
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.セキュリティ
1.概要
2.セキュリティモデルの詳細な説明
a)セキュリティ記述子構造
(1)アクセスマスク形式
(2)汎用アクセス権
(3)標準アクセス権
b)アイテム特有の権利
(1)ファイルおよびディレクトリオブジェクト特有の権利
(2)WinFSItemRead
(3)WinFSItemReadAttributes
(4)WinFSItemWriteAttributes
(5)WinFSItemWrite
(6)WinFSItemAddLink
(7)WinFSItemDeleteLink
(8)アイテムを削除する権利
(9)アイテムをコピーする権利
(10)アイテムを移動する権利
(11)アイテム上のセキュリティポリシーを表示する権利
(12)アイテム上のセキュリティポリシーを変更する権利
(13)直接の等価物を持たない権利
3.実装
a)コンテナ内に新しいアイテムを作成する
b)明示的なACLをアイテムに追加する
c)保持Relationshipをアイテムに追加する
d)保持Relationshipをアイテムから削除する
e)明示的なACLをアイテムから削除する
f)アイテムに関連付けられているACLを修正する
F.通知および変更追跡
1.ストレージ変更イベント
a)イベント
b)ウォッチャ(Watchers)
2.変更追跡および通知生成メカニズム
a)変更追跡
b)タイムスタンプ管理
c)データ変更検出−イベント検出
G.同期
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.管理容易性
H.従来のファイルシステムの相互運用性
1.相互運用性のためのモデル
2.データストアの機能
a)ボリュームではない
b)ストア構造
c)すべてのファイルが移動(migrated)されるわけではない
d)NTFS名前空間でのストレージプラットフォームファイルへのアクセス
e)予期される名前空間/ドライブ文字(letters)
I.ストレージプラットフォームAPI
1.概要
2.命名およびスコープ
3.ストレージプラットフォームAPIコンポーネント
4.データクラス
5.ランタイムフレームワーク
a)ランタイムフレームワーククラス
(1)ItemContext
(2)ItemSearcher
(a)ターゲット型
(b)フィルタ
(c)検索の準備
(d)検索オプション
(3)アイテム結果ストリーム(「FindResult」)
b)動作中のランタイムフレームワーク
c)共通プログラミングパターン
(1)ItemContextオブジェクトを開く、閉じる
(2)オブジェクトの検索
(a)検索オプション
(b)FindOneおよびFindOnly
(c)ItemContext上のショートカットを検索する
(d)IDまたはパスによって検索する
(e)GetSearcherパターン
(3)ストアの更新
6.セキュリティ
7.関係についてのサポート
a)基本関係型
(1)関係クラス
(2)ItemReferenceクラス
(3)ItemIdReferenceクラス
(4)ItemPathReferenceクラス
(5)RelationshipId構造体
(6)VirtualRelationshipCollectionクラス
b)生成された関係型
(1)生成された関係型
(2)RelationshipPrototypeクラス
(3)RelationshipPrototypeCollection
クラス
c)Itemクラス内の関係サポート
(1)Itemクラス
(2)RelationshipCollectionクラス
d)検索式の中の関係サポート
(1)アイテムから関係へのトラバース
(2)関係からアイテムへのトラバース
(3)関係トラバースの組合せ
e)関係サポートの使用例
(1)関係の検索
(2)関係からソースおよびターゲットアイテムへのナビゲート
(3)ソースアイテムから関係へのナビゲート
(4)関係(およびアイテム)の作成
(5)関係(およびアイテム)の削除
8.ストレージプラットフォームAPIの「拡張」
a)ドメインビヘイビア
b)付加価値ビヘイビア
c)サービスプロバイダとしての付加価値ビヘイビア
9.デザインタイムフレームワーク
10.クエリ形式(formalism)
a)フィルタの基本事項
b)型変換
c)フィルタ構文
11.リモーティング
a)APIにおけるローカル/リモート透過性
b)リモーティングのストレージプラットフォーム実装
c)非ストレージプラットフォームストアへのアクセス
d)DFSとの関係
e)GXA/Indigoとの関係
12.制約条件
13.共有
a)共有の表現
b)共有の管理
c)共有のアクセス
d)発見可能性
14.Findの意味
15.ストレージプラットフォームContacts API
a)System.Storage.Contactの概要
b)ドメインビヘイビア
16.ストレージプラットフォームFile API
a)序論
(1)ストレージプラットフォーム内でのNTFSボリュームの反映
(2)ストレージプラットフォーム名前空間内でのファイルおよび
ディレクトリの作成
b)Fileスキーマ
c)System.Storage.Filesの概要
d)コード例
(1)ファイルを開き書き込む
(2)クエリの使用
e)ドメインビヘイビア
J.まとめ
Table of Contents Introduction A. Exemplary Computing Environment B. Conventional file-based storage II. New storage platform for organizing, searching, and sharing data Glossary Overview of storage platform Data model Items
2. Item identification a) Item reference
(1) ItemIDReference
(2) ItemPathReference
b) Reference type hierarchy Item Folders and Categories
4). Schema
a) Base Schema
b) Core Schema
5). Relation a) Declaration of relation 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 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 1. Overview 2. Detailed description of security model a) Security descriptor structure
(1) Access mask format
(2) General access rights
(3) Standard access rights b) Item-specific rights
(1) Rights specific to file and directory objects
(2) WinFSItemRead
(3) WinFSItemReadAttributes
(4) WinFSItemWriteAttributes
(5) WinFSitemWrite
(6) WinFSitemAddLink
(7) WinFSItemDeleteLink
(8) Right to delete items
(9) Rights to copy items
(10) The right to move items
(11) Right to display the security policy on the item
(12) Right to change the security policy on an item
(13) The right not to have a direct equivalent. Implementation a) Create a new item in the container b) Add an explicit ACL to the item c) Add a retention relationship to the item d) Remove the retention relationship from the item e) Remove the explicit ACL from the item F) Modify the ACL associated with the item. Notification and change tracking Storage change event a) Event b) Watchers
2. Change Tracking and Notification Generation Mechanism a) Change Tracking b) Timestamp Management c) Data Change Detection-Event Detection G. Synchronization 1. Synchronization processing between storage platforms a) Synchronization (sync) control application b) Schema annotation c) Synchronization settings
(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) Replica convergence and contention resolution propagation 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 H. Interoperability of conventional file systems Model for interoperability Data store functions a) Not a volume b) Store structure c) Not all files are migrated d) Access to storage platform files in the NTFS namespace e) Expected namespace / drive Letters
I. Storage platform API
1. Overview 2. Naming and scope 3. Storage platform API component Data class Runtime framework a) Runtime framework classes
(1) ItemContext
(2) ItemSearcher
(A) Target type
(B) Filter
(C) Preparation for search
(D) Search option
(3) Item result stream (“FindResult”)
b) Running runtime framework c) Common programming pattern
(1) Opening and closing an ItemContext object
(2) Object search
(A) Search option
(B) FindOne and FindOnly
(C) Search for shortcuts on ItemContext
(D) Search by ID or path
(E) GetSearcher pattern
(3) Store update Security 7. Support for relationships a) Basic relationship type
(1) Relation class
(2) ItemReference class
(3) ItemIdReference class
(4) ItemPathReference class
(5) RelationshipId structure
(6) VirtualRelationshipCollection class b) Generated relation type
(1) Generated relation type
(2) RelationshipPrototype class
(3) RelationshipPrototypeCollection
Class c) Relationship support in Item class
(1) Item class
(2) RelationshipCollection class d) Relationship support in search expressions
(1) Traverse from item to relationship
(2) Traverse from relationship to item
(3) Combination of relationship traversal e) Usage example of relationship support
(1) Relationship search
(2) Navigate from relationship to source and target items
(3) Navigate from source item to relationship
(4) Creating relationships (and items)
(5) Delete relationship (and item) "Extension" of storage platform API
a) Domain behavior b) Value-added behavior c) Value-added behavior as a service provider 9. Design time framework 10. Query format (formalism)
a) Basics of filters b) Type conversion c) Filter syntax Remoting a) Local / remote transparency in API b) Storage platform implementation of remoting c) Access to non-storage platform store d) Relationship with DFS e) Relationship with GXA / Indigo Restriction 13. Share a) Share representation b) Share management c) Share access d) Discoverability 14. Meaning of Find 15. Storage Platform Contacts API
a) System. Storage. Outline of Contact b) Domain Behavior 16. Storage platform File API
a) Introduction
(1) Reflection of NTFS volume in the storage platform
(2) Files in the storage platform namespace and
Directory creation b) File schema c) System. Storage. Overview of Files d) Code example
(1) Open and write files
(2) Use of query e) Domain behavior Summary

I.序論
本発明の主題は、法的要件を満たすように特異性(specificity)とともに説明されている。しかし、説明自体は、本発明の範囲を制限することを意図されていない。むしろ、発明者は、主張されている主題は、他の現在または将来の技術とともに、本明細書で説明されているステップと類似しているが異なるステップまたはステップの組合せを含むように、他の方法でも具現化されうることを考察した。さらに、「ステップ」という用語は、本明細書では、採用されている方法の異なる要素を暗示するために使用される場合があるが、この用語は、個々のステップの順序が明示的に説明されている場合を除き、本明細書で開示されている様々なステップ間の特定の順序を示唆するものとして解釈すべきではない。
I. Introduction The subject matter of the present invention is 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 the claimed subject matter, along with other current or future technologies, includes other steps or combinations of steps that are similar to, but different from, the steps described herein. We considered that the method could also be realized. 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. Should not be construed as implying a specific 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 are intended to be a general description of 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)は、ROM24に格納される。パーソナルコンピュータ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 exemplary general purpose computing system comprises a processing unit 21, a system memory 22, and a system bus 23 that couples various system components including the system memory to the processing unit 21. Personal computer 20. The system bus 23 may be any of several types of bus structures including a memory bus or memory controller, a peripheral 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 a basic routine for assisting 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 from and writing to a hard disk not shown in the figure, a magnetic disk drive 28 for reading from and writing to a removable magnetic disk 29, and a CD-ROM or other device. An optical disk drive 30 is provided for reading from and writing to a removable optical disk 31 such as an optical 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 disk drive interface 34, respectively. The drive and associated computer readable storage medium implement non-volatile storage for storing computer readable instructions, data structures, program modules, and other data for the personal computer 20. In the example environment described in the present invention, a hard disk, a removable magnetic disk 29, and a removable optical disk 31 are used. Those skilled in the art will understand that a magnetic cassette, flash memory card, digital video disk, Bernoulli It is understood that other types of computer readable media capable of storing computer accessible data such as cartridges, multiple random access memories (RAM), multiple read only memories (ROM) can be used in this exemplary operating environment. Will do. Similarly, this exemplary environment can further include various types of monitoring devices, such as heat sensors and security or fire alarm devices, and other information sources.

オペレーティングシステム35、1つまたは複数のアプリケーションプログラム36、その他のプログラムモジュール37、およびプログラムデータ38を含む、多くのプログラムモジュールは、ハードディスク、磁気ディスク29、光ディスク31、ROM24、またはRAM25に格納されることができる。ユーザはキーボード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 do. 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 processing unit 21 via a serial port interface 46 coupled to the system bus, but may be a parallel port, a game port, or a universal serial bus (USB). It can also be connected through 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. A personal computer usually includes other peripheral output devices (not shown) such as a speaker and a printer in addition to the monitor 47. The exemplary system of FIG. 1 further includes a host adapter 55, a small computer system interface (SCSI) 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 commonplace in offices, enterprise-wide computer networks, intranets, and the Internet.

LANネットワーキング環境で使用される場合、パーソナルコンピュータ20は、ネットワークインターフェースまたはアダプタ53を介してLAN51に接続される。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 in the figures 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). Can also be divided into three component groups.

コンピュータシステム200の様々な実施形態において、図1を再び参照すると、ハードウェアコンポーネント202は、処理ユニット(CPU)21、メモリ(ROM24およびRAM25の両方)、基本入出力システム(BIOS)26、およびキーボード40、マウス42、モニタ47、および/またはプリンタ(図に示されていない)などの様々な入出力(I/O)デバイスを備えることができる。ハードウェアコンポーネント202は、コンピュータシステム200用の基本的な物理的インフラストラクチャを備える。   In various embodiments of computer system 200, referring again to FIG. 1, hardware component 202 includes processing unit (CPU) 21, memory (both ROM 24 and RAM 25), basic input / output system (BIOS) 26, and keyboard. Various input / output (I / O) devices such as 40, mouse 42, monitor 47, and / or printer (not shown) may be provided. 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. Application programs provide a means for utilizing computer resources to solve problems, provide solutions, and process data for various users (machines, other computer systems, and / or end users). Prepare.

ハードウェア/ソフトウェアインターフェースシステムコンポーネント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 may 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 within 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 the 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 that can execute multiple programs at the same time, the hardware / software interface system executes which application in any 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 provides input to and output 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 capable of providing a parallel processing function, the hardware / software interface system further manages that the program is divided and executed on a plurality of processors at a time.

ハードウェア/ソフトウェアインターフェースシステムのシェル(本明細書では単に「シェル」と呼ぶ)は、ハードウェア/ソフトウェアインターフェースシステムとの対話型エンドユーザインターフェースである。(シェルは、「コマンドインタプリタ」と呼ばれたり、オペレーティングシステムでは、「オペレーティングシステムシェル」と呼ばれたりもする。)シェルは、アプリケーションプログラムおよび/またはエンドユーザにより直接アクセス可能なハードウェア/ソフトウェアインターフェースシステムの外側の層である。シェルとは対照的に、カーネルはハードウェアコンポーネントと直接やり取りするハードウェア/ソフトウェアインターフェースシステムの一番内側の層である。   A shell of a hardware / software interface system (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 are believed to be particularly well suited for computerized systems, this document is in no way intended to limit the invention to such embodiments. 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、MacOS、仮想マシンシステムなど)では、ファイルは、ハードウェア/ソフトウェアインターフェースシステムにより操作可能な情報(例えば、データ、プログラムなど)の基本的な個別の(格納可能および取り出し可能な)ユニットである。ファイルのグループは、「フォルダ」単位で一般的には編成される。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®, Unix®, Linux, MacOS, virtual machine systems, etc.), files are information that can be manipulated by the hardware / software interface system ( For example, basic individual (storeable and retrievable) units of data, programs, etc. A group of files is generally organized in units of “folders”. In Microsoft Windows®, Macintosh OS, and other hardware / software interface systems, a folder is a collection of files that can be retrieved, moved, and manipulated by some other means as a single information unit. It is. These folders are then organized in a tree-based hierarchical arrangement called a “directory” (detailed below). In some other hardware / software interface systems, such as DOS, z / OS, and most Unix-based operating systems, the terms “directory” and / or “folder” are used interchangeably. And the previous Apple computer system (eg, Apple IIe) used the term “catalog” instead of directory, but as used herein, these terms are all synonymous. It is considered a word and is interchangeable 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を含むことができ、それぞれ、さらに、追加フォルダを含むことができ、というように無限に続けることができる。これらのフォルダはそれぞれ、1つまたは複数のファイル220を保持できるが、ハードウェア/ソフトウェアインターフェースシステムレベルでは、フォルダ内の個々のファイルは、ツリー階層内のその位置以外共通するものは何も持たない。ファイルをフォルダ階層に編成するこのアプローチは、ファイルを格納するために使用される標準的な記憶媒体(例えば、ハードディスク、フロッピー(登録商標)ディスク、CD−ROMなど)の物理的構成を間接的に反映することは驚くことではない。   Conventionally, directories (alias, folder directories) 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” for that particular folder), each of which can contain additional folders, 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, the 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 files. It is not surprising to reflect.

前記に加えて、それぞれのフォルダは、そのサブフォルダおよびそのファイル用のコンテナである。つまり、それぞれのフォルダはそのサブフォルダおよびファイルを所有するということである。例えば、フォルダがハードウェア/ソフトウェアインターフェースシステムにより削除されると、そのフォルダのサブフォルダおよびファイルも削除される(それぞれのサブフォルダの場合、さらにその所有するサブフォルダおよびファイルを再帰的に含む)。同様に、それぞれのファイルは、一般的に、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 is itself a different separate unit that has no direct association with the original (eg changed to the original file) Is not reflected in the copy file at the hardware / software interface system level). In this regard, files and folders are “physical” in nature. This is because folders are treated like physical containers, and files are treated as discrete, separate physical elements within those containers.

II.データの編成、検索、および共有のための新しいストレージプラットフォーム
本発明は、データの編成、検索、および共有のためのストレージプラットフォームを対象とする。本発明のストレージプラットフォームは、上述の種類の既存のファイルシステムおよびデータベースシステムを超えてデータプラットフォームの概念を拡張し、広げるものであり、Itemと呼ばれるデータの新しい形態を含む、すべての型のデータ用のストアとなるように設計されている。
II. The present invention is directed to a storage platform for data organization, retrieval, and sharing. The storage platform of the present invention extends and extends the data platform concept beyond existing file systems and database systems of the type described above, and for all types of data, including a new form of data called Item. Designed to be a store.

A.用語解説
本明細書で使用されているように、また請求項で使用されているように、以下の用語は以下の意味を持つ。
A. Glossary As used herein and as used in the claims, the following terms have the following meanings.

「Item」は、単純ファイルとは異なり、ハードウェア/ソフトウェアインターフェースシステムシェルによりエンドユーザに対し公開されるすべてのオブジェクトにわたって一般的にサポートされるプロパティの基本集合を持つオブジェクトであるハードウェア/ソフトウェアインターフェースシステムにアクセスできる格納可能情報のユニットである。Itemは、さらに、新しいプロパティおよび関係を導入することができる機能を含むすべてのItem型にわたって一般的にサポートされるプロパティおよび関係も有する(本明細書の後のほうで詳述する)。   An “Item” is a hardware / software interface that, unlike a simple file, is an object that has a basic set of properties that are generally supported across all objects exposed to the end user by a hardware / software interface system shell. A unit of storable information that can access the 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).

「オペレーティングシステム」(OS)は、アプリケーションプログラムとコンピュータハードウェアとの間の媒介として動作する特別なプログラムである。オペレーティングシステムは、ほとんどの場合、シェルおよびカーネルを備える。   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.

「ハードウェア/ソフトウェアインターフェースシステム」は、コンピュータシステム上で実行されるコンピュータシステムおよびアプリケーションの基礎となるハードウェアコンポーネント間のインターフェースとして使用される、ソフトウェア、またはハードウェアとソフトウェアとの組合せである。ハードウェア/ソフトウェアインターフェースシステムは、通常、オペレーティングシステムを備える(いくつかの実施形態では、オペレーティングシステムのみからなる)。ハードウェア/ソフトウェアインターフェースシステムは、さらに、仮想マシンマネージャ(VMM)、共通言語ランタイム(CLR)またはその機能的等価物、Java(登録商標)仮想マシン(JVM)またはその機能的等価物、またはコンピュータシステム内のオペレーティングシステムの代わりとなる、またはそれへの追加となる他のそのようなソフトウェアコンポーネントを含むこともできる。ハードウェア/ソフトウェアインターフェースシステムの目的は、ユーザがアプリケーションプログラムを実行できるような環境を用意することである。ハードウェア/ソフトウェアインターフェースシステムの目標は、コンピュータシステムを使いやすくするだけでなく、コンピュータハードウェアを効率的な方法で利用できるようにすることである。   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 operating system within. 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 the 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リレーショナルデータベースエンジンを含む。
B. Storage Platform Overview With reference to FIG. 3, a storage platform 300 according to the present invention comprises 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.

データストア302は、データの編成、検索、共有、同期、およびセキュリティをサポートするデータモデル304を実装する。データの特定の型は、スキーマ340などのスキーマで記述され、ストレージプラットフォーム300は、以下で詳しく説明するように、それらのスキーマを展開するとともに、それらのスキーマを拡張するためのツール346を備える。   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および格上げ(promotion)/格下げ(demotion)機能310も備え、両方とも以下で詳述する。データストア302は、さらに、一組のアプリケーションプログラミングインターフェース312を備え、データストア302の機能を他のストレージプラットフォームコンポーネントおよびそのストレージプラットフォームを利用するアプリケーションプログラム(例えば、アプリケーションプログラム350a、350b、および350c)に公開する。   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 a promotion / 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.

本発明のストレージプラットフォームは、さらに、アプリケーションプログラム350a、350b、および350cなどのアプリケーションプログラムを、ストレージプラットフォームの前記の機能すべてにアクセスできるようにし、スキーマで記述されたデータにアクセスできるようにするアプリケーションプログラミングインターフェース(API)322を備える。ストレージプラットフォームAPI322は、アプリケーションプログラムにより、OLE DB API324およびMicrosoft Windows(登録商標)Win32 API326などの他のAPIと併用することができる。   The storage platform of the present invention further allows application programs such as application programs 350a, 350b, and 350c to access all of the aforementioned functions of the storage platform and to access data described in the schema. An interface (API) 322 is provided. The storage platform API 322 can be used in combination with other APIs such as the OLE DB API 324 and the Microsoft Windows (registered trademark) Win32 API 326 by an application program.

本発明のストレージプラットフォーム300は、ユーザまたはシステム間でのデータの共有を円滑にする同期処理サービス330を含む、様々なサービス328をアプリケーションプログラムに提供することができる。例えば、同期処理サービス330では、データストア302と同じ形式を持つ他のデータストアとの相互運用性とともに、他の形式を持つデータストアへのアクセスをも可能にすることができる。ストレージプラットフォーム300は、さらに、データストア302とWindows(登録商標)NTFSファイルシステム318などの既存のファイルシステムとの相互運用を可能にするファイルシステムの機能をも備える。   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 and access to data stores 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.

少なくとも一部の実施形態では、ストレージプラットフォーム300は、さらに、データへの操作を可能にし、また他のシステムとのやり取りを可能にするための追加機能をアプリケーションプログラミングに付加することもできる。これらの機能は、Info Agentサービス334および通知サービス332などの追加サービスの形態だけでなく、他のユーティリティ336の形態で具現化することができる。   In at least some embodiments, the storage platform 300 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 additional services 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)またはその機能的等価物で具現化されるか、またはそのなくてはならない一部を形成することができる。   In at least some embodiments, the storage platform is embodied in or forms an integral part of a computer system hardware / software interface 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.

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

以下の説明、および様々な図において、本発明のストレージプラットフォーム300は、「WinFS」と呼ぶことができる。しかし、この名称を使用してストレージプラットフォームを指すのは、説明の便宜上のことにすぎず、決して限定することを意図していない。   In the following description and 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 merely for convenience of explanation and is not intended to be limiting in any way.

C.データモデル
本発明のストレージプラットフォーム300のデータストア302は、ストア内に置かれているデータの編成、検索、共有、同期、およびセキュリティをサポートするデータモデルを実装する。本発明のデータモデルでは、「Item」は、ストレージ情報の基本ユニットである。このデータモデルは、以下で詳述するが、ItemおよびItem拡張を宣言し、Item間の関係を確立し、Item FoldersとCategories内にItemを編成するためのメカニズムを備える。
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. Among them, Street, City, and State are String types, and Zip is Type Int32. Since the address can have a plurality of values for the Street property, the Street can be a multi-value (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を持ち、さらに、居住者(occupant)がその住居(dwelling)に住んでいた期間を示すプロパティStartDateおよびEndDateを持つ。Personは、長い目で見ると複数の住居に居住する可能性があり、また住居には複数の住人がいる場合もあるので、StartDateおよびEndDate情報を入れるために最も適した場所は、関係(relationship)自体であることに注意されたい。   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, a LiveAt Relationship has a Source called Occupant in Type Person and a Target called Dwelling in Type Location, and a property StartDate and a property StartDate that indicate the period in which the occupant lived in the dwelling. Have. Since Person may live in more than one residence in the long run, and there may be more than one inhabitant, the best place to put StartDate and EndDate information is the relationship. Note that it is).

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

データモデルは、型の間の子型−親型関係(subtype-supertype relationship)の定義を許容する。BaseType関係とも呼ばれる子型−親型関係は、Type AがType Bに対しBaseTypeならば、Bのすべてのインスタンスは、Aのインスタンスでもあるというように定義される。これを表現するもう1つの方法は、Bに適合するすべてのインスタンスが、さらにAにも適合しなければならないとするものである。例えば、AがType StringのプロパティNameを持つが、BはType Int16のプロパティAgeを持つ場合、Bのインスタンスはどれも、NameとAgeの両方を持たなければならないということになる。型階層は、ルートに一つの親型(supertype)を有するツリーと考えることができる。ルートからの分岐は、第1レベルの子型(subtype)を定め、このレベルの分岐は、第2レベルの子型を定め、というように、それ自体子型を持たない最も先端の葉である子型へ進む。ツリーは、均一な深さとなるように制約されないが、循環を含むことはできない。与えられたTypeは、0個またはそれ以上の子型と0個または1個の親型を持つことができる。与えられたインスタンスは、その型の親型とともに1つの型に適合することができる。別の言い方をすると、ツリー内の任意のレベルにおいて与えられたインスタンスについて、そのインスタンスはそのレベルにおいて1つの子型に適合することができるということである。   The data model allows the definition of subtype-supertype relationships between types. A child-to-parent relationship, also referred to as a BaseType relationship, is defined such that if Type A is BaseType for Type B, then all instances of B are also instances of A. Another way of expressing this is that every instance that matches B must also match A. For example, if A has Type String property Name, but B has Type Int16 property Age, then all instances of B must have both Name and Age. The type hierarchy can be thought of as a tree with one supertype at the root. The branch from the root defines the first-level subtype, the branch at this level defines the second-level child type, and so on, is the most leading leaf that has no child type itself Go to the child type. 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 conform to a type along with its type's parent type. To put it another way, for an instance given at any level in the tree, that instance can fit into one child type at that level.

型は、型のインスタンスがさらにその型の子型のインスタンスでもなければならない場合にAbstractという。   A type is called Abstract if an instance of the type must also be an instance of a child type of that type.

1.Items
Itemは、単純ファイルとは異なり、ストレージプラットフォームによりエンドユーザまたはアプリケーションプログラムに対し公開されるすべてのオブジェクトにわたって一般的にサポートされるプロパティの基本集合を持つオブジェクトである格納可能情報のユニットである。Itemは、さらに、以下で説明するように、新しいプロパティおよび関係を導入することができる機能を含むすべての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.

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

Itemは、(あらゆる種類の)Contacts、People、Services、Locations、Documentsなどの現実世界の容易に理解できるデータのユニットを表すことを意図されている。図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とともに保持される。型付け(typing)のこれらの概念は、よく知られており、当業者であれば容易に理解できる。
Items are intended to represent units of real-world easily understandable data such as Contacts (every kind), People, Services, Locations, Documents, etc. 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 will be described in detail later in this specification.)
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 an asterisk (“*”) to the right of the colon (“:”). ") Indicates an unspecified and / or unlimited number (" many "). A “1” to the right of the colon indicates that there can be one value. A zero ("0") to the left of the colon indicates that the property is optional (may have no value at all). 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 document). These concepts of typing are well known and can be easily 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 defined. The EAddress property type is similarly defined as shown. Although used optionally in this Application, another way to represent a complex type within a Location Item is to render the Item with the individual properties of the complex type listed therein. 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 the Location Item in this FIG. 5C is for the exact same Item as 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).

プロパティおよびそのプロパティ型と同様のItemは、本質的に、サブタイプ化の対象ともなりうる自Item Typesを表す。つまり、本発明のいくつかの実施形態におけるストレージプラットフォームでは、Itemを他のItemの子型とすることができるということである(それによって、一方のItemは他方の親Itemのプロパティを継承する)。さらに、本発明の様々な実施形態について、すべてのItemはBase Schemaに見られる第1の、基礎的なItem型である「Item」Item型の子型である。(Base Schemaは、さらに、本明細書の後のほうで詳しく説明される。)図6Aは、Item、つまりこのInstanceのLocation ItemをBase SchemaにあるItem Item型の子型であるとして例示している。この図面では、矢印は、(他のすべてのItemのような)Location Itemが、Item Item型の子型であることを示している。Item Item型は、他のすべてのItemの派生元である基礎的なItemとして、ItemIdおよび様々なタイムスタンプなどの重要なプロパティを多数持ち、それによって、オペレーティングシステムにおいて、すべてのItemの標準プロパティを定義する。この図では、Item Item型のこれらのプロパティは、Locationにより継承され、それによって、Locationのプロパティになる。   An Item, similar to a property and its property type, essentially represents its own 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 drawing, the arrow indicates that the Location Item (like all other Items) is a child of the Item Item type. The Item Item type has a number of important properties such as ItemId and various timestamps as the underlying Item from which all other Items are derived, thereby allowing the standard properties of all Items to be set in the operating system. Define. 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 Item型の子型であることを矢印で示すことによりそれらのプロパティが参照されている)。   Another way to represent a property in a Location Item inherited from an Item Item type is to draw a Location with 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 -and inherited--shown in this figure but not shown in FIG. 5A--noticeably (but in FIG. 5A, Location Item is a child of Item Item type) These properties are referenced by an arrow indicating that they are

Itemは、スタンドアロンのオブジェクトであり、そのため、Itemを削除すると、それらのItemのイミディエイトおよび継承プロパティもすべて削除される。同様に、Itemを取り出した場合に受け取る内容は、Itemおよびそのイミディエイトおよび継承プロパティのすべて(複合プロパティ型に関係する情報を含む)である。本発明のいくつかの実施形態では、特定のItemを取り出す際にプロパティの部分集合を要求することが可能であるが、そのような実施形態の多くの既定(default)として、取り出したときにイミディエイトおよび継承プロパティのすべてをItemに供給する。さらに、Itemのプロパティは、新しいプロパティをその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 when retrieved. And supply all of the inherited properties to the Item. In addition, Item 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毎に、境界は以下を包含する。   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:

・ ItemのItem Type、およびItemが他のItemの子型の場合(すべてのItemがBase Schema内の単一ItemおよびItem Typeから派生する本発明のいくつかの実施形態の場合のように)は、任意の適用可能な子型情報(つまり、親Item Typeに関係する情報)。コピー元のオリジナルのItemが他のItemの子型の場合、そのコピーも、その同じItemの子型ともなりうる。   Item Type of Item, and if Item is a child of another Item (as in some embodiments of the invention where all Items are derived from a single Item and Item Type in 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の複合型プロパティおよび拡張。オリジナルのItemが複合型のプロパティ(ネイティブまたは拡張)を持つ場合、そのコピーも同じ複合型を持ちうる。   Item complex properties 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のレコード、つまり、このItem(「Owning Item」)によって所有される他のItem(「Target Item」)のItem自身のリスト。これは、特に、以下で詳しく説明する、Item Foldersに関して特に適切であり、規則では、すべてのItemは少なくとも1つのItem Folderに属していなければならないことを以下で規定している。さらに、埋め込まれているアイテム−以下でさらに詳しく説明する−に関しては、埋め込みアイテムは、コピー、削除などのオペレーションに対して埋め込まれているItemの一部と考えられる。   Item records relating to “ownership”, ie a list of Items themselves of other Items (“Target Item”) owned by this Item (“Owning Item”). This is particularly appropriate with respect to Item Folders, which will be described in detail below, and the rules stipulate that all Items must belong to at least one Item Folder. Further, with respect to embedded items—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の識別
Itemは、ItemIDを持つ大域的アイテム空間(global items space)内で一意に識別される。Base.Item型は、ItemのIDを格納する型GUIDのフィールドItemIDを定義する。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 ItemID of a type GUID that stores an Item ID. An Item must have exactly one ID in the data store 302.

a)アイテム参照
アイテム参照は、Itemを特定し、識別するための情報を格納するデータ構造体である。データモデルでは、抽象型は、すべてのアイテム参照型の派生元のItemReferenceという名前を持つものとして定義される。ItemReference型は、Resolveという名前の仮想メソッドを定義する。Resolveメソッドは、ItemReferenceを解決して、Itemを返す。このメソッドは、参照が与えられているItemを取り出す関数を実装するItemReferenceの具体的な子型によりオーバーライドされる。Resolveメソッドは、ストレージプラットフォームAPI322の一部として呼び出される。
a) Item Reference 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 given the reference. The Resolve method is invoked as part of the storage platform API 322.

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

(2)ItemPathReference
ItemPathReferenceは、LocatorおよびPathフィールドを定義するItemReferenceの特殊化(specializaiton)である。Locatorフィールドは、アイテム領域を識別する。これは、Locatorの値をアイテム領域に解決することができるロケータ解決メソッドにより処理される。Pathフィールドは、Locatorにより与えられるアイテム領域をルートとするストレージプラットフォーム名前空間内の(相対)パスを含む。
(2) ItemPathReference
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 to 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オペレーションで使用することはできない。参照は、一般に、パス解決プロセスを通じて解決されなければならない。ストレージプラットフォームAPI322の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.

b)参照型階層
上述の参照形態は、図11に例示されている参照型階層を通じて表される。これらの型から継承する追加参照型は、スキーマで定義することができる。それらは、ターゲットフィールドの型として関係宣言の中で使用することができる。
b) Reference Type Hierarchy The reference form described above 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
以下で詳しく説明するが、Itemのグループは、Item Folders(ファイルフォルダと混同すべきでない)と呼ばれる特別なItemに編成されることができる。しかし、大半のファイルシステムとは異なり、Itemは、複数のItem Folderに属すことができ、そのため、Itemが一方のItem Folderでアクセスされ改訂された場合、この改訂されたItemは、他方のItemフォルダから直接アクセスすることができる。本質的に、Itemへのアクセスは異なるItem Foldersから発生しうるが、実際にアクセスされる内容は、事実、まったく同じItemである。しかし、Item Folderは、必ずしも、そのメンバItemのすべてを所有するわけではなく、または単に、他のフォルダとともにItemを共同所有することができ、Item Folderを削除しても、その結果Itemの削除も必ずしも行われるわけではない。しかしながら、本発明のいくつかの実施形態では、Itemは、少なくとも1つのItem Folderに属していなければならず、したがって、特定のItemに対する単独のItem Folderが削除されると、ある実施形態では、Itemは自動的に削除されるか、または他の実施形態では、Itemは自動的に、既定のItem Folder(例えば、様々なファイル−フォルダベースのシステムで使用される類似名フォルダと概念上類似の「Trash Can」Item Folder)のメンバとなる。
3. Item Folders and Categories
As described in detail below, groups 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, an Item Folder does not necessarily own all of its member Items, or can simply co-own an Item with other folders, and deleting an Item Folder will result in the deletion of the Item. 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).

また以下で詳述するが、Itemは、さらに、(a)Item Type(またはTypes)、(b)特定のイミディエイトまたは継承プロパティ(または複数のプロパティ)、または(c)Itemプロパティに対応する特定の値(または複数の値)などの共通の記述されている特性に基づいてCategoriesに属している場合がある。例えば、個人連絡情報の特定のプロパティを含むItemは、自動的にContact Categoryに属すことがあり、そうすれば連絡先情報プロパティを含むItemも同様に、自動的にこのCategoryに属するのである。同様に、値「New York City」を持つ位置プロパティが設定されているItemであれば、自動的にNew York City Categoryに属すことが可能である。   Also, as will be described in detail below, an Item may further be: (a) an Item Type (or Types), (b) a specific immediate or inherited property (or properties), or (c) a specific Item property that corresponds to an 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 having a position property having the value “New York City” can automatically belong to the New York City Category.

Item Foldersは相互関連性のない(つまり、共通の記述された特性を持たない)Itemを含むことができるが、Category内のそれぞれのItemは、そのCategoryについて記述された共通の型、プロパティ、または値(「共通性」)を持ち、Category内の他のItemとの関係、および他のItem同士の間の関係の基礎をなすことがこの共通性であるという点において、Categoriesは、Item Foldersと概念上異なる。さらに、特定のFolderへのItemの帰属関係(membership)は、そのItemの特定の態様に基づく強制的なものではないが、いくつかの実施形態では、共通性がカテゴリについてCategoryに関係しているすべてのItemは、ハードウェア/ソフトウェアインターフェースシステムレベルにおいてCategoryのメンバに自動的になることが可能である。概念上、Categoriesは、帰属関係が特定のクエリの結果に基づく(データベースを背景とした場合のように)仮想Item Foldersと考えることもでき、また(Categoryの共通性により定義された)このクエリの条件を満たすItemは、Categoryの帰属関係を含むであろう。   Item Folders can contain items that are not interrelated (ie, have no common described properties), but each Item in a Category can have a common type, property, or Categories have the same meaning as Item Folders in that they have a value ("commonality") and that form the basis of relationships with other Items in the Category, and relationships between other Items. Conceptually different. In addition, an Item's membership to a particular Folder is not compulsory based on the particular aspect of that Item, but in some embodiments, commonality is related to a Category for a category. All Items can be automatically become Category members 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 An Item that satisfies the condition will contain a Category membership.

図4は、本発明の様々な実施形態におけるItem、Item Folder、およびCategory間の構造的関係を例示する。複数のItem402、404、406、408、410、412、414、416、418、および420は、様々なItem Folders422、424、426、428、および430のメンバである。複数のItem Folderに属すItemもあり、例えば、Item402はItem Folders422および424に属している。いくつかのItem、例えば、Item402、404、406、408、410、および412は、1つまたは複数のCategories432、434、および436のメンバでもあるが、例えば、Item414、416、418、および420はどのCategoriesにも属しえない(ただし、これはプロパティの所有が自動的にCategoryへの帰属を意味するいくつかの実施形態ではほとんどありえず、Itemは、そのような実施形態におけるカテゴリのメンバとならないためには完全に無特徴でなければならないであろう)。フォルダの階層構造と対照的に、CategoriesとItem Foldersは両方とも、図に示されているように有向グラフに比較的類似している。いずれにせよ、Item、Item Folders、およびCategoriesは、(異なるItem Typesであるにもかかわらず)すべてItemである。   FIG. 4 illustrates the structural relationship between Items, Item Folders, and Categories in various embodiments of the invention. 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 that belong to multiple Item Folders. For example, Item 402 belongs to Item Folders 422 and 424. Some Items, for example, Items 402, 404, 406, 408, 410, and 412 are also members of one or more Categories 432, 434, and 436, but for example, Items 414, 416, 418, and 420 Cannot belong to Categories (but this is rarely possible in some embodiments where property ownership automatically implies attribution to Category, and Item is not a member of a category in such embodiments) Would have to be completely featureless). In contrast to the folder hierarchy, both Categories and Item Folders are relatively 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).

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

4.Schemas
a)Base Schema
Itemの作成および使用に普遍的基盤を用意するため、本発明のストレージプラットフォームの様々な実施形態は、Itemおよびプロパティの作成および編成に使用する概念フレームワークを確立するBase Schemaを備える。Base Schemaは、Itemおよびプロパティのいくつかの特殊な型、および子型をさらに派生することができる派生元のこれらの特別な基礎型の特徴を定義する。このBase Schemaを使用することにより、プログラマは、Item(およびそれぞれの型)をプロパティ(およびそれぞれの型)から概念的に区別することができる。さらに、Base Schemaでは、すべてのItem(およびその対応するItem Types)がBase Schema内のこの基礎的なItem(およびその対応するItem Type)から派生するときにすべてのItemが所有することができるプロパティの基礎的な集合を規定する。
4). Schema
a) Base Schema
To provide a universal foundation for Item creation and use, various embodiments of the storage platform of the present invention comprise Base Schema that establishes a conceptual framework used for Item and property creation and organization. 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, a programmer can conceptually distinguish an Item (and each type) from a property (and each type). In addition, in Base Schema, a property that all Items (and their corresponding Item Types) can possess when all Items (and their corresponding Item Types) are derived from this underlying Item (and its corresponding Item Type) in Base Schema. Defines the basic set of

図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 that features a Relationship that establishes a link to a member (if any) in addition to the properties inherited from Item, but both IdentityKey and Property are children of PropertyBase. It is a type. Similarly, CategoryRef is a child type of IdentityKey.

b)Core Schema
本発明のストレージプラットフォームの様々な実施形態は、さらに、最上位レベルのItem型構造の概念フレームワークを提供するCore Schemaを含む。図8Aは、Core Schema内のItemを例示するブロック図であり、図8Bは、Core Schema内のプロパティ型を例示するブロック図である。異なる拡張子(*.com、*.exe、*.bat、*.sysなど)を持つファイルとファイル−フォルダベースのシステムのそのような他の基準を持つファイルとの区別は、Core Schemaの関数に類似している。Core Schemaが、Itemベースのハードウェア/ソフトウェアインターフェースシステムでは、直接的に(Item型により)または間接的に(Item子型により)、すべてのItemを、Itemベースのハードウェア/ソフトウェアインターフェースシステムが理解し、所定の予測可能な方法で直接処理できる1つまたは複数のCore Schema Item型に特徴付ける、コアItem型の集合を定義する。定義済みItem型は、Itemベースのハードウェア/ソフトウェアインターフェースシステム内の最も一般的なItemを反映し、したがって、一定レベルの効率が、Core Schemaを含む定義済みItem型を認識するItemベースのハードウェア/ソフトウェアインターフェースシステムにより得られる。
b) Core Schema
Various embodiments of the storage platform of the present invention further include Core Schema, which provides a top-level Item-type conceptual framework. 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 the Core Schema function. Is similar. Core Schema understands that an Item-based hardware / software interface system can directly (by an Item type) or indirectly (by an Item child type) understand all Items 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 directly in a predetermined and predictable manner. Predefined Item types reflect the most common Items within an Item-based hardware / software interface system, and thus some 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への拡張を禁止することにより(つまり、新しいItemを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 Requires the use of the Core Schema Item type. This structure sufficiently increases the degree of freedom to define additional Item types while maintaining the advantage of having a predefined set of core Item types.

本発明の様々な実施形態について、図8Aを参照すると、Core Schemaによってサポートされている特定のItem型は以下のうちの1つまたは複数を含むことができる。   For various embodiments of the present invention, and referring to FIG. 8A, specific Item types supported by Core Schema can include one or more of the following.

・ Categories:このItem Type(およびそれから派生した子型)のItemは、Itemベースのハードウェア/ソフトウェアインターフェースシステムの有効なCategoriesを表す。   Category: This Item Type (and child type derived from it) Item represents a valid Category of an Item-based hardware / software interface system.

・ Commodities:価値を有する識別可能なものであるItem。   • Commodities: Items that are valuable and identifiable.

・ Devices:情報処理機能をサポートする論理構造を備えるItem。   Devices: Items with a logical structure that supports information processing functions.

・ Documents:Itemベースのハードウェア/ソフトウェアインターフェースシステムにより解釈されないが、代わりにドキュメント型に対応するアプリケーションプログラムにより解釈されるコンテンツを持つItem。   Documents: Items that have content that is not interpreted by an Item-based hardware / software interface system, but is instead interpreted by an application program that corresponds to the document type.

・ Events:環境内で生じた何らかの出来事を記録するItem。   Events: Items that record any events that occur in the environment.

・ Locations:物理的場所を表すItem(例えば、地理的場所)。   Locations: Items that represent physical locations (eg, geographic locations).

・ Messages:2つ以上のプリンシパルの間の通信のItem(以下に定義する)。   Messages: Items for communication between two or more principals (defined below).

・ Principals:ItemIDだけでなく少なくとも1つの決定的に証明可能なIDを持つItem(例えば、人、組織、グループ、世帯、機関、サービスなどの識別)。   • Principles: Items with at least one definable ID (eg, identification of people, organizations, groups, households, institutions, services, etc.) as well as ItemIDs.

・ Statements:限定はしないが、ポリシー、サブスクリプション、信用(credentials)などを含む環境に関する特別な情報を持つItem。   Statements: Items with special information about the environment, including but not limited to policies, subscriptions, credentials, etc.

同様に、図8Bを参照すると、Core Schemaによってサポートされている特定のプロパティ型は以下のうちの1つまたは複数を含むことができる。   Similarly, referring to FIG. 8B, certain property types supported by Core Schema may include one or more of the following.

・ 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型から派生)
これらのItemおよびPropertiesは、さらに、図8Aおよび図8Bで述べられているそれぞれのプロパティにより記述される。
Certificates (derived from the basic 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)
These Items and Properties are further described by the 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, when a source Item is deleted, the relationship between those Items is also deleted.

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

Containment関係型は、さらに、保持関係Holdingと埋め込み関係Embeddingに分類される。Itemに対するすべての保持関係が削除されると、そのItemも削除される。保持関係は、参照カウントメカニズムを使ってターゲットの存続期間を制御する。埋め込み関係を使用すると、複合Itemのモデル化が可能になり、これは排他的保持関係と考えることができる。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 embedding relationships allows modeling of complex items, which can be considered as exclusive holding relationships. 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名前空間(つまり、リモートデータストアを含む)内のどこかにあるItemへの参照をモデル化するために使用できる。   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)関係の宣言
明示的関係型は、以下の要素により定義される。
a) Declaration of relationship The explicit relationship type is defined by the following elements.

・ 関係名は、Name属性で指定される。   -The relation name is specified by the Name attribute.

・ 関係型として、Holding、Embedding、Referenceのうちの1つ。これは、Type属性において指定される。   A relationship type is one of Holding, Embedding, and Reference. This is specified in the Type attribute.

・ ソースおよびターゲット終点。それぞれの終点は、参照されているItemの名前および型を指定する。   • Source and target endpoints. Each endpoint specifies the name and type of the referenced Item.

・ ソース終点フィールドは、一般的に、ItemID型(宣言されない)であり、関係インスタンスと同じデータストア内のItemを参照しなければならない。   The source endpoint field is generally of type ItemID (not declared) and must refer to an Item in the same data store as the relationship instance.

・ HoldingおよびEmbedding関係については、ターゲット終点フィールドは、ItemIDReference型でなければならず、関係インスタンスと同じストア内のItemを参照しなければならない。Reference関係については、ターゲット終点は任意のItemReference型でよく、その他のストレージプラットフォームのデータストア内のItemを参照することができる。   For the Holding and Embedding relationships, 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.

・ オプションにより、スカラーまたはPropertyBase型の1つまたは複数のフィールドを宣言することができる。これらのフィールドは、関係に関連付けられたデータを格納することができる。   Optionally, one or more fields of type scalar or propertybase can be declared. These fields can store data associated with the relationship.

・ 関係インスタンスは、大域的関係テーブル内に格納される。   • Relationship instances are stored in a global relationship table.

・ すべての関係インスタンスは、組合せ(ソースItemID、関係ID)により一意に識別される。関係IDは、その型に関係なく与えられたItemをソースとするすべての関係について、与えられたソースItemID内で一意である。   All relationship instances are uniquely identified by a combination (source ItemID, relationship ID). A relation ID is unique within a given source ItemID for all relations sourced from the given Item regardless of its type.

ソースItemは、関係の所有者である。所有者として指定されているItemは関係の存続期間を制御するが、関係自体はそれが関係するItemとは別である。ストレージプラットフォームAPI322は、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 Item 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 2007521532
Figure 2007521532

これは、Reference関係の一実施例である。この関係は、ソース参照によって参照された人の(person)Itemが存在しない場合には作成することはできない。さらに、人の(person)Itemが削除された場合、人(person)と組織(organization)との間の関係インスタンスが削除される。しかし、Organization Itemが削除された場合、関係は削除されず、宙ぶらりんになる。   This is an example of a Reference relationship. This relationship cannot be created if there is no person Item referenced by the source reference. Further, when a person 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)保持(Holding)Relationship
保持関係は、ターゲットItemの参照カウントベースの存続期間管理をモデル化するために使用される。
Itemは、Itemとの0またはそれ以上の関係に対するソース終点とすることができる。埋め込まれたItemではないItemは、1つまたは複数の保持関係におけるターゲットとすることができる。
ターゲット終点参照型は、ItemIDReferenceでなければならず、また関係インスタンスと同じストア内のItemを参照しなければならない。
b) Holding Relationship
The retention relationship is used to model reference count based lifetime management of the target Item.
Item can be a source endpoint for zero or more relationships with Item. An Item that is not an embedded Item can be a target in one or more retention relationships.
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 manages the lifetime of the target end point. The creation of a holding 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の型は、一般的に、関係のインスタンスが作成されるときに強制される。関係が確立された後では、終点Itemの型は変更できない。
保持関係は、Item名前空間を形成する際に重要な役割を果たす。これらは、ソースItemに相対的にターゲットItemの名前を定義する「Name」プロパティを含む。この相対名は、与えられたItemから生じるすべての保持関係について一意である。ルートItemから始まり与えられたItemに至るこの相対名の順序付けされたリストは、Itemに対するフルネームを形成する。
The type of endpoint Item specified in the relationship declaration is generally enforced when the relationship instance is created. Once the relationship is established, the type of the end item cannot be changed.
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 that result from a given Item. This ordered list of relative names starting from the root Item and leading to the given Item forms the full 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 and the Item namespace always forms a DAG.

保持関係はターゲットItemの存続期間を制御するが、ターゲット終点Itemの動作の整合性を制御しない。ターゲットItemは、保持関係を通じてそれを所有するItemから、動作に関して独立している。保持関係のソースであるItemに対するCopy、Move、Backup、およびその他のオペレーションは、同じ関係のターゲットであるItemに影響を及ぼさない−例えば、つまり、Folder Itemをバックアップしても、すべてのItemをフォルダ(FolderMember関係のターゲット)内に自動的にバックアップするわけではない。   The retention relationship controls the lifetime of the target Item, but does not control the consistency of the operation of the target endpoint Item. The target Item is independent of the operation from the Item that owns it through the 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 2007521532
Figure 2007521532

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

c)埋め込み(Embedding)関係
埋め込み関係は、ターゲットItemの存続期間の排他的制御という概念をモデル化する。これらは、複合Itemの概念を有効にする。
c) Embedding relationship The embedding relationship models the concept of exclusive control of the duration 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を参照しなければならない。
関係宣言内で指定される終点Itemの型は、一般的に、関係のインスタンスが作成されるときに強制される。関係が確立された後では、終点Itemの型は変更できない。
埋め込み関係は、ターゲット終点の動作の整合性を制御する。例えば、Itemをシリアライズするオペレーションは、そのItemをソースとするすべての埋め込み関係だけでなく、そのターゲットのすべてのシリアライズをも含むことができ、Itemをコピーすることで、そのすべての埋め込まれているItemもコピーされる。
The target endpoint reference type must be ItemIDReference and must reference an Item in the same data store as the relationship instance.
The type of endpoint Item specified in the relationship declaration is generally enforced when the relationship instance is created. Once the relationship is established, the type of the end item cannot be changed.
The embedding relationship controls the consistency of the operation of the target end point. For example, an operation that serializes an Item can include not only all embedding relationships that are sourced from that Item, but also all serializations of its target, and all of its embedded by copying the Item Items are also copied.

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

Figure 2007521532
Figure 2007521532

d)参照関係
参照関係は、参照するItemの存続期間を制御しない。さらには、参照関係は、ターゲットの存在を保証せず、また関係宣言内で指定された通りにターゲットの型を保証するわけでもない。これは、参照関係が宙ぶらりんになる可能性のあることを意味している。また、参照関係は、他のデータストア内のItemを参照することができる。参照関係は、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. The reference relationship can refer to an Item 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 2007521532
Figure 2007521532

参照型は、ターゲット終点において使用できる。参照関係に関わるItemは、任意のItem型とすることができる。
参照関係は、Item間のほとんどの非存続期間管理関係をモデル化するために使用される。ターゲットの存在は強制されないので、参照関係は、疎結合関係をモデル化するために都合がよい。参照関係は、他のコンピュータ上のストアを含む他のデータストア内のItemをターゲットとするために使用することができる。
A reference type can be used at the target endpoint. An Item related to a reference relationship can be of any Item type.
Reference relationships are used to model most non-lifetime management relationships between Items. Since the presence of the target is not enforced, 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)規則と制約条件
以下の追加規則および制約条件を関係について適用する。
1.Itemは、(ちょうど1つの埋め込み関係)または(1つまたは複数の保持関係)のターゲットでなければならない。例外の1つは、ルートItemである。Itemは、0またはそれ以上の参照関係のターゲットとすることができる。
e) Rules and constraints The following additional rules and constraints apply for relationships.
1. Item must be the target of (just 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.

2.埋め込み関係のターゲットであるItemは、保持関係のソースとすることはできない。これは、参照関係のソースとすることができる。     2. The Item that is the target of the embedding relation cannot be the source of the holding relation. This can be the source of a reference relationship.

3.Itemはファイルから格上げされた場合、保持関係のソースとすることはできない。これは、埋め込み関係および参照関係のソースとすることができる。     3. When an Item is upgraded from a file, it cannot be the source of a retention relationship. This can be the source of embedding and reference relationships.

4.ファイルから格上げされたItemは、埋め込み関係のターゲットとすることはできない。     4). Items promoted from a file 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. The ordering is performed through a property named “Order” in the basic relationship 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に対する関係コレクションの順序付き部分集合であることを保証する。   The application can obtain relationships in a predetermined order by ordering combinations (SourceItemID, RelationshipID, Order). All relationship instances that are sourced 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.

関係を操作するデータストアAPI312は、関係の順序付けをサポートするオペレーションの集合を実装している。以下の用語は、オペレーションを説明する補助として導入される。
RelFirstは、順序値OrdFirstを持つ順序付きコレクション内の最初の関係である。
RelLastは、順序値OrdLastを持つ順序付きコレクション内の最後の関係である。
RelXは、順序値OrdXを持つコレクション内の与えられた関係である。
The data store API 312 for manipulating relationships implements a set of operations that support relationship ordering. 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は、順序値OrdPrevがOrdXよりも小さい、コレクション内のRelXとの最も近い関係である。
RelNextは、順序値OrdNextがOrdXよりも大きい、コレクション内のRelXとの最も近い関係である。
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の間の、しかもそれを含まない、新しい順序値を割り当てることができる。
RelPrev is the closest relationship with RelX in the collection where the order value OrdPrev is smaller than OrdX.
RelNext is the closest relationship with RelX in the collection where the order value OrdNext is greater than OrdX.
InsertBeforeFirst (SourceItemID, Relationship)
Insert the relationship as the first relationship into the collection. The value of the “Order” property of the new relationship may be less than OrdFirst.
InsertAfterLast (SourceItemID, Relationship)
Insert 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)
Insert a relationship with the specified value for the “Order” property.
InsertBefore (SourceItemID, ord, Relationship)
Insert a relation before a relation 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)
Insert 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)
Move the relationship with the given relationship ID after the relationship with the specified “Order” value. This relationship can be assigned a new order value between ord and OrdNext, but not including.

すでに述べたように、すべてのItemはItem Folderのメンバでなければならない。Relationshipsに関して、すべてのItemはItem Folderと関係を持っていなければならない。本発明のいくつかの実施形態では、Item間に存在する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の参照カウントがデクリメントされる。これらの特定の実施形態では、Itemは、参照カウントが0よりも大きければ存在し続け、カウントが0になった場合に自動的に削除される。ここでもまた、Item Folderは、他のItemとのRelationshipsの集合を持つ(または持つことができる)Itemであり、それらの他のItemは、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, the Item will continue to exist if the reference count is greater than zero and will be automatically deleted when the count reaches zero. Again, the Item Folder is an Item that has (or can have) a set of Relationships with other Items, and these other Items contain Item Folder membership. 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に属すことができること、さらに、これらのItem、Folders、およびCategoriesがパブリックであるかプライベートであるかは、Itemベースの構造内で存在すること(または存在しないこと)に対し与えられた意味により決定される。これらの論理的Relationshipsは、本明細書で説明されている機能を実現するために特に採用されている、物理的実装に関係ない、Relationshipsの集合に割り当てられた意味である。論理的Relationshipsは、ItemとそのItem Folder(s)またはCategoriesとの間で確立されている(およびその逆に)が、それは、本質的にItem FoldersおよびCategoriesはそれぞれItemの特殊な型であるからである。したがって、Item FoldersおよびCategoriesは、他のItemと同じようにして作用−限定はしないが、コピー、電子メールメッセージへの追加、ドキュメントへの埋め込み、など−を受けることができ、Item FoldersおよびCategoriesに対して、他のItemの場合と同じメカニズムを使用してシリアライズおよびデシリアライズ(インポートおよびエクスポート)を行うことができる。(例えば、XMLでは、すべてのItemは、シリアライズ形式を持つことができ、この形式はItem Folders、Categories、およびItemにも等しく適用される。)
前述の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は、他のシステムにエクスポートされる場合、新しい文脈で共有される「パブリック」Itemであり、ItemがそのItem Folders内で他の共有可能なItemを検索する場合、それは属する共有可能Itemに関する情報をItemに供給する「パブリック」Item Foldersである。
Regardless of the actual implementation, Relationship is a selectable connection from one object to the other. An Item can belong to more than one Item Folder, and can belong to one or more Categories, and whether these Items, Folders, and Categories are public or private Determined by the meaning given to being present (or absent). 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, every Item can have a serialized format, which applies equally to Item Folders, Categories, and Items.)
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. Thus, an Item Folder is a “public” Item that is shared in a new context when exported to other systems, and if an Item searches for other sharable Items within that Item Folder, it belongs to “Public” Item Folders that supply information about Items to Items.

図9は、Item Folder(これもまた、Item自体である)、そのメンバItem、およびItem FolderとそのメンバItemとの間の相互接続Relationshipsを例示するブロック図である。Item Folder 900は、複数のItem 902、904、および906をメンバとして持つ。Item Folder 900は、Item 902がパブリックでありItem Folder 900、そのメンバ904および906、およびItem Folder 900にアクセスする可能性のある他のItem Folders、Categories、またはItem(図に示されていない)に対し共有可能であることを表す、それ自体から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、またはItem(図に示されていない)に対し共有可能でないことを表す、Item Folder 900からItem 904へのRelationshipはない。Item 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、またはItem(図に示されていない)に対し共有可能であること、およびItem Folder 900がパブリックであり、Item 906と帰属関係情報を共有することを表す。   FIG. 9 is a block diagram illustrating Item Folder (which is also Item itself), its Member Item, and the interconnection Relationships between Item Folder and its Member Item. 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 to Items 902 and 904 (or their absence), 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) ) Can be shared, and Item Folder 900 is public and belongs to Item 906 Indicating to share engagement information.

すでに説明したように、Item Folder内のItemは、Item Foldersが「記述」されていないため共通性を共有する必要はない。他方、Categoriesは、そのメンバItemのすべてに共通である共通性により記述される。したがって、Categoryの帰属関係は、本質的に、記述されている共通性を持つItemに制限され、いくつかの実施形態では、Categoryの記述を満たすすべてのItemは自動的に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 member 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の論理表現は、Itemを含む帰属関係が2つのプロパティのうちの一方または両方を持つものとすることができる。Categoryに対するこれらの記述されたプロパティが「A」および「B」の場合、Categories帰属関係は、プロパティAを持つがBを持たないItem、プロパティBを持つがAを持たないItem、およびプロパティAおよびBの両方を持つItemを含むことができる。プロパティのこの論理表現は、論理演算子「OR」により記述され、Categoryにより記述されるメンバの集合はプロパティA OR Bを持つItemとなる。類似の論理オペランド(限定はしないが、「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 Item has one or both of two properties. If these described properties for Category are “A” and “B”, the Category membership is an Item with property A but no B, Item with property B but no A, and property A and Items with both B can be included. This logical expression 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対ItemとItem Relationship対Categoriesは、本発明の多くの実施形態におけるItem FoldersおよびItemについて本明細書でこれまでに開示されたものと本質的に同じものである。   Despite the distinction between Item Folders (not described) and Categories (described), Category Relationships vs. Items and Item 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自体である)、そのメンバItem、およびCategoryとそのメンバItemとの間の相互接続のRelationshipsを例示するブロック図である。Category 1000は、複数のItem 1002、1004、および1006をメンバとして持ち、それらはすべて、Category 1000により記述されているように(共通性記述1008’)共通のプロパティ、値、または型1008の何らかの組合せを共有する。Category 1000は、Item 1002がパブリックであり、Category 1000、そのメンバ1004および1006、およびCategory 1000にアクセスする可能性のある他のCategories、Item Folders、またはItem(図に示されていない)に対し共有可能であることを表す、それ自体から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、またはItem(図に示されていない)に対し共有可能でないことを表す、Category 1000からItem 1004へのRelationshipはない。Item 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、またはItem(図に示されていない)に対し共有可能であること、およびCategory 1000がパブリックであり、Item 1006と帰属関係情報を共有することを表す。   FIG. 10 is a block diagram illustrating Category (again, Item itself), its Member Item, and the interconnection Relationship between Category and its Member Item. The Category 1000 has multiple Items 1002, 1004, and 1006 as members, all of which are some combination of common properties, values, or types 1008 as described by the Category 1000 (Commonality Description 1008 ') Share Category 1000 is shared to Item 1000, Item Folders, or Items (not shown) that Item 1002 is public and has access to Category 1000, its members 1004 and 1006, and Category 1000 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 thereof), 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, for 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 1 06 to represent to share membership information.

最後に、他のいくつかの実施形態では、CategoriesおよびItem Foldersは、それ自体Itemであるので、Itemは互いとのRelationshipを、CategoriesはItem FoldersへのRelationship およびその逆を持ち、Categories、Item Folders、およびItemはそれぞれ他のCategories、Item Folders、およびItemに対するRelationshipを持つことができる。しかし、様々な実施形態では、Item Folder構造および/またはCategory構造は、ハードウェア/ソフトウェアインターフェースシステムレベルでサイクルを含むことが禁止されている。Item FolderおよびCategory構造は、有効グラフに似ており、サイクルを禁止する実施形態は、グラフ理論の分野の数学的定義により、どのような経路も同じ頂点から始まり、終わるということのない有向グラフである、非循環有向グラフ(DAGs)に似ている。   Finally, in some other embodiments, Categories and Item Folders are themselves Items, so Items have a Relationship to each other, Categories have a Relationship to Item Folders and vice versa, and Categories 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 prohibited from including 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 (platform schema) 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 describes a 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 (platform schemas) 340. Take up.

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.
The 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, that is, a child Base. It is allowed to introduce a nested element. But,
An ISV cannot subtype a type (Item, Nested Element, or Extension type) defined by an initial set of storage platform schema (platform schema) 340.

ストレージプラットフォームスキーマの初期集合により定義されているItem型またはNested Element型は、ISVアプリケーションの要求条件に正確に一致しない場合があるので、ISV側で型をカスタマイズできるようにする必要がある。これは、Extensionsという概念で可能になる。Extensionsは、強く型付けされたインスタンスであるが、(a)それらは独立して存在することはできず、(b)ItemまたはNested Elementに付随しなければならない。   The Item type or Nested Element type defined by the initial set of storage platform schemas may not exactly match the requirements of the ISV application, so the ISV side needs to be able to customize the type. 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 are also intended to solve the “multi-typing” problem. In some embodiments, the storage platform may not support multiple inheritance or duplicate types, so Applications can use Extensions as a way to model duplicate instances (eg, Document is both a legal document and a security document).

a)アイテム拡張
Item拡張を行うために、データモデルは、さらに、Base.Extensionという名前の抽象型を定義する。これは、拡張型の階層に対するルート型である。アプリケーションでは、Base.Extensionをサブタイプ化して、特定の拡張型を作成することができる。
a) Item Extension In order to perform Item extension, the data model further includes 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 2007521532
Figure 2007521532

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 extended type structure is similar to the item type structure.
Extended types have fields.
Fields can be primitive or nested element types.
Extended types can be subtyped.

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

与えられたItem型に関連付けられる拡張の型には制約はない。どのような拡張型も、アイテム型の拡張に使用することができる。複数の拡張インスタンスがアイテムに付随する場合、それらは、構造とビヘイビアの両面で互いに独立している。
複数の拡張インスタンスは、格納され、アイテムから別々にアクセスされる。すべての拡張型インスタンスは大域的拡張ビューからアクセス可能である。関連するアイテムの型がどうであれ、与えられた拡張の型のすべてのインスタンスを返す効率的なクエリを作成することができる。ストレージプラットフォームAPIは、アイテム上の拡張の格納、取り出し、および修正を行うことができるプログラミングモデルを提供する。
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.
Multiple extension instances are stored and accessed separately from the item. All extended type instances are accessible from the global extended view. You can create an efficient query that returns all instances of a given extension type, regardless of the type of the associated item. 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 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 in the Windows (registered trademark) Type setting.

Figure 2007521532
Figure 2007521532

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 2007521532
Figure 2007521532

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 2007521532
Figure 2007521532

CRMExtensionおよびHRExtensionは、Contactアイテムに付随させることができる2つの独立の拡張である。これらは、互いに独立に作成されアクセスされる。
上記の例では、CRMExtension型のフィールドおよびメソッドは、Contact階層のフィールドまたはメソッドをオーバーライドすることができない。CRMExtension型のインスタンスは、Contact以外のItem型に付随させることができる。
CRMExtension and HRExtension are two independent extensions that can be attached to a Contact item. These are created and accessed independently of each other.
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 attached to an Item type other than Contact.

Contactアイテムが取り出される場合、そのアイテム拡張は自動的に取り出されはしない。Contactアイテムが与えられた場合、関連するアイテム拡張は、同じItemIdで拡張の大域的拡張ビューにクエリを実行することによりアクセスすることが可能である。
システム内のすべてのCRMExtension拡張は、どのアイテムに属しているか関係なく、CRMExtension型ビューを通じてアクセスすることができる。アイテムのすべてのアイテム拡張は、同じアイテムidを共有する。上記の例では、Contactアイテムインスタンスおよび付随するCRMExtensionおよびHRExtensionは同じ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 extension view of the extension with the same 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 the similarities and differences between Item, Extension, and NestedElement types.

Figure 2007521532
Figure 2007521532

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 2007521532
Figure 2007521532

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 2007521532
Figure 2007521532

NestedElement拡張は、以下の点でアイテム拡張と異なる。
ネストされた要素拡張は、拡張型ではない。それらは、Base.Extension型をルートとする拡張型階層に属さない。
ネストされた要素拡張は、アイテムの他のフィールドとともに格納され、大域的にはアクセス可能でない−与えられた拡張型のすべてのインスタンスを取り出すクエリを作成できない。
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.

これらの拡張は、他の(アイテムの)ネストされた要素が格納されるのと同じ方法で格納される。他のネストされた集合のように、NestedElement拡張はUDTに格納される。これらは、ネストされた要素型のExtensionsフィールドを通じてアクセス可能である。
多値(multi-valued)プロパティにアクセスするために使用されるコレクションインターフェースも、型拡張の集合についてアクセスおよび反復するために使用される。
These extensions are stored in the same way that other (item) nested elements 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 2007521532
Figure 2007521532

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 implemented by the data store to the relational store, and also provides information about the logical API used by the storage platform client according to the present invention. However, it will be appreciated 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」にうまくマッピングされるが、ただし、埋め込まれたコレクションはObjectに追加されなければならないであろう。継承およびネストされた要素型のような他のストレージプラットフォームの型概念も、オブジェクト指向型システムをマッピングする。オブジェクト指向システムでは、通常、オブジェクト識別をすでにサポートしており、したがって、アイテム識別は、オブジェクト識別にマッピングすることができる。アイテムビヘイビア(オペレーション)は、オブジェクトメソッドにうまくマッピングされる。しかし、オブジェクト指向システムは、通常、編成に関する機能を欠いており、検索能力が劣る。また、オブジェクト指向システムは、非構造化および半構造化データのサポートも行わない。本明細書で説明されている完全なストレージプラットフォームデータモデルをサポートするため、関係、フォルダ、および拡張などの概念は、オブジェクトデータモデルに追加される必要があるであろう。さらに、格上げ(promotions)、同期、通知、およびセキュリティなどのメカニズムも、実装される必要があるであろう。   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, an object-oriented system usually lacks functions related to organization and has poor search capability. 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 promotions, 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.

1.UDTを使用したデータストアの実装
本発明の実施形態では、一実施形態においてMicrosoft SQL Serverエンジンを含むリレーショナルデータベースエンジン314は、組み込みスカラー型をサポートする。組み込みスカラー型は「ネイティブ」と「単純(simple)」である。それらは、ユーザが独自の型を定義することはできないという点でネイティブであり、複合構造をカプセル化できないという点で単純である。ユーザ定義型(User-defined types)(これ以降、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. The 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 above and beyond the native scalar type system by allowing users to extend the type system by defining complex structured types. Provides a mechanism for type extensibility. 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クラスにマッピングされる。データストアItemは、Base.Item型から派生するUDTクラスにマッピングされる。Itemのように、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 Item is 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の基本事項を例示している。MapLib.dllがMapLibというアセンブリを持つと仮定する。このアセンブリでは、名前空間BaseTypesの下に、Pointと呼ばれるクラスがある。   The following examples illustrate the basics of UDT. MapLib. Assume that dll has an assembly called MapLib. In this assembly, there is a class called Point under the namespace BaseTypes.

Figure 2007521532
Figure 2007521532

以下のT−SQLコードは、クラスPointをPointと呼ばれるSQL Server UDTにバインドする。第1のステップでは、「CreateAssembly」を呼び出すが、これは、MapLibアセンブリをデータベース内にロードする。第2のステップでは、「Create Type」を呼び出して、ユーザ定義型「Point」を作成し、マネージド型BaseTypes.Pointにバインドする。   The following T-SQL code binds the class Point to an SQL Server UDT called Point. The first step calls “CreateAssembly”, which loads the MapLib assembly into the database. In the second step, “Create Type” is called to create a user-defined type “Point”, and the managed type BaseTypes. Bind to Point.

Figure 2007521532
Figure 2007521532

作成された後、「Point」UDTは、テーブル内の列として使用することができ、メソッドは、以下に示されているようにT−SQLで呼び出すことができる。   Once created, the “Point” UDT can be used as a column in the table, and the method can be called in T-SQL as shown below.

Figure 2007521532
Figure 2007521532

ストレージプラットフォームスキーマをUDTクラスにマッピングすることは、高いレベルにおいてかなり容易である。一般に、ストレージプラットフォームSchemaは、CLR名前空間にマッピングされる。ストレージプラットフォームTypeは、CLRクラスにマッピングされる。CLRクラス継承は、ストレージプラットフォームType継承を反映し、ストレージプラットフォームPropertyは、CLRクラスプロパティにマッピングされる。   Mapping storage platform schema 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.

図29に例示されているItem階層は、本明細書では一実施例として使用されている。これは、すべてのItem型の派生元となるBase.Item型を、派生Item型の集合(例えば、Contact.PersonおよびContact.Employee)とともに示しており、継承は矢印で示されている。   The Item hierarchy illustrated in FIG. 29 is used herein as an example. This is based on Base., Which is the derivation source of all Item types. Item types are shown with a set of derived Item types (eg, Contact.Person and Contact.Employee), and inheritance is indicated by arrows.

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

しかし、本発明においては、そのようなアプローチに関連するオーバーヘッドに関する心配から、Itemは、最上位の型により分割され、それぞれの型の「族(family)」のItemが別々のテーブルに格納される。このパーティション分割スキームに従って、Base.Itemから直接継承するItem型毎に1つのテーブルが作成される。これらの下の型継承は、上述のように、型代替え可能性を使用して適切な型族テーブルに格納される。Base.Itemからの継承の第1のレベルのみが特別に処理される。例えば、図29に示されているItem階層では、この結果、以下の型族テーブルが得られる。   However, in the present invention, due to the overhead concerns associated with such an approach, the Items are divided by the top-level type, and the “family” items of each type are stored in separate tables. . 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. For example, in the Item hierarchy shown in FIG. 29, the following type family table is obtained as a result.

Figure 2007521532
Figure 2007521532

すべてのItemに対する大域的に検索可能なプロパティのコピーを格納するために「シャドウ」テーブルが使用される。このテーブルは、すべてのデータ変更が行われる際に使用される、ストレージプラットフォームAPIのUpdate()メソッドにより保持することできる。型族テーブルと異なり、大域的Itemテーブルは、完全なUDT Itemオブジェクトではなく、Itemの最上位スカラープロパティのみを含む。大域的Itemテーブルの構造は以下の通りである。   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. The structure of the global Item table is as follows.

Figure 2007521532
Figure 2007521532

大域的Itemテーブルでは、ItemIDおよびTypeIDを公開することにより型族テーブルに格納されているItemオブジェクトにナビゲートすることができる。ItemIDは、一般に、データストア内のItemを一意に識別する。TypeIDは、ここでは説明しないメタデータを使用して、型名およびItemを含むビューにマッピングすることができる。   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.

ItemをそのItemIDにより見つけることはごく普通のオペレーションといえるので、大域的Itemテーブルおよび他の何らかの手段の両方の文脈において、ItemのItemIDを指定するとItemオブジェクトを取り出すGetItem()関数が用意されている。この関数は以下の宣言を持つ。
Base.Item Base.GetItem (uniqueidentifier ItemID)
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 the ItemID of the Item is specified. . This function has the following declaration:
Base.Item Base.GetItem (uniqueidentifier ItemID)

アクセスを簡単に、実装の詳細をできる限り隠すために、Itemのすべてのクエリは、上述のItemテーブル上に構築されたビューに対して行われるようにできる。特に、ビューは、該当する型族テーブルと突き合わせてItem型毎に作成されうる。これらの型ビューでは、子型を含む、関連付けられた型のすべてのItemを選択することができる。便宜のため、UDTオブジェクトに加えて、それらのビューは、継承されたフィールドを含む、その型の最上位レベルのフィールドのすべてに対する列を公開することができる。図29に示されているItem階層例のビューは以下の通りである。   In order to simplify access and hide implementation details as much as possible, all queries of an Item 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. The view of the Item hierarchy example shown in FIG. 29 is as follows.

Figure 2007521532
Figure 2007521532

完全を期すため、大域的Itemテーブルの上にビューも作成することができる。このビューは、最初に、そのテーブルと同じ列を公開することができる。   A view can also be created on the global Item table for completeness. This view can initially expose the same columns as the table.

Figure 2007521532
Figure 2007521532

3.拡張マッピング
Extensionsは、Itemに非常によく似ており、同じ要求条件のうちいくつかを持つ。継承をサポートする他のルート型として、Extensionsはストレージに対する同じ考慮事項とトレードオフの関係の多くの影響を受ける。このため、類似の型族マッピングは、単一テーブルアプローチではなく、むしろ、Extensionsに適用される。もちろん、他の実施形態では、単一テーブルアプローチを使用することが可能である。
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.

本発明の実施形態では、ExtensionはItemIDによりちょうど1つのItemに関連付けられ、Itemの文脈において一意であるExtensionIDを含む。Extensionテーブルは、以下の定義を持つ。   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. The Extension table has the following definitions.

Figure 2007521532
Figure 2007521532

Itemの場合と同様に、ItemIDとExtensionIDのペアからなる、識別を与えられたExtensionを取り出す関数を用意することが可能である。この関数は以下の宣言を持つ。   As in the case of Item, it is possible to prepare a function that extracts an extension given an identification, which is a pair of ItemID and ExtensionID. This function has the following declaration:

Figure 2007521532
Figure 2007521532

Viewは、Extension型毎に作成され、Item型ビューに類似している。Base.Extension、Contact.PersonExtension、Contact.EmployeeExtensionの型を持つ、Item階層例と並行するExtension階層を仮定する。以下のビューを作成できる。   A View is created for each Extension type and is similar to an Item type view. Base. Extension, Contact. PersonExtension, Contact. Assume an Extension hierarchy that has a type of EmployeeExtension and is parallel to the Item hierarchy example. You can create the following views:

Figure 2007521532
Figure 2007521532

4.ネストされている要素のマッピング
Nested Elementsは、深くネストされた構造を形成するためにItem、Extensions、Relationships、または他のNested Elements内に埋め込むことができる型である。ItemおよびExtensionsのように、Nested Elementsは、UDTとして実装されるが、Itemと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 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.オブジェクト識別(Identity)
データモデル内の各エンティティ、つまり、各Item、Extension、およびRelationshipは一意のキー値を持つ。Itemは、ItemIDにより一意に識別される。Extensionは、(ItemId,ExtensionId)の複合キーにより一意に識別される。Relationshipは、複合キー(ItemId,RelationshipId)により識別される。ItemId、ExtensionId、およびRelationshipIdはGUID値である。
5). Object identification (Identity)
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 generate a type 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 2007521532
Figure 2007521532

7.列の命名規則
オブジェクトモデルをストアにマッピングする場合、アプリケーションオブジェクトとともに追加情報が格納されているため、命名競合が発生する可能性がある。命名競合を回避するため、すべての非型固有列(non-type specific columns)(型宣言で名前付き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. SQL views are 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検索ビューは、列に対し以下の順序付け規則を使用する。
1.ItemId、ElementId、RelationshipId、...などのビュー結果の(複数の)論理「key」列。
2.TypeIdなどの結果の型に関するメタデータ情報。
3.CreateVersion、UpdateVersion、...などの変更追跡列。
4.(複数の)型特有の列(宣言された型のProperties)
5.型特有のビュー(族ビュー)も、オブジェクトを返すオブジェクト列を含む。
All SQL search views in the storage platform data store use the following ordering rules for the columns:
1. ItemId, ElementId, RelationshipId,. . . The logical “key” column of view results such as
2. Metadata information about the result type, such as TypeId.
3. CreateVersion, UpdateVersion,. . . Change tracking columns such as
4). (Multiple) type-specific columns (property of declared type)
5). Type-specific views (family views) also contain object columns that return objects.

各型族のメンバは、一連のItemビューを使用して検索可能であり、データストア内にItem型毎に1つのビューがある。   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.

a)アイテム
各Item検索ビューは、特定の型またはその子型のItemの各インスタンスに対する1つの行を含む。例えば、Documentに対するビューは、Document、LegalDocument、およびReviewDocumentのインスタンスを返すことができる。この例では、Itemビューは、図28に示されているように概念化することができる。
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 2007521532
Figure 2007521532

(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 2007521532
Figure 2007521532

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

(1)マスター拡張検索ビュー
データストアのそれぞれのインスタンスは、マスター拡張ビュー(Master Extension View)という特別な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 the Master Extension 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 2007521532
Figure 2007521532

(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 Item objects 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 2007521532
Figure 2007521532

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

d)関係
上述のように、Relationshipsは、ストレージプラットフォームのデータストア内にItem間のリンキングの基本ユニットを形成する。
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 2007521532
Figure 2007521532

(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 2007521532
Figure 2007521532

9.更新
ストレージプラットフォームのデータストア内のすべてのビューは読み取り専用である。データモデル要素(アイテム、拡張、または関係)の新しいインスタンスを作成する、または既存のインスタンスを更新するには、ストレージプラットフォームAPIのProcessOperationまたはProcessUpdategramメソッドが使用されなければならない。ProcessOperationメソッドは、実行されるアクションの詳細を決める「オペレーション」を消費するデータストアにより定義された単一のストアドプロシージャである。ProcessUpdategramメソッドは、実行されるアクションの集合の詳細を包括的に決める、「アップデートグラム」と呼ばれる、オペレーションの順序付き集合を受け取るストアドプロシージャである。
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.変更追跡&ツームストーン
変更追跡およびツームストーンサービスは、以下で詳述するように、データストアにより提供される。このセクションでは、データストア内に公開された変更追跡情報の概要を述べる。
10. Change Tracking & Tombstone 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 2007521532
Figure 2007521532

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

Figure 2007521532
Figure 2007521532

(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 2007521532
Figure 2007521532

b)ツームストーン
データストアは、Item、Extensions、およびRelationshipsのツームストーン情報を与える。ツームストーンビューは、ある場所にあるライブ状態のエンティティとツームストーン状態のエンティティ(live and tombstoned entities)(アイテム、拡張、および関係)の両方に関する情報を示す。アイテムおよび拡張ツームストーンビューは、対応するオブジェクトへのアクセスを行えないが、関係ツームストーンビューは、関係オブジェクトへのアクセスを行える(関係オブジェクトは、ツームストーン状態の関係の場合にはNULLである)。
b) Tombstone Datastore provides Item, Extensions, and Relationships tombstone information. 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 2007521532
Figure 2007521532

(2)拡張ツームストーン
拡張ツームストーンは、ビュー[System.Storage].[Tombstone!Extension]を使用してシステムから取り出される。拡張変更追跡情報は、ExtensionIdプロパティの追加を含むItemについて与えられる情報と類似している。
(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 an Item that includes the addition of an ExtensionId property.

Figure 2007521532
Figure 2007521532

(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 2007521532
Figure 2007521532

(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マッピングは、さらに、多数のヘルパ関数も備える。これらの関数は、データモデルに対する共通のオペレーションを補助するために用意されている。
a)関数[System.Storage].GetItem
ItemIdを与えられたItemオブジェクトを返す。
//
Item GetItem (ItemId ItemId)
b)関数[System.Storage].GetExtension
//ItemIdおよびExtensionIdを与えられた拡張オブジェクトを返す。 //
Extension GetExtension (ItemId ItemId, ExtensionId ExtensionId)
c)関数[System.Storage].GetRelationship
//ItemIdおよびRelationshipIdを与えられた関係オブジェクトを返す。
//
Relationship GetRelationship (ItemId ItemId, RelationshipId RelationshipId)
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) Function [System. Storage]. GetItem
Returns an Item object given ItemId.
//
Item GetItem (ItemId ItemId)
b) Function [System. Storage]. GetExtension
// Returns an extension object given ItemId and ExtensionId. //
Extension GetExtension (ItemId ItemId, ExtensionId ExtensionId)
c) Function [System. Storage]. GetRelationship
// Returns a relationship object given ItemId and RelationshipId.
//
Relationship GetRelationship (ItemId ItemId, RelationshipId RelationshipId)

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 2007521532
Figure 2007521532

E.セキュリティ
この節では、一実施形態による、本発明のストレージプラットフォームのセキュリティモデルを説明する。
E. Security This section describes the security model of the storage platform of the present invention, according to one embodiment.

1.概要
本発明の実施形態により、ストレージプラットフォームのセキュリティポリシーが指定され強制される精度は、与えられたデータストア内のアイテムに対する様々なオペレーションのレベルにあり、全体とは別にアイテムの一部分をセキュリティ保護する機能はない。セキュリティモデルでは、アクセス制御リスト(ACL)を通じてそれらのオペレーションをアイテムに対し実行するため誰かにアクセス権を付与し、または誰かを拒絶することができるプリンシパルの集まりを指定する。それぞれのACLは、アクセス制御エントリ(ACE)の順序付きコレクションである。
1. Overview According to embodiments of the present invention, the accuracy with which a storage platform security policy is specified and enforced is at various levels of operation on items in a given data store, securing a portion of an item separately from the whole. There is no function. The security model specifies a collection of principals that can grant or deny someone access to perform these operations on items through an access control list (ACL). Each ACL is an ordered collection of access control entries (ACE).

アイテムのセキュリティポリシーは、自由裁量的アクセス制御ポリシーおよびシステムアクセス制御ポリシーにより完全に記述することができる。これらはそれぞれACLの集合である。第1の集合(DACL)は、アイテムの所有者により様々なプリンシパルに付与される自由裁量的アクセス権を記述するが、ACLの第2の集合は、SACL(システムアクセス制御リスト)と呼ばれ、オブジェクトがいくつかの方法で操作される場合にシステム監査がどのように実行されるかを指定する。これらに加えて、データストア内のそれぞれのアイテムは、アイテムの所有者に対応するSID(Owner SID)に関連付けられる。   Item security policies can be completely described by discretionary access control policies and system access control policies. Each of these is a set of ACLs. The first set (DACL) describes discretionary access rights granted to various principals by the owner of the item, while the second set of ACLs is called SACL (System Access Control List), Specifies how system auditing is performed when an object is manipulated in several ways. In addition to these, each item in the data store is associated with an SID (Owner SID) corresponding to the owner of the item.

ストレージプラットフォームのデータストア内にアイテムを編成する一次メカニズムは、包含階層のメカニズムである。包含階層は、アイテム間の保持関係を使用して実現される。「AはBを含む」として表される2つのアイテムAとBとの間の保持関係により、アイテムAはアイテムBの存続期間に影響を及ぼすことができる。一般に、データストア内のアイテムは、他のアイテムからそのアイテムへの保持関係がある間、存在しえない。保持関係は、アイテムの存続期間を制御することに加えて、アイテムのセキュリティポリシーを伝搬する必要なメカニズムも備える。   The primary mechanism for organizing items within the storage platform data store is the containment hierarchy mechanism. The containment hierarchy is implemented using retention relationships between items. Due to the holding relationship between the two items A and B represented as “A contains B”, item A can affect the lifetime of item B. In general, an item in a data store cannot exist while there is a retention relationship to the item from another item. In addition to controlling the lifetime of the item, the retention relationship also provides the necessary mechanisms to propagate the item's security policy.

それぞれのアイテムについて指定されたセキュリティポリシーは、そのアイテムについて明示的に指定された部分とデータストア内のアイテムの親から継承される部分の2つの部分からなる。アイテムに対する明示的に定義されたセキュリティポリシーは、考慮対象のアイテムへのアクセスを管理する部分と包含階層内のすべての子孫により継承されるセキュリティポリシーに影響を及ぼす部分の2つの部分からなる。子孫により継承されるセキュリティポリシーは、明示的に定義されているポリシーおよび継承されたポリシーに応じて変わる。   The security policy specified for each item consists of two parts: the part explicitly specified for the item and the part inherited from the item's parent in the data store. An explicitly defined security policy for an item consists of two parts: a part that manages access to the item under consideration and a part that affects the security policy inherited by all descendants in the containment hierarchy. Security policies inherited by descendants vary depending on explicitly defined policies and inherited policies.

セキュリティポリシーは保持関係を通じて伝搬され、任意のアイテムのところでオーバーライドされうるので、アイテムに対する有効なセキュリティポリシーがどのように決定されるかを指定する必要がある。本発明の実施形態では、データストアの包含階層内のアイテムは、ストアのルートからそのアイテムまでのすべてのパスにそってACLを継承する。   Since security policies are propagated through retention relationships and can be overridden at any item, it is necessary to specify how an effective security policy for an item is determined. In an embodiment of the invention, an item in a data store containment hierarchy inherits ACLs along all paths from the store root to the item.

与えられたパスについて継承されたACL内で、ACL内の様々なACEの順序付けにより、強制される最終的なセキュリティポリシーが決定される。以下の注釈を使用して、ACL内のACEの順序付けを記述する。アイテムにより継承されるACL内のACEの順序付けは、以下の2つの規則により決定される。   Within the ACL inherited for a given path, the ordering of the various ACEs in the ACL determines the final security policy that is enforced. The following annotations are used to describe the ordering of ACEs in the ACL. The ordering of ACEs in ACLs inherited by items is determined by the following two rules.

第1の規則は、包含階層のルートからアイテムIへのパス内の様々なアイテムから継承されるACEを階層化する。近いコンテナから継承されたACEは、遠いコンテナから継承されるエントリに優先する。直観的には、これにより、管理者は、包含階層内のさらに遠くから上に継承されるACEをオーバーライドすることができる。この規則は、次の通りである。
アイテムI上の継承されるすべてのACLのLについて
すべてのアイテムI1、I2について
L内のすべてのACEのA1およびA2について
I1はI2の祖先であり、
I2はI3の祖先であり、
A1はI1から継承されたACEであり、
A2はI2から継承されたACEである
ことが成り立てば、
A2はL内のA1に先行する
The first rule stratifies the ACE inherited from various items in the path from the root of the containment hierarchy to item I. An ACE inherited from a near container takes precedence over an entry inherited from a far container. Intuitively, this allows the administrator to override ACEs that are inherited from farther up in the containment hierarchy. The rules are as follows:
For all inherited ACLs on item I For all items I1, I2 For all ACEs A1 and A2 in L I1 is an ancestor of I2
I2 is the ancestor of I3,
A1 is an ACE inherited from I1,
If A2 is an ACE inherited from I2,
A2 precedes A1 in L

第2の規則は、アイテムへのアクセスを拒絶するACEをアイテムへのアクセスを許可するACEより先になるように順序付ける。
アイテムI上の継承されるすべてのACLのLについて
すべてのアイテムI1について
L内のすべてのACEのA1およびA2について
I1はI2の祖先であり、
A1はI1から継承されたACCESS_DENIED_ACEであり、
A2はI1から継承されたACCESS_GRANTED_ACEである
ことが成り立てば、
A1はL内のA2に先行する
The second rule orders ACEs that deny access to items ahead of ACEs that allow access to items.
For all inherited ACLs on item I For all items I1 For all ACEs A1 and A2 in L I1 is an ancestor of I2
A1 is ACCESS_DENIED_ACE inherited from I1,
If A2 is ACCESS_GRANTED_ACE inherited from I1,
A1 precedes A2 in L

包含階層がツリーの場合、ツリーのルートからアイテムへのパスはちょうど1つあり、そのアイテムは、ちょうど1つの継承されたACLを持つ。これらの状況の下で、アイテムにより継承されるACLは、中に含まれるACEの相対的順序付けに関して既存のWindows(登録商標)セキュリティモデルでのファイル(アイテム)により継承されるACLとマッチングする。   If the containment hierarchy is a tree, there is exactly one path from the root of the tree to the item, and that item has exactly one inherited ACL. Under these circumstances, the ACL inherited by the item matches the ACL inherited by the file (item) in the existing Windows security model with respect to the relative ordering of the ACEs contained within.

しかし、データストア内の包含階層は、複数の保持関係がアイテムに対し許可されるため非循環有向グラフ(DAG)である。これらの条件の下で、包含階層のルートからアイテムへの複数のパスがある。アイテムは、すべてのパスにそってACLを継承するので、それぞれのアイテムは、単一のACLではなく、ACLのコレクションと関連付けられる。これは、従来のファイルシステムモデルとは異なり、ちょうど1つのACLが1つのファイルまたはフォルダに関連付けられることに注意されたい。   However, the containment hierarchy in the data store is an acyclic directed graph (DAG) because multiple retention relationships are allowed for items. Under these conditions, there are multiple paths from the root of the containment hierarchy to the item. Since items inherit ACLs along all paths, each item is associated with a collection of ACLs, rather than a single ACL. Note that, unlike the traditional file system model, exactly one ACL is associated with one file or folder.

ツリーとは反対に、包含階層がDAGである場合には、詳細にする必要のある態様が2つある。親から複数のACLを継承する場合にアイテムに対する有効なセキュリティポリシーをどのように計算するかについての説明が必要であり、また編成および表現の仕方は、ストレージプラットフォームのデータストアのセキュリティモデルの管理に直接影響を及ぼす。   Contrary to the tree, there are two aspects that need to be detailed when the containment hierarchy is DAG. It is necessary to explain how to calculate the effective security policy for an item when inheriting multiple ACLs from a parent, and how to organize and express how to manage the security model of the storage platform data store Direct influence.

以下のアルゴリズムでは、与えられたアイテムに対する与えられたプリンシパルのアクセス権を評価する。本明細書全体を通して、以下の表記を使用して、アイテムに関連付けられているACLを説明する。
Inherited_ACLs(ItemId)−アイテムIDがストア内の親からのItemIdであるアイテムにより継承されるACLの集合。
Explicit_ACL(ItemId)−IDがItemIdであるアイテムについて明示的に定義されているACL。
The following algorithm evaluates the access rights of a given principal for a given item. Throughout this specification, the following notation will be used to describe the ACL associated with an item.
Inherited_ACLs (ItemId) —A set of ACLs inherited by items whose item ID is ItemId from the parent in the store.
Explict_ACL (ItemId) —ACL explicitly defined for an item whose ID is ItemId.

Figure 2007521532
Figure 2007521532

上記ルーチンは、所望のアクセスが明示的に拒絶されなかった場合にSTATUS_SUCCESSを返し、pGrantedAccessは、ユーザが望む権利のうちのどれが指定されたACLにより付与されたかを決定する。所望のアクセス権が明示的に拒絶された場合、ルーチンはSTATUS_ACCESS_DENIEDを返す。   The routine returns STATUS_SUCCESS if the desired access has not been explicitly denied, and pGrantedAccess determines which of the rights the user wants granted by the specified ACL. If the desired access right is explicitly denied, the routine returns STATUS_ACCESS_DENIED.

Figure 2007521532
Figure 2007521532

任意のアイテムで定義されているセキュリティポリシーの影響範囲は、データストア上で定義されている包含階層内のアイテムのすべての子孫を含む。明示的ポリシーが定義されているすべてのアイテムについて、ここでは事実上、包含階層内のすべての子孫により継承されるポリシーを定義している。すべての子孫により継承される有効なACLは、アイテムにより継承されるACLのそれぞれを受け取り、明示的なACL内の継承可能なACEをACLの先頭に追加することにより得られる。これは、そのアイテムに関連付けられた継承可能なACLの集合と呼ばれる。   The scope of security policy defined on any item includes all descendants of the item in the containment hierarchy defined on the data store. For all items for which an explicit policy is defined, here we define a policy that is inherited by virtually all descendants in the containment hierarchy. A valid ACL inherited by all descendants is obtained by taking each ACL inherited by the item and adding the inheritable ACE in the explicit ACL to the beginning of the ACL. This is called the inheritable set of ACLs associated with the item.

フォルダアイテムをルートとする包含階層内のセキュリティの明示的指定がない場合、そのフォルダのセキュリティ指定は、包含階層内のそのアイテムのすべての子孫に適用される。そのため、明示的なセキュリティポリシー指定が与えられるすべてのアイテムは、まったく同じように保護されているアイテムの領域を定義し、その領域内のすべてのアイテムに対する有効なACLは、そのアイテムに対する継承可能なACLの集合である。これは、ツリーである包含階層の場合に領域を完全に定義する。それぞれの領域に番号が関連付けられるとすれば、アイテムが属する領域をそのアイテムとともに単に含むだけで十分であろう。   If there is no explicit specification of security in the containment hierarchy rooted at a folder item, the security specification for that folder applies to all descendants of that item in the containment hierarchy. Thus, every item given an explicit security policy specification defines an area of the item that is protected in exactly the same way, and a valid ACL for all items within that area is inheritable for that item. It is a set of ACLs. This completely defines the region in the case of an inclusion hierarchy that is a tree. If a number is associated with each region, it would be sufficient to simply include the region to which the item belongs along with the item.

しかし、DAGである包含階層では、有効なセキュリティポリシーが変化する包含階層のポイントは、2種類のアイテムにより決定される。第1は、明示的なACLが指定されているアイテムである。通常、これらは、管理者が明示的にACLを指定した包含階層内のポイントである。第2は、複数の親を持つアイテムであり、親は、それらに関連付けられている異なるセキュリティポリシーを持つ。通常、これらは、ボリュームについて指定されたセキュリティポリシーの合流点であるアイテムであり、新しいセキュリティポリシーの開始を示す。   However, in an inclusion hierarchy that is a DAG, the point of the inclusion hierarchy where the effective security policy changes is determined by two types of items. The first is an item for which an explicit ACL is specified. These are usually points in the containment hierarchy where the administrator has explicitly specified the ACL. The second is an item with multiple parents, which have different security policies associated with them. Typically these are items that are the confluence of the security policies specified for the volume, indicating the start of a new security policy.

この定義により、データストア内のすべてのアイテムは、2つのカテゴリまったく同じように保護されているセキュリティ領域のルートであるカテゴリとそうでないカテゴリのうちの1つに分類される。セキュリティ領域を定義しないアイテムは、ちょうど1つのセキュリティ領域に属する。ツリーの場合のように、アイテムに対する有効なセキュリティは、アイテムが属す領域をそのアイテムとともに指定することにより指定できる。これにより、ストア内の様々なまったく同じように保護されている領域に基づいてストレージプラットフォームのデータストアのセキュリティを管理する簡単なモデルが得られる。   With this definition, all items in the data store are classified into one of two categories, one that is the root of the security realm that is protected in exactly the same way, and one that is not. Items that do not define a security domain belong to exactly one security domain. As in the case of a tree, effective security for an item can be specified by specifying the area to which the item belongs together with the item. This provides a simple model for managing the storage platform data store security based on various exactly the same protected areas in the store.

2.セキュリティモデルの詳細な説明
この節では、セキュリティ記述子内の個々の権利および含まれるACLが様々なオペレーションにどのように影響を及ぼすかを記述することによりアイテムのセキュリティ保護方法の詳細を示す。
2. Detailed Description of the Security Model This section details how to secure items by describing how individual rights in the security descriptor and the included ACLs affect various operations.

a)セキュリティ記述子構造
セキュリティモデルの詳細を説明する前に、セキュリティ記述子の基本事項を説明すると有益である。セキュリティ記述子は、セキュリティ設定可能なオブジェクトに関連付けられたセキュリティ情報を含む。セキュリティ記述子は、SECURITY_DESCRIPTOR構造体およびその関連付けられたセキュリティ情報からなる。セキュリティ記述子は、以下のセキュリティ情報を含むことができる。
1.オブジェクトの所有者および一次グループに対するSID。
2.特定のユーザまたはグループに対して許可または拒絶されるアクセス権を指定するDACL。
3.オブジェクトに対する監査レコードを生成するアクセスの試行の型を指定するSACL。
4.セキュリティ記述子またはその個別のメンバの意味を限定する制御ビットの集合。
a) Security descriptor structure Before explaining the details of the security model, it is useful to explain the basics of security descriptors. The security descriptor includes security information associated with the security configurable object. A security descriptor consists of a SECURITY_DESCRIPTOR structure and its associated security information. The security descriptor can include the following security information.
1. The SID for the object owner and primary group.
2. DACL that specifies the access rights that are allowed or denied for a particular user or group.
3. A SACL that specifies the type of access attempt that generates an audit record for the object.
4). A set of control bits that limit the meaning of a security descriptor or its individual members.

アプリケーションは、セキュリティ記述子の内容を直接操作できないのが好ましい。オブジェクトのセキュリティ記述子内のセキュリティ情報の設定および取り出しを行う関数がある。さらに、新しいオブジェクトのセキュリティ記述子を作成し初期化する関数がある。   The application preferably cannot directly manipulate the contents of the security descriptor. There are functions for setting and retrieving security information in an object's security descriptor. In addition, there are functions that create and initialize security descriptors for new objects.

自由裁量的アクセス制御リスト(DACL)は、セキュリティ設定可能なオブジェクトへのアクセスを許可または拒絶される受託者を識別する。プロセスがセキュリティ設定可能なオブジェクトにアクセスしようとした場合、システムでは、オブジェクトのDACL内のACEをチェックして、それにアクセス権を付与するかどうかを決定する。オブジェクトがDACLを持たない場合、システムは、全員に完全なアクセス権を付与する。オブジェクトのDACLがACEを持たない場合、システムは、DACLがアクセス権を許可しないためオブジェクトにアクセスするすべての試みを拒絶する。システムは、要求されたすべてのアクセス権を許可する1つまたは複数のACEを見つけるか、または要求されたアクセス権のどれかが拒絶されるまで、順番にACEをチェックしてゆく。   The discretionary access control list (DACL) identifies the trustees who are permitted or denied access to the security configurable object. When a process attempts to access a security-configurable object, the system checks the ACE in the object's DACL to determine whether to grant access to it. If the object does not have DACL, the system grants full access to everyone. If the object's DACL does not have ACE, the system rejects all attempts to access the object because DACL does not grant access. The system will check the ACEs in order until it finds one or more ACEs that grant all the requested access rights or until any of the requested access rights are denied.

システムアクセス制御リスト(SACL)により、管理者は、セキュリティ保護されたオブジェクトにアクセスする試みをログに記録することができる。それぞれのACEは、システムにセキュリティイベントログ内への記録生成を行わせる指定された受託者によるアクセス試行の型を指定する。SACL内のACEは、アクセス試行が失敗した場合、成功した場合、またはその両方の場合に、監査レコードを生成することができる。SACLは、さらに、無許可ユーザがオブジェクトへのアクセス権を獲得しようとした場合にアラームを発生することもできる。   A system access control list (SACL) allows an administrator to log attempts to access a secured object. Each ACE specifies the type of access attempt by a designated trustee that causes the system to generate a record in the security event log. The ACE in the SACL can generate an audit record when the access attempt is unsuccessful, successful, or both. SACL can also generate an alarm when an unauthorized user attempts to gain access to an object.

すべての型のACEは、以下のアクセス制御情報を含む。
1.ACEが適用される受託者を識別するセキュリティ識別子(SID)。
2.ACEにより制御されるアクセス権を指定するアクセスマスク。
3.ACEの型を示すフラグ。
4.子コンテナまたはオブジェクトが、ACLがアタッチされる一次オブジェクトからACEを継承することができるかどうかを決定するビットフラグの集合。
All types of ACE contain the following access control information:
1. A security identifier (SID) that identifies the trustee to which the ACE applies.
2. An access mask that specifies access rights controlled by the ACE.
3. A flag that indicates the ACE type.
4). A set of bit flags that determine whether a child container or object can inherit ACE from the primary object to which the ACL is attached.

以下の表は、すべてのセキュリティ設定可能なオブジェクトによりサポートされる3つのACEの型をまとめたものである。   The following table summarizes the three ACE types supported by all security-configurable objects.

Figure 2007521532
Figure 2007521532

(1)アクセスマスク形式
すべてのセキュリティ設定可能なオブジェクトは、図26に示されているアクセスマスク形式を使用してそのアクセス権を設定する。この形式では、下位16ビットはオブジェクト特有のアクセス権に、次の7ビットは標準アクセス権に使用され、これは、オブジェクトのほとんどの型に適用され、上位4ビットは各オブジェクト型で標準およびオブジェクト特有の権利の集合にマッピングできる汎用アクセス権を指定するために使用される。ACCESS_SYSTEM_SECURITYビットは、オブジェクトのSACLにアクセスする権利に対応する。
(1) Access mask format All security-configurable objects have their access rights set 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.

(2)汎用アクセス権
汎用アクセス権は、マスク内で上位4ビットで指定される。各タイプのセキュリティ設定可能なオブジェクトは、これらのビットをその標準およびオブジェクト特有のアクセス権の集合にマッピングする。例えば、ファイルオブジェクトは、GENERIC_READビットをREAD_CONTROLおよびSYNCHRONIZE標準アクセス権、およびFILE_READ_DATA、FILE_READ_EA、およびFILE_READ_ATTRIBUTESオブジェクト特有のアクセス権にマッピングする。他のタイプのオブジェクトは、GENERIC_READビットをそのタイプのオブジェクトに適したアクセス権の集合にマッピングする。
(2) General-purpose access right The general-purpose access right is specified by the upper 4 bits in the mask. Each type of security-configurable object maps these bits to its standard and object-specific set of access rights. For example, the file object maps the GENERIC_READ bit to READ_CONTROL and SYNCHRONIZE standard access rights, and FILE_READ_DATA, FILE_READ_EA, and FILE_READ_ATTRIBUTES object specific access rights. Other types of objects map the GENERIC_READ bit to a set of access rights appropriate for that type of object.

汎用アクセス権は、オブジェクトのハンドルを開く場合に必要なアクセスのタイプを指定するために使用することができる。これは、対応するすべての標準および特定の権利を指定するのよりも単純であるのが普通である。以下の表は、汎用アクセス権について定義された定数をまとめたものである。   Universal access rights can be used to specify the type of access required to open an object's handle. This is usually simpler than specifying all corresponding standards and specific rights. The following table summarizes the constants defined for universal access rights.

Figure 2007521532
Figure 2007521532

(3)標準アクセス権
それぞれのタイプのセキュリティ設定可能なオブジェクトは、そのタイプのオブジェクトに特有のオペレーションに対応するアクセス権の集合を持つ。それらのオブジェクト特有のアクセス権に加えて、ほとんどのタイプのセキュリティ設定可能なオブジェクトに共通のオペレーションに対応する標準アクセス権の集合がある。以下の表は、標準アクセス権について定義された定数をまとめたものである。
(3) Standard access rights Each type of security-configurable object has a set of access rights corresponding to operations specific to that type of object. In addition to those object-specific permissions, there is a set of standard permissions that correspond to operations common to most types of securable objects. The following table summarizes the constants defined for standard access rights.

Figure 2007521532
Figure 2007521532

b)アイテム特有の権利
図26のアクセスマスク構造では、アイテム特有の権利は「Object Specific Rights」セクション(下位16ビット)に置かれる。本発明の実施形態では、ストレージプラットフォームは、セキュリティを管理する2組のAPI−Win32およびストレージプラットフォームAPI−を公開しているため、ファイルシステムオブジェクト特有の権利は、ストレージプラットフォーム特有の権利の設計の動機付けをするために考慮されなければならない。
b) Item-specific rights In the access mask structure of FIG. 26, the 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.

(1)ファイルおよびディレクトリオブジェクト特有の権利
以下の表を考察する。
(1) File and directory object specific rights Consider the following table.

Figure 2007521532
Figure 2007521532

前記の表を参照しつつ、ファイルシステムでは、基本的に、ファイルとディレクトリとを区別することに注意すべきであるが、それは、ファイルおよびディレクトリの権利が同じビット上でオーバーラップしているからである。ファイルシステムでは、アプリケーションがそれらのオブジェクト上のビヘイビアを制御できるようにする、非常に精度の高い権利を定義する。例えば、これらにより、アプリケーションは、属性(Attributes)(FILE_READ/WRITE_ATTRIBUTES)、拡張属性(Extended Attributes)、およびファイルに関連付けられたDATAストリームを区別することができる。   With reference to the above table, it should be noted that the file system basically distinguishes between files and directories, because the rights of files and directories overlap on the same bit. It is. The file system defines very precise rights that allow the application to control the behavior on those objects. For example, these allow the application to distinguish between Attributes (FILE_READ / WRITE_ATTRIBUTES), extended attributes (Extended Attributes), and DATA streams associated with the file.

本発明のストレージプラットフォームのセキュリティモデルの目標は、データストアアイテム(Contacts、Emailsなど)に作用するアプリケーションが一般に、例えば属性、拡張属性、およびデータストリームを区別する必要がないように、権利割り当てモデルを簡素化することである。しかし、ファイルおよびフォルダの場合、細かいWin32権利は保持され、ストレージプラットフォームを介したアクセスの意味は、Win32アプリケーションとの互換性が実現可能なように定義される。このマッピングについては、以下で指定されたアイテム権利のそれぞれとともに説明される。   The goal of the storage platform security model of the present invention is to create a rights assignment model so that applications acting on data store items (Contacts, Emails, etc.) generally do not need to differentiate between attributes, extended attributes, and data streams, for example. It is to simplify. However, in the case of files and folders, fine Win32 rights are retained, and the meaning of access through the storage platform is defined so that compatibility with Win32 applications can be realized. This mapping is described with each of the item rights specified below.

以下のアイテム権利は、関連付けられている許可可能なオペレーションとともに指定される。これらのアイテム権利のそれぞれを裏付ける同等のWin32権利も提供される。   The following item rights are specified along with the associated allowable operations. Equivalent Win32 rights are also provided to support each of these item rights.

(2)WinFSItemRead
この権利を使用すると、埋め込まれた関係を介してアイテムにリンクされているアイテムを含むアイテムのすべての要素への読み込みアクセスが可能になる。また、保持関係を介してこのアイテムにリンクされているアイテムの列挙も可能である(ディレクトリリスティングともいう)。これは、参照関係を介してリンクされたアイテムの名前を含む。この権利は以下のようにマッピングされる。
ファイル:
(FILE_READ_DATA|SYNCHRONIZE)
フォルダ:
(FILE_LIST_DIRECTORY|SYNCHRONIZE)
(2) WinFSItemRead
Using this right allows read access to all elements of an item, including items that are linked to the item via an embedded relationship. It is also possible to enumerate items linked to this item via a holding relationship (also called directory listing). This includes the name of the item linked through the reference relationship. This right is mapped as follows:
File:
(FILE_READ_DATA | SYNCHRONIZE)
folder:
(FILE_LIST_DIRECTORY | SYNCHRONIZE)

これは、セキュリティアプリケーションが、WinFSItemReadDataを設定し、権利マスクを上で指定したファイル権利の組合せとして指定することが可能であることを意味する。   This means that the security application can set WinFSItemReadData and specify the rights mask as a combination of the file rights specified above.

(3)WinFSItemReadAttributes
この権利は、ファイルシステムが基本ファイル属性とデータストリームとを区別するのと同様に、Itemの基本属性への読み込みアクセスを可能にする。これらの基本属性は、すべてのアイテムの派生元となる基本アイテム内に配置される属性であるのが好ましい。この権利は以下のようにマッピングされる。
ファイル:
(FILE_READ_ATTRIBUTES)
フォルダ:
(FILE_READ_ATTRIBUTES)
(3) WinFSItemReadAttributes
This right allows read access to the basic attributes of an Item, just as the file system distinguishes between basic file attributes and data streams. These basic attributes are preferably attributes arranged in the basic item from which all items are derived. This right is mapped as follows:
File:
(FILE_READ_ATTRIBUTES)
folder:
(FILE_READ_ATTRIBUTES)

(4)WinFSItemWriteAttributes
この権利は、ファイルシステムが基本ファイル属性とデータストリームとを区別するのと同様に、Itemの基本属性への書き込みアクセスを可能にする。これらの基本属性は、すべてのアイテムの派生元となる基本アイテム内に配置されるのが好ましい。この権利は以下のようにマッピングされる。
ファイル:
(FILE_WRITE_ATTRIBUTES)
フォルダ:
(FILE_WRITE_ATTRIBUTES)
(4) WinFSItemWriteAttributes
This right allows write access to the basic attributes of an Item, just as the file system distinguishes between basic file attributes and data streams. These basic attributes are preferably placed in the basic item from which all items are derived. This right is mapped as follows:
File:
(FILE_WRITE_ATTRIBUTES)
folder:
(FILE_WRITE_ATTRIBUTES)

(5)WinFSItemWrite
この権利を使用すると、埋め込まれた関係を介してアイテムにリンクされているアイテムを含むアイテムのすべての要素への書き込みアクセスを実行できるようになる。この権利を使用すると、さらに、埋め込まれた関係を他のアイテムに追加または削除することもできるようになる。この権利は以下のようにマッピングされる。
ファイル:
(FILE_WRITE_DATA)
フォルダ:
(FILE_ADD_FILE)
(5) WinFSitemWrite
Using this right allows write access to all elements of an item, including items that are linked to the item via an embedded relationship. Using this right, you can also add or delete embedded relationships to other items. This right is mapped as follows:
File:
(FILE_WRITE_DATA)
folder:
(FILE_ADD_FILE)

ストレージプラットフォームのデータストアでは、アイテムとフォルダとの間に違いはなく、アイテムはデータストア内の他のアイテムとの保持Relationshipも持つことができる。したがって、FILE_ADD_SUBDIRECTORY(またはFILE_APPEND_DATA)権利がある場合、アイテムを他のアイテムとのRelationshipsのソースにすることができる。   In a storage platform data store, there is no difference between an item and a folder, and an item can also have a retention relationship with other items in the data store. Thus, if you have the FILE_ADD_SUBDIRECTORY (or FILE_APPEND_DATA) right, you can make an item the source of Relations with other items.

(6)WinFSItemAddLink
この権利を使用すると、ストア内のアイテムに保持Relationshipを追加することができるようになる。複数の保持Relationshipのセキュリティモデルはアイテム上のセキュリティを変更し、それらの変更は階層内の上位のポイントから来る場合にWRITE_DACをバイパスすることができるので、それとのRelationshipを作成できるようにするためにWRITE_DACはデスティネーションアイテム上に必要であることに留意されたい。この権利は以下のようにマッピングされる。
ファイル:
(FILE_APPEND_DATA)
フォルダ:
(FILE_ADD_SUBDIRECTORY)
(6) WinFSitemAddLink
Using this right, you can add retention relationships to items in the store. Multiple retention Relationship security models change the security on an item, and those changes can bypass the WRITE_DAC when coming from a higher point in the hierarchy, so that you can create a Relationship with it Note that the WRITE_DAC is required on the destination item. This right is mapped as follows:
File:
(FILE_APPEND_DATA)
folder:
(FILE_ADD_SUBDIRECTORY)

(7)WinFSItemDeleteLink
この権利により、アイテムに対する保持Relationshipを削除する機能は、そのアイテムを削除する権利がプリンシパルに付与されていないとしても使用可能になる。これは、ファイルシステムモデルと整合しており、パージに役立つ。この権利は以下のようにマッピングされる。
ファイル:
(FILE_DELETE_CHILD)−ファイルシステムは、この権利に相当するファイルを持たないが、アイテムは他のアイテムとの保持Relationshipを持つという概念はあり、したがって、非フォルダに対しても同様にこの権利を伝えられる。
フォルダ:
(FILE_DELETE_CHILD)
(7) WinFSItemDeleteLink
With this right, the function of deleting the retained Relationship for an item can be used even if the principal is not granted the right to delete the item. This is consistent with the file system model and is useful for purging. This right is mapped as follows:
File:
(FILE_DELETE_CHILD)-The file system does not have a file corresponding to this right, but there is a concept that the item has a retention relationship with other items, so this right can be conveyed to non-folders as well .
folder:
(FILE_DELETE_CHILD)

(8)アイテムを削除する権利
アイテムとの最後の保持Relationshipが消えると、アイテムは削除される。アイテムを削除するという明示的な概念はない。アイテムとのすべての保持Relationshipを削除するが、高水準の機能であってシステムプリミティブではないパージオペレーションがある。
(8) Right to delete an item When the last retention relationship with an item disappears, the item is deleted. There is no explicit concept of deleting items. There is a purge operation that deletes all retained Relationships with the item, but is a high-level function and not a system primitive.

パスを使用して指定されたアイテムのリンクを解除できるのは、(1)そのパスにそった親アイテムがその対象への書き込みアクセスを付与するか、または(2)アイテム自体の標準の権利がDELETEを付与するかの2つの条件のうちのいずれか一方が満たされている場合である。最後のRelationshipが削除されると、アイテムはシステムから消える。ItemIDを使用して指定されたアイテムのリンクを解除できるのは、アイテム自体の標準の権利がDELETEを付与する場合である。   An item specified using a path can be unlinked: (1) the parent item along that path grants write access to that object, or (2) the item's own standard rights This is a case where one of the two conditions for granting DELETE is satisfied. If the last Relationship is deleted, the item disappears from the system. An item specified using ItemID can be unlinked when the standard right of the item itself grants DELETE.

(9)アイテムをコピーする権利
アイテムは、対象がアイテムに対するWinFSItemReadおよびデスティネーションフォルダに対するWinFSItemWriteを付与された場合に、ソースからデスティネーションフォルダにコピーすることができる。
(9) Right to copy an item An item can be copied from a source to a destination folder when the target is given a WinFSItemRead for the item and a WinFSItemWrite for the destination folder.

(10)アイテムを移動する権利
ファイルシステム内のファイル移動は、デスティネーション上でACLを保持するので、ソースファイルに対するDELETE権利およびデスティネーションディレクトリに対するFILE_ADD_FILEだけを必要とする。しかし、フラグは、クロスボリューム移動(cross−volume move)の場合にCopyFileの意味を許容できることをアプリケーションに指定させるMoveFileEx呼び出し(MOVEFILE_COPY_ALLOWED)で指定することができる。移動するとセキュリティ記述子に何が生じるかについて可能な4つの選択肢がある。
1.ACL全体をファイルとともに搬送する−既定のイントラボリューム移動(intra−volume move)の意味。
2.ACL全体をファイルとともに搬送し、保護されているというマークをACLに付ける。
3.デスティネーション間で明示的なACEだけを搬送し、デスティネーション上で再継承する。
4.何も搬送せず、デスティネーション上で再継承する−既定のインターボリューム移動の意味−ファイルのコピーと同じ。
(10) Rights to move items File moves in the file system hold the ACL on the destination and therefore only require the DELETE right on the source file and the FILE_ADD_FILE on the destination directory. However, the flag can be specified with a MoveFileEx call (MOVEFILE_COPY_ALLOWED) that causes the application to specify that the meaning of CopyFile is acceptable in the case of cross-volume move. There are four possible options for what happens to the security descriptor when moving.
1. Carrying the entire ACL with the file-the meaning of a predefined intra-volume move.
2. The entire ACL is transported with the file and the ACL is marked as protected.
3. Only explicit ACEs are carried between destinations and re-inherited on the destination.
4). Carry nothing, re-inherit on destination-Meaning of default inter-volume move-Same as file copy.

本発明のセキュリティモデルでは、アプリケーション側でMOVEFILE_COPY_ALLOWEDフラグを指定した場合、インターボリュームとイントラボリュームの両方の場合について第4のオプションが実行される。このフラグが指定されない場合、第2のオプションは、デスティネーションがさらに同じセキュリティ領域(つまり、同じ継承の意味)内にない限り実行される。ストレージプラットフォームレベルの移動では、第4の選択肢も実装し、コピーの場合と同様に、ソース上のREAD_DATAを必要とする。   In the security model of the present invention, when the MOVEFILE_COPY_ALLOWED flag is specified on the application side, the fourth option is executed for both the inter volume and the intra volume. If this flag is not specified, the second option is executed unless the destination is further within the same security realm (ie, the same inheritance semantics). Storage platform level migration also implements the fourth option and requires READ_DATA on the source as in the case of copying.

(11)アイテム上のセキュリティポリシーを表示する権利
アイテムのセキュリティは、そのアイテムが標準の権利READ_CONTROLを対象に付与する場合に表示できる。
(11) The right to display the security policy on an item The security of an item can be displayed when the item grants the standard right READ_CONTROL.

(12)アイテム上のセキュリティポリシーを変更する権利
アイテムのセキュリティは、そのアイテムが標準の権利WRITE_DACを対象に付与する場合に変更できる。しかし、データストアは暗黙の継承を提供するので、これは、階層上でのセキュリティの変更方法に密接に関係している。階層のルートがWRITE_DACを付与する場合、セキュリティポリシーは、階層(またはDAG)内の特定のアイテムがWRITE_DACを対象に付与するかどうかに関係なく階層全体で変更されるというのが規則である。
(12) The right to change the security policy on an item The security of an item can be changed when the item grants the standard right WRITE_DAC. However, since the data store provides implicit inheritance, this is closely related to how security changes in the hierarchy. If the root of a hierarchy grants WRITE_DAC, the rule is that the security policy is changed throughout the hierarchy regardless of whether a particular item in the hierarchy (or DAG) grants WRITE_DAC.

(13)直接の等価物を持たない権利
本発明の実施形態では、FILE_EXECUTE(ディレクトリのFILE_TRAVERSE)はストレージプラットフォーム内に直接の等価物を持たない。モデルは、Win32との互換性のためこれらを保持しているが、それらの権利に基づいてアイテムに対しアクセス決定が下されることはない。FILE_READ/WRITE_EAの場合のように、データストアアイテムは、拡張属性の概念を持たないため、このビットに対する意味は用意されていない。しかし、このビットは、Win32の互換性のために残されている。
(13) Right without direct equivalent In the embodiment of the present invention, FILE_EXECUTE (FILE_TRAVERSE of the directory) does not have a direct equivalent in the storage platform. The model retains these for compatibility with Win32, but no access decisions are made for items based on their rights. As in the case of FILE_READ / WRITE_EA, since the data store item does not have the concept of an extended attribute, no meaning is provided for this bit. However, this bit is left for Win32 compatibility.

3.実装
まったく同じように保護されている領域を定義するすべてのアイテムは、セキュリティテーブル内でそれらに関連付けられたエントリを持つ。セキュリティテーブルは、次のように定義される。
3. Implementation All items that define areas that are protected in exactly the same way have entries associated with them in the security table. The security table is defined as follows.

Figure 2007521532
Figure 2007521532

Item Identityエントリは、まったく同じように保護されているセキュリティ領域のルートのアイテム識別である。Item Ordpathエントリは、まったく同じように保護されているセキュリティ領域のルートに関連付けられているordpathである。Explicit Item ACLエントリは、まったく同じように保護されているセキュリティ領域のルートについて定義された明示的ACLである。場合によっては、これは、例えば、アイテムが異なる領域に属する複数の親を持つため新しいセキュリティ領域が定義される場合に、NULLとすることができる。Path ACLsエントリは、アイテムにより継承されるACLの集合であり、Region ACLsエントリは、アイテムに関連付けられているまったく同じように保護されているセキュリティ領域について定義されているACLの集合である。   The Item Identity entry is the item identification of the root of the security realm that is protected in exactly the same way. The Item Ordpath entry is the ordpath associated with the root of the security area that is protected in exactly the same way. The Explicit Item ACL entry is an explicit ACL defined for the root of the security domain that is protected in exactly the same way. In some cases, this can be NULL, for example, if a new security area is defined because the item has multiple parents belonging to different areas. A Path ACLs entry is a collection of ACLs inherited by an item, and a Region ACLs entry is a collection of ACLs defined for exactly the same protected security realm associated with the item.

与えられたストア内のアイテムに対する有効セキュリティの計算には、このテーブルを利用する。アイテムに関連付けられたセキュリティポリシーを決定するために、アイテムに関連付けられたセキュリティ領域が得られ、その領域に関連付けられたACLが取り出される。   This table is used to calculate the effective security for items in a given store. In order to determine a security policy associated with an item, a security realm associated with the item is obtained and an ACL associated with the realm is retrieved.

アイテムに関連付けられたセキュリティポリシーは、明示的なACLを直接追加するか、または新しいセキュリティ領域を形成することになる保持Relationshipを追加することにより間接的に変更されるので、アイテムの有効なセキュリティを決定する上記のアルゴリズムが必ず有効なアルゴリズムであるようにするためセキュリティテーブルは最新状態に維持される。   The security policy associated with an item is changed indirectly by adding an explicit ACL directly or by adding a retention relationship that will form a new security realm, thus ensuring effective security for the item. The security table is kept up-to-date to ensure that the above algorithm to be determined is a valid algorithm.

ストアに対する様々な変更およびセキュリティテーブルを維持する随伴するアルゴリズムは以下の通りである。   The various changes to the store and the accompanying algorithm that maintains the security table are as follows.

a)コンテナ内に新しいアイテムを作成する
アイテムがコンテナ内に新たに作成されると、これは、コンテナに関連付けられたすべてのACLを継承する。新たに作成されたアイテムは、ちょうど1つの親を持つので、その親と同じ領域に属す。したがって、新しいエントリをセキュリティテーブル内に作成する必要はない。
a) Creating a new item in the container When an item is newly created in the container, it inherits all ACLs associated with the container. Since the newly created item has exactly one parent, it belongs to the same area as that parent. Therefore, it is not necessary to create a new entry in the security table.

b)明示的なACLをアイテムに追加する
ACLがアイテムに追加された場合、これは、与えられたアイテム自体と同じセキュリティ領域に属す包含階層内のすべての子孫に対し新しいセキュリティ領域を定義する。他のセキュリティ領域に属しているが包含階層内の与えられたアイテムの子孫ではないすべてのアイテムについて、セキュリティ領域は、変更されないが、その領域に関連付けられている有効なACLは、新しいACLの追加を反映するように変更される。
b) Adding an explicit ACL to an item When an ACL is added to an item, this defines a new security realm for all descendants in the containment hierarchy that belong to the same security realm as the given item itself. For all items that belong to other security realms but are not descendants of a given item in the containment hierarchy, the security realm is not changed, but the valid ACL associated with that realm is the addition of a new ACL Is changed to reflect.

この新しいセキュリティ領域の導入は、旧いセキュリティ領域と新しく定義されたセキュリティ領域とをまたにかける祖先との複数の保持Relationshipsを持つすべてのアイテムに対しさらに領域定義を行うきっかけとなりうる。このようなすべてのアイテムについて、新しいセキュリティ領域を定義する必要があり、手順が繰り返される。   The introduction of this new security domain can trigger further domain definitions for all items that have multiple retention relationships with ancestors that straddle the old security domain and the newly defined security domain. For all such items, a new security area needs to be defined and the procedure is repeated.

図27(a)、(b)、および(c)は、新しい明示的なACLを導入することにより、既存のセキュリティ領域から切り出される新しいまったく同じように保護されているセキュリティ領域を示している。これは、2というマークが付けられているノードにより示される。しかし、この新しい領域を導入した結果、アイテムが複数の保持Relationshipを持つことから追加領域3が作成される。   FIGS. 27 (a), (b), and (c) show a new, exactly the same protected security area that is cut out from the existing security area by introducing a new explicit ACL. This is indicated by the node marked 2. However, as a result of introducing this new area, an additional area 3 is created because the item has a plurality of holding Relationships.

セキュリティテーブルでの以下の一連の更新は、まったく同じように保護されるセキュリティ領域の因数分解を反映する。   The following series of updates in the security table reflects a factorization of the security area that is protected in exactly the same way.

c)保持Relationshipをアイテムに追加する
保持Relationshipがアイテムに追加されると、3つの可能性のうちの1つが生じる。保持Relationshipのターゲット、つまり、考察対象のアイテムがセキュリティ領域のルートである場合、その領域に関連付けられる有効なACLは変更され、セキュリティテーブルにさらに修正を加える必要はない。新しい保持Relationshipのソースのセキュリティ領域がアイテムの既存の親のセキュリティ領域と同じである場合、変更は不要である。しかし、アイテムが異なるセキュリティ領域に属する親を持たないようになれば、新しいセキュリティ領域が形成され、与えられたアイテムをセキュリティ領域のルートとして持つ。この変更は、そのアイテムに関連付けられているセキュリティ領域を修正することにより包含階層内のすべてのアイテムに伝搬される。考察対象のアイテムと同じセキュリティ領域に属するすべてのアイテムおよび包含階層内のその子孫は、変更される必要がある。変更が行われた後、複数の保持Relationshipを持つすべてのアイテムは、さらに変更が必要かを判定するために調べられなければならない。これらのアイテムのどれかが異なるセキュリティ領域の親を持つ場合には、さらに変更が必要になることがある。
c) Adding a retention relationship to an item When a retention relationship is added to an item, one of three possibilities arises. If the retention Relationship target, i.e., the item under consideration, is the root of a security realm, the effective ACL associated with that realm is changed and no further modifications need to be made to the security table. If the security area of the new retention Relationship's source is the same as the security area of the item's existing parent, no change is necessary. However, if an item does not have a parent that belongs to a different security area, a new security area is formed and the given item is held as the root of the security area. This change is propagated to all items in the containment hierarchy by modifying the security realm associated with that item. All items that belong to the same security area as the item under consideration and their descendants in the containment hierarchy need to be changed. After a change is made, all items with multiple holding Relationships must be examined to determine if further changes are needed. If any of these items have different security domain parents, further changes may be necessary.

d)保持Relationshipをアイテムから削除する
保持Relationshipがアイテムから削除された場合、いくつかの条件が満たされていれば、セキュリティ領域をその親領域とともに縮小することが可能である。より正確に言うと、これは、(1)保持Relationshipを削除すると1つの親を持つアイテムが生じ、そのアイテムについて明示的なACLが指定されていない、(2)保持Relationshipを削除すると親がすべて同じセキュリティ領域内にあるアイテムが生じ、そのアイテムについて明示的なACLが定義されていないという条件の下で実行することができる。これらの状況の下で、セキュリティ領域は、親と同じになるようにマーキングすることができる。このマーキングは、セキュリティ領域が縮小される領域に対応するすべてのアイテムに適用する必要がある。
d) Deleting a retained relationship from an item If a retained relationship is deleted from an item, the security region can be reduced along with its parent region if some conditions are met. More precisely, this means that (1) deleting a retained relationship will result in an item with one parent, and no explicit ACL is specified for that item, and (2) deleting the retained relationship will cause all parents to It can be performed under the condition that an item is in the same security realm and no explicit ACL is defined for that item. Under these circumstances, the security area can be marked to be the same as the parent. This marking must be applied to all items corresponding to the area where the security area is reduced.

e)明示的なACLをアイテムから削除する
明示的なACLがアイテムから削除された場合、その親の領域とともにそのアイテムをルートとするセキュリティ領域を縮小することが可能である。より正確に言うと、これは、明示的なACLを削除すると包含階層内の親が同じセキュリティ領域に属しているアイテムが生じる場合に実行できる。これらの状況の下で、セキュリティ領域は、親と同じになるようにマーキングすることができ、変更は、セキュリティ領域が縮小される領域に対応するすべてのアイテムに適用される。
e) Deleting an explicit ACL from an item When an explicit ACL is deleted from an item, it is possible to reduce the security area rooted at that item along with its parent area. More precisely, this can be done when deleting an explicit ACL results in an item whose parent in the containment hierarchy belongs to the same security realm. Under these circumstances, the security area can be marked to be the same as the parent, and the change is applied to all items corresponding to the area where the security area is reduced.

f)アイテムに関連付けられているACLを修正する
このシナリオでは、セキュリティテーブルに新しい追加を行う必要はない。その領域に関連付けられている有効なACLは更新され、新しいACLの変更がそれの影響を受けるセキュリティ領域に伝搬される。
f) Modify the ACL associated with the item In this scenario, there is no need to make a new addition to the security table. The valid ACL associated with that area is updated and new ACL changes are propagated to the affected security area.

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.

1.ストレージ変更イベント
この節では、ストレージプラットフォームAPI 322により提供される通知インターフェースのいくつかの使用例を取りあげる。
1. Storage Change Events This section lists some examples of using the notification interface provided by the storage platform API 322.

a)イベント
Item、ItemExtensions、およびItemRelationshipsは、データ変更通知の登録のためアプリケーションにより使用されるデータ変更イベントを公開する。以下のコードサンプルは、基本Itemクラス上のItemModifiedおよびItemRemovedイベントハンドラの定義を示している。
a) Events Item, ItemExtensions, and ItemRelationships expose data change events that are used by applications to register for data change notifications. The following code sample shows the definition of ItemModified and ItemRemoved event handlers on the base Item class.

Figure 2007521532
Figure 2007521532

すべての通知は、変更されたアイテムをデータストアから取り出すのに十分なデータを搬送できる。以下のコードサンプルは、Item、ItemExtension、またはItemRelationship上でイベントを登録する方法を示している。   All notifications can carry enough data to retrieve the changed item from the data store. The following code sample shows how to register an event on Item, ItemExtension, or ItemRelationship.

Figure 2007521532
Figure 2007521532

本発明の実施形態では、ストレージプラットフォームは、最後に通知を配送した以降にそれぞれのアイテムが修正または削除された場合、またはデータストアから最後にフェッチされた以降に新しい登録があった場合にアプリケーションが通知を受けることを保証する。   In an embodiment of the present invention, the storage platform allows an application to run when each item has been modified or deleted since the last delivery of the notification, or when there was a new registration since the last fetch from the data store. Guarantee to be notified.

b)ウォッチャ(Watchers)
本発明の実施形態では、ストレージプラットフォームは、(1)フォルダまたはフォルダ階層、(2)アイテムコンテクスト、または(3)特定のアイテムに関連付けられているオブジェクトを監視するウォッチャクラスを定義する。3つのカテゴリのそれぞれについて、ストレージプラットフォームは、関連付けられているアイテム、アイテム拡張、またはアイテム関係を監視する特定のウォッチャクラスを提供し、例えばストレージプラットフォームは、それぞれのFolderItemWatcher、FolderRelationshipWatcher、およびFolderExtensionWatcherクラスを提供する。
b) Watchers
In an embodiment of the invention, the storage platform defines a watcher class that monitors (1) a folder or folder hierarchy, (2) an item context, or (3) an object associated with a particular item. For each of the three categories, the storage platform provides a specific watcher class that monitors the associated item, item extension, or item relationship, for example, the storage platform provides the respective FolderItemWatcher, FolderRelationshipWatcher, and FolderExtensionWatcher classes To do.

ウォッチャを作成するときに、アプリケーションは、事前に存在するアイテム、つまり、アイテム、拡張、または関係の通知を要求することができる。このオプションは、ほとんど、プライベートアイテムキャッシュを維持するアプリケーション用である。要求されない場合、アプリケーションは、ウォッチャオブジェクトが作成された後に生じるすべての更新の通知を受信する。   When creating a watcher, the application can request notification of pre-existing items, ie items, extensions, or relationships. This option is mostly for applications that maintain a private item cache. If not requested, the application receives notification of all updates that occur after the watcher object is created.

通知を配送することとともに、ストレージプラットフォームは、「WatcherState」オブジェクトを供給する。WatcherStateをシリアライズして、ディスク上に保存することができる。その後、失敗した後、またはオフラインになってから再接続するときにウォッチャ状態を使用してそれぞれのウォッチャを再作成することができる。新しく再作成されたウォッチャは、未受領確認通知を再生成する。アプリケーションは、通知への参照を供給するそれぞれのウォッチャ状態で「Exclude」メソッドを呼び出すことにより通知の配送を示す。   Along with delivering the notification, the storage platform provides a “WatcherState” object. The WatcherState can be serialized and saved on disk. Each watcher can then be recreated using the watcher state after a failure or when reconnecting after going offline. The newly recreated watcher regenerates the unacknowledged notification. The application indicates delivery of the notification by calling an “Exclude” method in each watcher state that provides a reference to the notification.

ストレージプラットフォームは、ウォッチャ状態の別々のコピーをそれぞれのイベントハンドラに配送する。同じイベントハンドラの後の呼び出しで受信されたウォッチャ状態では、すでに受信されたすべての通知の配送を想定する。   The storage platform delivers a separate copy of the watcher state to each event handler. In the watcher state received in a later call of the same event handler, it assumes delivery of all notifications that have already been received.

例えば、以下のコードサンプルは、FolderItemWatcherの定義を示す。   For example, the following code sample shows the definition of FolderItemWatcher.

Figure 2007521532
Figure 2007521532

以下のコードサンプルは、フォルダの内容を監視するフォルダウォッチャオブジェクトを作成する方法を示している。ウォッチャは、新しい音楽アイテムが追加されるか、または既存の音楽アイテムが更新されるかまたは削除されたときに、通知、つまり、イベントを生成する。フォルダウォッチャは、フォルダ階層内の特定のフォルダまたはすべてのフォルダを監視する。   The following code sample shows how to create a folder watcher object that monitors the contents of a folder. The watcher generates a notification or event when a new music item is added or an existing music item is updated or deleted. A folder watcher monitors a specific folder or all folders in a folder hierarchy.

Figure 2007521532
Figure 2007521532

2.変更追跡および通知生成メカニズム
ストレージプラットフォームは、データ変更を追跡し、通知を生成する単純ではあるが効率的なメカニズムを備える。クライアントは、データを取り出すために使用されるのと同じ接続で通知を取り出す。このため、セキュリティチェックが大幅に簡素化され、可能なネットワーク構成に対する待ち時間および制約条件が排除される。通知は、selectステートメントを発行することにより取り出される。ポーリングを行わないようにするために、クライアントは、データベースエンジン314が備える「waitfor」機能を使用することができる。図13は、基本的なストレージプラットフォーム通知概念を示している。このwaitforクエリは、同期して実行される場合、呼び出し側スレッドは、結果が得られるまでブロックされ、非同期に実行される場合、スレッドはブロックされず、結果は用意されれば、別のスレッドで返される。
2. Change Tracking and Notification Generation Mechanism The storage platform provides a simple but efficient mechanism for tracking data changes and generating notifications. The client retrieves the notification on the same connection used to retrieve the data. This greatly simplifies security checks and eliminates latency and constraints on possible network configurations. Notifications are retrieved by issuing a select statement. To prevent polling, the client can use the “waitfor” function provided by the database engine 314. FIG. 13 illustrates the basic storage platform notification concept. When this waitfor query is executed synchronously, the calling thread is blocked until a result is obtained, and when executed asynchronously, the thread is not blocked, and if the result is prepared, it is returned.

通知ロックをそれぞれのデータ範囲に設定することにより変更を監視できるので、「waitfor」と「select」の組合せは、特定のデータ範囲に収まるデータ変更を監視するのに魅力的である。これは、多くの共通のストレージプラットフォームシナリオについて成り立つ。個々のアイテムに対する変更は、通知ロックをそれぞれのデータ範囲に設定することにより効率よく監視することができる。フォルダおよびフォルダツリーに対する変更は、通知ロックをパス範囲に設定することにより監視できる。型およびその子型に対する変更は、通知ロックを型範囲に設定することにより監視できる。   Since changes can be monitored by setting a notification lock on each data range, the combination of “waitfor” and “select” is attractive for monitoring data changes that fall within a specific data range. This is true for many common storage platform scenarios. Changes to individual items can be efficiently monitored by setting notification locks to their respective data ranges. Changes to folders and folder trees can be monitored by setting notification locks to path ranges. Changes to a type and its child types can be monitored by setting the notification lock to the type range.

一般に、通知の処理には、(1)データ変更または均等検出、(2)サブスクリプションマッチング(subscription matching)、および(3)通知配送の3つの異なるフェーズが関連する。同期通知配送、つまり、データ変更を実行するトランザクションの一部としての通知配送を除き、ストレージプラットフォームは以下の2つの形態の通知配送を実装することができる。
1)即時イベント検出:イベント検出およびサブスクリプションマッチングは、更新トランザクションの一部として実行される。通知は、サブスクライバにより監視されるテーブル内に挿入される。
2)遅延イベント検出:イベント検出およびサブスクリプションマッチングは、更新トランザクションがコミットされた後に実行される。その後、実際のサブスクライバまたは媒介物がイベントを検出し、通知を生成する。
In general, notification processing involves three different phases: (1) data change or equality detection, (2) subscription matching, and (3) notification delivery. Except for synchronous notification delivery, that is, notification delivery as part of a transaction that performs data changes, the storage platform can implement two forms of notification delivery:
1) Immediate event detection: Event detection and subscription matching are performed as part of an update transaction. Notifications are inserted into a table monitored by the subscriber.
2) Delayed event detection: Event detection and subscription matching are performed after the update transaction is committed. The actual subscriber or mediator then detects the event and generates a notification.

即時イベント検出では、追加コードを更新オペレーションの一部として実行する必要がある。これにより、相対的な状態変更を示すイベントを含む注目するすべてのイベントを取り込むことができる。   Immediate event detection requires additional code to be executed as part of the update operation. Thereby, it is possible to capture all events of interest including events indicating relative state changes.

遅延イベント検出では、追加コードを更新オペレーションに加える必要がなくなる。イベント検出は、最終的なサブスクライバにより実行される。遅延イベント検出では、当然ながら、イベント検出およびイベント配送をバッチ処理し、データベースエンジン314(例えば、SQLサーバ)のクエリ実行インフラストラクチャにうまく適合する。   Late event detection eliminates the need to add additional code to the update operation. Event detection is performed by the ultimate subscriber. Delayed event detection, of course, batches event detection and event delivery and fits well into the query execution infrastructure of the database engine 314 (eg, SQL server).

遅延イベント検出は、更新オペレーションによって残されたログまたはトレースに依存する。ストレージプラットフォームは、削除されたデータアイテムに対するツームストーンとともに論理的タイムスタンプの集合を維持する。データストアをスキャンし、変更がないか調べるときに、クライアントは、変更を検出するための低ウォーターマークを定義するタイムスタンプおよび重複通知を防止するためのタイムスタンプの集合を供給する。アプリケーションは、その低ウォーターマークにより示される時刻以降に発生したすべての変更の通知を受信する。   Late event detection relies on logs or traces left by update operations. The storage platform maintains a set of logical time stamps along with tombstones for deleted data items. When scanning the data store for changes, the client supplies a timestamp that defines a low watermark for detecting changes and a set of timestamps to prevent duplicate notifications. The application receives notification of all changes that have occurred since the time indicated by the low watermark.

コアビューにアクセスできる高度なアプリケーションでは、さらに、プライベートパラメータおよび重複フィルタテーブルを作成することにより潜在的に大きくなりうるアイテムの集合を監視するために必要なSQLステートメントの数を最適化し、低減することができる。リッチビューをサポートしなければならないような特別なニーズのあるアプリケーションでは、利用可能な変更追跡フレームワークを使用してデータ変更を監視し、そのプライベートスナップショットをリフレッシュすることができる。   Advanced applications that have access to the core view can also optimize and reduce the number of SQL statements needed to monitor the set of items that can potentially grow by creating private parameter and duplicate filter tables. it can. Applications with special needs that must support rich views can use the available change tracking framework to monitor data changes and refresh their private snapshots.

したがって、一実施形態では、ストレージプラットフォームは、以下でさらに詳しく説明するように、遅延イベント検出アプローチを実装するのが好ましい。   Accordingly, in one embodiment, the storage platform preferably implements a delayed event detection approach, as described in more detail below.

a)変更追跡
すべてのアイテム、拡張、およびアイテム関係定義は、一意的な識別子を伝える。変更追跡では、すべてのデータアイテムの作成、更新、および削除時刻を記録する論理的タイムスタンプの集合を維持する。ツームストーンエントリを使用して、削除済みデータアイテムを表す。
a) Change Tracking All item, extension, and item relationship definitions carry a unique identifier. Change tracking maintains a set of logical timestamps that record the creation, update, and deletion times of all data items. Tombstone entries are used to represent deleted data items.

アプリケーションではその情報を使用して、アプリケーションが最後にデータストアにアクセスした以降に特定のアイテム、アイテム拡張、またはアイテム関係が新しく追加されたか、更新されたか、または削除されたかどうかを効率よく監視する。以下の実施例は、このメカニズムを例示している。   The application uses that information to efficiently monitor whether a particular item, item extension, or item relationship has been newly added, updated, or deleted since the application last accessed the data store. . The following examples illustrate this mechanism.

Figure 2007521532
Figure 2007521532

削除されたすべてのアイテム、アイテム拡張、および関係は、対応するツームストーンテーブル内に記録される。テンプレートを以下に示す。   All deleted items, item extensions, and relationships are recorded in the corresponding tombstone table. The template is shown below.

Figure 2007521532
Figure 2007521532

効率上の理由からストレージプラットフォームは、アイテム、アイテム拡張、関係、およびパス名の大域的テーブルの集合を維持する。これらの大域的ルックアップテーブルは、データ範囲を効率よく監視し、割り当てられているタイムスタンプおよび型情報を取り出すためにアプリケーションによって使用することができる。   For efficiency reasons, the storage platform maintains a collection of global tables of items, item extensions, relationships, and path names. These global lookup tables can be used by applications to efficiently monitor data ranges and retrieve assigned timestamp and type information.

b)タイムスタンプ管理
論理的タイムスタンプは、データベースに対し「ローカル」である、つまり、ストレージプラットフォームボリュームである。タイムスタンプは、単調増加の64ビット値である。単一のタイムスタンプを保持することは、ストレージプラットフォームボリュームに最後に接続した後データ変更が発生したかどうかを検出するのに十分であることが多い。しかし、最も現実的なシナリオでは、重複のチェックのためさらにいくつかのタイムスタンプを保持する必要がある。理由について以下で説明する。
b) Timestamp management A logical time stamp is “local” to the database, ie, a storage platform volume. The time stamp is a monotonically increasing 64-bit value. Maintaining a single time stamp is often sufficient to detect whether a data change has occurred since the last connection to the storage platform volume. However, in the most realistic scenario, it is necessary to keep some more time stamps for duplicate checking. The reason will be described below.

リレーショナルデータベーステーブルは、物理的データ構造の集合、つまり、B−Tree、ヒープなどの上に構築される論理的抽象化である。タイムスタンプを新しく作成されたまたは更新されたレコードに割り当てることは、アトミックアクションではない。そのレコードを基礎をなすデータ構造体内に挿入することは、異なる時間に発生することがありえ、したがって、アプリケーションには、レコードが順不同に来るように見える。   A relational database table is a logical abstraction built on a collection of physical data structures, ie, B-Tree, heap, and the like. Assigning a timestamp to a newly created or updated record is not an atomic action. Inserting that record into the underlying data structure can occur at different times, and therefore it appears to the application that the records come out of order.

図14は、2つのトランザクションが両方とも新しいレコードを同じB−Tree内に挿入することを示している。トランザクションT3は、トランザクションT2の挿入がスケジュールされる前にレコードを挿入するので、B−Treeをスキャンするアプリケーションは、T2により挿入されたレコードの前にトランザクションT3により挿入されたレコードを見る可能性がある。したがって、リーダーは、時刻「10」まで作成されたすべてのレコードを見たと誤って仮定しうる。この問題を解決するために、データベースエンジン314は、すべての更新がコミットし、それぞれの基礎のデータ構造体内に挿入された低ウォーターマークまでを返す関数を提供する。上記の実施例では、返された低ウォーターマークは「5」となり、リーダーはトランザクションT2がコミットされる前に開始したと仮定する。データベースエンジン314により与えられる低ウォーターマークにより、アプリケーションは、データ変更についてデータベースまたはデータ範囲をスキャンするときにどのアイテムを無視するかを効率よく決定できる。一般に、ACIDトランザクションは、非常に短い時間の間続くと想定され、低ウォーターマークは、一番最近に分配されたタイムスタンプに非常に近いと予期される。長く続いているトランザクションが存在する場合、アプリケーションは、重複を検出し破棄するために個々のタイムスタンプを保持していなければならない可能性がある。   FIG. 14 shows that two transactions both insert a new record into the same B-Tree. Since transaction T3 inserts a record before the insertion of transaction T2 is scheduled, the application scanning the B-Tree may see a record inserted by transaction T3 before a record inserted by T2. is there. Thus, the reader may mistakenly assume that he has seen all records created up to time “10”. To solve this problem, the database engine 314 provides a function that returns all the updates committed to the low watermark inserted into the respective underlying data structure. In the above example, it is assumed that the returned low watermark is “5” and the leader started before transaction T2 was committed. The low watermark provided by the database engine 314 allows the application to efficiently determine which items to ignore when scanning the database or data range for data changes. In general, ACID transactions are assumed to last for a very short time, and a low watermark is expected to be very close to the most recently distributed timestamp. If there are long-lasting transactions, the application may have to keep individual timestamps to detect and discard duplicates.

c)データ変更検出−イベント検出
データストアのクエリを実行するときに、アプリケーションは低ウォーターマークを取得する。その後、アプリケーションはそのウォーターマークを使用して、作成、更新、または削除タイムスタンプが返された低ウォーターマークよりも大きいエントリがないかデータストアをスキャンする。図15は、このプロセスを例示している。
c) Data Change Detection-Event Detection When executing a data store query, the application gets a low watermark. The application then uses the watermark to scan the data store for entries that are larger than the low watermark that returned the create, update, or delete timestamp. FIG. 15 illustrates this process.

重複する通知を防止するために、アプリケーションでは、返された低ウォーターマークよりも大きいタイムスタンプを記憶しておき、それらを使用して重複を除去する。アプリケーションは、セッションレベルの一時テーブルを作成して、重複タイムスタンプの大きな集合を効率よく取り扱う。以下に示すように、selectステートメントを発行する前に、アプリケーションは、すでに返されているすべての重複タイムスタンプを挿入し、返された最後の低ウォーターマークよりも古いものを削除する。   To prevent duplicate notifications, the application stores timestamps that are larger than the returned low watermark and uses them to eliminate duplicates. Applications create session level temporary tables to efficiently handle large sets of duplicate timestamps. As shown below, before issuing the select statement, the application inserts all duplicate timestamps that have already been returned and deletes those older than the last low watermark that was returned.

Figure 2007521532
Figure 2007521532

G.同期
本発明の別の態様によれば、ストレージプラットフォームは、(i)ストレージプラットフォーム(それぞれ自データストア302を備える)の複数のインスタンスが柔軟な規則の集まりに従ってその内容の部分の同期をとれるようにし、(ii)本発明のストレージプラットフォームのデータストアと専用プロトコルを実装する他のデータソースとの同期をとるサードパーティ用のインフラストラクチャを備える同期サービス330を提供する。
G. Synchronization According to another aspect of the invention, the storage platform allows (i) multiple instances of the storage platform (each with its own data store 302) to synchronize its content portions according to a flexible set of rules. (Ii) provide a synchronization service 330 comprising a third party infrastructure for synchronizing the storage platform data store of the present invention with other data sources implementing a dedicated protocol.

ストレージプラットフォーム間の同期は、参加レプリカのグループのうちで実行される。例えば、図3を参照すると、おそらく異なるコンピュータシステム上で稼働しているであろう、ストレージプラットフォームの他のインスタンスの制御の下で、ストレージプラットフォーム300のデータストア302と他のリモートデータストア338との同期をとることが望ましい場合がある。このグループの全体的な帰属関係は、必ずしも、与えられた時刻与えられたレプリカに知られているわけではない。   Synchronization between storage platforms is performed in a group of participating replicas. For example, referring to FIG. 3, the storage platform 300's data store 302 and other remote data stores 338 may be under the control of other instances of the storage platform, possibly running on different computer systems. It may be desirable to synchronize. 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 processing 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.ストレージプラットフォームとストレージプラットフォームとの間の同期処理
本発明のストレージプラットフォームの同期処理サービス330の主要な適用は、ストレージプラットフォームの複数のインスタンスの同期をとることである(それぞれ、自データストアを有する)。同期処理サービスは、ストレージプラットフォームのスキーマレベルで動作する(データベースエンジン314の基礎のテーブルではなく)。したがって、例えば、「Scopes」は、後述のように同期を定義するために使用される。
1. Synchronization Processing Between Storage Platforms The main application of the storage platform synchronization processing service 330 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.

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

同期処理サービスは、一般的にはトランザクション境界を考慮しない。つまり、単一のトランザクションでストレージプラットフォームのデータストアに2つの変更が加えられた場合、それらの変更が他のすべてのレプリカに最小単位として適用されることは保証されない−一方が他方なしで現れることがある。この原理の例外は、同じトランザクションで2つの変更が同じItemに加えられた場合に、それらの変更は送信され、他のレプリカに最小単位として適用されることが保証されるという点である。したがって、Itemは、同期処理サービスの整合性ユニットである。   Synchronous processing services generally do not consider 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. Thus, Item 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 appropriate sync meaning in the storage platform schema (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)スキーマ注釈(annotation)
同期処理サービスの基本概念は、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 piece of a schema 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つの同時変更(これらの用語は、後のセクションで詳しく定義される)が同じ変更ユニットに対し加えられた場合、同期処理サービスは競合の通知を発し、その一方で、同時変更が異なる変更ユニットに加えられた場合、競合の通知は発せず、変更は自動的にマージされる。第3に、これは、システムによって保持されているメタデータの量に強い影響を及ぼす。同期処理サービスのメタデータの多くは、Change Unit毎に保持され、そのため、Change Unitsを小さくすれば、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 synchronous processing service issues a conflict notification, while the change units have different simultaneous changes. Will not be notified of the conflict and changes will be merged automatically. Third, this has a strong impact on 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 Change Units is reduced, the overhead of sync is increased.

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

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

Figure 2007521532
Figure 2007521532

c)同期設定
データの特定の部分の同期を維持したいストレージプラットフォームパートナのグループは、syncコミュニティと呼ばれる。コミュニティのメンバが同期を維持したい場合、必ずしも、まったく同じ方法でデータを表すわけではない、つまり、syncパートナは、同期処理をしているデータを変換することができる。
c) Synchronization settings A group of storage platform partners that wants to keep certain parts of the data synchronized, is called the sync community. If community members want to stay in sync, they don't necessarily represent the data in exactly the same way, i.e. 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 of 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
この要素は、このマッピングの対象となるコミュニティフォルダの名前を指定する。名前はフォルダの構文規則に従う。
/mappings/localFolder
この要素は、このマッピングの変換先のローカルフォルダの名前を指定する。名前はフォルダの構文規則に従う。フォルダは、マッピングが有効であるためにすでに存在していなければならない。このフォルダ内のアイテムは、このマッピングに従って同期対象とみなされる。
/mappings/transformations
この要素は、アイテムをコミュニティフォルダからローカルフォルダに、またその逆方向に変換する方法を定義する。存在しないか、または空の場合、変換は実行されない。特に、これは、IDがマッピングされないことを意味する。この構成は、主に、Folderのキャッシュを作成する際に使用される。
/mappings/transformations/mapIDs
この要素は、コミュニティIDを再利用するのではなく、新しく生成されたローカルIDがコミュニティフォルダからマッピングされたアイテムのすべてに割り当てられることを要求する。Sync Runtimeは、アイテムの変換、逆変換を行うIDマッピングを保持する。
/mappings/transformations/localRoot
この要素は、コミュニティフォルダ内のすべてのルートアイテムが指定されたルートの子にされることを要求する。
/mappings/runAs
この要素は、このマッピングに対する要求が処理される際の権限を制御する。存在しない場合、送信者が想定される。
/mappings/runAs/sender
この要素が存在すると、このマッピングへのメッセージの送信者は、偽装され、要求はその信用証明書に従って処理されなければならない。
(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
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
This element defines how to convert an item from a community folder to a local folder and vice versa. If it does not exist or is empty, no conversion is performed. In particular, this means that no ID is mapped. This configuration is mainly used when creating a folder cache.
/ mappings / 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 for performing item conversion and reverse conversion.
/ mappings / transformations / localRoot
This element requires that all root items in the community folder be children of the specified root.
/ 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
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)プロファイル
同期プロファイル(Sync Profile)は、同期をキックオフするために必要なパラメータ一式である。これは、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)競合回避処理(Conflict Handling)
同期処理サービスにおける競合回避処理は、(1)変更適用時に実行される、競合検出−このステップでは、変更が安全に適用可能か判別する、(2)自動競合解決およびログ記録−このステップでは(競合が検出された直後に実行される)、競合を解決できるか自動競合リゾルバに問い合わせがゆき、できなればオプションで競合をログに記録できる、および(3)競合検査および解決−このステップは、何らかの競合がログに記録されている場合に実行され、同期セッションの状況の外部で実行されるが、このときに、ログに記録された競合は解決され、ログから削除されるようにできる−の3つの段階に分けられる。
d) Conflict Handling
The conflict avoidance processing in the synchronous processing service is (1) Conflict detection executed at the time of applying the change-in this step, it is determined whether the change can be safely applied. (2) Automatic conflict resolution and logging. Run immediately after a conflict is detected), the auto-conflict resolver can be queried to resolve the conflict, optionally log the conflict, and (3) conflict checking and resolution-this step is Runs if any conflicts are logged, and runs outside the status of the sync session, at which time the logged conflicts can be resolved and removed from the log 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.

競合を変更ユニットのバージョン履歴における分岐点と考えると役立つ場合がある。変更ユニットの存続期間中に競合が発生しない場合、そのバージョン履歴は単純連鎖−それぞれの変更は前の変更の後に発生する−である。知識ベースの競合の場合、2つの変更は並行して発生し、そのため、連鎖は分割され、バージョンツリーとなる。   It may be useful to think of a conflict as a branch point in the version history of a change unit. If no conflicts occur during the lifetime 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 Independent changes may violate integrity constraints when applied together. For example, if two replicas try to create a file with the same name in the same directory, such a conflict may occur.

制約ベースの競合は、2つの独立した変更を伴うが(知識ベースの競合とまったく同様に)、同じ変更ユニットには影響を及ぼさない。むしろ、異なる変更ユニットに影響を及ぼすが、制約がそれらの間に存在する。   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.

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

(2)競合処理(Conflict Processing)
競合が検出されると、同期処理サービスは、(1)変更を拒絶し、それを送信者に送り返すアクション、(2)競合を競合ログに記録するアクション、または(3)競合を自動的に解決する3つのアクションのうちの1つ(同期プロファイル内の同期イニシエータにより選択される)を実行することができる。
(2) Conflict processing
When a conflict is detected, the synchronization processing service can either (1) reject the change and send it back to the sender, (2) the action to record the conflict in the conflict log, or (3) automatically resolve the conflict. One of the three actions to be performed (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 reach 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:変更のタイムスタンプに基づき変更ユニットに従って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 the synchronization processing service is generally independent of the clock value. 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)競合ログ作成(Conflict Logging)
非常に特殊な競合リゾルバとして、Conflict Loggerがある。同期処理サービスは、競合を型ConflictRecordのItemとしてログに記録する。これらの記録は、競合が生じているアイテムに再び関係する(アイテム自体が削除されていない限り)。それぞれの競合記録は、競合を引き起こした受け取った変更、競合のタイプ、更新−更新、更新−削除、削除−更新、挿入−挿入、または制約、および受け取った変更のバージョンとそれを送信するレプリカの知識を含む。ログに記録された競合は、後述のように、検査および解決のために使用できる。
(B) Conflict logging
There is a Conflict Logger as a very special competitive resolver. The synchronization processing service logs the conflict as an Item 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 such a situation occurs, the following events occur. (1) the conflict can be resolved at one replica and the resolution sent to the other replica, or (2) the conflict is automatically resolved on both replicas, or ( 3) Conflicts are resolved manually on both replicas (through a conflict check API).

必ず収束するように、同期処理サービスは、競合解決を他のレプリカに転送する。競合を解決する変更がレプリカに届くと、同期処理サービスは、この更新により解決されるログに含まれる競合記録を自動的に見つけ出し、それらを削除する。この意味で、一方のレプリカでの競合解決は他方のすべてのレプリカ上でのバインディングになる。   In order to ensure convergence, the synchronization processing service forwards the conflict resolution to the other replicas. When changes that resolve the conflict 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 to perform synchronization processing when given a synchronization profile as described above. You are encouraged to publish the Adapter 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 section, 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, storing this information on the client is inefficient and in some cases 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 be sent 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). Synchronous processing services provide a mechanism for storing this data, and Change Enumeration provides 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側でバックエンドから受け取った変更をローカルストレージプラットフォームに適用することができる。アダプタは、変更をストレージプラットフォームスキーマに変換することが期待される。
(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.

変更適用の主な機能は、競合を自動的に検出することである。ストレージプラットフォームとストレージプラットフォームとの同期の場合のように、競合は、お互いについての知識なしで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 an item in the data store can enumerate changes to that item,
Anyone who can write to an item in the data store can apply changes to that item,
Anyone who can extend a DataStore Item can associate synchronization metadata with that 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 synchronous 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 Monitoring a distributed community of replicas is a complex issue. The synchronous processing service can use a “sweep” algorithm to collect and distribute information about the status of the replica. 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.

H.従来のファイルシステムの相互運用性
上述のように、本発明のストレージプラットフォームは、少なくとも一部の実施形態では、コンピュータシステムのハードウェア/ソフトウェアインターフェースシステムのなくてはならない一部として具現化されることを意図されている。例えば、本発明のストレージプラットフォームは、Microsoft Windows(登録商標)ファミリのオペレーティングシステムなどのオペレーティングシステムの重要な一部として具現化されることができる。その適応力において、ストレージプラットフォームAPIは、アプリケーションプログラムがオペレーティングシステムとやり取りするために使用するオペレーティングシステムAPIの一部となる。そのため、ストレージプラットフォームは、アプリケーションプログラムがオペレーティングシステムに関する情報を格納するために使用する手段となり、したがって、ストレージプラットフォームのItemベースのデータモデルは、そのようなオペレーティングシステムの従来のファイルシステムの代替えとなる。例えば、Microsoft Windows(登録商標)ファミリのオペレーティングシステムで具現化されているように、ストレージプラットフォームでは、そのオペレーティングシステムで実装されているNTFSファイルシステムを置き換えることも可能である。今のところ、アプリケーションプログラムは、Windows(登録商標)ファミリのオペレーティングシステムにより公開されているWin32 APIを通じてNTFSファイルシステムのサービスにアクセスする。
H. Conventional File System Interoperability As described above, the storage platform of the present invention is embodied as an integral part of the hardware / software interface system of a computer system, at least in some embodiments. 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 its adaptability, the storage platform API becomes part of the operating system API that application programs use to interact with the operating system. As such, the storage platform becomes a means used by application programs to store information about the operating system, and thus the Item-based data model of the storage platform 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, the application program accesses the NTFS file system service through the Win32 API published by the Windows (registered trademark) family of operating systems.

しかし、NTFSファイルシステムを本発明のストレージプラットフォームで完全に置き換えるには、既存のWin32ベースのアプリケーションプログラムをコーディングし直す必要があること、またそのようなコーディングし直しは望ましくないことを理解したうえで、本発明のストレージプラットフォームでNTFSなどの既存のファイルシステムとの何らかの相互運用性を実現することが有益であろう。したがって、本発明の一実施形態では、ストレージプラットフォームにおいて、Win32プログラミングモデルに依存するアプリケーションプログラムはストレージプラットフォームのデータストアと従来のNTFSファイルシステムの両方の内容にアクセスすることができる。この目的のために、ストレージプラットフォームでは、簡単な相互運用性を高めるWin32の命名規則の上位集合となる命名規則を使用する。さらに、ストレージプラットフォームでは、Win32 APIを通じてストレージプラットフォームボリューム内に格納されているファイルおよびディレクトリのアクセスをサポートする。   However, to fully replace the NTFS file system with the storage platform of the present invention, it is necessary to recode existing Win32-based application programs and understand that such recoding is undesirable. It would be beneficial to achieve some interoperability with existing file systems such as NTFS with the storage platform of the present invention. Thus, in one embodiment of the present invention, in a storage platform, an application program 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.

1.相互運用性のためのモデル
本発明のこの態様によれば、上述の例示的な実施形態において、ストレージプラットフォームは、非ファイルアイテムおよびファイルアイテムを編成できる1つの名前空間を実装する。このモデルを使用すると、以下の利点が得られる。
1.データストア内のフォルダは、ファイルアイテムおよび非ファイルアイテムの両方を含むことができ、それにより、ファイルおよび図式化されたデータの単一の名前空間を提示できる。さらに、すべてのユーザデータに対する一様なセキュリティ、共有、および管理モデルも実現する。
2.ファイルおよび非ファイルアイテムは両方ともストレージプラットフォームAPIを使用してアクセス可能であり、このアプローチではファイルに対し特別な規則は何も適用されず、アプリケーション開発者がかかわるよりきれいなプログラミングモデルを提示する。
3.すべての名前空間オペレーションは、ストレージプラットフォームを通過し、したがって、同期的に取り扱われる。深いプロパティ格上げ(deep property promotion)(ファイルコンテンツから追い出される)はまだ非同期に発生するが、同期オペレーションではユーザおよびアプリケーションにとってかなり予測可能な環境が得られることに注意することが重要である。
1. Model for Interoperability According to this aspect of the invention, in the exemplary embodiment described above, the storage platform implements a single namespace that can organize non-file items and file items. Using this model, the following advantages are obtained:
1. Folders in the data store can contain both file items and non-file items, thereby presenting a single namespace for files and schematized data. It also implements a uniform security, sharing, and management model for all user data.
2. Both file and non-file items are accessible using the storage platform API, and this approach does not apply any special rules to the file, presenting a cleaner programming model involving the application developer.
3. All namespace operations go through the storage platform and are therefore handled synchronously. It is important to note that while deep property promotion (evicted from file content) still occurs asynchronously, synchronous operations provide a fairly predictable environment for users and applications.

このモデルの結果として、本発明の実施形態では、ストレージプラットフォームのデータストア内にマイグレートされないデータソースに対する検索機能を用意することができない。これは、取り外し可能媒体、リモートサーバ、およびローカルディスク上のファイルを含む。外部ファイルシステム内に常駐するアイテムについてストレージプラットフォーム内のプロキシアイテム(ショートカット+格上げされたメタデータ)を明らかにする同期アダプタが用意される。プロキシアイテムは、データソースの名前空間階層またはセキュリティに関してファイルを模倣しようとしない。   As a result of this model, embodiments of the present invention cannot provide a search function for data sources that are not migrated in the storage platform data store. This includes removable media, remote servers, and files on local disks. A synchronization adapter is provided that reveals proxy items (shortcut + promoted metadata) in the storage platform for items that reside in the external file system. Proxy items do not attempt to mimic files with respect to the namespace hierarchy or security of the data source.

ファイルと非ファイルコンテンツとの間の名前空間およびプログラミングモデル上に実現される対称性により、時間の経過とともにアプリケーションがファイルシステムからコンテンツをストレージプラットフォームのデータストア内のより構造化されたアイテムにマイグレートするより優れたパスが得られる。ストレージプラットフォームのデータストアでネイティブファイルアイテム型を実現することにより、アプリケーションプログラムは、Win32を介してこのデータを操作できる一方でファイルデータをストレージプラットフォーム内に移行することができる。最終的に、アプリケーションプログラムは、ストレージプラットフォームAPIに完全に移行し、ファイルではなくストレージプラットフォームのItemに関してそれらのデータを構造化することが可能になるであろう。   The symmetry implemented on the namespace and programming model between files and non-file content allows applications to migrate content from the file system to more structured items in the storage platform data store over time A better path can be obtained. By implementing the native file item type in the storage platform data store, the application program can manipulate this data via Win32 while migrating file data into the storage platform. Eventually, application programs will be able to fully migrate to the storage platform API and structure their data in terms of storage platform items rather than files.

2.データストアの機能
望むレベルの相互運用性を実現するために、一実施形態では、ストレージプラットフォームの以下のデータストア機能が実装される。
2. Data Store Functions To achieve the desired level of interoperability, in one embodiment, the following data store functions of the storage platform are implemented:

a)ボリュームではない
ストレージプラットフォームのデータストアは、独立したファイルシステムボリュームとして公開されない。ストレージプラットフォームでは、NTFS上で直接ホスティングされるFILESTREAMを利用する。そのため、ディスク上フォーマットに変更はなく、それにより、ストレージプラットフォームをボリュームレベルで新しいファイルシステムとして公開する必要がなくなる。
a) Not a volume The storage platform data store is not exposed as an independent file system volume. The storage platform uses FILESTREAM hosted directly on NTFS. Thus, there is no change in the on-disk format, thereby eliminating the need to expose the storage platform as a new file system at the volume level.

その代わりに、データストア(名前空間)がNTFSボリュームに対応する形で構築される。名前空間のこの部分を補助するデータベースおよびFILESTREAMは、ストレージプラットフォームのデータストアが関連付けられるNTFSボリューム上に配置される。システムボリュームに対応するデータストアも用意される。   Instead, a data store (name space) is constructed corresponding to the NTFS volume. The database and FILESTREAM that assist this part of the namespace are located on the NTFS volume with which the storage platform data store is associated. A data store corresponding to the system volume is also prepared.

b)ストア構造
ストアの構造は、実施例を見ると最もよくわかる。例えば、図16に例示されているような、HomeMachineという名前のマシンのシステムボリューム上のディレクトリツリーを考える。本発明のファイルシステム相互運用性機能により、c:\ドライブに対応して、例えば、「WinFSOnC」と呼ばれる、UNC共有を介してWin32 APIに公開されるストレージプラットフォームのデータストアがある。これにより、UNC名\\HomeMachine\WinFSOnCを介して関連付けられたデータストアにアクセスできるようになる。
b) Store structure The structure of the store is best seen in the examples. For example, consider a directory tree on the system volume of a machine named HomeMachine, as illustrated in FIG. With the file system interoperability function of the present invention, there is a storage platform data store corresponding to c: \ drive, for example, called “WinFSOnC”, which is exposed to Win32 API via UNC sharing. This makes it possible to access the associated data store via UNC name \\ HomeMachine \ WinFSOnC.

この実施形態では、ファイルおよび/またはフォルダは、NTFSからストレージプラットフォームに明示的にマイグレートする必要がある。したがって、ユーザがストレージプラットフォームに備えられているすべての付加的検索/分類機能を利用するためにMy Documentsフォルダをストレージプラットフォームのデータストア内に移動したい場合、階層は、図17に示されているように見えるであろう。これらのフォルダは、この実施例では、実際に移動されることに注意することが重要である。他の注意すべき点として、名前空間はストレージプラットフォーム内に移動され、実際のストリームはFILESTREAMとリネームされ、適切なポインタがストレージプラットフォーム内で結び付けられることが挙げられる。   In this embodiment, files and / or folders need to be explicitly migrated from NTFS to the storage platform. Thus, if the user wants to move the My Documents folder into the storage platform's data store in order to take advantage of all the additional search / classification features provided by the storage platform, the hierarchy is as shown in FIG. Will look. It is important to note that these folders are actually moved in this example. Another point to note is that the namespace is moved into the storage platform, the actual stream is renamed FILESTREAM, and an appropriate pointer is tied in the storage platform.

c)すべてのファイルがマイグレートされるわけではない
ユーザデータに対応する、またはストレージプラットフォームが備える検索および分類機能を必要とするファイルは、ストレージプラットフォームのデータストアにマイグレートすべき対象候補となる。アプリケーションプログラムとストレージプラットフォームとの互換性の問題を限定するために、本発明のストレージプラットフォームにマイグレートされるファイルの集合は、Microsft Windows(登録商標)オペレーティングシステムが使用されている状況では、Documents and Settingsディレクトリ内のMyDocumentsフォルダ、Internet Explorer(IE)Favorites、IE History、およびDesktop.iniファイル内のファイルに限定されるのが好ましい。Windows(登録商標)システムファイルのマイグレートは許されないことが好ましい。
c) Not all files are migrated Files that correspond to user data or that require search and classification capabilities provided by the storage platform are candidates for migration to the storage platform data store. In order to limit compatibility issues between application programs and storage platforms, the set of files migrated to the storage platform of the present invention is a Documents and in a situation where the Microsoft Windows (registered trademark) operating system is used. MyDocuments folder in the Settings directory, Internet Explorer (IE) Fabites, IE History, and Desktop. It is preferably limited to files in the ini file. Migrating Windows® system files is preferably not allowed.

d)NTFS名前空間でのストレージプラットフォームファイルへのアクセス
本明細書で説明されている実施形態では、ストレージプラットフォームにマイグレートされたファイルは、実線のファイルストリームがNTFSに格納されるとしても、NTFS名前空間を介してアクセスされないことが望ましい。こうすることで、多角的な実装から生じる考慮すべきロックおよびセキュリティの複雑な問題が回避される。
d) Accessing storage platform files in the NTFS namespace In the embodiment described herein, files migrated to the storage platform are not included in the NTFS name, even if the solid file stream is stored in NTFS. It is desirable not to be accessed through space. This avoids the complex locking and security issues that arise from multi-faceted implementations.

e)予期される名前空間/ドライブ文字
ストレージプラットフォーム内のファイルおよびフォルダへのアクセスは、\\<マシン名>\<WinfsShareName>の形式のUNC名を介して実行される。オペレーションにドライブ文字を必要とするアプリケーションのクラスについては、ドライブ文字をこのUNC名にマッピングすることができる。
e) Expected Namespace / Drive Letter Access to files and folders in the storage platform is performed via UNC names in the form of \\ <machine name> \ <WinfsShareName>. For classes of applications that require a drive letter for operation, the drive letter can be mapped to this UNC name.

I.ストレージプラットフォームAPI
上述のように、ストレージプラットフォームは、アプリケーションプログラム側で上述のストレージプラットフォームの機能および能力にアクセスし、データストアに格納されているアイテムにアクセスするために使用できるAPIを備える。このセクションでは、本発明のストレージプラットフォームのストレージプラットフォームAPIの一実施形態について説明する。
I. Storage platform API
As described above, the storage platform includes 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.

図19は、本発明の一実施形態による、ストレージプラットフォームAPIの基本アーキテクチャを例示する。ストレージプラットフォームAPIでは、SQLCIient1900を使用してローカルデータストア302とやり取りし、またSQLClient1900を使用してリモートデータストア(例えば、データストア338)とやり取りすることができる。ローカルストア302は、さらに、DQP(分散クエリプロセッサ)を使用するか、または上述のストレージプラットフォーム同期サービス(「Sync」)を通じて、リモートデータストア338ともやり取りできる。ストレージプラットフォームAPI322は、さらに、データストア通知用のブリッジ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 338) using SQL Client 1900. The local store 302 can also interact with the remote data store 338 using a DQP (distributed query processor) or through the storage platform synchronization service (“Sync”) described above. The storage platform API 322 further functions as a bridge API for data store notifications, passing application subscriptions to the notification engine 332 and routing notifications to applications (eg, applications 350a, 350b, or 350c) as described above. To do. 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.

1.概要
本発明のストレージプラットフォームAPIのこの実施形態のデータアクセスメカニズムでは、クエリ、ナビゲーション、アクション、イベントの4つの領域を取り扱う。
1. Overview The data access mechanism of this embodiment of the storage platform API of the present invention handles four areas: query, navigation, action, and event.

クエリ
一実施形態では、ストレージプラットフォームのデータストアは、リレーショナルデータベースエンジン314上に実装され、その結果、SQL言語の完全な表現力がストレージプラットフォームに内在する。より高い水準のクエリオブジェクトにより、ストアへのクエリを実行する簡素化されたモデルが実現されるが、ストレージの完全な表現力をカプセル化することはできない。
Query In one embodiment, the storage platform data store is implemented on the relational database engine 314 so that the full expressive power of the SQL language is inherent in the storage platform. Higher level query objects provide a simplified model for querying the store, but cannot encapsulate the full expressive power of storage.

ナビゲーション
ストレージプラットフォームデータモデルは、基礎となるデータベース抽象化の上にリッチな拡張可能型システムを構築する。開発者にとっては、ストレージプラットフォームデータはクモの巣状に巡らされたアイテムである。ストレージプラットフォームAPIを使用することにより、フィルタ処理、関係、フォルダなどを介してアイテムからアイテムへのナビゲーションが可能になる。これは、基本SQLクエリよりも高い水準の抽象化であり、それと同時に、リッチなフィルタ処理およびナビゲーション機能をおなじみのCLRコーディングパターンとともに使用することができる。
The navigation storage platform data model builds a rich extensible system on top of the underlying database abstraction. For developers, storage platform data is a spider web item. Using the storage platform API allows item-to-item navigation through filtering, relationships, folders, and the like. This is a higher level of abstraction than the basic SQL query, while at the same time rich filtering and navigation functions can be used with familiar CLR coding patterns.

アクション
ストレージプラットフォームAPIは、すべてのアイテムに対する共通アクション−Create、Delete、Update−を公開し、これらは、オブジェクト上のメソッドとして公開される。さらに、SendMail、CheckFreeBusyなどのドメイン固有のアクションもメソッドとして利用可能である。APIフレームワークでは、追加アクションを定義することにより値を加えるためにISVで使用できる適切に定義されたパターンを使用する。
Action The storage platform API exposes common actions—Create, Delete, Update—for all items, which are exposed as methods on the object. Furthermore, domain-specific actions such as SendMail and CheckFreeBusy can also be used as methods. The API framework uses a well-defined pattern that can be used by ISVs to add values by defining additional actions.

イベント
ストレージプラットフォーム内のデータは、動的である。ストア内のデータが変更されたときにアプリケーションに反応させるために、このAPIではリッチイベンティング、サブスクリプション、および通知機能を開発者に公開する。
Data in the event storage platform is dynamic. The API exposes rich eventing, subscriptions, and notifications to developers to react to applications when data in the store changes.

2.命名およびスコープ
名前空間と命名とを区別すると好都合である。名前空間という用語は、通常使用されている用法では、あるシステム内で使用可能なすべての名前の集合を指す。このシステムは、XMLスキーマ、プログラム、Web、すべてのftpサイト(およびそのコンテンツ)の集合などとすることが可能である。命名は、名前空間内の注目するすべてのエンティティに一意的な名前を割り当てるために使用されるプロセスまたはアルゴリズムである。したがって、命名は、名前空間内の与えられたユニットを明確に参照することが望ましいため重要である。したがって、本明細書で使用されているように用語「名前空間」は、ユニバース内のすべてのストレージプラットフォームのインスタンスで使用可能なすべての名前の集合を指す。アイテムは、ストレージプラットフォーム名前空間内の名前付きエンティティである。UNC命名規約を使用して、アイテム名の一意性を保証する。ユニバース内のすべてのストレージプラットフォームのデータストアの中のすべてのアイテムは、UNC名でアドレス指定することが可能である。
2. Naming and scope It is convenient to distinguish namespaces from naming. The term namespace refers to the set of all names available in a system in the usual usage. The system can be an XML schema, program, Web, a collection of all ftp sites (and their content), and so on. Naming is a process or algorithm used to assign unique names to all entities of interest in a namespace. Thus, naming is important because it is desirable to explicitly refer to a given unit within the namespace. Thus, as used herein, the term “namespace” refers to the collection of all names that are available on all storage platform instances in a universe. An item is a named entity in the storage platform namespace. Use the UNC naming convention to ensure uniqueness of item names. All items in the data store of all storage platforms in the universe can be addressed by UNC name.

ストレージプラットフォーム名前空間内の最高の組織レベルは、1つのサービスであり、これは単なるストレージプラットフォームのインスタンスである。組織の次のレベルは、ボリュームである。ボリュームは、アイテムの最大の自律的コンテナである。それぞれのストレージプラットフォームのインスタンスは、1つまたは複数のボリュームを含む。ボリューム内にはアイテムがある。アイテムは、ストレージプラットフォーム内のデータアトムである。   The highest organizational level within the storage platform namespace is a service, which is simply an instance of a storage platform. The next level of organization is volume. A volume is the largest autonomous container of items. Each storage platform instance includes one or more volumes. There are items in the volume. An item is a data atom in the storage platform.

現実世界のデータは、ほぼ常に、与えられたドメイン内で意味を持つ何らかのシステムに従って編成される。このようなすべてのデータ編成スキームの基礎にあるのが、われわれのデータのユニバースを複数の名前付きグループに分割するという概念である。上述のように、この概念は、Folderの概念によりストレージプラットフォーム内にモデル化される。Folderは、特別な型のItemであり、Containment FolderとVirtual Folderの2種類のFolderがある。   Real-world data is almost always organized according to some system that makes sense within a given domain. Underlying all such data organization schemes is the concept of dividing our universe of data into multiple named groups. As mentioned above, this concept is modeled in the storage platform by the Folder concept. Folder is a special type of Item, and there are two types of Folders: Continent Folder and Virtual Folder.

図18を参照すると、Containment Folderは他のItemとの保持Relationshipsを含むアイテムであり、ファイルシステムのフォルダの共通概念の等価物である。それぞれのItemは少なくとも1つの包含フォルダ内に「含まれる」。   Referring to FIG. 18, the Containment 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.

Virtual Folderは、Itemのコレクションを編成するより動的な方法であり、Itemの集合が与えられた単なる名前である−この集合は、クエリにより明示的に列挙されるか、または指定される。Virtual Folderは、それ自体、Itemであり、Itemの集合との(非保持)Relationshipsを表すものと考えられる。   A Virtual Folder is a more dynamic way of organizing a collection of Items, where a set of Items is simply a name given—this set is explicitly enumerated or specified by the query. The Virtual Folder is itself an Item, and is considered to represent a (non-retaining) Relationship with a set of Items.

ときには、包含というより緊密な概念をモデル化する必要があり、例えば、電子メールメッセージ内に埋め込まれたWordドキュメントは、ある意味で、例えば、フォルダ内に格納されたファイルに比べて、コンテナに緊密にバインドされている。この概念は、Embedded Itemの概念により表される。Embedded Itemは、他のItemを参照する特別な種類の関係を持ち、参照される側のItemは、包含する側のItemのコンテクスト内でのみバインドまたは他の何らかの方法で操作されうる。   Sometimes it is necessary to model a tighter concept of containment, for example, Word documents embedded within an email message are in some ways closer to the container than, for example, files stored in folders. Bound to This concept is represented by the concept of an Embedded Item. An Embedded Item has a special kind of relationship that references other Items, and the referenced Item can be bound or otherwise manipulated only within the context of the containing Item.

最後に、ストレージプラットフォームは、カテゴリの概念をItemおよびElementsの分類方法として実現する。ストレージプラットフォーム内のすべてのItemまたはElementは、1つまたは複数のカテゴリと関連付けることができる。カテゴリは、本質的に、Item/Elementにタグ付けされた単なる名前である。この名前は、検索で使用することができる。ストレージプラットフォームのデータモデルにより、カテゴリの階層を定義することができ、したがって、データをツリー形式で分類することができる。   Finally, the storage platform implements the concept of categories as a classification method for Items and Elements. Every Item or Element in the storage platform can be associated with one or more categories. A category is essentially just a name tagged Item / Element. This name can be used in searches. The storage platform's data model allows the category hierarchy to be defined and thus the data can be classified in a tree format.

アイテムの曖昧さのない名前は、3つ組み(<serviceName>,<volumeID>,<ItemID>)である。いくつかのアイテム(特に、FoldersおよびVirtual Folders)は、他のアイテムのコレクションである。これにより、アイテムを識別する代替え手段が得られる(<serviceName>,<volumeID>,<itemPath>)。   The unambiguous name of the item is a triple (<serviceName>, <volumeID>, <ItemID>). Some items (especially Folders and Virtual Folders) are collections of other items. This provides an alternative means for identifying the item (<serviceName>, <volumeID>, <itemPath>).

ストレージプラットフォーム名は、サービスコンテクストの概念を含み、サービスコンテクストは、ペア(<volumeName>,<path>)にマッピングされる名前である。これは、アイテムまたはアイテムの集合−例えば、フォルダ、仮想フォルダなど−を識別する。サービスコンテクストの概念を使用することにより、ストレージプラットフォーム名前空間内のアイテムに対するUNC名は、\\<serviceName>\<serviceContext>\<itemPath>となる。   The storage platform name includes the concept of service context, and the service context is a name mapped to a pair (<volumeName>, <path>). This identifies an item or collection of items--for example, a folder, a virtual folder, etc. Using the service context concept, the UNC name for an item in the storage platform namespace is \\ <serviceName> \ <serviceContext> \ <itemPath>.

ユーザは、サービスコンテクストの作成および削除を実行できる。また、それぞれのボリューム内のルートディレクトリは、事前定義されたコンテクストvolume−name$を持つ。
ItemContextは、指定されたパス内に存続するItemに返される結果を制限することによりクエリ(例えば、Findオペレーション)のスコープを設定する。
The user can create and delete service contexts. Also, the root directory in each volume has a predefined context volume-name $.
ItemContext sets the scope of a query (eg, Find operation) by limiting the results returned to Items that persist in the specified path.

3.ストレージプラットフォームAPIコンポーネント
図20は、本発明のこの実施形態による、ストレージプラットフォームAPIの様々なコンポーネントの概略を表している。ストレージプラットフォームAPIは、(1)ストレージプラットフォーム要素およびアイテム型を表す、データクラス2002、(2)オブジェクト永続性を管理し、サポートクラス2006を提供する、ランタイムフレームワーク2004、および(3)ストレージプラットフォームスキーマからCLRクラスを生成するために使用される、ツール2008の各コンポーネントからなる。
3. Storage Platform API Component FIG. 20 represents an overview of the various components of the storage platform API according to this embodiment of the invention. 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

本発明の一態様によれば、設計時に、スキーマ作成者は、ドメインメソッド2012のスキーマドキュメント2010およびコードをストレージプラットフォームAPI設計時ツール2008の集合にサブミットする。これらのツールは、クライアントサイドデータクラス2002およびストアスキーマ2014を生成し、そのスキーマに対応するクラス定義2016を格納する。「ドメイン」は、特定のスキーマを指し、例えば、Contactsスキーマ内のクラスに対するドメインメソッドなどを意味する。これらのデータクラス2002は、ストレージプラットフォームデータを操作するために、ストレージプラットフォームAPIランタイムフレームワーククラス2006に呼応して、アプリケーション開発者により実行時に使用される。   According to one aspect of the invention, at design time, the schema creator submits the schema document 2010 and code for the domain method 2012 to a collection of storage platform API design time tools 2008. These tools generate a client side data class 2002 and a store schema 2014 and store a class definition 2016 corresponding to the schema. “Domain” refers to a specific schema, and means, for example, a domain method for a class in the Contacts schema. These data classes 2002 are used at run time by application developers in response to the storage platform API runtime framework class 2006 to manipulate storage platform data.

本発明のストレージプラットフォームAPIの様々な態様を例示することを目的として、例示的なContactsスキーマに基づき実施例を提示する。この例示的なスキーマの図式表現が図21Aおよび21Bに示されている。   For purposes of illustrating various aspects of the storage platform API of the present invention, an example is presented based on an exemplary Contacts schema. A schematic representation of this exemplary schema is shown in FIGS. 21A and 21B.

4.データクラス
本発明の一態様によれば、ストレージプラットフォームのデータストア内のそれぞれのItem、Item Extension、およびElement型は、それぞれのRelationshipとともに、ストレージプラットフォームAPI内に対応するクラスを持つ。おおざっぱに言うと、その型のフィールドは、そのクラスのフィールドにマッピングされるということである。ストレージプラットフォーム内のそれぞれのアイテム、アイテム拡張、および要素は、ストレージプラットフォームAPI内の対応するクラスのオブジェクトとして使用することができる。開発者は、それらのオブジェクトに対するクエリ、作成、修正、または削除を行うことができる。
4). Data Classes According to one aspect of the present invention, each Item, Item Extension, and Element type in the storage platform data store has a corresponding class in the storage platform API along with its respective Relationship. Roughly speaking, a field of that type is mapped to a field of that class. Each item, item extension, and element in the storage platform can be used as a corresponding class of object in the storage platform API. Developers can query, create, modify, or delete those objects.

ストレージプラットフォームは、スキーマの初期集合を含む。それぞれのスキーマは、ItemおよびElement型の集合、およびRelationshipsの集合を定義する。以下は、これらのスキーマエンティティからデータクラスを生成するアルゴリズムの一実施形態である。
それぞれのスキーマSについて、
S内のそれぞれのItem Iについて、System.Storage.S.Iという名前のクラスが生成される。このクラスは以下のメンバを持つ。
・ 新しいアイテムの初期フォルダおよび名前を指定するために使用されるコンストラクタを含む、オーバーロードされたコンストラクタ。
・ I内のそれぞれのフィールドのプロパティ。フィールドが多値の場合、プロパティは、対応するElement型のコレクションになる。
・ フィルタとマッチする複数のアイテムを見つけるオーバーロードされた静的メソッド(例えば、「FindAll」という名前のメソッド)。
・ フィルタとマッチする単一のアイテムを見つけるオーバーロードされた静的メソッド(例えば、「FindOne」という名前のメソッド)。
・ idを与えられたアイテムを見つける静的メソッド(例えば、「FindByID」という名前のメソッド)。
・ ItemContextに関して名前を与えられたアイテムを見つける静的メソッド(例えば、「FindByName」という名前のメソッド)。
・ アイテムへの変更を保存するメソッド(例えば、「Update」という名前のメソッド)。
・ アイテムの新しいインスタンスを作成するオーバーロードされた静的なCreateメソッド。これらのメソッドを使用することにより、アイテムの初期フォルダを様々な方法で指定することができる。
The storage platform includes an initial set of schemas. Each schema defines a set of Item and Element types, and a set of Relationships. The following is one embodiment of an algorithm for generating data classes from these schema entities.
For each schema S
For each Item I in S, System. Storage. S. A class named I is created. This class has the following members:
An overloaded constructor that contains a constructor used to specify the initial folder and name for the new item.
• Properties of each field in I. If the field is multi-valued, the property is a corresponding Element type collection.
An overloaded static method that finds multiple items that match the filter (eg, a method named “FindAll”).
An overloaded static method that finds a single item that matches the filter (eg, a method named “FindOne”).
A static method that finds an item given an id (eg, a method named “FindByID”).
A static method that finds an item named for an ItemContext (eg, a method named “FindByName”).
A method that saves changes to the item (eg, a method named “Update”).
An overloaded static Create method that creates a new instance of the item. By using these methods, the initial folder of items can be specified in various ways.

S内のそれぞれのElement Eについて、System.Storage.S.Eという名前のクラスが生成される。このクラスは以下のメンバを持つ。
・ E内のそれぞれのフィールドのプロパティ。フィールドが多値の場合、プロパティは、対応するElement型のコレクションになる。
For each Element E in S, System. Storage. S. A class named E is created. This class has the following members:
• Properties of each field in E. If the field is multi-valued, the property is a corresponding Element type collection.

S内のそれぞれのElement Eについて、System.Storage.S.ECollectionという名前のクラスが生成される。このクラスは、強く型付けされているコレクションクラスについての一般的な.NET Frameworkガイドラインに従う。Relationshipベースの要素型について、このクラスは、さらに、以下のメンバも含む。
・ コレクションがソースロール内に出現するアイテムを暗黙のうちに含むフィルタにマッチする複数のItemオブジェクトを見つけるオーバーロードされたメソッド。これらのオーバーロードは、Item子型に基づいてフィルタ処理を行えるものを含む(例えば、「FindAllTargetItem」という名前のメソッド)。
・ コレクションがソースロール内に出現するアイテムを暗黙のうちに含むフィルタにマッチする単一のItemオブジェクトを見つけるオーバーロードされたメソッド。これらのオーバーロードは、Item子型に基づいてフィルタ処理を行えるものを含む(例えば、「FindOneTargetItem」という名前のメソッド)。
・ コレクションがソースロール内に出現するアイテムを暗黙のうちに含むフィルタにマッチするネストされた要素型のオブジェクトを見つけるオーバーロードされたメソッド(例えば、「FindAllRelationships」という名前のメソッド)。
・ コレクションがソースロール内に出現するアイテムを暗黙のうちに含むフィルタにマッチするネストされた要素型のオブジェクトを見つけるオーバーロードされたメソッド(例えば、「FindAlIRelationshipsForTarget」という名前のメソッド)。
・ コレクションがソースロール内に出現するアイテムを暗黙のうちに含むフィルタにマッチするネストされた要素型の単一オブジェクトを見つけるオーバーロードされたメソッド(例えば、「FindOneRelationship」という名前のメソッド)。
・ コレクションがソースロール内に出現するアイテムを暗黙のうちに含むフィルタにマッチするネストされた要素型の単一オブジェクトを見つけるオーバーロードされたメソッド(例えば、「FindOneRelationshipForTarget」という名前のメソッド)。
For each Element E in S, System. Storage. S. A class named ECollection is generated. This class is general for strongly typed collection classes. Follow NET Framework guidelines. For Relationship-based element types, this class also includes the following members:
An overloaded method that finds multiple Item objects that match a filter whose collection implicitly contains items that appear in the source role. These overloads include those that can be filtered based on the Item child type (eg, a method named “FindAllTargetItem”).
An overloaded method that finds a single Item object that matches a filter whose collection implicitly contains items that appear in the source role. These overloads include those that can be filtered based on the Item child type (eg, a method named “FindOneTargetItem”).
An overloaded method (eg, a method named “FindAllRelationships”) that finds a nested element type object that matches a filter whose collection implicitly contains items that appear in the source role.
An overloaded method that finds a nested element type object that matches a filter whose collection implicitly includes items that appear in the source role (eg, a method named “FindAlIRlationshipsForTarget”).
Overloaded methods that find a single object of a nested element type that matches a filter whose collection implicitly includes items that appear in the source role (eg, a method named “FindOneRelationship”).
An overloaded method that finds a single object of a nested element type that matches a filter whose collection implicitly includes items that appear in the source role (eg, a method named “FindOneRelationshipForTarget”).

S内のRelationship Rについて、System.Storage.S.Rという名前のクラスが生成される。このクラスは、一方または両方の関係ロールで1つの終点フィールドを指定するかどうかに応じて、1つまたは2つのサブクラスを持つ。
クラスは、さらに、作成されたそれぞれのItem Extensionについてもこのようにして生成される。
For Relationship R in S, see System. Storage. S. A class named R is created. This class has one or two subclasses depending on whether one or both relationship roles specify one endpoint field.
The class is further generated in this way for each created Item Extension.

データクラスは、System.Storage.<schemaName>名前空間内に存在するが、ただし、<schemaName>は、Contacts、Filesなどの対応するスキーマの名前である。例えば、Contactsスキーマに対応するすべてのクラスは、System.Storage.Contacts名前空間内にある。   The data class is System. Storage. <SchemaName> exists in the namespace, where <schemaName> is the name of the corresponding schema such as Contacts, Files, etc. For example, all classes corresponding to the Contacts schema are System. Storage. It is in the Contacts namespace.

例えば、図21Aおよび21Bを参照すると、Contactsスキーマにより、System.Storage.Contact名前空間に含まれる以下のクラスが得られることがわかる。
・ Item:Item、Folder、WellKnownFolder、LocalMachineDataFolder、UserDataFolder、Principal、Service、GroupService、PersonService、PresenceService、ContactService、ADService、Person、User、Group、Organization、HouseHold
・ Elements:NestedElementBase、NestedElement、IdentityKey、SecurityID、EAddress、ContactEAddress、TelephoneNumber、SMTPEAddress、InstantMessagingAddress、Template、Profile、FullName、FamilyEvent、BasicPresence、Windows(登録商標)Presence、Relationship、TemplateRelationship、LocationRelationship、FamilyEventLocationRelationship、HouseHoldLocationRelationship、RoleOccupancy、EmployeeData、GroupMemberShip、OrganizationLocationRelationship、HouseHoldMemberData、FamilyData、SpouseData、ChildData
For example, referring to FIGS. 21A and 21B, System. Storage. It can be seen that the following classes included in the Contact namespace are obtained.
Item: Item, Folder, WellKnownFolder, LocalMachineDataFolder, UserDataFolder, Principal, Service, GroupService, PersonService, Presence, GroupService, PersonService, PersonService.
· Elements: NestedElementBase, NestedElement, IdentityKey, SecurityID, EAddress, ContactEAddress, TelephoneNumber, SMTPEAddress, InstantMessagingAddress, Template, Profile, FullName, FamilyEvent, BasicPresence, Windows (registered trademark) Presence, Relationship, TemplateRelationship, LocationRelationship, FamilyEventLocationRelationship, HouseHoldLocationRelationship , RoleOccupancy, EmployeeData, GroupMemberShip, OrganizationLocationRelationship, HouseHoldMemberData, FamilyData, SpouseData, ChildData

さらに例えば、Contactsスキーマで定義されているような、Person型の詳細構造体は、以下のXMLで示されている。   Further, for example, the detailed structure of the Person type as defined in the Contacts schema is represented by the following XML.

Figure 2007521532
Figure 2007521532

この型により、以下のクラスが得られる(パブリックメンバのみが示されている)。   This type yields the following class (only public members are shown):

Figure 2007521532
Figure 2007521532

Figure 2007521532
Figure 2007521532

さらに他の実施例では、Contactsスキーマで定義されているような、TelephoneNumber型の詳細構造体は、以下のXMLで示されている。   In yet another embodiment, the detailed structure of the TelephoneNumber type, as defined in the Contacts schema, is shown in the following XML.

Figure 2007521532
Figure 2007521532

この型により、以下のクラスが得られる(パブリックメンバのみが示されている)。   This type yields the following class (only public members are shown):

Figure 2007521532
Figure 2007521532

与えられたスキーマから生じるクラスの階層は、直接、そのスキーマ内の型の階層を反映する。例えば、Contactsスキーマで定義されているItem型を考察する(図21Aおよび図21Bを参照)。ストレージプラットフォームAPIにおいてこれに対応するクラス階層は以下の通りであろう。   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 (see FIGS. 21A and 21B). The corresponding class hierarchy in the storage platform API would be as follows:

Figure 2007521532
Figure 2007521532

さらに他のスキーマ、つまりシステム内のすべてのオーディオ/ビデオ媒体(リッピングされたオーディオファイル、オーディオCD、DVD、ホームビデオなど)を表すことができるスキーマにより、ユーザ/アプリケーションは様々な種類のオーディオ/ビデオ媒体の格納、編成、検索、および操作を行うことができる。この基本媒体ドキュメントスキーマは、任意の媒体を表せる十分な汎用性を持ち、この基本スキーマの拡張は、オーディオおよびビデオ媒体について別々にドメイン特有のプロパティを扱うように設計されている。このスキーマ、および他の多くのものは、Core Schemaの下で直接的または間接的に動作するように想定されている。   With other schemas, that is, schemas that can represent all audio / video media in the system (ripped audio files, audio CDs, DVDs, home videos, etc.), users / applications can have different types of audio / video Media storage, organization, retrieval, and manipulation can be performed. This basic media document schema is versatile enough to represent any media, and this basic schema extension is designed to handle domain-specific properties separately for audio and video media. This schema, and many others, are assumed to work directly or indirectly under the Core Schema.

5.ランタイムフレームワーク
基本ストレージプラットフォームAPIプログラミングモデルはオブジェクト永続性である。アプリケーションプログラム(または「アプリケーション」)は、ストア上で検索を実行し、ストア内のデータを表すオブジェクトを取り出す。アプリケーションは、取り出されたオブジェクトを修正するか、または新しいオブジェクトを作成し、その後、その変更をストア内に伝搬させる。このプロセスは、ItemContextオブジェクトにより管理される。検索は、ItemSearcherオブジェクトを使用して実行され、検索結果は、FindResultオブジェクトを介してアクセス可能である。
5). Runtime Framework The basic storage platform API programming model is object persistence. An application program (or “application”) performs a search on the store and retrieves an object representing the data in the store. The application modifies the retrieved object or creates a new object and then propagates the change into the store. This process is managed by an ItemContext object. The search is performed using the ItemSearcher object, and the search results are accessible via the FindResult object.

a)ランタイムフレームワーククラス
ストレージプラットフォームAPIの発明の他の態様によれば、ランタイムフレームワークは、データクラスのオペレーションをサポートする多数のクラスを実装する。これらのフレームワーククラスは、データクラスに対するビヘイビアの共通の集合を定義し、データクラスとあわせて、ストレージプラットフォームAPIの基本プログラミングモデルを実現する。ランタイムフレームワーク内のクラスは、System.Storage名前空間に属す。この実施形態では、フレームワーククラスは、主要クラスとしてItemContext、ItemSearcher、およびFindResultを含む。他の小さなクラス、enum値、およびデリゲートも提供することができる。
a) Runtime Framework Classes According to another aspect of the storage platform API invention, the runtime framework implements a number of classes that support the operation of data classes. These framework classes define a common set of behaviors for the data class and, together with the data class, implement the basic programming model of the storage platform API. The classes in the runtime framework are System. It belongs to the Storage namespace. In this embodiment, the framework classes include ItemContext, ItemSearcher, and FindResult as the main classes. Other small classes, enum values, and delegates can also be provided.

(1)ItemContext
ItemContextオブジェクトは、(i)アプリケーションプログラムで検索したいアイテムドメインの集合を表し、(ii)ストレージプラットフォームから取り出されたデータの状態を表すそれぞれのオブジェクトの状態情報を保持し、(iii)ストレージプラットフォームとやり取りするときに使用されるトランザクションおよびストレージプラットフォームと相互運用可能なファイルシステムを管理する。
(1) ItemContext
The ItemContext object represents (i) a set of item domains to be searched by an application program, (ii) holds state information of each object representing the state of data retrieved from the storage platform, and (iii) interacts with the storage platform When managing file systems that are interoperable with the transaction and storage platforms used.

ItemContextは、オブジェクト永続性エンジンとして、以下のサービスを提供する。
1.ストアから読み込まれたデータを複数のオブジェクト内に逆シリアライズする。
2.オブジェクトIDを保持する(アイテムが与えられた場合にそのアイテムがクエリの結果に何回含まれていようと同じオブジェクトを使用してそのアイテムを表す)。
3.オブジェクト状態を追跡する。
ItemContext provides the following services as an object persistence engine.
1. Deserialize data read from the store into multiple objects.
2. Holds the object ID (when an item is given, it represents the item using the same object no matter how many times the item is included in the query results).
3. Track object state.

ItemContextは、さらに、ストレージプラットフォームに固有の多数のサービスを実行する。
1.変更を永続するために必要なストレージプラットフォーム更新グラムオペレーションを生成し、実行する。
2.必要に応じて複数のデータストアへの接続を作成し、参照関係の継ぎ目のないナビゲーションを可能にし、複数ドメイン検索から取り出されたオブジェクトを修正し、保存するようにできる。
3.ファイルで裏付けされたアイテムは、そのアイテムを表す(複数の)オブジェクトへの変更が保存されるときに適切に更新されることを保証する。
4.複数のストレージプラットフォーム接続にまたがるトランザクション、およびファイルで裏付けされたアイテム内に格納されているデータおよびファイルストリームプロパティを更新するときには、トランザクションが行われるファイルシステムを管理する。
5.ストレージプラットフォームの関係の意味、ファイルで裏付けされたアイテム、およびストリーム型付けプロパティを考慮するアイテム作成、コピー、移動、および削除オペレーションを実行する。
ItemContext also performs a number of services specific to the storage platform.
1. Generate and execute the storage platform updategram operations necessary to make the changes permanent.
2. You can create connections to multiple data stores as needed to allow seamless navigation of reference relationships, modify and save objects retrieved from multi-domain searches.
3. An item backed by a file is guaranteed to be properly updated when changes to the object (s) representing that item are saved.
4). When updating transactions across multiple storage platform connections, and updating data and file stream properties stored in items backed by files, the file system in which the transaction takes place is managed.
5). Perform item creation, copy, move, and delete operations that take into account the meaning of storage platform relationships, items backed by files, and stream typing properties.

付録Aに、一実施形態による、ItemContextクラスのソースコードリスティングを掲載する。   Appendix A lists the source code listing of the ItemContext class, according to one embodiment.

(2)ItemSearcher
ItemSearcherクラスは、単純な検索をサポートし、Itemオブジェクト全体、Itemオブジェクトのストリーム、またはItemから射影された値のストリームを返す。ItemSearcherは、これらすべてに共通のコア機能、つまりターゲット型およびそのターゲット型に適用されるパラメータ化されたフィルタの概念をカプセル化したものである。また、ItemSearcherを使用することにより、同じ検索が複数の型で実行される場合にサーチャーを、最適化として、プリコンパイルする、つまり準備しておくことができる。付録Bには、一実施形態による、ItemSearcherクラスおよび複数の密接に関係するクラスのソースコードリスティングを掲載する。
(2) ItemSearcher
The ItemSearcher class supports simple searches and returns an entire Item object, a stream of Item objects, or a stream of values projected from an Item. ItemSearcher encapsulates the core functionality common to all of these, namely the concept of a target type and a parameterized filter applied to the target type. Also, by using ItemSearcher, the searcher can be precompiled, that is, prepared as an optimization when the same search is executed in a plurality of types. Appendix B lists the source code listing of the ItemSearcher class and multiple closely related classes, according to one embodiment.

(a)ターゲット型
検索ターゲット型は、ItemSearcherを構築するときに設定される。ターゲット型は、データストアによりクエリ可能なエクステントにマッピングされる。特に、これは、スキーマ化されたビューとともにアイテム、関係、およびアイテム拡張型にマッピングされるCLR型である。
(A) Target type The search target type is set when an ItemSearcher is constructed. The target type is mapped to an extent that can be queried by the data store. In particular, this is a CLR type that is mapped to items, relationships, and item extension types with a schematized view.

ItemContext.GetSearcherメソッドを使用してサーチャーを取り出す場合、サーチャーのターゲット型は、パラメータとして指定される。アイテム、関係、またはアイテム拡張型(Person.GetSearcher)に対し静的なGetSearcherメソッドが呼び出される場合、ターゲット型は、そのアイテム、関係、またはアイテム拡張型である。   ItemContext. When retrieving a searcher using the GetSearcher method, the target type of the searcher is specified as a parameter. When a static GetSearcher method is called for an item, relationship, or item extension type (Person.GetSearcher), the target type is that item, relationship, or item extension type.

ItemSearcherで与えられる検索式(例えば、「search filter and through find」オプションまたは射影定義)は、常に、その検索ターゲット型に関係する。これらの式は、ターゲット型のプロパティ(ネストされた要素のプロパティを含む)を指定することができ、また他のところで説明されているような関係およびアイテム拡張への結合を指定することができる。   A search expression (eg, “search filter and through find” option or projection definition) given in ItemSearcher always relates to its search target type. These expressions can specify target type properties (including nested element properties) and can specify associations to relationships and item extensions as described elsewhere.

検索ターゲット型は、読み取り専用プロパティ(例えば、ItemSearcher.Typeプロパティ)を介して使用可能にされる。   The search target type is made available via a read-only property (eg, ItemSearcher.Type property).

(b)フィルタ
ItemSearcherは、検索で使用されるフィルタを定義するフィルタを指定するプロパティ(例えば、SearchExpressionオブジェクトのコレクションとして「Filters」という名前が付けられているプロパティ)を含む。このコレクション内のすべてのフィルタは、検索が実行されるときに、論理および演算子を使用して結合される。フィルタは、パラメータ参照を含むことができる。パラメータ値は、Parametersプロパティを通じて指定される。
(B) Filter ItemSearcher includes a property (for example, a property named “Filters” as a collection of SearchExpression objects) that specifies a filter that defines the filter used in the search. All filters in this collection are combined using logic and operators when the search is performed. The filter can include parameter references. The parameter value is specified through the Parameters property.

(c)検索の準備
同じ検索が、場合によってはパラメータ変更のみで、繰り返し実行される状況では、検索をプリコンパイルする、つまり準備しておくことにより、パフォーマンスをある程度改善することが可能である。これは、ItemSearcher上のprepareメソッドの集合で実行される(例えば、たぶん「PrepareFind」という名前の1つまたは複数のItemを返すFindを準備するメソッド、およびたぶん「PrepareProject」という名前の射影を返すFindを準備するメソッド)。例えば、次のようである。
(C) Preparation for search In a situation where the same search is repeatedly executed by changing only the parameters in some cases, it is possible to improve the performance to some extent by pre-compiling, that is, preparing the search. This is done with a set of prepare methods on ItemSearcher (eg, a method that prepares a Find that returns one or more Items named “PrepareFind”, and a Find that returns a projection named “PrepareProject”. Method to prepare). For example, it is as follows.

Figure 2007521532
Figure 2007521532

(d)検索オプション
単純検索に適用することができるオプションは多数ある。これらは、例えば、FindOptionsオブジェクトで指定し、Findメソッドに渡すことができる。例えば、次のようである。
(D) Search options There are many options that can be applied to simple searches. These can be specified by, for example, a FindOptions object and passed to the Find method. For example, it is as follows.

Figure 2007521532
Figure 2007521532

都合のよいことに、並べ替えオプションも、Findメソッドに直接渡すことができる。   Conveniently, reordering options can also be passed directly to the Find method.

Figure 2007521532
Figure 2007521532

DelayLoadオプションは、検索結果が取り出されるときに大きなバイナリプロパティの値がロードされるか、または参照されるまでロードが遅らされるかを決定する。MaxResultsオプションは、返される結果の最大数を決定する。これは、SQLクエリでTOPを指定することに相当する。並べ替えとともに使用するのが最も多い。   The DelayLoad option determines whether a large binary property value is loaded when a search result is retrieved or is loaded until it is referenced. The MaxResults option determines the maximum number of results returned. This is equivalent to specifying TOP in the SQL query. Most often used with sorting.

一連のSortOptionオブジェクトを指定することができる(例えば、FindOptions.SortOptionsプロパティを使用する)。検索結果は、第1のSortOptionオブジェクトにより指定された通りに並べ替えられ、その後、第2のSortOptionオブジェクトにより指定された通りに並べ替えられ、というように続く。SortOptionでは、並べ替えに使用されるプロパティを示す検索式を指定する。この式は、以下のうちの1つを指定する。
1.検索ターゲット型のスカラープロパティ、
2.単一値プロパティをトラバースすることにより検索ターゲット型から到達可能なネストされた要素内のスカラープロパティ、または
3.有効な引数を持つ集計関数の結果(例えば、多値プロパティまたは関係をトラバースすることにより検索ターゲット型から到達可能なネストされた要素内のスカラープロパティに適用されるMax)。
A series of SortOption objects can be specified (eg, using the FindOptions.SortOptions property). The search results are sorted as specified by the first SortOption object, then sorted as specified by the second SortOption object, and so on. In SortOption, a search expression indicating a property used for sorting is designated. This expression specifies one of the following:
1. A scalar property of the search target type,
2. 2. a scalar property in a nested element that is reachable from the search target type by traversing a single value property, or The result of an aggregate function with valid arguments (eg, Max applied to a scalar property in a nested element that is reachable from the search target type by traversing a multi-value property or relationship).

例えば、検索ターゲット型がSystem.Storage.Contact.Personであると仮定すると、
1.「Birthdate」−有効、birthdateはPerson型のスカラープロパティである。
2.「PersonalNames.Surname」−無効、PersonalNamesは多値プロパティであり、集計関数は使用されていない。
3.「Count(PersonalNames)」−有効、PersonalNamesのカウント。
4.「Case(Contact.MemberOfHousehold).Household.HouseholdEAddresses.StartDate」−無効、集計関数なしで関係および多値プロパティを使用する。
5.「Max(Cast(Contact.MemberOfHousehold).Household.HouseholdEAddresses.StartDate)」−有効、一番最近の家庭の電子メールアドレス開始日。
For example, if the search target type is System. Storage. Contact. Assuming that it is Person,
1. “Birthdate” —Valid, birthdate is a scalar property of the Person type.
2. “PersonalNames.Surname” —Invalid, PersonalNames is a multi-valued property and no aggregation function is used.
3. "Count (PersonalNames)"-Valid, PersonalNames count.
4). “Case (Contact.MemberOfHousehold) .Household.HouseholdEAddresses.StartDate” —Invalid, use relations and multivalued properties without an aggregate function.
5). “Max (Cast (Contact.MemberOfHousehold) .Household.HouseholdEAddresses.StartDate)” — Valid, most recent home email address start date.

(3)アイテム結果ストリーム(「FindResult」)
ItemSearcherは(例えば、FindAllメソッドを通じて)、検索(例えば、「FindResult」オブジェクト)により返されるオブジェクトにアクセスするために使用することができるオブジェクトを返す。付録Cには、一実施形態による、FindResultクラスおよび複数の密接に関係するクラスのソースコードリスティングを掲載する。
(3) Item result stream (“FindResult”)
ItemSearcher (eg, through the FindAll method) returns an object that can be used to access the object returned by the search (eg, “FindResult” object). Appendix C lists the source code listing of the FindResult class and several closely related classes, according to one embodiment.

FindResultオブジェクトから結果を得るには、IObjectReader(およびIAsyncObjectReader)により定義されたリーダーパターンを使用することと、IEnumerableおよびIEnumeratorにより定義されたような列挙子パターンを使用することの2つ異なる方法がある。列挙子パターンは、CLRでは標準であり、C#のforeachのような言語構文をサポートする。例えば、次のようである。   There are two different ways to get results from a FindResult object: using the reader pattern defined by IObjectReader (and IAsyncObjectReader) and using the enumerator pattern as defined by IEnumerable and IEnumerator. Enumerator patterns are standard in CLR and support language syntax such as C # foreach. For example, it is as follows.

Figure 2007521532
Figure 2007521532

リーダーパターンがサポートされているのは、これにより、場合によってはデータコピーをなくすことで結果の処理効率を高めることができるからである。例えば、次のようである。   The leader pattern is supported because it can increase the processing efficiency of the result, possibly by eliminating data copying. For example, it is as follows.

Figure 2007521532
Figure 2007521532

さらに、リーダーパターンは、非同期オペレーションをサポートする。   In addition, the leader pattern supports asynchronous operations.

Figure 2007521532
Figure 2007521532

この実施形態では、必要なくなったらFindResultを閉じなければならない。これは、Closeメソッドを呼び出すか、またはステートメントを使用するC#などの言語構文を使用することにより実行できる。例えば、次のようである。   In this embodiment, FindResult must be closed when no longer needed. This can be done by calling the Close method or by using a language syntax such as C # that uses a statement. For example, it is as follows.

Figure 2007521532
Figure 2007521532

b)動作中のランタイムフレームワーク
図22は、動作中のランタイムフレームワークを例示している。ランタイムフレームワークは以下のように動作する。
1.アプリケーション350a、350b、または350cは、ストレージプラットフォーム内のアイテムにバインドする。
2.フレームワーク2004は、バインドされたアイテムに対応するItemContextオブジェクト2202を作成し、アプリケーションに返す。
3.アプリケーションは、このItemContext上でFindをサブミットして、Itemのコレクションを取得し、返されるコレクションは、概念上オブジェクトグラフ2204となる(関係により)。
4.アプリケーションは、データを変更、削除、および挿入する。
5.アプリケーションは、Update()メソッドを呼び出して変更を保存する。
b) Runtime framework in operation 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.

c)共通プログラミングパターン
この節では、ストレージプラットフォームAPIフレームワーククラスを使用してデータストア内のアイテムを操作する方法の様々な実施例を取りあげる。
c) Common Programming Patterns This section gives various examples of how to manipulate items in a data store using the storage platform API framework classes.

(1)ItemContextオブジェクトを開く、閉じる
アプリケーションは、例えば、静的なItemContext.Openを呼び出し、ItemContextに関連付けられるアイテムドメインを識別する1つまたは複数のパスを供給することにより、データストアを対話操作するために使用するItemContextオブジェクトを取得する。アイテムドメインは、ItemContextを使用して実行される検索をスコープに設定し、そのドメインアイテムおよびそのアイテムに含まれるアイテムのみが検索対象になるようにする。実施例は、以下の通りである。
(1) Opening and closing an ItemContext object An application can be, for example, a static ItemContext. Obtain an ItemContext object that is used to interact with the data store by calling Open and supplying one or more paths that identify the item domain associated with the ItemContext. The item domain sets a search executed using ItemContext as a scope so that only the domain item and the items included in the item are searched. Examples are as follows.

ローカルコンピュータ上のDefaultStoreストレージプラットフォーム共有を使用してItemContextを開く   Open ItemContext using the DefaultStore storage platform share on the local computer

Figure 2007521532
与えられたストレージプラットフォーム共有を使用してItemContextを開く
Figure 2007521532
Open an ItemContext using the given storage platform share

Figure 2007521532
ストレージプラットフォーム共有の下のアイテムを使用してItemContextを開く
Figure 2007521532
Open ItemContext using an item under Storage Platform Sharing

Figure 2007521532
複数のアイテムドメインを使用してItemContextを開く
Figure 2007521532
Open an ItemContext using multiple item domains

Figure 2007521532
Figure 2007521532

ItemContextは、必要なくなったら、閉じなければならない。
ItemContextを明示的に閉じる
The ItemContext must be closed when it is no longer needed.
Explicitly close ItemContext

Figure 2007521532
ItemContextを使用してusingステートメントを閉じる
Figure 2007521532
Use itemContext to close the using statement

Figure 2007521532
Figure 2007521532

(2)オブジェクトの検索
本発明の他の態様によれば、ストレージプラットフォームAPIは、アプリケーションプログラマが基礎のデータベースエンジンのクエリ言語の詳細を気にせずに、データストア内のアイテムの様々なプロパティに基づいて、クエリを形成するために使用できるようにする簡略化されたクエリモデルを備える。
(2) Object Search In accordance with another aspect of the present invention, the storage platform API is based on various properties of items in the data store without the application programmer having to worry about the details of the underlying database engine query language. A simplified query model that can be used to form a query.

アプリケーションは、ItemContext.GetSearcherメソッドによって返されるItemSearcherオブジェクトを使用してItemContextが開かれたときに指定されたドメイン間で検索を実行することができる。検索結果にアクセスするには、FindResultオブジェクトを使用する。以下の実施例では以下の宣言を仮定する。   The application is ItemContext. A search can be performed between the specified domains when the ItemContext is opened using the ItemSearcher object returned by the GetSearcher method. Use the FindResult object to access the search results. The following example assumes the following declaration:

Figure 2007521532
Figure 2007521532

基本検索パターンは、GetSearcherメソッドを呼び出すことによりItemContextから取り出されたItemSearcherオブジェクトを使用することを伴う。
与えられた型のすべてのアイテムを検索する
The basic search pattern entails using an ItemSearcher object retrieved from the ItemContext by calling the GetSearcher method.
Find all items of a given type

Figure 2007521532
フィルタ条件を満たす与えられた型のアイテムを検索する
Figure 2007521532
Search for items of the given type that satisfy the filter condition

Figure 2007521532
フィルタ文字列内でパラメータを使用する
Figure 2007521532
Use parameters in filter strings

Figure 2007521532
与えられた型を持ち、フィルタ条件を満たす関係を検索する
Figure 2007521532
Search for a relationship that has the given type and satisfies the filter condition

Figure 2007521532
与えられた型を持ち、フィルタ条件を満たす関係を持つアイテムを検索する
Figure 2007521532
Search for items that have a given type and have a relationship that satisfies the filter condition

Figure 2007521532
与えられた型を持ち、フィルタ条件を満たすアイテム拡張を検索する
Figure 2007521532
Search for item extensions that have the given type and satisfy the filter criteria

Figure 2007521532
与えられた型を持ち、フィルタ条件を満たすアイテム拡張を持つアイテムを検索する
Figure 2007521532
Search for items with the given type and item extensions that meet the filter criteria

Figure 2007521532
Figure 2007521532

(a)検索オプション
検索を実行する際に、並べ替え、遅延ロード、および結果の数の制限を含む、様々なオプションを指定することができる。
検索結果を並べ替える
(A) Search options Various options can be specified when performing a search, including sorting, lazy loading, and limiting the number of results.
Sort search results

Figure 2007521532
結果カウントを制限する
Figure 2007521532
Limit result count

Figure 2007521532
Figure 2007521532

(b)FindOneおよびFindOnly
ときには第1の結果のみを取り出すことが有用な場合があり、特に並べ替え条件を指定する場合である。さらに、ある種の検索は、ただ1つのオブジェクト返すことが予期され、オブジェクトをまったく返さないことは予期されない。
1つのオブジェクトを検索する
(B) FindOne and FindOnly
Sometimes it may be useful to retrieve only the first result, especially when a sort condition is specified. In addition, certain searches are expected to return only one object and are not expected to return any objects.
Search for one object

Figure 2007521532
常に存在することが予期される単一オブジェクトを検索する
Figure 2007521532
Find a single object that is expected to always exist

Figure 2007521532
Figure 2007521532

(c)ItemContextのショートカットを検索する
単純検索の実行をできる限り簡単にするItemContext上のショートカットメソッドも多数ある。
ItemContext.FindAllショートカットを使用して検索する
(C) Retrieving ItemContext shortcuts There are also a number of shortcut methods on ItemContext that make performing a simple search as simple as possible.
ItemContext. Search using the FindAll shortcut

Figure 2007521532
ItemContext.FindOneショートカットを使用して検索する
Figure 2007521532
ItemContext. Search using the FindOne shortcut

Figure 2007521532
Figure 2007521532

(d)IDまたはパスで検索する
さらに、アイテム、関係、およびアイテム拡張は、その(複数の)idを与えることにより取り出すことができる。アイテムは、さらに、パスによっても取り出せる。
(複数の)idを与えてアイテム、関係、およびアイテム拡張を取得する
(D) Search by ID or path In addition, items, relationships, and item extensions can be retrieved by giving their id (s). Items can also be removed by pass.
Get item, relationship, and item extension given id (s)

Figure 2007521532
パスを与えてアイテムを取得する
Figure 2007521532
Get an item by giving a path

Figure 2007521532
Figure 2007521532

(e)GetSearcherパターン
他のオブジェクトのコンテクストで、または特定のパラメータとともに、検索を実行するヘルパメソッドを用意することが望ましい場所がストレージプラットフォームAPI内に多数ある。GetSearcherパターンを使用することで、これらのシナリオが可能になる。APIには多数のGetSearcherメソッドが用意されている。それぞれ、与えられた検索を実行するように事前に構成されたItemSearcherを返す。例えば、次のようである。
(E) GetSearcher pattern There are many places in the storage platform API where it is desirable to provide helper methods to perform searches in the context of other objects or with specific parameters. These scenarios are possible by using the GetSearcher pattern. The API provides a number of GetSearcher methods. Each returns an ItemSearcher that is preconfigured to perform the given search. For example, it is as follows.

Figure 2007521532
検索を実行する前に追加フィルタを付加することができる。
Figure 2007521532
Additional filters can be added before performing the search.

Figure 2007521532
結果をどのような形で望むかを選択することができる。
Figure 2007521532
You can choose how you want the results.

Figure 2007521532
Figure 2007521532

(3)ストアの更新
オブジェクトは、検索により取り出された後、必要に応じてアプリケーションにより修正することができる。新しいオブジェクトも作成し、既存のオブジェクトに関連付けることもできる。アプリケーションは、論理グループを形成するすべての変更を加えた後に、ItemContext.Updateを呼び出して、ストアへの変更を永続的にする。本発明のストレージプラットフォームAPIのさらに他の態様によれば、このAPIは、アプリケーションプログラムによりアイテムに加えられた変更を集めてから、それらをデータストアが実装されているデータベースエンジン(または何らかの種類のストレージエンジン)により要求される正しい更新に編成する。これにより、アプリケーションプログラマは、データストア更新の複雑な部分をAPIに任せつつ、メモリ中のアイテムに変更を加えることができる。
単一アイテムへの変更を保存する
(3) Store update After an object is retrieved by searching, it can be modified by an application as needed. You can also create new objects and associate them with existing objects. After making all the changes that make up the logical group, the application changes the ItemContext. Call Update to make changes to the store permanent. According to yet another aspect of the storage platform API of the present invention, the API collects changes made to items by the application program and then stores them in the database engine (or some kind of storage). Organize into the correct updates required by the engine). This allows application programmers to make changes to items in memory while leaving the complex part of data store updates to the API.
Save changes to a single item

Figure 2007521532
複数アイテムへの変更を保存する
Figure 2007521532
Save changes to multiple items

Figure 2007521532
新しいアイテムを作成する
Figure 2007521532
Create a new item

Figure 2007521532
関係(および可能ならターゲットアイテム)を削除する
Figure 2007521532
Delete relationship (and target item if possible)

Figure 2007521532
アイテム拡張を追加する
Figure 2007521532
Add item extensions

Figure 2007521532
アイテム拡張を削除する
Figure 2007521532
Remove item extensions

Figure 2007521532
Figure 2007521532

6.セキュリティ
上の節II.E(セキュリティ)を参照すると、ストレージプラットフォームAPIのこの実施形態では、ストア内のアイテムに関連付けられているセキュリティポリシーの取り出しおよび修正を行うためにItem Context上で使用可能なメソッドが5つある。これらは以下の通りである。
1.GetItemSecurity、
2.SetItemSecurity、
3.GetPathSecurity、
4.SetPathSecurity、
5.GetEffectiveItemSecurity。
6). Security Section II. Referring to E (security), in this embodiment of the storage platform API, there are five methods that can be used on the Item Context to retrieve and modify security policies associated with items in the store. These are as follows.
1. GetItemSecurity,
2. SetItemSecurity,
3. GetPathSecurity,
4). SetPathSecurity,
5). GetEffectiveItemSecurity.

GetItemSecurityおよびSetItemSecurityは、アイテムに関連付けられた明示的なACLを取り出し、修正するメカニズムを備える。このACLは、アイテムへの存在するパスとは無関係であり、このアイテムをターゲットとして持つ保持関係とは無関係に動作する。このため、管理者は、そうしたい場合にアイテムへの存在するパスとは無関係にアイテムセキュリティについて推論することができる。   GetItemSecurity and SetItemSecurity provide a mechanism to retrieve and modify the explicit ACL associated with an item. This ACL is independent of the existing path to the item, and operates regardless of the holding relationship having this item as a target. Thus, an administrator can infer about item security when he wants to do so, regardless of the existing path to the item.

GetPathSecurityおよびSetPathSecurityは、他のフォルダからの保持関係があるため、アイテム上に存在するACLを取り出し、修正するメカニズムを備える。このACLは、考察対象のパスにそってそのアイテムへの様々な祖先のACLから、そのパスについて用意されている場合に明示的なACLとともに構成される。このACLと前の場合のACLとの違いは、このACLは、明示的なアイテムACLがアイテムに対する保持関係とは無関係でありながら対応する保持関係が存在している限りにおいて動作する点である。   Since GetPathSecurity and SetPathSecurity have a retention relationship from other folders, they have a mechanism for extracting and correcting ACLs existing on items. This ACL is configured with an explicit ACL if prepared for the path from the ACLs of various ancestors to the item along the path under consideration. The difference between this ACL and the ACL in the previous case is that this ACL operates as long as there is a corresponding holding relationship, although the explicit item ACL is independent of the holding relationship to the item.

SetItemSecurityおよびSetPathSecurityでアイテム上に設定できるACLは、継承可能な、オブジェクト特有のACEに制約される。これらは、継承としてマークされているACEを含むことはできない。   ACLs that can be set on items with SetItemSecurity and SetPathSecurity are restricted to inheritable, object-specific ACEs. They cannot contain ACEs that are marked as inherited.

GetEffectiveItemSecurityは、様々なパスベースのACLだけでなく、アイテム上の明示的なACLをも取り出す。これは、与えられたアイテムに影響を及ぼす許可ポリシーを反映する。   GetEffectiveItemSecurity retrieves explicit ACLs on items as well as various path-based ACLs. This reflects a permission policy that affects a given item.

7.関係のサポート
上述のように、ストレージプラットフォームのデータモデルは、アイテムを互いに関係付けられる「関係」を定義する。スキーマのデータクラスが生成されるときに、関係の型毎に以下のクラスが生成される。
1.関係自体を表すクラス。このクラスは、Relationshipクラスから派生され、その関係型に特有のメンバを含む。
2.強く型付けされた「仮想」コレクションクラス。このクラスは、VirtualRelationshipCollectionから派生され、これにより、関係インスタンスの作成および削除を実行することができる。
7). Relationship Support As mentioned above, the storage platform data model defines "relationships" that allow items to be related to each other. When a schema data class is generated, the following classes are generated for each type of relationship.
1. A class that represents the relationship itself. This class is derived from the Relationship class and contains members specific to its relation type.
2. A strongly typed “virtual” collection class. This class is derived from VirtualRelationshipCollection, which allows creation and deletion of relationship instances.

この節では、ストレージプラットフォームAPI内の関係のサポートについて説明する。   This section describes support for relationships within the storage platform API.

a)基本関係型
ストレージプラットフォームAPIは、関係APIの基礎を形成するSystem.Storage名前空間内に多数の型を提供する。これらは以下の通りである。
1.Relationship−すべての関係クラスの基本型
2.VirtualRelationshipCollection−すべての関係コレクションの基本型
3.ItemReference、ItemIdReference、ItemPathReference−アイテム参照型を表し、それらの型の間の関係は図11に例示されている。
a) Basic Relational Type The storage platform API is the System. Provides a number of types in the Storage namespace. These are as follows.
1. Relationship-the basic type of all relationship classes 2. VirtualRelationshipCollection-the basic type of all relationship collections. ItemReference, ItemIdReference, ItemPathReference—represents an item reference type, and the relationship between these types is illustrated in FIG.

(1)関係クラス
以下は、関係クラスの基本クラスである。
public abstract class Relationship : StoreObject
{
//既定値で作成する。
protected Relationship (ItemIDReference targetItemReference);
//関係コレクションに追加されたことを関係に通知する。オブジェクトは、コレクションに問い合わせを行い、ソースアイテム、アイテムコンテクストなどを決定する。
internal AddedToCollection (VirtualRelationshipCollection collection);
//関係のid。
public RelationshipId RelationshipId {get;}
//ソースアイテムのid。
public ItemId SourceItemId {get;}
//ソースアイテムを取得する。
public Item SourceItem {get;}
//ターゲットアイテムへの参照。
public ItemIdReference TargetItemReference {get;}
//ターゲットアイテムを取得する(TargetItemReference.GetItem()を呼び出す)。
public Item TargetItem {get;}
//ItemContextがすでにターゲットアイテムのドメインとの接続を持っているか判定する(TargetItemReference.IsDomainConnectedを呼び出す)。
public bool IsTargetDomainConnected {get;}
//名前空間内のターゲットアイテムの名前。名前は、すべてのソースアイテムの保持関係にわたって一意的でなければならない。
public OptionalValue<string> Name {get; set;}
//これは保持関係または参照関係かを決定する。
public OptionalValue<bool> IsOwned {get; set;}
(1) Relation class The following is the base class of relation classes.
public abstract class Relationship: StoreObject
{
// Create with default values.
protected Relationship (ItemIDReference targetItemReference);
// Notify the relationship that it has been added to the relationship collection. The object queries the collection to determine the source item, item context, etc.
internal AddedToCollection (VirtualRelationshipCollection collection);
// Relationship id.
public RelationshipId RelationshipId {get;}
// Source item id.
public ItemId SourceItemId {get;}
// Get the source item.
public Item SourceItem {get;}
// Reference to the target item.
public ItemIdReference TargetItemReference {get;}
// Get the target item (call TargetItemReference.GetItem ()).
public Item TargetItem {get;}
// Determine whether the ItemContext already has a connection with the target item's domain (call TargetItemReference.IsDomainConnected).
public bool IsTargetDomainConnected {get;}
// Name of the target item in the namespace. The name must be unique across all source item retention relationships.
public OptionalValue <string> Name {get; set;}
// Determine if this is a retention or reference relationship.
public OptionalValue <bool> IsOwned {get; set;}

(2)ItemReferenceクラス
以下は、アイテム参照型の基本クラスである。
public abstract class ItemReference : NestedElement
{
//既定値で作成する。
protected ItemReference();
//参照されているアイテムを返す。
public virtual Item GetItem ();
//参照されたアイテムのドメインへの接続が確立されたかどうかを判定する。
public virtual bool IsDomainConnected ();
}
(2) ItemReference class The following is an item reference type base class.
public abstract class ItemReference: NestedElement
{
// Create with default values.
protected ItemReference ();
// Return the referenced item.
public virtual Item GetItem ();
// Determine if connection to the domain of the referenced item has been established.
public virtual bool IsDomainConnected ();
}

ItemReferenceオブジェクトは、アイテム参照自体が置かれているストアと異なるストア内に存在するアイテムを識別することができる。それぞれの派生型は、リモートストアへの参照の構築および使用方法を指定する。派生クラスにおけるGetItemおよびIsDomainConnectedの実装では、ItemContextの複数ドメインサポートを使用して、必要なドメインからアイテムをロードし、ドメインとの接続がすでに確立されているかどうかを判定する。   The ItemReference object can identify items that exist in a store different from the store in which the item reference itself is located. Each derived type specifies how to build and use a reference to a remote store. The implementation of GetItem and IsDomainConnected in a derived class uses ItemContext's multi-domain support to load items from the required domain and determine whether a connection with the domain has already been established.

(3)ItemIdReferenceクラス
以下は、ItemIdRefrenceクラス−ターゲットアイテムを識別するためにアイテムidを使用するItem参照−である。
public class ItemIdReference : ItemReference
{
//既定値で新しいItemIdReferenceを構築する。
public ItemIdReference ();
//指定されたアイテムへの新しいItemIdReferenceを構築する。Itemに関連付けられているドメインは、ロケータとして使用される。
public ItemIdReference (Item item);
//NULLロケータと与えられたターゲットアイテムidを使用して新しいItemIdReferenceを構築する。
public ItemIdReference (Itemld itemId);
//与えられたロケータとアイテムid値を使用して新しいItemIdReferenceを構築する。
public ItemIdReference (string locator, ItemId itemId);
//ターゲットアイテムのid。
public ItemId ItemId {get; set;}
//ドメイン内にターゲットアイテムを含むそのWinFSアイテムを識別するパス。NULLの場合、そのアイテムを含むドメインは知られていない。
public OptionalValue<string> Locator {get; set;}
//参照されたアイテムのドメインへの接続が確立されたかどうかを判定する。
public override bool IsDomainConnected();
//参照されているアイテムを取り出す。
public override Item Getitem ();
}
(3) ItemIdReference class The following is an ItemIdReference class-an Item reference that uses an item id to identify a target item.
public class ItemIdReference: ItemReference
{
// Construct a new ItemIdReference with default values.
public ItemIdReference ();
// Construct a new ItemIdReference for the specified item. The domain associated with the Item is used as a locator.
public ItemIdReference (Item item);
// Construct a new ItemIdReference using a NULL locator and the given target item id.
public ItemIdReference (Itemld itemId);
// Construct a new ItemIdReference using the given locator and item id value.
public ItemIdReference (string locator, ItemId itemId);
// id of the target item.
public ItemId ItemId {get; set;}
// Path that identifies the WinFS item that contains the target item in the domain. In the case of NULL, the domain containing the item is not known.
public OptionalValue <string> Locator {get; set;}
// Determine if connection to the domain of the referenced item has been established.
public override bool IsDomainConnected ();
// Retrieve the referenced item.
public override Item Getitem ();
}

GetItemおよびIsDomainConnectedでは、ItemContextの複数ドメインサポートを使用して、必要なドメインからアイテムをロードし、ドメインとの接続がすでに確立されているかどうかを判定する。この機能は、まだ実装されていない。   GetItem and IsDomainConnected use ItemContext multi-domain support to load items from the required domain and determine if a connection with the domain has already been established. This feature is not yet implemented.

(4)ItemPathReferenceクラス
ItemPathReferenceクラスは、パスを使用してターゲットアイテムを識別するアイテム参照である。このクラスに対するコードは以下の通りである。
public class ItemPathReference : ItemReference
{
//既定値でアイテムパス参照を構築する。
public ItemPathReference ();
//ロケータなしで、与えられたパスを付けて、アイテムパス参照を構築する。
public ItemPathReference (string path);
//与えられたロケータおよびパスを付けて、アイテムパス参照を構築する。
public ItemPathReference (string locator, string path);
//ドメイン内にターゲットアイテムを含むそのWinFSアイテムを識別するパス。
public OptionalValue<string> Locator {get; set;}
//ロケータにより指定されたアイテムドメインに関するターゲットアイテムのパス。
public string Path {get; set;}
//参照されたアイテムのドメインへの接続が確立されたかどうかを判定する。
public override bool IsDomainConnected();
//参照されているアイテムを取り出す。
public override Item GetItem();
}
(4) ItemPathReference class The ItemPathReference class is an item reference that identifies a target item using a path. The code for this class is as follows:
public class ItemPathReference: ItemReference
{
// Construct an item path reference with default values.
public ItemPathReference ();
// Construct an item path reference with the given path without a locator.
public ItemPathReference (string path);
// Construct an item path reference with the given locator and path.
public ItemPathReference (string locator, string path);
// Path that identifies the WinFS item that contains the target item in the domain.
public OptionalValue <string> Locator {get; set;}
// The target item path for the item domain specified by the locator.
public string Path {get; set;}
// Determine if connection to the domain of the referenced item has been established.
public override bool IsDomainConnected ();
// Retrieve the referenced item.
public override Item GetItem ();
}

GetItemおよびIsDomainConnectedでは、ItemContextの複数ドメインサポートを使用して、必要なドメインからアイテムをロードし、ドメインとの接続がすでに確立されているかどうかを判定する。   GetItem and IsDomainConnected use ItemContext multi-domain support to load items from the required domain and determine if a connection with the domain has already been established.

(5)RelationshipId構造体
RelationshipId構造体は、関係id GUIDをカプセル化する。
public class RelationshipId
{
//新しい関係id GUIDを生成する。
public static RelationshipId NewRelationshipId ();
//新しい関係id GUIDで初期化する。
public RelationshipId();
//指定されたGUIDで初期化する。
public RelationshipId (Guid id);
//GUIDの文字列表現で初期化する。
public RelationshipId (string id);
//関係id GUIDの文字列表現を返す。
public override string ToString ();
//System.GuidインスタンスをRelationshipIdインスタンスに変換する。
public static implicit operator RelationshipId (Guid guid);
//RelationshipIdインスタンスをSystem.Guidインスタンスに変換する。
public static implicit operator Guid (RelationshipId relationshipId);
}
(5) RelationshipId structure The RelationshipId structure encapsulates the relation id GUID.
public class RelationshipId
{
// Create a new relation id GUID.
public static RelationshipId NewRelationshipId ();
// Initialize with new relationship id GUID.
public RelationshipId ();
// Initialize with the specified GUID.
public RelationshipId (Guid id);
// Initialize with GUID string representation.
public RelationshipId (string id);
// Return the string representation of the relation id GUID.
public override string ToString ();
// System. Convert a Guid instance to a RelationshipId instance.
public static implicit operator RelationshipId (Guid guid);
// RelationshipId instance to System. Convert to a Guid instance.
public static implicit operator Guid (RelationshipId relationshipId);
}

この値型は、パラメータおよびプロパティが関係idとして強く型付けできるようにguidをラップする。関係idがNULL可能な場合には、OptionalValue<RelationshipId>を使用しなければならない。System.Guid.Emptyにより与えられるような空値は公開されない。RelationshipIdは、空の値では構築できない。既定のコンストラクタを使用してRelationshipIdを作成する場合、新しいGUIDが作成される。   This value type wraps the GUID so that parameters and properties can be strongly typed as relation ids. If the relationship id is nullable, then the OptionalValue <RelationshipId> must be used. System. Guid. Null values as given by Empty are not exposed. RelationshipId cannot be constructed with an empty value. When creating a RelationshipId using the default constructor, a new GUID is created.

(6)VirtualRelationshipCollectionクラス
VirtualRelationshipCollectionクラスは、データストアからのオブジェクト、それに加えて、コレクションに追加された新しいオブジェクトを含むが、ただし、ストアから削除されたオブジェクトを含まない、関係オブジェクトのコレクションを実装する。与えられたソースアイテムidを持つ指定された関係型のオブジェクトは、コレクションに含まれる。
(6) VirtualRelationshipCollection class The VirtualRelationshipCollection class implements a collection of relationship objects that includes objects from the data store plus any new objects that have been added to the collection, but do not include objects that have been removed from the store. Objects of the specified relationship type with the given source item id are included in the collection.

これは、それぞれの関係型について生成される関係コレクションクラスの基本クラスである。そのクラスは、与えられたアイテムの関係にアクセスし、その関係を操作しやすくするため、ソースアイテム型においてプロパティの型として使用することができる。   This is the base class for the relation collection class that is generated for each relation type. That class can be used as a property type in the source item type to access and manipulate the relationship of a given item.

VirtualRelationshipCollectionの内容を列挙するには、潜在的に多数の関係オブジェクトをストアからロードする必要がある。アプリケーションでは、コレクションの内容を列挙する前に関係をいくつロードできるかを決定するためにCountプロパティを使用すべきである。コレクションへのオブジェクトの追加およびコレクションからのオブジェクトの削除では、関係をストアからロードする必要がない。   To enumerate the contents of a VirtualRelationshipCollection, a potentially large number of relationship objects need to be loaded from the store. An application should use the Count property to determine how many relationships can be loaded before enumerating the contents of the collection. Adding objects to the collection and removing objects from the collection does not require the relationship to be loaded from the store.

効率を高めるため、VirtualRelationshipCollectionオブジェクトを使用してアイテムの関係すべてを列挙する代わりに特定の基準条件を満たす関係をアプリケーション側で検索することが好ましい。関係オブジェクトをコレクションに追加すると、ItemContext.Updateが呼び出されたときに表現されている関係がストア内に作成される。関係オブジェクトをコレクションから削除すると、ItemContext.Updateが呼び出されたときに表現されている関係がストア内で削除される。仮想コレクションは、そのアイテム上のItem.Relationshipsコレクションまたは他の関係コレクションを通じて関係オブジェクトが追加/削除されるかどうかに関係なくオブジェクトの正しい集合を含む。   In order to increase efficiency, it is preferable to search on the application side for a relationship that satisfies a specific criterion instead of enumerating all the item relationships using the VirtualRelationshipCollection object. Adding a relationship object to the collection causes ItemContext. The relationship expressed when Update is called is created in the store. When a relationship object is deleted from the collection, ItemContext. The relationship expressed when Update is called is deleted in the store. The virtual collection is the Item. Contains the correct set of objects regardless of whether the relationship objects are added / removed through the Relationships collection or other relationship collections.

以下のコードは、VirtualRelationshipCollectionクラスを定義する。
public abstract class VirtualRelationshipCollection : ICollection
{
//コレクションは、itemIdにより識別されたアイテムにより所有される指定された型の関係を含む。
protected VirtualRelationshipCollection (ItemContext itemContext, ItemId itemId, Type relationshipType);
//列挙子は、状態Insertedを持つオブジェクトに加えて状態Deletedを持つオブジェクトを除くストアからに取り出されたすべてのオブジェクトを返す。
public IEnumerator GetEnumerator ();
//列挙子により返されるであろう関係オブジェクトの数のカウントを返す。このカウントは、ストアからすべてのオブジェクトを取り出さなくても計算される。
public int Count {get;}
//常にfalseを返す。
public bool ICollection.lsSynchronized () {get;}
//常にこのオブジェクトを返す。
public object ICollection.SyncRoot {get;}
//ストア内で必要なオブジェクトを検索する。
public void Refresh ();
//指定された関係をコレクションに追加する。オブジェクトは、状態ConstructedまたはRemovedを持たなければならない。状態がConstructedであれば、状態はAddedに変更される。状態がRemovedであれば、状態は適宜RetrievedまたはModifiedに変更される。この関係のソースアイテムidは、コレクションが構築されたときに与えられたソースアイテムidと同じでなければならない。
protected void Add (Relationship relationship);
//指定された関係をコレクションから削除する。オブジェクトの状態は、Added、Retrieved、またはModifiedでなければならない。オブジェクトの状態がAddedの場合、これは、Constructedに設定される。オブジェクトの状態がRetrievedまたはModifiedの場合、これはRemovedに設定される。この関係のソースアイテムidは、コレクションが構築されたときに与えられたソースアイテムidと同じでなければならない。
protected void Remove (Relationship relationship);
//コレクションから削除されたオブジェクト。
public ICollection RemovedRelationships {get;}
//コレクションに追加されたオブジェクト。
public ICollection AddedRelationships {get;}
//ストアから取り出されたオブジェクト。このコレクションは、VirtualRelationshipCollectionが列挙されるか、Refreshが呼び出されるまで空である(このプロパティの値を取得してもコレクションは書き込まれない)。
public ICollection StoredRelationships {get;}
//非同期メソッド。
public IAsyncResult BeginGetCount(IAsyncCallback callback, object state);
public int EndGetCount(IAsyncResult asyncResult);
public IAsyncResult BeginRefresh(IAsyncCallback callback, object state);
public void EndRefresh(IAsyncResult asyncResult);
}
The following code defines the VirtualRelationshipCollection class.
public abstract class VirtualRelationshipCollection: ICollection
{
// The collection contains a specified type of relationship owned by the item identified by itemId.
protected VirtualRelationshipCollection (ItemContext itemContext, ItemId itemId, Type relationshipType);
// The enumerator returns all objects retrieved from the store except for objects with state Deleted in addition to objects with state Inserted.
public IEnumerator GetEnumerator ();
// Returns a count of the number of related objects that will be returned by the enumerator. This count is calculated without retrieving all objects from the store.
public int Count {get;}
// Always return false.
public bool ICollection.lsSynchronized () {get;}
// Always return this object.
public object ICollection.SyncRoot {get;}
// Search for the required object in the store.
public void Refresh ();
// Add the specified relationship to the collection. The object must have the state Constructed or Removed. If the state is Constructed, the state is changed to Added. If the state is Removed, the state is appropriately changed to Retrieved or Modified. The source item id of this relationship must be the same as the source item id given when the collection was constructed.
protected void Add (Relationship relationship);
// Remove the specified relationship from the collection. The state of the object must be Added, Retrieved, or Modified. If the state of the object is Added, this is set to Constructed. If the state of the object is Retrieved or Modified, this is set to Removed. The source item id of this relationship must be the same as the source item id given when the collection was constructed.
protected void Remove (Relationship relationship);
// Object removed from collection.
public ICollection RemovedRelationships {get;}
// An object added to the collection.
public ICollection AddedRelationships {get;}
// Object retrieved from the store. This collection is empty until VirtualRelationshipCollection is enumerated or Refresh is called (getting the value of this property does not write the collection).
public ICollection StoredRelationships {get;}
// Asynchronous method.
public IAsyncResult BeginGetCount (IAsyncCallback callback, object state);
public int EndGetCount (IAsyncResult asyncResult);
public IAsyncResult BeginRefresh (IAsyncCallback callback, object state);
public void EndRefresh (IAsyncResult asyncResult);
}

b)生成された関係型
ストレージプラットフォームスキーマのクラスを生成する場合、関係宣言毎に1つのクラスが生成される。関係自体を表すクラスに加えて、関係コレクションクラスも、それぞれの関係について生成される。これらのクラスは、関係のソースまたはターゲットアイテムクラス内のプロパティの型として使用される。
b) Generated Relational Type When creating a storage platform schema class, one class is created for each relational declaration. In addition to the classes representing the relationships themselves, relationship collection classes are also generated for each relationship. These classes are used as the types of properties in the relationship's source or target item class.

この節では、多数の「プロトタイプ」クラスを使用して生成されるクラスを説明する。つまり、指定された関係宣言が与えられた場合に、生成されるクラスについて説明する。プロトタイプクラスで使用されるクラス、型、および終点名は、その関係についてスキーマで指定された名前のプレースホルダであり、文字通りに解釈すべきではないことに注意されたい。   This section describes a class that is generated using a number of "prototype" classes. That is, a class that is generated when a specified relationship declaration is given will be described. Note that the class, type, and endpoint names used in the prototype class are placeholders for the names specified in the schema for the relationship and should not be interpreted literally.

(1)生成された関係型
この節では、それぞれの関係型について生成されるクラスを説明する。例えば、次のようである。
(1) Generated relational types This section describes the classes generated for each relational type. For example, it is as follows.

Figure 2007521532
Figure 2007521532

この関係定義が与えられると、RelationshipPrototypeおよびRelationshipPrototypeCollectionクラスが生成される。RelationshipPrototypeクラスは、関係自体を表す。RelationshipPrototypeCollectionクラスでは、ソース終点として指定されたアイテムを持つRelationshipPrototypeインスタンスにアクセスできる。   Given this relationship definition, RelationshipPrototype and RelationshipPrototypeCollection classes are generated. The RelationshipPrototype class represents the relationship itself. The RelationshipPrototypeCollection class provides access to a RelationshipPrototype instance that has an item specified as the source endpoint.

(2)RelationshipPrototypeクラス
これは、「HoldingRelationshipPrototype」という名前の保持関係に対するプロトタイプ関係クラスであり、ソース終点は「Head」という名前を持ち、「Foo」アイテム型を指定し、ターゲット終点は「Tail」という名前を持ち、「Bar」アイテム型を指定する。これは以下のように定義される。
(2) RelationshipPrototype class This is a prototype relationship class for a holding relationship named “HoldingRelationshipPrototype”, the source endpoint has the name “Head”, the “Foo” item type is specified, and the target endpoint is “Tail” Has a name and specifies the “Bar” item type. This is defined as follows:

Figure 2007521532
(3)RelationshipPrototypeCollectionクラス
これは、指定されたアイテムにより所有されるRelationshipPrototype関係インスタンスのコレクションを保持する、RelationshipPrototypeクラスで生成された、プロトタイプクラスである。これは以下のように定義される。
Figure 2007521532
(3) RelationshipPrototypeCollection class This is a prototype class generated by the RelationshipPrototype class that holds a collection of RelationshipPrototype relationship instances owned by a specified item. This is defined as follows:

Figure 2007521532
Figure 2007521532

c)Itemクラス内の関係サポート
Itemクラスは、そのアイテムが関係のソースである関係にアクセスできるようにするRelationshipsプロパティを含む。Relationshipsプロパティは、型RelationshipCollectionを持つ。
c) Relationship support in the Item class The Item class includes a Relationships property that allows the item to access the relationship that is the source of the relationship. The Relationships property has the type RelationshipCollection.

(1)Itemクラス
以下のコードは、Itemクラスの関係コンテクストプロパティを示している。
(1) Item class The following code shows the related context properties of the Item class.

Figure 2007521532
Figure 2007521532

(2)RelationshipCollectionクラス
このクラスを使用すると、与えられたアイテムが関係のソースである関係インスタンスにアクセスできる。これは以下のように定義される。
(2) RelationshipCollection class This class allows access to a relationship instance where a given item is the source of the relationship. This is defined as follows:

Figure 2007521532
Figure 2007521532

d)検索式の中の関係サポート
検索式の中で、関係と関係づけられているアイテムとの間の結合のトラバースを指定することが可能である。
d) Relationship support in search expressions In a search expression, it is possible to specify traversals of joins between items associated with relationships.

(1)アイテムから関係へのトラバース
検索式の現在のコンテクストがアイテムの集合である場合、アイテムがソースであるアイテムと関係インスタンスとの間の結合は、Item.Relationshipsプロパティを使用して実行できる。特定の型の関係への結合は、検索式Cast演算子を使用して指定することができる。
(1) Traversing from Item to Relationship If the current context of the search expression is a set of items, the connection between the item from which the item is the source and the relationship instance is Item. This can be done using the Relationships property. Bindings to specific types of relationships can be specified using the search expression Cast operator.

強く型付けされた関係コレクション(例えば、Folder.MemberRelationships)も、検索式の中で使用することができる。関係型への型変換は暗黙のうちに行われる。   Strongly typed relationship collections (eg, Folder.MemberRelationships) can also be used in the search expression. Type conversions to relational types are implicit.

関係の集合が確立された後、その関係のプロパティは、述語の中で使用するか、または射影のターゲットとして使用することができる。射影のターゲットを指定するために使用される場合、関係の集合が返される。例えば、以下のステートメントでは、関係のStartDateプロパティが「1/1/2000」以上の値を持っていた組織に関係するすべての人物を見つける。   After the set of relationships is established, the properties of the relationship can be used in the predicate or can be used as a projection target. When used to specify a projection target, a set of relationships is returned. For example, the following statement finds all persons associated with an organization whose relationship's StartDate property had a value greater than “1/1/2000”:

Figure 2007521532
Figure 2007521532

Person型が型EmployeeSideEmployerEmployeeRelationships(EmployeeEmployer関係型について生成されるような)のプロパティEmployerContextを持っていた場合、これは以下のように書けるであろう。   If the Person type had a property EmployeeContext of type EmployeeSideEmployeeEmployeeRelationships (as generated for the EmployeeEmployee relationship type), this could be written as:

Figure 2007521532
Figure 2007521532

(2)関係からアイテムへのトラバース
検索式の現在のコンテクストが関係の集合である場合、関係から関係のいずれかの終点への結合は、終点の名前を指定することによりトラバースすることができる。関係アイテムの集合が確立された後、それらのアイテムのプロパティは、述語の中で使用するか、または射影のターゲットとして使用することができる。射影のターゲットを指定するために使用される場合、アイテムの集合が返される。例えば、以下のステートメントは、従業員のラストネームが「Smith」であるすべてのEmployeeOfOrganization関係(組織に関係なく)を見つける。
(2) Traversing from relationship to item If the current context of the search expression is a set of relationships, the connection from the relationship to any endpoint of the relationship can be traversed by specifying the name of the endpoint. After the set of related items is established, the properties of those items can be used in predicates or as projection targets. When used to specify a projection target, a set of items is returned. For example, the following statement finds all EmployeeOfOrganization relationships (regardless of organization) where the employee's last name is “Smith”.

Figure 2007521532
Figure 2007521532

検索式Cast演算子を使用して、終点アイテムの型をフィルタ処理することができる。例えば、メンバが姓「Smith」を持つPersonアイテムであるすべてのMemberOfFolder関係インスタンスを見つけるために以下のようにする。   The search expression Cast operator can be used to filter the type of endpoint item. For example, to find all MemberOfFolder relationship instances whose members are Person items with the surname "Smith":

Figure 2007521532
Figure 2007521532

(3)関係トラバースの組合せ
アイテムから関係へ、関係からアイテムへトラバースする前の2つのパターンを組み合わせて、いくらでも複雑なトラバースを得ることができる。例えば、姓が「Smith」である従業員が含まれるすべての組織を見つけるには、以下のようにする。
(3) Combinations of relationship traverses Any number of complex traverses can be obtained by combining two patterns before traversing from item to relationship and from relationship to item. For example, to find all organizations that include an employee whose surname is “Smith”:

Figure 2007521532
Figure 2007521532

以下の実施例では、「New York」エリア内に居住する世帯の一員を表すすべてのPersonアイテムを見つける(TODO:これは、サポートされなくなっている...代替え)。   In the following example, find all Person items that represent members of households residing in the “New York” area (TODO: this is no longer supported ... alternative).

Figure 2007521532
Figure 2007521532

e)関係サポートの使用例
以下は、関係を操作するためのストレージプラットフォームAPI内の関係サポートの使用例を示す。以下の実施例では、以下の宣言を仮定する。
e) Example usage of relationship support The following shows an example usage of relationship support in the storage platform API for manipulating relationships. The following example assumes the following declaration:

Figure 2007521532
Figure 2007521532

(1)関係の検索
ソースまたはターゲット関係を検索することが可能である。フィルタを使用することにより、指定された型を持ちプロパティ値を与えた関係を選択することができる。また、フィルタを使用することにより、関係ベースの関係するアイテム型またはプロパティ値を選択することができる。例えば、以下の検索を実行できる。
与えられたアイテムがソースであるすべての関係
(1) Relationship search It is possible to search a source or target relationship. By using a filter, it is possible to select a relationship having a specified type and given a property value. Also, by using filters, relationship-based related item types or property values can be selected. For example, the following search can be performed.
All relationships where the given item is the source

Figure 2007521532
与えられたアイテムが「A%」とマッチする名前を持つソースであるすべての関係
Figure 2007521532
All relationships where the given item is a source with a name that matches "A%"

Figure 2007521532
与えられたアイテムがソースであるすべてのFolderMember関係
Figure 2007521532
All FolderMember relationships whose source is the given item

Figure 2007521532
与えられたアイテムがソースであり、名前が「A%」のような名前であるすべてのFolderMember関係
Figure 2007521532
All FolderMember relationships where the given item is the source and the name is something like "A%"

Figure 2007521532
ターゲットアイテムがPersonであるすべてのFolderMember関係
Figure 2007521532
All FolderMember relationships where the target item is Person

Figure 2007521532
ターゲットアイテムが姓「Smith」を持つPersonであるすべてのFolderMember関係
Figure 2007521532
All FolderMember relationships where the target item is Person with the surname "Smith"

Figure 2007521532
Figure 2007521532

上に示されているGetSearcher APIに加えて、それぞれの関係クラスでは、静的なFindAll、FindOne、およびFindOnly APIをサポートする。さらに、関係型は、ItemContext.GetSearcher、ItemContext.FindAll、ItemContext.FindOne、またはItemContext.FindOnlyを呼び出すときに指定できる。   In addition to the GetSearcher API shown above, each relationship class supports static FindAll, FindOne, and FindOnly APIs. Furthermore, the relation type is ItemContext. GetSearcher, ItemContext. FindAll, ItemContext. FindOne, or ItemContext. Can be specified when FindOnly is called.

(2)関係からソースおよびターゲットアイテムへのナビゲート
検索を通じて関係オブジェクトが取り出された後、ターゲットまたはソースアイテムに「ナビゲート」することが可能である。基本関係クラスは、Itemオブジェクトを返すSourceItemおよびTargetItemプロパティを備える。生成された関係クラスは、等価な強く型付けられた、名前付きプロパティ(例えば、FolderMember.FolderItemおよびFolderMember.MemberItem)を備える。例えば、次のようである。
名前「Foo」を持つ関係に対するソースおよびターゲットアイテムにナビゲートする
(2) Navigating from relationship to source and target item After a relationship object is retrieved through a search, it is possible to “navigate” to the target or source item. The base relationship class has a SourceItem and TargetItem property that returns an Item object. The generated relationship class has equivalent strongly-typed named properties (eg, FolderMember.FolderItem and FolderMember.MemberItem). For example, it is as follows.
Navigate to the source and target items for the relationship with the name “Foo”

Figure 2007521532
ターゲットアイテムにナビゲートする
Figure 2007521532
Navigate to the target item

Figure 2007521532
Figure 2007521532

関係が見つかったドメイン内にターゲットアイテムがない場合でもターゲットアイテムへのナビゲートは機能する。このような場合、ストレージプラットフォームAPIは、必要に応じてターゲットドメインへの接続を開く。アプリケーションは、ターゲットアイテムを取り出す前に接続が必要かどうかを判定することができる。
未接続ドメイン内のターゲットアイテムをチェックする
Navigating to a target item works even if the target item is not in the domain where the relationship was found. In such a case, the storage platform API opens a connection to the target domain as needed. The application can determine whether a connection is required before retrieving the target item.
Check target items in unconnected domains

Figure 2007521532
Figure 2007521532

(3)ソースアイテムから関係へのナビゲート
アイテムオブジェクトが与えられると、明示的検索を実行せずに、そのアイテムがソースである関係にナビゲートすることが可能である。これは、Folder.MemberRelationshipsなどのItem.Relationshipsコレクションプロパティまたは強く型付けされたコレクションプロパティを使用して実行される。関係から、ターゲットアイテムにナビゲートすることが可能である。このようなナビゲーションは、ターゲットアイテムがターゲットアイテムと同じストア内にない場合を含む、ターゲットアイテムがソースアイテムのItemContextに関連付けられたアイテムドメイン内にない場合でも、機能する。例えば、次のようである。
ソースアイテムからターゲットアイテムへの関係にナビゲートする
(3) Navigating from a source item to a relationship Given an item object, it is possible to navigate to the relationship in which the item is the source without performing an explicit search. This is the same as Folder. Item Relations such as MemberRelationships. Implemented using Relationships collection properties or strongly typed collection properties. From the relationship, it is possible to navigate to the target item. Such navigation works even when the target item is not in the item domain associated with the Item Context of the source item, including when the target item is not in the same store as the target item. For example, it is as follows.
Navigate to the relationship from the source item to the target item

Figure 2007521532
FolderアイテムからターゲットアイテムへのFoldermember関係にナビゲートする
Figure 2007521532
Navigate to the Foldermember relationship from the Folder item to the target item

Figure 2007521532
Figure 2007521532

アイテムは、多数の関係を持つことができ、したがって、アプリケーションでは、関係コレクションを列挙する場合に注意する必要がある。一般に、検索は、コレクション全体を列挙するのではなく、注目する特定の関係を識別するために使用すべきである。さらに、関係に対するコレクションベースのプログラミングモデルを持つことは、十分価値あることであり、多数の関係が十分に希なアイテムがあり、開発者による誤用のリスクは正当化される。アプリケーションは、コレクション内の関係の個数をチェックし、必要ならば異なるプログラミングモデルを使用することができる。例えば、次のようである。
関係コレクションのサイズをチェックする
Items can have a large number of relationships, so applications should be careful when enumerating relationship collections. In general, searches should be used to identify specific relationships of interest rather than enumerating the entire collection. In addition, having a collection-based programming model for relationships is well worth it, there are items that are rare enough for many relationships, and the risk of misuse by developers is justified. The application can check the number of relationships in the collection and use different programming models if necessary. For example, it is as follows.
Check the size of the relationship collection

Figure 2007521532
Figure 2007521532

アプリケーションがコレクションを列挙しようとしない限り、それぞれの関係を表すオブジェクトが実際には初期値として埋め込まれないという意味で上述の関係コレクションは、「仮想的」である。コレクションが列挙される場合、結果はストア内にあるものに加えて、アプリケーションによって追加されたが、まだ保存されていないものを反映するが、アプリケーションによって削除されたが保存されていない関係については反映しない。   The relationship collection described above is “virtual” in the sense that unless the application attempts to enumerate the collection, the objects representing the respective relationships are not actually embedded as initial values. When a collection is enumerated, the results reflect what was added by the application but not yet saved, in addition to what is in the store, but for relationships that were deleted by the application but not saved do not do.

(4)関係(およびアイテム)の作成
新しい関係は、関係オブジェクトを作成し、それをソースアイテム内の関係に追加し、ItemContextを更新することにより作成される。新しいアイテムを作成するには、保持または埋め込み関係を作成しなければならない。例えば、次のようである。
新しいアイテムを既存のフォルダに追加する
(4) Creating a relationship (and item) A new relationship is created by creating a relationship object, adding it to the relationship in the source item, and updating the ItemContext. To create a new item, you must create a hold or embed relationship. For example, it is as follows.
Add a new item to an existing folder

Figure 2007521532
既存のアイテムを既存のフォルダに追加する
Figure 2007521532
Add an existing item to an existing folder

Figure 2007521532
既存のアイテムを新しいフォルダに追加する
Figure 2007521532
Add an existing item to a new folder

Figure 2007521532
新しいアイテムを新しいフォルダに追加する
Figure 2007521532
Add new items to a new folder

Figure 2007521532
Figure 2007521532

(5)関係(およびアイテム)の削除
保持関係を削除する
(5) Deleting relationships (and items) Deleting retention relationships

Figure 2007521532
Figure 2007521532

8.ストレージプラットフォームAPIの「拡張」
上述のように、すべてのストレージプラットフォームスキーマの結果、クラスの集合が得られる。これらのクラスは、Find*などの標準的なメソッドを備え、さらに、フィールド値を取得および設定するプロパティも用意する。これらのクラスおよび関連付けられたメソッドは、ストレージプラットフォームAPIの基礎を形成する。
8). "Extension" of storage platform API
As described above, the result of all storage platform schemas is a set of classes. These classes have standard methods such as Find * and also provide properties for getting and setting field values. These classes and associated methods form the basis of the storage platform API.

a)ドメインビヘイビア
これらの標準的メソッドに加えて、すべてのスキーマは、それに対するドメイン特有のメソッドの集合を持つ。これらをドメインビヘイビアと呼ぶ。例えば、Contactsスキーマ内のドメインビヘイビアの一例として以下のようなものがある。
・ 電子メールアドレスは有効か?
・ フォルダが与えられた場合、そのフォルダのすべてのメンバのコレクションを取得する。
・ アイテムIDが与えられた場合、このアイテムを表すオブジェクトを取得する。
・ Personが与えられた場合、そのオンラインステータスを取得する。
・ 新しい連絡先または一時的連絡先を作成するヘルパ機能。
・ その他。
a) Domain Behaviors In addition to these standard methods, every schema has a set of domain specific methods for it. These are called domain behaviors. For example, the following is an example of a domain behavior in the Contacts schema.
• Is your email address valid?
• Given a folder, get a collection of all members of that folder.
-When an item ID is given, an object representing this item is acquired.
• If a Person is given, get its online status.
-Helper function to create new or temporary contacts.
・ Others.

「標準的」ビヘイビア(Find*など)とドメインビヘイビアとを区別しているが、これらはプログラマには単にメソッドとして現れることに注意することが重要である。これらのメソッドの間の区別は、ドメインビヘイビアはハードコーディングされるが、標準的ビヘイビアは、ストレージプラットフォームAPI設計時ツールによりスキーマファイルから自動的に生成されるという事実にある。   It distinguishes between “standard” behaviors (such as Find *) and domain behaviors, but it is important to note that these appear simply to the programmer as methods. The distinction between these methods is in the fact that the domain behavior is hard-coded, but the standard behavior is automatically generated from the schema file by the storage platform API design time tool.

その性質上、それらのドメインビヘイビアは手作りでなければならない。このため、C#の初期バージョンでは、クラスの実装全体を1つのファイル内に収める必要があるという実用上の問題が生じる。したがって、このことにより、ドメインビヘイビアを追加するために、自動生成されたクラスファイルは強制的に、編集されなければならない。自ずから、これは問題になりうる。   Due to their nature, these domain behaviors must be handmade. For this reason, in the initial version of C #, there arises a practical problem that the entire class implementation needs to be contained in one file. Therefore, this forces the automatically generated class file to be edited in order to add domain behavior. Naturally, this can be a problem.

部分クラスと呼ばれる機能は、そのような問題のために、C#に導入された。基本的に、部分クラスを使用することにより、クラス実装は複数のファイルにまたがることができる。部分クラスは、キーワードpartialが宣言の前に付くことを除き、正規のクラスと同じである。   A function called partial class was introduced in C # because of such problems. Basically, by using partial classes, class implementations can span multiple files. The partial class is the same as the regular class except that the keyword partial is added before the declaration.

Figure 2007521532
Figure 2007521532

そこで、Personに対するドメインビヘイビアは、このように異なるファイルに入れることができる。   Thus, domain behavior for Person can be put into different files in this way.

Figure 2007521532
Figure 2007521532

b)付加価値ビヘイビア
ドメインビヘイビアを持つデータクラスは、アプリケーション開発者が足場とする基礎を形成する。しかし、データクラスがそのデータに関係する考えられるすべてのビヘイビアを公開することは可能でも、望ましいことでもない。ストレージプラットフォームでは、開発者はストレージプラットフォームAPIにより提供される基本機能を足場とすることができる。ここで基本パターンは、メソッドがストレージプラットフォームデータクラスのうちの1つまたは複数をパラメータとしてとるクラスを作成することである。例えば、Microsoft Outlook使用するか、またはMicrosoft Windows(登録商標)メッセンジャを使用して電子メールを送信するための付加価値クラスは以下の通りとすることができる。
b) Value-added behaviors Data classes with domain behaviors form the basis for application developers. However, it is not possible or desirable for a data class to expose all possible behaviors related to that data. In the storage platform, the developer can use the basic functions provided by the storage platform API as a scaffold. Here, the basic pattern is that the method creates a class that takes one or more of the storage platform data classes as parameters. For example, the value added classes for sending e-mail using Microsoft Outlook or using Microsoft Windows® messenger can be as follows:

Figure 2007521532
Figure 2007521532

これらの付加価値クラスは、ストレージプラットフォームに登録することができる。登録データは、ストレージプラットフォームがすべてのインストールされているストレージプラットフォーム型について維持するスキーマメタデータに関連付けられる。このメタデータは、ストレージプラットフォームアイテムとして格納され、これに対しクエリを実行できる。   These value added classes can be registered with the storage platform. Registration data is associated with schema metadata that the storage platform maintains for all installed storage platform types. This metadata is stored as a storage platform item and can be queried.

付加価値クラスの登録は、強力な機能であり、例えば、これにより、Shell explorer内のPersonオブジェクトを右クリックすると、許容されるアクションの集合を、Personについて登録されている付加価値クラスから派生させることが可能になる、というシナリオが得られる。   Value-added class registration is a powerful feature, for example, when you right-click a Person object in a Shell explorer, you can derive a set of allowed actions from the value-added class registered for Person. The scenario is possible.

c)サービスプロバイダとしての付加価値ビヘイビア
本発明の実施形態では、ストレージプラットフォームAPIは、与えられた型について付加価値クラスを「サービス」として登録できるメカニズムを備える。これにより、アプリケーションは、与えられた型のサービスプロバイダ(=付加価値クラス)を設定、取得することができる。このメカニズムの使用を望む付加価値クラスは、よく知られているインターフェースを実装すべきであり、例えば、以下の通りである。
c) Value Added Behavior as a Service Provider In an embodiment of the present invention, the storage platform API includes a mechanism that allows a value added class to be registered as a “service” for a given type. Thereby, the application can set and acquire a given type of service provider (= value added class). Value added classes that want to use this mechanism should implement well-known interfaces, for example:

Figure 2007521532
Figure 2007521532

すべてのストレージプラットフォームAPIデータクラスは、ICachedServiceProviderインターフェースを実装する。このインターフェースは、以下のようにSystem.IServiceProviderインターフェースを拡張する。   All storage platform API data classes implement the ICachedServiceProvider interface. This interface is similar to the System. Extends the ISServiceProvider interface.

Figure 2007521532
Figure 2007521532

このインターフェースを使用することで、アプリケーションは、サービスプロバイダインスタンスを設定する他に、特定の型のサービスプロバイダを要求することができる。   Using this interface, an application can request a specific type of service provider in addition to setting a service provider instance.

このインターフェースをサポートするために、ストレージプラットフォームデータクラスは、型をキーとするサービスプロバイダのハッシュテーブルを保持する。サービスプロバイダが要求されると、この実装は、最初に、ハッシュテーブル内を見て、指定された型のサービスプロバイダが設定されているかどうかを調べる。設定されていなければ、登録されているサービスプロバイダインフラストラクチャを使用して、指定された型のサービスプロバイダを識別する。その後、このプロバイダのインスタンスが作成され、ハッシュテーブルに追加され、返される。また、データクラス上の共有メソッドがサービスプロバイダを要求し、オペレーションをそのプロバイダに転送することも可能であることに注意されたい。例えば、これは、ユーザにより指定された電子メールシステムを使用するメールメッセージクラス上のSendメソッドを提供するために使用することも可能である。   In order to support this interface, the storage platform data class maintains a service provider hash table keyed by type. When a service provider is requested, this implementation first looks in the hash table to see if a service provider of the specified type has been set up. If not set, the registered service provider infrastructure is used to identify the specified type of service provider. An instance of this provider is then created, added to the hash table, and returned. Note also that shared methods on the data class can request a service provider and forward operations to that provider. For example, it could be used to provide a Send method on a mail message class that uses an email system specified by the user.

9.デザインタイムフレームワーク
この節では、本発明の実施形態により、ストレージプラットフォームのSchemaがクライアント上のストレージプラットフォームAPIクラスおよびサーバ上のUDTクラスにどのように変わるかを説明する。図24の図は、関わっているコンポーネントを示している。
9. Design Time Framework This section describes how a storage platform Schema changes to a storage platform API class on the client and a UDT class on the server, according to embodiments of the present invention. The diagram of FIG. 24 shows the components involved.

図24を参照すると、スキーマ内の型は、XMLファイルに含まれる(ボックス1)。このファイルは、さらに、スキーマに関連付けられたフィールドレベルおよびアイテムレベル制約も含む。ストレージプラットフォームClassジェネレータ(xfs2cs.exe−ボックス2)は、このファイルを取り、ストアUDTに対する部分クラス(ボックス5)およびクライアントクラスに対する部分クラス(ボックス3)を生成する。スキーマドメイン毎に、追加メソッドが存在し、これをドメインビヘイビアと呼ぶ。ストア(ボックス7)、クライアント(ボックス6)、および両方の場所(ボックス4)で意味のあるドメインビヘイビアがある。ボックス4、6、および7内のコードは、手書き(自動生成でない)である。ボックス3、4、および6内の部分クラスはあわせて、ストレージプラットフォームAPIドメインクラスの完全なクラス実装を形成する。ボックス3、4、および6は、コンパイルされ(ボックス8)、ストレージプラットフォームAPIクラス−ボックス11を形成する(実際には、ストレージプラットフォームAPIは、すべての初期スキーマドメインから得られるボックス3、4、および6をコンパイルした結果である)。ドメインクラスに加えて、さらに、付加価値ビヘイビアを実装する追加クラスも存在する。これらのクラスは、1つまたは複数のスキーマドメイン内で1つまたは複数のクラスを使用する。これは、ボックス10により表される。ボックス4、5、および7内の部分クラスはあわせて、サーバUDTクラスの完全なクラス実装を形成する。ボックス4、5、および7は、コンパイルされ(ボックス9)、サーバサイドUDT アセンブリ−ボックス12を形成する(実際には、サーバサイドUDTアセンブリは、すべての初期スキーマドメインから得られるボックス4、5、および7をコンパイラプラス(compiler−plus−ing)した結果である)。DDLコマンドジェネレータモジュール(ボックス13)は、UDTアセンブリ(ボックス12)、およびSchemaファイル(ボックス1)を取り、データストア上に格納する。このプロセスは、とりわけ、それぞれのスキーマ内の型に対するテーブルおよびビューの生成を伴う。   Referring to FIG. 24, the types in the schema are included in the XML file (box 1). This file also includes field level and item level constraints associated with the schema. The storage platform class generator (xfs2cs.exe-box 2) takes this file and generates a partial class for the store UDT (box 5) and a partial class for the client class (box 3). There is an additional method for each schema domain, which is called a domain behavior. There are meaningful domain behaviors in the store (box 7), client (box 6), and both locations (box 4). The codes in boxes 4, 6, and 7 are handwritten (not automatically generated). The partial classes in boxes 3, 4 and 6 together form a complete class implementation of the storage platform API domain class. Boxes 3, 4, and 6 are compiled (box 8) to form the storage platform API class-box 11 (in fact, the storage platform API is derived from all initial schema domains, boxes 3, 4, and 6 is the result of compiling 6). In addition to domain classes, there are also additional classes that implement value-added behaviors. These classes use one or more classes within one or more schema domains. This is represented by box 10. The partial classes in boxes 4, 5, and 7 together form a complete class implementation of the server UDT class. Boxes 4, 5, and 7 are compiled (box 9) to form the server side UDT assembly-box 12 (in practice, the server side UDT assembly is derived from all initial schema domains, box 4, 5, And 7 is a compiler-plus-ing result). The DDL command generator module (box 13) takes the UDT assembly (box 12) and the Schema file (box 1) and stores them on the data store. This process involves, among other things, the generation of tables and views for the types in each schema.

10.クエリ形式主義(Formalism)
基本に帰着させた場合、アプリケーションのパターンは、ストレージプラットフォームAPIを使用した場合、ItemContextを開く、フィルタ条件付きでFindを使用し、所望のオブジェクトを取り出す、オブジェクトに演算を実行する、および変更をストアに送り返す、というものである。この節は、フィルタ文字列に入るものの構文に関する。
10. Query formalism
When reduced to basic, the application pattern is that when using the storage platform API, opening an ItemContext, using Find with a filter condition, retrieving the desired object, performing operations on the object, and storing changes To send it back to. This section concerns the syntax of what goes into the filter string.

ストレージプラットフォームデータオブジェクトを見つけるときに提供されるフィルタ文字列は、オブジェクトのプロパティが、返されるために満たさなければならない条件を記述する。ストレージプラットフォームAPIで使用される構文は、型変換および関係トラバースをサポートする。   The filter string provided when finding a storage platform data object describes the conditions that the object's properties must meet in order to be returned. The syntax used in the storage platform API supports type conversion and relation traversal.

a)フィルタの基本事項
フィルタ文字列は、空であり、指定された型のすべてのオブジェクトが返されることを示すか、またはそれぞれの返されるオブジェクトが満たさなければならない論理式である。この式は、オブジェクトプロパティを参照する。ストレージプラットフォームAPIランタイムは、どのようにこれらのプロパティ名がストレージプラットフォームの型フィールド名にマッピングされ、最終的に、ストレージプラットフォームストアにより保持されるSQLビューにマッピングされるかについて関知している。
a) Filter Basics The filter string is empty and indicates that all objects of the specified type are returned or is a logical expression that each returned object must satisfy. This expression refers to the object property. The storage platform API runtime knows how these property names are mapped to storage platform type field names and ultimately to the SQL view maintained by the storage platform store.

以下の実施例を考察する。   Consider the following example.

Figure 2007521532
Figure 2007521532

ネストされたオブジェクトのプロパティもフィルタ内で使用できる。例えば、次のようである。   Nested object properties can also be used in filters. For example, it is as follows.

Figure 2007521532
Figure 2007521532

コレクションについては、角括弧内の条件を使用してメンバのフィルタ処理を行うことが可能である。例えば、次のようである。   For collections, members can be filtered using conditions in square brackets. For example, it is as follows.

Figure 2007521532
Figure 2007521532

以下の実施例は、12/31/1999以降に生まれたすべての人々のリストを作成する。   The following example creates a list of all people born after 12/31/1999.

Figure 2007521532
Figure 2007521532

1行目で、ローカルコンピュータのストレージプラットフォーム共有上の「Work Contacts」にアクセスする新しいItemContextオブジェクトを作成する。3行目と4行目で、式「Birthdate>‘12/31/1999’」により指定されているように、Birthdateプロパティが12/31/1999よりも最近の日付を指定するPersonオブジェクトのコレクションを取得する。このFindAllオペレーションの実行は、図23に示されている。   The first line creates a new ItemContext object that accesses “Work Contacts” on the storage platform share of the local computer. In the third and fourth lines, as specified by the expression “Birthdate> '12 / 31/1999 '”, a collection of Person objects whose Birthdate property specifies a date more recent than 12/31/1999 is specified. get. The execution of this FindAll operation is shown in FIG.

b)型変換(Type Casts)
プロパティに格納されている値の型がプロパティ宣言型から派生されることはよくあることである。例えば、Person内のPersonalEAddressesプロパティは、EMailAddressおよびTelephoneNumberなどのEAddressから派生された型のコレクションを含む。電話市外局番に基づいてフィルタ処理するには、EAddress型からTelephoneNumber型に型変換する必要がある。
b) Type Casts
Often, the type of the value stored in a property is derived from the property declaration type. For example, the PersonalEAddresses property in Person includes a collection of types derived from EAddress, such as EMailAddress and TelephoneNumber. In order to perform filtering based on the telephone area code, it is necessary to convert the type from the EAddress type to the Telephone Number type.

Figure 2007521532
Figure 2007521532

c)フィルタ構文
以下では、一実施形態による、ストレージプラットフォームAPIによりサポートされているフィルタ構文を説明する。
c) Filter Syntax The following describes the filter syntax supported by the storage platform API, according to one embodiment.

Figure 2007521532
Figure 2007521532

11.リモーティング
a)APIにおけるローカル/リモート透過性
ストレージプラットフォームのデータアクセスは、ローカルストレージプラットフォームインスタンスをターゲットとしている。ローカルインスタンスは、クエリ(またはその一部)がリモートデータを参照している場合にルータとして使用される。そのため、APIレイヤは、ローカル/リモート透過性を備え、ローカルデータアクセスとリモートデータアクセスとの間でAPIの構造的な違いはない。これは、純粋に、要求されたスコープの機能である。
11. Remoting a) Local / Remote Transparency in API Storage platform data access is targeted to the local storage platform instance. A local instance is used as a router when a query (or part of it) references remote data. Therefore, the API layer has local / remote transparency, and there is no structural difference in API between local data access and remote data access. This is purely a function of the requested scope.

ストレージプラットフォームのデータストアは、さらに、分散クエリを実装するので、ローカルストレージプラットフォームのインスタンスに接続し、一方がローカルストア上にあり、他方がリモートストア上にある異なるボリュームからのアイテムを含むクエリを実行することが可能である。ストアは、結果を合併し、それはアプリケーションに提示する。ストレージプラットフォームAPI(したがって、アプリケーション開発者)の観点からは、任意のリモートアクセスは完全に継ぎ目なく、透過的である。   The storage platform data store also implements distributed queries, so it connects to instances on the local storage platform and executes queries that contain items from different volumes, one on the local store and the other on the remote store Is possible. The store merges the results and presents them to the application. From the perspective of the storage platform API (and therefore the application developer), any remote access is completely seamless and transparent.

ストレージプラットフォームAPIを使用することにより、アプリケーション側で、与えられたItemContextオブジェクト(ItemContext.Openメソッドにより返されるような)がIsRemoteプロパティ−これは、ItemContextオブジェクト上のプロパティである−を使用してローカルまたはリモート接続を表すかどうかを決定することができる。とりわけ、アプリケーションは、パフォーマンス、信頼性などに対するユーザの期待を設定しやすくするために視覚的フィードバックを与えたい場合がある。   By using the storage platform API, the application can use a given ItemContext object (as returned by the ItemContext.Open method) using the IsRemote property-which is a property on the ItemContext object-or Whether to represent a remote connection can be determined. In particular, an application may want to provide visual feedback to help set user expectations for performance, reliability, etc.

b)リモーティングのストレージプラットフォーム実装
ストレージプラットフォームのデータストアは、HTTP上で実行される特別なOLEDBプロバイダを使用して互いに対話する(既定のOLEDBプロバイダはTDSを使用する)。一実施形態では、分散クエリは、リレーショナルデータベースエンジンの既定のOPENROWSET機能を適用される。特別なユーザ定義関数(UDF)、DoRemoteQuery(server,queryText)が用意され、実際のリモーティングを実行する。
b) Remoting storage platform implementation The storage platform data stores interact with each other using a special OLEDB provider running over HTTP (the default OLEDB provider uses TDS). In one embodiment, the distributed query is applied the default OPENROWSET function of the relational database engine. A special user-defined function (UDF) and DoRemoteQuery (server, queryText) are prepared to execute actual remoting.

c)非ストレージプラットフォームストアへのアクセス
本発明のストレージプラットフォームの一実施形態では、ストアがストレージプラットフォームのデータアクセスに加わることを許す汎用プロバイダアーキテクチャはない。しかし、Microsoft ExchangeおよびMicrosoft Active Directory(AD)の特定の場合に対する制限されたプロバイダアーキテクチャが提供される。これは、開発者が、ちょうどストレージプラットフォーム内にはあるように、ストレージプラットフォームAPIを使用し、ADおよびExchange内のデータにアクセスできることを意味するが、アクセスできるデータは、ストレージプラットフォームのスキーマ化された型に制限されることを意味する。したがって、アドレス帳(=ストレージプラットフォームのPerson型のコレクション)は、ADでサポートされ、メール、カレンダー、および連絡先は、Exchange用にサポートされる。
c) Access to non-storage platform stores In one embodiment of the storage platform of the present invention, there is no general provider architecture that allows the store to participate in storage platform data access. However, a limited provider architecture is provided for the specific cases of Microsoft Exchange and Microsoft Active Directory (AD). This means that the developer can access the data in AD and Exchange using the storage platform API, just as it is in the storage platform, but the accessible data is schematized in the storage platform. Means restricted to type. Thus, the address book (= personal collection of storage platforms) is supported by AD, and mail, calendar, and contacts are supported for Exchange.

d)DFSとの関係
ストレージプラットフォームのプロパティプロモータ(property promoter)は、過去のマウントポイントを格上げしない。名前空間がマウントポイントを通じてアクセスするのに十分リッチであるとしても、クエリはそれらを通過しない。ストレージプラットフォームボリュームは、DFSツリー内の葉ノードとして現れることができる。
d) Relationship to DFS The storage platform property promoter does not upgrade past mount points. Even if the namespace is rich enough to be accessed through mount points, the query will not pass through them. Storage platform volumes can appear as leaf nodes in the DFS tree.

e)GXA/Indigoとの関係
開発者は、ストレージプラットフォームAPIを使用して、データストアの上に「GXA head」を公開することができる。概念的には、これは、他のWebサービスを作成するのと異ならない。ストレージプラットフォームAPIは、GXAを使用してストレージプラットフォームデータストアと対話しない。上述のように、APIは、TDSを使用してローカルストアと対話し、どのリモーティングも、同期サービスを使用してローカルストアにより処理される。
e) Relationship with GXA / Indigo Developers can publish “GXA head” on top of a data store using the storage platform API. Conceptually, this is no different from creating other web services. The storage platform API does not interact with the storage platform data store using GXA. As described above, the API interacts with the local store using TDS, and any remoting is handled by the local store using a synchronization service.

12.制約条件
ストレージプラットフォームデータモデルでは、型に対する値制約条件を持つことができる。それらの制約条件は、ストア上で自動的に評価され、このプロセスは、ユーザにとって透過的である。制約条件は、サーバ側でチェックされることに注意されたい。このことに注意すると、ときには、サーバへの往復やり取りのオーバーヘッドを被ることなく、入力データが制約条件を満たすことを確認できる融通性を開発者に対し与えることが望ましい。これは、本質的に、エンドユーザがオブジェクトに埋めるために使用されるデータを入力する対話的アプリケーションで有用である。ストレージプラットフォームAPIはこの機能を実現している。
12 Constraints The storage platform data model can have value constraints on types. Those constraints are automatically evaluated on the store, and this process is transparent to the user. Note that the constraints are checked on the server side. With this in mind, it is sometimes desirable to provide the developer with the flexibility to confirm that the input data meets the constraint conditions without incurring the overhead of a round trip to the server. This is essentially useful in interactive applications where the end user enters data that is used to embed in the object. The storage platform API realizes this function.

スキーマを表す適切なデータベースオブジェクトを生成するためにストレージプラットフォームにより使用される、ストレージプラットフォームSchemaは、XMLファイルで指定されることに注意されたい。これは、クラスを自動生成するためにストレージプラットフォームAPIの設計時フレームワークによっても使用される。   Note that the storage platform Schema used by the storage platform to generate the appropriate database objects that represent the schema is specified in the XML file. This is also used by the storage platform API design time framework to automatically generate classes.

Contactsスキーマを生成するために使用されるXMLファイルの部分リスティングを以下に示す。   The following is a partial listing of an XML file used to generate a Contacts schema.

Figure 2007521532
Figure 2007521532

上記のXML内のCheckタグは、Person型に対する制約を指定する。複数のチェックタグがありうる。上記の制約条件は、一般にストア内でチェックされる。制約条件がさらにアプリケーションにより明示的にチェックできることを指定するために、上記XMLは以下のように修正される。   The Check tag in the above XML specifies a constraint on the Person type. There can be multiple check tags. The above constraints are generally checked in the store. To specify that the constraint can be further explicitly checked by the application, the XML is modified as follows.

Figure 2007521532
Figure 2007521532

trueに設定される<Check>要素上の新しい「InApplication」属性に注意されたい。これにより、ストレージプラットフォームAPIは、Validate()と呼ばれるPersonクラス上のインスタンスメソッドを通じてAPIにおける制約を明らかにする。アプリケーションは、オブジェクト上でこのメソッドを呼び出して、データが有効であることを確認し、サーバとの間の潜在的に無用なやり取りをなくすことができる。これは、バリデーションの結果を示すブール値を返す。値制約条件は、クライアントが<object>.Validate()メソッドを呼び出すかどうかに関係なくそのままサーバに適用されることに注意されたい。以下にValidateの使用例を示す。   Note the new “InApplication” attribute on the <Check> element that is set to true. As a result, the storage platform API reveals restrictions on the API through an instance method on the Person class called Validate (). An application can call this method on an object to verify that the data is valid and eliminate any potentially useless interaction with the server. This returns a Boolean value indicating the result of the validation. The value constraint condition is that the client sets <object>. Note that it is applied to the server as is, regardless of whether the Validate () method is called. An example of using Validate is shown below.

Figure 2007521532
Figure 2007521532

ストレージプラットフォームストアへのアクセスパスは複数存在する−ストレージプラットフォームAPI、ADO.NET、ODBC、OLEDB、およびADOである。このため、信頼できる制約条件チェックであるかどうかの疑問が生じる−つまり、例えばODBCから書かれたデータに、ストレージプラットフォームAPIから書かれたデータと同じデータ完全性制約条件が適用されることをどのように保証できるのか。すべての制約条件はストア側でチェックされるため、制約条件は信頼できるものとなる。ストアに達するためにどのようなAPIパスを使用するかに関係なく、ストアへの書き込みはすべて、ストアでの制約条件チェックを通じてフィルタ処理される。   There are multiple access paths to the storage platform store-storage platform API, ADO. NET, ODBC, OLEDB, and ADO. This raises the question of whether it is a reliable constraint check--that is, for example, which data written from the ODBC is subject to the same data integrity constraints as the data written from the storage platform API. Can you guarantee? Since all constraints are checked on the store side, the constraints are reliable. Regardless of what API path is used to reach the store, all writes to the store are filtered through constraint checks at the store.

13.共有
ストレージプラットフォームの共有は、
13. Sharing Storage platform sharing

Figure 2007521532
の形式であり、ただし、<DNS Name>はマシンのDNS名、<Context Service>は、そのマシン上の包含フォルダ、仮想フォルダ、またはボリューム内のアイテムである。例えば、マシン「Johns_Desktop」は、Johns_Informationというボリュームを持ち、このボリューム内には、Contacts_Categoriesというフォルダが存在し、このフォルダは、Workというフォルダを含み、これには、Johnの仕事用連絡先
Figure 2007521532
Where <DNS Name> is the DNS name of the machine and <Context Service> is an item in the containing folder, virtual folder, or volume on that machine. For example, the machine “Johns_Desktop” has a volume called “Johns_Information”, and a folder called “Contacts_Categories” exists in this volume.

Figure 2007521532
が入っている。これは、「WorkContacts」として共有することができる。この共有の定義では、\\Johns_Desktop\WorkContacts\JaneSmithは、有効なストレージプラットフォーム名であり、PersonアイテムJaneSmithを識別する。
Figure 2007521532
Is included. This can be shared as “WorkContacts”. In this share definition, \\ Johns_Desktop \ WorkContacts \ JaneSmith is a valid storage platform name and identifies the Person item JaneSmith.

a)共有の表現
共有アイテム型は、共有名、および共有ターゲット(これは、非保持リンクであってよい)のプロパティを持つ。例えば、上述の共有の名前は、WorkContactsであり、ターゲットは、ボリュームJohns_Information上のContacts_Categories\Workである。以下に、Share型のスキーマ断片を示す。
a) Representation of a share A shared item type has properties of a share name and a share target (which may be a non-retaining link). For example, the share name described above is WorkContacts and the target is Contacts_Categories \ Work on the volume Johns_Information. The Share type schema fragment is shown below.

Figure 2007521532
Figure 2007521532

b)共有の管理
共有はアイテムであるため、共有は他のアイテムとまったく同様に管理できる。共有は、作成、削除、および修正が可能である。共有は、さらに、他のストレージプラットフォームアイテムと同じようにしてセキュリティ設定される。
b) Sharing management Since sharing is an item, sharing can be managed just like any other item. Shares can be created, deleted, and modified. Sharing is further secured in the same way as other storage platform items.

c)共有のアクセス
アプリケーションは、ItemContext.Open()メソッド呼び出しで共有名(例えば、\\Johns_Desktop\WorkContacts)をストレージプラットフォームAPIに渡すことによりリモートストレージプラットフォーム共有にアクセスする。ItemContext.Openは、ItemContextオブジェクトインスタンスを返す。その後、ストレージプラットフォームAPIは、ローカルストレージプラットフォームサービスと対話する(リモートストレージプラットフォーム共有へのアクセスは、ローカルストレージプラットフォームを介して行われることに注意されたい)。次に、ローカルストレージプラットフォームサービスは、与えられた共有名(例えば、WorkContacts)を使用してリモートストレージプラットフォームサービス(例えば、マシンJohns_Desktop上の)と対話する。その後、リモートストレージプラットフォームサービスは、WorkContactsをContacts_Categories\Workに翻訳して、それを開く。その後、クエリおよびその他のオペレーションが他のスコープとまったく同様に実行される。
c) Shared access application is ItemContext. Access the remote storage platform share by passing the share name (eg, \\ Johns_Desktop \ WorkContacts) to the storage platform API in the Open () method call. ItemContext. Open returns an ItemContext object instance. The storage platform API then interacts with the local storage platform service (note that access to the remote storage platform share is through the local storage platform). The local storage platform service then interacts with the remote storage platform service (eg, on the machine Johns_Desktop) using the given share name (eg, WorkContacts). The remote storage platform service then translates WorkContacts to Contacts_Categories \ Work and opens it. Thereafter, queries and other operations are performed just like any other scope.

d)発見可能性
一実施形態では、アプリケーションプログラムは、以下のようにして、与えられた<DNS Name>上で使用可能な共有を発見することができる。第1の方法により、ストレージプラットフォームAPIはDNS名(例えば、Johns_Desktop)をItemContext.Open()メソッドのスコープパラメータとして受け付ける。ストレージプラットフォームAPIは、次に、このDNS名を接続文字列の一部として使用しストレージプラットフォームストアに接続する。この接続では、アプリケーションが唯一できることは、ItemContext.FindAll(typeof(Share))を呼び出すことである。その後、ストレージプラットフォームサービスは、接続されているすべてのボリューム上のすべての共有を合併し、共有のコレクションを返す。第2の方法により、ローカルマシン上で、管理者はFindAll(typeof(Share))により特定のボリューム上の、またはFindAll(typeof(Share),“Target(ShareDestination).Id=folderId”)により特定のフォルダ上の共有を容易に発見することができる。
d) Discoverability In one embodiment, an application program can discover available shares on a given <DNS Name> as follows. According to the first method, the storage platform API sets the DNS name (eg, Johns_Desktop) to ItemContext. Accepted as a scope parameter of the Open () method. The storage platform API then connects to the storage platform store using this DNS name as part of the connection string. With this connection, the only thing an application can do is use ItemContext. Call FindAll (typeof (Share)). The storage platform service then merges all shares on all connected volumes and returns a collection of shares. According to the second method, on the local machine, the administrator can specify a specific volume by FindAll (typeof (Share)) or by FindAll (typeof (Share), “Target (ShareDestination) .Id = folderId”). Shares on folders can be easily found.

14.Findの意味
Find*メソッド(ItemContextオブジェクトで呼び出されようと、個々のアイテム上で呼び出されようと関係なく)は、一般に、与えられたコンテクスト内のItem(埋め込まれたアイテムを含む)に適用される。ネストされた要素は、Findを持たない−包含Itemと無関係に検索することはできない。これは、ネストされた要素が包含アイテムからその「アイデンティティ」を派生させる、ストレージプラットフォームデータモデルで望ましい意味と一致する。この概念をより明確にするために、以下に、有効なfindオペレーションと無効なfindオペレーションの実施例を示す。
a)市外局番206を持つシステム内のすべての電話番号を表示する?
無効、findはアイテムを参照せずに電話番号−要素−に対し実行されるため。
b)市外局番206を持つすべてのPersons内のすべての電話番号を表示する?
無効、Person(=アイテム)が参照されるとしても、検索条件はそのアイテムを含まない。
c)市外局番206を持つすべてのMurali(=1人)のすべての電話番号を表示する?
有効、Itemに対し検索条件があるため(「Murali」という名前のPerson)。
14 Find Meaning The Find * method (whether called on an ItemContext object or on an individual item) generally applies to Items (including embedded items) within a given context. . Nested elements do not have a Find-they cannot be searched regardless of the containing Item. This is consistent with the desired meaning in the storage platform data model, where the nested element derives its “identity” from the containing item. To make this concept clearer, examples of valid and invalid find operations are given below.
a) Display all phone numbers in the system with area code 206?
Invalid, because find is performed on a phone number-element without referring to the item.
b) Display all phone numbers in all Persons with area code 206?
Even if invalid, Person (= item) is referred to, the search condition does not include the item.
c) Display all phone numbers of all Murali (= 1 person) with area code 206?
Valid, because there is a search condition for Item (Person named “Murali”).

この規則の例外は、Base.Relationship型から直接的または間接的に派生されるネストされた要素型についてのものである。これらの型は、関係クラスを通じて個別にクエリを実行できる。このようなクエリをサポートできるのは、ストレージプラットフォーム実装では、アイテムUDT内に埋め込む代わりに、「マスタリンクテーブル」を使用してRelationship要素を格納するからである。   An exception to this rule is Base. For nested element types that are derived directly or indirectly from Relationship types. These types can be individually queried through relational classes. Such a query can be supported because the storage platform implementation uses a “master link table” to store the Relationship element instead of embedding it in the item UDT.

15.ストレージプラットフォームContacts API
この節では、ストレージプラットフォームContacts APIの概要を述べる。Contacts APIの背後にあるスキーマは、図21Aおよび21Bに示されている。
15. Storage Platform Contacts API
This section outlines the storage platform Contacts API. The schema behind the Contacts API is shown in FIGS. 21A and 21B.

a)System.Storage.Contactの概要
ストレージプラットフォームAPIは、Contactsスキーマ内のアイテムおよび要素を取り扱うための名前空間を含む。この名前空間は、System.Storage.Contactと呼ばれる。
a) System. Storage. Contact Overview The storage platform API includes a namespace for handling items and elements in the Contacts schema. This namespace is System. Storage. It is called Contact.

このスキーマは、例えば、以下のクラスを持つ。
・ Item:UserDataFolder、User、Person、ADService、Service、Group、Organization、Principal、Location
・ Elements:Profile、PostalAddress、EmailAddress、TelephoneNumber、RealTimeAddress、EAddress、FullName、BasicPresence、GroupMembership、RoleOccupancy
This schema has the following classes, for example.
Item: UserDataFolder, User, Person, ADService, Service, Group, Organization, Principal, Location
-Elements: Profile, PostAddress, EmailAddress, TelephoneNumber, RealTimeAddress, EAddress, FullName, BasicPresence, GroupMembership, RoleOccupe.

b)ドメインビヘイビア
以下に、Contactsスキーマのドメインビヘイビアのリストを示す。十分に高いレベルから見た場合、ドメインビヘイビアは、以下の適切に認識可能なカテゴリに分類される。
・ 静的ヘルパ、例えば、新しい個人連絡先を作成するためのPerson.CreatePersonalContact()、
・ インスタンスヘルパ、例えば、ユーザ(Userクラスのインスタンス)を自動ログインのマークが付けられているすべてのプロファイルにログインさせるuser.AutoLoginToAllProfiles()、
・ カテゴリGUIDs、例えば、Category.Home、Category.Workなど、
・ 派生プロパティ、例えば、emailAddress.Address()−与えられたemailAddress(=EmailAddressクラスのインスタンス)のユーザ名およびドメインフィールドを組み合わせた文字列を返す、派生コレクション、例えば、person.PersonalEmailAddresses−Personクラスのインスタンスが与えられた場合、その個人電子メールアドレスを取得する。
b) Domain Behaviors The following is a list of domain behaviors in the Contacts schema. When viewed from a sufficiently high level, domain behaviors fall into the following appropriately recognizable categories:
A static helper, eg Person. For creating new personal contacts. CreatePersonalContact (),
An instance helper, for example, user.login that logs a user (an instance of the User class) into all profiles marked for automatic login. AutoLoginToAllProfiles (),
-Category GUIDs, for example, Category. Home, Category. Work etc.
Derived properties, for example emailAddress. Address () —A derived collection that returns a string that combines the username and domain fields of a given emailAddress (= an instance of the EmailAddress class), eg, person. If an instance of the PersonalEmailAddress-Person class is given, its personal email address is acquired.

以下の表は、ドメインビヘイビアを持つContacts内のクラス毎に、それらのメソッドおよびそれらが属すカテゴリのリストをまとめたものである。   The following table summarizes the list of methods and the categories to which they belong, for each class in Contacts with domain behavior.

Figure 2007521532
Figure 2007521532

16.ストレージプラットフォームFile API
この節では、本発明の一態様による、ストレージプラットフォームFile APIの概要を説明する。
16. Storage platform File API
This section provides an overview of the storage platform File API according to one aspect of the present invention.

a)序論
(1)ストレージプラットフォーム内でのNTFSボリュームの反映
ストレージプラットフォームは、既存のNTFSボリューム内の内容の上にインデックス作成を行う手段を備える。これは、NTFS内のそれぞれのファイルストリームまたはディレクトリからプロパティを抽出(「格上げ」)し、それらのプロパティをストレージプラットフォーム内にItemとして格納することにより実行される。
a) Introduction (1) Reflection of NTFS volume in storage platform The storage platform includes means for creating an index on the contents in an existing NTFS volume. This is done by extracting (“upgrading”) properties from each file stream or directory in NTFS and storing those properties as Items in the storage platform.

ストレージプラットフォームFileスキーマは、格上げされたファイルシステムエンティティを格納するために2つのアイテム型−FileおよびDirectory−を定義する。Directory型は、Folder型の子型であり、他のDirectoryアイテムまたはFileアイテムを含む包含フォルダである。   The storage platform File schema defines two item types—File and Directory—to store promoted file system entities. The Directory type is a child type of the Folder type and is an inclusion folder including other Directory items or File items.

Directoryアイテムは、DirectoryおよびFileアイテムを含むことができるが、他のどのような型のアイテムも含むことができない。ストレージプラットフォームに関する限り、DirectoryおよびFileアイテムは、データアクセスAPIのどれからも読み取り専用である。File System Promotion Manager(FSPM)サービスは、変更されたプロパティをストレージプラットフォーム内に非同期に格上げする。FileおよびDirectoryアイテムのプロパティは、Win32 APIにより変更できる。ストレージプラットフォームAPIは、Fileアイテムに関連付けられたストリームを含む、それらのアイテムのプロパティを読む込むために使用することができる。   Directory items can include Directory and File items, but cannot include any other type of item. As far as the storage platform is concerned, the Directory and File items are read-only from any of the data access APIs. The File System Promotion Manager (FSPM) service asynchronously promotes changed properties into the storage platform. The properties of File and Directory items can be changed by the Win32 API. The storage platform API can be used to read the properties of those items, including streams associated with File items.

(2)ストレージプラットフォーム名前空間内でのファイルおよびディレクトリの作成
NTFSボリュームがストレージプラットフォームボリュームに格上げされると、その中のすべてのファイルおよびディレクトリは、そのボリュームの特定の一部となる。この領域は、ストレージプラットフォームの観点から読み取り専用であり、FSPMは新しいディレクトリおよびファイルを作成し、および/または既存のアイテムのプロパティを変更することができる。
(2) Creation of files and directories within the storage platform namespace When an NTFS volume is promoted to a storage platform volume, all files and directories within it become a specific part of the volume. This area is read-only from the storage platform perspective, and FSPM can create new directories and files and / or modify the properties of existing items.

このボリュームの名前空間の残り部分は、通常範囲のストレージプラットフォームアイテム型−Principal、Organization、Document、Folderなど−を含むことができる。ストレージプラットフォームでは、さらに、ストレージプラットフォーム名前空間の一部に複数のFileおよびDirectoryを作成することができる。これらの「ネイティブ」のFileおよびDirectoryは、NTFSファイルシステム側に対応するものを持たず、ストレージプラットフォーム内に丸ごと格納される。さらに、プロパティへの変更は即座に現れる。   The remainder of the volume's namespace can include the normal range of storage platform item types—Principal, Organization, Document, Folder, etc. The storage platform can also create multiple files and directories in a portion of the storage platform namespace. These “native” files and directories do not have a corresponding one on the NTFS file system side, and are stored entirely in the storage platform. In addition, changes to properties appear immediately.

しかし、プログラミングモデルは同じままである、つまり、ストレージプラットフォームデータアクセスAPIに関する限り、読み取り専用であるということである。「ネイティブ」のFileおよびDirectoryは、Win32 APIを使用して更新されなければならない。これにより、開発者のメンタルモデルが簡素化され、以下のようになる。
1.名前空間内のどこでもストレージプラットフォームアイテム型を作成できる(もちろん、パーミッションにより禁止されていない限り)。
2.ストレージプラットフォームアイテム型は、ストレージプラットフォームAPIを使用して読み込むことができる。
3.すべてのストレージプラットフォームアイテム型は、FileおよびDirectoryを除いて、ストレージプラットフォームAPIを使用して書き込むことが可能である。
4.名前空間内のどこにあるかに関係なくFileおよびDirectoryアイテムに書き込みを行うために、Win32 APIを使用する。
5.「格上げされた」名前空間内のFile/Directoryへの変更は、ストレージプラットフォーム内に即座に現れないことがあるが、「格上げされない」名前空間内では、変更は、ストレージプラットフォーム内に即座に反映される。
However, the programming model remains the same, that is, as far as the storage platform data access API is concerned, it is read-only. The “native” File and Directory must be updated using the Win32 API. This simplifies the developer's mental model as follows:
1. You can create storage platform item types anywhere in the namespace (unless of course prohibited by permissions).
2. Storage platform item types can be read using the storage platform API.
3. All storage platform item types can be written using the storage platform API, with the exception of File and Directory.
4). Use the Win32 API to write to File and Directory items regardless of where they are in the namespace.
5). Changes to File / Directory in a “promoted” namespace may not appear immediately in the storage platform, but in a “non-promoted” namespace, changes are immediately reflected in the storage platform The

b)Fileスキーマ
図25は、File APIが基づくスキーマを例示している。
b) File Schema FIG. 25 illustrates a schema based on the File API.

c)System.Storage.Filesの概要
ストレージプラットフォームAPIは、ファイルオブジェクトを取り扱うための名前空間を含む。この名前空間は、System.Storage.Filesと呼ばれる。System.Storage.Filesのクラスのデータメンバは、ストレージプラットフォームストアに格納されている情報を直接反映し、この情報は、ファイルシステムオブジェクトから「格上げ」されるか、またはWin32 APIを使用してネイティブな形で作成することができる。System.Storage.Files名前空間は、FileItemおよびDirectoryItemの2つのクラスを持つ。これらのクラスおよびそのメソッドのメンバは、図25のスキーマ図を見ると容易に推測できる。FileItemおよびDirectoryItemは、ストレージプラットフォームAPIからは読み取り専用である。それらを修正するためには、Win32 APIを使用するか、またはSystem.IOのクラスを使用する必要がある。
c) System. Storage. Overview of Files 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.

d)コード例
この節では、System.Storage.Files内でのクラスの使用を例示する3つのコード例を取りあげる。
d) Code Example In this section, System. Storage. Take three code examples that illustrate the use of classes within Files.

(1)ファイルを開き書き込む
この実施例は、「従来」のファイル操作の仕方を示している。
(1) Opening and writing a file This embodiment shows a "conventional" file operation method.

Figure 2007521532
Figure 2007521532

3行目では、FindByPathメソッドを使用してファイルを開く。7行目は、格上げされたプロパティIsReadOnlyを使用して、ファイルが書き込み可能かどうかをチェックすることを示している。書き込み可能であれば、9行目で、FileItemオブジェクト上でOpenWrite()を使用して、ファイルストリームを取得する。   In line 3, the file is opened using the FindByPath method. Line 7 indicates that the promoted property IsReadOnly is used to check whether the file is writable. If it is writable, the file stream is acquired by using OpenWrite () on the FileItem object in the ninth line.

(2)クエリの使用
ストレージプラットフォームストアは、ファイルシステムから格上げされたプロパティを保持するので、ファイルに対しリッチなクエリを容易に実行することが可能である。この実施例では、過去3日以内に修正されたすべてのファイルの一覧が表示される。
(2) Use of queries The storage platform store holds properties promoted from the file system, so that rich queries can be easily executed on files. In this embodiment, a list of all files modified within the last three days is displayed.

Figure 2007521532
Figure 2007521532

以下に、クエリのもう1つの使用例を示す−これは、ある型(=拡張)のすべての書き込み可能なファイルを見つける。   Below is another example of the use of a query-this finds all writable files of a certain type (= extension).

Figure 2007521532
Figure 2007521532

e)ドメインビヘイビア
一実施形態では、ファイルクラスは、標準のプロパティおよびメソッドに加えて、さらに、ドメインビヘイビア(手書きコーディングのプロパティおよびメソッド)を持つ。これらのビヘイビアは、一般に、対応するSystem.IOクラス内のメソッドに基づく。
e) Domain Behavior In one embodiment, the file class has domain behavior (handwritten coding properties and methods) in addition to the standard properties and methods. These behaviors are generally described in the corresponding System. Based on methods in the IO class.

J.まとめ
これまでに例示したように、本発明は、データの編成、検索、および共有のためのストレージプラットフォームを対象とする。本発明のストレージプラットフォームは、既存のファイルシステムおよびデータベースシステムを超えてデータストレージの概念を拡張し、広げるものであり、リレーショナル(表形式)データ、XML、およびItemと呼ばれる新しいデータ形態などの、構造化、非構造化、または半構造化データを含むすべての型のデータ用のストアとなるように設計されている。本発明のストレージプラットフォームでは、共通のストレージ基盤および図式化されたデータを通じて、より効率的なアプリケーション開発を消費者、知識労働者、および企業向けに行うことができる。これは、データモデルに固有の機能を利用可能にするだけでなく、既存のファイルシステムおよびデータベースアクセス方法も包含し、拡張する機能豊富な拡張可能アプリケーションプログラミングインターフェースを備える。本発明の広範な概念から逸脱することなく、上述の実施形態に対し変更を加えられることは理解される。したがって、本発明は、開示されている特定の実施形態に限定されず、付属の請求項の定義に従って本発明の趣旨および範囲内にあるすべての修正形態を対象とすることを意図されている。
J. et al. Summary As illustrated 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 and database systems, and includes structures such as relational (tabular) data, XML, and new data forms called Items. Designed to be a store for all types of data, including structured, 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 as defined by 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.

付録A   Appendix A

Figure 2007521532
ItemContext作成および管理メンバ
//アプリケーションは、ItemContextオブジェクトを直接作成できず、またItemContextからクラスを派生させることもできない。
interal ItemContext();
//指定されたパス、またはパスが指定されていない場合には、ローカルコンピュータ上の既定のストアを検索するために使用できるItemContextを作成する。
public static ItemContext Open();
public static ItemContext Open(string path);
public static ItemContext Open(params string[] paths);
//ItemContextが作成された場合に指定されたパスを返す。
public string[] GetOpenPaths();
//このItemContextのコピーを作成する。コピーは、独立のトランザクション、キャッシュ、および更新状態を持つ。キャッシュは、最初は空になる。クローン作成されたItemContextを使用することは、同じ(複数の)アイテムドメインを使用して新しいItemContextを開くことよりも効率的であると予想される。
public ItemContext Clone();
//ItemContextを閉じる。閉じられた後にItemContextを使用しようとすると、ObjectDisposedExceptionが発生する。
public void Close();
void IDisposable.Dispose();
//ItemContextが開かれたときに指定されたドメインがリモートコンピュータに解決する場合にTrue。
public bool IsRemote {get;}
//要求されたサービス型を供給することができるオブジェクトを返す。要求されたサービスを提供できない場合にはNULLを返す。IServiceProviderパターンを使用すると、通常は使用されない、また使用すれば開発者を混乱させる可能性のあるAPIをItemContextクラスから取り除くことができる。ItemContextは、サービスIItemSerialization、IStoreObjectCacheを提供することができる。
public object GetService(Type serviceType);
関係するメンバを更新する
//修正されたすべてのオブジェクトおよびMarkForCreateまたはMarkForDeleteに渡されるすべてのオブジェクトにより表される変更を保存する。更新競合が検出された場合にはUpdateCollisionExceptionをスローすることがある。
public void Update();
//指定されたオブジェクトにより表される変更を保存する。オブジェクトは、修正されたか、またはMarkForCreateまたはMarkForDeleteに渡されていなければならないが、そうでなければArgument−Exceptionがスローされる。更新競合が検出された場合にはUpdateCollisionExceptionをスローすることがある。
public void Update(object objectToUpdate);
public void Update(IEnumerable objectsToUpdate);
//ストアからの指定されたオブジェクトの内容をリフレッシュする。オブジェクトが修正されている場合、変更は上書きされ、オブジェクトはもはや修正されたとみなされない。アイテム、アイテム拡張、または関係オブジェクト以外のものが指定されている場合、ArgumentExceptionをスローする。
public void Refresh(object objectToRefresh);
public void Refresh(IEnumerable objectsToRefresh);
//修正されたオブジェクトが取り出されたときから、それを保存しようとしたときまでの間にストア内でデータが変更されたことを更新で検出した場合に発生する。イベントハンドラが登録されていないない場合、更新は例外をスローする。イベントハンドラが登録されている場合、例外をスローし、更新を中断することができ、それにより、修正されたオブジェクトはストア内のデータを上書きするか、またはストアおよびオブジェクト内で加えられた変更をマージする。
public event ChangeCollisionEventHandler UpdateCollision;
//更新処理中の様々な時点において発生し、更新進捗情報を供給する。
public event UpdateProgressEventhandler UpdateProgress;
//Updateの非同期バージョン
public IAsyncResult BeginUpdate(IAsyncCallback callback, object state);
public IAsyncResult BeginUpdate(object objectToUpdate, IAsyncCallback callback, object state);
public IAsyncResult BeginUpdate(IEnumerable objectsToUpdate, IAsyncCallback callback, object state);
public void EndUpdate(IAsyncResult result);
//Refreshの非同期バージョン
public IAsyncResult BeginRefresh(object objectToRefresh, IAsyncCallback callback, object state);
public IAsyncResult BeginRefresh(IEnumerable objectsToRefresh, IAsyncCallback callback, object state);
public void EndRefresh(IAsyncResult result);
関係メンバのトランザクション処理
//指定された孤立レベルを持つトランザクションを開始する。既定の孤立レベルはReadCommitedである。すべての場合において、分散トランザクションが開始されるが、それは、変更ストリーム型付きアイテムプロパティを包含しなければならない場合があるからである。
public Transaction BeginTransaction();
public Transaction BeginTransaction(System.Data.IsolationLevel isolationLevel);
関係メンバを検索する
//指定された型のオブジェクトについてこのアイテムコンテクスト内で検索するItemSearcherを作成する。アイテム、関係、またはアイテム拡張以外の型が指定されている場合、ArgumentExceptionをスローする。
public ItemSearcher GetSearcher(Type type);
//idを与えられているアイテムを見つける。
public Item FindItemById(ItemId itemId);
//パスを与えられているアイテムを見つける。パスは絶対パスでも相対パスでもよい。相対パスであれば、ItemContextが開かれたときに複数のアイテムドメインが指定されている場合、NotSupportedExceptionがスローされる。そのようなアイテムが存在しない場合には、NULLを返す。アイテムを取り出すために\\machine\shareへの接続をドメインの一部として作成する。アイテムは、そのドメインに関連付けられる。
public Item FindItemByPath(string path);
//パスを与えられているアイテムを見つける。パスは、指定されたアイテムドメインに相対的である。アイテムを取り出すために指定されたドメインへの接続を作成する。アイテムは、そのドメインに関連付けられる。そのようなアイテムが存在しない場合には、NULLを返す。
public Item FindItemByPath (string domain, string path);
//パスを与えられているアイテムの集合を見つける。パスは、ItemContextが開かれたときに指定されたアイテムドメインに相対的である。そのようなアイテムが存在しない場合には、空を返す。
public FindResult FindAllItemsByPath(string path);
//idを与えられている関係を見つける。
public Relatioinship FindRelationshipById(ItemId itemID, RelationshipId relationshipId);
//idを与えられているアイテム拡張を見つける。
public ItemExtension FindItemExtensionById(ItemId itemId, ItemExtensionId itemExtensionId);
//与えられたフィルタ条件をオプションにより満たす指定された型のすべてのアイテム、関係、またはアイテム拡張を見つける。これら以外の型が指定されていれば、ArgumentExceptionをスローする。
public FindResult FindAll(Type type);
public FindResult FindAll(Type type, string filter);
//与えられたフィルタ条件を満たす指定された型の任意のアイテム、関係、またはアイテム拡張を見つける。これら以外の型が指定されていれば、ArgumentExceptionをスローする。そのようなオブジェクトが見つからない場合、NULLを返す。
public object FindOne(Type type, string filter);
//与えられたフィルタ条件を満たす指定された型のアイテム、関係、またはアイテム拡張を見つける。これら以外の型が指定されていれば、ArgumentExceptionをスローする。そのようなオブジェクトが見つからない場合、ObjectNotFoundExceptionをスローする。複数のオブジェクトが見つからなかった場合、MultipleObjectsFoundExceptionをスローする。
public object FindOnly(Type type, string filter);
//与えられたフィルタ条件を満たす指定された型のアイテム、関係、またはアイテム拡張が存在する場合、trueを返す。これら以外の型が指定されていれば、ArgumentExceptionをスローする。
public bool Exists(Type type, string filter);
//検索により返されるオブジェクトがItemContextにより保持されるオブジェクト識別マップにどのように関係するかを指定する。
public SearchCollisionMode SearchCollisionMode {get; set;}
//ResultMappingについてPreserveModifiedObjectsが指定されている場合に発生する。このイベントにより、アプリケーションは、検索により取り出されたデータとともに修正されたオブジェクトを選択的に更新することができる。
public event ChangeCollisionEventHandler SearchCollision;
//他のItemContextからのオブジェクトをこのアイテムコンテクストに組み込む。同じアイテム、関係、アイテム拡張を表すオブジェクトがすでに存在しているわけではない場合、このItemContextの識別マップ、オブジェクトのクローンが作成され、マップに追加される。オブジェクトが存在する場合、これは、SearchCollisionModeと一致する方法で指定されたオブジェクトの状態および内容とともに更新される。
public Item IncorporateItem(Item item);
public Relationship IncorporateRelationship(Relationship relationship);
public ItemExtension IncorporateItemExtension(ItemExtension itemExtension);
}
//ItemContext.UpdateCollisionおよびItemSearcher.SearchCollisionイベントのハンドラ。
public delegate void ChangeCollisionEventHandler(object source, ChangeCollisionEventArgs args);
//ChangeCollisionEventHandlerデリゲートの引数。
public class ChangeCollisionEventArgs : EventArgs
{
//修正されたアイテム、アイテム拡張、または関係オブジェクト。
public object ModifiedObject {get;}
//ストアからのプロパティ。
public IDictionary StoredProperties {get;}
}
//ItemContext.UpdateProgressのハンドラ。
public delegate void UpdateProgressEventHandler(ItemContext itemContext, UpdateProgressEventArgs args);
//UpdateProgressEventHandlerデリゲートの引数。
public class ChangeCollisionEventArgs : EventArgs
{
//現在の更新オペレーション。
public UpdateOperation CurrentOperation {get;}
//現在更新中のオブジェクト。
public object CurrentObject {get;}
}
//検索により返されるオブジェクトがItemContextにより保持されるオブジェクト識別マップにどのように関係するかを指定する。
public enum SearchCollisionMode
{
//新しいオブジェクトを作成し、返さなければならないことを示す。識別マップ内の同じアイテム、アイテム拡張、または関係を表すオブジェクトは無視される。このオプションが指定されている場合、SearchCollisionイベントは発生しない。
DoNotMapSearchResults,
//識別マップからのオブジェクトを返さなければならないことを示す。オブジェクトの内容がアプリケーションにより修正された場合、修正されたオブジェクトの内容は保存される。オブジェクトが修正されていなかった場合、その内容は検索により返されたデータとともに更新される。Applicationは、SearchCollisionイベントに対するハンドラを用意し、必要に応じてオブジェクトを選択的に更新することができる。
PreserveModifiedObjects,
//識別マップからのオブジェクトを返さなければならないことを示す。オブジェクトの内容は、そのオブジェクトがアプリケーションにより修正されていたとしても、検索により返されたデータとともに更新される。このオプションが指定されている場合、SearchCollisionイベントは発生しない。
OverwriteModifiedObjects
}
//現在の更新オペレーション。
public enum UpdateOperation
{
//Updateが最初に呼び出されたときに与えられる。CurrentObjectはnullとなる。
OverallUpdateStarting,
//更新が成功した後、Updateが戻る直前に与えられる。CurrentObjectはNULLとなる。
OverallUpdateCompletedSucessfully,
//Updateが例外をスローする直前に与えられる。CurrentObjectは、例外オブジェクトとなる。
OverallUpdateCompletedUnsuccessfully,
//オブジェクトの更新が開始したときに与えられる。CurrentObjectは、更新に使用されるオブジェクトを参照する。
ObjectUpdateStarting,
//新しい接続が必要な場合に与えられる。CurrentObjectは、ItemContext.Openに渡されるようなアイテムドメインを識別するパスを含む文字列となる。関係のLocationフィールドから開くか、または取り出す。
OpeningConnection
}
}
付録B
namespace System.Storage
{
//アイテムコンテクスト内の特定の型について検索を実行する。
public class ItemSearcher
{
コンストラクタ
Figure 2007521532
ItemContext creation and management member
// Applications cannot create ItemContext objects directly, nor can they derive classes from ItemContext.
interal ItemContext ();
// Create an ItemContext that can be used to search the default store on the local computer if the specified path or path is not specified.
public static ItemContext Open ();
public static ItemContext Open (string path);
public static ItemContext Open (params string [] paths);
// Returns the specified path when an ItemContext is created.
public string [] GetOpenPaths ();
// Make a copy of this ItemContext. The copy has an independent transaction, cache, and update state. The cache is initially empty. Using a cloned ItemContext is expected to be more efficient than opening a new ItemContext using the same item domain (s).
public ItemContext Clone ();
// Close ItemContext. If you try to use ItemContext after it is closed, ObjectDisposedException occurs.
public void Close ();
void IDisposable.Dispose ();
// True if the specified domain resolves to the remote computer when the ItemContext is opened.
public bool IsRemote {get;}
// Returns an object that can supply the requested service type. If the requested service cannot be provided, NULL is returned. The ISServiceProvider pattern can be used to remove APIs from the ItemContext class that are not normally used and that would otherwise confuse developers. ItemContext can provide services IIItem Serialization and IStoreObjectCache.
public object GetService (Type serviceType);
Update related members
// Save the changes represented by all modified objects and all objects passed to MarkForCreate or MarkForDelete. If an update conflict is detected, UpdateCollationException may be thrown.
public void Update ();
// Save the changes represented by the specified object. The object must have been modified or passed to MarkForCreate or MarkForDelete, otherwise an Object-Exception is thrown. If an update conflict is detected, UpdateCollationException may be thrown.
public void Update (object objectToUpdate);
public void Update (IEnumerable objectsToUpdate);
// Refresh the contents of the specified object from the store. If the object has been modified, the changes are overwritten and the object is no longer considered modified. If an item other than an item, item extension, or related object is specified, an ObjectException is thrown.
public void Refresh (object objectToRefresh);
public void Refresh (IEnumerable objectsToRefresh);
// Occurs when the update detects that the data has changed in the store between when the modified object was retrieved and when it was about to save it. If the event handler is not registered, the update throws an exception. If an event handler is registered, it can throw an exception and abort the update, so that the modified object overwrites the data in the store or changes made in the store and the object. Merge.
public event ChangeCollisionEventHandler UpdateCollision;
// Occurs at various points during the update process and supplies update progress information.
public event UpdateProgressEventhandler UpdateProgress;
// Asynchronous version of Update
public IAsyncResult BeginUpdate (IAsyncCallback callback, object state);
public IAsyncResult BeginUpdate (object objectToUpdate, IAsyncCallback callback, object state);
public IAsyncResult BeginUpdate (IEnumerable objectsToUpdate, IAsyncCallback callback, object state);
public void EndUpdate (IAsyncResult result);
// Asynchronous version of Refresh
public IAsyncResult BeginRefresh (object objectToRefresh, IAsyncCallback callback, object state);
public IAsyncResult BeginRefresh (IEnumerable objectsToRefresh, IAsyncCallback callback, object state);
public void EndRefresh (IAsyncResult result);
Transaction processing of related members
// Start a transaction with the specified isolation level. The default isolation level is ReadCommitted. In all cases, a distributed transaction is initiated because it may be necessary to include a change stream typed item property.
public Transaction BeginTransaction ();
public Transaction BeginTransaction (System.Data.IsolationLevel isolationLevel);
Search related members
// Create an ItemSearcher that searches within this item context for objects of the specified type. If a type other than item, relationship, or item extension is specified, it throws ArgumentException.
public ItemSearcher GetSearcher (Type type);
// Find the item given id.
public Item FindItemById (ItemId itemId);
// Find the item given the path. The path may be absolute or relative. If it is a relative path, NotSupportedException is thrown if multiple item domains are specified when the ItemContext is opened. If no such item exists, NULL is returned. Create a connection to \\ machine \ share as part of the domain to retrieve items. An item is associated with its domain.
public Item FindItemByPath (string path);
// Find the item given the path. The path is relative to the specified item domain. Create a connection to the specified domain to retrieve the item. An item is associated with its domain. If no such item exists, NULL is returned.
public Item FindItemByPath (string domain, string path);
// Find the set of items given the path. The path is relative to the item domain specified when the ItemContext is opened. If no such item exists, return empty.
public FindResult FindAllItemsByPath (string path);
// Find the relationship given id.
public Relatioinship FindRelationshipById (ItemId itemID, RelationshipId relationshipId);
// Find the item extension given id.
public ItemExtension FindItemExtensionById (ItemId itemId, ItemExtensionId itemExtensionId);
// Find all items, relationships, or item extensions of the specified type that optionally meet the given filter criteria. If a type other than these is specified, an ArrangementException is thrown.
public FindResult FindAll (Type type);
public FindResult FindAll (Type type, string filter);
// Find any item, relationship, or item extension of the specified type that satisfies the given filter criteria. If a type other than these is specified, an ArrangementException is thrown. Returns NULL if no such object is found.
public object FindOne (Type type, string filter);
// Find an item, relationship, or item extension of the specified type that meets the given filter criteria. If a type other than these is specified, an ArrangementException is thrown. If no such object is found, throw ObjectNotFoundException. If multiple objects are not found, MultipleObjectsFoundException is thrown.
public object FindOnly (Type type, string filter);
// Returns true if an item, relationship, or item extension of the specified type that satisfies the given filter condition exists. If a type other than these is specified, an ArrangementException is thrown.
public bool Exists (Type type, string filter);
// Specifies how the object returned by the search is related to the object identification map held by the ItemContext.
public SearchCollisionMode SearchCollisionMode {get; set;}
// Occurs when PreserveModifiedObjects is specified for ResultMapping. This event allows the application to selectively update the modified object with the data retrieved by the search.
public event ChangeCollisionEventHandler SearchCollision;
// Incorporate objects from other ItemContexts into this item context. If an object representing the same item, relationship, or item extension does not already exist, this ItemContext identification map, a clone of the object, is created and added to the map. If the object exists, it is updated with the state and content of the object specified in a manner consistent with SearchCollectionMode.
public Item IncorporateItem (Item item);
public Relationship IncorporateRelationship (Relationship relationship);
public ItemExtension IncorporateItemExtension (ItemExtension itemExtension);
}
// ItemContext. UpdateCollation and ItemSearcher. Handler for SearchCollision event.
public delegate void ChangeCollisionEventHandler (object source, ChangeCollisionEventArgs args);
// ChangeCollationEventHandler handler argument.
public class ChangeCollisionEventArgs: EventArgs
{
// Modified item, item extension, or relationship object.
public object ModifiedObject {get;}
// Property from the store.
public IDictionary StoredProperties {get;}
}
// ItemContext. UpdateProgress handler.
public delegate void UpdateProgressEventHandler (ItemContext itemContext, UpdateProgressEventArgs args);
// Argument for UpdateProgressEventHandler delegate.
public class ChangeCollisionEventArgs: EventArgs
{
// Current update operation.
public UpdateOperation CurrentOperation {get;}
// The object currently being updated.
public object CurrentObject {get;}
}
// Specifies how the object returned by the search is related to the object identification map held by the ItemContext.
public enum SearchCollisionMode
{
// Indicates that a new object should be created and returned. Objects that represent the same item, item extension, or relationship in the identity map are ignored. When this option is specified, the Search Collation event does not occur.
DoNotMapSearchResults,
// Indicates that an object from the identification map should be returned. When the content of the object is modified by the application, the modified content of the object is saved. If the object has not been modified, its contents are updated with the data returned by the search. Application prepares a handler for the SearchCollision event and can selectively update the object as necessary.
PreserveModifiedObjects,
// Indicates that an object from the identification map should be returned. The contents of the object are updated with the data returned by the search even if the object has been modified by the application. When this option is specified, the Search Collation event does not occur.
OverwriteModifiedObjects
}
// Current update operation.
public enum UpdateOperation
{
// Given when Update is first called. CurrentObject is null.
OverallUpdateStarting,
// Given immediately after the update is successful, just before Update returns. CurrentObject becomes NULL.
OverallUpdateCompletedSucessfully,
// Provided immediately before Update throws an exception. CurrentObject is an exception object.
OverallUpdateCompletedUnsuccessfully,
// Given when an object update starts. CurrentObject refers to the object used for the update.
ObjectUpdateStarting,
// given when a new connection is needed. CurrentObject is an ItemContext. A character string including a path for identifying the item domain as passed to Open. Open or retrieve from the relationship's Location field.
OpeningConnection
}
}
Appendix B
namespace System.Storage
{
// Perform a search for a specific type in the item context.
public class ItemSearcher
{
constructor

Figure 2007521532
プロパティ
//マッチするオブジェクトを識別するために使用されるフィルタ。
public SearchExpressionCollection Filters {get;}
//検索されるドメインを指定するItemContext。
public ItemContext ItemContext {get; set;}
//検索パラメータコレクション。
public ParameterCollection Parameters {get;}
//サーチャーが動作する型。単純検索では、これは、返されるオブジェクトの型である。
public Type TargetType {get; set;}
検索メソッド
//Filtersにより指定された条件を満たすTargetTypeのオブジェクトを見つける。そのようなオブジェクトが存在しない場合には、空のFindResultを返す。
public FindResult FindAll();
public FindResult FindAll(FindOptions findOptions);
public FindResult FindAll(params SortOption[] sortOptions);
//Filtersにより指定された条件を満たすTargetTypeの1つのオブジェクトを見つける。
//そのようなオブジェクトが存在しない場合、NULLを返す。
public object FindOne();
public object FindOne(FindOptions findOptions);
public object FindOne(params SortOption[] sortOptions);
//Filtersにより指定された条件を満たすTargetTypeのオブジェクトを見つける。
//そのようなオブジェクトが見つからない場合、ObjectNotFoundExceptionをスローする。複数のオブジェクトが見つからなかった場合、MultipleObjectsFoundExceptionをスローする。
public object FindOnly();
public object FindOnly(FindOptions findOptions);
//Filtersにより指定された条件を満たすTargetTypeのオブジェクトが存在するかどうかを判別する。
public bool Exists();
//同じ検索を繰り返し効率よく実行するために使用することができるオブジェクトを作成する。
public PreparedFind PrepareFind();
Figure 2007521532
The property
// A filter used to identify matching objects.
public SearchExpressionCollection Filters {get;}
// An ItemContext that specifies the domain to be searched.
public ItemContext ItemContext {get; set;}
// Search parameter collection.
public ParameterCollection Parameters {get;}
// The type on which the searcher operates. For simple searches, this is the type of object returned.
public Type TargetType {get; set;}
Search method
// Find a TargetType object that satisfies the conditions specified by Filters. If no such object exists, an empty FindResult is returned.
public FindResult FindAll ();
public FindResult FindAll (FindOptions findOptions);
public FindResult FindAll (params SortOption [] sortOptions);
// Find one object of TargetType that satisfies the conditions specified by Filters.
// If no such object exists, return NULL.
public object FindOne ();
public object FindOne (FindOptions findOptions);
public object FindOne (params SortOption [] sortOptions);
// Find a TargetType object that satisfies the conditions specified by Filters.
// If no such object is found, throw ObjectNotFoundException. If multiple objects are not found, MultipleObjectsFoundException is thrown.
public object FindOnly ();
public object FindOnly (FindOptions findOptions);
// Determine whether there is a TargetType object that satisfies the condition specified by Filters.
public bool Exists ();
// Create an object that can be used to perform the same search repeatedly and efficiently.
public PreparedFind PrepareFind ();

Figure 2007521532
Figure 2007521532

Figure 2007521532
Figure 2007521532

Figure 2007521532
Figure 2007521532

Figure 2007521532
Figure 2007521532

付録C
namespace System.Storage
{
public abstract class FindResult : IAsyncObjectReader
{
public FindResult ();
//FindResultを結果の中の次の位置に移動する。
public bool Read ();
public IAsyncResult BeginRead(AsyncCallback callback, object state);
public bool EndRead(IAsyncResult asyncResult);
//現在のオブジェクト。
public object Current {get;}
//FindResultがオブジェクトを含むかどうかを返す。
public bool HasResults {get;}
//FindResultが閉じられているかどうかを返す。
public bool IsClosed {get;}
//このFindResult内のアイテムの型を返す。
public Type ObjectType {get;}
//FindResultを閉じる。
public void Close();
void IDisposable.Dispose();
//現在位置から始まる、FindResult上の列挙子を返す。FindResult上の列挙子を進めることで、すべての列挙子が進むだけでなく、FindResult自体も進む。
IEnumerator IEnumerable.GetEnumerator();
public FindResultEnumerator GetEnumerator();
}
public abstract class FindResultEnumerator : IEnumerator, IDisposable
{
public abstract object Current {get;}
public abstract bool MoveNext();
public abstract void Reset();
public abstract void Close();
void IDisposable.Dispose();
}
}
namespace System
{
//オブジェクト上で繰り返すための共通インターフェース
public interface IObjectReader : IEnumerable, IDisposable
Appendix C
namespace System.Storage
{
public abstract class FindResult: IAsyncObjectReader
{
public FindResult ();
// Move FindResult to the next position in the result.
public bool Read ();
public IAsyncResult BeginRead (AsyncCallback callback, object state);
public bool EndRead (IAsyncResult asyncResult);
// Current object.
public object Current {get;}
// Return whether FindResult contains an object.
public bool HasResults {get;}
// Return whether FindResult is closed.
public bool IsClosed {get;}
// Returns the type of items in this FindResult.
public Type ObjectType {get;}
// Close FindResult.
public void Close ();
void IDisposable.Dispose ();
// Returns an enumerator on FindResult starting from the current position. By advancing the enumerator on the FindResult, not only all the enumerators advance, but also the FindResult itself.
IEnumerator IEnumerable.GetEnumerator ();
public FindResultEnumerator GetEnumerator ();
}
public abstract class FindResultEnumerator: IEnumerator, IDisposable
{
public abstract object Current {get;}
public abstract bool MoveNext ();
public abstract void Reset ();
public abstract void Close ();
void IDisposable.Dispose ();
}
}
namespace System
{
// Common interface to iterate over objects
public interface IObjectReader: IEnumerable, IDisposable

Figure 2007521532
Figure 2007521532

本発明の複数の態様が組み込まれうるコンピュータシステムを表すブロック図である。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 according to the present invention. 本発明の様々な実施形態におけるItem、Item Folders、およびCategories間の構造的関係を例示する図である。FIG. 4 illustrates a structural relationship between Items, Item Folders, and Categories in various embodiments of the invention. 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、そのメンバItem、およびItem FolderとそのメンバItemとの間の相互接続のRelationshipsを例示するブロック図である。FIG. 6 is a block diagram illustrating Item Folder, its Member Items, and the Relationship Relationships between the Item Folder and its Member Items. Category(またも、Item自体である)、そのメンバItem、およびCategoryとそのメンバItemとの間の相互接続のRelationshipsを例示するブロック図である。FIG. 6 is a block diagram illustrating Category (also Item itself), its Member Item, and the interconnection Relationship between Category and its Member Item. 本発明による、ストレージプラットフォームのデータモデルの参照型階層を例示する図である。FIG. 6 illustrates a reference type hierarchy of a storage platform data model according to the present invention. 本発明の一実施形態により、関係を分類する方法を例示する図である。FIG. 6 illustrates a method for classifying relationships according to one embodiment of the present invention. 本発明の一実施形態により、通知メカニズムを例示する図である。FIG. 6 illustrates a notification mechanism according to an embodiment of the present invention. 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. 3 illustrates a data change detection process according to one embodiment of the invention. 例示的なディレクトリツリーを示す図である。FIG. 3 illustrates an example directory tree. 本発明の一態様によりディレクトリベースのファイルシステムの既存のフォルダがストレージプラットフォームのデータストアに移動される実施例を示す図である。FIG. 6 illustrates an example in which an existing folder of a directory-based file system is moved to a storage platform data store according to an aspect of the present invention. 本発明の一態様によるContainment Foldersの概念を示す図である。It is a figure which shows the concept of Containment Folders by one aspect | mode of this invention. ストレージプラットフォーム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とElements)の関係図である。FIG. 4 is a relationship diagram of an exemplary Contacts schema (Item and Elements). 例示的なContactsスキーマ(ItemとElements)の関係図である。FIG. 4 is a relationship diagram of an exemplary Contacts schema (Item and Elements). 本発明の一態様によるストレージプラットフォームAPIのランタイムフレームワークを示す図である。FIG. 3 illustrates a runtime framework of a storage platform API according to an aspect of the present invention. 本発明の一実施形態による、FindAllオペレーションの実行を例示する図である。FIG. 6 illustrates execution of a FindAll operation according to one embodiment of the present invention. 本発明の一態様により、ストレージプラットフォームのSchemaからストレージプラットフォームAPIクラスを生成するプロセスを例示する図である。FIG. 6 illustrates a process for generating a storage platform API class from a storage platform Schema, according to one aspect of the invention. 本発明の他の態様による、File APIが基づくスキーマを例示する図である。FIG. 4 illustrates a schema on which a File API is based, according to another aspect of the present invention. 本発明の一実施形態により、データセキュリティの目的に使用されるアクセスマスク形式を例示する図である。FIG. 6 illustrates an access mask format used for data security purposes according to an embodiment of the present invention. 本発明の一態様の一実施形態による、既存のセキュリティ領域から切り出される新しいまったく同じように保護されているセキュリティ領域を示す図である。FIG. 3 illustrates a new, exactly the same protected security area that is cut from an existing security area, according to one embodiment of one aspect of the present invention. 本発明の一態様の一実施形態による、Item検索ビューの概念を例示する図である。FIG. 6 illustrates the concept of an Item search view according to one embodiment of one aspect of the present invention. 本発明の一実施形態による、例示的なItem階層を例示する図である。FIG. 4 illustrates an exemplary Item hierarchy according to one embodiment of the invention.

Claims (91)

Item、Element、およびRelationshipのうちの少なくとも1つを含むデータストアであって、
前記Itemは、データストアに格納可能なデータの1つのユニットであり、さらに前記Elementおよび前記Relationshipを含み、
前記Elementは、1つまたは複数のフィールドを含む型の1つのインスタンスであり、
前記Relationshipは、少なくとも2つのItem間の1つのリンクであることを特徴とするデータストア。
A data store including at least one of Item, Element, and Relationship,
The Item is a unit of data that can be stored in a data store, and further includes the Element and the Relationship.
The Element is an instance of a type that includes one or more fields,
The relationship is a link between at least two items.
請求項1に記載のデータストアであって、前記データストアは、複数のItemをさらに含み、前記複数のItemは1つのItem Folder、および、前記Item Folderのメンバである少なくとも1つの他のItemを含むことを特徴とするデータストア。   The data store of claim 1, wherein the data store further comprises a plurality of Items, the plurality of Items comprising an Item Folder and at least one other Item that is a member of the Item Folder. A data store characterized by containing. 請求項1に記載のデータストアであって、前記データストアは、複数のItemをさらに含み、前記複数のItemは1つのCategory、および、前記Categoryのメンバである少なくとも1つの他のItemを含むことを特徴とするデータストア。   2. The data store of claim 1, wherein the data store further includes a plurality of Items, the plurality of Items including one Category and at least one other Item that is a member of the Category. A data store characterized by 2つのItemの間のRelationshipは、ハードウェア/ソフトウェアインターフェースシステムにより自動的に確立されることを特徴とする請求項1に記載のデータストア。   The data store of claim 1, wherein a Relationship between two Items is automatically established by a hardware / software interface system. 前記Elementは、ハードウェア/ソフトウェアインターフェースシステムにより理解可能であることを特徴とする請求項1に記載のデータストア。   The data store according to claim 1, wherein the Element is understandable by a hardware / software interface system. 請求項1に記載のデータストアであって、前記データストアは、第2のElementをさらに含み、前記Relationshipは、前記第2のElementを含むことを特徴とするデータストア。   The data store according to claim 1, wherein the data store further includes a second Element, and the Relationship includes the second Element. 請求項1に記載のデータストアであって、前記データストアは、Core Itemの集合を定義するCore Schemaをさらに含み、これにより、ハードウェア/ソフトウェアインターフェースシステムは、所定の、予測可能な方法で、Core Itemの前記集合を理解し、直接処理することを特徴とするデータストア。   The data store of claim 1, wherein the data store further includes a Core Schema that defines a collection of Core Items, whereby the hardware / software interface system is in a predetermined, predictable manner, A data store that understands and directly processes the set of Core Items. Core Itemの前記集合からのそれぞれのItemは、Common Single Base Itemから、直接的にまたは間接的に派生されることを特徴とする請求項7に記載のデータストア。   The data store of claim 7, wherein each Item from the set of Core Items is derived directly or indirectly from a Common Single Base Item. 前記Common Single Base Itemは、Base Schema内の基礎的なItemであることを特徴とする請求項7に記載のデータストア。   8. The data store according to claim 7, wherein the common single base item is a basic item in the base schema. 少なくとも2つのItemを含むデータストアに対するコンピュータ読取り可能命令を格納するコンピュータ読取り可能記憶媒体であって、前記Itemはそれぞれ、少なくとも1つのElementを含み、前記Itemはそれぞれ、少なくとも1つの他のItemとのRelationshipを共有することを特徴とするコンピュータ読取り可能記憶媒体。   A computer readable storage medium for storing computer readable instructions for a data store including at least two Items, wherein each of the Items includes at least one Element, and each of the Items is associated with at least one other Item. A computer-readable storage medium characterized by sharing a Relationship. 請求項10に記載のコンピュータ読取り可能記憶媒体であって、前記コンピュータ読取り可能記憶媒体は、
前記データストアがItem、Element、およびRelationshipのうちの少なくとも1つを格納する命令と、
前記Itemが前記Elementおよび前記Relationshipを前記データストアとともにさらに含む命令と、
前記Elementが1つまたは複数のフィールドの型を含む命令と、
2つのItemの間にRelationshipを形成する命令と
をさらに含むことを特徴とするコンピュータ読取り可能記憶媒体。
The computer readable storage medium of claim 10, wherein the computer readable storage medium comprises:
Instructions for the data store to store at least one of an Item, an Element, and a Relationship;
An instruction in which the Item further includes the Element and the Relationship along with the data store;
An instruction in which the Element includes one or more field types;
The computer-readable storage medium further comprising instructions for forming a Relationship between the two items.
コンピュータシステムであって、
複数のElementであって、前記複数のElementのうちのそれぞれのElementが1つまたは複数のフィールドを含む型のインスタンスを構成する、前記複数のElementと、
複数のItemであって、前記複数のItemのうちのそれぞれのItemがハードウェア/ソフトウェアインターフェースシステムにより操作することができる情報の格納可能な離散的ユニットを構成し、それぞれの前記Itemは少なくとも1つのElementを含む、複数のItemと、
複数のRelationshipであって、前記複数のRelationshipのうちのそれぞれのRelationshipが少なくとも2つのItemの間のリンクである、複数のRelationshipと、
前記複数のItem、前記複数のElement、および前記複数のRelationshipを含む、データストアと、
前記データストアを管理し、前記複数のItemを操作するためのストレージプラットフォームと
を備えることを特徴とするコンピュータシステム。
A computer system,
A plurality of elements, each of the plurality of elements constituting an instance of a type including one or more fields; and
A plurality of Items, each of the Items comprising a discrete unit of information that can be manipulated by a hardware / software interface system, wherein each Item is at least one A plurality of Items, including Elements;
A plurality of Relationships, each of the plurality of Relationships being a link between at least two Items; and
A data store comprising the plurality of Items, the plurality of Elements, and the plurality of Relationships;
A computer system comprising: a storage platform for managing the data store and operating the plurality of Items.
前記複数のItemのうちのそれぞれのItemは、複数のItem Folderのうちの少なくとも1つのItem Folderに属し、それぞれの前記Itemは、前記複数のItem Folderのうちの複数のItem Folderに属すことができることを特徴とする請求項12に記載のコンピュータシステム。   Each Item of the plurality of Items may belong to at least one Item Folder of the plurality of Item Folders, and each of the Items may belong to a plurality of Item Folders of the plurality of Item Folders. The computer system according to claim 12. 前記Item Folderを削除しても、前記Itemが自動的に削除されることはないことを特徴とする請求項13に記載のコンピュータシステム。   14. The computer system according to claim 13, wherein the item is not automatically deleted even if the item folder is deleted. Itemは、いずれのItem Folderにも属さなくなった場合に自動的に削除されることを特徴とする請求項13に記載のコンピュータシステム。   14. The computer system according to claim 13, wherein the Item is automatically deleted when it no longer belongs to any Item Folder. 前記Itemは、ただ1つのItem Folderのメンバであり、前記Item Folderが削除される場合に自動的に削除されることを特徴とする請求項13に記載のコンピュータシステム。   14. The computer system according to claim 13, wherein the Item is a member of only one Item Folder, and is automatically deleted when the Item Folder is deleted. Itemは、動的に既定のItem Folderのメンバになることを特徴とする請求項13に記載のコンピュータシステム。   14. The computer system of claim 13, wherein the Item dynamically becomes a member of a default Item Folder. 前記Itemは、ただ1つのItem Folderのメンバであり、前記Item Folderが削除されると、自動的に既定のItem Folderのメンバになることを特徴とする請求項13に記載のコンピュータシステム。   14. The computer system according to claim 13, wherein the Item is a member of only one Item Folder and automatically becomes a member of a default Item Folder when the Item Folder is deleted. データストア内でItemを編成する方法であって、前記Itemは(a)オペレーティングシステムにより操作できる情報の離散的ユニット、(b)少なくとも1つのElement、および(c)少なくとも1つの他のItemとのRelationshipを含み、前記方法は、前記Itemを少なくとも2つのItem Folderのメンバとすることができるが、前記Itemは前記Item Folderのどれにも所有されず、前記Item Folderのどれかを削除しても前記Itemを自動的には削除されないようにする手段を含むことを特徴とする方法。   A method for organizing Items within a data store, wherein the Items are (a) discrete units of information that can be manipulated by the operating system, (b) at least one Element, and (c) at least one other Item. The method may include a Relationship, and the method may make the Item a member of at least two Item Folders, but the Item is not owned by any of the Item Folders, and any of the Item Folders may be deleted. A method comprising preventing the Item from being automatically deleted. 前記Itemは、Item Folderのメンバであるが、前記Item Folderにより所有されず、前記Item Folderを削除しても、前記Itemは自動的には削除されないことを特徴とする請求項19に記載の方法。   20. The method of claim 19, wherein the Item is a member of the Item Folder, but is not owned by the Item Folder, and the Item is not automatically deleted when the Item Folder is deleted. . 前記Itemは、いずれのItem Folderにも属さなくなった場合に自動的に削除されることを特徴とする請求項20に記載の方法。   21. The method of claim 20, wherein the Item is automatically deleted when it no longer belongs to any Item Folder. 前記Itemは、いずれのItem Folderにも属さなくなった場合に、自動的に既定のItem Folderのメンバになることを特徴とする請求項20に記載の方法。   21. The method of claim 20, wherein the Item automatically becomes a member of a default Item Folder when it no longer belongs to any Item Folder. 前記Itemは、ただ1つのItem Folderのメンバであり、前記Item Folderが削除される場合に、自動的に削除されることを特徴とする請求項20に記載の方法。   21. The method of claim 20, wherein the Item is a member of only one Item Folder and is automatically deleted when the Item Folder is deleted. 前記Itemは、ただ1つのItem Folderのメンバであり、前記Item Folderが削除されると、自動的に既定のItem Folderのメンバになることを特徴とする請求項20に記載の方法。   21. The method of claim 20, wherein the Item is a member of only one Item Folder and automatically becomes a member of a default Item Folder when the Item Folder is deleted. コンピュータシステムであって、
少なくとも1つのItemを含む複数のItemであって、前記複数のItemのうちのそれぞれがハードウェア/ソフトウェアインターフェースシステムにより操作することができる情報の格納可能な離散的ユニットを構成する、複数のItemと、
少なくとも1つのItem Folderを含む複数のItem Folderであって、前記複数のItem Folderは、前記Itemに対する編成構造を構成する、複数のItem Folderと、
前記複数のItemを操作するためのハードウェア/ソフトウェアインターフェースシステムであって、前記複数のItemのそれぞれが、前記複数のItem Folderの少なくとも1つに属し、前記複数のItemのそれぞれが、前記複数のItem Folderのうちの複数のItem Folderに属することができる、ハードウェア/ソフトウェアインターフェースシステムと
を備えることを特徴とするコンピュータシステム。
A computer system,
A plurality of Items including at least one Item, each of which constitutes a discrete unit capable of storing information that can be operated by a hardware / software interface system; and ,
A plurality of Item Folders including at least one Item Folder, wherein the plurality of Item Folders constitute a knitting structure for the Item; and
A hardware / software interface system for operating the plurality of Items, wherein each of the plurality of Items belongs to at least one of the plurality of Item Folders, and each of the plurality of Items is the plurality of the plurality of Items. A computer system comprising: a hardware / software interface system that can belong to a plurality of Item Folders of Item Folders.
Itemは、Item Folderのメンバであるが、前記Item Folderにより所有されず、前記Item Folderを削除しても、前記Itemは自動的には削除されないことを特徴とする請求項25に記載のコンピュータシステム。   26. The computer system according to claim 25, wherein the Item is a member of the Item Folder, but is not owned by the Item Folder, and the Item is not automatically deleted even if the Item Folder is deleted. . Itemは、いずれのItem Folderにも属さなくなった場合に自動的に削除されることを特徴とする請求項25に記載のコンピュータシステム。   26. The computer system according to claim 25, wherein an Item is automatically deleted when it no longer belongs to any Item Folder. 前記Itemは、ただ1つのItem Folderのメンバであり、前記Item Folderが削除される場合に自動的に削除されることを特徴とする請求項25に記載のコンピュータシステム。   26. The computer system of claim 25, wherein the Item is a member of only one Item Folder, and is automatically deleted when the Item Folder is deleted. それぞれのItemは、少なくとも1つのItem Folderのメンバであるが、前記Item Folderにより所有されず、前記Item Folderを削除しても、前記Itemは自動的には削除されないことを特徴とする請求項25に記載のコンピュータシステム。   26. Each Item is a member of at least one Item Folder, but is not owned by the Item Folder, and even if the Item Folder is deleted, the Item is not automatically deleted. The computer system described in 1. 請求項25に記載のコンピュータシステムであって、前記コンピュータシステムは、少なくとも1つのCategoryを含む複数のCategoryをさらに含み、前記複数のCategoryは、前記Itemの編成構造を構成することを特徴とするコンピュータシステム。   26. The computer system according to claim 25, wherein the computer system further includes a plurality of categories including at least one category, and the plurality of categories constitute an organization structure of the item. system. 前記Categoryは、Itemプロパティにより定義されることを特徴とする請求項30に記載のコンピュータシステム。   The computer system according to claim 30, wherein the Category is defined by an Item property. 前記複数のCategoryのうちの1つは、Itemプロパティにより定義され、前記複数のCategoryのうちの特定のCategoryに対するItemプロパティを含むただ1つのItemを、前記特定のCategoryのメンバとすることができることを特徴とする請求項31に記載のコンピュータシステム。   One of the plurality of Categories is defined by an Item property, and only one Item including an Item property for a specific Category among the plurality of Categories can be a member of the specific Category. 32. A computer system as claimed in claim 31 characterized in that: 前記複数のCategoryのそれぞれは、Itemプロパティにより定義されることを特徴とする請求項30に記載のコンピュータシステム。   The computer system according to claim 30, wherein each of the plurality of Categories is defined by an Item property. 前記複数のCategoryのそれぞれは、Itemプロパティにより定義され、前記複数のCategoryのうちの特定のCategoryに対するItemプロパティを含むItemのみを、前記特定のCategoryのメンバとすることができることを特徴とする請求項33に記載のコンピュータシステム。   Each of the plurality of Categories is defined by an Item property, and only an Item including an Item property for a specific Category among the plurality of Categories can be a member of the specific Category. 34. The computer system according to 33. Itemを操作することができるハードウェア/ソフトウェアインターフェースシステムであって、前記Itemは、オペレーティングシステムのシェルにより公開されているオブジェクト上で通常サポートされているプロパティの基本集合を含む情報の離散的ユニットを含むことを特徴とするハードウェア/ソフトウェアインターフェースシステム。   A hardware / software interface system capable of manipulating Items, said Item comprising a discrete unit of information including a basic set of properties normally supported on objects exposed by the operating system shell. A hardware / software interface system comprising: 前記Itemは、オペレーティングシステムにより操作される情報の基礎的なユニットであることを特徴とする請求項35に記載のハードウェア/ソフトウェアインターフェースシステム。   36. The hardware / software interface system of claim 35, wherein the Item is a basic unit of information operated by an operating system. 前記Itemは、Item Folderのメンバであることを特徴とする請求項36に記載のハードウェア/ソフトウェアインターフェースシステム。   The hardware / software interface system according to claim 36, wherein the Item is a member of an Item Folder. 前記Itemは、前記Item Folderにより所有されず、前記Item Folderを削除しても、前記Itemは自動的には削除されないことを特徴とする請求項37に記載のハードウェア/ソフトウェアインターフェースシステム。   38. The hardware / software interface system according to claim 37, wherein the Item is not owned by the Item Folder, and even if the Item Folder is deleted, the Item is not automatically deleted. 前記Itemは、いずれのItem Folderにも属さなくなった場合に自動的に削除されることを特徴とする請求項38に記載のハードウェア/ソフトウェアインターフェースシステム。   39. The hardware / software interface system according to claim 38, wherein the Item is automatically deleted when it no longer belongs to any Item Folder. 前記Itemは、ただ1つのItem Folderのメンバであり、前記Item Folderが削除される場合に、自動的に削除されることを特徴とする請求項38に記載のハードウェア/ソフトウェアインターフェースシステム。   39. The hardware / software interface system according to claim 38, wherein the Item is a member of only one Item Folder, and is automatically deleted when the Item Folder is deleted. Itemに対するコンピュータ読取り可能命令を格納するコンピュータ読取り可能記憶媒体であって、前記Itemは、ハードウェア/ソフトウェアインターフェースシステムにより操作できる情報の離散的ユニットを含むことを特徴とするコンピュータ読取り可能記憶媒体。   A computer readable storage medium storing computer readable instructions for an Item, the Item comprising discrete units of information operable by a hardware / software interface system. ハードウェア/ソフトウェアインターフェースシステムに対するコンピュータ読取り可能命令を格納するコンピュータ読取り可能記憶媒体であって、前記オペレーティングシステムは、
少なくとも1つのItemを含む複数のItemを操作する手段であって、前記複数のItemのうちのそれぞれがハードウェア/ソフトウェアインターフェースシステムにより操作することができる情報の離散的ユニットを構成する、複数のItemを操作する手段と、
少なくとも1つのItem Folderを含む複数のItem Folderを操作する手段であって、前記複数のItem Folderは、前記Itemに対する編成構造を構成する、複数のItem Folderを操作する手段とを備え、
前記複数のItemのそれぞれが、前記複数のItem Folderの少なくとも1つに属し、前記複数のItemのそれぞれが、前記複数のItem Folderのうちの複数のItem Folderに属することができることを特徴とするコンピュータ読取り可能記憶媒体。
A computer readable storage medium storing computer readable instructions for a hardware / software interface system, the operating system comprising:
Means for manipulating a plurality of Items including at least one Item, each of the plurality of Items constituting a discrete unit of information that can be manipulated by a hardware / software interface system Means for operating
Means for operating a plurality of Item Folders including at least one Item Folder, the plurality of Item Folders comprising means for operating a plurality of Item Folders constituting a knitting structure for the Items;
Each of the plurality of Items may belong to at least one of the plurality of Item Folders, and each of the plurality of Items may belong to a plurality of Item Folders of the plurality of Item Folders. A readable storage medium.
コンピュータシステムのハードウェア/ソフトウェアインターフェースシステムに対するコンピュータ読取り可能命令を格納するコンピュータ読取り可能記憶媒体であって、前記ハードウェア/ソフトウェアインターフェースシステムは、Itemである情報の複数の離散的ユニットを操作し、前記Itemは前記ハードウェア/ソフトウェアインターフェースシステムにより管理される複数のRelationshipにより相互接続されることを特徴とするコンピュータ読取り可能記憶媒体。   A computer readable storage medium storing computer readable instructions for a hardware / software interface system of a computer system, the hardware / software interface system operating a plurality of discrete units of information that are Items, Item is a computer-readable storage medium characterized by being interconnected by a plurality of Relationships managed by the hardware / software interface system. 第1のItemは、それ自体から第2のItemへのRelationshipを持つことを特徴とする請求項43に記載のコンピュータ読取り可能記憶媒体。   44. The computer-readable storage medium of claim 43, wherein the first Item has a Relationship from itself to the second Item. 前記第1のItemは、Item Folderであることを特徴とする請求項44に記載のコンピュータ読取り可能記憶媒体。   45. The computer-readable storage medium of claim 44, wherein the first Item is an Item Folder. 前記第2のItemは、Item Folderであることを特徴とする請求項45に記載のコンピュータ読取り可能記憶媒体。   46. The computer readable storage medium of claim 45, wherein the second Item is an Item Folder. 前記第2のItemは、Categoryであることを特徴とする請求項45に記載のコンピュータ読取り可能記憶媒体。   46. The computer-readable storage medium of claim 45, wherein the second Item is a Category. 前記第2のItemは、Item FolderまたはCategoryではないItemであることを特徴とする請求項45に記載のコンピュータ読取り可能記憶媒体。   The computer-readable storage medium of claim 45, wherein the second Item is an Item that is not an Item Folder or Category. 前記ItemからのそれぞれのItemは、少なくとも1つの他のItemへのRelationshipを持つことを特徴とする請求項45に記載のコンピュータ読取り可能記憶媒体。   46. The computer readable storage medium of claim 45, wherein each Item from the Item has a Relationship to at least one other Item. Itemの部分集合は、Item Folderを含むことを特徴とする請求項45に記載のコンピュータ読取り可能記憶媒体。   The computer-readable storage medium of claim 45, wherein the subset of Items includes Item Folder. Itemの部分集合は、Categoryを含むことを特徴とする請求項45に記載のコンピュータ読取り可能記憶媒体。   The computer-readable storage medium of claim 45, wherein the subset of Items includes a Category. Itemの部分集合は、Item FolderまたはCategoryではないItemを含むことを特徴とする請求項45に記載のコンピュータ読取り可能記憶媒体。   46. The computer-readable storage medium of claim 45, wherein the subset of Items includes Items that are not Item Folders or Categories. コンピュータシステムのハードウェア/ソフトウェアインターフェースシステムに対するコンピュータ読取り可能命令を格納するコンピュータ読取り可能記憶媒体であって、前記ハードウェア/ソフトウェアインターフェースシステムは、Itemである、前記ハードウェア/ソフトウェアインターフェースシステムにより理解可能なプロパティを持つ情報の複数の離散的ユニットを操作することを特徴とするコンピュータ読取り可能記憶媒体。   A computer readable storage medium storing computer readable instructions for a hardware / software interface system of a computer system, wherein the hardware / software interface system is an Item, understandable by the hardware / software interface system A computer readable storage medium characterized by operating a plurality of discrete units of information having properties. 前記ハードウェア/ソフトウェアインターフェースシステムは、Itemの少なくとも1つおよびプロパティの少なくとも1つを定義する基本スキーマを含むことを特徴とする請求項53に記載のコンピュータ読取り可能記憶媒体。   54. The computer readable storage medium of claim 53, wherein the hardware / software interface system includes a basic schema that defines at least one of Items and at least one of properties. 前記基本スキーマ内のItemの少なくとも1つは、基礎的なItemであり、これは基礎的なItem型を構成し、そこからハードウェア/ソフトウェアインターフェースシステム内で操作される他のすべてのItemが派生することを特徴とする請求項54に記載のコンピュータ読取り可能記憶媒体。   At least one of the items in the basic schema is a basic item, which constitutes a basic item type from which all other items that operate in the hardware / software interface system are derived. 55. The computer readable storage medium of claim 54, wherein: 前記基礎的なItem型は、前記Itemがメンバである少なくとも0個のCategoryを参照するプロパティを含むことを特徴とする請求項55に記載のコンピュータ読取り可能記憶媒体。   The computer-readable storage medium of claim 55, wherein the basic Item type includes a property that references at least zero Categories of which the Item is a member. 前記基礎的なItem型は、ハードウェア/ソフトウェアインターフェースシステム内の前記Itemを一意に識別するプロパティを含むことを特徴とする請求項55に記載のコンピュータ読取り可能記憶媒体。   56. The computer readable storage medium of claim 55, wherein the basic Item type includes a property that uniquely identifies the Item within a hardware / software interface system. 前記基本スキーマ内のプロパティの少なくとも1つは、基礎的なプロパティであり、これは基礎的なプロパティ型を構成し、そこからハードウェア/ソフトウェアインターフェースシステム内で使用される他のすべてのプロパティが派生することを特徴とする請求項54に記載のコンピュータ読取り可能記憶媒体。   At least one of the properties in the basic schema is a basic property, which constitutes a basic property type from which all other properties used in the hardware / software interface system are derived 55. The computer readable storage medium of claim 54, wherein: 前記基本スキーマ内のItemの少なくとも1つは、基礎的なItemであり、これは基礎的なItem型を構成し、そこからハードウェア/ソフトウェアインターフェースシステム内で操作される他のすべてのItemが派生し、
前記基本スキーマ内のプロパティの少なくとも1つは、基礎的なプロパティであり、これは基礎的なプロパティ型を構成し、そこからハードウェア/ソフトウェアインターフェースシステム内で使用される他のすべてのプロパティが派生することを特徴とする請求項54に記載のコンピュータ読取り可能記憶媒体。
At least one of the items in the basic schema is a basic item, which constitutes a basic item type from which all other items that operate in the hardware / software interface system are derived. And
At least one of the properties in the basic schema is a basic property, which constitutes a basic property type from which all other properties used in the hardware / software interface system are derived 55. The computer readable storage medium of claim 54, wherein:
前記基本スキーマは、前記第1のItemの前記基礎的なItem型から派生した第2のItemをさらに含み、前記第2のItemはItem Folderの前記基礎的なItem型を構成し、前記第2のItemは前記第1のItemとのRelationshipを表すことを特徴とする請求項59に記載のコンピュータ読取り可能記憶媒体。   The basic schema further includes a second Item derived from the basic Item type of the first Item, the second Item constituting the basic Item type of the Item Folder, and the second Item 60. The computer readable storage medium of claim 59, wherein an Item of the item represents a Relationship with the first Item. 前記基本スキーマは、前記第1のプロパティの前記基礎的なプロパティ型から派生した第2のプロパティをさらに含み、前記第2のプロパティは、idunitキープロパティの前記基礎的な型を構成することを特徴とする請求項59に記載のコンピュータ読取り可能記憶媒体。   The basic schema further includes a second property derived from the basic property type of the first property, wherein the second property constitutes the basic type of an idunit key property. 60. The computer readable storage medium of claim 59. 前記基本スキーマは、前記第2のプロパティから派生した第3のプロパティをさらに含み、前記第3のプロパティは、Category参照に対する前記基礎的な型を構成することを特徴とする請求項61に記載のコンピュータ読取り可能記憶媒体。   62. The base schema of claim 61, wherein the base schema further includes a third property derived from the second property, wherein the third property comprises the base type for a Category reference. Computer readable storage medium. 前記基本スキーマは、前記第1のプロパティの前記基礎的なプロパティ型から派生した第2のプロパティをさらに含み、前記第2のプロパティは、Categoryの前記基礎的なプロパティ型を構成することを特徴とする請求項59に記載のコンピュータ読取り可能記憶媒体。   The basic schema further includes a second property derived from the basic property type of the first property, wherein the second property constitutes the basic property type of Category. 60. The computer readable storage medium of claim 59. コンピュータシステムのハードウェア/ソフトウェアインターフェースシステムに対するコンピュータ読取り可能命令を格納するコンピュータ読取り可能記憶媒体であって、前記ハードウェア/ソフトウェアインターフェースシステムは、Itemである、前記ハードウェア/ソフトウェアインターフェースシステムにより理解可能なプロパティを持つ情報の複数の離散的ユニットを操作することを特徴とするコンピュータ読取り可能記憶媒体。   A computer readable storage medium storing computer readable instructions for a hardware / software interface system of a computer system, wherein the hardware / software interface system is an Item, understandable by the hardware / software interface system A computer readable storage medium characterized by operating a plurality of discrete units of information having properties. 前記ハードウェア/ソフトウェアインターフェースシステムは、前記ハードウェア/ソフトウェアインターフェースシステムが理解し、所定の予測可能な方法で直接処理することができるコアItemの集合を定義するコアスキーマを備えることを特徴とする請求項64に記載のコンピュータ読取り可能記憶媒体。   The hardware / software interface system 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. Item 65. The computer-readable storage medium according to Item 64. コアItemの前記集合からのそれぞれのItemは、共通であり単一の基本Itemから、直接的にまたは間接的に派生することを特徴とする請求項65に記載のコンピュータ読取り可能記憶媒体。   66. The computer-readable storage medium of claim 65, wherein each Item from the set of core Items is common and is derived directly or indirectly from a single base Item. 前記共通であり単一の基本Itemは、基本スキーマ内の基礎的なItemであることを特徴とする請求項66に記載のコンピュータ読取り可能記憶媒体。   68. The computer-readable storage medium of claim 66, wherein the common and single basic Item is a basic Item in a basic schema. 前記コアスキーマは、前記ハードウェア/ソフトウェアインターフェースシステムが理解し、所定の予測可能な方法で直接処理することができるコアプロパティの集合をさらに定義することを特徴とする請求項67に記載のコンピュータ読取り可能記憶媒体。   68. The computer-readable medium of claim 67, wherein the core schema further defines a set of core properties that can be understood by the hardware / software interface system and processed directly in a predetermined and predictable manner. Possible storage medium. コアItemの前記集合からのそれぞれのプロパティは、少なくとも1つの基本プロパティから、直接的にまたは間接的に派生することを特徴とする請求項68に記載のコンピュータ読取り可能記憶媒体。   69. The computer-readable storage medium of claim 68, wherein each property from the set of core Items is derived directly or indirectly from at least one base property. 前記コアスキーマは、デバイスに対するItemを含むことを特徴とする請求項69に記載のコンピュータ読取り可能記憶媒体。   70. The computer-readable storage medium of claim 69, wherein the core schema includes an Item for a device. 前記コアスキーマは、イベントに対するItemを含むことを特徴とする請求項69に記載のコンピュータ読取り可能記憶媒体。   70. The computer-readable storage medium of claim 69, wherein the core schema includes an Item for an event. 前記コアスキーマは、コモディティに対するItemを含むことを特徴とする請求項69に記載のコンピュータ読取り可能記憶媒体。   70. The computer-readable storage medium of claim 69, wherein the core schema includes an Item for a commodity. 前記コアスキーマは、メッセージに対するItemを含むことを特徴とする請求項69に記載のコンピュータ読取り可能記憶媒体。   70. The computer-readable storage medium of claim 69, wherein the core schema includes an Item for a message. 前記コアスキーマは、プリンシパルに対するItemを含むことを特徴とする請求項69に記載のコンピュータ読取り可能記憶媒体。   70. The computer-readable storage medium of claim 69, wherein the core schema includes an Item for a principal. 前記コアスキーマは、ロケーションに対するItemを含むことを特徴とする請求項69に記載のコンピュータ読取り可能記憶媒体。   70. The computer readable storage medium of claim 69, wherein the core schema includes an Item for a location. 前記コアスキーマは、ドキュメントに対するItemを含むことを特徴とする請求項69に記載のコンピュータ読取り可能記憶媒体。   70. The computer-readable storage medium of claim 69, wherein the core schema includes an Item for a document. 前記コアスキーマは、ステートメントに対するItemを含むことを特徴とする請求項69に記載のコンピュータ読取り可能記憶媒体。   70. The computer readable storage medium of claim 69, wherein the core schema includes an Item for a statement. 前記コアスキーマは、連絡先に対するItemを含むことを特徴とする請求項69に記載のコンピュータ読取り可能記憶媒体。   70. The computer-readable storage medium of claim 69, wherein the core schema includes an Item for a contact. 前記コアスキーマは、証明書に対するプロパティを含むことを特徴とする請求項69に記載のコンピュータ読取り可能記憶媒体。   70. The computer readable storage medium of claim 69, wherein the core schema includes properties for a certificate. 前記コアスキーマは、主idunitキーに対するプロパティを含むことを特徴とする請求項69に記載のコンピュータ読取り可能記憶媒体。   The computer-readable storage medium of claim 69, wherein the core schema includes properties for a primary idunit key. 前記コアスキーマは、郵便宛先住所に対するプロパティを含むことを特徴とする請求項69に記載のコンピュータ読取り可能記憶媒体。   70. The computer readable storage medium of claim 69, wherein the core schema includes properties for a postal address. 前記コアスキーマは、リッチテキスト要素に対するプロパティを含むことを特徴とする請求項69に記載のコンピュータ読取り可能記憶媒体。   70. The computer readable storage medium of claim 69, wherein the core schema includes properties for rich text elements. 前記コアスキーマは、電子アドレスに対するプロパティを含むことを特徴とする請求項69に記載のコンピュータ読取り可能記憶媒体。   The computer-readable storage medium of claim 69, wherein the core schema includes properties for electronic addresses. 前記コアスキーマは、idunitセキュリティパッケージに対するプロパティを含むことを特徴とする請求項69に記載のコンピュータ読取り可能記憶媒体。   The computer-readable medium of claim 69, wherein the core schema includes properties for an idunit security package. 前記コアスキーマは、2つのContactの間でロールを占有するRelationshipを含むことを特徴とする請求項69に記載のコンピュータ読取り可能記憶媒体。   70. The computer-readable storage medium of claim 69, wherein the core schema includes a Relationship that occupies a role between two Contacts. 前記コアスキーマは、ベーシックプレゼンスに対するプロパティを含むことを特徴とする請求項69に記載のコンピュータ読取り可能記憶媒体。   70. The computer readable storage medium of claim 69, wherein the core schema includes properties for basic presence. Itemである、コンピュータシステムのハードウェア/ソフトウェアインターフェースシステム内の複数の離散的情報ユニットを操作する方法であって、前記方法は、前記Itemと複数のRelationshipとを相互接続し、前記ハードウェア/ソフトウェアインターフェースシステムのレベルにおいて前記Relationshipを管理することを含むことを特徴とする方法。   A method of operating a plurality of discrete information units in a hardware / software interface system of a computer system, wherein the method interconnects the Item and a plurality of Relationships, and the hardware / software Managing the Relationship at the interface system level. 前記複数のRelationshipのうちのそれぞれのRelationshipは、前記ハードウェア/ソフトウェアインターフェースシステムのレベルにおいて、前記Relationshipが相互接続するItemのペアの間のマッピングを構成することを特徴とする請求項87に記載のインターフェースシステム。   88. Each Relationship of the plurality of Relationships comprises a mapping between a pair of Items interconnected by the Relationship at the level of the hardware / software interface system. Interface system. それぞれのRelationshipは、プロパティを持つことを特徴とする請求項88に記載のインターフェースシステム。   90. The interface system of claim 88, wherein each Relationship has properties. それぞれのRelationshipは、前記RelationshipのターゲットItemの識別に対するプロパティを含むことを特徴とする請求項89に記載のインターフェースシステム。   90. The interface system of claim 89, wherein each Relationship includes a property for identification of a target Item of the Relationship. それぞれのRelationshipは、前記RelationshipのターゲットItemの所有権に対するプロパティをさらに含むことを特徴とする請求項90に記載のインターフェースシステム。
The interface system of claim 90, wherein each Relationship further includes a property for ownership of the Target Item of the Relationship.
JP2005509096A 2003-08-21 2003-08-21 System and method for data modeling in an item-based storage platform Expired - Fee Related JP4394643B2 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2003/026144 WO2005029313A1 (en) 2003-08-21 2003-08-21 Systems and methods for data modeling in an item-based storage platform

Publications (2)

Publication Number Publication Date
JP2007521532A true JP2007521532A (en) 2007-08-02
JP4394643B2 JP4394643B2 (en) 2010-01-06

Family

ID=34374761

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005509096A Expired - Fee Related JP4394643B2 (en) 2003-08-21 2003-08-21 System and method for data modeling in an item-based storage platform

Country Status (9)

Country Link
EP (1) EP1658555A4 (en)
JP (1) JP4394643B2 (en)
KR (1) KR101024730B1 (en)
CN (1) CN100570549C (en)
AU (1) AU2003259959B2 (en)
BR (1) BR0318469A (en)
CA (1) CA2533088C (en)
MX (1) MXPA06001986A (en)
WO (1) WO2005029313A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11940960B2 (en) 2022-04-21 2024-03-26 Folder Front, LLC Intelligent folder-based data organization system

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7680758B2 (en) 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
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
US8095940B2 (en) 2005-09-19 2012-01-10 Citrix Systems, Inc. Method and system for locating and accessing resources
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
US7711835B2 (en) 2004-09-30 2010-05-04 Citrix Systems, Inc. Method and apparatus for reducing disclosure of proprietary data in a networked environment
US8024568B2 (en) 2005-01-28 2011-09-20 Citrix Systems, Inc. Method and system for verification of an endpoint security scan
US7756826B2 (en) 2006-06-30 2010-07-13 Citrix Systems, Inc. Method and systems for efficient delivery of previously stored content
US9621666B2 (en) 2005-05-26 2017-04-11 Citrix Systems, Inc. Systems and methods for enhanced delta compression
US8943304B2 (en) 2006-08-03 2015-01-27 Citrix Systems, Inc. Systems and methods for using an HTTP-aware client agent
US9692725B2 (en) 2005-05-26 2017-06-27 Citrix Systems, Inc. Systems and methods for using an HTTP-aware client agent
US9407608B2 (en) 2005-05-26 2016-08-02 Citrix Systems, Inc. Systems and methods for enhanced client side policy
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
JP5149570B2 (en) 2006-10-16 2013-02-20 キヤノン株式会社 File management apparatus, file management apparatus control method, and program
US8533846B2 (en) 2006-11-08 2013-09-10 Citrix Systems, Inc. Method and system for dynamically associating access rights with a resource
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
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
US8631147B2 (en) 2007-03-12 2014-01-14 Citrix Systems, Inc. Systems and methods for configuring policy bank invocations
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
CN102567315A (en) * 2010-12-08 2012-07-11 金蝶软件(中国)有限公司 Method, device and system for data inquiry
US8732213B2 (en) 2011-12-23 2014-05-20 Amiato, Inc. Scalable analysis platform for semi-structured data
CN102968685A (en) * 2012-10-26 2013-03-13 广东电子工业研究院有限公司 Account information asset management system and method thereof
KR102053709B1 (en) * 2014-11-10 2019-12-09 한국전자통신연구원 method and apparatus for representation of editable visual object
CN109271490A (en) * 2018-11-01 2019-01-25 中企动力科技股份有限公司 The classification method and system of dynamic field
RU2721999C1 (en) * 2019-03-18 2020-05-25 Сергей Александрович Гайдамаков Associative network of contacts, notes and/or events
US11301498B2 (en) * 2019-08-08 2022-04-12 Sap Portals Israel Ltd. Multi-cloud object store access
CN113448584B (en) * 2020-03-25 2023-07-21 浙江满趣科技有限公司 APP version management method, device, medium and computer equipment
CN117150598B (en) * 2023-09-05 2024-04-02 上海易立德信息技术股份有限公司 Family table management and integration method and system for CAD model construction

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4953080A (en) * 1988-04-25 1990-08-28 Hewlett-Packard Company Object management facility for maintaining data in a computer system
US5900870A (en) * 1989-06-30 1999-05-04 Massachusetts Institute Of Technology Object-oriented computer user interface
US5504892A (en) * 1994-09-08 1996-04-02 Taligent, Inc. Extensible object-oriented file system
US6112024A (en) * 1996-10-02 2000-08-29 Sybase, Inc. Development system providing methods for managing different versions of objects with a meta model
US5915253A (en) * 1996-12-13 1999-06-22 Novell, Inc. Method and system for implementing objects in a storage system
US6108004A (en) * 1997-10-21 2000-08-22 International Business Machines Corporation GUI guide for data mining
US6263342B1 (en) * 1998-04-01 2001-07-17 International Business Machines Corp. Federated searching of heterogeneous datastores using a federated datastore object
US6324533B1 (en) 1998-05-29 2001-11-27 International Business Machines Corporation Integrated database and data-mining system
US6704743B1 (en) * 1999-09-13 2004-03-09 Copernus, Inc. Selective inheritance of object parameters in object-oriented computer environment
US6370541B1 (en) * 1999-09-21 2002-04-09 International Business Machines Corporation Design and implementation of a client/server framework for federated multi-search and update across heterogeneous datastores
US6556983B1 (en) * 2000-01-12 2003-04-29 Microsoft Corporation Methods and apparatus for finding semantic information, such as usage logs, similar to a query using a pattern lattice data space
JP3983961B2 (en) * 2000-07-18 2007-09-26 株式会社東芝 Directory information management apparatus and computer-readable recording medium recording program
GB2371884A (en) * 2000-10-12 2002-08-07 Abb Ab Queries in an object-oriented computer system
CN1591406A (en) * 2001-11-09 2005-03-09 无锡永中科技有限公司 Integrated multi-purpose data processing system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11940960B2 (en) 2022-04-21 2024-03-26 Folder Front, LLC Intelligent folder-based data organization system

Also Published As

Publication number Publication date
AU2003259959A1 (en) 2005-04-11
CN1820245A (en) 2006-08-16
AU2003259959B2 (en) 2010-02-18
KR20060080921A (en) 2006-07-11
BR0318469A (en) 2006-09-12
EP1658555A4 (en) 2009-05-06
JP4394643B2 (en) 2010-01-06
CA2533088C (en) 2014-04-29
WO2005029313A1 (en) 2005-03-31
CN100570549C (en) 2009-12-16
EP1658555A1 (en) 2006-05-24
MXPA06001986A (en) 2006-05-17
CA2533088A1 (en) 2005-03-31
KR101024730B1 (en) 2011-03-25
AU2003259959A2 (en) 2005-04-11

Similar Documents

Publication Publication Date Title
JP4394643B2 (en) System and method for data modeling in an item-based storage platform
US7555497B2 (en) Systems and methods for separating units of information manageable by a hardware/software interface system from their physical organization
US7428546B2 (en) Systems and methods for data modeling in an item-based storage platform
US8131739B2 (en) Systems and methods for interfacing application programs with an item-based storage platform
US7483915B2 (en) Systems and method for representing relationships between 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
US7349913B2 (en) Storage platform for organizing, searching, and sharing data
US7529811B2 (en) Systems and methods for the implementation of a core schema for providing a top-level structure for organizing units of information manageable by a hardware/software interface system
AU2003259961B2 (en) Systems and methods for interfacing application programs with an item-based storage platform
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
US20050055354A1 (en) Systems and methods for representing units of information manageable by a hardware/software interface system but independent of physical representation
JP4583375B2 (en) System for implementation of synchronization schema
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
RU2371757C2 (en) Systems and methods of data modelling in storage platform based on subjects
RU2412461C2 (en) Systems and methods of interfacing application programs with article based storage platform
ZA200600644B (en) Systems and methods for interfacing application programs with an item-based storage platform

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090522

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090824

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

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

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20131023

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees