CN1820266A - System and methods for interfacing application programs with item-based storage platform - Google Patents

System and methods for interfacing application programs with item-based storage platform Download PDF

Info

Publication number
CN1820266A
CN1820266A CNA038269414A CN03826941A CN1820266A CN 1820266 A CN1820266 A CN 1820266A CN A038269414 A CNA038269414 A CN A038269414A CN 03826941 A CN03826941 A CN 03826941A CN 1820266 A CN1820266 A CN 1820266A
Authority
CN
China
Prior art keywords
project
type
relation
data
file
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
CNA038269414A
Other languages
Chinese (zh)
Other versions
CN100550010C (en
Inventor
W·C·吴
M·E·迪姆
E·G·谢帕德
方黎江
J·李
M·B·泰勒
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 Technology Licensing LLC
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 CN1820266A publication Critical patent/CN1820266A/en
Application granted granted Critical
Publication of CN100550010C publication Critical patent/CN100550010C/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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging

Abstract

Various embodiments of the present invention are directed to a storage platform (figure 20) comprising: a data store in which data stored therein is defined in terms of items, elements, and relationships (figure 20, 2014), wherein an item is a unit of data storable in the data store and comprises one or more elements, an element is an instance of a type (figure 20, 2016) comprising one or more fields, and a relationship is a link between at least two items; a set of schemas (figure 20, 2014) that define different types of items, elements, and relationships (figure 20, 2016); and an application programming interface (figure 20, 350a, 350b, or 350c) comprising a class (figure 20, 2008) for each of the different items, elements, and relationships defined in the set of schemas. Data may also be stored in the data store in the form of an extension to an existing item type, and wherein the application programming interface comprises a class for each different item extension (figure 20, 2006).

Description

Be used for application program and system and method based on the storage platform interface of item
Cross reference
The application's theme relates to invention disclosed in the application of following common transfer: submit to simultaneously with the application, title is the U.S. Patent application (application number is unallocated) (agent docket MSFT-1748) of " SYSTEMS AND METHODS FOR REPRESENTING UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM BUT INDEPENDENT OF PHYSICAL REPRESENTATION (be used for expression can be by the hardware/software interface system management but be independent of the system and method for the information unit of physical representation) "; Submit to simultaneously with the application, title is the U.S. Patent application (application number is unallocated) (agent docket MSFT-1749) of " SYSTEMS AND METHODS FOR SEPARATING UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM FROM THEIR PHYSICAL ORGANIZATION (be used for can be separated with its physical organization by the information unit of hardware/software interface system management system and method) "; Submit to simultaneously with the application, title is the U.S. Patent application (application number is unallocated) (agent docket MSFT-1750) of " SYSTEMS AND METHODS FOR THE IMPLEMENTATION OF A BASE SCHEMA FOR ORGANIZING UNITS OF INFORMATIONMANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM (be used for to realize be used for tissue can by the system and method for the basic model of the information unit of hardware/software interface system management) "; Submit to simultaneously with the application, title is the U.S. Patent application (application number is unallocated) (agent docket MSFT-1751) of " SYSTEMS AND METHODS FOR THE IMPLEMENTATION OF A CORE SCHEMA FOR PROVIDING A TOP-LEVEL STRUCTURE FOR ORGANIZING UNITS OF INFORMATIONMANAGEABLE BY A HARDWARE/SOFTWAREINTERFACE SYSTEM (be used for to realize being provided for organizing can by the system and method for the core schema of the top level structure of the information unit of hardware/software interface system management) "; And that the application submits to simultaneously, title is the U.S. Patent application (application number is unallocated) (agent docket MSFT-1752) of " SYSTEMS AND METHOD FOR REPRESENTINGRELATIONSHIPS BETWEEN UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWAREINTERFACE SYSTEM (be used for expression can by the system and method for the relation between the information unit of hardware/software interface system management) "; Submit to simultaneously with the application, title is the U.S. Patent application (application number is unallocated) (agent docket MSFT-2734) of " STORAGE PLATFORM FOR ORGANIZING, SEARCHING AND SHARING DATA (being used for tissue, search and shared data storage platform) "; And submit to simultaneously with the application, title is the U.S. Patent application (application number is unallocated) (agent docket MSFT-2735) of " SYSTEMS AND METHODS FOR DATA MODELING IN AN ITEM-BASED STORAGE PLATFORM (system and method that is used for the data modeling of project-based storage platform) ".
Technical field
The present invention relates generally to the information storage and retrieval field, relate in particular to at computerized system tissue, search with share the active storage platform of dissimilar data.
Background of invention
In last decade, the capacity of single disc is annual to increase about percent 70 (70%). The calculated to a nicety dramatic increase of CPU (CPU) ability in several years in the past of mole (Moore) law. Wired be connected with wireless technology quantitatively huge connection and bandwidth is provided. Suppose that current trend continues, general laptop computer will have the storage of about terabyte (TB) and comprise millions of files within the several years, and the driver of 500,000,000,000 bytes (500GB) becomes common.
The consumer uses their computer to be mainly used in communication and organize personal information, no matter they are data or the media as digital music or photo of traditional personal information manager (PIM) style. The ability of the amount of digital content and storage raw bytes increases in large quantities; Yet the consumer can be used for organizing and the method for unifying these data does not but catch up with paces. The knowledge worker spends that the plenty of time manages and shared information, and some studies estimation, and the knowledge worker spends the time of 15-25% in the activity relevant with invalid information. Research is estimated in addition, and typical knowledge worker spends 2.5 hours search information every day approximately.
The time that the investment of developer and information technology (IT) department is a large amount of and money make up themselves the abstract data of common memory that are used for and store, to represent such as items such as people, place, Time And Events. This not only causes the work of repetition, also forms the isolated island of public data, does not have the mechanism of common search or shared those data. How many address books only consider has at the computer that moves Microsoft Windows operating system now. Many application programs as email client and Personal Finance program keep address book separately, and only have seldom shared between the address-book data application program that each such program is safeguarded respectively. Thereby financial procedure (such as Microsoft Money) is not shared payer's address with the address of safeguarding in e-mail contacts file (such as the contacts folder among the Microsoft Outlook). Really, many users have a plurality of equipment, should be logically between these equipment and between being included in such as the various additive sources of the cell-phone telephone number of the commerce services such as MSN and AOL synchronous their personal data; Yet the cooperation major part of shared document finishes by document is attached to email message-and this is manual and poor efficiency.
The conventional method that a reason that lacks cooperation is the information in the organize computer systems concentrates on the system's (" file system ") that uses based on file-file-catalogue, comes abstract in the hierarchy of categories of a plurality of file organizations to file based on the physical organization of the storage medium that is used for storage file. But be considered to be in operating system grade is managed storage data units with file, file and catalogue pioneer in nineteen sixty for the Multics operating system of developing. Particularly, Multics uses symbolic address (thereby concept of introducing file path) in the hierarchy of file, and the physical address of its File is opaque to user (application program and end user). This file system gives no thought to the file format of any Single document, and the pass that reaches hereof between the file ties up to (that is, different from the position of hierarchy File) that are considered on the operating system grade have nothing to do. Because the appearance of Multics, storable data are organized into file, file and catalogue on operating system grade. These files generally comprise the file hierarchy itself (" catalogue ") that is placed on by in the specific file of file system maintenance. This directory further is safeguarded the tabulation corresponding to the clauses and subclauses of all other files in this catalogue and the node location of those files in hierarchy (referring to file here). This is state nearly 40 years in this area.
Yet, although the reasonable representation of the information in the physical store system that resides in computer is provided, but file system is the abstract of physical store system, thereby what (having context, feature and and the unit of the relation of other unit) utilization of file need to process and operating system provides indirect (explanation) between what (file, file and catalogue) layer the user. As a result, user (application program and/or end user) have to force information unit is put into file system structure, though do like this be poor efficiency, inconsistent or undesirable. In addition, existing file system is known little about it about the structure of the data of storing in each file, and therefore, most of information keep sealing hereof, can only be write the application access (with understanding) of those data. Therefore, lack the pattern description of information and the mechanism of management information, cause forming the first in first out memory buffer (silo) of data, only have less data between each first in first out memory buffer, to share. For example, many personal computers (PC) user has storage different more than 5, and they comprise about they submit mutual people's information-such as Outlook contact person, online account address, Windows address book, Quicken payee and instant message (IM) partner list-because constituent act proposes important challenge to these pc users at certain one deck. Because most of existing file system utilize nested file metaphor to come constituent act and file, therefore when quantity of documents increases, become very surprising for keeping the necessary effort of flexible and effective enterprise schema. In these cases, the multiple classification that has a Single document is very useful; Yet use the hard and soft link in the existing file system to be trouble and to be difficult to safeguard.
Past has been made the shortcoming that some unsuccessful trials overcome file system. Some have related in attempting before these certain memory with content addressable and provide and can rather than visit the mechanism of data by physical address by content. Yet, these effort are proved to be unsuccessful, although thereby the memory of content addressable is to being proved to be useful by using such as the small-scale of the equipment such as high-speed cache and MMU, but still impossible owing to a variety of causes to the extensive use such as equipment such as physical storage mediums, therefore such solution exists seldom or never. Made other trial of using OODB Object Oriented Data Base (OODB) system, although but these trials are with the feature of strong database, and good non-representation of file, but processing aspect the representation of file ineffectively, can not reappear on the hardware/software interface system level speed, efficient and simplicity based on file and the file of hierarchy. Use other trial of SmallTalk (with other derived method) being proved to be quite effective aspect processing file and the non-representation of file such as attempting, effectively organize and utilize the necessary database feature of the relation that exists but lack between various data files, therefore the whole validity of the sort of system is unacceptable. Use BeOS (with other such operating system research) although another trial can be competent at some necessary database feature is provided again when suitably representing file, be proved to be inadequate in the expression of processing non-file, this is the same core shortcoming of traditional file systems.
Database technology is another professional domain that has similar challenge. For example, although the relevant database model has been obtained very large coml success, in fact stand alone software retail trader (ISV) has generally used available function sub-fraction in the relevant database software product (such as Microsoft SQL Server). On the contrary, the great majority of application program and such product are the form with simple " gets " and " puts " alternately. Although this is had some reasons of understanding easily (as platform or database unknowable), the reason of a commonly overlooked key be database there is no need to provide primary commercial application program retail trader really to need accurately abstract. For example, although real world has the concept (and " line item " of the embedding of order conduct project and project itself wherein) such as " client " or " projects " such as " orders ", and relevant database is only being talked about aspect table and the row. As a result, although application program may wish to have uniformity, locking, safety and/or trigger on project level aspect (only listing), database only provides these features in table/row level usually. If also can work finely although each project is mapped to the single row of certain table of database, but in the situation with the order of a plurality of line items, exist a project in fact will be mapped to the reason of a plurality of tables, and in the case, single system R can not provide correct abstract definitely. Therefore, application program must be at the top layer construction logic of database to provide these substantially abstract. In other words, the fundamental relation model does not provide enough platforms of the storage data of developing easily advanced application thereon, because the fundamental relation model need to be between application program and storage system indirect layer, wherein only in the application program of some situation, can see the semantic structure of data. Although some database retail trader just is being building up to Premium Features in their product and (as is providing the object relationship ability, new organize models etc.), so far which still not having, the total solution that needs is provided, and wherein real total solution is the solution of the data model abstract (such as " project ", " expansion ", " relation " etc.) that provides usefulness for useful territory abstract (such as " individual ", " position ", " event " etc.).
Consider the above-mentioned shortcoming in available data storage and the database technology, need a kind of new storage platform, a kind of improved ability is provided for it so that all types of data in tissue, search and the Sharing computer system-a kind of storage platform, it is expanded outside existing file system and Database Systems and has enlarged data platform, and is designed to store all types of data. The present invention satisfies this demand.
Summary of the invention
Below general introduction provides the summary to each aspect of the present invention. This summary is not the detailed description that aims to provide all importances of the present invention, is not intended to define scope of the present invention yet. On the contrary, this general introduction is intended to the introduction of doing the following detailed description and accompanying drawing.
The present invention is directed to a kind of for tissue, search and shared data storage platform. The concept of data storages is expanded and enlarged to storage platform of the present invention outside existing file system and Database Systems, and be designed to store all types of data, comprises structurized, non-structured or partly-structured data.
According to an aspect of of the present present invention, storage platform of the present invention is included in the data storage that realizes on the database engine. In various embodiments of the present invention, database engine comprises the relevant database engine with object relationship expansion. The storage of this data realize supported data tissue, search, share, synchronously and the data model of security. Concrete data type is described in pattern, and this platform provides a kind of mode of extension collection so that the mechanism of new data type (being the subtype of the fundamental type that provided by pattern in essence) to be provided. A kind of synchronizing capacity helps at user or system's data sharing. The ability of similar file system is provided, and it allows the interoperability of this data storage and existing file system, and does not have the restriction of this traditional file systems. A kind ofly change the ability that follow-up mechanism provides the change of tracking data storage. This storage platform also comprises one group of application programming interfaces, and they be so that application program can be accessed the above-mentioned of this storage platform has the ability, and can access the data of describing in pattern.
According to another aspect of the present invention, the data model of being realized by the storage of this data according to project, element and contextual definition the unit of data storages. Project is the data cell that can store in the data storage, and can comprise one or more elements and relation. Element is the example of type, comprises one or more fields (being also referred to as attribute herein). Relation is two links between the project. (as used herein, these and other specific term can be capitalized, in order to they are separated from similar employed other term, yet, be not to be intended to treat with a certain discrimination the term capitalized for example " Item " and the same term during by capitalization, for example " item ", and should not suppose or hint this difference. )
According to another aspect of the present invention, a kind of computer system comprises a plurality of projects, and wherein each formation can be by the discrete information unit stored of hardware/software interface system manipulation; A plurality of project folders, they have consisted of the institutional framework of described project; And the hardware/software interface system that is used for handling a plurality of projects, and wherein each project belongs at least one project folder, and can belong to an above project folder.
According to another aspect of the present invention, a kind of computer system comprises a plurality of projects, and wherein, each project consists of can be by the discrete message unit of hardware/software interface system manipulation, and opposite with derivation from lasting storage, project or some item attribute value can dynamically be calculated. In other words, this hardware/software interface system does not require that project is stored, and support some operation, such as the ability of enumerating current Item Sets, or the project that provides at the identifier on the storage platform (describing in the joint of application programming interface or API and more completely describing) and the ability of search terms-for example, project can be cellular current location, or the temperature of reading from temperature sensor.
According to another aspect of the present invention, a kind of hardware/software interface system for computer system comprises that also wherein said hardware/software interface system is handled a plurality of projects by the project of a plurality of relation interconnection of this hardware/software interface system management. According to another aspect of the present invention, a kind of hardware/software interface system for computer system, wherein said hardware/software interface system are handled a plurality of discrete messages unit with the attribute that can be understood by described hardware/software interface system. According to another aspect of the present invention, a kind of hardware/software interface system for computer system comprises core schema, in order to define that described hardware/software interface system is appreciated that and can be with a kind of predetermined one group of core project directly processing with predictable mode. According to another aspect of the present invention, a kind of method of a plurality of discrete messages unit (" project ") for handling the hardware/software interface system that is used for computer system is disclosed, described method comprises described project and the interconnection of a plurality of relation, and manages described relation in the hardware/software interface system level.
According to another feature of the present invention, the API of this storage platform provides data class for each project, extension and the relation of storage platform pattern centralized definition. In addition, this application programming interface provides a framing class, and they have defined one group of public action for described data class, and provides basic programming model with data class for storage platform API. According to another feature of the present invention, this storage platform API provides the interrogation model of simplifying, its mode so that the application programmer is kept apart from the details of the query language of underlying database engine is so that the application programmer can form the inquiry of the various attributes of the project in the based on data storage. Another aspect according to storage platform API of the present invention, this API collects the change of project being made by application program, and then they is organized in the required correct renewal of the database engine (or storage engines of any kind) of realizing this data storage. This and leaves the complexity of data storage update for API so that the application programmer can change project in memory.
By its common storage basis with by the data of medelling, storage platform of the present invention can be made more effective application development for consumer, Knowledge Worker and enterprise. It provides abundant and extendible application programming interface, this interface not only so that in its data model intrinsic ability can use, but also comprise and expanded the access method of existing file system and database.
By reading following the detailed description and the accompanying drawings of the present invention, can know other features and advantages of the present invention.
The accompanying drawing summary
When reading in conjunction with appended accompanying drawing, can understand better top general introduction and following detailed description of the present invention. For explaining purpose of the present invention, the exemplary embodiment of various aspects of the present invention shown in the drawings; Yet, the invention is not restricted to disclosed concrete grammar and means. In the accompanying drawings:
Fig. 1 is that represent wherein can be in conjunction with the block diagram of the computer system of each aspect of the present invention;
Fig. 2 shows the block diagram of the computer system that is divided into 3 assembly groups: nextport hardware component NextPort, hardware/software system interface module and application component;
Fig. 2 A shows for the traditional hierarchy based on tree that is grouped into based on the file in the file in the catalogue of the operating system of file;
Fig. 3 is the block diagram that illustrates according to storage platform of the present invention;
Fig. 4 shows the structural relation between project in the various embodiments of the present invention, project folder and the classification;
Fig. 5 A shows the block diagram of the structure of project;
Fig. 5 B is the block diagram of complex properties type that the project of Fig. 5 A is shown;
Fig. 5 C is the block diagram that " Location (position) " project is shown, and wherein further describes (listing clearly) its complicated type;
Fig. 6 A shows the project as the subtype of the project that finds in the basic schema;
Fig. 6 B shows the block diagram of the subtype project of Fig. 6 A, has wherein listed clearly the type (except its direct attribute) of its succession;
Fig. 7 shows the block diagram of basic model, and this basic model comprises two top layer class type, i.e. Item (project) and PropertyBase (attribute base), and the additional basis mode type from wherein deriving;
Fig. 8 A is the block diagram that the project in the core schema is shown;
Fig. 8 B is the block diagram that the attribute type in the core schema is shown;
Fig. 9 is the block diagram that the interconnected relationship between project folder, its member's project and project folder and its member's project is shown;
Figure 10 shows the block diagram of the interconnected relationship between classification (itself also is project), its member's project and classification and the member's project thereof;
Figure 11 is the figure that illustrates according to the reference type level of the data model of storage platform of the present invention;
Figure 12 is that illustrating according to one embodiment of the present of invention relation is the figure how to be classified;
Figure 13 is the figure that illustrates according to the informing mechanism of one embodiment of the present of invention;
Figure 14 illustrates wherein two affairs are all inserted figure from the example of new record to same B tree;
The data that Figure 15 shows according to one embodiment of the present of invention change testing process;
Figure 16 shows exemplary directory tree;
Figure 17 show according to an aspect of of the present present invention wherein the file of existing file system based on catalogue be moved to example in this storage platform data storage;
Figure 18 shows the concept according to an aspect of of the present present invention include file folder;
Figure 19 shows the basic architecture of storage platform API;
Figure 20 has schematically shown each assembly of storage platform API stack;
Figure 21 A and 21B are the diagrammatic representations of example contacts pattern (project and element);
Framework when Figure 22 shows according to the operation of the storage platform API of an aspect of of the present present invention;
Figure 23 shows the execution according to " FindAll " operation of one embodiment of the present of invention;
Figure 24 shows the process that is used for generating from the storage platform pattern storage platform API class according to an aspect of of the present present invention;
Figure 25 show according to another aspect of the present invention File (file) API based on pattern;
Figure 26 illustrates the schematic diagram that is used for the access mask form of data security purpose according to one embodiment of the present of invention;
Figure 27 (a), (b), (c) have provided a new similarly safety zone of protection that marks off in the existing safety zone according to the embodiment of an aspect of of the present present invention;
Figure 28 is the schematic diagram that illustrates according to the concept of the project search view of the embodiment of an aspect of of the present present invention;
Figure 29 is the schematic diagram that illustrates according to the exemplary items level of one embodiment of the present of invention;
Detailed description of the Invention
Catalogue
A. example calculation environment ... 16
B. traditional storage based on file ... 19
II. the new storage platform that is used for tissue, search and shared data ... 20
A. vocabulary ... 20
B. storage platform is summarized ... 21
C. data model ... 22
1. project ... 23
2. project label ... 26
A) project is quoted ... 26
        (1)ItemIDReference…………………………………………………26
        (2)ItemPathReference………………………………………………26
B) reference type hierarchy ... 27
3. project folder and classification ... 27
4. pattern ... 28
A) basic schema ... 28
B) core schema ... 29
5. concern ... 30
A) relation statement ... 31
B) hold relation ... 32
C) imbeding relation ... 33
D) adduction relationship ... 34
E) Rule and constraint ... 34
F) ordering of relation ... 34
6. extensibility ... 38
A) extension ... 39
B) expansion NestedElement type ... 42
D. database engine ... 43
1. use the data storage of UDT to realize ... 44
2. project mapping ... 46
3. expansion mapping ... 47
4. nested element mapping ... 48
5. object identity ... 49
6.SQL object naming ... 49
7. row name ... 50
8. search view ... 50
A) project ... 51
(1) master project search view ... 51
(2) typed project search view ... 51
B) extension ... 52
(1) main expanded search view ... 52
(2) typed expanded search view ... 52
C) nested element ... 53
D) relation ... 53
(1) primary relation search view ... 53
(2) relationship example search view ... 53
9. upgrade ... 54
10. change and follow the tracks of and gravestone ... 55
A) change tracking ... 55
(1) change in " master " search view is followed the tracks of ... 55
(2) change in " typed " search view is followed the tracks of ... 56
B) gravestone ... 57
(1) project gravestone ... 57
(2) expansion gravestone ... 57
(3) concern gravestone ... 58
(4) gravestone is removed ... 58
11. assistant API and function ... 58
A) function [System.Storage] .GetItem ... 59
B) function [System.Storage] .GetExtension ... 59
C) function [System.Storage] .GetRelationship ... 59
12. metadata ... 59
A) pattern metadata ... 59
B) instance metadata ... 59
E. security ... 59
1. summarize ... 59
2. the detailed description of security model ... 64
A) security descriptor structure ... 64
(1) access mask form ... 65
(2) generic access rights ... 65
(3) standard access authority ... 66
B) the special-purpose authority of project ... 66
(1) the special-purpose authority of file and directory object ... 66
      (2)WinFSItemRead………………………………………………67
      (3)WinFSItemReadAttributes…………………………………68
      (4)WinFSItemWriteAttributes ………………………………68
      (5)WinFSItemWrite ……………………………………………68
      (6)WinFSItemAddLink …………………………………………69
      (7)WinFSItemDeleteLink………………………………………69
(8) authority of delete items ... 69
(9) copy item purpose authority ... 70
(10) authority of mobile project ... 70
(11) check the authority of the security strategy on the project ... 70
The authority of the security strategy on (12) the change project ... 70
(13) there is not the authority of direct equivalent ... 71
3. realize ... 71
A) in container, create new projects ... 71
B) add explicit ACL to project ... 71
C) add the relation of holding to project ... 72
D) hold relation from deletion of items ... 72
E) the explicit ACL of deletion from project ... 72
F) revise the ACL that is associated with project ... 73
F. notify and change tracking ... 73
1. store the change event ... 73
A) event ... 73
B) supervisory programme ... 74
2. change and follow the tracks of and the notice generting machanism ... 75
A) change tracking ... 76
B) time mark management ... 77
C) data change detection-event detection ... 77
G. synchronous ... 78
Storage platform to storage platform synchronously ... 78
A) synchronous (Sync) controlling application program ... 79
B) pattern note ... 79
C) synchronously configuration ... 80
(1) community's file-mapping ... 81
(2) overview ... 82
(3) timetable ... 82
D) conflict is processed ... 82
(1) collision detection ... 83
(a) based on the conflict of knowledge ... 83
(b) conflict of Constraint-based ... 83
(2) conflict is processed ... 84
(a) automatic collision decomposition ... 84
(b) conflict log recording ... 85
(c) conflict checks and decomposes ... 85
(d) propagation of the convergence of duplicate and collision decomposition ... 85
To the storage of non-storage platform data synchronously ... 86
A) synchronous service ... 86
(1) change is enumerated ... 86
(2) change application ... 87
(3) collision decomposition ... 87
B) adapter is realized ... 88
3. security ... 88
4. manageability ... 88
G. traditional file interoperability ... 88
1. interoperability model ... 89
2. data are stored feature ... 90
A) non-volume ... 90
B) storage organization ... 90
C) do not transplant All Files ... 91
D) the NTFS name space of storage platform file is accessed ... 91
E) name space/drive letter of expectation ... 91
I. storage platform API ... 91
1. summarize ... 92
2. name and scope ... 92
3. storage platform API assembly ... 94
4. data class ... 94
5. framework when moving ... 101
Framework class when a) moving ... 101
    (1)ItemContext………………………………………………101
    (2)ItemSearcher……………………………………………102
(a) target type ... 102
(b) filter ... 102
(c) prepare search ... 103
(d) search option ... 103
(3) project result stream (" FindResult ") ... 104
B) operation in operation the time framework ... 105
C) public programming mode ... 106
(1) opens and closes the ItemContext object ... 106
(2) object search ... 107
(a) search option ... 108
(b) FindOne and FindOnly ... 108
(c) shortcut on the Searching I temContext ... 109
(d) according to ID or path searching ... 109
(e) GetSearcher pattern ... 110
(3) updated stored ... 110
6. security ... 112
7. the support to concerning ... 112
A) primary relationship type ... 113
(1) Relationship class ... 113
(2) ItemReference class ... 114
(3) ItemIdReference class ... 114
(4) ItemPathReference class ... 115
(5) RelationshipId structure ... 115
(6) VirtualRelationshipCollection class ... 116
B) relationship type that generates ... 117
(1) relationship type that generates ... 118
(2) RelationshipPrototype class ... 118
(3) RelationshipPrototpyeCollection class ... 119
C) concern support in the Item class ... 119
(1) Item class ... 119
(2) RelationshipCollection class ... 119
D) concern support in the search expression formula ... 120
(1) traverses relation from project ... 120
(2) traverse project from relation ... 120
(3) syntagmatic traversal ... 121
E) example of relation support is used ... 121
(1) search relation ... 121
(2) navigate to the source and target project from relation ... 122
(3) navigate to relation from source item ... 123
(4) create relation (and project) ... 124
(5) deletion relation (and project) ... 125
8. " expansion " storage platform API ... 125
A) territory behavior ... 126
B) increment behavior ... 126
C) as ISP's increment behavior ... 127
9. framework when designing ... 128
10. inquiry form ... 128
A) filter basis ... 129
B) coercion of type conversion ... 130
C) filter syntax ... 130
11. remote control ... 131
A) transparency of the local/remote among the API ... 131
B) storage platform of remote control realizes ... 132
C) the non-storage platform storage of access ... 132
D) with the relation of DFS ... 132
E) with the relation of GXA/Indigo ... 132
12. constraint ... 133
13. share ... 134
A) expression is shared ... 135
B) management is shared ... 135
C) access is shared ... 135
D) Finding possibility ... 136
14.Find semanteme ... 136
15. storage platform Contacts API ... 136
A) summary of System.Storage.Contact ... 137
B) territory behavior ... 137
16. storage platform File API ... 138
A) introduce ... 138
(1) reflection NTFS volume in storage platform ... 139
(2) in the storage platform name space, create file and catalogue ... 139
B) file mode ... 140
C) summary of System.Storage.Files ... 140
D) example code ... 140
(1) opens file and write to it ... 140
(2) use inquiry ... 141
E) territory behavior ... 141
J. sum up ... 141
I. foreword
Theme of the present invention is described with details, to satisfy legal requirement. Yet itself does not attempt to limit the scope of this patent this description. On the contrary, the present inventor imagines claimed theme and also can otherwise implement, and is similar to the described different step of this document or the combination of step to comprise in conjunction with other current with following technology. In addition, although term " step " can be used for meaning the different elements of the method that adopts here, yet this term can not be interpreted as the certain order between implicit each step that discloses here, unless described clearly the order of each step.
A. example calculation environment
Many embodiment of the present invention can carry out on computers. Fig. 1 and following discussion aim to provide the concise and to the point description that wherein realizes suitable computing environment of the present invention. Although be not essential, aspects of the present invention can be with such as by describing in the context as the computer executable instructions of the program module carried out on the computer of client workstation or server. Generally speaking, program module comprises routine, program, object, assembly, data structure etc., and they are carried out particular task or realize particular abstract data type. In addition, the present invention can realize with other computer system configurations, comprises handheld device, multicomputer system, based on the system of microprocessor or programmable consumer electronics, network PC, minicomputer, large scale computer etc. The present invention can also realize in DCE that wherein task is by finishing by the teleprocessing equipment of communication network link. In DCE, program module can be arranged in the Local or Remote memory storage device.
As shown in Figure 1, the exemplary universal computing system comprises traditional personal computer 20 etc., and it comprises processing unit 21, system storage 22 and will comprise that the various system components of system storage are coupled to the system bus 23 of processing unit 21. System bus 23 can be several bus-structured any, any the local bus that comprises memory bus or memory controller, peripheral bus and use various bus architectures. System storage comprises read-only storage (ROM) 24 and random access memory (RAM) 25. Basic input/output 26 (BIOS) comprises as help the basic routine of transmission information between all elements at personal computer 20 when starting, and it is stored among the ROM 24. Personal computer 20 can comprise that also the disc driver 28, read-write of hard disk drive 27, the read-write moveable magnetic disc 29 of reading writing harddisk (not shown) are such as the CD drive 30 of the removable CD 31 of CDROM or other light medium. Hard disk drive 27, disc driver 28 and CD drive 30 are connected to system bus 23 by hard disk drive interface 32, disk drive interface 33 and CD drive interface 34 respectively. Driver and the computer-readable medium that is associated thereof provide the non-volatile memories of computer-readable instruction, data structure, program module and other data for personal computer 20. Although exemplary environments described herein adopts hard disk, moveable magnetic disc 29 and removable CD 31, but it will be appreciated by those skilled in the art that, but in the exemplary operation environment, also can use stored energy by other type computer computer-readable recording medium of the data of computer access, such as cassette tape, flash card, digital video disc, Bernoulli cassette tape, random access memory (RAM), read-only storage (ROM) etc. Similarly, example context also can comprise is permitted eurypalynous surveillance equipment, such as temperature-sensitive and safety or fire alarm system, and other information source.
Some program modules can be stored among hard disk, disk 29, CD 31, ROM 24 or the RAM 25, comprise operating system 35, one or more application program 36, other program module 37 and routine data 38. The user can be by ordering such as input equipments such as keyboard 40 and pointing devices 42 with input information to personal computer 20. Other input equipment (not shown) can comprise microphone, control stick, game mat, satellite dish, scanner etc. These and other input equipment normal open overcoupling is connected to processing unit 21 to the serial line interface 46 of system bus, but also can connect by other interface, such as LPT, game port or USB (USB). The display device of monitor 47 or other type also is connected to system bus 23 by the interface such as video adapter 48. Except monitor 47, personal computer generally includes such as other peripheral output equipment (not shown) such as loudspeaker and printers. The example system of Fig. 1 also comprises host adapter 55, small computer system interface (SCSI) bus 56 and is connected to the External memory equipment 62 of SCSI bus 56.
Personal computer 20 can use logic such as one or more remote computers of remote computer 49 and be connected in the network environment and operate. Remote computer 49 can be another personal computer, server, router, network PC, peer device or other common network node, and generally include above many or all elements that personal computer 20 is described, although memory storage device 50 only is shown in Fig. 1. The logic that draws among Fig. 1 connects and comprises LAN (LAN) 51 and wide area network (WAN) 52. Such network environment is common in office, enterprise-wide. computer networks, Intranet and internet.
When using in the lan network environment, personal computer 20 is connected to LAN 51 by network interface or adapter 53. When using in the WAN network environment, personal computer 20 generally includes modem 54 or is used for by setting up other device of communication such as the wide area networks such as internet 52. Built-in or external modem 54 is connected to system bus 23 by serial port interface 46. In network environment, program module or its part of personal computer 20 descriptions can be stored in the remote memory storage device relatively. Be appreciated that the network connection that illustrates is exemplary, can use other means of between computer, setting up communication link.
Shown in the block diagram of Fig. 2, computer system 200 can be divided into three assembly groups roughly: nextport hardware component NextPort 202, hardware/software interface system component 204 and application component 206 (being also referred to as " nest " or " component software " here in some context).
Get back to Fig. 1, in each embodiment of computer system 200, nextport hardware component NextPort 202 can comprise CPU (CPU) 21, memory (ROM 24 and RAM 25), basic input/output (BIOS) 26 and various I/O (I/O) equipment, such as keyboard 40, mouse 42, monitor 47 and/or printer (not shown) etc. Nextport hardware component NextPort 202 comprises the basic physical basis structure of computer system 200.
Application component 206 comprises various software programs, includes but not limited to compiler, Database Systems, word processing program, commercial programs, video-game etc. Application program provides computer resource to be used to various users (machine, other computer system and/or end user) to deal with problems, provide the means of solution and deal with data.
Hardware/software interface system component 204 comprises (can only comprise in certain embodiments) operating system, and in most of the cases the latter itself comprises shell and kernel. " operating system " is the separate procedure of taking on the intermediary between application program and computer hardware (OS). Hardware/software interface system component 204 also can comprise virtual machine manager (VMM), common statement Runtime Library (CLR) or its functional equivalent, Java Virtual Machine (JVM) or its functional equivalent or replace operating system or other component software except operating system in computer system. The purpose of hardware/software interface system provides the therein environment of executive utility of user. The target of any hardware/software interface system is to make computer system easy to use, and utilizes computer hardware in effective mode.
Hardware/software interface system generally is loaded into computer system when starting, and manages subsequently all application programs in computer system. Application program is by coming with hardware/software interface system mutual via application programming interfaces (API) request service. Some application program makes the end user can be by mutual such as the user interface such as command lanuage or graphic user interface (GUI) and hardware/software interface system.
Hardware/software interface system is the various services of executive utility traditionally. In the multitask hardware/software interface system that a plurality of programs are moved simultaneously, hardware/software interface system determines which application program should with what time sort run, and how long allows for each being used journey before in turn switching to the Another Application program. Hardware/software interface system is also managed sharing of between a plurality of application programs internal storage, and processes the input and output that commute such as the additional hardware device such as hard disk, printer and dialing port. Hardware/software interface system also sends to the message about mode of operation and contingent any mistake each application program (arriving in some cases the end user). Hardware/software interface system also can pass down the management of (as printing) of (offload) batch processing job, so that the application program that starts can be broken away from this work and restart other processing and/or operation. On the computer that parallel processing can be provided, hardware/software interface system is also managed partition program, so that it moves at a plurality of processors simultaneously.
Hardware/software interface system shell (being called for short " shell " here) is the interactive end-user interface to hardware/software interface system. (shell is also referred to as " command interpreter ", or in operating system, be called " operating system shell "). Shell be can be directly by the skin of the hardware/software interface system of application program and/or visit to end user. Opposite with shell, kernel is the innermost layer direct and hardware/software interface system that nextport hardware component NextPort is mutual.
Be particularly useful for computerized system although can conceive many embodiment of the present invention, yet do not mean that in which in this document and to limit the invention to those embodiment. On the contrary, term used herein " computer system " is intended to comprise can Storage and Processing information and/or can use any and all devices of behavior or the execution of canned data control appliance itself, and no matter whether those equipment are electronics, mechanical, logic or virtual in essence.
B. traditional storage based on file
In current most computers system, " file " is the unit that can store information, and it can comprise hardware/software interface system and application program, data set etc. In all modern hardware/software interface system (Windows, Unix, Linux, MacOS, dummy machine system etc.), file is can be by basic discrete (can store and can retrieve) information unit of hardware/software interface system processing. File group is organized into " file " usually. In Microsoft Windows, Macintosh OS and other hardware/software interface system, file be can be retrieved as single information unit, the set of the mobile and file processed. These files and then be organized into are called the hierarchal arrangement based on tree of " catalogue " (discussing in detail in the back). In such as Dos, z/OS and great majority other hardware/software interface system based on the operating system of Unix, term " catalogue " and/or " file " are used interchangeably, and early stage apple computer system (such as Apple IIe) uses term " classification " to replace catalogue; Yet when here using, all these terms are regarded as synonym and are used interchangeably, and are intended to also to comprise quoting all other equivalent terms of hierarchical information storage organization and file and file components.
Traditionally, catalogue (catalogue that has another name called file) is based on the hierarchy of tree, and its File is combined into file, file and then the relative node location arrangement of pressing the formation directory tree. For example, shown in Fig. 2 A, constituent instruments folder (or " root ") 212 based on the file system of DOS can comprise a plurality of files 214, its each can also comprise other file (such as " sub-folder " of particular file folder) 216, and these each comprises other file 218, to infinity. Each of these files can have one or more files 220, although on the hardware/software interface system level, what common ground each file in the file does not have except their positions in tree-like hierarchy. Physical organization not strange, file organization has been reflected indirectly the typical storage medium (such as hard disk, floppy disk, CD-ROM etc.) that is used for these files of storage to the method for file hierarchy.
Except above-mentioned, each file be to its sub-folder and its file container-namely, each file has its sub-folder and file. For example, when file was deleted by hardware/software interface system, the sub-folder of this document folder and file be deleted (sub-folder and the file that also recursively comprise it in the situation of each sub-folder) also. Equally, each file is general only to be had by a file, although and file can be replicated and copy is positioned at different files, the copy of file itself is difference and separate unit, it with original document without directly being connected (on the hardware/software interface system level, not being reflected to wave file such as the change to original document). Therefore in this respect, file and file are " physics " in itself process because file is similar to physical container, and file as different in these containers and independently physical element process.
II. the new storage platform that is used for tissue, search and shared data
The present invention is directed to for tissue, search and shared data storage platform. Storage platform of the present invention is expanded outside the kind of file system discussed above and Database Systems and has been widened data platform, and is designed to store all types of data, comprises the data of the new model that is called project.
A. vocabulary
Reach the term that in claims, uses here following meaning arranged:
" project " is the unit of energy storage hardware/addressable information of software interface system, do not resemble simple files, and it is to have the object that is represented the basic attribute set of jointly supporting to all objects of end user by hardware/software interface system shell. Project also tool comprises the feature (discussing in detail below) that allows to introduce new attribute and relation to common attribute and the relation of supporting of all items type.
" operating system " is the separate procedure of taking on the intermediary between application program and the computer hardware (OS). In most of the cases, operating system comprises shell and kernel.
" hardware/software interface system " is the combination of software or hardware and software, and it plays a part bottom hardware assembly and the interface between the application program that computer system is carried out of computer system. Hardware/software interface system generally includes (including only in certain embodiments) operating system. Hardware/software interface system can also comprise virtual machine manager (VMM), common statement Runtime Library (CLR) or its functional equivalent, Java Virtual Machine (JVM) or its functional equivalent or replacement operating system or other component software except operating system in computer system. The purpose of hardware/software interface system provides the environment of user's energy executive utility. The target of any hardware/software interface system is to make computer system easy to use, and utilizes computer hardware with effective means.
B. storage platform is summarized
With reference to figure 3, be included in the data storage 302 that realizes on the database engine 314 according to storage platform 300 of the present invention. In one embodiment, database engine comprises the relevant database engine with the object relationship expansion. In one embodiment, relevant database engine 3 14 comprises Microsoft SQL Server relevant database engine.
Data storage 302 realizes the tissue, search of supported datas, shared, synchronous and safe data model 304. In such as mode 3 40 isotypes, describe specific data type, and storage platform 300 is provided for adopting these patterns and for the instrument 346 of expanding these patterns, this describes in detail in the back.
The change follow-up mechanism 306 that realizes in data storage 302 provides the ability of the change of tracking data storage. Data storage 302 also provides security capabilities 308 and upgrading/degradation ability 310, and these all describe in detail later. Data storage 302 also provides one group of application programming interface 312, with the ability to other storage platform assembly that utilizes this storage platform and application program (such as application program 350a, 350b and 350c) demonstrating data storage 302.
Storage platform of the present invention also comprises application programming interface (API) 322, makes such as application program 350a, and 350b, and the application program such as 350c can be accessed all above-mentioned functions of storage platform and can access the data of describing in pattern. Application program can be in conjunction with using storage platform API 322 such as other API such as OLE DB API 324 and Microsoft Windows Win 32 API 326.
Storage platform 300 of the present invention can provide various services to application program, comprises the synchronous service 330 of being convenient at the data sharing of user or system. For example, synchronous service 330 allows and has the interoperability of storing other data storage 340 of 302 same format with data, and access has the data storage 342 of other form. Storage platform 300 also provides data storage 302 and the file system ability such as the interoperability of Windows new technology file system 318 systems such as existing file such as grade of allowing.
In some embodiment at least, storage platform 320 can also provide other ability to application program, data is worked and allows mutual with other system allowing. These abilities can be embodied as the form such as Additional Services 328 such as Info Agent service 334 and notification service 332, and the form of other utility program 336.
In some embodiment at least, storage platform is implemented with the hardware/software interface system of computer system, or forms its complete part. For example and unrestricted, storage platform of the present invention can be implemented with operating system, virtual machine manager (VMM), common statement Runtime Library (CLR) or its functional equivalent or Java Virtual Machine (JVM) or its functional equivalent, or forms its complete part.
By its public storage basis and the data of medelling, storage platform of the present invention makes consumer, knowledge worker and enterprise do more effectively to carry out the exploitation of application program. It provides abundant and extendible programming surf zone, not only can obtain ability intrinsic in its data model, can also comprise and expand existing file system and data bank access method.
In following description and in each accompanying drawing, storage platform 300 of the present invention can be called " WinFS ". Yet use this name to refer to that storage platform only is for convenience, does not attempt to make any restriction.
C. data model
The data storage 302 of storage platform 300 of the present invention realizes a kind of data model, and it is supported the tissue that resides in the data in the storage, search, shared, synchronous and safety. In data model of the present invention, " project " is the elementary cell of storage information. This data model provides a kind of mechanism, be used for statement project and project expansion, be used for the relation between the set up item and be used for the project organization to project folder and classification, these are with hereinafter more abundant description.
This data model depends on two primitive mechanism: type and relation. Type provides the structure of form of form of the example of domination type. Form is expressed as orderly group of attribute. Attribute is the name of the value or set of values of given type. For example, USPostalAddress (United States Post Office address) type has attribute Street (street), City (city), Zip (postcode), State (state), wherein Street, City and State are the String types, and Zip is the Int32 type. Street can be many-valued (i.e. a class value), allows the address that the Street attribute is had value more than. Some primitive type that system definition can be used in other type structure comprises String (string), Binary (binary system), Boolean (boolean), Int16 (16 integers), Int32 (32 integers), Int64 (64 integers), Single (single precision), Double (double precision), Byte (byte) DateTime (time on date), Decimal (decimal system) and GUID. Can use any primitive type (with some restriction of following note) or the type of any structure to come the attribute of define styles. For example, Location (position) type can be defined as having attribute Coordinate (coordinate) and Address (address), and wherein the Address attribute is the above-mentioned type USPostalAddress. Attribute also can be essential or optional.
Relation can be declared and represent the mapping between the example set of two types. For example, the relation of stating can be arranged between Person (individual) type and Location type, be called LivesAt (living in), it determines where who lives in. Relation has title and two end points, i.e. source endpoint and target endpoint. Relation also can have the ordered set of attribute. Source endpoint and target endpoint all have title and type. For example, the LivesAt relation has the source of the Occupant (resident) that is called type Person and is called the target of the Dwelling (house) of type Location, and have in addition attribute StartDate (from date) and EndDate (date of expiry), represent that this resident living is in the time period of this house. Notice that pass in time, the individual can live in a plurality of houses, and house can have a plurality of residents, be originally to be in relation so place the most probable place of StartDate and EndDate information.
Contextual definition by the mapping between the example of the type constraint that provides as endpoint type. For example the LivesAt relation can not be that wherein Automobile (automobile) is Occupant (resident's) relation, because Automobile is not Person.
Subtype between data model permission define styles-superclass type relation. Subtype-the superclass that is also referred to as fundamental type (BaseType) relation is the as follows definition of type relation, if type A is the fundamental type of type B, then situation must be that each example of B also is the example of A. The another kind of method of expressing is that each example that meets B also must meet A. For example, if A has the attribute Name (name) of String type, and B has the attribute Age (age) of Int16 type, then draws, and any example of B must have Name and Age concurrently. The hierarchy of type can be envisaged as on root the tree with single superclass type. The branch of root provides first order subtype, and this grade branch provides second level subtype, and the rest may be inferred, until itself no longer have end of blade (leaf-most) subtype of any subtype. Tree is not limited to the unified degree of depth, but can not comprise any loop. Given type can have zero or a plurality of subtype and zero or a superclass type. Given example can meet at most the superclass type an of type and the type. In other words, to the tree in arbitrary grade locate given example, this example can meet at most a subtype on this grade.
If the example of type must also be the example of the subtype of the type, then the type can be considered to abstract.
1. project
Project is to store the unit of information, does not resemble simple file, and it is the object with the common basic attribute set supported of all objects that is represented to end user or application program by storage platform. Project also has common attribute and the relation of supporting of all items type, comprises that permission as described below introduces new attribute and the feature of relation.
Project is the object of common operation, as copying, delete, move, open, print, back up, recover, copy etc. Project is the unit that can be stored and retrieve, and the form of ownership of the stored information of being processed by storage platform exists as attribute or the relation between the project of project, project, its each more discuss in detail below.
That project is intended to represent reality and hold intelligible data cell, such as Contacts (contact person), People (people), Services (service), Locations (position), (various types of) Documents (document) etc. Fig. 5 A is the block diagram that the structure of project is shown. The defective name of this project is " Location ". The qualified name of this project is " Core.Location ", and it shows that this project structure is defined by the project (core schema discusses in detail below) of the particular type in core (Core) pattern.
The Location project has a plurality of attributes, comprises EAddress (e-mail address), MetropolitanRegion (urban place), Neighborhood (neighbour) and PostalAddress (postal address). The particular type attribute of each project represents immediately following attribute-name, and separates with attribute-name with colon (": "). The right in type name, the quantity of the value that this attribute type is allowed represent that between square brackets (" [] ") wherein the asterisk (" * ") on colon (": ") the right represents unspecified and/or unconfined quantity (" many "). " 1 " on colon the right shows maximum values. Zero (" 0 ") on the colon left side shows that this attribute is optional (fully void value). " 1 " on the colon left side shows to have a value (this attribute is necessary) at least. Neighborhood and MetropolitanRegin all are " nvarchar " types (or connection of equivalent type), and it is predefined data type or " simple types " (representing with lacking capitalization here). Yet EAddress and PostalAddress are respectively the defined type of type EAddress and PostalAddress or the attribute of " complicated type " (here with capitalization mark). Complicated type is from one or more simple data types and/or the type that derives from other complicated type. The complicated type of the attribute of project also consists of " nested element ", because the details of complicated type is nested in the direct project to define its attribute, and the information appliance that relates to these complicated types has the project of these attributes to keep (in the border of this project, discussing such as the back). These concepts of type are that the crowd knows, and are understood by those skilled in the art easily.
Fig. 5 B is the block diagram that complex properties type PostalAddress and EAddress are shown. The project of PostalAddress attribute type defined attribute type PostalAddress can expect to have zero or a City (city) value, zero or a CountryCode (country code) value, zero or MailStop (mailbox code) value and any quantity (zero to many) PostalAddress type etc. In this way, defined the shape of the data of the particular community in the project. The EAddress attribute type is similarly definition as shown. Although optionally use in this application here, the other method of complicated type is to use each attribute of each complicated type of wherein listing to draw this project in the expression Location project. Fig. 5 C is the block diagram that the Location project is shown, and further describes therein its complicated type. Yet should be appreciated that the another kind of Location project represents it just is same project to shown in Fig. 5 A in Fig. 5 C. Storage platform of the present invention also allows subtype, thereby an attribute type is another subtype (one of them Attribute class is inherited the attribute of another father's attribute type).
Be similar to but be different from attribute and their attribute type, Item (project) type of project inheritance ground expression its oneself, it also is the theme of subclassification. In other words, the subtype that to allow a project be another project of the storage platform among some embodiment of the present invention (thereby project is inherited the attribute of another father's project). In addition, to various embodiment of the present invention, each project is the subtype of " Item " item types, and the latter is first and the basic item types (basic schema also discusses in detail in the back) that finds in basic schema. Fig. 6 A illustrates a project (in this example for Location project) and be the subtype of the Item item types that finds in basic schema. In this figure, arrow represents that Location project (the same with all other projects) is the subtype of Item item types. Have as the Item item types of the elementary item of therefrom deriving all other projects some such as important attribute and various time marks such as ItemId (item id), thereby defined the standard attribute of all items in the operating system. In this figure, these attributes of Item item types are inherited by Location, thereby and become the attribute of Location.
The another kind of method of expression attribute from the Location project that the Item item types is inherited is to use each attribute from each attribute type of father's project of wherein listing to draw Location. Fig. 6 B is the block diagram that the Location project is shown, and wherein describes the type of its succession except its direct attribute. Should note and understand, this project is the same project shown in Fig. 5 A, although in this figure, Location illustrates with all its attributes, comprise direct attribute (shown in Ben Tu and Fig. 5 A) and inherited attribute (shown in this figure but not shown in Fig. 5 A) (and in Fig. 5 A, being that the subtype of Item item types is quoted these attributes by the Location project is shown with arrow).
Project is object independently, if thereby delete a project, also delete items all directly and attributes of inheriting. Similarly, when retrieval one project, what receive is this project and all attributes (comprising the information that relates to its complex properties type) direct and succession thereof. Some embodiment of the present invention can make the people can be in the subset of retrieval request attribute during specific project; Yet to many such embodiment acquiescences be when the retrieval to project provide all its directly and attributes of inheriting. In addition, the attribute of project also can be expanded to the existing attribute of the type of this project by adding new attribute. These " expansions " are thereafter the real properties of this project, and the subtype of this item types can automatically comprise extended attribute.
" border " of project represented by its attribute (comprising complex properties type, expansion etc.). The border of project is also illustrated in the restriction of the operation of carrying out on the project, comprise copy, delete, move, establishment etc. For example in some embodiment of the present invention, when copying project, all the elements within this item boundaries also are replicated. To each project, the border comprises following:
The item types of project, if and this project is another purpose subtype (in the situation such as some embodiment of the present invention of deriving from the single project of basic schema and item types at all items), is any applicable sub-type information (information that namely relates to father's item types). If the original project that copies is another purpose subtype, this copy also can be the subtype of this same project.
The complicated type attribute of project and expansion (if any). If original project has the attribute of complicated type (originally or expansion), copy also can have same complicated type.
The record of the project on " ownership ", that is, the project that this project (" having project ") has what other project (" directory items ") has tabulation. This in particular concerns the rule that the project folder that discusses fully below and all items that mentions below must belong to a project folder at least. In addition, about embedding project (following more discuss fully), the embedding project be considered to wherein to embed as copy, the part of the project of the operation such as deletion.
2. project label
In overall project space, identify uniquely project with ItemID. The Base.Item type definition store the field ItemID of the type GUID of this project identity. A project must be stored in data only has an identity in 302.
A) project is quoted
It is the data structure that comprises location and identification item purpose information that project is quoted. In this data model, the abstract type of definition ItemReference (project is quoted) by name therefrom derives all items reference type. The ItemReference type definition virtual method of Resolve by name (parsing). The Resolve method is resolved ItemReference and is returned a project. The method is covered by the concrete subtype of ItemReference, and the latter realizes given one purpose function of search terms when quoting. Call the Resolve method as the part of storage platform API 322.
(1)ItemIDReference
ItemIDReference (item id is quoted) is the subtype of ItemReference. It has defined Locator (locator) and ItemID field. Locator field name (i.e. sign) item domains. It is processed by the locator resolution method that the value of Locator can be resolved to item domains. The ItemID field is the ItemID type.
(2)ItemPathReference
ItemPathReference (item Path is quoted) is the particularization that defines the ItemReference of Locator and Path (path) field. Locator field identification item domains. It is processed by the locator resolution method that the value of Locator can be resolved to item domains. (relatively) path during the Path field comprises take the item domains that provided by Locator as the storage platform name space of root.
Can not in set operation, use this class reference. Quote generally and must resolve by path resolving. The Resolve method of storage platform API 322 provides this function.
B) reference type hierarchy
Reform discussed above represents by the reference type hierarchy shown in Figure 11. Other reference type of inheriting from these types can define pattern. They can be used as the type of aiming field in the relation statement.
3. project folder and classification
As below will more discussing fully, project team can be organized into the special item that is called project folder (not obscuring with the file of file). Yet do not resemble most of file system, a project can belong to a plurality of project folders, so that when project accessed and when revision in a project folder, the project of this revision subsequently can be directly from another project folder access. In fact, although can occur from different project folders the access of a project, in fact real access is same project. Yet project folder needn't have its all member's projects, or owns project together in conjunction with other file simply, so that the unnecessary deletion that causes project of the deletion of a project folder. Yet in some embodiment of the present invention, a project must belong to a project folder at least, so that if unique project folder of specific project is deleted, then to some embodiment, this project is automatically deleted, or in other embodiment, this project automatically becomes the member of default item file, and (for example, " Trash Can (dustbin) " item file is clipped in the conceptive similar name file that uses that is similar in various systems based on file and file. )
More discuss fully as following, project also can belong to the classification based on the feature of common description, feature is such as (a) item types (or type), (b) specific directly or the attribute (or attribute) of inheriting, or (c) corresponding to the particular value (or value) of item attribute. For example, comprise that the project of the particular community of individual associated person information can belong to Contact (contact person) classification automatically, any project with associated person information attribute also belongs to this classification automatically. Equally, any project that has the position attribution of " New York City (New York) " value can belong to NewYorkCity (New York) classification automatically.
Classification is in the conceptive project folder part that is different from, project folder can comprise the mutually irrelevant project feature of common description (namely without), and each project in classification has common type, attribute or the value (" common point ") that this classification is described, just this concomitant basis that forms the relation between other project in it and this classification or those projects. In addition, although the membership qualification of the project in particular file folder is not compulsory based on any particular aspects of this project, yet to some embodiment, all items with common point relevant with a classification in classification can automatically become such other member on the hardware/software interface system level. Conceptive, classification also can be regarded the phantom item file as, its membership qualification is based on the ad hoc inquiry result of (as in the context of database), and the project that satisfies the condition (common point by classification is determined) of this inquiry should consist of such other membership qualification.
Fig. 4 is illustrated in the structural relation between project, project folder and classification in the various embodiments of the present invention. A plurality of projects 402,404,406,408,410,412,414,416,418 and 420 are each project folder 422,424,426,428 and 430 member. Some project belongs to an above project folder, belongs to project folder 422 and 424 such as project 402. Some project, also be one or more classifications 432,434 and 436 member such as project 402,404,406,408,410 and 412, and other project, such as project 44,416,418 and 420 can not belong to any classification (although this major part does not resemble in certain embodiments, wherein has any attribute and automatically hints membership qualification in the classification, therefore in such embodiment in order not to be the member of any classification, project should be fully without feature). Opposite with the hierarchy of file, classification and project folder all have more the structure as directed digraph. Under any circumstance, project, project folder and classification all are project (although being different item types).
Opposite with file, file and catalogue, the feature of project of the present invention, project folder and classification is not " physics " in itself, because they do not have notional equivalence of physical container, thereby project can be present in position such more than. The ability that project is present in an above item file position and is organized into classification provides in the hardware/software interface level and has strengthened and the data of enriching degree are processed and the storage organization ability, has surmounted in the art current available ability.
4. pattern
A) basic schema
For the general basic of establishment and the project of use is provided, each embodiment of storage platform of the present invention comprises the basic schema of setting up for creating and organize the conceptual frame of project and attribute. Basic schema has defined project and the attribute of some particular type, and the feature that therefrom further derives these specific fundamental types of subtype. Use this basic schema that the programmer can be distinguished project (and type separately) and attribute (and type separately) conceptive. In addition, basic schema is listed the basic attribute set that all items can have, and (and corresponding item types) is that this elementary item (and corresponding item types) from basic schema is derived because all items.
As shown in Figure 7, for some embodiment of the present invention, basic schema definition three top layer type: Item (project), Extension (expansion) and PropertyBase (attribute base). As shown in the figure, the attribute definition by this basic " Item " item types item types. On the contrary, top layer attribute type " PropertyBase " does not have predefined attribute, only is an anchor point, therefrom derives all other attribute types, and the attribute type of all derivation interknits (jointly deriving from single attribute type) by it. The Extension type attribute defines this expansion and has expanded which project, and definition sign that an expansion and another project are distinguished, because a project can have a plurality of expansions.
ItemFolder (project folder) is the subtype of Item item types, except the attribute of inheriting from Item, it characterizes the relation for the link that is established to its member (if any), although Identitykey (identity key) and Property (attribute) all are the subtype of PropertyBase. CategoryRef (catalogue is quoted) and then be the subtype of IdentityKey.
B) core schema
The various embodiment of storage platform of the present invention also are included as the core schema that top layer item types structure provides conceptual framework. Fig. 8 A is the block diagram that the project in the core schema is shown, and Fig. 8 B is the block diagram that attribute type in the core schema is shown. The function that is similar to core schema with the file of different extension name (* .com, * .exe, * .bat, * .sys etc.) and the differentiation of in based on file and file system folder, making between other criterion. In project-based hardware/software interface system, core schema has defined one group of core project type, their directly (by item types) or indirectly (by project subtype) all items feature is changed into that project-based hardware/software interface system is understood and can be with one or more core schema item types predetermined or the direct processing of predictable mode. Predefined project type has reflected project the most frequently used in project-based hardware/software interface system, and therefore obtains the validity rank by understanding these project-based hardware/software interface system that consist of the predefine project type of core schema.
In certain embodiments, core schema can not be expanded, and, does not have the directly item types subclassification from basic schema of other type that is, unless as the specific predetermined item types of deriving of the part of core schema. By forbidding the expansion (that is, by forbidding adding new project to core schema) to core schema, the use of storage platform trustship core schema item types is because each follow-up item types must be the subtype of core schema item types. This structure allows to have the flexibility of resonable degree when the other item types of definition when maintenance has the benefit of one group of predetermined core project type.
With reference to figure 8A, to various embodiment of the present invention, can be comprised following one or more by the specific project type of core schema support:
Category (classification): the repertory of this project type (and the subtype that therefrom derives) is shown in the effective classification in the project-based hardware/software interface system.
Commodity (article): as the project of the identified things of value.
Device (equipment): the project with logical construction of support information disposal ability.
Document (document): have and to be explained and the project of opposite content by explaining corresponding to the application program of Doctype by project-based hardware/software interface system.
Event (event): the project of event occurs in some in the record environment.
Location (position): the project in represents physical position (such as the geographical position).
Message (message): the project of communication between two or more main bodys (below definition).
Principal (main body): have at least one sure susceptible of proof identity except ItemId project of (such as, the sign of individual, tissue, group, family, author, service etc.).
Statement (statement): have the project about the customizing messages of environment, include but not limited to: strategy, reservation, voucher etc.
Similarly with reference to figure 8B, can be comprised following one or more by the particular community type of core schema support:
Certificate (certificate) (the basic PropertyBase type from basic schema derives)
PrincipalIdentityKey (subject identity key) (the IdentityKey type from basic schema derives)
PostalAddress (postal address) (the Property type derives from basic schema)
RichText (rich text) (the Property type derives from basic schema)
EAddress (Email geology) (the Property type derives from basic schema)
IdentitySecnrityPackage (identity security bag) (the Relationship type derives from basic schema)
RoleOccupancy (resident role) (the Relationship type derives from basic schema)
BasicPresence (basis exists) (the Relationship type derives from basic schema)
These projects and attribute further describe by the separately attribute of listing in Fig. 8 A and Fig. 8 B.
5. concern
Relation is binary crelation, and one of them project is designated as the source, and another is designated as target. Source item and destination item interrelate by relation. The life cycle of source item general control relation. That is, deleted when source item, the relation between the project is also deleted.
Relation is classified into: comprise (Containment) and quote (Reference) relation. The life cycle of inclusion relation control destination item, and adduction relationship does not provide any life cycle management semantic. Figure 12 illustrates the mode of relation classification.
The inclusion relation type is classified into again to be held (Holding) and embeds (Embedding) relation. When relation that all of a project are held is removed, this project is deleted. Hold and concern the by reference life cycle of counter mechanism control target. Imbeding relation can be to compound project modeling, and can be counted as the exclusive relation of holding. A project can be one or more related targets of holding; But a project can only be the target of an imbeding relation. Can not be that arbitrary other held or the target of imbeding relation as the project of the target of imbeding relation.
Adduction relationship is not controlled the life cycle of destination item. They can be that suspension-destination item can not exist. Adduction relationship can be used for quoting project in any place (that is, comprising remote data storage) modeling of overall project name space.
The acquisition project does not obtain its relation automatically, and application program is the relation of request items clearly. In addition, revise relation and do not revise source or destination item; Similarly, add relation and do not affect source/destination item.
A) relation statement
The following element definition of explicit relationship type;
Specified relationship name in Name (name) attribute
One of following relationship type: hold, embed, quote. This appointment in Type (type) attribute.
The source and target end points. Each end points is specified institute's referenced items destination name and type.
The source endpoint field generally is ItemID type (without proper notice), and must quote the project in the data storage identical with relationship example.
To holding and imbeding relation, the target endpoint field must be the ItemIDReference type, and it must quote the project in the storage identical with relationship example. To adduction relationship, target endpoint can be any ItemReference type, and can quote the project in other storage platform data storage.
Can optionally state one or more fields of scalar or PropertyBase type. These fields can comprise the data that are associated with this relation.
Relationship example is stored in the holotopy table.
Each relationship example is uniquely by combination (source ItemID, relations I D) sign. All are derived from the relation of given project, and relations I D is unique in given source ItemID, and no matter their type.
Source item is the owner of relation. And the life cycle that the project control that is designated as the owner concerns, relation itself is separated with the project relevant with them. Storage platform API 322 is provided for representing the mechanism of the relation that is associated with project.
Here be the example of a relation statement.
<Relationship Name=″Employment″BaseType=″Reference″>
  <Source Name=″Employee″ItemType=″Contact.Person″/>
  <Target Name=″Employer″ItemType=″Contact.Organization″
      ReferenceType=″ItemIDReference″/>
  <Property Name=″StartDate″Type=″the storage
  platformTypes.DateTime″/>
  <Property Name=″EndDate″Type=″the storage
  platformTypes.DateTime″/>
  <Property Name=″Office″Type=″the storage
  platformTypes.DateTime″/>
</Relationship>
This is the example of adduction relationship. If the individual event of being quoted by the source does not exist, then can not create this relation. If this individual event is deleted, the relationship example between individuals and organizations is also deleted. If yet organize project deleted, concern not deletedly, and it hangs.
B) hold relation
The life cycle management that the relation of holding is used for the based target project comes the reference count modeling.
Project can be the source endpoint of zero or a plurality of relations of project. The project that is not the embedding project can be the target of holding in the relation one or more.
The target endpoint reference type must be ItemIDReference, and it must quote the project in the storage identical with relationship example.
Hold the life cycle management that concerns the implementation goal end points. Hold relationship example and be atomic operation as the establishment of the project of target. Can create the hold relationship example of other of same project as target. Hold relationship example when deleted when having last as target endpoint of given project, this destination item is also deleted.
The type of the end points project of appointment is generally forced when the example of this relation of establishment in the relation statement. The type of end points project can not change after relation is set up.
Hold to close in the name space that ties up to the formation project and play key effect. They comprise " Name " attribute, and its objective definition project is with respect to the source item destination name. To all relations of holding that is derived from given project, relative name is unique. Begin to form the full name of this project to the ordered list of the relative name of given project from root Element.
The relation of holding forms a directed acyclic graph (DAG). Hold when concerning in establishment, system guarantees not produce the loop, thereby the name space of guaranteeing project forms DAG.
Although hold the life cycle of relation control destination item, it does not control the uniformity of the operation of target endpoint project. Destination item is independent of by holding in operation and concerns the project that has it. As hold on the project in related source copy, move, back up and other operation does not affect project as homonymous target-for example, backup file folder project automatically do not back up this document press from both sides in all items (FolderMember (file member) concern in target).
The below holds related example:
<Relationship Name=″FolderMembers″BaseType=″Holding”>
    <Source Name=″Folder″ItemType=″Base.Folder″/>
    <Target Name=″Item″ItemType=″Base.Item″
      ReferenceType=″ItemIDReference″/>
</Relationship>
The FolderMember relation makes the concept of file become the generic set of project.
C) imbeding relation
Imbeding relation is with the conceptual modelling of the exclusive control of the life cycle of destination item. They allow the concept of complex item.
Imbeding relation example and be atomic operation as the establishment of the project of target. Project can be the source of zero or a plurality of imbeding relations. Yet a project can be one and only be the target of an imbeding relation. Project as the target of imbeding relation can not be to hold related target.
The target endpoint reference type must be ItemIDReference, and it must quote the project in storing with the relationship example identical data.
The type of the end points project of appointment is generally forced when the example of this relation of establishment in the relation statement. The type of end points project can not change after relation is set up.
Imbeding relation is controlled the operational consistency of this target endpoint. For example, the operation of serialization project can comprise that serializing all is derived from all imbeding relations of this project and all its targets; The project that copies also copies all its embedding projects.
The below is the example statement:
<Relationship Name=″ArchiveMembers″BaseType=″Embedding”>
              <Source Name=″Archive″ItemType=″Zip.Archive″/>
              <Target Name=″Member″ItemType=″Base.Item″
                ReferenceType=″ItemIDReference″/>
              <Property Name=″ZipSize″Type=″the storage
              platformTypes.bigint″/>
              <Property Name=″SizeReduction″Type=″the storage
              platformTypes.float″/>
</Relationship>
D) adduction relationship
Adduction relationship is not controlled the life cycle of the project that it quotes. Especially, adduction relationship does not guarantee the existence of target, does not guarantee that the type of target is as appointment in the relation statement yet. This means that adduction relationship can hang. And adduction relationship can be quoted the project in other data storage. Adduction relationship can be regarded the concept that is similar to the link on the webpage as.
The below is the example of adduction relationship statement:
<Relationship Name=″DocumentAuthor″BaseType=″Reference″>
    <Sourc ItemType=″Document″
    ItemType=″Base.Document″/>
    <Target ItemType=″Author″ItemType=″ase.Author″
         ReferenceType=″ItemIDReference″/>
    <Property Type=″Role″Type=″Core.CategoryRef″/>
    <Property Type=″DisplayName″Type=″the storage
    platformTypes.nvarchar(256)″/>
</Relationship>
End points in target allows any reference type. The project that participates in adduction relationship can be any item types.
Adduction relationship is used for the most of non-life cycle management relationship modeling between the project. Because do not force the existence of target, adduction relationship is convenient to loosely-coupled relationship modeling. Adduction relationship can be used for being included in the destination item in the storage on other computer in other storage.
E) Rule and constraint
Following ancillary rules and constraint are applied to relation:
1. project must be the target of (only imbeding relation) or (one or more relation of holding). An exception is root Element. Project can be the target of zero or a plurality of adduction relationships.
2. the project as the imbeding relation target can not be to hold related source. It can be the source of adduction relationship.
3. if project is from document upgrading, then can not be to hold related source. It can be the source of imbeding relation and adduction relationship.
4. the project from document upgrading can not be the target of imbeding relation.
F) ordering of relation
In at least one embodiment, the ordering of storage platform support relation of the present invention. Attribute by " Order (ordering) " by name in the fundamental relation definition is finished ordering. In the Order field without unique constraints. Do not guarantee the order with the relation of same " Order " property value, yet guarantee that they can sort after the relation of band lower " Order " value and before being with the relation of higher " Order " field value.
Application program is by obtaining giving tacit consent to the relation of order in the upper ordering of combination (SourceItem ID, RelationshipID, Order). All relationship example that are derived from given project are ranked into single set, and no matter the type that in set, concerns. Yet this guarantee given type (as, all relations FolderMembers) are ordering subsets of the set of relationship of given project.
The data storage API 312 that is used for the relation of handling realizes the operation of the ordering of one group of support relation. Introduce following term and help to explain those operations:
RelFirst is with first relation of order value OrdFirst in the ordered set;
RelLast is with last relation of order value OrdLast in the ordered set;
RelX is with the given relation of order value OrdX in the set;
RelPrev is close to the band of the RelX relation less than the order value OrdPrev of OrdX in the set; And
RelNext is close to the band of the RelX relation greater than the order value OrdNext of OrdX in the set.
InsertBeforeFirst(SourceItemID,Relationship)
The relation of inserting is as first relation in the set. The value of " Order " attribute of new relation can be less than OrdFirst.
InsertAfterLast(SourceItemID,Relationship)
The relation of inserting is as last relation in the set. The value of " Order " attribute of new relation can be greater than OrdLast.
InsertAt(SourceItemID,ord,Relationship)
Insertion is with the relation to the value of " Order " attribute appointment.
InsertBefore(SourceItemID,ord,Relationship)
Before with the relation of given order value, insert this relation. New relation can be assigned with " Order " value, and it but does not comprise this two values between OrdPrev and ord.
InsertAfter(SourceItemID,ord,Relationship)
After the relation with given order value, insert this relation. New relation can be assigned with " Order " value, and it but does not comprise this two values between ord and OrdNext.
MoveBefore(SourceItemID,ord,Relationship)
Relation with given relations I D is moved to before the relation of band appointment " Order " value. Relation can be assigned with new " Order " value, and it but does not comprise this two values between OrdPrev and ord.
MoveAfter(SourceItemID,ord,Relationship)
Relation with given relations I D is moved to after the relation of band appointment " Order " value. This relation can be assigned with new order value, and it but does not comprise this two values between ord and OrdNext.
Arrive such as prerequisite, each project must be the member of project folder. According to relation, each project must have relation with a project folder. In some embodiment of the present invention, some relation is represented by the relation that exists between all projects.
Such as the realization to various embodiments of the present invention, the relation provide to binary crelation, it extends to another project (target) by a project (source). Therefore relation is had by source item (extending its project), if the source is removed then that relation is removed (deleted such as relation when source item is deleted). In addition in some cases, relation can be shared the ownership of (owning together) destination item, and such ownership only can be reflected in IsOwned (by the having) attribute (or its equivalent attribute) of relation (such as Fig. 7 to shown in the attribute of a relation type). In these embodiments, create new IsOwned relation and automatically increase progressively reference count on this destination item, and delete can successively decrease the reference count on this destination item of such relation. To these specific embodiments, if project has the reference count greater than 0, then exist, if item count reaches 0 automatically deletion. Again, project folder is the project with one group of relation of (maybe can have) and other project, and these other projects comprise the membership qualification of project folder. Other actual realization of relation is possible, and conceives to realize function described herein by the present invention.
No matter actual realization how, relation is the selectable connection from an object to another object. A project belongs to an above project folder and one or more classification, no matter and these projects, file and classification that to be publicly-owned or privately owned ability be is determined by the meaning that gives existing in the project-based structure (or shortage). These logical relations are to distribute to the meaning of one group of relation, no matter and the physics realization that it is used for realizing function described here specially how. Logical relation is set up (or opposite) between project and file or classification, because each of project folder and classification is the project of particular type in essence. Therefore, can be as other project project folder and classification are worked (copy, add in the email message, embed document etc., and unrestricted), and project folder can use identical mechanism serialization and Deserializing (import and derive) with classification as other project. (for example in XML, all items can have serialized form, and these lattice are applied to project folder, classification and project comparably).
The above-mentioned relation of the relation between expression project and the project folder thereof logically can extend to project folder, extend to project or both from project folder from project. The relation that extends to project folder from project in logic shows that this project folder is publicly-owned for this project, and shares its membership qualification information with this project; On the contrary, the logical relation that lacks from the project to the project folder shows that this project folder is privately owned to this project, and does not share its membership qualification information with this project. Similarly, the relation that extends to project from project folder in logic shows that this project is publicly-owned, and can share with this project folder, shows that this project is privately owned and can not shares and lack the logical relation that extends to project from project folder. Therefore, when deriving project folder to other system, it is the project of " publicly-owned ", it is shared in new environment, and when its project folder of project search is sought other sharable project, it is the project folder of " publicly-owned ", and it provides information about shared with the project that belongs to it to this project.
Fig. 9 is the block diagram that interconnected relationship between project folder (itself also is project), its member's project and project folder and the member's project thereof is shown. Project folder 900 has a plurality of projects 902,904 and 906 as its member. Project folder 900 have from the itself to the project 902 concern 912, it shows that project 902 is publicly-owned, and can with project folder 900, its member 904 and 906 and any other project folder, classification or the project (not shown) of any accessible items file 900 share. Yet it doesn't matter from project 902 to project folder project 900, and this shows that 900 pairs of projects 902 of project folder are privately owned, and do not share its membership qualification information with project 902. On the other hand, project 904 really have from the itself to the project folder 900 concern 924, this shows that project folder 900 is publicly-owned, and shares its membership qualification information with project 904. Yet 904 the relation from project folder 900 to project not, this shows that project 904 is privately owned, and not with project folder 900, its other member 902,906, and any other project folder, classification or the project (not shown) of accessible items file 900 share. Opposite with its relation to project 902 and 904 (or not having these relations), project folder 900 have from itself to project 906 concern 916, and project 906 have get back to project folder 900 concern 926, show that together project 906 is publicly-owned, and can to project folder 900, its member 902 and 904 and any other project folder, classification or the project (not shown) of accessible items file 900 share, and project folder 900 is publicly-owned, and shares its membership qualification information with project 906.
Such as front discussion, the project in project folder does not need to share concomitant, because project folder is not by " description ". On the other hand, classification is by the common common point of all its member's projects is described. Therefore, the membership qualification of classification is limited to the project with described common point inherently, and in certain embodiments, all items that satisfies the description of classification automatically becomes such other member. Therefore, although project folder allows to represent unessential type structure by its membership qualification that classification allows membership qualification based on the common point of definition.
Certainly, it is logic in essence that classification is described, thereby classification can be described by any logical expressions of type, attribute and/or value. For example, can be its membership qualification to the logical expressions of classification, have one of two attributes or both projects to comprise. If these attributes that classification is described are " A " and " B ", then such other membership qualification can comprise have attribute A and do not have B project, have attribute B and the project that do not have the project of A and have attribute A and B concurrently. Describe the logical expressions of attribute by logical operator " OR (or) ", wherein describing member's group by classification is the project with attribute A OR B. As understood by those skilled in the art, also can use similar logical operator (including but not limited to independent " AND (with) " " XOR (XOR) " and " NOT (non-) " or its combination) to describe classification.
Although between project folder (not describing) and classification (describing), have any different, but in many embodiment of the present invention, the classification relation that arrives in principle project reaches the above same method in the face of project folder and project of the project relationship that arrives classification and discloses.
Figure 10 is the block diagram that the interconnected relationship between classification (itself also being project), its member's project, classification and the member's project thereof is shown. Classification 1000 has a plurality of projects 1002,1004 and 1006 as the member, and all these shares certain combination of common attribute, value and the Class1 008 (concomitant description 1008 ') described by classification 1000. Classification 1000 has from itself to project 1002 relation, it shows that project 1002 is publicly-owned, and can with classification 1000, its member 1004 and 1006 and any other classification, project folder or the project (not shown) of addressable classification 1000 share. Yet, 1000 the relation from project 1002 to classification not, this shows that 1000 pairs of projects 1002 of classification are privately owned, and does not share the membership qualification information with project 1002. On the other hand, project 1004 really have from itself to classification 1000 concern 1024, this shows that classification 1000 is publicly-owned, and shares its membership qualification information with project 1004. Yet, there is not the relation that extends to project 1004 from classification 1000, this shows that project 1004 is privately owned, and can not with classification 1000, its other member 1002 and 1006 and any other classification, project folder or the project (not shown) of addressable classification 1000 share. Opposite with the relation (or not having this relation) of it and project 1002 and 1004, classification 1000 have from itself to project 1006 concern 1016, and what project 1006 had classification of getting back to 1000 concerns 1026, this shows that together project 1006 is publicly-owned, and can with classification 1000, its program member 1002 and 1004 and any other classification, project folder or the project (not shown) of addressable classification 1000 share, and classification 1000 is publicly-owned, and shares its membership qualification information with project 1006.
At last, because classification and project folder itself are projects, and project can cross correlation, classification can be related to project folder, vice versa, and in some other embodiment, classification, project folder and project can be related to respectively other classification, project folder and project. Yet in various embodiments, item file clamping structure and/or classification structure forbid comprising the loop in the hardware/software interface system level. When project folder and classification structure are similar to digraph, forbid that the embodiment in loop is similar to directed acyclic graph (DAG), according to the mathematical definition in graph theory field, DAG is the digraph that does not wherein have the path to begin on same summit and stop.
6. extensibility
As mentioned above, this storage platform aims to provide originate mode collection 340. Yet at least in certain embodiments, this storage platform allows also to comprise that the clients such as stand alone software retail trader (ISV) create new model 344 (being new project and nested element type). The item types that this section is passed expansion definition in originate mode collection 340 through discussion and nested element type (or being called for short " element " type) are conceived to create the mechanism of this pattern.
Preferably, the following constraint of expansion of the initial set of project and nested element type:
Allow ISV to introduce new item types, i.e. subtype Base.Item;
Allow ISV to introduce new nested element type, i.e. subtype Base.NestedElement
Allow ISV to introduce new expansion, i.e. subtype Base.NestedElement; But
ISV can not subtype by any type of originate mode collection 340 definition of storage platform (project, embed element or expansion type).
The item types or the embedding element type that define owing to the originate mode group by storage platform may mate the needs of ISV application program fully, must allow ISV to customize the type. This has just considered the concept of expansion. Expansion is the example of strong typing, still (a) they can not independently exist, and (b) they must be attached to project or nested element.
Except solving the needs to the pattern extensibility, expansion also is intended to solve " polymorphic type " problem. In certain embodiments because storage platform may not supported many inheritances or overlapping subtype, application program can use the expansion as the overlapping type instance of modelling (as document be legal documents be again security document) method.
A) extension
For the extensibility of project is provided, data model also defines the abstract type of Base.Extension by name. This is the root type of the hierarchy of expansion type. Application program can subtype Base.Extension, to create specific expansion type.
In basic schema as the Base.Extension type of giving a definition:
<Type Name=″Base.Extension″IsAbstract=″True″>
    <Propety Name=″ItemID″
        Type=″the storage platformTypes.uniqueidentified″
        Nullable=″false″
        MultiValued=″false″/>
    <Property Name=″ExtensionID″
        Type=″the storage platformTypes.uniqueidentified″
            Nullable=″false″
            MultiValued=″false″/>
</Type>
The ItemID field comprises the ItemID of the project related with this expansion. Project with this ItemID must exist. If the project with given ItemID does not exist, then can not create expansion. When project deleted, deleted with all expansions of same ItemID. Tuple (ItemID, ExtensionID) has identified the expansion example uniquely.
The structure of expansion type is similar to the structure of item types:
Expansion type has field;
Field can be primitive or nested element type; And
Expansion type can be by subclassification.
Following restriction is applied to expansion type
Expansion can not be the source and target of relation;
The expansion type example can not be independent of project and exist; And
Expansion type can not be as the field type in the storage platform type definition
Not constraint of type to expansion that can be related with given item types. Any expansion type allows any item types of expansion. When a plurality of expansion examples are affixed to a project, they are independent of one another in structure and behavior.
The expansion example is stored and from item access. All expansion type examples can be from overall extended view access. Can form an effectively inquiry, it will return all examples of the expansion of given type, and no matter they are associated with the project of what type. Storage platform API provides the programming model that can store, retrieve and revise extension.
Expansion type can be the type of coming subtype with the single succession model of storage platform. Derive the new expansion type of establishment from an expansion type. The structure of an expansion or behavior can not cover or structure or the behavior of alternative project type hierarchical structure.
Be similar to item types, the expansion type example can directly be accessed by the view that is associated with this expansion type. The ItemID of expansion shows which project they belong to, and can be used for from item objects corresponding to global keys eye diagram retrieval.
Be the purpose of operational consistency, expansion is considered to be the part of project. Copy/move, other operation commonly used of backup/restoration and storage platform definition can operate in the expansion as the part of project.
Consider following example. In Windows type centralized definition Contact type.
<Type Name=″Contact″BaseType=″Base.Item″>
      <Property Name=″Name″
             Type=″String″
             Nullable=″false″
             MultiValued=″false″/>
      <Property Name=″Address″
             Type=″Address″
             Nullable=″true″
             MultiValued=″false″/>
</Type>
The CRM application developer is liked the CRM application extensions is appended to the contact person who is stored in the storage platform. The application developer definition comprises the CRM expansion of the treatable additional data structure of application program.
<Type Name=″CRMExtension″BaseType=″Base.Extension″>
  <Property Name=″CustomerID″
                Type=″String″
             Nullable=″false″
             MultiValued=″false″/>
</Type>
The HR application developer wishes also additional data to be appended to the contact person. These data are independent of the CRM application data. Application developer also can create expansion
<Type Name=″HRExtension″EBaseType=″Base.Extension″>
  <Property Name=″EmployeeID″
             Type=″String″
             Nullable=″false″
             MultiValued=″false″/>
</Type>
CRMExtension and HRExtension can append to two independent expansions of contacts purpose. They can create and access independently of one another.
In above-mentioned example, the field of CRMExtension type and method can not cover field and the method for contact person's hierarchy. The example that it should be noted that the CRMExtension type can be affixed to the item types that is different from the contact person.
When the searching linkman project, automatically do not retrieve its extension. Given contact item can visit its relevant extension with the expansion of the same ItemID of searching belt by inquiring about overall extended view.
Can visit CRMExtension expansions all in the system by CRMExtension type view, no matter and what project they belong to. Same project ID is shared in all items expansion of a project. In above-mentioned example, Contact project example and additional CRMExtension and HRExtension example are shared same ItemID.
Following table has been summed up similitude and the difference between Item (project), Extension (expansion) and NestedElement (nested element) type:
Item, ItemExtension and NestedElement
  Item   ItemExtension   NestedElement
Item id Project id with oneself The project id of the project of sharing Do not have its oneself project id. Nested element is the part of project
Storage The hierarchy of project is stored in its oneself table The extension hierarchy is stored in its oneself table Be stored in the project
Inquiry/search Can the queried for items table Can the queried for items expansion table Usually can only in comprising the context of project, inquire about
Inquiry/hunting zone Can search for all examples of an item types Can search for all examples of an extension type Usually can only in the nested element type instance of single (comprising) project, search for
The relation semanteme is related with project Can have with the relation of project can by hold embed relevant with other project with soft relation With extension irrelevant usually can only by expand come relevant. It is semantic that the expansion semantic category is similar to the embedding project Come relevant with project with nested element is irrelevant by field. Nested element is the part of project
B) expansion NestedElement type
The nested element type need not the mechanism identical with item types be expanded. The expansion of nested element uses the mechanism identical with the nested element type field to store and access.
Data model has defined the root of the nested element type of Element by name (element):
<Type Name=″Element″
      IsAbstract=″True″>
      <Property Name=″ElementID″
             Type=″the storage platformTypes.uniqueidentifier″
             Nullable=″false″
             MultiValued=″false″/>
</Type>
The NestedElement type is inherited from this type. The NestedElement element type is definition one field in addition, and it is many element of set elements.
<Type Name=″NestedElement″BaseType=″Base.Element″
   IsAbstract=″True″>
        <Property Name=″Extensions″
                Type=″Base.Element″
                Nullable=″false″
                MultiValued=″true″/>
</Type>
The NestedElement expansion is different from extension in the following areas:
The nested element expansion is not expansion type. They do not belong to the expansion type hierarchy take the Base.Extension type as root.
Nested element expansion is stored with other field of this project, and be not the overall situation addressable-can not form the inquiry of all examples of retrieving given expansion type.
As store and store these expansions other nested element (or project). Such as other nest set, the NestedElement expansion is stored among the UDT. They can visit by Extension (expansion) field of nested element type.
Be used for the set interface of access multi-valued attribute also for access and iteration on the Extended-type collection.
Below table sum up and compared the Item expansion and NestedElement expands.
Item expansion and NestedElement expansion
Extension The NestedElement expansion
Storage The extension hierarchy deposits its table in Resemble and store the nested element
Inquiry/search Can the queried for items expansion table Usually can only in comprising the context of project, inquire about
Inquiry/hunting zone Can inquire about all examples of an extension type Usually can only in the nested element type instance of single (comprising) project, search for
Programmability Need special expansion API and the special inquiry on the expansion table The NestedElement extension class is like any other many-valued field of nested element; Use normal nested element type API
Behavior relation semantic item ID The project id of energy correlation behavior and the irrelevant shared project of extension Do not allow behavior (?) expand the irrelevant project id that does not have it with NestedElement. The NestedElement expansion is the part of project
D. database engine
As mentioned above, data are stored on the database engine and realize. In the present embodiment, database engine comprise such as Microsoft SQL Server engine etc. realize the SQL query language, with the relevant database engine of object relationship expansion. This section has been described the data model of data storage realization to the mapping of relational storage according to present embodiment, and the information of being used by the client computer of storage platform is provided at logic API. Yet be appreciated that when adopting different database engines and can adopt different mappings. Really, also can realize in other types of database, such as object-oriented and XML database the storage platform conceptual data model except realizing at the relevant database engine.
Object-oriented (OO) Database Systems are that programming language object (such as C++, Java) provides continuation and affairs. The storage platform concept of " project " can be mapped to the object in the Object-Oriented Systems well, although the set that embeds must be added to object. Other storage platform type concepts such as similar inheritance and nested element type also are mapped to the system of object-oriented type. Object-Oriented Systems is support target identity usually; Therefore, the project identity can be mapped to object identity. The behavior of project (operation) is mapped to object method well. Yet the common inorganizable ability of OO system is also very poor aspect search. And OO system does not provide the support to destructuring and semi-structured data. For supporting complete storage platform data model described herein, need to add object data model to such as concepts such as relation, file and expansions. In addition, need to realize as upgrading, synchronously, the mechanism such as notice and security.
Be similar to OO system, support the system of inheriting type based on single based on the XML database of XSD (XML mode-definition). Entry type system of the present invention can be mapped to the XSD Type model. XSD does not provide the support to behavior yet. The behavior of the necessary addition item of the XSD of project. The single XSD document of XML database processing is also inorganizable and widen search capability. As object-oriented database, for supporting data model described herein, need to be incorporated into this XML database such as other concepts such as relation and files; And need to realize as synchronously, the mechanism such as notice and security.
1. use the data storage of UDT to realize
In the present embodiment, the relevant database engine 3 14 that comprises in one embodiment Microsoft SQL Server engine is supported built-in scalar type. Built-in scalar type is " original " and " simply ". They are that original meaning is, the user can not define themselves type; They are that simple meaning is, the user can not encapsulate complicated structure. User-defined type (hereinafter referred to as UDT) is by making the user come the expansion type system by defining complicated structured type, and a kind of mechanism of the type extensibility for surpassing or surmount original scalar type system is provided. In case defined by the user, UDT can be for the type system that can use built-in scalar type Anywhere.
Press one aspect of the present invention, the storage platform pattern is mapped to the UDT class in the database engine storage. The data stored items is mapped to the UDT class that derives from the Base.Item type. Be similar to project, expansion also can be mapped to the UDT class and use and inherit. The root expansion type is Base.Extension, derives all expansion types from it.
UDT is the CLR class, and it has state (being data field) and behavior (being routine). Use any managed language (c#, VB.NET etc.) definition UDT. UDT method and operator can be called by the example for the type in T-SQL. UDT can be: in the row in the type, T-SQL of row the type of the parameter of routine or in T-SQL type of variables.
Following example shows the basis of UDT. Suppose that MapLib.dll has the procedure set that is called MapLib. In this procedure set, under name space BaseTypes, there is the class that is called Point:
namespace BaseTypes
{
    public class Point
    {
∥ returns the distance from specified point.
        public double Distance(Point p)
        {
∥ reentry point p and the distance between this
        }
∥ other content in such
    }
}
Following T-SQL code is tied to class Point the SQL Server UDT that is called Point. The first step is called " Create Assembly " (creation procedure collection), and it is loaded into database with the MapLib procedure set. Second step calls " Create Type " (establishment type), with establishment user defined type " Point ", and binds it to managed type B astTypes.Point:
CREATE ASSEMBLY Maplib
FROM′\\myserv\share\MapLib.dll′
go
CREATE TYPE Point
EXTERNAL NAME′BaseTypes.Point′
go
In case be created, " Point " UDT can use the row in the tabulation, and the method can be called in T-SQL as shown below:
Create table Cities(
    Name varchar(20),
    State varchar(20),
    Location Point)
-retrieval city is to the distance of coordinate (32,23)
Declare@p point(32,23),@distance float
Select Location∷Distance(@p)
From Cities
The storage platform pattern to being mapped in of UDT class high-level upper be direct fully. Generally speaking, the storage platform pattern is mapped to the CLR name space. The storage platform type is mapped to the CLR class. The succession mirror image of CLR class the succession of storage platform type, and the storage platform attribute is mapped to the CLR generic attribute.
Hierarchy of items shown in Figure 29 is used as an example in this document. It shows from wherein deriving the Base.Item type of all items type, and one group of item types (for example, Contact.Person and Contact.Employee) of deriving, and wherein inherits by arrow and indicates.
2. project mapping
Can be searched for globally in order to wish project, and in the relational data of present embodiment, support to inherit and the type substitutability, be in the single table with the row of type B ase.Item, to store all items to a kind of possible realization of the project storage in the database storage. The type of service substitutability can be stored all types of projects, and can come filtered search by item types and the subtype of the operator of " is of (type) " of using Yukon.
Yet, owing to involve in the present embodiment the overhead that is associated with this method, divide projects by top type, so that the project of each type " family " stores in the independent table. In this partition mode, each is directly created a table from the item types that Base.Item inherits. As mentioned above, the substitutability of these type type of service is stored in the suitable type family table below the succession. Only inherit from the first order of Base.Item and ad hoc processed. For exemplary projects hierarchy shown in Figure 29, this can obtain showing with Types Below family:
create tabele Contact.[Table!Person](
     _Item Contact.Person not null
     {Change tracking information}
)
create table Doc.[Table!Document](
     _Item Doc.Document not null,
     {Change tracking information}
)
Use " shade " but the copy of the overall situation search attribute of table storage all items. This table can be safeguarded by the Update () method of storage platform API, make the change of all data by the method. Do not resemble type family table, this overall repertory only comprises the top scalar attribute of this project, rather than full UDT item objects. The structure of overall situation repertory is as follows:
create table Base.[Table!Item](
    ItemID uniqueidentifier not null    constraint[PK_Clu_ltem!ItemID]primary key clustered,
    TypeID uniqueidentifier nul null.
    {Additional Properties of Base.Item}.
    {Change tracking information}
)
Overall situation repertory allows to navigate to the item objects that is stored in the type family table by representing ItemID and TypeID (type I D). Project in the common uniquely identification data storage of ItemID. Can use the metadata of not giving description here that TypeID is mapped to type name and the view that comprises this project.
Because seeking project by its ItemID all is operation commonly used in the context of overall repertory and other situation, the therefore given ItemId of project provides GetItem () function to come the search terms object. This function has following statement:
Base.Item Base.Getltem(uniqueidentifier ItemID)
For ease of access and the details of hiding as much as possible realization, all inquiries of project can be carried out the view that makes up on the table that impinges upon above-mentioned project. Particularly, to the family table establishment view of each item types for adequate types. These type views can be selected the type that is associated, comprise all items of subtype. For simplicity, except the UDT object, view can represent row to all TLDs that comprise the type of inheriting field. View to exemplary projects hierarchy shown in Figure 29 is as follows:
create view Contact.Person as
Select_Item.ItemID, { attribute of Base.Item }, { attribute of Contact.Person }, { change trace information }, _ Item
    from Contact.[Table!Person]
--notice that the Contact.Employee view uses " where " to judge
--limit the Item Sets that finds to the example of Contact.Employee
create view Contact.Employee as
Select_Item.ItemID, { attribute of Base.Item }, { attribute of Contact.Person }, { attribute of Contact.Employee },
{ change trace information }, cast (_ Item as Contact.Employee)
    from Contact.[Table!Person]
    where_Item is of(Contact.Employee)
create view Doc.Document as
Select_Item.ItemID, { attribute of Base.Item }, { attribute of Doc.Document }, { change trace information }, _ Item
    from Doc[Table!Document]
--notice that the Doc.WordDocument view uses " where " to judge
--limit the Item Sets that finds to the example of Doc.WordDocument
create view Doc.WordDocument as
Select_Item.ItemID, { attribute of Base.Item }, { attribute of Doc.Document }, { attribute of Doc.WordDocument },
{ change trace information }, cast (_ Item as Doc.WordDocument)
    from Doc.[Table!Document]
    where_Item is of(Doc.WordDocument)
For the purpose of integrality, view also can create at overall repertory. This view can be showed the row identical with table at first:
create view Base.Item as
Select ItemID, TypeID, { attribute of Base.Item }, { change trace information }
    from Base.[Table!Item]
3. expansion mapping
Expansion is very similar to project, and has some identical requirement. As support adoptive another root type, many same considerations and relatively compromise during expansion is stored. For this reason, to the mapping of the similar type of expanded application family, rather than single table method. Certainly, in other embodiments, can use single table method.
In the present embodiment, expansion by ItemID only with an item association, and be included in ExtensionID unique in the context of project. Expansion table has to give a definition:
create table Base.[Table!Extension](
    ItemID uniqueidentifier not null.
    ExtensionID uniqueidentifier not null.
    TypeID uniqueidentifier not null.
{ attribute of Base.Extension },
{ change trace information },
    constraiint[PK_Clu_Extension!ItemID!ExtensionED]
        primary key clustered(ItemID asc,ExtensionID asc)
)
As project, given ItemID and the right identity of ExtensionID of comprising can provide a function to be used for the retrieval expansion. This function has following statement:
Base.Extension Base.GetExtension(uniqueidentifier ItemID,uniqueidentifier ExtensionID)
Be similar to the item types view, can create view to each expansion type. Suppose that the expansion hierarchy is parallel with the exemplary projects hierarchy, have with Types Below: Base.Extension, Contact.PersonExtension,
Contact.EmployeeExtension. Can create following view:
create view Base.Extension as
Select ItemID, ExtensionID, TypeID, { attribute of Base.Extension }, { change trace information }
    from Base.[Table!Extension]
create view Contact.[Extension!PersonExtension]as
Select_Extension.ItemID, _ Extension.ExtensionID, { attribute of Base.Extension },
{ attribute of Contact.PersonExtension },
{ change trace information }, _ Extension
    from Base.[Table!PersonExtension]
create view Contact.[Extension!EmployeeExtension]as
Select_Extension.ItemID, _ Extension.ExtensionID, { attribute of Base.Extension },
{ attribute of Contact.PersonExtension },
{ attribute of Contact.EmployeeExtension }, { change trace information },
        cast(_Extension as Contact.EmployeeExtension)
    from Base.[Table!PersonExtension]
    where_Extension is of(Contact.EmployeeExtension)
4. nested element mapping
Nested element is can be embedded into project, expansion, relation or other nested element to form the type of dark nested structure. Be similar to project and expansion, nested element realizes as UDT, but they are stored in project and the expansion. Therefore, nested element does not surmount their project and the Storage Mapping of extension container. In other words, in system, do not have directly to store the table of the example of NestedElement type, and be not specifically designed to the view of nested element.
5. object identity
Each entity in data model, namely each project, expansion and relation have unique key assignments. A project is identified uniquely by its ItemId. Expansion is identified uniquely by compound key (ItemId, ExtensionId). Relation is identified by compound key (ItemId, RelationId). ItemId, ExtensionId and RelationshipId all are GUID values.
6. SQL object naming
All objects that create in the data storage can be stored in from the SQL pattern name that storage platform pattern name derives. For example, storage platform basic schema (normal claim " Base ") can be created in the type in " [System.Storage] " SQL pattern, such as " [System.Storage] .Item ". The name that generates can be with the determiner prefixing to eliminate the conflict of name. Can use at suitable place exclamation mark (! ) as the separator of each logical gate of name. Following table has been summarized the naming convention that is used for object in the data storage. Each schema elements (project, expansion, relation and view) is listed in naming convention with the modification of the example that is used for the visit data storage.
Object The name character modification Describe Example
Master project search view  Master!Item The summary of project is provided in current item domains  [System.Storage].  [Master!Item]
Typed project search view Item types All properties data from project and any parent type are provided  [AcmeCorp.Doc].  [OfficeDoc]
Main expanded search view Master!Extension Be provided at the summary of all expansions in the current item domains  [System.Storage].  [Master!Extension]
Typed expanded search view Expansion type Provide all properties data to expansion  [AcmeCorp.Doc].  [Extension!SlickyNote]
The primary relation view Master!Relationship It is related to be provided in the current item domains institute  [System.Storage].  [Master!Relationship]
Summary
Relational view The relation name The data that provide all to be associated with given relation   [AcmeCorp.Doc].   [Relationship!Authors   FromDocument]
View The view name The Schema-based view definition provides row/type   [AcmeCorp.Doc].   [View!DocumentTitles]
7. row name
When shining upon arbitrary object model to storage, naming conflict might occur in the additional information owing to storing with application object. For avoiding naming conflict, the particular column of all non-types (not mapping directly to the row of the attribute of the name in the type declarations) underscore character () prefixing. In the present embodiment, underscore character () does not allow the beginning character as any identifier attribute. In addition, for being unified in the name between the storage of CLR and data, all properties of storage platform type or schema elements (relation etc.) should have the first character of capitalization.
8. search view
Provide view by storage platform, be used for the content of search storage. Provide the SQL view to each project and expansion type. In addition, provide view to support relation and view (by the data model definition). All SQL views and the bottom table in storage platform are read-only. As will be more fully described below, use the Update () method of storage platform API can store or change data.
<view name 〉] visit. BookSales] visit. Because the output format of view is self-defining (arbitary inquiry that is provided by that side who defines view defines) on the basis of each view, row Schema-based view definition is directly shone upon.
All SQL search views in the storage of storage platform data use the following ordering agreement of row:
1. such as the view result's of ItemId, ElementId, RelationshipId etc. logic " key " row
2. such as the metadata information about result type such as TypeId.
3. change such as CreateVersion (establishment version), UpdateVersion (renewal version) etc. and follow the tracks of row
4. row of type special use (attribute of the type of statement)
5. the view of type special use (family's view) also comprises the object row of returning an object value
The member of each type family can search for a series of eye diagrams, and each item types has a view in the data storage.
A) project
Each project search view comprises delegation to each example of the project of particular type or its subtype. For example, the view of document can return the example of Document (document), LegalDocument (legal documents) and ReviewDocument (checking document). Given this example, as shown in figure 28 such generalities item eye diagram.
(1) master project search view
Each example definition of storage platform data storage is called the special item view of master project view (Master Item View). This view provides the survey information about each project in the data storage. View provides row to each item types attribute, a row description entry purpose type wherein, and some row are used for providing changing to be followed the tracks of and synchronizing information. Item] " identify the master project view.
Row Type Describe
  ItemId   ItemId The storage platform identity of this project
  _TypeId   TypeId The TypeId-of this project identify this project definite type and can be for retrieve information about type with metadata categories
  RootItemId   ItemId Control first non-embedded elder generation's of this purpose life cycle ItemId
<the overall situation changes follows the tracks of 〉   … The overall situation changes trace information
<item attribute 〉 Nothing Each item types attribute there are row
(2) typed project search view
Each item types also has the search view. Although be similar to the root Element view, this view also provides by the access of " _ Item " row to item objects. In data storages, use name [schema name] .[item types name] identify each typed project search view. [AcmeCorp.Dod] .[OfficeDoc for example].
Row Type Describe
  ItemId  ItemId The storage platform identity of this project
<type change is followed the tracks of 〉  … The type change trace information
<father attribute 〉 <attribute is special-purpose 〉 Each father's attribute there are row
<item attribute 〉 <attribute is special-purpose 〉 Each exclusive attribute to this type has row
  Item The CLR type of project The type of the project of CLR object-statement
B) extension
All items expansion in the WinFs storage also can use the search view to visit.
(1) main expanded search view
Each example definition one of data storage is called the special extended view of main extended view (Master Extension View). This view provides the survey information about each expansion in the data storage. This view has row to each extended attribute, and wherein row are described the type of expansion, and some row are used for providing change to follow the tracks of and synchronizing information. Extension] " the main extended view of sign in the data storage.
Row Type Describe
  ItemId   ItemId Expand therewith the storage platform identity of related project
  ExtensionId   ExtensionId(GUID) The id of this expansion example
  _TypeId   TypeId The TypeId-of this expansion identifies the definite type of this expansion, and can be for the information of retrieving with metadata categories about this expansion
<the overall situation changes follows the tracks of 〉   … The overall situation changes trace information
<extended attribute 〉 <attribute is special-purpose 〉 Each expansion type attribute there are row
(2) typed expanded search view
Each expansion type also has the search view. Although be similar to main extended view, this view also provides by _ Extension and is listed as the access to item objects. The expansion type name] identify each typed expanded search view. OfficeDocExt].
Row Type Describe
  ItemId   ItemId Expand therewith the storage platform identity of related project
  ExtensionId   ExtensionId(GUID) The Id of this expansion example
<type change is followed the tracks of 〉   … The type change trace information
<father attribute 〉 <attribute is special-purpose 〉 Each father's attribute there are row
<extended attribute 〉 <attribute is special-purpose 〉 Exclusive attribute to each this type has row
  Extension The CLR type of expansion example The type of the expansion of CLR object-statement
C) nested element
All nested elements are stored among project, expansion or the relationship example. Therefore, they can visit by inquiring about suitable project, expansion or relation search view.
D) relation
As above discuss, relation is formed on the elementary cell that links between projects in the storage of storage platform data.
(1) primary relation search view
Each data storage provides a primary relation view. This view provides the information about all relationship example in the data storage. Relationship] " identify the primary relation view.
Row Type Describe
 ItemId   ItemId The identity of source endpoint (ItemId)
 RelationshipId   RelationshipId(GUID) The id of this relationship example
 RelTypeId   RelationshiPTypeId The RelTypeId-of this relation identifies the type of this relationship example with metadata categories
<the overall situation changes follows the tracks of 〉   … The overall situation changes trace information
 TargetItemReference   ItemReference The identity of target endpoint
 _Relationship   Relationship Example to the Relationship object of this example
(2) relationship example search view
The relation of each statement also has the search view of all examples that return this particular kind of relationship. Although be similar to the primary relation view, this view provides the row of name to each attribute of this relation data. Relation name] identify each relationship example search view. DocumentAuthor].
Row Type Describe
 ItemId   ItemId The identity of source endpoint (ItemId)
 RelationshipId   RelationshipId(GUID) The id of this relationship example
<type change is followed the tracks of 〉  … The type change trace information
 TargetItemReference  ItemReference The identity of target endpoint
<parent name 〉  ItemId The name attribute of source endpoint identity (another name of ItemId)
<destination name 〉 The class of ItemReference or derivation The name attribute of target endpoint identity (another name of TargetItemReference and coercion of type conversion))
<attribute of a relation 〉 <attribute is special-purpose 〉 Attribute to each contextual definition has row
 Relationship The CLR type of relationship example The type of CLR object-statement relation
9. upgrade
All views are read-only in the storage of storage platform data. Be the new example of establishment data model elements (project, expansion or relation), or upgrade existing example, must use ProcessOperation or the ProcessUpdategram method of storage platform API. The ProcessOperation method is the process of single storage, and it is by the data definition storage of " operation " of the action that will carry out of consumption refinement. The ProcessUpdategram method is the process of storage, and it takes to be called one group of orderly operation of " more new element (updategram) ", the set that their common refinements will be carried out.
Operational format is extendible, and is provided at the various operations on the schema elements. Some common operation comprises:
1. project operation:
A. CreateItem (creating a new project in the related context embedding or hold)
B. UpdateItem (upgrading an existing project)
2. relational operation:
A. CreateRelationship (related example is quoted or held in establishment)
B. UpdateRelationship (upgrading a relationship example)
C. DeleteRelationship (removing a relationship example)
3. extended operation
A. CreateExtension (add expand to existing project)
B. UpdateExtension (upgrading an existing expansion)
C. DeleteExtension (deletion one expansion)
10. change and follow the tracks of and gravestone
More discuss fully as following, provided to change by the data storage and follow the tracks of and the gravestone service. This section is provided at the general introduction of the change trace information that represents in the data storage
A) change tracking
Each the search view that is provided by the data storage comprises the row that change trace information be used to providing; Those row are public to all items, expansion and relational view. It is indirectly to provide by the search view that makes up view itself thereon that the storage platform mode view that is defined clearly by the Model Design person does not automatically provide change trace information-this information.
Each element in the data storage can obtain changing trace information from two places: " master " element view and " typed " element view. Item] " and typed eye diagram [AcmeCorp.Document] .[Document] in obtain change trace information about the AcmeCorp.Document.Document item types.
(1) change in " master " search view is followed the tracks of
Change trace information in the main search view provide about the establishment of element and upgrade version information, about which synchronization partner create this element information, which synchronization partner to upgrade for the last time the information of this element and from each partner's the version number that creates and upgrade of being used for about. Identify partner's (the following describes) in the synchronized relation with partner's key. Type [System.Storge.Store] .ChangeTrackingInfo by name _ the single UDT object of ChangeTrackingInfo comprises all these information. Define styles in the System.Storage pattern. In all global search views of project, expansion and relation, can obtain _ ChangeTrackingInfo. The type definition of _ ChangeTrackingInfo is:
<Type Name=″ChangeTrackingInfo″BaseType=″Base.NestedElement″>
  <FieldProperty Name=″CreationLocalTS″    Type=″SqlTypes.SqlInt64″
  Nullable=″False″/>
  <FieldProperty Name=″CreatingPartnerKey″ Type=″SqlTypes.SqlInt32″
    Nullable=″False″/>
  <FieldProperty Name=″CreatingPartnerTS″     Type=″SqlTypes.SqlInt64″
    Nullable=″False″/>
  <FieldProperty Name=″LastUpdateLocalTS″     Type=″SqlTypes.SqlInt64″
    Nullable=″False″/>
  <FieldProperty Name=″LastUpdatingPartnerKey″Type=″SqlTypes.SqlInt32″
    Nullable=″False″/>
  <FieldProperty Name=″LastUpdatingpartnerTS″ Type=″SqlTypes.SqlInt64″
    Nullable=″False″/>
</Type>
These attributes comprise following information:
Row Describe
  CreationLocalTS The creation-time mark of local machine
  _CreatingPartnerKey Create the partner's of this entity PartnerKey. If entity is local the establishment, this is the PartnerKey of local machine
  _CreatingPartnerTS Locate to create the time mark of the time of this entity the partner corresponding to _ CreatingPartnerKey
  _LastUpdateLocalTS Local zone time mark corresponding to update time of local machine
  _LastUpdatePartnerKey The last PartnerKey that upgrades the partner of this entity. If finish this locality that is updated in for the last time to this entity, then this is the PartnerKey of local machine.
  _LastUpdatePartnerTS Locate to upgrade the time mark of the time of this entity the partner corresponding to _ LastUpdatingPartnerKey.
(2) change in " typed " search view is followed the tracks of
Except provide with global search view identical information, each typed search view provides the additional information that is recorded in the synchronous regime of each element in the synchronous topology.
Row Type Describe
<the overall situation changes follows the tracks of 〉   … Change the information of following the tracks of from the overall situation
  _ChangeUnitVersions MultiSet<change unit version 〉 The description of the version number of the change unit in the element-specific
  _ElementSyncMetadata   ElementSyncMetadata About an additional version independent elements data to the interested project in synchronous operation storehouse
  _VersionSyncMetadata   VersionSyncMetadata About only interested to the synchronous operation storehouse
The additional version dedicated meta data of version
B) gravestone
Data are stored as project, expansion and relation gravestone information are provided. The gravestone view provides in the place about living and the information of gravestone entity (project, expansion and relation). Project and expansion gravestone view do not provide the access to corresponding objects, and concern that the gravestone view provides the access to relationship object (relationship object is for empty in the situation of gravestone relation).
(1) project gravestone
Item] from system retrieval project gravestone.
Row Type Describe
  ItemId   ItemId The identity of project
  TypeID   TypeId The type of project
<item attribute 〉   … Attribute to all items definition
  _RootItemId   ItemId The ItemId that comprises this first non-embedded project of purpose
  _ChangeTrackingInfo The CLR example of ChangeTrackingInfo type This purpose changes trace information
  _IsDeleted   BIT This is sign, the 0th, and the project of living, the 1st, gravestone project
  _DeletionWallclock   UTCDATETIME Press the partner's of delete items time on UTC wall clock date, if this project is alive, it is empty
(2) expansion gravestone
Extension] from system retrieval expansion gravestone. Expansion changes the trace information interpolation that provides for project the has been provided information of ExtensionId attribute.
Row Type Describe
 ItemId   ItemId The identity that has the project of this expansion
 ExtensionId   ExtensionId The ExtensionId of this expansion
 _TypeID   TypeId The type of this expansion
 _ChangeTrackingInfo The CLR example of ChangeTrackingInfo type The change trace information of this expansion
 _IsDeleted   BIT This is sign, the 0th, and the project of living, the 1st, gravestone expansion
 _DeletionWallclock   UTCDATETIME During UTC wall clock day by the partner who deletes this expansion. If this expansion is alive, it is empty
(3) concern gravestone
Relationship] concern gravestone from system retrieval. Concern the information that the gravestone info class is similar to be provided expansion. Yet, provide additional information at the target ItemRef of relationship example. In addition, go back the choice relation object.
Row Type Describe
  ItemId   ItemId The identity (identity of the source endpoint of relation) that has the project of this relation
  RelationshipId   RelationshipId The RelationshipId of this relation
  _TypeID   TypeId The type of relation
  _ChangeTrackingInfo The CLR example of ChangeTrackingInfo type The change trace information of this relation
  _IsDeleted   BIT This is sign, the 0th, and the project of living, the 1st, gravestone expansion
  _DeletionWallclock   UTCDATETIME Press the partner's of this relation of deletion time on UTC wall clock date. If this relation is alive, it is empty
  _Relationship The CLR example of relation This is the relationship object of the relation of living, and gravestone concerned that it is for empty
  TargetItemReference   ItemReference The identity of target endpoint
(4) gravestone is removed
For preventing gravestone information grow without bound, the data storage provides gravestone to remove task. This task determines when can give up gravestone information. This task computation is local to be created/upgrade the boundary of version, and block gravestone information by giving up all gravestone versions more early subsequently.
11. assistant API and function
Base map also provides some Assistant Function. Provide these functions to help the common operation on this data model.
A) function [System.Storage] .GetItem
The given ItemId of ∥ returns an item objects
Item Getltem(ItemId ItemId)
B) function [System.Storage] .GetExtension
The given ItemId of ∥ and Extensionld return an EXPANDING DISPLAY AREA
Extension GetExtension(ItemId ItemId,Extensionld Extensionld)
C) function [System.Storage] .GetRelationship
The given ItemId of ∥ and Relationshipld return-relationship object
Relationship GetRelationship(ItemId ItemId,Relationshipld Relationshipld)
12. metadata
The metadata that has two classes in storage, to represent: instance metadata (type of project etc.), and genre metadata.
A) pattern metadata
The conduct of pattern metadata is stored in the data storage from the example of the item types of meta schema.
B) instance metadata
Application program use-case metadata is come the type of queried for items, and the expansion that is associated with project of searching. The ItemId of given project, application program can be inquired about the global keys eye diagram, returning the type of this project, and is worth to inquire about the Meta.Type view to return the information about the type of the statement of this project with this. For example, ∥ returns metadata project object SELECT m._Item AS metadatalnfoObj FROM[System.Storage to given project example] .[Item] i INNER JOIN[Meta] .[Type] m ONi._Typeld=m.ItemId WHEREi.ItemId=ItemId
E. security
This section has been described the security model that is used for storage platform of the present invention according to an embodiment.
1. summarize
According to present embodiment, the granularity of specifying and enforcing the security strategy of storage platform is on the various operation levels on the project in the data-oriented storage; From integral body, do not protect discretely the ability of the each several part of project. This security model by ACL (ACL) specified can be awarded or denied access to carry out the main body collection of these operations in project. Each ACL is the ordered set of ACE (ACE).
The security strategy that is used for project can be described by the access control policy of freely selecting and system access control strategy fully. These each is one group of ACL. First group (DACL) described the access rights of freely selecting of being authorized various main bodys by the owner of the project, and second group of ACL is called as SACL (system access control list), and it has specified how completion system is supervised when with some mode manipulating objects. Except these, each project in the data storage is associated with the SID (owner SID) corresponding to the owner of the project.
Being used for organizing the main mechanism of project in the storage of storage platform data is the mechanism that comprises hierarchy. Comprising hierarchy is to realize with the relation of holding between the project. The relation of holding of " A comprises B " that is expressed as between two project A and the B is so that project A can affect the life cycle of project B. Generally speaking, the project in the data storage can't exist before the relation of holding that has from another project to this project. Except control item purpose life cycle, the relation held provides the necessary mechanism of security strategy of the project of propagating.
For the security strategy of each project appointment by two parts form-be the clearly part of appointment and the part of in the data storage, inheriting from father's project of this project of this project. The clearly defined security strategy of any project is comprised of-part of the access of the Zhi pairing project in considering two parts, and impact is by the part that comprises the security strategy that all its descendants inherit in the hierarchy. The security strategy of being inherited by the descendants is that the strategy by clearly defined strategy and succession decides.
Because security strategy is propagated by holding relation, and also can be capped at any project place, therefore is necessary to specify the effective and safe strategy of how to confirm project. In the present embodiment, data storages comprises project in the hierarchy along each the path inherited ACL from the root of storage to this project.
In the ACL that any given path is inherited, the ordering of each ACE among the ACL has determined to force real-time final security strategy. Following representation is used for describing the ordering of ACL ACE. The ordering of the ACE that is inherited by project among the ACL by following two rules determine-
Article one, rule has satisfied the ACE that inherits from projects from the root that comprises hierarchy to the path of project I. The ACE that inherits from the container that approaches has precedence over the clauses and subclauses of inheriting from container far away. Intuitively, this allows the keeper can cover the ACE that inherits at a distance from comprise hierarchy. This rule is as follows:
ACL L for upper all successions of project I
For all items I1, I2
For all ACE A1 and A2 among the L
I1 is the ancestors of I2, and
I2 is the ancestors of I3, and
A1 is the ACE that inherits from I1, and
A2 is the ACE that inherits from I2
Mean
A2 has precedence over A1 in L
The second rule will be refused the ACE of the access of project ordering before the ACE that authorizes the access of project.
ACL L for upper all successions of project I
For all items I1
For all ACE A1 and A2 among the L,
I1 is the ancestors of I2, and
A1 is the ACCESS_DENIED_ACE that inherits from I1, and
A2 is the ACCESS_GRANTED_ACE that inherits from I1
Mean
A1 has precedence over A2 in L
Comprising in the situation of hierarchy for tree, only have a paths from the root of setting to this project, and this project only has the ACL of a succession. In these cases, according to the wherein relative ordering of ACE, be complementary by the project ACL that inherits and the ACL that is inherited by the file (project) in the existing Windows security model.
Yet the hierarchy that comprises in the data storage is directed acyclic graph (DAG), because project is allowed a plurality of relations of holding. In these cases, to project mulitpath is arranged from the root node that comprises hierarchy. Because project holds ACL along each path, so the set of each project and ACL but not single ACL are associated. Notice that these are different from traditional file system model, in this model, only have an ACL to be associated with file or folder.
DAG but not when tree usually to have two aspects to elaborate when comprising hierarchy. Need to describe about when project is inherited an above ACL from its father node, how being its calculating effective and safe strategy, and how to organize and the management of the security model that the expression project is stored for the storage platform data has direct meaning.
Following algorithm evaluation one given main body is to the access rights of given project. In the entire chapter document, following representation is used for describing the ACL that is associated with project.
Inherited_ACLs (ItemId)-by its project identity project one group of ACL that his father's project is inherited from storage that is ItemId.
Explicit_ACL (ItemId)-for its identity be the ACL that the project of ItemID defines clearly.
NTSTATUS
ACLAccessCheck(
  PSID           pOwnerSid,
  PDACL          pDacl,
  DWORD          DesiredAccess,
  HANDLE         ClientToken,
  PPRIVILEGE_SET pPrivilegeSet,
  DWORD          *pGrantedAccess)
If the access rights of expectation are not refused clearly, then above-mentioned routine is returned STATUS_SUCCESS, and pGrantedAccess determines that in the authority that the user expects which authorized by the ACL of this appointment. If the expectation access rights are refused clearly, then this routine is returned STATUS_ACCESS_DENIED.
  NTSTATUS

  ItemAccessCheck(

      OS_ITEMID        ItemId,

      DWORD            DesiredAccess,

      HANDLE           ClientToken,

      PPRIVILEGE_SET pPrivilegeSet)

  {

      STATUS        Status;

      PDACL         pExplicitACL=NULL;

      PDACL         pInheritedACLs=NULL;

      DWORD         NumberOflnheritedACLs=0;

      pExplicitACL=GetExplicitACLForItem(ItemId);

      GetInheritedACLsForItem(ItemId,&amp;pInheritedACLs,&amp;NumberOflnheritedACLs)

      Status=ACLAccessCheck(

              pOwnerSid,

              pExplicitACL,

              DesiredAccess,

              ClientToken,

              pPrivilegeSet,

              &amp;GrantedAccess);

      if(Status!=STATUS_SUCCESS)

          retum Status;

      if(DesiredAccess==GrantedAccess)

          retum STATUS_SUCCESS;

      for(

      i=0;

      (i<NumberOfInheritedACLs&amp;&amp;Status==STATUS_SUCCESS);

      i++){

      GrantedAccessForACL=0;
				<!-- SIPO <DP n="62"> -->
				<dp n="d62"/>
        Status=ACLAccessCheck(

                  pOwnerSid,

                  pExplicitACL,

                  DesiredAccess,

                  ClientToken,

                  pPrivilegeSet,

                  &amp;GrantedAccessForACL);

        if(Status==STATUS_SUCCESS){

            GrantedAccess|=GrantedAccessForACL;

        }

      }

      If((Status==STATUS_SUCCESS)&amp;&amp;

        (GrantedAccess!=DesiredAccess)){

          Status=STATUS_ACCESS_DENIED;

      }

      retum Status;

  }
The coverage of the security strategy that defines at arbitrary project place covers the descendants who comprises this project in the hierarchy of data storage definition. For all items that has defined explicit strategy, then effect is similar to definition by comprising the strategy that its all descendants inherit in the hierarchy. The effective ACL that is inherited by all descendants can be by getting the ACL that is inherited by this project, and the beginning that hereditable ACE among the explicit ACL adds this ACL to is obtained. But this is known as the inherited ACL collection that is associated with this project.
When root node file project place comprise the Explicit designation that lacks security in the hierarchy time, all descendants that are applied to comprise this project in the hierarchy are specified in the security of file. Thereby, to its provide explicit security strategy appointment each project definition the zone of shielded project similarly, but and be the inherited ACL collection of this project for effective ACL of all items in this zone. Comprising in the situation that hierarchy is tree, this is defined range intactly. If each zone will be associated with a number, so only included the zone under the project just enough with this project.
Yet, so to the hierarchy that comprises of DAG, comprise in the hierarchy effective and safe strategy and change residing point and generally determined by two intermediate item. The first kind is the project of it having been specified explicit ACL. Usually, these are to comprise the point that keeper's explicitly is specified ACL in the hierarchy. Equations of The Second Kind is to have an above father node, and each father node has the project of different security strategies associated with it. Usually, these are the projects for the point of the security strategy of volume appointment, and have indicated the beginning of a new security strategy.
Adopt this definition, the projects in the data storages fall into one of two classifications-be those projects of the root node of similarly shielded safety zone, and are not those projects of this root node. The project of undefined safety zone generally only belongs to a safety zone. As in the situation of tree, the effective and safe of project can be specified by zone and this project under the technical routine. This causes a kind of for each comes the flat-footed model of the security of managed storage platform data storage in shielded zone similarly based on storage.
2. the detailed description of security model
How this section affects various operations by each authority in the ACL that describes security descriptor and comprise provides about project protected details how.
A) security descriptor structure
Before describing the details of security model, be helpful about the basic discussion of security descriptor. But security descriptor comprises the security information that is associated with object of protection. Security descriptor is made of SECURITY_DESCRIPTOR (security descriptor) structure and the security information that is associated thereof. Security descriptor can comprise following security information:
1. the SID of the owner of object and main group.
2. the DACL of the access rights that allow or refuse is organized in appointment to specific user or user.
3. be appointed as the SACL of the type that access that object generates audit record attempts.
4. limit one group of control bit of security descriptor or its indivedual member's implications.
Preferably, application program can not be manipulated the content of security descriptor directly. The function that has the security information of the security descriptor that is used for setting and searching object. In addition, there is the function that is used to new Object Creation and initializes security descriptor.
The ACL of freely selecting (DACL) but identified is allowed to or the bailee of denied access object of protection. But when process attempt access object of protection, system verifies the ACE among the DACL of this object, determines whether its grant access rights. If this object does not have DACL, then system can authorize full access right to everyone. If the DACL of this object does not have ACE, the then attempt of this object of system's denied access is not because this DACL allows any access rights. System verifies ACE successively, until find one or more ACE of all access rights that permission asks, or until arbitrary access rights of asking be rejected.
System access control list (SACL) makes the keeper attempt of access protected object can be charged to daily record. Each ACE has specified the type of an appointment bailee access attempts, and this access attempts is so that system generates a record in the security incident daily record. When access attempts failure, as its success or both, the ACE among the SACL can generate audit record. When unwarranted user figured for access rights for object, SACL proposed alarm.
All types of ACE comprise following access control information:
1. sign is used the bailee's of ACE secure identifier (SID) to it.
2. specify the access mask by the access rights of this ACE control.
3. indicate the sign of the type of this ACE.
4. determine that can sub-container or object from one group of bit flag of the appended main object succession ACE of ACL.
But following form is listed three kinds of ACE types being supported by all object of protections.
Type Describe
Access reject ACE In DACL, use, in order to bailee's denied access authority.
Access allows ACE In DACL, use, in order to allow access rights to the bailee.
System audit ACE In SACL, use, when attempting to exercise the access rights of appointment as the bailee, be used for generating audit record.
(1) access mask form
But all object of protections can be used at the access mask form shown in Figure 26 and arrange its access rights. In this form, lower 16 are used for object private access authority, ensuing 7 standard access authorities that are used for being applied to most of type objects, the highest 4 are used to specify the generic access right that each object type can be mapped to one group of standard and the special-purpose authority of object. ACCESS_SYSTEM_SECURITY (access system safety) position is corresponding to the authority of the SACL of this object of access.
(2) generic access rights
Specify in 4 highest orders of generic authority in mask. Each class can be protected object these positions are mapped to one group standard and object private access authority. For example, a file object can be mapped to the GENERIC_READ position READ_CONTROL and SYNCHRONIZE standard access authority, and is mapped to FILE_READ_DATA, FILE_READ_EA and FILE_READ_ATTRIBUTES object private access authority. The object of other type is mapped to the GENERIC_READ position access rights group that is applicable to this class object.
When opening the handle of object, the generic access rights can be used for specifying required access type. This is usually simple than all corresponding standards of appointment and special-purpose authority. Following form shows the constant into the generic access privileges definition.
Constant The generic implication
 GENERIC_ALL Reading and writing and execution access
 GENERIC_EXECUTE Carry out access
 GENERIC_READ Read access
 GENERIC_WRITE Write access
(3) standard access authority
Each class can be protected object has one group corresponding to the access rights to the operation of this class object special use. Except these object private access authorities, but also has one group corresponding to the standard access authority to the public operation of the object of protection of most of types. Following form shows the constant into the standard access authority definition.
Constant Implication
  DELETE The right limit of deletion object.
  READ_CONTROL Read the authority of the information in the object security descriptor, do not comprise the information among the SACL.
  SYNCHRONIZE Come synchronous authority with this object. This can wait for until this object is in notified state thread. Some object type is not supported this access authority.
  WRITE_DAC The authority of DACL in the security descriptor of modification object.
  WRITE_OWNER Possessory authority in the security descriptor of change object.
B) the special-purpose authority of project
In the access mask structure of Figure 26, the special-purpose authority of project is placed in the special-purpose authority section of object (lower 16). Because in the present embodiment, storage platform has represented two groups of API and has come management security-Win32 and storage platform API, must consider that therefore the special-purpose authority of file system object is to excite the design to the special-purpose authority of storage platform object.
(1) the special-purpose authority of file and directory object
Consider following table:
Catalogue Catalogue is described File File is described Value
  FILE_LIST_   DIRECTORY List the authority of the content of catalogue  FILE_READ_  DATA Read the authority of corresponding file data   0x0001
  FILE_ADD_FILE In catalogue, create the authority of file  FILE_WRITE_  DATA Authority with the data writing in files   0x0002
  FILE_ADD_   SUBDIRECTORY Create the authority of subdirectory  FILE_APPEND_  DATA Authority to the file appending data   0x0004
  FILE_READ_EA Read the authority of extended file attributes  FILE_READ_EA Read the authority of extended file attributes   0x0008
  FILE_WRITE_EA Write the authority of extended file attributes  FILE_WRITE_EA Write the authority of extended file attributes   0x0010
  FILE_TRAVERSE The authority of traversal catalogue  FILE_EXECUTE For the machine code file, carry out the authority of this document   0x0020
  FILE_DELETE_   CHILD The authority of the All Files that deltrees and comprise Nothing Nothing   0x0040
  FILE_READ_   ATTRIBUTES Read the authority of directory attribute  FILE_READ_  ATTRIBUTES Read the authority of file attribute   0x0080
  FILE_WRITE_   ATTRIBUTES Write the authority of directory attribute  FILE_WRITE_  ATTRIBUTES The authority of written document attribute   0x0100
Table in the reference notices that file system made basic difference between file and catalogue, Here it is file and directory permission why can be on identical position overlapping reason. File system has defined the very authority of granular, thereby allows the behavior of application program controlling on these objects. For example, they allow application program to distinguish between attribute associated with the file (FILE_READ/WRITE_ATTRIBUTES), extended attribute and data flow.
The target of the security model of storage platform of the present invention is to simplify the right assignment model, therefore generally need not to distinguish between attribute, extended attribute and data flow such as the application program in data stored items (contact person, Email etc.) operation. Yet for file and file, granularity Win32 authority is saved, and defined by the access of storage platform semantic so that compatibility with the Win32 application program can be provided. This mapping is discussed each project authority of following appointment.
The following items authority is to allow to operate appointment with what it was associated. The Win32 authority of each equivalence behind of these project authorities also is provided.
(2)WinFSItemRead
This authority allows the read access to all elements of project, comprises the project that is linked to project by imbeding relation. It also allows to enumerate by holding relational links to the project (being also referred to as directoryof) of this project. This comprises the by reference title of the project of relational links. This permissions mapping arrives:
File:
(FILE_READ_DATA|SYNCHRONIZA)
File:
(FILE_LIST_DIRECTORY|SYNCHRONIZE)
Semanteme is that security application can arrange WinFSItemReadData (WinFS project read data), and the specified right mask is the combination of the file permission of above appointment.
(3)WinFSItemReadAttributes
This authority allows the read access to the base attribute of project, and this file system that resembles very much between basic file attributes and the data flow is distinguished. Preferably, these base attributes are those attributes that reside in the elementary item of therefrom deriving all items. This permissions mapping arrives:
File:
(FILE_READ_ATTRIBUTES)
File:
(FILE_READ_ATTRIBUTES)
(4)WinFSItemWriteAttributes
This authority allows the write access to the base attribute of project, and this file system that resembles very much between basic file attributes and the data flow is distinguished. Preferably, these base attributes reside in those attributes in the elementary item of therefrom deriving all items. This permissions mapping arrives:
File:
(FILE_WRITE_ATTRIBUTES)
File:
(FILE_WRITE_ATTRIBUTES)
(5)WinFSItemWrite
The ability that this authority permission is write all elements of project comprises the project by the imbeding relation link. This authority also allows to add or delete the ability of the imbeding relation of other project. This permissions mapping arrives:
File:
(FILE_WRITE_DATA)
File:
(FILE_ADD_FILE)
In storage platform data storages, as broad as long between project and file, because project also can have the relation of holding of other project in the data storage. Therefore, if having FILE_ADD_SUBDIRECTORY (or FILE_APPEND_DATA) authority, then can make project is source to the relation of other project.
(6)WinFSItemAddLink
This authority allows to add to the related ability of holding of project in the storage. It should be noted that, owing to be used for a plurality of securities of holding on the related security model change project, and if from the higher point in the hierarchy, then change and to walk around WRITE_DAC, therefore require WRITE_DAC can be created to its relation in the destination project. This permissions mapping arrives:
File:
(FILE_APPEND_DATA)
File:
(FILE_ADD_SUBSIRECTORY)
(7)WinFSItemDeleteLink
Even this authority is not also allowing to delete the related ability of holding of this project when main body is authorized the authority of delete items. This is consistent with file system model, and helps to remove. This permissions mapping arrives:
File:
(FILE_DELETE_CHILD)-and notice that file system is not equivalent to the file of this authority, have to the related concept of holding of other project but had, and therefore also can realize this authority to non-file.
File:
(FILE_DELETE_CHILD)
(8) authority of delete items
Disappear if hold relation to last of project, then this project is deleted. Not to the explicit representation method of delete items. Exist deletion to hold related clear operation to all of project, but it is than upgrade kit and is not system's primitive.
If satisfy one of following two conditions, then use any project of path appointment can be cancelled link: (1) authorizes write permission along father's project in this path to this project, perhaps (2) this project with it standard rights mandate DELETE originally. When removing last and concern, this project disappears from system. If project is with it standard rights mandate DELETE originally, then use any project of ItemID appointment can be cancelled link.
(9) copy item purpose authority
If main body is authorized to the WinFSItemWrite on WinFSItemRead on the project and the destination document folder, then project can copy to from the source destination document folder.
(10) authority of mobile project
Move only requires DELETE authority on the source file and the FILE_ADD_FILE on the catalogue of destination in file system, because it has preserved the ACL on the destination. Yet, can call at MoveFileEx in (MOVEFILE_COPY_ALLOWED) to specify and allow application program specify in to stride the sign of tolerable CopyFile semanteme in the mobile situation of volume. For after mobile, what having been occured security descriptor four possible selections are arranged:
1. mobile semantic in file carries the volume of whole ACL-acquiescence.
2. carry whole ACL and ACL is labeled as shielded with file.
3. only carry explicit ACE and cross over, and on the destination, again inherit.
4. do not carry anything, and mobile semanteme between the volume of again inheriting on the destination-giving tacit consent to-the same with xcopy.
In the safety model, if application program has been specified the MOVEFILE_COPY_ALLOWED sign, then to roll up interior and the volume between either way carry out the 4th option. If should specify by sign, then carry out second option, unless destination also in same safety zone (that is, same successions semanteme). The storage platform level moves and also realizes the 4th option, and requires the READ_DATA on the source, with copy desired the same.
(11) check the authority of the security strategy on the project
If project is authorized standard rights READ_CONTROL to main body, then can check the security of project.
The authority of the security strategy on (12) the change project
If project is authorized standard rights WRITE_DAC to main body, then can change the security of project. Yet because data storages provides implicit expression to inherit, so this has the connotation that can how change security at hierarchy. Rule is if the root mandate WRTIE_DAC of hierarchy then changes security strategy at whole hierarchy, no matter and the specific project in the hierarchy (or DAG) whether not to main body mandate WRITE_DAC.
(13) there is not the authority of direct equivalent
In the present embodiment, FILE_EXECUTE (FILE_TRAVERSE that is used for catalogue) does not have direct equivalent in storage platform. This model is compatible these authorities of preserving of Win32, but is not that project is made any access decision based on these authorities. As FILE_READ/WRITE_EA, because the data stored items does not have the representation of extended attribute, therefore do not provide this semanteme. Yet, keep this position for Win32 is compatible.
3. realize
The all items that defines same shielded zone has clauses and subclauses associated with it in security table. Security table is defined as follows:
The project identity The orderly path of project Explicit project ACL Path A CL Zone ACL
Project identity clauses and subclauses are project identity of the root of same shielded safety zone. The orderly path of project is the orderly path (ordpath) that is associated with the root of same shielded safety zone. Explicit project acl entry is the explicit ACL for the root definition of same shielded safety zone. In some cases, this can be sky, for example, and when having a plurality of father's projects that belong to zones of different owing to project and define new safety zone. Path A CL is the ACL collection of being inherited by project, and regional acl entry is the ACL collection for the same shielded safety zone definition that is associated with project.
Calculating to the effective and safe of any project in the given storage takes full advantage of this table. For the security strategy of determining to be associated with project, obtain the safety zone that is associated with project, and retrieve the ACL that is associated with this zone.
When by the explicit ACL of direct interpolation or by indirect interpolation cause forming new safety zone hold the security strategy that relation changes with project is associated the time, making this security table keep up-to-date, is effective with the algorithm of guaranteeing above-mentioned effective and safe be used to identifying project.
Various changes and the algorithm of enclosing of maintenance safe table to storage are as follows:
A) in container, create new projects
When new establishment project in container, it inherits all ACL that are associated with this container. Because the new project that creates only has father's project, so it and his father's project belong to the same area. Thus, need not in security table, to create new clauses and subclauses.
B) add explicit ACL to project
When ACL was added to project, it was that all its descendants that comprise the safety zone that belongs to identical with given project itself in the hierarchy define new safety zone. But belong to other safety zone in the hierarchy be the descendants's of given project all items for comprising, the safety zone remains unchanged, but the effective ACL that is associated with this zone is changed, to reflect the interpolation of new ACL.
Introducing to this new safety zone can trigger having and crossing over a plurality of the hold related all items further defined ranges of old safety zone with the ancestors of the safety zone of new definition. For all such projects, need the new safety zone of definition, and repeat this process.
Figure 27 (a), (b) and (c) described from existing safety zone, to divide out new same shielded safety zone by introducing new explicit ACL. This is to be indicated by the node that is labeled as 2. Yet, the introducing of this new region is caused creating other zone 3, because project has a plurality of relations of holding.
Below the renewal sequence of security table has been reflected decomposition to same shielded safety zone.
C) add the relation of holding to project
Hold when concern one of three kinds of possibilities of its initiation when adding to project. If hold related target, the project in namely considering is the root of safety zone, and the effective ACL that then is associated with this zone is changed, and need not the further modification to this security table. If it is identical with the safety zone of existing father's project of project newly to hold the safety zone in related source, then need not any change. Yet, if project has the father's project that belongs to different safety zones now, form new safety zone, with the root of given project as this safety zone. This change is transmitted to all items that comprises in the hierarchy by revising the safety zone that is associated with this project. Belong to consider in all items and the descendants in comprising hierarchy thereof of the identical safety zone of project all need to change. In case made change, need to have checked to have and a plurality ofly hold related all items and need further to change determining whether. If any in these projects has father's project of different safety zones, then need further change.
D) hold relation from deletion of items
When holding from deletion of items when concerning, if satisfy some condition, may come the foldable safe zone with his father zone. More accurately, this can finish under the following conditions: (1) causes having the project of father's project and does not specify explicit ACL for this project if hold related removing; (2) cause all projects in same safety zone of his father's project if hold related removing, and be not the explicit ACL of this project definition. In these cases, these safety zones can be marked as identical with father's project. This mark need to be applied to its safety zone corresponding to all items in the zone that is folded.
E) the explicit ACL of deletion from project
When the explicit ACL of deletion from project, may fold with the safety zone of his father's project root and be the safety zone of this project. More accurately, if explicit ACL remove the project that causes its father's project in comprising hierarchy to belong to same safety zone, then can realize this process. In these cases, the safety zone can be labeled as identically with father's project, and change and to be applied to its safety zone corresponding to all items in the zone that is folded.
F) revise the ACL that is associated with project
In this situation, do not need security table is carried out any new interpolation. The effective ACL that is associated with this zone is updated, and this new ACL change is propagated into the safety zone that is affected by it.
F. notify and change tracking
Press another aspect of the present invention, storage platform provides the notification capabilities that allows the application tracks data to change. This feature is mainly for the application program that keeps the service logic on volatile state or the executing data change event. Application program is registered in the notice on project, extension and the project relationship. After having submitted the data change to, notify and transmitted asynchronously. Application program can be filtered notice by project, expansion and relationship type and action type.
By an embodiment, storage platform API 322 provides two class interfaces for notice. The first, the application program registration changes event by the simple data that the change to project, extension and project relationship triggers. The second, application program creates the group that " supervisory programme " object comes supervision project, extension and project Relations Among. After time period above prolongation, can preserve and again create the state of supervisory programme object in thrashing or system off-line. Single notice can reflect a plurality of renewals.
1. store the change event
This section provides the some the examples how notification interface that is provided by storage platform API 322 is provided.
A) event
Project, extension and project relationship have represented by application program and have been used for the data change event that log-on data changes notice. Following example code shows the definition of ItemModified on the Item base class (project modification) and ItemRemoved (project removes) button.onrelease.
The ∥ event
public event ItemModifiedEventHandler  Item ItemModified
public event ItemRemovedEventHandler  Item ItemRemoved
All notices are all carried the project that enough data change with retrieval from the data storage. Following example code shows the event of how registering on project, extension or the project relationship:
myltem.ItemModified+=new ItemModifiedEventHandler(this.onItemUpdate);
myltem.ItemRemoved+=new ItemRemovedEventHandler(this.onltemDelete);
In the present embodiment, storage platform is guaranteed if corresponding project is modified or deletes since last transmission notice, or in the situation of the new registration since from the data storage, taking out for the last time with notification application.
B) supervisory programme
In the present embodiment, storage platform has defined and be used for to have monitored and (I) file or folder hierarchies structure, (2) project context, or the supervisory programme class of the object that is associated of (3) specific project. For in these three classifications each, storage platform provides the particular monitored program class that monitors the project, extension or the project relationship that are associated, for example, storage platform provides corresponding FolderItemWatcher (file project supervisory programme), FolderRelationshipWatcher (file concerns supervisory programme) and FolderExtensionWatcher (file expansion supervisory programme) class.
When creating supervisory programme, application program can be to the project that is pre-existing in, and namely project, expansion or relationship request are notified. These option great majority are used for safeguarding the application program of private keys height of eye speed buffer memory. If not request, then application program receives the notice that has created all renewals afterwards of supervisory programme object to occurring in.
Together with transmitting notice, storage platform provides " WatcherState (supervisory programme state) " object. WatcherState can be serialized and be kept on the disk. The supervisory programme state is used in subsequently failure or again creates corresponding supervisory programme after off-line when reconnecting. The new supervisory programme that again creates will regenerate unacknowledged notice. Application program is indicated sending to of notice by calling " Exclude (the eliminating) " method quoted that provides notice at corresponding supervisory programme state.
Storage platform transmits the independent copy of supervisory programme state to each button.onrelease. The supervisory programme state that receives that calls subsequently at same button.onrelease is supposed sending to of all previous notices that receive.
As example, following example code shows the definition of FolderItemWatcher.
public class FolderItemWatcher:Watcher
{
The ∥ constructed fuction
        public FolderItemWatcher_Constructor(Folder folder);
        public FolderItemWatcher_Constructor1(Folder folder,Type itemType);
        public FolderItemWatcher_Constructor2(ItemContext context,ItemId folderld);
        public FolderItemWatcher_Constructor3(Folder folder,Type itemType,
        FolderItemWatcherOptions options);
        public FolderItemWatcher_Constructor4(ItemContext context,ItemId folderld,Type itemType);
        public FolderItemWatcher_Constructor5(ItemContext context,ItemId,folderld,Type itemType,
        FolderItemWatcherOptions options);
The ∥ attribute
    public ItemId FolderItemWatcher_Folderld{get;}
    public Type FolderItemWatcher_ItemType{get;}
    public FolderItemWatcherOptions FolderItemWatcher_Options{get;}
The ∥ event
    public event ItemChangedEventHandler FolderItemWatcher_ItemChanged;
}
Following example code shows the file supervisory programme object that how to create for the content of watch folder. Supervisory programme generates notice, i.e. event when adding new music item or renewal or the existing music item of deletion. Particular file folder in the file supervisory programme watch folder hierarchy or All Files folder.
myFolderItemWatcher=new FolderItemWatcher(myFolder,typeof(Music));
myFolderItemWatcher.ItemChanged+=new ItemChangedEventHandler(this.onItemChanged);
2. change and follow the tracks of and the notice generting machanism
This storage platform provides a kind of simply and effectively mechanism to come tracking data to change and has generated notice. Client computer is being used for the same connection retrieval notice of retrieve data. This has simplified largely safety inspection, has removed time-delay and constraint on the possibility network configuration. Notice is retrieved by sending case statement. For preventing poll, client computer can be provided by " waiting for (the wairfor) " feature that is provided by database engine 314. Figure 13 shows basic storage platform notice concept. Can synchronously carry out etc. to be checked, in this case, invokes thread is blocked, until the result is available; Perhaps can carry out asynchronously, in this case, thread is not blocked, but and when result's time spent return results on independent thread.
The combination of " wait " and " selection " is attractive for monitoring that the data that are fit to the particular data scope change, and can monitor by in corresponding data area the notice lock being set because change. This is applicable to many common storage platform situations. Change for end item can monitor by in corresponding data area the notice lock being set. Change to file and folder tree can monitor by the notice lock is set at path domain. Change to type and subtype thereof can monitor by the notice lock is set in the type scope.
Generally speaking, have three with the different phases of processing notice and being associated: (1) data change or even detect (2) subscribing matching, and (3) notice is sent to. Get rid of synchronization notice and send to, the notice of the part of the affairs that namely change as executing data is sent to, and storage platform can realize that the notice of following two kinds of forms sends to:
1) direct event detection: carry out event detection and subscribing matching as a part of upgrading affairs. Notice is inserted in the table that is monitored by the subscriber; And
The event detection of 2) postponing: after having submitted the renewal affairs to, carry out event detection and subscribing matching. Actual subscriber or intermediary detect event and generate notice subsequently.
Directly event detection requires to carry out extra code as a part of upgrading operation. This allows to catch all interested events, comprises the event that the indication relative status changes.
The event detection of postponing removes to upgrading operation adds the requirement of additional code. Event detection is finished by final subscriber. The event detection of postponing is usually sent to event detection and event and is carried out batch processing, and is applicable to well the query execution foundation structure of database engine 314 (for example, SQL Server).
The event detection of postponing depends on upgrades daily record or the tracking that operation stays. Storage platform is safeguarded one group of Logical time stamp and gravestone for the data items of deletion. When the change in the scan-data storage, client computer provides definition for detection of the time mark of the low watermark that changes and prevents one group of time mark repeating to notify. Application program may receive the notice that changes that occurs after by the time of low watermark indication.
The complex application that can access the core view also can be by creating special parameters and duplication filter table, optimizes and reduces the quantity of the required SQL statement of project that one group of supervision may be very large. Application program with specific demand is such as supporting the application program of enriching view to monitor that data change and refresh its special-purpose snapshot with available change tracking framework.
Therefore, preferably, in one embodiment, storage platform realizes the time detecting method of postponement, as hereinafter more completely describing.
A) change tracking
Unique identifier is carried in all items, expansion and project relationship definition. Change is tracked as all data items and safeguards that one group of Logical time stamp records establishment, renewal and erasing time. The gravestone clauses and subclauses are used for the data items of expression deletion.
Application program has monitored since the last visit data storage of application program whether newly add, upgrade or deleted specific project, extension or project relationship effectively with this information. Following example shows this mechanism.
create table[item-extension-relationship-table-template](
    identifier uniqueidentifier not null default newid()
Created bigint, not null,--@@deposits in when creating
Updated bignit, not null,--@@deposits in when last the renewal
    ……
)
The project of all deletions, extension and relation are recorded in the corresponding gravestone table. A template illustrates as follows.
create table[item-extension-relationship-tombstone table-template](
    identifier uniqueidentifier not null,
Deleted bigint, not null,--@@deposits in when deletion,
Created bigint, not null,--@@deposits in when creating,
Updated bigint, not null,--@@deposits in when last the renewal
    ……
)
Be efficiency reasons, storage platform is that project, extension, relation and pathname are safeguarded one group of global table. These global look-up table can be used for effectively monitoring data area and be retrieved time mark and the type information that is associated by application program.
B) time mark management
Logical time stamp is stored for database, and namely the storage platform volume is " local ". Time mark is monotonically increasing 64 place values. Keep single time mark and usually be enough to detect whether the data change has occured after being connected to the last time the storage platform volume. Yet, in the most real situation, need to preserve slightly more time marks and check repetition. Reason is explained as follows.
The relevant database table is to be structured in one group of logical abstraction on the physical data structure, i.e. B tree, heap etc. Record distribution time mark to new establishment or renewal is not atomic action. This record is inserted into the bottom data structure may be occured in the different moment, and application program may see that record is unordered thus.
Figure 14 shows new record is inserted into two affairs in the same B tree. Because affairs T3 inserted its record before the insertion of scheduling affairs T2, the application program that therefore scans the B tree may be seen by being recorded in before the affairs of being inserted by T2 that affairs T3 inserts. Thus, the reader may suppose improperly that he has seen all records that create before in the moment " 10 ". For addressing this problem, database engine 314 provides a kind of function of returning low watermark, before this low watermark, has submitted to all renewals and all more to be inserted in separately the bottom data structure in new capital. In above-mentioned example, the low watermark that returns is " 5 ", supposes that the reader started before submitting affairs T2 to. When allowing the data of application program in scan database or data area to change, the low watermark that is provided by database engine 314 effectively determines to ignore which project. Generally speaking, the ACID affairs are assumed that and continue the very short time that thus, the expection low watermark is in close proximity to the time mark of nearest distribution. In the situation of the affairs that have long duration, application program may must be preserved other time mark and be detected and abandon repetition.
C) data change detection-event detection
When data query was stored, application program obtained low watermark. Subsequently, application program comes its establishment in the scan-data storage, renewal or erasing time mark greater than the clauses and subclauses of the low watermark that returns with this watermark. Figure 15 shows this process.
For preventing repeating notice, application program is remembered the time mark greater than the low watermark that returns, and comes filtering to repeat with these time marks. Application program creates the local temporary table of session, with effective reduction process one large group repetition time mark. Before sending case statement, application program is inserted all repetition time marks that before returned, and deletion is more as follows than the older time mark of last low watermark of returning.
delete from $dupilcates where ts<@oldLowWaterMarkl
insert into $duplicates(ts)values(…),…,(…);
waitfor(select*,getLowWaterMark()as newLowWaterMark
         from[global!items]
         where updated>=@oldLowWaterMark
    and updated not in(select*from $duplicates))
G. synchronous
According to another aspect of the present invention, this storage platform provides synchronous service 330, it (I) allows the Multi-instance (each has the data of oneself to store 302) of storage platform to press one group of flexibly next synchronously each several part of their content of rule, and (ii) provides foundation structure the data of storage platform of the present invention are stored and realize that other data source of proprietary protocol is synchronous for the third party.
Storage platform occurs between one group of duplicate that participates in synchronously to storage platform. For example, with reference to figure 3, wish mostly be provided under the control at another example of the storage platform that different computer systems is moved between the data storage 302 of storage platform 300 and another remote data storage 338 synchronously. Total member's qualification of this group needn't be known by any given duplicate at any given time.
Different copy independently (concomitantly namely) are made change. Synchronizing process is defined as makes each duplicate know the change of being made by other duplicate. This synchronizing capacity is many main (multi-master) in essence.
Synchronizing capacity of the present invention allows each duplicate:
Determine what change another duplicate knows;
Request is about the information of the ignorant change of this duplicate;
Reception and registration is about the information of the ignorant change of other duplicate;
Determine when mutually conflict of two changes;
The local application changes;
Pass on collision decomposition to other duplicate to guarantee convergence; And
Decompose conflict based on the strategy to the collision decomposition appointment.
Storage platform to storage platform synchronously
The main application of the synchronous service 300 of storage platform of the present invention is the Multi-instance of stores synchronized platform (each is with its data storage). Synchronous service is in storage platform pattern level operation (rather than in the bottom table at database engine 314). Therefore, for example " scope (Scope) " is used for defining synchronization group discussed below.
Synchronous service is by the principle operation of " pure change (net change) ". Not record and send each operation (as transactional replication) that therefore synchronous service but send the final result of these operations often is merged into single final result with the result of a plurality of operations.
Synchronous service is not considered transaction boundaries usually. In other words, if in single affairs, two changes are made in storage platform data storages, do not guarantee that these change to be applied to atomically on all other duplicate-can to illustrate one and change and other change is not shown. The exception of this principle is that if in same affairs same project is made two changes, then these changes guarantee to be sent atomically and be applied to other duplicate. Therefore, project is the consistency unit of synchronous service.
A) synchronous (Sync) controlling application program
Arbitrary application program can be connected to synchronous service and start simultaneously operating. Such application program provides carries out synchronously all required parameters of (synchronous overview below seeing). Such application program is called as Synchronization Control application program (SCA) here.
When synchronous two storage platform examples, started synchronously by SCA in a side. This SCA notice local synchronization service and remote partner are synchronous. At opposite side, synchronous service is by being waken up by the message of sending from the synchronous service of initiating machine. (mapping that sees below) responds based on the persistent configuration information that exists at target machine for it. Synchronous service can be moved on schedule or in response to event. In these cases, the synchronous service of realization timetable becomes SCA.
For enabling synchronously, need to take two steps. At first, the Model Design person must be with suitable synchronization semantics annotation storage platform model (as mentioned below appointment change unit). Secondly, synchronously must correctly configuration (as described below) on all machines with the example that participates in synchronous storage platform.
B) pattern note
The basic conception of synchronous service is the concept that changes unit (Change Unit). Change the unit and be the schema fragment of the minimum of individually being followed the tracks of by storage platform. Each is changed the unit, and synchronous service can determine that it is changed or is not changed since synchronous for the last time.
Change unit in the designated mode reaches some purposes. At first, it has determined how online synchronous service is said another word. Make when changing in changing the unit, whole change unit is sent to other duplicate, because synchronous service does not know which part that changes the unit is changed. Secondly, it has determined the granularity of collision detection. When same change unit being made two concurrent changes (these terms are specific definition in follow-up chapters and sections), synchronous service causes conflict; On the other hand, make concurrent change if difference is changed the unit, then occur without conflict, and change is automatically merged. The 3rd, it has seriously affected the amount of the metadata that is kept by system. Each is changed the unit keep many synchronizing service metadatas; Therefore, make the less meeting in change unit increase synchronous overhead.
Definition changes the unit need to find out correct trading off. For this reason, synchronous service allows the Model Design person to participate in this process.
In one embodiment, synchronous service is not supported the change unit greater than an element. Yet its supports to allow the Model Design person specify the ability of the change unit less than element-namely, with a plurality of combinations of attributes of an element in independent change unit. In this embodiment, this is to use following syntax to realize:
<Type Name=″Appointment″MajorVersion=″1″MinorVersion=″0″ExtendsType=″Base.Item″
        ExtendsVersion=″1″>
  <Field Name=″MeetingStatus″Type=″the storage platformTypes.uniqueidentifier Nullable=″False″/>
  <Fileld Name=″OrganizerName″Type=″the storage platformTypes.nvarchar(512)″Nullable=″False″/>
  <Filed Name=″OrganizerEmail″Type=″the storage platformTypes.nvarchar(512)″
    TypeMajorVersion=″1″                MultiValued=″True″/>
  …
  <ChangeUnit Name=″CU_Status″>
    <Field Name=″MeetingStatus″/>
  </ChangeUnit>
  <ChangeUnit Name=″CU_Organizer″/>
    <Field Name=″OrganizerName″/>
    <Field Name=″OrganizerEmail″/>
  </ChangeUnit>
  …
</Type>
C) synchronously configuration
The one group of storage platform partner who wishes some Partial synchronization of their data of maintenance is called as synchronous community. Although the member of community wishes to keep synchronously, they need to not represent data in identical mode; In other words, convertible their the synchronous data of synchronization partner.
In reciprocity situation, allow equity side to all their partner to keep the conversion mapping be unpractical. On the contrary, synchronous service is taked the method for definition " community's file ". Community's file is to represent " Shared Folders " of synchronous hypothesis abstract with it of all members of community.
The most handy example explanation of this concept. If Joe wishes to keep My Documents (my document) Folder synchronizing of his some computers, Joe defines community's file, as is called JoeDocuments. On every computer, Joe is configuration one mapping between the JoeDocuments file of supposing and local My Documents file subsequently. From this point, when the computer of Joe was synchronized with each other, they were talked by the document among the JoeDocuments rather than their local project. With the method, the computer of all Joe is understood mutually, and needn't know whom other people is-and community's file becomes the common language of synchronous community.
The configuration synchronization service comprises three steps: (1) is defined in the mapping between local folders and the community's file; (2) definition determines which obtains synchronous synchronous overview (as synchronous with whom, and which subset should be sent out, which is received); And the different synchronous overview of (3) definition timetable that should move, or manually move them.
(1) community's file-mapping
Community's file mapping is stored on the individual machine as the XML configuration file. Each mapping has following pattern:
/mappings/communityFolder
Community's file of this element name mapping. Name is followed the syntactic rule of file.
/mappings/localFolder
The local folders that this element name mapping is transformed into. This name is followed the syntactic rule of file. In order to make mapping effectively, file must exist. Project in this file be counted as to each this mapping synchronously.
/mappings/transformations
How this element definition is transformed into local folders and reverse conversion how with project from community's file. If lack or for empty, do not carry out conversion. Particularly, this means without ID mapped. This configuration is mainly used in creating the high-speed cache of file.
/mappings/transformations/mapIDs
The newly-generated local ident of this element request is endowed all from the project of community's file mapping, rather than reuses the ID of community. ID mapping is safeguarded in the synchronous operation storehouse, since revolution change project.
/mappings/transformations/localRoot
All root Elements in this element request community file are as the sub-project of designated root.
/mappings/runAs
This control of element is processed the request for this mapping under whose is authorized. If do not exist, then suppose the sender.
/mappings/runAs/sender
Exist this element to show that the sender of the message to this mapping must be impersonate, and under his voucher, process request.
(2) overview
Overview is to separate synchronously required total parameter set synchronously. Provide it to the synchronous operation storehouse to start synchronously by SCA. Storage platform comprises following information to the synchronous synchronous overview of storage platform:
Local folders is as the source and target that changes;
Synchronous Remote Folder name-this file must be issued by shining upon as defined above from remote partner with it;
Direction-synchronous service support only sends, receives only and send-receives synchronously;
Local filter device-selection sends any local information to remote partner. Be expressed as the storage platform inquiry on the local folders;
Remote filter device-selection is retrieved what remote information-be expressed as storage platform inquiry on community's file from remote partner;
How conversion-definition is changed between project and native format;
Local security-appointment is to use from the change of remote endpoint retrieval under the license of remote endpoint (personification), or the user is synchronous at local boot; And
The conflict of collision decomposition strategy-appointment is to be rejected, to charge to daily record or automatic classifying-under latter event, specify and use which collision decomposition device and its configuration parameter.
Synchronous service provides the Runtime Library CLR class that allows the synchronous overview of simple construction. Overview can be serialized into the XML file or serialize from the XML file, so that easily storage (often with timetable). Yet the standard of not storing all overviews in storage platform is local; Welcome SCA to make up overview at the point that needn't forever keep. Note, do not need to have local mapping and start synchronously. Can in overview, specify all synchronizing informations. Yet be the synchronization request that starts in response to by remote parties, need mapping.
(3) timetable
In one embodiment, synchronous service does not provide its scheduled basis structure. On the contrary, it depends on another assembly and finishes this task-available Windows Scheduler in Microsoft Windows operating system. Synchronous service comprises command line utility, and it takes on SCA and based on the synchronous overview triggering synchronous that is kept in the XML file. This utility program is so that become synchronously very easy on schedule or in response to disposing Windows Scheduler operation such as user login or the event such as publish.
D) conflict is processed
Conflict in the synchronous service is processed and is divided into three phases: the collision detection when (1) occurs in the change application-this step judges whether to use safely change; (2) automatically collision decomposition and charge to daily record-the automatic collision decomposition device of this step (after occurring in and then collision detection) money consulting with check whether conflict can be decomposed-Ruo can not, alternatively daily record is charged in conflict; And (3) conflict checks with decomposition-Ruo that some conflicts and is logged, and occurs in outside the environment of simultaneous session, takes then that this step-at this moment, the conflict that is logged can be decomposed and remove from daily record.
(1) collision detection
In the present embodiment, synchronous service detects two types conflict: based on the conflict of knowledge and the conflict of Constraint-based.
(a) based on the conflict of knowledge
When two duplicate independently change same change unit, can cause the conflict based on knowledge. If two changes are to carry out in situation about being ignorant each other, then to be called be independently-in other words in these two changes, and first version is covered by second knowledge, and vice versa. Based on the knowledge of as previously discussed duplicate, described synchronous service automatically detects all this conflicts, and processes these conflicts, and is as described below at this.
Sometimes, the bifurcated of conflict being thought change in the vncsion history of unit is helpful. If conflict does not occur in the life that changes the unit, then its vncsion history is exactly that a simple chain-each changes a back generation before. In the situation based on the conflict of knowledge, two change parallel the generation, so that described chain splitting and become the version tree.
(b) conflict of Constraint-based
There is certain situation, in these cases, when being employed together, independently changing and violated integrity constraint. For example, in same directory, create two duplicate meetings of the file with same names so that such conflict generation.
The conflict of Constraint-based relates to two and independently changes (as for based on the conflict of knowledge); Yet they do not affect identical change unit. On the contrary, their impacts are different to change the unit, but has constraint between them.
Synchronous service detects constraint violation when changing application, and automatically causes the conflict of Constraint-based. The conflict of decomposing Constraint-based requires to revise in the mode of not violating constraint the self-defined code of change usually; Synchronous service is not provided for finishing the general mechanism of this process.
(2) conflict is processed
When detecting conflict, synchronous service can be taked (being selected by the synchronous starter in the synchronous overview) in 3 actions: (1) refusal changes, and it is returned to the sender; (2) conflict is recorded in the conflict daily record; Perhaps (3) automatic classifying conflict.
If refusal changes, do not arrive described duplicate if change so, then synchronous service works. NACK is sent back to starter. This decomposition strategy is mainly upper useful at duplicate without a head (for example file server), and the log recording that wherein conflicts is infeasible. On the contrary, this duplicate forces other duplicate to change by refusal and processes conflict.
Starter disposes the collision decomposition in its synchronous overview synchronously. Synchronous service is supported in and makes up by the following method a plurality of collision decomposition devices-at first in the single overview, specifies the conflict processor tabulation to attempt one by one, until one of them success; Secondly, conflict processor is associated with the conflict type, for example, a conflict processor is pointed in the conflict of upgrading-upgrading based on knowledge, and daily record is pointed in other conflict with all.
(a) automatic collision decomposition
Synchronous service provides the collision decomposition device of multiple acquiescence. This tabulation comprises:
It is local winning: if the data collision that stores with this locality then abandons and imports change into;
Long-range winning: as if conflict with importing into to change, then to abandon local data;
It is winning at last not write the person: any that select local winner or long-range winner based on the time mark that changes (notices that synchronous service does not rely on clock value usually; This collision decomposition device is only exception for that rule);
Deterministic: as to select the winner to guarantee mode identical on all duplicate, but be not that an embodiment of in addition significant-synchronous service may relatively realize this feature with the lexicographic of Partner ID.
In addition, ISV can realize and install its oneself conflict processor. Self-defined conflict processor can be accepted configuration parameter; This parameter must be specified by the SCA in the collision decomposition part of synchronous overview.
When the collision decomposition device is processed conflict, it will need the tabulation (replacing conflict to change) of the operation carried out to return to running time. Then, long-range knowledge is suitably adjusted in these operations of sync service application, in order to comprise advised information of conflict processor.
May in application decomposition, detect another conflict. In this case, before re-starting original processing, new conflict must be decomposed.
When the branch in the vncsion history of conflict being regarded as project, collision decomposition can be counted as contact-two branches of combination in order to form independent point. Therefore, collision decomposition transfers vncsion history to directed acyclic graph (DAG).
(b) conflict log recording
A kind of conflict processor of very particular type is conflict log recording device. Synchronous service is recorded in the daily record project as Type C onflictRecord with conflict. These the record conversely with the conflict project relevant (unless project itself is deleted). Each conflict record comprises: cause the change of importing into of conflict; The type of conflict: renewal-renewal, renewal-deletion, deletion-renewal, insertion-insertion, perhaps constraint; And the knowledge of importing version and its duplicate of transmission of change into. The conflict of charging to daily record can be used for inspection as described below and decomposition.
(c) conflict checks and decomposes
Synchronous service is provided for Application inspection conflict daily record and suggestion to the API of the decomposition method of wherein conflict. API allows application program to enumerate all conflicts or the conflict relevant with given project. It also allows these application programs to decompose the conflict that is logged with a kind of in 3 kinds of modes: (1) long-range winning-accept the change that is logged and cover afoul local the change; (2) local winning-ignore the conflict part of the change that is logged; And (3) suggestion is new, and change-wherein application program is advised a kind of merging, and this is incorporated in and decomposes described conflict in its view. In case decomposed conflict by application program, synchronous service is just deleted them from daily record.
(d) propagation of the convergence of duplicate and collision decomposition
In the synchronization scenario of complexity, on a plurality of duplicate, can detect identical conflict. If this situation has occured, then many things all may occur: (1) decomposes conflict at a duplicate, is sent to another and decompose; (2) automatic classifying conflict on two duplicate; Perhaps (3) manually decompose conflict (checking API by conflict) on two duplicate.
In order to ensure convergence, synchronous service passes to other duplicate with collision decomposition. When the change of decomposing conflict arrived duplicate, synchronous service automatically found any conflict record that decomposes by this renewal in the daily record, and deletes them. In this case, the collision decomposition on duplicate will be bundled on all other duplicate.
If for identical conflict, select different winners by different duplicate, the principle of sync service application binding collision decomposition then, and automatically select and be better than alternative a kind of decomposition in two kinds of decomposition. Pick out the winner in the mode of determining, this determines that mode guarantees all to produce identical result (embodiment uses duplicate ID lexicographic relatively) in all.
If to identical conflict, " the new change " that different duplicate suggestions is different, then synchronous service is regarded this new conflict as special conflict, and prevents that with conflict log recording device it from propagating into other duplicate. This situation can cause manual collision decomposition usually.
To the storage of non-storage platform data synchronously
By storage platform of the present invention on the other hand, the architecture that storage platform provides ISV to be used to realize sync adapters, sync adapters make the storage platform can be with synchronous such as legacy systems such as Microsoft Exchange, AD, Hotmail. Many synchronous service of being provided by following synchronous service are provided sync adapters.
No matter its title how, sync adapters does not need to realize as the plug-in unit of certain storage platform architecture. When needed, " sync adapters " can be to utilize synchronous service Runtime Library interface to obtain to enumerate and any application program of the service such as application such as change simply.
In order to make other people can more easily dispose and run to the synchronous of given rear end, encourage the author of sync adapters to represent standard sync adapters interface, it moves when given above-mentioned synchronous overview synchronously. Overview provides configuration information to adapter, adapter with some information be sent to the synchronous operation storehouse with controlling run storehouse service (as, synchronous file).
A) synchronous service
Synchronous service provides some synchronous service to the adapter author. At this section remaining part, easily storage platform is finished synchronous machine thereon and be called " client computer ", and adapter just is called " server " with the non-storage platform rear end of its dialogue.
(1) change is enumerated
Based on the change tracking data of being kept by synchronous service, change is enumerated and is allowed sync adapters easily to enumerate the change that since last and this partner attempt to make synchronously the data storage folder has been occured.
Enumerate based on the concept of " anchor point " that change-this is the opaque structure of relevant last the hyposynchronous information of expression. As described in former chapters and sections, anchor point is taked the form of storage platform knowledge. Utilize the sync adapters that changes the service of enumerating to fall into two large classifications: the adapter of " anchor point of storage " and the adapter of use " anchor point that provides " are provided.
Difference based on where be stored in about last hyposynchronous information-on the client computer or on server. Adapter usually easily store this information on client computer-this information often can not easily be stored in the rear end. On the other hand, if a plurality of client computer and same backend synchronization, then this information is stored on the client computer be poor efficiency and be in some cases incorrect-this makes a client computer not know that other client computer shifted the change of server onto. If adapter wishes to use the anchor point of server stores, then adapter need to send back to storage platform with it when change is enumerated.
In order to allow storage platform safeguard anchor point (being used for the Local or Remote storage), storage platform need to be known the change that successfully is applied on the server. These and only have these changes to be included in the anchor point. During change was enumerated, sync adapters was used and is confirmed (Acknowledgement) interface, was successfully used to report which changes. With EOS the time, the adapter of the anchor point that use provides must be read new anchor point (it combines the change of all successful Application) and send it to their rear end.
Each adapter usually needs the storage adapter exclusive data and is inserted into projects in the storage platform data storages. The common examples of this data storage is remote ident and remote version (time mark). Synchronous service is provided for storing the mechanism of these data, and changes the mechanism that the change that receives this excessive data and will return is provided of enumerating. In most of the cases, this has eliminated the again demand of Query Database of adapter.
(2) change application
Change is used the change that allows sync adapters to receive from their rear end and is applied to local storage platform. The expectation adapter is transformed into the storage platform pattern with change.
Changing the major function of using is automatically to detect conflict. As in the storage platform situation synchronous to storage platform, two overlapping changes that conflict is defined by making when not knowing mutually. When adapter used change to use, they must specify the anchor point of it being carried out collision detection. Change if detect overlapping this locality of the knowledge covering that is not adapted device, then change application and cause conflict. Be similar to change and enumerate, anchor point storage or that provide can be provided adapter. Change effective storage of application program support adapter dedicated meta data. Such data can be appended to it in the change that will use by adapter, and can be stored by synchronous service. Data can change in next time to be returned when enumerating.
(3) collision decomposition
Above-mentioned collision decomposition mechanism (comprising log recording and automatic classifying option) also can be used sync adapters. When using change, sync adapters can be specified the strategy that is used for collision decomposition. If specify, then conflict can be passed to the conflict handling procedure of appointment and be decomposed (if possibility). Conflict also can be logged. When attempting that this locality is changed when being applied to the rear end, adapter can detect conflict. In such situation, adapter still can be delivered to conflict the synchronous operation storehouse, to decompose by strategy. In addition, sync adapters can ask any conflict that is detected by synchronous service to send back to them in order to process. Can store or decompose that this is convenient especially in the situation of conflict in the rear end.
B) adapter is realized
Although some " adapter " is the application program of utilizing the Runtime Library interface simply, yet encourage adapter to realize the adaptor interface of standard. These interfaces allow the Synchronization Control application program: the request adapter is carried out synchronously by given synchronous overview; It is synchronous that cancellation is just being carried out; And receive about just carrying out synchronous progress report (Percent Complete).
3. security
Synchronous service is made great efforts the least possible being incorporated into synchronously in the safe mode that is realized by storage platform. Not the authority new to synchronous definition, but use existing authority. Particularly,
Anyone of energy read data stored items can enumerate the change to this project;
Anyone that can write the data stored items can change to this project application; And
Anyone of energy growth data stored items can be with synchronizing metadata and this item association.
Synchronous service is the maintenance safe authorization message not. When making change at duplicate A by user U, and when it was forwarded to duplicate B, this change had been lost in the fact that A place (by U) makes at first. If B is forwarded to duplicate C with this change, then this is to finish under the mandate of B rather than the mandate at A. This just causes following restriction: if distrust a duplicate that a project is made its change, it can not transmit the change of being made by other duplicate.
When starting synchronous service, finished by the Synchronization Control application program. The identity of synchronous service personification SCA, and under this identity, finish all operations (local with long-range). As an illustration, observe the change that user U can not make the local synchronization service from the retrieval of remote storage platform user U not had the project of read access.
4. manageability
The distributed community that monitors duplicate is complicated problem. Synchronous service can be used " scanning " algorithm to collect and distribute information about the state of this duplicate. The attribute of scanning algorithm guarantee about to some extent the information of duplicate of configuration finally be collected, and detect the duplicate of this failure (without responding).
On each duplicate, can obtain the monitor message of community's scope. Can be on the duplicate of choosing arbitrarily the operation monitoring instrument, to check this monitor message and to make administrative decision. On affected duplicate, must directly make configuration change.
G. traditional file interoperability
As mentioned above, at least in certain embodiments, storage platform of the present invention is intended to be implemented as the integral part of the hardware/software interface system of computer system. For example, storage platform of the present invention can be implemented as the operating system integral part such as Microsoft Windows family operating system. In this respect, storage platform API becomes the part of operating system API, and application program is mutual by it and operating system. Therefore, storage platform becomes device, and application program is deposited information on the operating system by it, thereby and the data model of project-based storage platform substituted the traditional file systems of this operating system. For example, when in Microsoft Windows family operating system, implementing, the alternative new technology file system of in this operating system, realizing of storage platform. Current, application program visits the service of new technology file system by the Win32API that is represented by Windows family operating system.
Yet, will be appreciated that, substitute new technology file system with storage platform of the present invention fully and need the existing application program based on Win32 of recompile, therefore and such recompile may be undesirable, and to provide with certain interoperability such as existing file systems such as NTFS be useful to storage platform of the present invention. Thereby in one embodiment of the invention, storage platform makes the application program that depends on the Win32 programming model can access simultaneously the data storage of storage platform and the content of traditional new technology file system. For this reason, storage platform uses naming convention as the superset of Win32 naming convention so that be easy to interoperability. In addition, file and the catalogue that is stored in the storage platform volume accessed in the storage platform support by Win32API.
1. interoperability model
According to this one side of the present invention, and according to above-mentioned exemplary embodiment, storage platform has realized a kind of name space, wherein can organize non-file and docuterm. Adopt this model, can obtain following advantage:
But 1. file include file and the non-docuterm in the data storages, be thus file and medelling presentation of data single name space. In addition, it also provides same safe, shared and administrative model for all customer data.
2. because file and non-docuterm all can use storage platform API to visit, and in the method not for file applies special rules, so it comes work for application developer has proposed a kind of clearer programming model.
3. storage platform is all passed through in all name space operations, and is therefore synchronously processed. Be important to note that the attribute of deep layer upgrading (dispersing of file content) still occurs asynchronously, but simultaneously operating provides more predictable environment for user and application program.
As the result of this model, in the present embodiment, may not provide search capability in the data source that is integrated into the storage of storage platform data. This comprises the file on removable media, remote server and the local disk. Provide as residing in the sync adapters of the acting server project (metadata of shortcut+upgrading) in the project demonstration storage platform in the foreign file system. The acting server project does not attempt to imitate file according to name space level or the security of data source.
The passing that symmetry that name space between file and non-file content and programming model are realized provides application program to be used in time will be from the content transplanting of the file system better path to the more structurized project of storage platform data storage. By the machine docuterm type in the storage of storage platform data is provided, application program can be transferred to storage platform with file data, still can handle this data by Win32 simultaneously. Finally, application program may be transplanted to storage platform API fully, and according to storage platform items but not file comes its data of structuring.
2. data are stored feature
For the interoperability grade of expectation is provided, in one embodiment, realize the following characteristics of storage platform data storage.
A) non-volume
The storage of storage platform data is not presented as independent file system volume. Storage platform takes full advantage of the FILESTREAM of direct main memory on NTFS. Thus, not to coiling the change of upper form, eliminated thus the demand that storage platform is presented as new file system in the volume level.
On the contrary, data storages (name space) roll up to construct corresponding to NTFS. The database and the FILESTREAM that retreat this part of name space are positioned on the NTFS volume that is associated with the storage of storage platform data. Data storage corresponding to system volume also is provided.
B) storage organization
The most handy example of structure of storage illustrates. As an example, the directory tree on the system volume of the machine of consideration HomeMachine by name, as shown in figure 16. According to file system interoperability feature of the present invention, corresponding to c: drive, exist by the UNC that for example is called " WiinFSOnC " and share the storage platform data storage that represents to Win32 API. This so that the storage of the data that are associated can visit by following UNC name:
\\HomeMachine\WinFSOnC。
In this embodiment, file and/or file need to be transplanted to storage platform from the NTFS explicitly. Therefore, if the user wishes My Documents file is moved to all extra search/characteristic of divisions that the storage platform data store to utilize to be provided by storage platform, then this hierarchy will be as shown in figure 17. Be important to note that these files are actual mobile in this example. Another point is noted that name space moves in the storage platform, and actual stream is by RNTO FILESTREAM, at the suitable pointer of storage platform inner hanging hook.
C) do not transplant All Files
Corresponding to user data or to need the file of the search that storage platform provides/classification be the candidate of being transplanted to the storage of storage platform data. Preferably, be the application compatibility problem of restriction with storage platform, in the context of Microsoft Windows operating system, this group file of being transplanted to storage platform of the present invention is limited to the Desktop.ini file in file, Internet Explorer (IE) Favorites, IE History and the Documents and Settings catalogue in the MyDocuments file. Preferably, it is unallowed transplanting the Windows system file.
D) the NTFS name space of storage platform file is accessed
Among the described embodiment, the file that storage platform is transplanted in expectation can not visit by the NTFS name space, even actual file stream stores with NTFS herein. In this way, avoided realizing that by multithreading the complexity that causes locks and safety issue.
E) name space/drive letter of expectation
To the access of the file in the storage platform and file be by<machine name<the WinFS shared name UNC name of form provides. For the application class of demand motive device letter for operation, drive letter can be mapped to this UNC name.
I. storage platform API
As mentioned above, storage platform comprises API, and it makes application program can access feature and the ability of storage platform discussed above, and access is stored in the project in the data storage. This section is described the embodiment of the storage platform API of storage platform of the present invention.
Figure 19 illustrates the basic architecture by the storage platform API of present embodiment. Storage platform API uses SQL client computer 1900 and local datastore 302 dialogues, and also uses SQL client computer 1900 and long-range number storage (such as data storage 340) dialogue. Local storage also can be used DQP (Distributed Query Processing device) or talk with by above-mentioned storage platform synchronous service (" Sync ") and remote data storage 340. Storage platform API 322 also takes on the bridger API of data storage notice, the subscript of application program is sent to notification engine 332, and as mentioned above notice is routed to application program (such as application program 350a, 350b or 350c). In one embodiment, storage platform API 322 also defines restricted " supplier " architecture, so that it can access the data among Microsoft Exchange and the AD.
1. summarize
The mechanism of data access of the present embodiment of storage platform API of the present invention has solved four fields: inquiry, navigation, action, event.
Inquiry
In one embodiment, the storage of storage platform data realizes at relevant database engine 3 14; As a result, the complete expressivity ability of sql like language is intrinsic in storage platform. Provide the simplified model that is used for the inquiry storage than the advanced inquiry object, but the complete expressivity ability of sealed storage not.
Navigation
The storage platform data model has made up a kind of abundant, extendible type system in that underlying database is abstract. For the developer, the storage platform data are nets of project. Storage platform API allows to navigate between project by filtration, relation, file etc. This is than more senior abstract of basic SQL inquiry; Simultaneously, it allows the CLR coding mode of being familiar with is used abundant filtration and homing capability.
Action
Storage platform API represents action-Create public on all items (establishment), Delete (deletion), Update (renewal); These are presented as the method on the object. In addition, territory dedicated action such as SendMail (transmission mail), CheckFreeBusy (checking idle and busy) also can be used as method. The API framework can be used for by the definition additional move pattern of adding the good definition of value with ISV.
Event
Data in the storage platform are dynamic. Make a response when the data of application program in storage are changed, API has represented abundant event, subscription and notification capabilities to the developer.
2. name and scope
It is useful distinguishing between name space and name. As commonly used, the term name space refers to the set of all available in a certain system names. System can be set of XML pattern, program, web, all ftp websites (and content) etc. Name is to distribute process or the algorithm of unique name for all interested clauses and subclauses in name space. Thus, name is interested, because expectation relates to given unit in the name space without the qi free burial ground for the destitute. Thus, as used herein, term " name space " refers to the set of all available names in all storage platform examples in the universe. Project is the named entity in the storage platform name space. The UNC naming convention is used for guaranteeing the project uniqueness of name. Each project in the universe in each storage platform storage can be come addressing by the UNC name.
Maximum tissue rank in the storage platform name space is that service-it only is an example of storage platform. The next stage of tissue is volume. Volume is the maximum anonymous container of project. Each storage platform example comprises one or more volumes. In volume is project. Project is the data atom in the storage platform.
Data in the real world are almost always organized according to significant a certain system in given field. Under all such Data Organizing Models is the concept that the universe of data is divided into the name group. As mentioned above, this concept is come modeling by the concept of file in storage platform. File is a kind of project of specific type; Two types file is arranged: include file folder and virtual folder.
With reference to Figure 18, the include file folder is a project, and it comprises the relation of holding with other project, and of equal value with the file system folder of common concept. Each project " comprises " at least one include file folder.
Virtual folder is the more dynamic approach of organizing project set; It only is that the name-this group project of given one group of project is that explicitly is enumerated or by the inquiry appointment. Virtual folder itself is project, and can be considered to represent that one group (non-holding) with one group of project concerns.
Sometimes, need to carry out modeling to the tightr concept that comprises; For example, be embedded in the email message Word document in some sense ratio be tied to more closely its container such as the file that is included in the file. This concept is to be expressed by the concept of the project of embedding. The embedding project has a kind of special relation, and it quotes another project; The project of quoting can only be tied to and comprise project or only handle in comprising the context of project.
At last, storage platform provides the mode of the concept conduct of classification to the classification of project and element. Each project in the storage platform or element can have one or more classifications associated with it. Classification just is tagged to the name on project/element in essence. This name can be used in search. The storage platform data model allows the hierarchy of definition classification, thereby allows the tree-shaped classification of data.
A kind of name without qi justice of project is triple: and (<Service name 〉,<volume ID 〉,<item id 〉). Some project (especially file and virtual folder) is the set of other project. This causes a kind of identification item purpose substitute mode: and (<Service name 〉,<volume ID 〉,<item Path 〉).
The storage platform name comprises the concept of service context: service context is to be mapped to (<file label 〉,<path 〉) right name. It has identified a project or one group of project-for example, file, virtual folder etc. For service context, the UNC name that is used for any project of storage platform name space becomes:
<Service name<service context<item Path
User creatable and deletion service context. Equally, the root in each volume has predefined context: file label $.
The project context returns to the scope that the result of project of survival in specified path inquires about (for example, search operation) calmly by restriction.
3. storage platform API assembly
Figure 20 schematically shows the various assemblies according to the storage platform API of present embodiment of the present invention. Storage platform API comprises following assembly: (1) data class 2002, and it represents storage platform element and item types; (2) the Runtime Library framework 2004, the persistence of its management object and the class 2006 that provides support; And (3) instrument 2008, it is used for generating the CLR class from the storage platform pattern.
According to one aspect of the present invention, when design, the code 2012 of submitting schema document 2010 to and being used for the territory method to instrument 2008 when pattern author designs to one group of storage platform API. These instruments generate the storage class definition 2016 of client-side data class 2002 and memory module 2014 and this pattern. " territory " refers to specific pattern; For example, talk about the territory method etc. of the class in the contact schema. These data class 2002 are cooperated with storage platform API Runtime Library framework class 2006 by application developer in when operation and make to handle the storage platform data.
For the each side of storage platform API of the present invention is described, some examples have been presented based on the example contacts pattern. The diagram of this exemplary patterns is illustrated in shown in Figure 21 A and the 21B.
4. data class
According to an aspect of of the present present invention, each project, extension and the element type in the storage of storage platform data and each pass tie up to has corresponding class among the storage platform API. Haply, the field mappings of type is to the field of class. Each project, extension and element in the storage platform can be used as the object of the corresponding class among the storage platform API. The developer can inquire about, creates, revises or delete these objects.
Storage platform comprises one group of originate mode. Each mode-definition one group of project and element type, and one group of relation. Below be for an embodiment from the algorithm of these pattern solid generation data class:
For each Mode S:
For each the project I among the S, generate the class of System.Storage.S.I by name. Such has following member:
The constructed fuction of heavy duty comprises allowing to specify the original document folder of new projects and the constructed fuction of name.
The attribute of each field among the I. If field is many-valued, then attribute will be the set of the element type of correspondence.
Find out the static method method of (for example, by name " FindAll ") of heavy duty of a plurality of projects of matching filter.
Find out the static method method of (for example, by name " FindOne ") of heavy duty of the single project of matching filter.
Given its ID finds out the static method (for example, the method for " FindByID " by name) of project.
Given its found out the static method (for example, the method for " FindByName " by name) of project with respect to the contextual name of project.
Preservation is to the method (for example, the method for " Update " by name) of the change of project.
The static Create method of the heavy duty of the new example of establishment project. These methods allow the in every way original document folder of technical routine.
For each the element E among the S, generate the class of System.Storage.S.E by name. Such has following member:
The attribute of each field among the E. If field is many-valued, then attribute will be the set of the element type of correspondence.
For each the element E among the S, generate the class of System.Storage.S.ECollection by name. Such follows the general .NET framework policy for the collection class of strong typing. For the element type based on relation, such also will comprise following member:
Find out the method for heavy duty of a plurality of objects that coupling implicitly comprises the project of the filter that wherein is integrated into the project that occurs in the source case. Heavy duty comprises some method (for example, the method for " FindAllTargetItems " by name) that allows based on the filtration of project subtype.
Find out the method for heavy duty that coupling implicitly comprises the single item objects of the filter that wherein is integrated into the project that occurs in the source case. Heavy duty comprises some method (for example, the method for " FindOneTargetItem " by name) that permission is filtered based on project subtype.
Find out the method method of (for example, by name " FindAllRelationships ") of heavy duty of object that coupling implicitly comprises the nested element type of the filter that wherein is integrated into the project that occurs in the source case.
Find out the method (for example, by name " FindAllRelationshipsForTarget " method) of heavy duty of object that coupling implicitly comprises the nested element type of the filter that wherein is integrated into the project that occurs in the source case.
Find out the method method of (for example, by name " FindOneRelationship ") of heavy duty of single object that coupling implicitly comprises the nested element type of the filter that wherein is integrated into the project that occurs in the source case.
Find out the method method of (for example, by name " FindOneRelationshipForTarget ") of heavy duty of single object that coupling implicitly comprises the nested element type of the filter that wherein is integrated into the project that occurs in the source case.
For the R that concerns among the S, generate the class of System.Storage.S.R by name. Such has one or two subclass, depends on that one or two relationship roles have specified end-points field.
Also can be that each extension that creates creates class in this way.
Data class is present in System.Storage.<schema name〉in the name space, wherein<and schema name〉be the name-such as Contacts (contact person), Files (file) etc. of corresponding pattern. For example, corresponding to all classes of contact schema in the System.Storage.Contacts name space.
As example, with reference to figure 21A and 21B, contact schema cause being included in the System.Storage.Contact name space with lower class:
Project: Item, Folder, WellKnownFolder, LocalMachineDataFolder, UserDataFolder, Principal, Service, GroupService, PersonService, PresenceService, ContactService, ADService, Person, User, Group, Organization, HouseHold
Element: NestedElementBase, NestedElement, IdentityKey, SecurityID, EAddress, ContactEAddress, TelephoneNumber, SMTPEAddress, InstantMessagingAddress, Template, TemplateRelationship, LocationRelationship, FamilyEventLocationRelationship, HouseHoldLocationRelationship, RoleOccupancy, EmployeeData, GroupMemberShip, OrganizationLocationRelationship, HouseHoldMemberData, FamilyData, SpouseData, ChildData
As another example, illustrate as follows with XML such as the detailed construction of the Person type that in contact schema, defines:
<Type Name=″Person″MajorVersion=″1″MinorVersion=″0″
    ExtendsType=″Core.Principal″ExtendsVersion=″1″>
    <Fjeld Name=″Birthdate″Type=″the storage platformTypes.datetime″
      Nullable=″true″TypeM ajorVersion=″1″/>
    <Field Name=″Gender″Type=″Base.CategoryRef″
      Nullable=″true″MultiValued=″false″
      TypeMajorVersion=″1″/>
    <Field Name=″PersonalNames″Type=″Contact.FullName″
      Nullable=″true″MultiValued=″true″
      TypeM aiorVersion=″1″/>
    <Field Name=″PersonalEAddresses″Type=″Core.EAddress″
      Nullable=″true″MultiValued=″true″
      TypeM ajorVersion=″1″/>
    <Field Name=″PersonalPostalAddresses″
      Type=″Core.PostalAddress″Nullable=″true″
      MultiValued=″true″TypeMajorVersion=″1″/>
    <Field Name=″PersonalPicture″Type=″the storage platfornTypes.image″
      Nullable=″true″TypeMajorVersion=″1″/>
    <Field Name=″Notes″Type=″Core.RichText″Nullable=″true″
    MultiValued=″true″TypeMajorVersion=″1″/>
    <Field Name=″Profession″Type=″Base.CategoryRef″
      Nullable=″true″MultiValued=″true″
      TypeMajorVersion=″1″/>
    <Field Name=″DataSource″Type=″Base.ldentityKey″
      Nullable=″true″MultiValued=″true″
      TypeMajorVersion=″1″/>
    <Field Name=″ExpirationDate″Type=″the storage platformTypes.datetime″
      Nullable=″true″TypeMajorVersion=″1″/>
    <Field Name=″HasAllAddressBookData″Type=″the storage platformTypes.bit″
      Nullable=″true″TypeMajorVersion=″1″/>
    <Field Name=″EmployeeOf″Type=″Contact.EmployeeData″
      Nullable=″true″MultiValued=″true″
      TypeMajorVersion=″1″/>
</Type>
The type causes with lower class (only showing publicly-owned member):
partial public class Person:
    System.Storage.Core.Principal,
    System.Windows.Data.IDataUnit
{
    public System.Data.SqITypes.SqlDateTime
      Birthdate{get;set;}
    public System.Storage.Base.CategoryRef
      Gender{get;set:}
    public System.Storage.Contact.FullNameCollection
      PersonalNames{get;}
    public System.Storage.Core.EAddressCollection
      PersonalEAddresses{get;}
    public System.Storage.Core.PostalAddressCollection
      PersonalPostalAddresses{get;}
    public System.Data.SqlTypes.SqlBinary
      PersonalPicture{get;set;}
    public System.Storage.Core.RichTextCollection
      Notes{get;}
    public System.Storage.Base.CategoryRefCollection
      Profession{get;}
    public System.Storage.Base.IdentityKeyCollection
      DataSource{get;}
    public System.Data.SqlTypes.SqlDateTime
      Expiration Date{get;set;}
    public System.Data.SqlTypes.SqlBoolean
      HasAllAddressBookData{get;set;}
    public System.Storage.Contact.EmployeeDataCollection
      EmployeeOf{get;}
    public Person();
    public Person(System.Storage.Base.Folder folder,string name);
    public static new System.Storage.FindResult
      FindAll(System.Storage.ItemStore store);
    public static new System.Storage.FindResult
      FindAll(
        System.Storage.ItemStore store,
        string filter);
    public static new Person
      FindOne(
        System.Storage.itemStore store,
        string filter);
    public new event
      System.Windows.Data.PropertyChangedEventHandler
        PropertyChangedHandler;
    public static new Person
      FindByID(
        System.Storage.ItemStore store,
        long item_key);
}
As another example, the detailed construction of the TelephoneNumber type that defines in the contact schema illustrates as follows with XML:
<Type Name=″TelephoneNumber″ExtendsType=″Core.EAddress″
    MajorVersion=″1″MinorVersion=″0″ExtendsVersion=″1″>
    <Field Name=″CountryCode″Type=″the storage platformTypes.nvarchar(50)″
      Nullable=″true″MultiValued=″false″
      TypeMajorVersion=″1″/>
    <Field Name=″AreaCode″Type=″the storage platformTypes.nvarchar(256)″
      Nullable=″true″TypeMajorVersion=″1″/>
    <Field Name=″Number″Type=″the storage platformTypes.nvarchar(256)″
      Nullable=″true″TypeMajorVersion=″1″/>
    <Field Name=″Extension″Type=″the storage platformTypes.nvarchar(256)″
      Nullable=″true″TypeMajorVersion=″1″/>
    <Field Name=″PIN″Type=″the storage platformTypes.nvarchar(50)″
      Nullable=″true″TypeMajorVersion=″1″/>
</Type>
The type causes with lower class (only showing publicly-owned member):
partial public class TelephoneNumber:
    System.Storage.Core.EAddress,
    System.Windows.Data.IDataUnit
{
    public System.Data.SqlTypes.SqlString CountryCode
      {get;set;}
    public System.Data.SqlTypes.SqlString AreaCode
      {get;set;}
    public System.Data.SqlTypes.SqlString Number
      {get;set;}
    public System.Data.SqlTypes.SqlString Extension
      {get;set;}
    public System.Data.SqlTypes.SqlString PIN
      {get;set;}
The hierarchy of the class that obtains from given pattern has directly reflected the hierarchy this pattern. As an example, consider the Item type (seeing Figure 21 A and 21B) that defines in the contact schema. Class hierarchy corresponding to the type in storage platform API is as follows:
Object
  DataClass
    ElementBase
      RootItemBase
        Item
          Principal
            Group
            Household
            Organization
            Person
                User
            Service
                PresenceService
                ContactService
                     ADService
       RootNestedBase
(element class)
Another pattern namely allows the pattern using family/application program of all audio/video medias (audio file of disconnection, audio frequency CD, DVD, home videos etc.) in the expression system can store, organize, search for and handle different types of audio/video media. Basic media document pattern is enough generally representing any media, and the expansion of this basic model is configured to audio and video medium separates the processing domain special attribute. This pattern and many other patterns are contemplated to be directly or indirectly and operate under core schema.
5. framework when moving
Basic storage platform API programming model is object persistency. Application program is carried out search in storage, and in storage the object of key registration certificate. Then the object of application modification retrieval or create new object makes its change be transmitted to storage. This process is managed by ItemContext (project context) object. Search uses ItemSearcher (project search device) object to carry out, and Search Results can visit by FindResult (searching result) object.
Framework class when a) moving
According to another invention aspect of the present invention, framework realizes that a plurality of classes come the operation of supported data class during operation. These framework classes are that data class has defined one group of public behavior, and provide basic programming model together with data class for storage platform API. Class during operation in the framework belongs to the System.Storage name space. In the present embodiment, the framework class comprises following main class: ItemContext, ItemSearcher and FindResult. Other less important class, enumerated value and representative also can be provided.
(1)ItemContext
ItemContext object (i) expression application program is wished one group of item domains of searching for, (ii) represent the status information of the state of the data from storage platform, retrieved for each object maintenance, and (iii) management use when mutual with storage platform affairs and can with any file system of storage platform interoperability.
As the object persistency engine, ItemContext provides following service:
1. the data Deserializing that will read from storage becomes object.
2. service object identity (same target is used for representing given project, and no matter this project is included in how many times in the Query Result).
3. tracing object state.
ItemContext also carries out a plurality of services unique to storage platform:
1. generate and carry out Long-term Preservation and change the more new element operation of required storage platform.
2. create the seamless navigation and the permission retrieval from the multiple domain search that allow adduction relationship and will revise the connection to a plurality of data storages required with the object of being connected.
3. guarantee that the project of supporting document when the change of object indicates to preserve this project is correctly upgraded.
4. the affairs that a plurality of storage platforms connect are striden in management, and the file system that management is processed in the affairs mode when renewal is stored in data in the project of supporting document and document flow attribute.
5. carry out establishment that the attribute of the project of the storage platform relation is semantic, supporting document and stream type takes into account, copy, mobile and deletion action.
Appendix A provides the source code of listing the ItemContext class according to an one embodiment.
(2)ItemSearcher
The support of ItemSearcher class is simply searched for, and this search is returned the stream of whole Item object, Item object or from the stream of the value of Item object projection. ItemSearcher has encapsulated following all public Core Features: the parameterized filter of answering the concept of target type and being applied to this target type. ItemSearcher also allows precompile or prepares searcher, as the optimization when carrying out same operation with polytype. Appendix B provides the source code of listing ItemSearcher class and some classes that are closely related according to an one embodiment.
(a) target type
The search target type arranges when structure ItemSearcher. Target type is that be mapped to can be by the CLR type of the scope of data storing queries. Particularly, it is to be mapped to project, relation and to concern expansion type and the CLR type of medelling view.
When using ItemContext.GetSearcher method search device, the target type of searcher is designated as parameter. (for example, in the time of Person.GetSearcher), target type is project, relation or extension type when call static GetSeacher method in project, relation or extension type.
The search expression formula that provides among the ItemSearcher (for example, Search Filter and by query manipulation, or projection definition) is always with respect to the search target type. But the attribute of these expression formula intended target types (attribute that comprises nested element), and can be assigned to connection such as the described relation in other places and extension.
The search target type can be passed through read only attribute (for example, Item.Searcher.Type attribute) and obtain.
(b) filter
ItemSearcher comprises the attribute (for example, the attribute of by name " Filters " is as the set of SearchExpression object) of given filter device, this filter definition the filter that uses in the search. All filters in the set accord with making up with disjunction operation when carrying out search. Filter can comprise parameter and quote. Parameter value comes appointment by the Parameters attribute.
(c) prepare search
May only repeat in the situation of same search with a parameter change, can or prepare search and improve some performance by precompile. This is that (for example, the method for the Find (searching) of one or more projects is returned in preparation, may be called " PrepareFind " with one group of preparation method on the ItemSearcher; And the method for preparing to return the Find of projection, may be called " PrepareProject ") realize. For example:
ItemSearcher searcher=…;
PreparedFind pf=searcher.PrepareFind();
result=pf.FindAll();
result=pf.FindAll();
(d) search option
There are a plurality of options that can be applicable to simple search. These can specify and be passed to the Find method in for example FindOptions (searching option) object. For example:
ItemSearcher searcher=Person.GetSearcher(context);
FindOptions options=new FindOptions();
options.MaxResults=10;
options.SortOptions.Add(“PersonalNames.Surname”,SortOrder.Ascending);
FindResult result=searcher.FindAll(options);
As a kind of facility, also sort options can be directly passed to the Find method:
ItemSearcher searcher=Person.GetSearcher(context);
FindResult result=searcher.FindAll(
    new SortOption(“PersonalNames.Surname”,SortOrder.Ascending));
Whether DelayLoad (delay load) option determines whether to load as a result the time when search the value of large binary attribute, perhaps loading is deferred to after they are cited. MaxResults (maximum result) option has been determined the result's that returns maximum quantity. This is equivalent to and specifies TOP in SQL query. It uses in conjunction with ordering usually.
The sequence of SortOption (sort options) object can be designated (for example, using the FindOptions.SortOptions attribute). Search Results will sort as specified by first SortOption object, and then as by second ordering that the SortOption object is specified, the rest may be inferred. SortOption has specified indication will be used for the search expression formula of the attribute that sorts. One of below expression formula has been specified:
1. the scalar attribute in the search target type;
2. can be by the scalar attribute of traversal single-value attribute from the nested element that the search target type arrives; Perhaps
3. the result's (for example, Max is applied to pass through traversal multi-valued attribute or the scalar attribute of relation from the nested element that the search target type arrives) who has the set function of effective independent variable.
For example, suppose that the search target type is System.Storage.Contact.Person.
1. " Birthdate "-effectively, Birthdate is the scalar attribute of Person type;
2. " PersonalNames.Surname "-invalid, PersonalNames is multi-valued attribute, and does not use any set function;
3. " Count (PersonalNames) "-effectively, the counting of PersonalNames;
4. " Case (Contact.MemberOfHousehold) .Household.HouseholdEAddresses.Sta rtDate "-invalid, use relation and multi-valued attribute, and do not had set function.
5. " Max (Cast (Contact.MemberOfHousehold) .Household.HouseholdEAddress es.StartDate) "-effectively, nearest household electronic address from date.
(3) project result stream (" FindResult ")
ItemSearcher (for example, by the FindAll method) returns the object (for example, " FindResult " object) that can be used for accessing the object that is returned by search. Appendix C provides the source code of listing FindResult class and some classes that are closely related according to an one embodiment.
There are two kinds of diverse ways that are used for obtaining from the FindResult object result: use the reader mode by IObjectReader (object reader interface) (and IAsyncObjectReader (asynchronous object reader interface)) definition, and the enumerator pattern that uses IEnumerable (can enumerate interface) and IEnumerator (enumerator interface) definition. Enumerator pattern is the standard among the CLR, and supports the language construct such as foreach such as C#. For example:
ItemSearcher searcher=Person.GetSearcher(context);
searcher.Filters.Add(“PersonalNames.Surname=‘Smith);
FindResult result=searcher.FindAll();
foreach(Person person in result)…;
Support reader mode, because it allows to come more effectively result by eliminating in some cases data trnascription. For example:
ItemSearcher searcher=Person.GetSearcher(context);
searcher.Filters.Add(“PersonalNames.SurName=‘Smith’”);
FindResult result=searcher.FindAll();
while(result.Read())
{
    Person person=(Person)result.Current;
    …
}
In addition, reader mode is supported asynchronous operation:
ItemSearcher searcher=Person.GetSearcher(context);
searcher.Filters.Add(“PersonalNames.SurName=‘Smith’”);
FindResult result=searcher.FindAll();
IAysncResult asyncResult=result.BeginRead(new AsyncCallback(MyCallback));
void MyCallback(IAsyncResult asyncResult)
{
    if(result.EndRead(asyncResult))
    {
      Person person=(Person)result.Current;
      …
    }
}
In the present embodiment, FindResult should be closed when it no longer needs. This can be by calling Close (closing) method or using such as language construct such as the employed statements of C# and finish. For example:
ItemSearcher searcher=Person.GetSearcher(context);
searcher.Filters.Add(“PersonalNames.SurName=‘Smith’”);
using(FindResult result=searcher.FindAll())
{
    while(result.Read())
    {
      Person person=(Person)result.Current;
      …
    }
}
B) operation in operation the time framework
Framework when Figure 22 shows operation in the operation. The following operation of framework during this operation:
1. application program 350a, 350b or 350c are tied to the project in the storage platform.
2. framework 2004 creates ItemContext (project context) object 2202 corresponding to the project of binding, and it is returned to application program.
3. application program submits to Find to obtain project set at this ItemContext; Return to be integrated into conceptive be object diagram 2204 (because relation).
4. application program change, deletion and data inserting.
5. application program is preserved change by calling Update () method.
C) public programming mode
This section provides storage platform API framework class how to can be used in the various examples of the project in the manipulation data storage.
(1) opens and closes the ItemContext object
Application program for example will be used for storing mutual ItemContext object with data by calling static ItemContext.Open method and providing one or more paths of the item domains that sign will be associated with ItemContext to obtain it. Item domains is used the scope of the performed search of ItemContext surely, so that only the territory project will be searched for the project that is included in this project. Example is as follows:
Open at local computer and have the ItemContext that the DefaultStore storage platform is shared
ItemContext ic=ItemContext.Open()
Open and have the ItemContext that given storage platform is shared
ItemContext ic=ItemContext.Open(@″\\myserver1\DefaultStore″);
Open the ItemContext with the project under storage platform is shared
ItemContext ic=ItemContext.Open(@″\\myserver1\WinFSSpecs\api\m6″);
Open the ItemContext with a plurality of item domains
ItemContext ic=ItemContext.Open(@″\\myserver1\My Documents″,
                            @″\\jane1\My Documents″,
                            @″\\jane2\My Documents″);
When no longer needing ItemContext, it must be closed.
Explicitly is closed ItemContext
ItemContext ic=ItemContext.Open();
ic.Close();
Close with the statement with ItemContext
using(ItemContext ic=ItemContext.Open())
{
    …;
}
(2) object search
According to another aspect of the present invention, storage platform API provide so that the application programmer can based on data the various attributes of project in the storage, form the interrogation model of the simplification of inquiry in the mode that the details of the query language of application programmer and underlying database engine is isolated.
Search was carried out in the territory of appointment when application program can be opened ItemContext across the ItemSearcher object that use is returned by the ItemContext.GetSearcher method. Search Results uses the FindResult object to visit. Suppose the following statement to following example:
ItemContext ic=…;
ItemSearcher searcher=null;
FindResult result=null;
Item item=null;
Relationship relationship=null;
ItemExtension itemExtension=null;
The basic search pattern relates to uses the ItemSearcher object that retrieves from ItemContext by calling GetSearcher (acquisition searcher) method.
Search for all items of given type
searcher=ic.GetSearcher(typeof(Person));
result=searcher.FindAll();
Foreach (the Person p among the result)
The project of the given type of filter is satisfied in search
searcher=ic.GetSearcher(typeof(Person));
searcher.Filters.Add(″PersonalNames.Surname=′Smith′″);
result=searcher.FindAll();
Foreach (the Person p among the result)
Use the parameter in the filter string
searcher=ic.GetSearcher(typeof(Person));
searcher.Filters.Add(″Birthdate<@Date″);
searcher.Parameters[″Date″]=someDate;
result=searcher.FindAll();
Foreach (the Person p among the result)
Search for given type and satisfy the relation of filter
searcher=ic.GetSearcher(typeof(EmployeeEmployer));
searcher.Filters.Add(″StartDate<=@Date AND(EndDate>=@Date OR isnull(EndDate))″);
searcher.Parameters[″Date″]=someDate;
result=searcher.FindAll();
Foreach (the EmployeeEmployer ee among the result)
Search has given type and satisfies the project of the relation of filter
searcher=ic.GetSearcher(typeof(Folder));
Searcher.Filters.Add (" MemberRelationships.Name like ' A% ' "); ∥ sees [ApiRel]
result=searcher.FindAli();
Foreach (the Folder f among the result)
Search for given type and satisfy the extension of filter
searcher=ic.GetSearcher(typeof(ShellExtension));
searcher.Filters.Add(″Keywords.Value=′Foo′″);
result=searcher.FindAll();
Foreach (the ShellExtension se among the result)
Search has given type and satisfies the project of the extension of filter
searcher=ic.GetSearcher(typeof(Person));
Searcher.Filters.Add (" Extensions.Cast (@Type) .Keywords.Value=' Foo ' "); ∥ sees [ApiExt]
searcher.Parameters[″Type″]=typeof(ShellExtension);
result=searcher.FindAll();
Foreach (the Person p among the result)
(a) search option
Can when carrying out search, specify variety of option, comprise ordering, postpone to load and the restriction number of results.
Rank search result
searcher=ic.GetSearcher(typeof(Person));
searcher.Filters.Add(″PersonalNames.Surname=′Smith′″);
SearchOptions options=new SearchOptions();
options.SortOptions.Add(new SortOption(″Birthdate″,SortOrder.Ascending));
result=searcher.FindAll(options);
Foreach (the Person p among the result)
∥ has shortcut to use
searcher=ic.Getsearcher(typeof(Person));
searcher.Filters.Add(″PersonalNames.Surname=′Smith′″);
result=searcher.FindAll(new SortOption(″Birthdate″,SortOrder.Ascending));
Foreach (the Person p among the result)
The restriction result count
searcher=ic.GetSearcher(typeof(Person));
searcher.Filters.Add(″PersonalNames.Sumame=′Smith′″);
SearchOptions options=new SearchOptions();
options.MaxResults=10;
result=searcher.FindAll(options);
Foreach (the Person p among the result)
(b) FindOne and FindOnly
Sometimes it is useful only retrieving first result, especially when specifying ranking criteria. In addition, expect that some search only returns an object, and do not expect that it does not return any object.
Search for an object
searcher=ic.GetSearcher(typeof(Person));
searcher.Filters.Add(″PersonalNames.Surname=’Smith’″);
Person p=searcher.FindOne(new SortOption(″Birthdate″SortOrder.Ascending))as Person;
if(p!=null)…;
The single object that the search expectation always exists
searcher=ic.GetSearcher(typeof(Person));
searcher.Filters.Add(″PersonalNames[Surname=′Smith’AND Givenname’John’]″);
try
{
  Person p=searcher.FindOnly();
  …;
  }
  catch(Exception e)
  {
  …;
  }
(c) shortcut on the Searching I temContext
Also have on the ItemContext so that simple search is easy to some shortcuts as far as possible.
Use the search of ItemContext.FindAll shortcut
result=ic.FindAll(typeof(Person),″PersonalNames.Surname=′Smith′″);
Foreach (the Person p among the result)
Use the search of Item.Context.FindOne shortcut Person p=ic.FindOne(typeof(Person),″PersonalNames.Surname=′Smith′″)as Person;
(d) according to ID or path searching
In addition, can come search terms, relation and extension by its id is provided. Project also can be retrieved according to the path.
Given id obtains project, relation and extension
item=ic.FindItemByld(iid);
relationship=ic.FindRelationshipByld(iid,rid);
itemExtension=ic.FindItemExtensionByld(iid,eid);
Given path obtains project
∥ is individual domain only
item=ic.FindItemByPath(@″temp\foo.txt″);
The single or multiple territories of ∥
result=ic.FindAllItemsByPath(@″temp\foo.txt″);
Foreach (Item 1 among the result)
(e) GetSearcher pattern
In storage platform API, there are many expectations to be provided in the context of another object or many places of carrying out assistant's method of search with specific parameter. The GetSearcher pattern allows these situations. Many GerSearcher methods are arranged in API. Its each return the ItemSearcher that is configured in advance carry out given search. For example:
searcher=itemContext.GetSearcher();
searcher=Person.GetSearcher();
searcher=EmployeeEmployer.GetSearcherGivenEmployer(organization);
searcher=person.GetSearcherForReports();
Can before carrying out search, add other filter:
searcher=person.GetSearcherForReports();
searcher.Filters.Add(″PersonalNames.Surname=’Smith’″);
Can select how to wish the result:
FindResult findResult=searcher.FindAll();
Person person=searcher.FindOne();
(3) updated stored
In case retrieved object by search, it can be by the required modification of application program. Also can create new object and be associated with existing object. In case application program has been made the institute that forms logical groups and changed, application call ItemContext.Update changes Long-term Preservation in storage with these. According to the another aspect of storage platform API of the present invention, API collects the change of project being made by application program, then they is organized into the required correct renewal of database engine (or storage engines of any kind) that realizes the data storage on it. This and leaves the complexity of data storage update for API so that the application programmer can make a change the project in the memory.
Preservation is to the change of single project
Person p=ic.FindItemByld(pid)as Person;
p.DisplayName=″foo″;
p.TelephoneNumbers.Add(new TelephoneNumber(″425-555-1234″));
ic.Update();
Preservation is to the change of a plurality of projects
Household h1=ic.FindItemByld(hid1)as Household;
Household h2=ic.FindItemByld(hid2)as Household;
Person p =ic.FindItemByld(pid)as Person;
h1.MemberRelationships.Remove(p);
h2.MemberRelationships.Add(p);
ic.Update();
Create new projects
Folder f=ic.FindItemByld(fid)as Folder;
Person p=new Person();
p.DisplayName=″foo″;
f.Relationships.Add(new FolderMember(p,″foo″));
ic.Update();
∥ or use shortcut
Folder f=ic.FindItemByld(fid)as Folder;
Person p=new Person();
p.DisplayName=″foo″;
f.MemberRelationships.Add(p,″foo″);
ic.Update();
Deletion relation (and possible destination item)
searcher=ic.GetSearcher(typeof(FolderMember));
searcher.Filters.Add(″SourceItemId=@fid″);
searcher.Filters.Add(″TargetItemId=@pid″);
searcher.Parameters.Add(″fid″,fid);
searcher.Parameters.Add(″pid″,pid);
Foreach (the FolderMember fm among the searcher.FindAll ()) fm.MarkForDelete ();
ic.Update();
∥ or use shortcut
Folder f=ic.FindItemByld(fid)as Folder;
f.MemberRelationships.Remove(pid);
ic.Update();
Add extension
Item item=ic.FindItemByld(iid);
MyExtension me=new MyExtension();
me.Foo=″bar″;
item.Extensions.Add(me);
ic.Update();
The delete items expansion
searcher=ic.GetSearcher(typeof(MyExtension));
searcher.Filters.Add(″ItemId=@iid″);
searcher.Parameters.Add(″iid″,iid);
Foreach (the MyExtension me among the searcher.FindAll ()) me.MarkForDelete ();
ic.Update();
∥ or use shortcut
Item i=ic.FindItemByld(iid);
i.Extensions.Remove(typeof(MyExtension));
ic.Update();
6. security
With reference to above II.E joint (security), in the present embodiment of storage platform API, the project context have Lung biopsy can be used for retrieving and revise with store in the security strategy that is associated of project. These methods are:
1. GetItemSecurity;
2. SetItemSecurity;
3. GetPathSecurity;
4. SetPathSecurity; And
5. GetEffectiveItemSecurity。
GetItemSecurity and SetItemSecurity provide the mechanism of the explicit ACL that retrieval and modification be associated with project. This ACL is independent of existing path to project, and underway being independent of has this project as the relation of holding of target. This is so that the keeper can be independent of the security that existing path estimating to project goes out project as expected.
GetPathSecurity and SetPathSecurity provide and have been used for retrieving and revising owing to concerning the mechanism that is present in the ACL on the project from holding of another file. This ACL is comprised of from each ancestors' ACL to this project and to the explicit ACL (if providing) in this path the path in considering. Difference between the ACL in this ACL and the last situation is only just underway reservation when the corresponding relation of holding exists of this ACL, and explicit project ACL is independent of any relation of holding to this project.
Can be limited to hereditable and the ACE object special use with the ACL that SetItemSecurity and SetPathSecurity arrange in project. They can not comprise any ACE that is marked as succession.
GetEffectiveItemSecurity retrieves various paths based on the explicit ACL on ACL and the project. This has reflected effective delegated strategy on the given project.
7. the support to concerning
As mentioned above, the data model of storage platform has defined " relation " that the permission project is relative to each other. When the data class of generate pattern, for each relationship type produces with lower class:
1. the class of expression relation itself. Such is derived from the Relationship class, and comprises the member to the relationship type special use.
2. " virtual " collection class of strong typing. Such is derived from VirtualRelationshipCollection (virtual relation set), and allows to create and the deletion relationship example.
This section has been described the support to concerning among the storage platform API.
A) primary relationship type
Storage platform API provides the polytype that forms the basis that concerns API in the System.Storage name space. These types are:
1. the type of foundation of Relationship (relation)-all relation objects
2. the type of foundation of VirtualRelationshipCollection (virtual relation set)-all set of relationship
3. ItemReference (project is quoted), ItemIdReference (item id is quoted), ItemPathReference (item Path is quoted)-expression project reference type; Relation between these types is shown in Figure 11.
(1) Relationship class
public abstract class Relationship:StoreObject
{
∥ creates with default value
    protected Relationship(ItemIDReference targetItemReference);
The ∥ notice concerns that it is added to set of relationship. Object will be inquired to gather and be determined source item, project context etc.
    internalAddedToCollection(virtualRelationshipCollection collection);
The ID of ∥ relation
    public Relationshipld Relationshipld{get;}
The ID of ∥ source item
    public ItemId SourceItemId{get;}
∥ obtains source item
    public Item SourceItem{get;}
∥ quotes destination item
    public ItemIdReference TargetItemReference{get;}
∥ obtains destination item (calling TargetItemReference.GetItem ())
    public Item TargetItem{get;}
∥ determines whether ItemContext has had to the connection in the territory of destination item
∥ (calling TargetItemReference, IsDomainConnected)
    public bool isTargetDomainConnected{get;}
The name of ∥ destination item in name space. This name must close in holding of all source item that to fasten be unique
    public OptionalValue<string>Name{get;set;}
∥ determines that this holds or adduction relationship
    public OptionalValue<bool>IsOwned{get;set;}
}
(2) ItemReference class
It below is the base class of project reference type.
public abstract class ItemReference:NestedElement
{
∥ creates with default value
    protected ItemReference();
∥ returns the project of quoting
    public virtual Item GetItem();
∥ determines whether to have set up to the connection in the territory of the project of quoting
    public virtual bool IsDomainConnected();
}
The ItemReference object can identify the project in the storage that is present in except project is quoted resident storage own. The type of each derivation has specified how to construct and use quoting remote storage. The realization of GetItem and IsDomainConnected comes loading project from required territory with the multiple domain support of ItemContext in the derivation class, and has determined whether to set up the connection to this territory.
(3) ItemIdReference class
The project that below is ItemIdReference class-identify destination item with item id is quoted.
public class ItemIdReference:ItemReference
{
∥ constructs new ItemIdReference with default value
    public ItemIdReference();
The ∥ structure is to the new ItemIdReference of technical routine. The territory that is associated with this project is as finger URL
    public ItemIdReference(Item item);
∥ constructs new ItemIdReference with null locator and given destination item ID
    public ItemIdReference(ItemId itemId);
∥ constructs new ItemIdReference with given finger URL and item id value
    public ItemIdReference(string locator,ItemId itemId);
The ID of ∥ destination item
    public ItemId ItemId{get;set;}
∥ is identified at the path of the WinFS project that comprises destination item in its territory. If be empty, the territory that then comprises this project is unknown.
    public OptionalValue<string>Locator{get;set;}
∥ determines whether to have set up to the connection in the territory of the project of quoting
    public override bool IsDomainConnected();
The project that the ∥ retrieval is quoted
    public override Item GetItem();
}
GetItem and IsDomainConnected come loading project from required territory with the multiple domain support of ItemContext, and have determined whether to set up the connection to this territory. This feature not yet realizes.
(4) ItemPathReference class
The ItemPathReference class is to quote with the project that the path identifies destination item. The code that is used for such is as follows:
public class ItemPathReference:ItemReference
{
∥ quotes with default value structure item Path
    public ItemPathReference();
∥ need not any finger URL but is quoted with given path structure item Path
    public ItemPathReference(string path);
∥ quotes with given finger URL and path configuration item Path
    public ItemPathReference(string locator,string path);
∥ is identified at the path of the WinFS project that comprises destination item in its territory
    public OptionalValue<string>Locator{get;set;}
∥ is with respect to the destination item path by the item domains of finger URL appointment
    public string Path{get;set;}
∥ determines whether to have set up to the connection in the territory of the project of quoting
    public override bool IsDomainConnected();
The project that the ∥ retrieval is quoted
    public override Item GetItem();
}
GetItem and IsDomainConnected come loading project from required territory with the multiple domain support of ItemContext, and have determined whether to set up the connection to this territory.
(5) RelationshipId structure
The RelationshipId construction packages relations I D GUID.
public class RelationshipId
{
∥ generates new relations I D GUID
    public static RelationshipId NewRelationshipId();
∥ initializes with new relations I D GUID
    public RelationshipId();
∥ initializes with the GUID of appointment
    public RelationshipId(Guid Id);
∥ initializes with the string sign of GUID
    public RelationshipId(string id);
∥ returns the string sign of relations I D GUID
    public override string ToString();
∥ converts the System.Guid example to the RelationshipId example
    public static implicit operator RelationshipId(Guid guid);
∥ converts the RelationshipId example to the System.Guid example
    public static implicit operator Guid(RelationshipId relationshipId);
}
This value type of package GUID so that parameter and attribute can be relations I D by strong typing. OptionalValue<RelationshipId〉should when can be sky, use relations I D. Be not demonstrated such as the null value that is provided by System.Guid.Empty. RelationshipId can not construct with null value. When the constructed fuction with acquiescence creates RelationshipId, create new GUID.
(6) VirtualRelationshipCollection class
The VirtualRelationshipCollection class has realized comprising that the object from the data storage adds the new object that is added to set, but does not comprise the set of the relationship object of the object that removes from storage. The object of the specified relationship type of given source item ID is included in this set.
This is the base class for the set of relationship class of each relationship type generation. Such can be used as the type of the attribute in the source item type, so that access and the simple and easy manipulation to the relation of given project to be provided.
The content of enumerating VirtualRelationshipCollection may require to load a large amount of relationship objects from storage. Application program should use Count (counting) attribute to determine to load how many relations before enumerating the content of this set. Add object/remove object from set to set and do not need from storage, to load relation.
For the purpose of efficient, preferably the relation of specified criteria is satisfied in the application program search, but not uses all project relationships of VirtualRelationshipCollection object enumeration. Add relationship object so that when calling ItemContext.Update, in storage, create represented relation to set. From set, remove relationship object so that when calling ItemContext.Update, in storage, delete represented relation. Virtual set comprises correct object set, and no matter whether add/removed relationship object by any other set of relationship on Item.Relationships set or this project.
Following code definition the VirtualRelationshipCollection class:
public abstract class VirtualRelationshipCollection:ICollection
{
The relation of the type that the project that this set-inclusion of ∥ is identified by project itemId has
    protected VirtualRelationshipCollection(ItemContext itemContext,
                        ItemId itemId.
                        Type relationshipType);
The ∥ enumerator will return all objects that retrieve and deduct except the object with state I nserted (inserting) from storage
Any object with state Deleted (deleting) outside the ∥
    public IEnumerator GetEnumerator();
∥ returns the counting of the number of the relationship object that is returned by enumerator. This counting need not to retrieve all objects and can calculate from storage.
    public int Count{get;}
∥ always returns vacation
    public bool Icollection.IsSynchronized(){get;}
∥ always returns this object
    public object ICollection.SyncRoot{get;}
Required object in the ∥ search storage
    public void Refresh();
∥ adds the relation of appointment to set. Object must have state Constructed (constructing) or Removed (removing).
If the ∥ state is Constructed, it is changed to Added (adding). If state is Removed, then it is suitably
∥ changes Retrieved (retrieving) or Modified (revising) into. The source item ID of relation must be with when the construction set
The source item ID that ∥ provides is identical.
    protected void Add(Relationship relationship);
∥ removes the relation of appointment from set. The state of object must be Added, Retrieved or Modified.
If the ∥ Obj State is Added, it will be set as Constructed. If Obj State is Retrieved or Modifieed,
It will be set as Removed ∥. The source item ID of relation must be identical with the source item ID that provides when the construction set.
    protected void Remove(Relationship relationship);
The object that ∥ removes from set
    public ICollection RemovedRelationships{get;}
∥ is added to the object of set
    public ICollection AddedRelationshipas{get;}
The object of ∥ retrieval from storage. This set will be sky, until enumerated VirtualRelationshipCollection
∥ or called (value that obtains this attribute does not cause filling up this set) after the Refresh.
    public ICollection StoredRelationships{get;}
The ∥ anonymous methods
    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) relationship type that generates
When generating class for the storage platform pattern, for each relation statement generates a class. Except the class of expression relation itself, also generate the set of relationship class for each relation. These classes are as the source of relation or the attribute type in the destination item class.
This section has been described the class of using some " prototype " class to generate. That is, the class that generates has been described in the statement of the relation of given appointment. Be important to note that the class of using in the prototype class, type and end points name are the placeholders of the name of appointment in the relation schema, and be not taken on the literal and explain.
(1) relationship type that generates
This section has been described the class that generates for each relationship type. For example:
<Relationship Name=″RelationshipPrototype″BaseType=″Holding″>
    <Source Name=″Head"ItemType=″Foo″/>
    <Target Name=″Tail″ItemType=″Bar″ReferenceType=″ItemIDReference″/>
    <Property Name=″SomeProperty″Type=″WinFSTypes.String″/>
</Relationship>
Given this contextual definition RelationshipPrototype (concerning prototype) will generate RelationshipPrototypeCollection (concerning the prototype set) class. The RelationshipPrototype class represents relation itself. The RelationshipPrototypeCollection class provides the access as the RelationshipPrototype example of source endpoint of project with appointment.
(2) RelationshipPrototype class
This is the related prototype relation object of holding for " HoldingRelationshipPrototype (hold and concern prototype) " by name, wherein source endpoint is called " Head ", and specified " Foo " item types, and target endpoint " Tail " by name, and specified " Bar " item types. It is defined as follows:
public class RelationshipPrototype:Relationship
{
    public RelationshipPrototype(Bar tai/Item);
    public RelationshipPrototype(Bar tai/Item,string name);
    public RelationshipPrototype(Bar tai/Item,string name,bool IsOwned);
    public RelationshipPrototype(Bar tai/Item,bool IsOwned);
    public RelationshipPrototype(ItemIdReference tai/ItemReference);
∥ obtains Head project (calling base.SourceItem)
    public Foo HeadItem{get;}
∥ obtains Tail project (calling base.TargetItem)
    public Bar Tai/Item{get;}
∥ represents other attribute of stating in the relation schema. These are to generate as the attribute in project or the nested element type.
    public string SomeProperty{get;set;}
    public static ItemSearcher GetSearcher(ItemContext itemContext);
    public static ItemSearcher GetSearcher(Foo headItem);
    public static FindResult FindAll(string filter);
    public static RelationshipPrototype FindOne(string filter);
    public static RelationshipPrototype FindOnly(string filter);
}
(3) RelationshipPrototpyeCollection class
This is the prototype class that generates with the RelationshipPrototype class, and its safeguards the set of the RelationshipPrototype relationship example that the project by appointment has. It is defined as follows:
public class RelationshipPrototypeCollection:VirtualRelatlonshipCollection
{
    public RelationshipPrototypeCollection(ItemContext itemContext,
                       ItemId headItemId);
  public void Add(RelationshipPrototype relationship);
  public RelationshipPrototype Add(Bar bar);
  public RelationshipPrototype Add(Bar bar,string name);
  public RelationshipPrototype Add(Bar bar,string name,bool IsOwned);
  public RelationshipPrototype Add(Bar bar,bool IsOwned);
  public void Remove(RelationshlpPrototype relationship);
  public void Remove(Bar bar);
  public void Remove(ItemId barItemId);
  public void Remove(RelationshipId relationshipId);
  public void Remove(string name);
}
C) concern support in the Item class
The Item class comprises that to provide this project wherein be the Relationships attribute of access of relation in the source of relation. The Relationships attribute has type RelationshipCollection.
(1) Item class
Following code shows the context property that concerns of Item class:
public abstract class Item:StoreObject
{
    …
∥ wherein this project is the set of the relation in source
    public RelationshipCollection Relationships{get;}
    …
}
(2) RelationshipCollection class
Such provides given project wherein is the access of relationship example in the source of relation. It is defined as follows:
public class RelationshipGollection:VirtualRelationshlpCollection
{
    public RelationshlpCollection(ItemContext itemContext,
                  ItemId headItemId);
  public void Add(Relationship relationship);
  public Relationship Add(Bar bar);
  public Relationship Add(Bar bar,string name);
  public Relationship Add(Bar bar,string name,bool IsOwned);
  public Relationship Add(Bar bar,bool IsOwned);
  public void Remove(Relationship relationship);
  public void Remove(Bar bar);
  public void Remove(ItemId barItemId);
  public void Remove(RelationshipId relationshipId);
  public void Remove(string name);
}
D) concern support in the search expression formula
May be in the search expression formula the traversal of connection between specified relationship and the relevant item.
(1) traverses relation from project
When the current context of search expression formula is one group of project, project and wherein this project be that connection between the relationship example in source can be finished with the Item.Relationships attribute. The relation that is attached to particular type can use the Cast of search expression formula (coercion of type conversion) operator to specify.
The set of relationship of strong typing (for example, Folder.MemberRelationships) also can be used in the search expression formula. Coercion of type conversion to relationship type is implicit expression.
In case set up this group relation, the attribute of this relation can be used for judging or as the target of projection. When being used to specify the target of projection, will return this group relation. For example, the following statement StartDate attribute that will find out the relation of relating to wherein has more than or equal to everyone of the tissue of the value of " 1/1/2000 ".
FindResult result=Person.FindAll(context,
  ″Relationships.Cast(Contact.EmployeeOfOrganization).StartDate>’1/1/2000’″);
If the Person type has the attribute EmployerContext that type is EmployeeSideEmployerEmployeeRelationships (the EmployeeEmployer relationship type is generated), then this will be written as:
FindResult result=Person.FindAll(context,
  ″EmployerRelationships.StartDate>’1/1/2000’″);
(2) traverse project from relation
When the current context of search expression formula is one group when concerning, can call the roll to travel through connection from the arbitrary end points that is related to relation by designated ends. In case set up this group relevant item, the attribute of those projects can be used for judging or as the target of projection. When being used to specify the target of projection, will return this group project. For example, all EmployeeOfOrganization (employee of tissue) relation that employee's surname wherein is name " Smith " (no matter and what tissue is) will be found out in following statement:
FindResult result=EmployeeOfOrganization.FindAll(context,
 “Employee.PersonalNames[SurName=’Smith’]”);
Search expression formula Cast operator can be used for filtering the type of end points project. For example, the member is all MemberOfFoler (file member) relationship example with Person project of surname " Smith " in order to find out wherein:
FindResult result=MemberOfFolder.FindAll(context,
 “Member.Cast(Contact.Person).PersonalNames[Surname=’Smith’]”);
(3) syntagmatic traversal
Front two kinds of patterns namely traverse relation and traverse the traversal that project can be combined to realize any complexity from relation from project. For example, for find out have surname for the employee's of " Smith " institute in a organized way:
FindResult result=Organization.FindAll(context,
  “EmployeeRelationships.”+
  “Employee.”+
  “PersonalNames[SurName=‘Smith’]”);
Following example will be found out expression and live in all Person projects of people of family in " New York " zone (planning item: this no longer supports ... it is a kind of replacement).
FindResult result=Person.FindAll(context,
  “Relationships.Cast(Contact.MemberOfHousehold).”+
  “Household.”+
  “Relationships.Cast(Contact.LocationOfHousehold).”+
  “MetropolitonRegion=‘New York’“);
E) example of relation support is used
Below be how to handle the example of relation with the support that concerns among the storage platform API. For following example, suppose following statement:
ItemContext ic=…;
ItemId fid=∥ portfolio item purpose ID
Folder folder=Folder.FindByld(ic,fid);
ItemId sid=The ID of ∥ source item
Item source=Item.FindByld(ic,sid);
ItemId tid=The ID of ∥ destination item
Item target=Item.FindByld(ic,tid);
ItemSearcher searcher=null;
(1) search relation
May search for source or relationship by objective (RBO). Useful filter is selected specified type and is had the relation of given attribute value. Also can select based on the relevant item type or the property value that concern with filter. For example, can carry out following search:
Given project all relations that are the source wherein
searcher=Relationship.GetSearcher(folder);
Foreach (the Relationship relationship among the searcher.FindAll ())
Wherein given project is all relations in source with name of coupling " A% "
searcher=Relationship.GetSearcher(folder);
searcher.Filters.Add(″Name like′A%′″);
Foreach (the Relationship relationship among the searcher.FindAll ())
Given project all FolderMember relations that are the source wherein
searcher=FolderMember.GetSearcher(folder);
Foreach (the FolderMember folderMember among the searcher.FindAll ())
Wherein given project is all FolderMember relations of source and name as " A% "
searcher=FolderMember.GetSearcher(folder);
searcher.Filters.Add(″Name like′A%′″);
Foreach (the FolderMember folderMember among the searcher.FindAll ())
Wherein destination item is all FolderMember relations of Person
searcher=FolderMember.GetSearcher(folder);
searcher.Filters.Add(″Memberltem.Cast(Person)″);
Foreach (the FolderMember folderMember among the searcher.FindAll ())
Wherein destination item is that surname is all FolderMember relations of the Person of " Smith "
searcher=FolderMember.GetSearcner(folder);
searcher.Filters.Add(″Memberltem.Cast(Person).PersonalNames.Surname=′Smith′″);
Foreach (the FolderMember folderMember among the searcher.FindAll ())
Except more than the GerSearcher API that illustrates, each relation object is supported static FindAll, FineOne and FindOnly API. In addition, relationship type can be specified when calling ItemContext.GetSearcher, ItemContext.FindAll, ItemContext.FindOne or ItemContext.FindOnly.
(2) navigate to the source and target project from relation
In case retrieved relationship object by search, may " navigation " arrive target or source item. The fundamental relation class provides SourceItem (source item) and TargetItem (destination item) attribute that returns the Item object. The relation object that generates provides the attribute (for example, FolderMember.FolderItem and FolderMember.MemberItem) of equivalent strong typing and name. For example:
Navigate to the source and target project of the relation of " Foo " by name
searcher=Relationship.GetSearcher();
searcher.Filters.Add(″Name=′Foo′″);
Foreach (the Relationship relationship among the searcher.FindAll ())
{
    Item source=relationship.SourceItem;
    Item target=relationship.TargetItem;
}
Navigate to destination item
searcher=FolderMember.GetSearcher(folder);
searcher.Filters.Add(″Name like′A%′″);
Foreach (the FolderMember folderMember among the searcher.FindAll ())
{
    Item member=folderMember.TargetItem;
    …
}
Even navigating to destination item can not operate in destination item does not find the territory of relation therein yet. In this case, storage platform API is opened to the connection of required aiming field. Application program can need determine whether before the searched targets project to connect.
Check the destination item in the territory that does not connect
searcher=Relationship.GetSearcher(source);
Foreach (the Relationship relationship among the searcher.FindAll ())
{
    if(relationship.IsTargetDomaiinConnected)
    {
      Item member=relationship.TargetItem;
      …
    }
}
(3) navigate to relation from source item
Given item objects may navigate to this project and be the relation in its source, and need not to carry out explicit search. This can finish with the Item.Relationships aggregate attribute or such as the aggregate attribute of the strong typings such as Folder.MemberRelationships. From relation, may navigate to destination item. Even this navigation destination item not with item domains that the ItemContext of source item is associated in the time also can operate, comprise when destination item is not in the storage identical with source item. For example:
Navigate to relation again to destination item from source item
Console.WriteLine(″Item{0}is the source of the following relationships:″,source.ItemId);
Foreach (the Relationship relationship among the source.Relationships)
{
    Item target=relationship.TargetItem;
    Console.WriteLine(″{0}==>{1}″,relationship.Relationshipld,target.ItemId);
}
Navigate to the file member relation again to destination item from the file project
console.writeLme(″Item{0}is the source of the following relationships:″,folder.ItemId);
Foreach (the FolderMember folderMember among the folder.MemberRelationships)
{
    Item target=folderMember.GetMemberItem();
    Console.WriteLine(″{0}==>{1}″,folderMember.RelationshipId,target.ItemId);
Project can have many relations, so application program should careful use when enumerating set of relationship. Generally speaking, should identify interested particular kind of relationship but not enumerate whole set with search. Yet, relation is had programming model and enough valuable based on set, and it is few as to suffice to show that the risk that the developer abuses to have the project of many relations. Application program can check the number of the relation in the set, and uses when needed different programming models. For example:
Check the size of set of relationship
if(folder.MemberRelationships.Count>1000)
{
  Console.WriteLine(″Too many relationships!″);
}
  else
{
  …
}
It is " virtual " that above-mentioned relation is integrated on the meaning that in fact they need not represent that the object of each relation fills, except nonusable routine attempts to enumerate this set. If this set is enumerated, then the result has reflected in the storage what is arranged, and adds that application program adds but what has not been preserved, but does not reflect by application program and remove but any relation of not preserving.
(4) create relation (and project)
New relation is by creating relationship object, its set of relationship and renewal item context that adds in the source item being created. For creating new projects, must create and hold or imbeding relation. For example:
Add new projects to the existing file folder
Bar bar=new Bar();
folder.Relationships.Add(new FolderMember(bar,″name″));
ic.Update();
∥ or
Bar bar=new Bar();
folder.MemberRelationships.Add(new FolderMember(bar,″name″));
ic.Update();
∥ or
Bar bar=new Bar();
folder.MemberRelationships.Add(bar,name);
ic.Update();
Add off-the-shelf item to the existing file folder
folder.MemberRelationships.Add(target,″name″);
ic.Update();
Add off-the-shelf item to new folder
Folder existingFolder=ic.FindItemByld(fid)as Folder;
Folder newFolder=new Folder();
existingFolder.MemberRelationships.Add(newFolder,″a name″);
newFolder.MemberRelationships.Add(target,″a name″);
ic.Update();
Add new projects to new folder
Folder existingFolder=ic.FindItemByld(fid)as Folder;
Folder newFolder=new Folder();
existingFolder.MemberRelationships.Add(newFolder,″a name″);
Bar bar=new Bar();
newFolder.MemberRelationships.Add(bar,″a name″);
ic.Update();
(5) deletion relation (and project)
Relation is held in deletion
If ∥ source item and relations I D are known
Relationshipld rid=…;
Relationship r=ic.FindRelationshipByld(fid,rid);
r.MarkForDelete;
ic.Update();
∥ otherwise
folder.MemberRelationships.Remove(target);
ic.Update();
8. " expansion " storage platform API
As mentioned above, each storage platform pattern all causes a category. These classes have such as standard methods such as Find*, and also have for the attribute that arranges and obtain field value. These classes and the method that is associated have formed the basis of storage platform API.
A) territory behavior
Except these standard methods, each pattern has one group of territory special method that is used for this pattern. These methods are become the territory behavior. For example, some territory behavior is in the contact schema:
Whether e-mail address effective?
Given file obtains all members' of this document folder set.
Given item id, the object of this project of acquisition expression.
Given people obtains its presence.
Assistant Function creates new contact person or interim contact person.
Etc..
Be important to note that although made difference between " standard " behavior (Find* etc.) and territory behavior, they only show as method to the programmer. Instrument generated automatically from schema file when the difference between these methods was that criterion behavior is designed by storage platform API, and the territory behavior is hard coded.
With regard to its person's character, the territory behavior should be home built. This causes the initial version of practical problem a: C# to require the whole of class to be implemented in the Single document. Thus, this forces the class file of automatic generation must be edited to add the territory behavior. This itself is exactly a problem.
In C#, introduce a kind of feature that is called local class for suchlike problem. The most basically, local class allows class to realize crossing over a plurality of files. Local class is identical with conventional class, and difference is before its statement keyword is arranged
partial:
partial public class Person:DerivedItemBase
{
∥ realizes
}
Now, the territory behavior of Person can be placed in the different files, as:
partial public class Person
{
    public EmailAddress PrimaryEmailAddress
    {
Get{/* realization */}
    }
}
B) increment behavior
Data class with territory behavior has formed the basis that application developer makes up thereon. Yet it is impossible also be undesirable that data class represents each behavior that can expect relevant with these data. Storage platform allows the developer to make up at the basic function that is provided by storage platform API. Basic schema herein is to write one or more classes as parameter that its method adopts the storage platform data class. For example, be used for Microsoft Outlook or send the increment class of Email with Microsoft Windows Messenger can be as follows:
MailMessage m=MailMessage.FindOne(…);
OutlookEMailServices.SendMessage(m);
Person p=Person.FindOne(…);
WindowsMessagerServices m=new WindowsMessagerServices(p);
m.MessageReceived+=new MessageReceivedHandler(f);
m.SendMessage(″Hello″);
These increment classes can be registered to storage platform. Log-on data is associated with the pattern metadata that storage platform is safeguarded for the storage platform type of each installation. This metadata stores as storage platform items, and can be queried.
The registration of increment class is a kind of powerful feature; For example, it allows following situation: click by right key on the Person object in the Shell explorer, and can be from moving to deriving this group that allows the increment class of Person registration.
C) as ISP's increment behavior
In the present embodiment, storage platform API provides a kind of mechanism, and the class of wherein rising in value can be registered as " service " of given type. This is so that application program can arrange and obtain ISP's (=increment class) of given type. Wish to utilize the increment class of this mechanism should realize a kind of known interface; For example:
interface IChatServices
{
    void SendMessage(string msg);
    event MessageReceivedHandler MessageReceived;
}
  class WindowsMessengerServices:IChatServices
{
    …
}
class YahooMessengerServices:IChatServices
{
    …
}
All storage platform API data class are realized ICachedServiceProvider (ISP of high-speed cache) interface. This Interface Expanding the System.IServiceProvider interface, as follows:
interface ICachedServiceProvider:System.IServiceProvider
{
    void SetService(System.Type type,Object provider);
    void RemoteService(System.Type type);
}
Use this interface, application program can arrange the ISP of ISP's example and request particular type.
For supporting this interface, the storage platform data class is safeguarded with the hash table of type as the ISP of key. When the request service supplier, realize at first in hash table, checking the ISP who whether is provided with specified type. If not, then identify the ISP of specified type with ISP's foundation structure of registration. Then create this supplier's example, add it to hash table, and return. Note, also may be by the shared method request service supplier on the data class, and operation is forwarded to this supplier. For example, this can be used for providing use by the Send method on the email message class of the e-mail system of user's appointment.
9. framework when designing
This section has been described according to present embodiment of the present invention, and how the storage platform pattern converts storage platform API on the client computer and the UDT class on the server to. Figure 24 illustrates related assembly.
With reference to Figure 24, the type in the pattern is included in the XML file (frame 1). This document also comprises field level and the project level constraint that is associated with pattern. Storage platform class maker (xfs2cs.exe-frame 2) adopts this document, and generates the local class (frame 5) of storage UDT and the local class (frame 3) of client class. For each mode field, there is other method-be called territory behavior. Existence is in storage (frame 7), client computer (frame 6) and (frame 4) significant territory behavior among both. Code in the frame 4,6 and 7 is hand-written (not being automatically to generate). The complete class that local class in the frame 3,4 and 6 has formed storage platform API territory class jointly realizes. Frame 3,4 and 6 is compiled (frame 8) to form storage platform API class-frame 11 (in fact, storage platform API is that compiling is from the frame 3 of all originate mode territory gained, 4 and 6 result). Except the class of territory, also there is other class that realizes the increment behavior. These classes are utilized the one or more classes in one or more mode field. This is by frame 10 expressions. The complete class that local class in the frame 4,5 and 7 has formed server UDT class jointly realizes. Frame 4,5 and 7 is compiled (frame 9) UDT procedure set-frame 12 (in fact, the UDT program level of server side is that compiler adds compiling from the frame 4 of all originate mode territory gained, 5 and 7 result) to form server side. DDL order maker module (frame 13) adopts this UDT procedure set (frame 12) and schema file (frame 1), and they are installed in the data storage. This process relates to checking of the generation of table and the type in each pattern etc.
10. inquiry form
When being simplified the basis, the pattern of application program is when using storage platform API: open ItemContext; Retrieve the object of expectation with Find with filter criteria; Operate at object; And change sent it back storage. This section relates to the syntax what enters the filter string for.
The filter string descriptor that when searching the storage platform data object, provides the attribute constraint that must satisfy to be returned. Support coercion of type conversion and relation traversal by the syntax that storage platform API uses.
A) filter basis
Filter string or be empty, indication will be returned all objects of specified type; It is the Boolean expression that each object that returns must satisfy. The attribute of expression formula reference object. Storage platform API Runtime Library knows how these attribute-name are mapped to storage platform type field name, and finally is mapped to the SQL view by the storage platform storage system maintenance.
Consider following example:
∥ finds out everyone
FindResult res1=Person.FindAll(ctx)
∥ finds out its Gender (sex) property value and equals everyone of " Male " (man)
FindResult res2=Person.FindAll(ctx,″Gender=′Male′″)
∥ finds out the people that its Gender property value equals " Male " and is born at the last century
FindResult res3=Person.FindAll(
        ctx.
        ″Gender=′Male′And Birthdate<′1/1/2001″″)
The attribute of nested object also can use in filter. For example:
∥ finds out in upper 24 hours everyone that revise
FindResult res1=Person.FindAll(
        ctx.
        String.Format(″Item.Modified>′{0}′″,DateTime.NowSubstract(nes TimeSpan(24,0,0))));
For set, the condition in possible user's bracket is filtered the member. For example:
∥ finds out " John " by name and surname is everyone of " Smith "
FindResult res1=Person.FindAll(
        ctx.
        ″PersonalNames[GivenName=′John′And Surname=′Smith′]″)
∥ finds out the real-time address and is everyone of " y " from supplier " x " and presence classification
FindResult res2=Person.FindAll(
        ctx.
        ″PersonalRealtimeAddress[ProviderURI=′x′].BasicPresence″+
            ″OnlineStatus.Category=′y′″)
Following example has been listed since 12/31/1999 everyone of birth:
ItemContext ctx=ItemContext.Open(″Work Contacts″);
FindResult results=
        Person.FindAll(ctx,″Birthdate>′12/31/1999′″);
Foreach (the Person person among the results)
        Console.WriteLine(person.DisplayName);
ctx.Close();
The 1st row has created new ItemContext object and has visited " Work Contacts (the working relation people) " that storage platform on the local computer is shared. The 3rd row and the 4th row obtain the set that Birthdate (birthday) attribute wherein satisfies the Person object that is later than date of 12/31/1999, as specified by expression formula " Birthdate>' 12/31/1999 ' ". The execution of this FindAll operation is shown in Figure 23.
B) coercion of type conversion
The type that situation normally is stored in the value in the attribute is the type derivation of dependency statement. For example, the PersonalEAddress among the Person (personal electric address) attribute comprises the set of the type that derives from EAdress (electronic address) such as EMailAddress (e-mail address) and TelephoneNumber (telephone number). For filtering based on area code, must be transformed into the TelephoneNumber type from the EAddress coercion of type:
∥ finds out everyone in telephone number 425 area codes
FindResult res1=Person.FindAll(
    ctx,
    ″PersonalEAddresses.″+
      ″Cast(System.Storage.Contact.TelephoneNumber)).″+
      ″AreaCode=’425’″);
∥ or, can following transmission type name:
FindResult res1=Person.FindAll(
    ctx,
    String.Format(″PersonalEAddresses.Cast({0})).AreaCode=’425’″,
    typeof(TelephoneNumber).FullName))
C) filter syntax
Below be according to the description of an embodiment by the filter syntax of storage platform API support.
Filter ∷=air filter | condition
Air filter ∷=
Condition ∷=simple condition | compound condition | bracketed condition
Simple condition ∷=existence checks | compares
Exist inspection ∷=attribute to quote
Relatively ∷=attribute is quoted the comparison operator constant
Compound condition ∷=simple condition Boolean operator condition
Bracketed condition ∷=' (' condition ') '
Comparison operator ∷=' unequal to ' | '==' | '=' | '<' | '>' | '>=' | '<='
Boolean operator ∷=' And ' | ′ ﹠﹠ ' | ' Or ' | ' ‖ '
Constant ∷=string constant | digital constant
String constant ∷= (any Unicode character)*
Attention: embedding ' character is by copying escape
Numeral constant ∷=0-9*
Attribute is quoted ∷=simple attributes name | the complex attribute name
Simple attributes name ∷=(except '. ' and the space all Unicode characters) the * filter?
Filter ∷=' (' condition ') '
Complex attribute name ∷=(the coercion of type conversion | the relation traversal | the simple attributes name) '. ' attribute is quoted
Coercion of type conversion ∷=' Cast (' type name ') '
Relation traversal ∷=traverse source | traverse target
Traverse source ∷=' Source (' completeness relation name ') '
Traverse target ∷=' Target (' completeness relation name ') '
Type name ∷=complete qualified CLR type name
Completeness relation name ∷=schema name '. ' relation name
Schema name ∷=storage platform name
Relation name ∷=storage platform name
Storage platform name ∷=as defined in [mode-definition]
11. remote control
A) transparency of the local/remote among the API
The target of the data access in the storage platform is local storage platform example. If inquiry (or its part) relates to teledata, then local example is as router. Thus, api layer provides the local/remote transparency: do not have structural API difference between local and remote data access. It is to be decided by the scope of asking purely.
The storage of storage platform data has also realized distributed query; Thus, may be connected to local storage platform example, and carry out the inquiry that comprises from the project of difference volume, wherein certain some project is stored in this locality, and other project is on remote storage. Storage is carried out and operation the result, and is presented to application program. From the viewpoint (being the viewpoint of application developer therefore) of storage platform API, any remote access is seamless and transparent fully.
Storage platform API allows application program to use the IsRemote attribute to determine that given ItemContext object (as being returned by the ItemContext.Open method) is the local or long-range connection of expression, and this attribute is the attribute on the ItemContext object. Especially, application program may be desirable to provide video feed and helps for performance, reliability etc. user expectation is set.
B) storage platform of remote control realizes
The storage of storage platform data is talked to each other with special OLEDB supplier, and this supplier is in HTTP operation (the OLEDG supplier of acquiescence uses TDS). In one embodiment, distributed query is by the acquiescence OPENROWSET function of relevant database engine. Provide a kind of special user-defined function (UDF): DoRemoteQuery (server, queryText), to finish actual remote control.
C) the non-storage platform storage of access
In an embodiment of storage platform of the present invention, there is not the non-general supplier's architecture that allows any storage to participate in the storage platform data access. Yet, for the particular case of Microsoft Exchange and Microsoft Active Directory (AD) provides limited supplier's architecture. This means the developer can as in the storage platform, use storage platform API and access AD and Exchange in data, but the data that they can access are limited to the type of storage platform medelling. Thus, in AD, support address book (set of=storage platform Person type), and Exchange is supported mail, calendar and contact person.
D) with the relation of DFS
The fixing point that storage platform attribute upgrading device is not upgraded and. Even name space is enough abundant to visit by fixing point, inquiry still can not be passed through them. The leaf node that the storage platform volume can be used as in the DFS tree occurs.
E) with the relation of GXA/Indigo
The developer can use storage platform API to show " GXA head " above the data storage. Conceptive, create any other web services without any difference. Storage platform API does not use GXA and storage platform data storage talk. As mentioned above, API uses TDS and local storage talk; Any remote control is processed with synchronous service by this locality storage.
12. constraint
The storage platform data model allows the value constraint on the type. These constrain in the upper automatic evaluation of storage, and this process is transparent for the user. Note, check constraint at the server place. Notice after this point that sometimes expectation gives the developer and verifies that the input data satisfy the flexibility of constraint and can not cause round overhead to server. The interactive application that this therein end user's input is used for the data of filled object is particularly useful. Storage platform API provides this instrument.
Can recall in the XML document and decide the storage platform pattern, it is used for generating the suitable database object of this pattern of expression by storage platform. It during also by the design of storage platform API framework be used for automatically generating class.
Below be the part inventory for the XML file that generates the Contacts pattern:
<Schema Name=″Contacts″MajorVersion=″1″MinorVersion=″8″>
   <ReferencedSchema Name=″Base″MajorVersion=″1″/>
   <Type Name=″Person″MajorVersion=″1″MinorVersion=″0″
        ExtendsType=″Principal″ExtendsVersion=″1″>
     <Field Name=″Birthdate″Type=″the storage platformTypes.datetime″
       Nullable=″true″MultiValued=″false″/>
     <Field Name=″Gender″Type=″the storage platformTypes.nvarchar(16)″
       Nullable=″true″MultiValued=″false″/>
     <Field Name=″PersonalNames″Type=″FullName″TypeMajorVersion=″1″
       Nullable=″true″MultiValued=″true″/>
     <Field Name=″PersonalEAddresses″Type=″EAddress″
       TypeMajorVersion=″1″Nullable=″true″MultiValued=″true″/>
     <Field Name=″PersonalPostalAddresses″Type=″PostalAddress″
       TypeMajorVersion=″1″Nullable=″true″MultiValued=″true″/>
     <Check>expression</Check>
  </Type>
  …
  …
</Schema>
Check label among the above XML has been specified the constraint on the Person type. An above Check label can be arranged. More than constraint generally checks in storage. For specifying constraint also can check that above XML is modified to by the application program explicitly:
<Schema Name=″Contacts″MajorVersion=″1″MinorVersion=″8″>
  <ReferencedSchema Name=″Base″MajorVersion=″1″/>
   <Type Name=″Person″…>
     <Field Name=″Birthdate″Type=″the storage platformTypes.datetime″
       Nullable=″true″MultiValued=″false″/>
    …
    <Check InApplication=″true″>expression</Check>
  </Type>
  …
  …
</Schema>
Note<Check〉new " InApplication " attribute on the element is set as very. This causes storage platform API in API constraint to be placed the surface by the case method that is called Validate () on the Person class. Application program can be called the method at object, is effectively to guarantee data, and prevents possible useless the coming and going to server. This returns the result's of indication affirmation Boolean. Notice that the value constraint is still used at the server place, no matter and client computer whether called<object .Validate () method. Below be an example how using Validate:
ItemContext ctx=ItemContext.Open();
∥ creates the contact person in user's My Contacts file.
Folder f=UserDataFolder.FindMyPersonalContactsFolder(ctx);
Person p=new Person(f);
∥ arranges people's birthday
p.Birthdate=new DateTime(1959,6,9);
∥ adds the name that is classified as name
FullName name=new FullName(FullName.Category.PrimaryName);
name.GivenName=″Joe″;
name.Surname=″Smith″;
p.PersonalNames.Add(name);
∥ confirms the Person object
if(p.Validate()==false)
{
The ∥ data do not represent effective people
}
∥ preserves change
p.Update();
ctx.Close();
Exist to many access path-storage platform API, ADO.NET, ODBC, OLEDB and ADO of storage platform storage. This has caused the problem of authoritative constraint checking-namely, how to guarantee the data Data Integrality Restriction excessively identical with the data communication device that writes out from storage platform API that writes out from for example ODBC. Because all constraints check that at depository therefore constraint is authoritative now. No matter how be used for to arrive the API path of storage, the constraint checking that all of storage are write all by depository filters.
13. share
Shared in the storage platform is following form:
<dns name<context service
Wherein<and dns name〉be the dns name of machine,<context service〉be include file folder, virtual folder or the project in the volume on this machine. For example, suppose that machine " Johns_Desktop " has the volume of Johns_Information by name, and in this volume, have the file of Contacts_Categories by name; This document clip pack contains the file of Work by name, and the latter has the working relation people of John:
Johns_Desktop Johns_Information $ Contacts_Categories Work this can be shared as " WorkContacts ". Adopt this definition of sharing, Johns_Desktop WorkContacts JaneSmith be effective storage platform name, and identified Person project JaneSmith.
A) expression is shared
Shared item types has following attribute: shared name and shared target (this can be the non-link of holding). For example, above-mentioned shared title is WorkContacts, and target be the Contacts_Categories of volume on the Johns_Information Work. Below be the schema fragment for the Share type:
<Schema
    xmlns=″http:∥schemas.microsoft.com/winfs/2002/11/18/schema″
  Name=″Share″MajorVersion=″1″MinorVersion=″0″>
    <ReferencedSchema Name=″Base″MajorVersion=″1″/>
    <ReferencedSchema Name=″the storage platformTypes″MajorVersion=″1″/>
    <Type Name=″Share″MajorVersion=″1″MinorVersion=″0″
     ExtendsType=″Base.Item″ExtendsVersion=″1″>
    <Field Name=″Name″Type=″the storage platformTypes.nvarchar(512)″
      TypeMajorVersion=″1″/>
    <Field Name=″Target″Type=″Base.RelationshipData″TypeMajorVersion=″1″/>
    </Type>
</Schema>
B) management is shared
Because sharing is a project, therefore shares and as other project, to manage. Share and to be created, to delete and to revise. Share and also protect in the mode the same with other storage platform items.
C) access is shared
Application program by in ItemContext.Open () method call with shared name (for example, Johns Desktop WorkContacts) be delivered to storage platform API and visit the remote storage platform and share. ItemContext.Open returns the ItemContext object instance. Then storage platform API talks (can recall access remote storage platform finishes by local storage platform) with local storage platform service. Local storage platform service so with have given shared name (for example, WorkContacts) remote storage platform service (for example, at machine Johns Desktop) talk. The remote storage platform service then WorkContacts is converted to Contacts_Categories Work and open it. After that, carry out the same with other scope inquired about and other operation.
D) Finding possibility
In one embodiment, application program can be found given<dns name with the following methods〉upper available sharing. According to first kind of way, storage platform API accept dns name (for example, Johns_Desktop), as the range parameter in the ItemContext.Open () method. Then storage platform API is connected to the storage platform storage with this dns name as a part that connects string. Adopt this connection, the unique thing that can do of application program is to call ItemContext.FindAll (typeof (Share)). Then storage platform service is shared on all additional volumes all and is carried out and operation, and returns and share set. According to the second way, on local machine, the keeper can pass through FindAll (typeof (Share)) and find sharing on the certain volume, or pass through FindAll (typeof (Share), " Target (ShareDestination) .Id=folderId ") and find specific file.
14. the semanteme of Find
Find* method (no matter they are to call at the ItemContext object or in individual other project) generally is applied to the project (project that comprises embedding) in the given context. Nested element does not have Find-, and they can not be independent of it and comprise project search. This and desired semantic consistent of storage platform data model, wherein nested element derives its " identity " from comprising project. For making this concept clearer, below be effective and the example of invalid search operation:
A) all telephone numbers that have area code 206 in the system are shown?
Invalid, finish because this is searched at telephone number (element), and do not have REFER object.
B) all telephone numbers that have area code 206 in all Person are shown?
Invalid, even quoted Person (=project), search criteria does not relate to this project yet.
C) all telephone numbers with area code 206 of Murali (=single people) are shown?
Effectively, because there is search criteria on the project Person of (by name " Murali ").
The exception of this rule is the nested element that derives from the Base.Relationship type for directly or indirectly. These types can individually be inquired about by relation object. This inquiry can be supported, because storage platform realizes having adopted " main chain table " to store the Relationship element but not they are embedded among the project UDT.
15. storage platform Contacts API
This section has provided the summary of storage platform Contacts API. Contacts API pattern behind is shown in Fig. 2 lA and the 21B.
A) summary of System.Storage.Contact
Storage platform API comprises the name space for the treatment of the project in the contact schema and element. This name space is called as System.Stroage.Contact.
This pattern has for example with lower class:
Project: UserDataFolder, User, Person, ADService, Service, Group, Organization, Principal, Location
Element: Profile, PostalAddress, EmailAddress, TelephoneNumber, RealTimeAddress, Eaddress, FullName, BasicPresence, GroupMembership, RoleOccupancy
B) territory behavior
It below is the tabulation of the territory behavior of contact schema. When checking from sufficiently high rank, the territory behavior falls into the classification of good organization:
Static assistant for example creates new individual contact person's Person.CreatePersonalContact ();
The example assistant for example signs in to user's (example of User class) user.AutoLoginToAllProfiles () of all overviews that are marked as automatic login;
Classification GUID, such as Category.Home, Category.Work etc.;
Derive attribute, for example emailAddress.Address ()-the return user name of the given emailAddress of combination (example of EmailAddress class) and the string of territory field; And
Derive set, for example the example of the given Person class of person.PersonalEmailAddress-obtains its personal email address.
Following table has provided the tabulation of these methods and the classification under them to each class that has the territory behavior among the Contacts.
 BasicPresence Classification URI   UnknownCategoryURI、OffiineCategoryURI、   BusyCategoryURI、AwayCategoryURI、   OnlineCategoryURI
Static assistant There is (the actual demand for localization of needs interpolation in ConvertPresenceStateToString-as the form of localization string; Currently only added friendly English string).
  Category Classification GUID   Home、Work、Primary、Secondary、Cell、Fax、Pager
  EmailAddress Derive attribute Address-combination user name and territory
Static assistant   IsValidEmailAddress
  Folder Derive attribute GetChildItemCollection-so that project set based on the target of FolderMembership
Static assistant GetKnownFolder-obtains the dedicated query of known folder
AddToPersonalContacts-adds project to known individual contacts folder
  Items Static assistant GetItemFromID-carries out the inquiry based on ID
  Relationship The example assistant BindToTarget-returns the project of target
  Person Derive set   PersonalRealtimeAddress、PersonalEmailAddresses、   PersonalTelephoneNumbers
Derive attribute   OnlineStatus、OnlineStatusIconSource、   PrimaryEmailAddress、PrimarySecurityID
Static assistant CreatePersonalColntact, CreateTemporaryContact-create new individual in known folder
GetCurrentUser-obtains the user's of current login Person
  SecurityID Derive attribute   UserName、DomainName、DomainUserName
  TelephoneNu   mber The example assistant SetFromUserInputString-is parsed into each several part with telephone number strings
Static assistant ParseNumber-is parsed into each several part with telephone number strings
  User The example assistant AutoLoginToAllProfiles-signs in to all overviews that are marked as automatic login
16. storage platform File API
This section has provided the summary of storage platform File API according to one embodiment of the present of invention.
A) introduce
(1) reflection NTFS volume in storage platform
Storage platform provides the method for the enterprising line index of content in existing NTFS volume. This is by extraction (" upgrading ") attribute in each document flow from NTFS or the catalogue, and these attributes are realized in storage platform as items storing.
The file mode of storage platform has defined two kinds of item types-File (file) and Directory (catalogue), stores the file system entity of upgrading. The Directory type is the subtype of Folder type; It is the include file folder that comprises other Directory project or File project.
The Directory project can comprise Directory and File project; It can not comprise the project of any other type. As for the storage platform of considering, Directory and File project all are read-only from any data access API. File system upgrade manager (FSPM) service is upgraded to the attribute that changes in the storage platform asynchronously. The attribute of File and Directory project can be changed by Win32 API. Storage platform API can be used for reading any attribute of these projects, comprises the stream that is associated with the File project.
(2) in the storage platform name space, create file and catalogue
When the NTFS volume was upgraded to the storage platform volume, All Files wherein and catalogue were all in the specific part of this volume. This zone is read-only from the viewpoint of storage platform; FSPM can create new directory and file, and/or changes the attribute of off-the-shelf item.
The remainder of the name space of this volume can comprise common gamut-Principal (main body), Organization (tissue), Document (document), the Folder (file) etc. of storage platform items type. Storage platform also allows to create file and catalogue in any part of storage platform name space. These " the machine " files and catalogue do not have homologue in new technology file system; They are stored in the storage platform fully. In addition, be visible immediately to the change of attribute.
Yet it is identical that programming model keeps; With regard to considering storage platform data access API, they are still read-only. " the machine " file and catalogue must be upgraded with Win32 API. This has simplified developer's thinking model, and this thinking model is:
1. any storage platform items type can locating Anywhere in name space create (certainly, unless licensed the prevention);
2. any storage platform items type can read with storage platform API;
3. all storage platform items types can write with the storage platform API of the exception with File and Directory
For writing File and Directory project no matter they in name space where, use Win32 API; And
5. the change to the File/Directory project may directly not appear in the storage platform in " upgrading " name space; In " non-upgrading " name space, change and directly in storage platform, reflect.
B) file mode
Figure 25 show File API based on pattern.
C) summary of System.Storage.Files
Storage platform API comprises the name space for the treatment of file object. This name space is called System.Storage.Files. The data member of the class among the System.Storage.Files has directly reflected the information that is stored in the storage platform storage; This information maybe can use Win32 API the machine to create from file system object " upgrading ". The System.Storage.Files name space has two class: FileItem (docuterm) and DirectoryItem (directory items). The member of these classes and method thereof can easily be guessed by checking the ideograph among Figure 25. FileItem and DirectoryItem are read-only from storage platform API. For revising them, must use the class among Win32 API or the System.IO.
D) example code
In this section, three example codes are provided, show the use of the class among the System.Storage.Files.
(1) opens file and write to it
How this example finishes " tradition " file manipulation if showing.
ItemContext ctx=ItemContext.Open();
Fileltem f=Fileltem.FindByPath(ctx,@″\My Documents\billg.ppt″);
The example of ∥ processing file attribute-guarantee that file is not read-only
if(!f.lsReadOnly)
{
    FileStream fs=f.OpenWrite();
∥ reading and writing, close file stream fs
}
ctx.Close();
The 3rd enforcement has used FindByPath (according to path searching) method to open file. The 7th row shows the use to the attribute IsReadOnly of upgrading, checks whether file can be write. If so, then obtain document flow in the 9th enforcement with the OpenWrite () method on the FileItem object.
(2) use inquiry
Because the storage platform storage is held from the attribute of file system upgrading, therefore may easily finish abundant inquiry at file. In this example, listed the All Files of revising in the end three days:
∥ is listed in the All Files of revising in last three days
FindResult result=FileItem.FindAll(
        ctx.
        ″Modified>=′{0}′″,
        DateTime.Now.AddDays(-3));
Foreach (the FileItem file among the result)
{
        …
}
Below be another example of using inquiry-this example find out a certain type (but=extension) all written documents:
∥ finds out that all can write the .cs file in the particular category
∥ is equivalent to: dir c: win src api * .cs/a-r-d
DirectoryItem dir=
    DirectoryItem.FindByPath(ctx,@″c:\win\src\api″);
Find Result=dir.GetFiles(
    ″Extension=′cs′and IsReadOnly=false″);
Foreach (the File file among the result)
{
    …
}
E) territory behavior
In one embodiment, except standard attribute and method, files classes also have territory behavior (attribute of manual coding and method). These behaviors are generally based on the method in the System.IO class of correspondence.
J. sum up
As mentioned above, the present invention is directed to a kind of for tissue, search and shared data storage platform. The concept of data storages is expanded and widened to storage platform of the present invention outside existing file system and Database Systems, and be designed to store all types of data, comprise structurized, non-structured or partly-structured data, such as relationship type (tabular form) data, XML and the data that are called the new model of project. By the data of its common storage basis and medelling, storage platform of the present invention allows more effective application development to consumer, Knowledge Worker and enterprise. It provides a kind of abundant and extendible application programming interface, and this interface not only so that the capability in its data model can be used, also comprises and expanded existing file system and data bank access method. Be appreciated that and make a change above-described embodiment and do not break away from its wide in range inventive concepts. Therefore, the specific embodiment that the invention is not restricted to disclose, and be intended to cover all modifications that falls into by within the spirit and scope of the present invention of appended claims definition.
As from the above can be clearly, all or part of form of program code (that is, instruction) of can using of various systems of the present invention, method and aspect be implemented. This program code can be stored on the computer-readable medium, such as the magnetic, electrical, optical storage medium, include but not limited to, floppy disk, CD-ROM, CD-RW, DVD-ROM, DVD-RAM, tape, flash memory, hard disk drive or any other machinable medium, wherein, when program code was loaded into machines such as computer or server and is carried out by it, this machine became be used to realizing device of the present invention. The present invention is also available by a certain transmission medium, such as by electric wire or cable, implement by optical fiber, network by comprising internet or Intranet or the form of the program code that transmits by the transmission of any other form, wherein, when program code by accepting and be loaded into such as machines such as computers when wherein being carried out by it, this machine becomes be used to realizing device of the present invention. When general processor is realized, program code combines to provide the unique apparatus that is similar to the particular logic circuit operation with processor.
Appendix A namespace System.Storage
abstract class ItemContext:IDisposable,IServiceProvider
{
ItemContext creates and the management memberThe ∥ application program can't directly create the ItemContext object, also can't derive class from ItemContext. Internal itemContext (); ∥ creates and can be used for searching for specified path, if perhaps specified path not, ∥ then creates the ItemContext that can be used for searching for the default storage on the local computer. Public static ItemContext Open (); Public static ItemContext Open (string path); Public static ItemContext Open (params string[] paths); ∥ returns the path of appointment when creating ItemContext. Public string[] GetOpenPaths (); ∥ creates the copy of this ItemContext. This copy will have independently affairs, high-speed cache and update mode. High-speed cache ∥ is initially sky. It is more effective that expectation uses clone's ItemContext to open new ItemContext than use same project territory. Public ItemContext Clone (); ∥ closes ItemContext. After closing, use any trial of ItemContext will cause ObjectDisposedException. Public void Close (); Void IDisposable.Dispose (); If ∥ then is true when any territory of opening the ItemContext appointment is resolved to remote computer. Public bool IsRemote{get; ∥ returns the object that the COS of asking can be provided. If the service of asking can not be provided, then return sky. ∥ is excluded outside ∥ ItemContext class the use permission non-normal use of IServiceProvider pattern and the API that may cause the developer to obscure. ItemContext can provide the service of following kind: ItemSerialization, IStoreObiectCache public object GerService (Type serviceType);
Upgrade relevant member∥ preserves by the object of all modifications and is delivered to MarkForCreate or the change of all object encodings of MarkForDelete. If ∥ detects update inconsistency, UpdateCollisionException then can dish out. Public void Update (); ∥ preserves the change by specified object encoding. Object must be modified or be passed to MarkForCreate or ∥ MarkForDelete, otherwise the ArgumentException that dishes out. If detect update inconsistency, the ∥ UpdateCollisionException that can dish out. Public void Update (object obiectToUpdate); Public void Update (IEnumerable objectsToUpdate); ∥ refreshes the content of specified object from storage. If object is modified, then cover to change, and object no longer is considered to, and ∥ changes. If specified any content except project, extension or relationship object, ArgumentException then dishes out. Public void Refresh (obiect obiectToRefresh); Public void Refresh (IEnumerable objectsToRefresh); ∥ detects the object that retrieval revises and attempts to preserve and cause when having changed data between it in storage when upgrading. If what part handling procedure of ∥ is not appointed in registration, then upgrade throw exception. If registered button.onrelease, but then its throw exception is ended to upgrade, and the object that the ∥ packing is revised to be covering the data in the storage, or be incorporated in the storage and object in the change made. Public event ChangeCollisionEventHandler UpdateCollision; ∥ is upgrading the each point place initiation of processing, so that the renewal progress information to be provided. Public event UpdateProgressEventhandler UpdateProgress; The asynchronous version public IAsyncResult BeginUpdate of ∥ Update (IAsyncCaIlback 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); The asynchronous version public IAsyncResult BeginRefresh of ∥ Refresh (object objectToRefresh,
             IAsyncCallback callback,
             object state); public IAsyncResult BeginRefresh(IEnumerable objectsToRefresh,
             IAsyncCallback callback,
             obiect state); public void EndRefresh(IAsyncResult result);
The affairs member that is correlated with∥ starts affairs with the isolation level of appointment. The isolation level of acquiescence is ReadCommited. In all cases, ∥ starts distributed transaction, changes the stream type item attribute because it may must comprise. Public Transaction BeginTransaction (); Public Transaction BeginTransaction (System.Data.IsolationLevel isolationLevel);
The relevant member of search∥ is created in the ItemSearcher of search specified type object in this project context. If specified the type except project, relation or ∥ extension, ArgumentException then dishes out. Public ItemSearcher GetSearcher (Type type); Given its ID of ∥ finds out project. Public Item FindltemByld (ItemId ItemId); ∥ finds out project in given its path. The path can be absolute or relative. If relative, if then specified a plurality of item domains when opening ItemContext ∥, NotSupportedException then dishes out. If there is no such project is then returned sky. ∥ be created to the territory machine the connection of share part with search terms. This project will be associated with this territory. Public Item FinditemByPath (string path); ∥ finds out project in given its path. The path is with respect to the item domains of appointment. Be created to the connection of specified domain with search terms. This project is associated ∥ with this territory. If there is no such project is then returned sky. Public Item FindltemByPath (string domain, string path); ∥ finds out one group of project in given its path. This path is with respect to the item domains of appointment when opening ItemContext. If there is no the such project of ∥ is then returned the sky result. Public FindResult FindAllItemsByPath (string path); Given its ID of ∥ finds out relation. Public Relationship FindRelationshipByld (ItemId itemID,
RelationshipId relationshipId); Given its ID of ∥ finds out extension. Public ItemExtension FindltemExtensionByld (ItemId itemId,
                       ItemExtensionId itemExtensionId);
∥ finds out all items, relation or the extension that can at random satisfy the specified type of given filter. If specified
Type beyond one of these types of ∥, ArgumentException then dishes out.
public FindResult FindAll(Tyoe type);
public FindResult FindAll(Type type,string filter);
∥ finds out any project, relation or the extension of the specified type that satisfies given filter. If specified one of these types
Type beyond the ∥, ArgumentException then dishes out. If do not find such object, then return sky.
public object FindOne(Type type,string filter);
∥ finds out project, relation or the extension of the specified type that satisfies given filter. If specified beyond one of these types
The ∥ type, ArgumentException then dishes out. If do not find such object, then dish out
∥ ObjectNotFoundException. If find an above object, MultipleO bjectsFoundException then dishes out.
public obiect FindOnly(Type type,string filter);
If ∥ exists project, relation or the extension of the specified type that satisfies given filter, then return true. If specified these
Type beyond one of ∥ type, ArgumentException then dishes out.
public bool Exists(Type type,string filter);
∥ specifies the object that is returned by the search that relates to object how to identify the mapping of being safeguarded by ItemContext.
public SearchCollisionMode SearchCollisionMode{get;set;}
∥ causes when having specified PreserveModifiedObject for ResultMapping. This event allows application program optionally to use
∥ retrieves the object that Russia's data are upgraded modification with this search.
public event ChangeCollisionEventHandler SearchCollision;
∥ will be attached to from the object of another ItemContext in this project context. If expression same project, relation or extension
The ∥ object does not exist in the identity map of this ItemContext, then creates the clone of this object and adds it to this mapping. If
The ∥ object exists really, and then the state with appointed object upgrades this object with content in the mode consistent with SearchCollisionMode.
public Item IncorporateItem(Item item);
public Relationship IncorporateRelationship(Relationship relationship);
Public ItemExtension IncorporateItemExtension (ItemExtension itemExtension); ∥ is used for the handling procedure of ItemContext.UpdateCollision and ItemSearcher.SearchCollision event. Public delegate void ChangeCollisionEventHandler (object source,
ChangeCollisionEventArgs args); The independent variable public class ChangeCollisionEventArgs:EventArgs that ∥ entrusts for ChangeCollisionEventHandler
Project, extension or relationship object that ∥ revises.
public object ModifiedObject{get;}
∥ is from the attribute of storage
Public IDictionary StoredProperties{get; ∥ be used for ItemContext.UpdateProgress handling procedure public delegate void UpdateProgressEventHandler (ItemContext itemContext,
UpdateProgressEventArgs args); The independent variable public class ChangeCollisionEventArgs:EventArgs that ∥ entrusts for UpdateProgressEventHandler
The current renewal operation of ∥
public UpdateOperation CurrentOperation{get;}
The object of the current renewal of ∥
public object CurrentObiect{get;}
}
∥ specifies the object that is returned by the search that relates to object how to identify the mapping of being safeguarded by ItemContext.
public enum SearchCollisionMode
{
The ∥ indication should create and return new object. Ignore the object that represents same project, extension or relation in the identity map. If
∥ has specified this option, does not then cause the SearchCollision event.
  DoNotMapSearchResults,
The ∥ indication should be returned the object from identity map. If application modification the content of object, the content of the object of then preserve revising.
If the unmodified object of ∥ is then used its content of Data Update of being returned by search. Application program can be provided for SearchCollision
The handling procedure of ∥ event, and upgating object optionally when needed.
  PreserveModifiedObjects,
The ∥ indication should be returned the object from identity map. The content of the Data Update object that use is returned by search is even object is employed
The ∥ modification of program. If specified this option, then do not cause the SearchCollision event.
  OverwriteModifiedObjects
}
The current renewal operation of ∥
public enum UpdateOperation
{
∥ provides when calling Update first. CurrentObject will be sky.
  OverallUpdateStarting,
The ∥ only Update after successfully upgrading provides before returning. CurrentObject will be sky.
  OverallUpdateCompletedSuccessfully,
∥ only provided before the Update throw exception. CurrentObject will be exception object.
  OverallUpdateCompletedUnsuccessfully,
∥ provides when starting the renewal of object. CurrentObject will quote for the object that upgrades.
  ObjectUpdateStaring,
∥ provides when the new connection of needs. CurrentObject will comprise the sign pass to ItemContext.Open or from the relation
The string in the path of the item domains of ∥ location field retrieval.
  OpeningConnection
} }
Appendix B namespace System.Storage
∥ carries out the search of striding particular type in the project context.
public class ItemSearcher
{
Constructed fuction
    public ItemSearcher();
    public ItemSearcher(Type targetType,ItemContext context);
    public ItemSearcher(Type targetType,ItemContext context,
                params SearchExpression[]filters);
Attribute
∥ is used for the filter of marking matched object.
    public SearchExpressionCollection Filters{get;}
∥ specifies the ItemContext with searched territory.
    public ItemContext ItemContext{get;set;}
The set of ∥ search parameter.
    public ParameterCollection Parameters{get;}
The ∥ searcher will be for the type of operation. For simple search, this is the type of the object that will return.
    public Type TargetType{get;set;}
Searching method
∥ finds out the object that satisfies by the TargetType of the condition of Filters appointment. If there is no such object then returns empty
    ∥FindResult。
    public FindResult FindAll();
    public FindResult FindAll(FindOptions findOptions);
    public FindResult FindAll(params SortOption[]sortOptions);
∥ finds out any one object that satisfies by the TargetType of the condition of Filters appointment. If there is no such object then returns sky.
    public object FindOne();
    public object FindOne(FindOptions findOptions);
    public object FindOne(params SortOption[]sortOptions);
∥ finds out the TargetType that satisfies by the condition of Filters appointment. If do not find such object then dish out
∥ ObjectNotFoundException. If find an above object, MultipleObjectsFoundException then dishes out.
    public object FindOnly();
    public object FindOnly(FindOptions findOptions);
Whether the object that ∥ determine to satisfy by the TargetType of the condition of Filters appointment exists.
    public bool Exists();
∥ creates the object that can be used for more effectively repeating same search.
    public PreparedFind PrepareFind();
    public PreparedFind PrepareFind(FindOptions findOptions);
    public PreparedFind PrepareFind(params SortOption[]sortOptions);
The number of the record that ∥ retrieval will be returned by FindAll ().
    public int GetCount();
The asynchronous version of ∥ the whole bag of tricks
public IAsyncResult BeginFindAll(AsyncCallback callback,
                     object state);
public IAsyncResult BeginFindAll(FindOptions findOptions,
                     AsyncCallback callback,
                     obiect state);
public IAsyncResult BeginFindAll(SortOption[]sortOptions,
                     AsyncCallback callback,
                     object state);
public FindResult EndFindAll(IAsyncResult ar);
public IAsyncResult BeginFindOne(AsyncCallback callback,
                      object state);
public IAsyncResult BeginFindOne(FindOptions findOptions,
                      AsyncCallback callback,
                      object state);
public IAsyncResult BeginFindOne(SortOption[]sortOptions,
                      AsyncCallback callback,
                      object state);
public object EndFindOne(IAsyncResult asyncResult);
public IAsyncResult BeginFindOnly(AsyncCallback callback,
                      object state);
public IAsyncResult BeginFindOnly(FindOptions findoptions,
                      AsyncCallback callback,
                      object state);
public IAsyncResult BeginFindOnly(SortOption[]sortOptiohs,
                      AsyncCallback callback,
                      object state);
public object EndFindOnly(IAsyncResult asyncResult);
public IAsyncResult BeginGetCount(AsyncCallback callback,
                      object state);
public int EndGetCount(IAsyncResult asyncResult);
public IAsyncResult BeginExists(AsyncCallback callback,
                      obiect state);
Public bool EndExists (IAsyncResult asyncResult); Option public class FindOptions { the public FindOptions () that when carrying out search, uses of ∥; Public FindOptions (params SortOption[] sortOptions); Whether ∥ specifies should postpone to load the field that can postpone to load.
public bool DelayLoad{get;set;}
The number of the coupling that ∥ returns.
public int MaxResults{get;set;}
The set of ∥ sort options.
Public SortOptionCollextion SortOptions{get; ∥ represent parameter name and value public class Parameter
∥ uses title and the Parameter of value initialization object
public Parameter(string name,object value);
The ∥ parameter name
public string Nams{get;}
The ∥ parameter value
Public object Value{get; Set; Set public class ParameterCollection:ICollection that ∥ parameter name/value is right
public ParameterCollection();
public int Count{get;}
public object this[string name]{get;set;}
public object SyncRoot{get;}
public void Add(Parameter parameter);
public Parameter Add(string name,object value);
public bool Contains(Parameter parameter);
public bool Contains(string name);
public void CopyTo(Parameter[]array,int index);
void ICollection.CopyTo(Array array,int index);
IEnumerator IEnumerable.GetEnumerator();
public void Remove(Parameter parameter);
Public void Remove (string name); The ∥ capable search of optimizing of retry that represents to attach most importance to. Public class PreparedFind { public ItemContext ItemContext{get; Public ParameterCollection Parameters{get:} public FindResult FindAll ();
public object FindOne();
public object FindOnly();
Public bool Exists (); ∥ specifies the sort options that uses in the search. Public class SortOption
The ∥ initialization object that Uses Defaults.
public SortOption();
∥ uses SearchExpression, order to initialize the SortOptions object.
public sortOption(SearchExpression searchExpression,SortOrder order);
The ∥ sign is with the search SearchExpression of the attribute of ordering.
public SearchExpression Expression{get;set;}
∥ specifies the clooating sequence of ascending order or descending
Public SortOrder Order{get; Set; The set public class SortOptionCollection:IList of ∥ sort options object
public SortOptionCollection();
public SortOption this[int index]{get;set;}
public int Add(SortOption value);
public int Add(SearchExpression expression,SortOrder order);
int IList.Add(object value);
public void Clear();
public bool Contains(SortOption value);
bool IList.Contains(object value);
public void CopyTo(SortOption[]array,int index);
void ICollection.CopyTo(Array array,int index);
public int Count{get;}
IEnumerator IEnumerable.GetEnumerator();
public void Insert(int index,SortOption value);
void IList.Insert(int index,object value);
public int indexOf(SortOption value);
int IList.IndexOf(object value);
public void Remove(SortOption value);
void IList.Remove(object value);
public void RemoveAt(int index);
    public object SyncRoot{get;}
}
∥ uses the SortOption object to specify clooating sequence
public enum SortOrder
{
    Ascending,
    Descending
} }
Appendix C namespace System.Storage public abstract class FindResult:IAsyncObjectReader
public FindResult();
∥ moves to the next position among the result with FindResult.
public bool Read();
public IAsyncResult BeginRead(AsyncCallback callback,object state);
public bool EndRead(IAsyncResult asyncResult);
The current object of ∥.
public object Current{get;}
∥ returns FindResult and whether comprises any object.
public bool HasResults{get;}
Whether ∥ returns FindResult and is closed.
public bool IsClosed{get;}
∥ returns the type of the project among this FindResult.
public Type ObjectType{get;}
∥ closes FindResult
public void Close();
void IDisposable.Dispose();
∥ returns the enumerator on the FindResult, from current location. To advance all at FindResult any enumerator that advances
∥ enumerator and 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 {
∥ is used for the common interface of iteration on object
public interface iObjectReader:IEnumerable,IDisposable
{
    object Current{get;}
  bool IsClosed{get;}
  bool HasResults{get;}
  Type objectType{get;}
  bool Read();
  void Close();
}
∥ adds asynchronous method to IObjectReader
public interface IAsyncObjectReader:IObjectReader
{
  IAsyncResult BeginRead(AsyncCallback callback,object state);
  bool EndRead(IAsyncResult result);
} }

Claims (16)

1. storage platform comprises:
Data platform, wherein stored data define according to project, element and relation, wherein, project is can be stored in the data cell in the described data storage and comprise one or more elements, element is the example that comprises the type of one or more fields, and relation is the link between at least two projects;
Define the modal sets of dissimilar project, element and relation; And
Application programming interface, it comprises a class to each of the disparity items, element and the relation that define in the described modal sets.
2. storage platform as claimed in claim 1, it is characterized in that, data also can be stored in the form to the expansion of off-the-shelf item type in the described data storage, and wherein, described application programming interface comprises a class to each different extension.
3. storage platform as claimed in claim 1 is characterized in that, the class of project, element and the relation of each type is based on the described modal sets of project, element and the relation of each type of definition generates automatically.
4. storage platform as claimed in claim 1, it is characterized in that, to the class definition of project, element and the relation of each type one group of data class, and wherein, described application programming interface also is included as the second category that described data class defines one group of public action.
5. storage platform as claimed in claim 4, it is characterized in that, described the second category comprises that expression storage platform scope and the inquiry of storing for described data provide the contextual first kind, and the Equations of The Second Kind that represents the result of the inquiry in the described data storage.
6. storage platform as claimed in claim 1, it is characterized in that, also comprise the database engine of realizing described data storage on it, and wherein, dissimilar project, element and passes ties up to and is implemented as user defined type (UDT) in the described database engine in the described data storage.
7. storage platform as claimed in claim 6, it is characterized in that, described application programming interface provides an interrogation model, described interrogation model is so that the application programmer can be in the mode with the details isolation of the query language of described application programmer and described database engine, forms inquiry based on the various attributes of the project in the described data storage.
One kind be used for providing application program and be used for storing, tissue, share and the storage platform of search data between the method for application programming interface, wherein said storage platform comprises the data storage, wherein stored data define according to project, element and relation, wherein project is can be stored in the data cell in the described data storage and comprise one or more elements, element is the example that comprises the type of one or more fields, and relation is the link between at least two projects, said method comprising the steps of:
The modal sets of dissimilar project, element and relation of definition is provided; And
For each of the different projects, element and the relation that define in the described modal sets generates a class, as the part of described application programming interface.
9. method as claimed in claim 8 is characterized in that, data also can be stored in the form to the expansion of off-the-shelf item type in the described data storage, and wherein, described method also is included as each different extension and generates a class.
10. method as claimed in claim 9, it is characterized in that, the class definition that generates for the project of each type, element and relation one group of data class, and wherein, described method also comprises and is provided as the second category that described data class defines one group of public action, as the step of an extra section of described application programming interface.
11. method as claimed in claim 10 is characterized in that, described the second category comprises that expression storage platform scope and the inquiry of storing for described data provide the contextual first kind, and the Equations of The Second Kind that represents the result of the inquiry in the described data storage.
12. method as claimed in claim 8, it is characterized in that, the data storage of described storage platform realizes at database engine, and wherein, also to be included in dissimilar project, element and relational implementations in the storage of described data be the step of the user defined type (UDT) in the described data engine to described method.
13. an application program and being used for stores, tissue, share and the storage platform of search data between application programming interface, wherein, described storage platform comprises the data storage, wherein stored data define according to project, element and relation, wherein, project is can be stored in the data cell in the described data storage and comprise one or more elements, element is the example that comprises the type of one or more fields, and relation is the link between at least two projects, and wherein, modal sets has defined dissimilar projects, element and relation, and described application programming interface comprises a class to each of the disparity items that defines in the described modal sets, element and relation.
14. application programming interface as claimed in claim 13, it is characterized in that, data also can be stored in the form to the expansion of off-the-shelf item type in the described data storage, and wherein, described application programming interface also comprises a class to each disparity items expansion.
15. application programming interface as claimed in claim 13, it is characterized in that, to the class definition of project, element and the relation of each type one group of data class, and wherein, described application programming interface also is included as the second category that described data class defines one group of public action.
16. application programming interface as claimed in claim 15, it is characterized in that, described the second category comprises that expression storage platform scope and the inquiry of storing for described data provide the contextual first kind, and the Equations of The Second Kind that represents the result of the inquiry in the described data storage.
CNB038269414A 2003-08-21 2003-08-21 Be used for application program and system and method based on the storage platform interface of item Expired - Fee Related CN100550010C (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2003/026150 WO2005029363A1 (en) 2003-08-21 2003-08-21 Systems and methods for interfacing application programs with an item-based storage platform

Publications (2)

Publication Number Publication Date
CN1820266A true CN1820266A (en) 2006-08-16
CN100550010C CN100550010C (en) 2009-10-14

Family

ID=34374762

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB038269414A Expired - Fee Related CN100550010C (en) 2003-08-21 2003-08-21 Be used for application program and system and method based on the storage platform interface of item

Country Status (9)

Country Link
EP (1) EP1646954A4 (en)
JP (1) JP2007521533A (en)
KR (1) KR100959473B1 (en)
CN (1) CN100550010C (en)
AU (1) AU2003259961B2 (en)
BR (1) BR0318464A (en)
CA (1) CA2532909A1 (en)
MX (1) MXPA06001984A (en)
WO (1) WO2005029363A1 (en)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101980203A (en) * 2010-10-29 2011-02-23 中国科学院声学研究所 Embedded file system for high-definition media
CN103124308A (en) * 2011-11-21 2013-05-29 比亚迪股份有限公司 Method and system for running application, and mobile terminal
CN103440303A (en) * 2013-08-21 2013-12-11 曙光信息产业股份有限公司 Heterogeneous cloud storage system and data processing method thereof
CN103733218A (en) * 2011-08-19 2014-04-16 微软公司 Synchronizing conversation structures in web-based email systems
CN103984540A (en) * 2014-04-14 2014-08-13 美的集团股份有限公司 Method and device for generating hardware interface running program
CN106156353A (en) * 2016-07-26 2016-11-23 北京北森云计算股份有限公司 A kind of method and system increasing multilingual on-the-flier compiler enforcement engine for data base
CN108108429A (en) * 2017-12-01 2018-06-01 深圳市小牛在线互联网信息咨询有限公司 Date storage method, device, storage medium and the computer equipment of terminal device
CN108351940A (en) * 2015-09-03 2018-07-31 策安保安有限公司 High frequency heuristic data for information security events obtains the system and method with analysis
CN110045997A (en) * 2019-04-15 2019-07-23 武汉斗鱼鱼乐网络科技有限公司 Object initialization method, apparatus, equipment and the storage medium of fundamental functional modules
CN110199284A (en) * 2017-01-24 2019-09-03 微软技术许可有限责任公司 Crossover-platform surrounds area's identity
CN112860645A (en) * 2021-02-09 2021-05-28 恒安嘉新(北京)科技股份公司 Processing method and device for offline compressed file, computer equipment and medium
CN113626835A (en) * 2021-06-25 2021-11-09 荣耀终端有限公司 Data access method and electronic equipment
CN116860905A (en) * 2023-09-04 2023-10-10 青岛市勘察测绘研究院 Space unit coding generation method of city information model

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8131739B2 (en) 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
US7590643B2 (en) 2003-08-21 2009-09-15 Microsoft Corporation Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system
US8238696B2 (en) 2003-08-21 2012-08-07 Microsoft Corporation Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
US8166101B2 (en) 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
US8095940B2 (en) 2005-09-19 2012-01-10 Citrix Systems, Inc. Method and system for locating and accessing resources
US7748032B2 (en) 2004-09-30 2010-06-29 Citrix Systems, Inc. Method and apparatus for associating tickets in a ticket hierarchy
US7680758B2 (en) 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
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
US8613048B2 (en) 2004-09-30 2013-12-17 Citrix Systems, Inc. Method and apparatus for providing authorized remote access to application sessions
US8024568B2 (en) 2005-01-28 2011-09-20 Citrix Systems, Inc. Method and system for verification of an endpoint security scan
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
US9621666B2 (en) 2005-05-26 2017-04-11 Citrix Systems, Inc. Systems and methods for enhanced delta compression
US7756826B2 (en) 2006-06-30 2010-07-13 Citrix Systems, Inc. Method and systems for efficient delivery of previously stored content
US8943304B2 (en) 2006-08-03 2015-01-27 Citrix Systems, Inc. Systems and methods for using an HTTP-aware client agent
FR2888019A1 (en) * 2005-07-04 2007-01-05 France Telecom METHOD FOR CONSTRUCTING A DIRECTORY DATABASE, COMPUTER PROGRAM PRODUCT AND CORRESPONDING SERVER
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
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
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
US7624349B2 (en) * 2006-03-21 2009-11-24 Microsoft Corporation Declarative definition enabling graphical designer reuse
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
US8631147B2 (en) 2007-03-12 2014-01-14 Citrix Systems, Inc. Systems and methods for configuring policy bank invocations
US7853678B2 (en) 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring flow control of policy expressions
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
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
WO2012043899A1 (en) * 2010-09-29 2012-04-05 정보통신산업진흥원 Vehicle-specific application store service system and method thereof
JP5891900B2 (en) 2012-03-29 2016-03-23 富士通株式会社 Access control method, server device, and storage device
US9356913B2 (en) * 2014-06-30 2016-05-31 Microsoft Technology Licensing, Llc Authorization of joining of transformation chain instances
US11940960B2 (en) 2022-04-21 2024-03-26 Folder Front, LLC Intelligent folder-based data organization system

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694597A (en) * 1994-04-26 1997-12-02 International Business Machines Corporation Method and system for optimizing access to a datastore
US6078925A (en) * 1995-05-01 2000-06-20 International Business Machines Corporation Computer program product for database relational extenders
US5991536A (en) * 1996-11-12 1999-11-23 International Business Machines Corporation Object-oriented tool for registering objects for observation and causing notifications to be made in the event changes are made to an object which is being observed
FR2780178B1 (en) * 1998-06-18 2001-08-10 Inst Nat Rech Inf Automat METHOD FOR TRANSFORMING AND TRANSPORTING DATA BETWEEN AGENT SERVERS PRESENT ON MACHINES AND A CENTRAL AGENT SERVER PRESENT ON ANOTHER MACHINE
US6199195B1 (en) * 1999-07-08 2001-03-06 Science Application International Corporation Automatically generated objects within extensible object frameworks and links to enterprise resources
WO2002003198A2 (en) 2000-07-03 2002-01-10 Oculus Technologies Corporation Access control for a decentralized or emergent model on a computer network
US6513100B1 (en) * 2000-10-30 2003-01-28 Microsoft Corporation System and method for fast referencing a reference counted item
US6999956B2 (en) * 2000-11-16 2006-02-14 Ward Mullins Dynamic object-driven database manipulation and mapping system
US6957230B2 (en) * 2000-11-30 2005-10-18 Microsoft Corporation Dynamically generating multiple hierarchies of inter-object relationships based on object attribute values
US7178100B2 (en) * 2000-12-15 2007-02-13 Call Charles G Methods and apparatus for storing and manipulating variable length and fixed length data elements as a sequence of fixed length integers
US6697818B2 (en) * 2001-06-14 2004-02-24 International Business Machines Corporation Methods and apparatus for constructing and implementing a universal extension module for processing objects in a database
KR100380996B1 (en) 2001-06-20 2003-04-23 한국전자통신연구원 system for maintaining object consistency and for implementating distributed shared memory in Java and its method

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101980203A (en) * 2010-10-29 2011-02-23 中国科学院声学研究所 Embedded file system for high-definition media
US9413703B2 (en) 2011-08-19 2016-08-09 Microsoft Technology Licensing, Llc Synchronizing conversation structures in web-based email systems
CN103733218A (en) * 2011-08-19 2014-04-16 微软公司 Synchronizing conversation structures in web-based email systems
CN103124308B (en) * 2011-11-21 2015-09-30 比亚迪股份有限公司 A kind of method, system and mobile terminal running application
CN103124308A (en) * 2011-11-21 2013-05-29 比亚迪股份有限公司 Method and system for running application, and mobile terminal
CN103440303A (en) * 2013-08-21 2013-12-11 曙光信息产业股份有限公司 Heterogeneous cloud storage system and data processing method thereof
CN103984540A (en) * 2014-04-14 2014-08-13 美的集团股份有限公司 Method and device for generating hardware interface running program
CN108351940A (en) * 2015-09-03 2018-07-31 策安保安有限公司 High frequency heuristic data for information security events obtains the system and method with analysis
CN108351940B (en) * 2015-09-03 2021-05-07 策安保安有限公司 System and method for high frequency heuristic data acquisition and analysis of information security events
CN106156353A (en) * 2016-07-26 2016-11-23 北京北森云计算股份有限公司 A kind of method and system increasing multilingual on-the-flier compiler enforcement engine for data base
CN106156353B (en) * 2016-07-26 2019-08-09 北京北森云计算股份有限公司 A kind of method and system increasing multilingual on-the-flier compiler enforcement engine for database
CN110199284B (en) * 2017-01-24 2023-05-30 微软技术许可有限责任公司 Cross platform enclosure identity
CN110199284A (en) * 2017-01-24 2019-09-03 微软技术许可有限责任公司 Crossover-platform surrounds area's identity
CN108108429A (en) * 2017-12-01 2018-06-01 深圳市小牛在线互联网信息咨询有限公司 Date storage method, device, storage medium and the computer equipment of terminal device
CN110045997A (en) * 2019-04-15 2019-07-23 武汉斗鱼鱼乐网络科技有限公司 Object initialization method, apparatus, equipment and the storage medium of fundamental functional modules
CN110045997B (en) * 2019-04-15 2022-07-05 武汉斗鱼鱼乐网络科技有限公司 Object initialization method, device, equipment and storage medium of basic function module
CN112860645A (en) * 2021-02-09 2021-05-28 恒安嘉新(北京)科技股份公司 Processing method and device for offline compressed file, computer equipment and medium
CN113626835A (en) * 2021-06-25 2021-11-09 荣耀终端有限公司 Data access method and electronic equipment
CN113626835B (en) * 2021-06-25 2022-06-17 荣耀终端有限公司 Data access method and electronic equipment
CN116860905A (en) * 2023-09-04 2023-10-10 青岛市勘察测绘研究院 Space unit coding generation method of city information model
CN116860905B (en) * 2023-09-04 2023-12-08 青岛市勘察测绘研究院 Space unit coding generation method of city information model

Also Published As

Publication number Publication date
CA2532909A1 (en) 2005-03-31
EP1646954A4 (en) 2008-06-11
MXPA06001984A (en) 2006-05-17
CN100550010C (en) 2009-10-14
BR0318464A (en) 2006-09-12
KR20060080581A (en) 2006-07-10
KR100959473B1 (en) 2010-05-25
AU2003259961B2 (en) 2010-05-27
JP2007521533A (en) 2007-08-02
WO2005029363A1 (en) 2005-03-31
AU2003259961A1 (en) 2005-04-11
EP1646954A1 (en) 2006-04-19

Similar Documents

Publication Publication Date Title
CN1820266A (en) System and methods for interfacing application programs with item-based storage platform
CN1820245A (en) System and methods for data modeling in item based storage platform
CN1961294A (en) Systems and methods for providing relational and hierarchical synchronization services for units of information manageable by a hardware/software interface system
CN1739107A (en) Systems and methods for providing synchronization services for units of information manageable by a hardware/software interface system
CN1182467C (en) Extensible distributed enterprise application integration system
Lange An object-oriented design method for hypermedia information systems
McKemmish et al. Describing records in context in the continuum: the Australian Recordkeeping Metadata Schema
JP4594306B2 (en) Self-describing business object
CN100337233C (en) Transactional file system
CN1609795A (en) Programming interface for a computer platform
JP4571636B2 (en) Service management of service-oriented business framework
CN101040280A (en) Metadata management
CN1869923A (en) System data interfaces, related system architectures
CN101048732A (en) Object oriented architecture for data integration service
CN1828527A (en) Platform for data services across disparate application frameworks
CN1601510A (en) Architecture for distributed computing system and automated design, deployment, and management of distributed applications
CN1619490A (en) Integrating design, deployment, and management phases for systems
CN1585945A (en) Mechanism for mapping XML schemas to object-relational database systems
CN1856783A (en) Data management structure associated with general data item
CN101416153B (en) Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
CN1678990A (en) Web services apparatus and methods
CN1839403A (en) Improved philanthropy management system and method of doing business
CN1755721A (en) Componentized and extensible workflow model
CN1828594A (en) Data model for object-relational data
CN1585948A (en) Application view component for system integration

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150507

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150507

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20091014

Termination date: 20200821

CF01 Termination of patent right due to non-payment of annual fee