CN101416153B - Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system - Google Patents

Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system Download PDF

Info

Publication number
CN101416153B
CN101416153B CN2004800015016A CN200480001501A CN101416153B CN 101416153 B CN101416153 B CN 101416153B CN 2004800015016 A CN2004800015016 A CN 2004800015016A CN 200480001501 A CN200480001501 A CN 200480001501A CN 101416153 B CN101416153 B CN 101416153B
Authority
CN
China
Prior art keywords
project
type
attribute
relation
photo
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2004800015016A
Other languages
Chinese (zh)
Other versions
CN101416153A (en
Inventor
S·E·达特
B·P·吉布森
C·A·埃文斯
P·S·赫尔亚
A·瓦斯齐罗
J·C·普拉特
S·C·格兰纳
N·H·巴卢
J·P·汤普森
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
Priority claimed from PCT/US2003/026144 external-priority patent/WO2005029313A1/en
Priority claimed from US10/646,632 external-priority patent/US7529811B2/en
Priority claimed from US10/692,779 external-priority patent/US8238696B2/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN101416153A publication Critical patent/CN101416153A/en
Application granted granted Critical
Publication of CN101416153B publication Critical patent/CN101416153B/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units

Abstract

In an Item-based system, images (e.g., JPEG, TIFF, bitmap, and so on) are treated as core platform objects ('image items' or, more simply, 'images') and exist in an 'image schema' that provides an extensible representation of an Image in the system-that is, the characteristics of an Image and how that Image relates to other Items (including but not limited to other Images) in the system. To this end, the Image Schema defines the properties, behaviors, and relationships for Images in the system, and the Schema also enforces rules about Images, for example, what data specific Images must contain, what data specific Images may optionally contain, how specific Images can be extended, and so on and so forth.

Description

Realize that tissue can be by the system and method for the digital images schema of hardware/software interface system information of managing unit
Quote
The sequence number that the application requires on October 24th, 2003 to submit to is 10/692, the right of priority of the United States Patent (USP) of 779 (application attorney docket MSFT-2829), the sequence number that the latter requires on August 21st, 2003 to submit to again is 10/646, the right of priority of the United States Patent (USP) of 632 (application attorney docket MSFT-1751), " SYSTEMSAND METHODS FOR THE IMPLEMENTATION OF A CORE SCHEMA FORPROVIDING A TOP-LEVEL STRUCTURE FOR ORGANIZING UNITS OFINFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACESYSTEM (realization provide tissue can by the system and method for the core schema of the top level structure of hardware/software interface system information of managing unit) " be provided for it; And the right of priority of the international patent PCT/US03/26144 of submission on August 21st, 2003, these apply for that integral body is incorporated into this by reference.
The theme of this patent also relates to the invention that discloses in the patent of following common transfer, their content is also incorporated herein by reference, these patents are: the Application No. 10/647 that on August 21st, 2003 submitted to, 058 (application attorney docket MSFT-1748) is entitled as " SYSTEMS AND METHODS FORREPRESENTING UNITS OF INFORMATION MANAGEABLE BY AHARDWARE/SOFTWARE INTERFACE SYSTEM BUT INDEPENDENT OFPHYSICAL REPRESENTATION (present and can not be independent of the system and method that physics presents by hardware/software interface system information of managing unit) "; The Application No. 10/646 that on August 21st, 2003 submitted to, 941 (application attorney docket MSFT-1749) are entitled as " SYSTEMS AND METHODS FORSEPARATING UNITS OF INFORMATION MANAGEABLE BY AHARDWARE/SOFTWARE INTERFACE SYSTEM FROM THEIR PHYSICALORANIZATION (system and method that can be kept apart by hardware/software interface system information of managing unit and its physical organization) "; The Application No. 10/646 that on August 21st, 2003 submitted to, 940 (application attorney docket MSFT-1750) carry and are " SYSTEMS AND METHODS FOR THEIMPLEMENTATION OF A BASE CHEMA FOR ORGANIZAING UNITS OFINFORMATION MANAGEABLE BY HARDWARE/SOFTWARE INTERFACESYSTEM (realize tissue can by the system and method for the basic schema of hardware/software interface system information of managing unit) "; The Application No. 10/646 that on August 21st, 2003 submitted to, 645 (application attorney docket MSFT-1752) are entitled as " SYSTEMS AND METHODS FOR REPRESENTINGRELATIONSHIPS BETWEEN UNITS OF INFORMATION MANAGEABLE BY AHARDWARE/SOFTWARE INTERFACE SYSTEM (present can by the system and method for the relation between the hardware/software interface system information of managing unit) "; The Application No. 10/646 that on August 21st, 2003 submitted to, 575 (application attorney docket MSFT-2733) are entitled as " SYSTEMS AND METHODS FORINTERFACING APPLICATION PROGRAMS WITH AN ITEM-BASED STORAGEPLATFORM (with the system and method for application program and project-based storage platform interface) "; The U. S. application patent 10/646 that on August 21st, 2003 submitted to, 646 (application attorney docket MSFT-2734), be entitled as " STORAGE PLATFORM FOR ORGANIZING, SEARCHING, the AND SHARINGDATA storage platform of search, shared data (be used to organize) "; The Application No. 10/646 that on August 21st, 2003 submitted to, 580 (application attorney docket MSFT-2735) are entitled as " SYSTEMS ANDMETHODS FOR DATA MODELING IN AN ITEM-BASED STORAGE PLATFORM (being used for the system and method at project-based storage platform data modeling) "; The Application No. 10/692 that on October 24th, 2003 submitted to, 515 (application attorney docket MSFT-2844) are entitled as " SYSTEMSAND METHODS FOR PROVIDING SYNCHRONZATION SERVICES FOR UNITSOF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWAREINTERFACE SYSTEM (to the system and method for synchronous service can be provided by hardware/software interface system information of managing unit) "; The Application No. 10/692 that on October 24th, 2003 submitted to, 508 (application attorney docket MSFT-2845) are entitled as " SYSTEMS AND METHODS FOR PROVIDINGRELATIONAL AND HIERARCHICAL SYNCHRONIZATION SERVICE FORUNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWAREINTERFACE SYSTEM (to system and method relation and synchronous service layering is provided by the manageable message unit of hardware/software interface system) "; The Application No. 10/693 that on October 24th, 2003 submitted to, 362 (application attorney docket MSFT-2846) are entitled as " SYSTEMS AND METHODS FORTHE IMPLEMENTATION OF A SYNCHRONIZATION SCHEMAS FOR UNITS OFINFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACESYSTEM (to realized the system and method for synchronous mode by the manageable message unit of hardware/software interface system) "; With the Application No. of submitting on October 24th, 2,003 10/693,574 (application attorney docket MSFT-2847) are entitled as " SYSTEMS AND METHODS FOR EXTENSIONS ANDINHERTANCE FOR UNITS OF INFORMATION MANAGEABLE BY AHARDWARE/SOFTWARE INTERFACE SYSTEM (being used for the system and method by manageable message unit expansion of hardware/software interface system and succession) ".
Technical field
The present invention relates generally to the information storage and retrieval field, relate in particular to and be used for organizing, search for and the active storage platform of the data of different types (particularly pictorial data) of shared computerized system.
Background
In last decade, the capacity of single disc is annual to increase about percent 70 (70%).The calculated to a nicety surprising growth of CPU (central processing unit) (CPU) ability in several years in the past of mole (Moore) rule.Wiredly provide quantitatively huge being connected and bandwidth with wireless technology.Suppose that current trend continues, general laptop computer will have the storage of about terabyte (TB) and comprise millions of files in the several years, and the driver of 500,000,000,000 bytes (500GB) becomes common.
The consumer uses their computing machine to be mainly used in communication and organize personal information, no matter they are the data or the medium 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.
What time that developer and infotech (IT) department investment is a large amount of and money made up themselves is used for the abstract data storage of public storage, to present as item orders 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 now on the computing machine of operation Microsoft Windows operating system.Many application programs as email client and Personal Finance program keep address book separately, and have only seldom shared between the address book application that each such program is safeguarded respectively.Thereby, financial procedure (as MicrosoftMoney) not be maintained in address in the e-mail contacts file (as the contacts folder among the Microsoft Outlook) and share payer's address.Really, many users have a plurality of equipment, should be logically between these equipment and between being included in as the various additive sources of the cell-phone telephone number of commerce services such as MSN and AOL their personal data synchronously; Yet the cooperation major part of shared document reaches by document is attached to email message-and this is manual and poor efficiency.
The classic method that a reason that lacks cooperation is the information in the organize computer systems concentrates on the system (" file system ") of use 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 the Multics operating system in nineteen sixty for exploitation is considered to be in and uses file, file and catalogue to manage the pioneer of storage data units on the operating system grade.Particularly, Multics uses symbolic address (thereby notion of introducing file path) in the hierarchy of file, and wherein the physical address of file is opaque to user (application program and final user).This file system gives no thought to the file layout of any single file, and the pass that reaches hereof between the file ties up to (that is, different with the position of file in the hierarchy) 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 a state nearly 40 years in this area.
Yet, though the reasonable representation of the information in the physical store system that resides in computing machine 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 handle and operating system provides indirect (explanation) between what (file, file and catalogue) layer the user.As a result, user (application program and/or final user) have to force message 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 vertical shaft (silo) of data, have only less data between each vertical shaft, 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-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 classifition with single file 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 storer that uses 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, though thereby the storer of content addressable is to being proved to be useful by using as the small-scale of equipment such as high-speed cache and Memory Management Unit, but still impossible owing to a variety of causes to the extensive use 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, though but these trials have the feature of strong database, and good non-representation of file, but handling aspect the representation of file ineffectively, can not reappear on the hardware/software interface system level speed, efficient and simplicity based on the 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, organize and utilize the necessary database feature of the relation that exists effectively 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 when suitably representing file and provide some data necessary Al Kut to levy again, be proved to be not enough in the expression of handling non-file, this is the same core shortcoming of traditional file systems.
Database technology is another professional domain that has similar challenge.For example, though the relevant database model has been obtained very big coml success, in fact stand alone software retail trader (ISV) has generally used available function sub-fraction in the relevant database software product (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.Though this is had some reasons of understanding easily (as platform or database unknowable), the reason of a normal unheeded key be database there is no need to provide primary commercial application program retail trader to need really accurately abstract.For example, though really the world has notion as " client " or " projects " such as " orders " (and " line item " of the embedding of order is as wherein project and project itself), and relevant database only table and capable aspect talking about.As a result, though application program may wish to have consistance, locking, safety and/or trigger on project level aspect (only listing), database only provides these features on table/row grade usually.Although also can work finely if each project is mapped to the single row of certain table of database, but under 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 abstract substantially.In other words, the fundamental relation model does not provide enough platforms of the storage data of developing advanced application thereon easily, because the fundamental relation model need 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 (as " project ", " expansion ", " relation " etc.) that provides usefulness for useful territory abstract (as " individual ", " position ", " incident " etc.).
The above-mentioned defective of consideration in available data storage and database technology, need a kind of new storage platform, it has improved the ability of all types data in tissue, search and the shared computer system, this storage platform expansion and widened data platform, surmount existing file system and Database Systems, and it is designed to store all types of data.Related invention incorporated herein by reference satisfies this requirement.
Yet the storage of image (photo, digital image etc.) is not standardized, and can not vague generalization between each platform and each application program.Though application program can comprise the API that is applicable to particular image form (as JPEG), the developer of such application program must know this form, comprises suitable application programming interfaces (API), and finishes and the necessary conversion of described form interoperability.Short is the utility mode (or modal sets) that is used for all image objects of computer system in this area, and the present invention satisfies this specific requirement in conjunction with related invention incorporated herein by reference.
General introduction
Following summary provides the summary of the various aspects of describing of the present invention in the related invention incorporated herein by reference context of (being called " related invention ").This summary does not attempt to provide the description that covers nothing left of all importances of the present invention, does not define scope of the present invention yet.On the contrary, this summary is intended to as the foreword to hereinafter the detailed description and the accompanying drawings.
The present invention and related invention together at be used to organize, the storage platform of search and shared data.The notion of data storage is expanded and widened to storage platform of the present invention, surpasses existing file system and Database Systems, and be designed to store all types of data, comprises structurized, non-structured or semi-structured data.
Storage platform of the present invention is included in the data storage that realizes on the database engine.Database engine comprises the relevant database engine of band object relationship expansion.Data storage has realized supporting the tissue, search of data, shared, synchronous and safe data model.In pattern, described the data of particular type, and this platform provides the mode of extension group so that the mechanism of new data type (mainly being the subtype of the fundamental type that provided by this pattern) to be provided.Synchronizing capacity is convenient to shared data between user or system.The ability of similar file system is provided, and it allows the interoperability of data storage and existing file system, but does not have the restriction of traditional file systems.Change follow-up mechanism the tracking data ability that storage changes is provided.This storage platform also comprises one group of application programming interfaces, and they make application program can visit all aforementioned capabilities of this storage platform, and visits the data of describing in pattern.
The data model of being realized by data storage is according to the unit of project, element and contextual definition data storage.Project is a storable data cell in the data storage, and can comprise one or more elements and relation.Element is the example that comprises the type of one or more fields (being also referred to as attribute here).Relation is two links between the project.(as used herein, these and other particular term can be by capitalizationization, to distinguish other term that uses nearby; Yet the tangible term that is not intended to distinguish capitalization, should not be supposed or implicit such differentiation as " item " as " Item (project) " and the same term of not capitalizing).
Computer system also comprises a plurality of projects, but wherein each project formation can be by the discrete canned data unit of hardware/software interface system processing; Constitute a plurality of project folders of the organized structure of described project; And the hardware/software interface system that is used to handle a plurality of projects, wherein each project belongs at least one project folder, and can belong to an above project folder.
Project or some item attribute value can dynamically be calculated, rather than derive from persistent storage.In other words, hardware/software interface system does not require that project is stored and supports some operation, as the identifier (in the chapters and sections of describing application programming interfaces or API, describing more fully) of enumerating ability or given its storage platform of current project team come search terms ability-for example, project can be the current location of mobile phone or the temperature reading on the temperature sensor.Hardware/software interface system can be handled a plurality of projects, and can further comprise the project that can be interconnected by a plurality of relations of hardware/software interface system management.
The hardware/software interface system of computer system also comprises core schema, is understood by described hardware/software interface system and can be with the predetermined core project of directly handling with predictable mode to define one group.For handling a plurality of projects, computer system interconnects described project and a plurality of relation, and manages described relation on the hardware/software interface system level.
The API of storage platform provides data class to expansion of each project, project and the relation that defines in the storage platform modal sets.In addition, application programming interfaces provide one group of framework class, the public behavior group of their definition of data classes, and provide the basic programming model of storage platform API with data class.Storage platform API provides the interrogation model of simplification, makes the application programmer can be based on the various attributes of all projects in the data storage, forms inquiry so that the application programmer needn't understand the mode of details of the query language of underlying database engine.Storage platform API also collects the change of project being made by application program, and then they is organized in the correct renewal that is needed by the database engine (or storage engines of any kind) of realizing data storage.This makes the application programmer make change to the project in the storer, and leaves the complicacy that data storage is upgraded for API.
By the data of its public storage basis and medelling, storage platform of the present invention makes consumer, knowledge worker and enterprise can make more effective application development.It provides abundant and extendible application programming interfaces, and the ability that is contained in its data model in not only making can be used, and can also comprise and expand existing file system and data bank access method.
In view of this entire infrastructure of inter-related invention (describing in detail in second joint of describing in detail), the present invention is especially at the utility mode to all image objects (visual project) in the computer system (describing in detail in the 3rd joint of describing in detail).Describe in detail and accompanying drawing below of the present invention, further feature of the present invention and advantage become fully aware of.
Brief description of the drawings
Above summary and of the present invention below be described in detail in when reading in conjunction with the accompanying drawings and can understand better.For purpose of the present invention is described, the embodiment of each side of the present invention is shown in the drawings; Yet, the concrete ways and means that the invention is not restricted to disclose.In the accompanying drawing:
Fig. 1 is that expression can be in conjunction with the block diagram of the computer system of aspects of the present invention;
Fig. 2 is the block diagram that the computer system that is divided into three component groups is shown: nextport hardware component NextPort, hardware/software interface module and application component;
Fig. 2 A be illustrated in based in the operating system of file to being combined in the traditional of file in the file in the catalogue based on tree-like hierarchy;
Fig. 3 is the block diagram that data platform is shown;
Fig. 4 is illustrated in the structural relation between project, project folder and the classification;
Fig. 5 A is the block diagram that the structure of project is shown;
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 its complicated type is further described (clearly listing);
Fig. 6 A shows project the subtype of the project that work finds in basic schema;
Fig. 6 B is the block diagram that the subtype project of Fig. 6 A is shown, and wherein lists the type (except its direct attribute) of its succession clearly;
Fig. 7 illustrates the basic schema that comprises two top layer class type-Item (project) and PropertyBase (attribute basis), and the block diagram of the other basic schema of therefrom deriving;
Fig. 8 A is the block diagram that is illustrated in the project in the core schema;
Fig. 8 B is the block diagram that is illustrated in attribute type in the core schema;
Fig. 9 illustrates project folder, its member's project and the block diagram of interconnected relationship between project folder and member's project thereof;
Figure 10 is the block diagram that classification (itself also is a project), its member's project and the interconnected relationship between classification and member's project thereof are shown;
Figure 11 is the diagram of reference type hierarchy that the data model of storage platform is shown;
Figure 12 illustrates the diagram how relation is classified;
Figure 13 is the diagram that informing mechanism is shown;
Figure 14 illustrates the diagram that two affairs are all inserted new record the example of same B tree;
Figure 15 illustrates data and changes testing process;
Figure 16 illustrates exemplary catalogue tree;
Figure 17 illustrates and will move to the example of storage platform data storage based on the existing file folder of the file system of catalogue;
Figure 18 illustrates the notion of include file folder;
Figure 19 illustrates the basic architecture of storage platform API;
The various assemblies of the schematically illustrated storage platform API stack of Figure 20;
Figure 21 A is the diagrammatic representation of example contacts project mode;
Figure 21 B is the diagrammatic representation to the element of the example contacts project mode of Figure 21 A;
Figure 22 illustrates the Runtime Library framework of storage platform API;
Figure 23 illustrates the execution of " FindAll " operation;
Figure 24 illustrates the process that generates storage platform API class from the storage platform pattern;
Figure 25 illustrate File (file) API based on pattern;
Figure 26 is the diagram that the access mask form that is used for the data security purpose is shown;
(part a, b's Figure 27 c) draw from having the safety zone of the new equal protection of opening up the safety zone now;
Figure 28 is the diagram that the notion of project search view is shown;
Figure 29 is the diagram that the exemplary items hierarchy is shown;
Figure 30 A illustrates the interface " interface 1 " as the pipeline of first and second code segments communication;
Interface shown in Figure 30 B comprises interface object I1 and I2, and they can communicate by letter first and second code segments of system by medium M;
How the function that is provided by interface " interface 1 " Figure 31 A cuts apart again if being provided, so that the transition of communications of this interface is arrived a plurality of interfaces " interface 1A ", " interface 1B ", " interface 1C ";
Figure 31 B the function that is provided by interface I1 is provided how is divided into a plurality of interface I1a, I1b, I1c again;
The situation that Figure 32 A illustrates that insignificant parameter p recision can be left in the basket or substitutes with arbitrary parameter;
Figure 32 B illustrates the situation that the replaced interface of interface replaces, and this alternative interfaces is defined by ignoring or adds parameter to interface;
Figure 33 A illustrates the situation that first and second code segments are integrated into the module that comprises both;
Figure 33 B illustrates can be with the part or all of situation that writes another interface with the interface of formation merging of interface embeddedly;
Figure 34 A illustrates one or more snippets middleware and how to change the communication of first interface so that make them meet one or more different interfaces;
Figure 34 B illustrates how to introduce code segment with interface, with from an interface received communication, but function is sent to the second and the 3rd interface;
How Figure 35 A can be transformed into another code segment from a code segment with communication if illustrating instant compiler (JIT);
Figure 35 B illustrates the JIT method of using the one or more interfaces of dynamic rewriting and comes dynamic decomposition or change described interface;
Figure 36 illustrates image pattern and (Fig. 7's) basic schema and (Fig. 8 A's) core schema, to be illustrated in the cross correlation between each project in each pattern.
Describe in detail
Catalogue
A. example calculation environment ... ... ... ... ... ... ... ... ..14
B. traditional storage based on file ... ... ... ... ... ... ... ..17
II. be used to organize, the WINFS storage platform of search and shared data ... ... ... ... ..18
A. vocabulary ... ... ... ... ... ... ... ... ... .18
B. storage platform is summarized ... ... ... ... ... ... ... ... .19
C. data model ... ... ... ... ... ... ... ... ... ..20
1. project ... ... ... ... ... ... ... ... ... .21
2. project label ... ... ... ... ... ... ... ... ... 24
3. project folder and classification ... ... ... ... ... ... ... .24
4. pattern ... ... ... ... ... ... ... ... ... .26
A) basic schema ... ... ... ... ... ... ... ... .26
B) core schema ... ... ... ... ... ... ... ... .26
5. concern ... ... ... ... ... ... ... ... ... .28
A) relation statement ... ... ... ... ... ... ... ... .28
B) hold relation ... ... ... ... ... ... ... ... .30
C) embed relation ... ... ... ... ... ... ... ... .31
D) adduction relationship ... ... ... ... ... ... ... ... .31
E) rule and constraint ... ... ... ... ... ... ... ... ..32
F) Guan Xi ordering ... ... ... ... ... ... ... ... ..32
6. extensibility ... ... ... ... ... ... ... ... ... 36
A) project expansion ... ... ... ... ... ... ... ... .37
B) expansion NestedElement type ... ... ... ... ... ... 40
D. database engine ... ... ... ... ... ... ... ... ... 41
1. use the data storage of UDT to realize ... ... ... ... ... ... ..42
2. project mapping ... ... ... ... ... ... ... ... ... 43
3. expansion mapping ... ... ... ... ... ... ... ... ... 44
4. nested element mapping ... ... ... ... ... ... ... ... ..44
5. object identity ... ... ... ... ... ... ... ... ... 44
6.SQL object naming ... ... ... ... ... ... ... ... 44
7. row name ... ... ... ... ... ... ... ... ... ..45
8. search view ... ... ... ... ... ... ... ... ... 46
A) project ... ... ... ... ... ... ... ... ... ..46
(1) master project search view ... ... ... ... ... ... ... .46
(2) the project search view of branch type ... ... ... ... ... .47
B) project expansion ... ... ... ... ... ... ... .47
(1) main expanded search view ... ... ... ... ... ... .47
(2) the expanded search view of branch type ... ... ... ... ... .48
C) nested element ... ... ... ... ... ... ... ..48
D) relation ... ... ... ... ... ... ... ... ..48
(1) primary relation search view ... ... ... ... ... ... .48
(2) relationship example search view ... ... ... ... ... ..49
e)...................................................50
9. upgrade ... ... ... ... ... ... ... ... .50
10. change and follow the tracks of and gravestone ... ... ... ... ... ... ..50
A) change tracking ... ... ... ... ... ... ... .50
(1) change in " master " search view is followed the tracks of ... ... ... ... .51
(2) change in " the branch type " search view is followed the tracks of ... ... ... .52
B) gravestone ... ... ... ... ... ... ... ... ..52
(1) project gravestone ... ... ... ... ... ... ... .52
(2) expansion gravestone ... ... ... ... ... ... ... .53
(3) concern gravestone ... ... ... ... ... ... ... .53
(4) gravestone is removed ... ... ... ... ... ... ... .54
11. assistant API and function ... ... ... ... ... ... ... 54
A) function [System.Storage] .GetItem.......................54
B) function [System.Storage] .GetExtension..................54
C) function [System.Storage] .GetRelationship...............54
12. metadata ... ... ... ... ... ... ... ... .55
A) pattern metadata ... ... ... ... ... ... ... ..55
B) instance metadata ... ... ... ... ... ... ... ..55
E. security ... ... ... ... ... ... ... ... .55
F. notify and change tracking ... ... ... ... ... ... ... ..55
It is G. synchronous ... ... ... ... ... ... ... ... ... 56
Storage platform to storage platform synchronously ... ... ... ... ... ..57
A) synchronous (Sync) controlling application program ... ... ... ... ... ..57
B) pattern note ... ... ... ... ... ... ... .57
C) configuration synchronously ... ... ... ... ... ... ... .58
(1) community's file-mapping ... ... ... ... ... 59
(2) overview ... ... ... ... ... ... ... ..60
(3) timetable ... ... ... ... ... ... ... ... 60
D) conflict is handled ... ... ... ... ... ... ... ... .61
(1) collision detection ... ... ... ... ... ... ... .61
(a) based on the conflict of knowledge ... ... ... ... ... ... .61
(b) based on the conflict that retrains ... ... ... ... ... ... .61
(2) conflict is handled ... ... ... ... ... ... ... .61
(a) conflict is decomposed automatically ... ... ... ... ... ... 62
(b) conflict log record ... ... ... ... ... ... 62
(c) conflict examination and decomposition ... ... ... ... ... ... .63
(d) propagation of the convergence of duplicate and conflict decomposition ... ... ... 63
To non-storage platform data storage synchronously ... ... ... ... ... 63
A) synchronous service ... ... ... ... ... ... ... ... .64
(1) change is enumerated ... ... ... ... ... ... ... .64
(2) change application ... ... ... ... ... ... ... .65
(3) conflict is decomposed ... ... ... ... ... ... ... .65
B) adapter is realized ... ... ... ... ... ... ... ..65
3. security ... ... ... ... ... ... ... ... ..65
4. manageability ... ... ... ... ... ... ... ... 66
H. traditional file interoperability ... ... ... ... ... ... ... 66
I. storage platform API...............................................67
III. image pattern and auxiliary mode (image pattern group) ... ... ... ... ... 72
A. image pattern ... ... ... ... ... ... ... ... ..72
B. picture mode ... ... ... ... ... ... ... ... ..75
C. analytic attribute pattern ... ... ... ... ... ... ... ... .76
IV. conclusion ... ... ... ... ... ... ... ... ... ... 76
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, present inventor imagination, claimed theme also can otherwise be implemented, and comprises the different step that is similar to this declarative description or the combination of step with the technology in and future current in conjunction with other.In addition, though term " step " can be used for meaning the different elements of the method that is adopted here, however implicit specific order between each step that this term can not be interpreted as here disclosing, unless described the order of each step clearly.
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.Though 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 computing machine 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.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 distributed computing environment that wherein task is by finishing by the teleprocessing equipment of communication network link.In distributed computing environment, 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 some kinds bus-structured any, any the local bus that comprises memory bus or memory controller, peripheral bus and use various bus architectures.System storage comprises ROM (read-only memory) (ROM) 24 and random access storage device (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 is stored among the ROM 24.Personal computer 20 also can comprise the disc driver 28, read-write of hard disk drive 27, the read-write moveable magnetic disc 29 of the reading writing harddisk (not shown) CD drive 30 as the removable CD 29 of CDROM or other light medium.Hard disk drive 27, disc driver 28 and CD drive 30 are respectively by hard disk drive interface 32, disk drive interface 33 and CD drive interface 34 connected system buses 23.Driver and relevant computer-readable medium thereof provide the non-volatile memory of computer-readable instruction, data structure, program module and other data for personal computer 20.Though exemplary environments described herein adopts hard disk, moveable magnetic disc 29 and removable CD 31, those skilled in the art is understood, but in the exemplary operation environment, also can use stored energy other type computer computer-readable recording medium, as magnetic tape cassette, flash card, digital video disc, Bernoulli magnetic tape cassette, random-access memory (ram), ROM (read-only memory) (ROM) etc. by the data of computer access.Similarly, example context also can comprise the surveillance equipment of many types, 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 input to personal computer 20 by ordering as input equipments such as keyboard 40 and positioning equipments 42 with information.Other input equipment (not shown) can comprise microphone, operating rod, game mat, satellite dish, scanner etc.Here be connected to processing unit 21 with other input equipment normal open overcoupling to the serial line interface 46 of system bus, but also can connect, as parallel port, game port or USB (universal serial bus) (USB) by other interface.The display device of monitor 47 or other type also is connected to system bus 23 by the interface as video adapter 48.Except that monitor 47, personal computer generally includes as other peripheral output device (not shown) such as microphone and printers.The example system of Fig. 1 also comprises primary adapter 55, small computer system interface (SCSI) bus 56 and is connected to the External memory equipment 62 of SCSI bus.
Personal computer 20 can use logic 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, though memory storage device 50 only is shown in Fig. 1.The logic of drawing among Fig. 1 connects and comprises Local Area Network 51 and wide area network (WAN) 52.Such network environment is common in office, enterprise-wide. computer networks, Intranet and the Internet.
When using in the lan network environment, personal computer 20 is connected to LAN51 by network interface or adapter 53.When using in the WAN network environment, personal computer 20 generally includes modulator-demodular unit 54 or is used for by setting up other device of communication as wide area networks such as the Internet 52.Built-in or external modulator-demodular unit 54 is by serial port interface 46 connected system buses 23.In network environment, program module or its part that relative personal computer 20 draws can be stored in the remote memory storage device.Be appreciated that it is exemplary that the network that illustrates connects, and can use other device of setting up communication link between computing machine.
Shown in the block diagram of Fig. 2, computer system 200 can be divided into three component 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 the various embodiment of computer system, nextport hardware component NextPort 202 can comprise CPU (central processing unit) (CPU) 21, storer (ROM 24 and RAM 25), basic input/output (BIOS) 26 and various I/O (I/O) equipment, 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, documentor, commercial programs, video-game etc.Application program provides computer resource to be used to various users (machine, other computer system and/or final 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, itself comprises shell and kernel the most applications latter." operating system " is to start to take on the separate procedure of 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 the operating system place in computer system or other component software outside the operating system.The purpose of hardware/software interface system provides user's environment of executive utility therein.The target of any hardware/software interface system is to make computer system easy to use, and utilizes computer hardware with effective and efficient manner.
Hardware/software interface system generally is loaded into computer system when starting, and manages all application programs in computer system subsequently.Application program is by coming with hardware/software interface system mutual via application programming interfaces (API) request service.It is mutual with hardware/software interface system that some application program can be passed through as command language or graphic user interface (GUI) final user.
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, what time sort run is which application program hardware/software interface system determine with, and how long allows in turn each being used journey before switching to the Another Application program.Hardware/software interface system is also managed sharing of between a plurality of application programs internal storage, and handles the input and output that commute as 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 the final user in some cases).Hardware/software interface system also can descend pass the management of (as printing) of (offload) batch processing job, makes application program started can break away from this work and restarts other processing and/or operation.On the computing machine that parallel processing can be provided, hardware/software interface system is also managed partition program, makes it move on 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 is called " operating system shell " in an operating system).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 an innermost layer direct and hardware/software interface system that nextport hardware component NextPort is mutual.
Be particularly useful for computerized system though can conceive many embodiment of the present invention, yet in this explanation, do not mean that and limit the invention to those embodiment.On the contrary, term used herein " computer system " is intended to comprise can storage and process information and/or can use any and all devices of the behavior or the execution of canned data opertaing device itself, and no matter whether those device, in essence are electronics, mechanical, logic or virtual.
B. traditional storage based on file
In current most computers system, " file " but be the unit of canned data, 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) message unit of hardware/software interface system processing.File group is organized into " file " usually.In MicrosoftWindows, Macintosh OS and other hardware/software interface system, file is the set of the file that can be retrieved as single message unit, move and handle.These files and then be organized into are called arranging based on tree-like hierarchy of " catalogue " (going through in the back).In 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 interchangeable, and early stage apple computer system (as Apple IIe) uses term " classification " to replace catalogue; Yet all these terms are regarded as synonym and can being used alternatingly when here using, 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 tree-like hierarchy, and wherein file is combined into file, file and then arrange by the relative node location that comprises directory tree.For example, shown in Fig. 2 A, basic document folder (or " root directory ") 212 based on the file system of DOS can comprise a plurality of files 214, its each can also comprise other file (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, though 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.Not strange, the physical organization of file organization having been reflected indirectly the typical storage medium (as hard disk, floppy disk, CD-ROM etc.) that is used to store these files to the method for file hierarchy.
Except that above-mentioned, each file be to its sub-folder and its catalogue container-promptly, each file has its sub-folder and file.For example, when file is deleted by hardware/software interface system, the sub-folder and the file also deleted (sub-folder and the file that under the situation of each sub-folder, also recursively comprise it) of this document folder.Equally, each file is general only to be had by a file, though and file can be copied and copy is positioned at different files, the copy of file itself is difference and separate unit, and it does not have directly with source document and is connected (not being reflected to wave file as the change to source document on the hardware/software interface system level).Therefore in this respect, file and file are " physics " in itself handle because file is similar to physical container, and file as different in these containers and independently physical element handle.
II. be used to organize, the WINFS storage platform of search and shared data
The present invention in conjunction with invention incorporated herein by reference at be used to organize, the storage platform of search and shared data.Storage platform of the present invention is expanded and has been widened data platform, surmounts file system discussed above and Database Systems, and is designed to store all types of data, comprises the data of the format 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 supporting jointly to all objects of final user by hardware/software interface system shell.Project also tool comprises the feature (going through 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 disguising as 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 at the bottom hardware assembly of computer system and the interface between the application program of carrying out on the 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 at the operating system place of computer system or other component software except that operating 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, storage platform 300 is included in the data storage 302 that realizes on the database engine 314.In one embodiment, database engine comprises the relevant database engine that has the object relationship expansion.In one embodiment, relevant database engine 3 14 comprises Microsoft SQL Server relevant database engine.Data storage 302 realizes supporting the tissue, search of data, shared, synchronous and safe data model 304.Describe specific data type in as mode 3 40 isotypes, and storage platform 300 is provided for the instrument 346 that adopts these patterns and be used to expand 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, all describes in detail later.Data storage 302 also provides one group of application programming interfaces 312, with the ability to other storage platform assembly that utilizes this storage platform and application program (as application program 350a, 350b and 350c) demonstrating data storage 302.Storage platform of the present invention also comprises application programming interfaces (API) 322, makes as application program 350a, and application programs such as 350b and 350c can be visited all above-mentioned functions of storage platform and can visit the data of describing in pattern.Application program can be in conjunction with waiting other API to use storage platform API 322 as OLE OB API324 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 to shared data between user or system.For example, synchronous service 330 allows and the interoperability that has with other data storage 340 of data storage 302 same format, and visit has the data storage 342 of other form.Storage platform 300 also provides data storage 302 and the file system ability 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 may be embodied in the form as Additional Services 328 such as Info Agent service 334 and notification service 332, and are embodied in the form of other utility routine 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 the data of its public storage basis and 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, is contained in the ability in its data model in not only can obtaining, and can also comprise and expand existing file system and data bank access method.
Reach in the foregoing description in various accompanying drawings, 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 restriction like this.
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 data storage, search, shared, synchronous and safety.In data model of the present invention, " project " is the elementary cell of canned data.This data model provides a kind of mechanism, be used for statement project and project expansion, be used to be based upon the relation between the project and be used for the project organization to project folder and classification, below with 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), and 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, Binary, Boolean, Int16, Int32, Int64, Single, Double, Byte, DateTime, Decimal and GUID.Can use the type of any primitive type (have following note some restriction) or any structure to come the attribute of define styles.For example, Location (position) type definable has 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 name 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 name 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 attribute StartDate (from date) and EndDate (date of expiry) in addition, represent the time period of this resident living at 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 that provides as endpoint type constraint.For example the LivesAt relation can not be that wherein Automobile (automobile) is Occupant (resident's) a relation, because Automobile is not Person.
Data model allows the subtype-superclass type relation between define styles.Subtype-the superclass that is also referred to as the fundamental type relation is the definition as follows of type relation, if type A is the fundamental type of type B, each example that then must be B also is the situation of the example of A.The another kind of method of expressing is that each example that meets B must meet A.For example, if the attribute Name (name) that A has the String type, and B has the attribute Age (age) of Int16 type, then draws, any example of B must have Name and Age concurrently.The hierarchy of type can be envisaged as the tree that has the single superclass type on root.The branch of root provides first order subtype, and this grade branch provides second level subtype, and so on, and up to end of blade (leaf-most) subtype that itself no longer has any subtype.Tree is not limited to the unified degree of depth, but can not comprise any loop.Given type can have the perhaps many subtypes of zero and zero or a superclass type.Given example can meet the superclass type an of type and the type at most.In other words, to the tree in arbitrary grade locate given example, this example can meet a subtype on this grade at most.If the example of a type must also be the example of the subtype of the type, then to be said to be abstract to the type.
1. project
Project is the unit of storable 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 final 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 the new attribute and the feature of relation.
Project is the object of common operation, as copying, delete, move, open, print, back up, recover, duplicate etc.Project is the unit that can be stored and retrieve, but and the form of ownership of the canned data of handling by storage platform exist as the attribute or the relation between the project of project, project, its each more go through below.
Project is intended to represent the data cell of understanding that show and easy, as contact person (Contacts), people (People), service (Services), position (Locations), (various types of) document (Documents) etc.Fig. 5 A is the block diagram that the structure of project is shown.The underproof 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 (the Core pattern goes through 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 is represented immediately following attribute-name ground, and is separated with attribute-name with colon (": ").On the right of type name, the quantity of the value that this attribute type is allowed represent that between square bracket (" [] ") wherein unspecified and/or unconfined quantity (" many ") represented in the asterisk (" * ") on colon (": ") the right." 1 " on colon the right shows maximum values.Zero (" 0 ") on the colon left side shows that this attribute is optional (void value fully)." 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 define styles 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 a project also constitutes " nested element ", because the details of complicated type is nested in the direct project to define its attribute, and the information appliance that belongs to these complicated types has the project of these attributes to keep (in the border of this project, discussing as the back).These notions 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.PostalAddress attribute type definition, the project of attribute type PostalAddress can expect to have zero or a City (city) value, zero or a Country Code (country code) value, zero or MailStop (country code) value and any amount (zero arrive many) PostalAddress type or the like.In this way, defined the shape of the data of the particular community in the project.The EAddress attribute type is definition similarly as shown.Though can randomly use in this application here, the other method that is illustrated in complicated type in the Location project is to use each attribute of each complicated type of wherein listing to draw this project.Fig. 5 C is the block diagram that the Location project is shown, and further describes its complicated type therein.Yet should be appreciated that the another kind of Location project represents it just is same project to shown in Fig. 5 A in this Fig. 5 C.Storage platform of the present invention also allows subclassification (subtyping), thereby an Attribute class can be 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 goes through in the back) that finds in basic schema.Fig. 6 A illustrates the subtype of a project (in this example for Location project) for the Item item types that finds in basic schema.In this figure, arrow represents that Location project (as all other projects) is the subtype of Item item types.Item item types as the elementary item of therefrom deriving all other projects has some important attribute and various time marks as ItemId, thereby has 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, though 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.
If project is an object independently, thereby deletion one project, and also all of delete items directly and the attribute of inheriting.Similarly, when retrieval during one project, retrieval be this project and all directly and the attribute of inheriting (comprising the information that belongs to its complex properties type).Some embodiment of the present invention can make the people can be in the subclass 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 by adding new attribute to the existing attribute of the type of this project and expanded.These " expansions " are thereafter the true attributes 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, comprises copy, deletion, moves, establishment etc.For example in some embodiment of the present invention, when copy one project, all the elements within this item boundaries also are copied.To each project, the border comprises following:
The item types of project, and, be any suitable sub-type information (information that promptly belongs to father's item types) if this project is another purpose subtype (under the situation as some embodiment of the present invention of deriving from the single project of basic schema and item types at all items).If the original project that will copy is another purpose subtype, this copy also can be the subtype of this identical items.
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 identical 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), embedding project is considered to wherein embed the part as the project of operations such as copy, deletion.
2. project label
In overall project space, identify project uniquely with ItemID.The Base.Item type definition store the field ItemID of the type GUID of this project identity.One project must accurately have only an identity in data storage.
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 by name therefrom derives all items reference type.ItemReference (project is quoted) type definition the 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 the function of given one search terms when quoting.Call the part of Resolve method as storage platform API 322.
ItemIDReference (item id is quoted) is the subtype of ItemReference.It has defined Locator (steady arm) and ItemID field.The territory of Locator field name (i.e. sign) project.It is handled by the locator resolution method that the value of Locator can be resolved to item domains.The ItemID field is the ItemID type.
ItemPathReference (item Path is quoted) is the particularization of the ItemReference of definition Locator and Path (path) field.Locator field identification one item domains.It is handled by the locator resolution method that the value of Locator can be resolved to item domains.It is (relatively) path in the storage platform name space of root that the Path field comprises with the item domains that is provided by Locator.
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.
Reform discussed above is represented by the reference type hierarchy shown in Figure 11.The 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, make when a project in a project folder during accessed and revision, the project of this revision can directly be visited from another project folder subsequently.In fact, though can take place from different project folders the visit of a project, in fact real visit is same project.Yet a project folder needn't have its all member's projects, or owns project together in conjunction with other file simply, makes the unnecessary deletion that causes project of deletion of a project folder.Yet in some embodiment of the present invention, a project must belong to a project folder at least, if make that unique file of specific project is deleted, then to some embodiment, this project is by deleted automatically, or in other embodiment, this project automatically becomes the member of default item file, and (" TrashCan (dustbin) " file is at the conceptive similar name file that uses in various systems based on file and file that is similar to.)
More discuss fully as following, project also can belong to the classification based on the feature of common description, and feature is as (a) item types (or type), (b) specific directly or the attribute of inheriting (or attribute), 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 person (Contact) classification automatically, it seems that any project with associated person information attribute also belong to this classification automatically.Equally, any project that has the position attribution of " New York City (New York) " value can belong to the New York classification automatically.
Classification is in the conceptive project folder part that is different from, project folder can comprise irrelevant mutually project (feature of promptly not having common description), 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, though 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, and 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 constitute such other membership qualification.
Fig. 4 is illustrated in the structural relation between project, project folder and the classification.A plurality of projects 402,404,406,408,410,412,414,418 and 420 are members of each project folder 422,424,426,428 and 430.Some project belongs to an above project folder, belongs to project folder 422 and 424 as project 402.Some project, as project 402,404,406,408,410 and 412 also is the member of one or more classifications 432,434 and 436, and other project, as project 44,416,418 and 420 can not belong to any classification (though this major part does not resemble in certain embodiments, wherein has any attribute and hints membership qualification in the classification automatically, therefore in embodiment like that in order not to be the member of any classification, project should fully not have 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 typess).
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 data processing and the storage organization ability that strengthens and enrich degree on the hardware/software interface level, has surmounted current in the art available ability.
4. pattern
A) basic schema
Create and the general basic of the project of use in order to provide, each embodiment of storage platform of the present invention comprises basis (Base) pattern of setting up the conceptual frame that is used to create and organize project and attribute.Basic schema has defined the 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, because all items (and corresponding item types) is this elementary item (and the corresponding item types) derivation from basic schema.
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 basis).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 position (anchor), therefrom derives all other attributes, and interknits (deriving from single attribute type jointly) by the attribute type of its all derivation.The Extension type attribute defines this expansion and has expanded which project, and definition is with an expansion and another other sign of project phase region, 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 that is used to be established to its member (if any), although Identitykey (identity key word) 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 core (Core) pattern 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.Be 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 typess of the direct processing of the predetermined mode that maybe can estimate.Predetermined item types 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 comprise the predetermined item 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 item types of the specific predetermined derivation 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 dirigibility 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,, can comprise following one or more by the specific project type of core schema support to various embodiment of the present invention:
Category (classification): the effective classification of sports representative in project-based hardware/software interface system of this project type (and the subtype that therefrom derives).
Commodity (article): as the project of the identified things of value.
Device (equipment): project with logical organization of support information processing power.
Document (document): have and to explain and opposite project by project-based hardware/software interface system by the content of explaining corresponding to the application program of Doctype.
Event (incident): the project of incident takes place in some in the record environment.
Location (position): the project in represents physical position (as the geographic position).
Message (message): the project of communication between two or more main bodys (below definition).
Principal (main body): but at least one sure project of identity verification (as, the sign of individual, tissue, group, family, author, service etc.) except that ItemId had.
Statement (statement): have project, include but not limited to: policy, reservation, voucher etc. about the customizing messages of environment.
Similarly with reference to figure 8B, can comprise 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 word) (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 rescue 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 attribute of listing in Fig. 8 A and Fig. 8 B separately.
5. concern
Relation is a binary relation, 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 the general control relation of source item.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 relation of inclusion controlled target project, and adduction relationship does not provide any life cycle management semanteme.Figure 12 illustrates the mode of relation classification.
Relation of inclusion 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 counter mechanism controlled target by reference.The relation of embedding can be to compound project modeling, and can be counted as the exclusive relation of holding.A project can be one or more targets of holding relation; But a project can only be a target that embeds relation.As the project of the target of the relation of embedding can not be that arbitrary other held or embedded the target that concerns.
Adduction relationship is the life cycle of controlled target project not.They can be that pendulous-destination item can not exist.Any place (that is, comprising remote data storage) modeling that adduction relationship can be used at overall project name space is quoted project.
The project that obtains does not obtain certain 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 influence 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 (item id) type (without proper notice), and must quote with the same data storage of relationship example in project.
To holding and the relation of embedding, the target endpoint field must be ItemIDReference (item id an is quoted) type, and it must quote the project in identical storage with relationship example.To adduction relationship, target endpoint can be any ItemReference (project is quoted) type, and can quote the project in other storage platform data storage.
Can be able to randomly state one or more fields of scalar or PropertyBase (attribute basis) 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 quoting the individual event of being quoted by the source does not exist, then can not create this relation.And if this individual event is deleted, the relationship example between individuals and organizations is also deleted.Yet if organize project deleted, concern not deletedly, and it is pendulous.
B) hold relation
The life cycle management that the relation held is used for the based target project comes the reference count modeling.
A project can be the source endpoint that is used for zero or a plurality of relations of project.The project that is not the embedding project can be the destination item 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.
The relation of holding is implemented the life cycle management of target endpoint.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 given project last as target endpoint, 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 (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 full name of this project from root Element to the orderly class table of the relative name of given project.
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.
Though hold the life cycle that concerns the controlled target project, it is the consistance of the operation of controlled target end points project not.Destination item is independent of in operation by holding the project that relation has it.As the copy on the project in source of holding relation, move, backup and other operation do not influence as homonymous target project-for example, backup file folder project does not automatically back up all items in this document folder (target in FolderMember (file member) relation).
Be the example of holding relation below:
<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 notion of file become the generic set of project.
C) embed relation
Embed the conceptual modelling of relation with the exclusive control of the life cycle of destination item.They allow the notion of complex item.
Embed relationship example and be atomic operation as the establishment of the project of target.A project can be the source of zero or a plurality of embedding relation.Yet a project can be one and only be a target that embeds relation.As the project that embeds the target that concerns can not be to hold the target of relation.
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 can not change after relation is set up.
Embed the operational consistency of this target endpoint of relation control.The operation of for example, serialization project can comprise serialization, and all are derived from all embedding relations of this project and all its targets; The project that copies also copies all its embedding projects.
Be the example statement below:
<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, and the type that does not also guarantee target is as appointment in the relation statement.This means that adduction relationship can be pendulous.And adduction relationship can be quoted the project in other data storage.Adduction relationship can be regarded the notion that is similar to the link on the webpage as.
Be the example of adduction relationship explanation below:
<Relationship?Name=″DocumentAuthor″BaseType=″Reference″>
<Sourc?ItemType=″Document″
ItemType=″Base.Document″/>
<Target?ItemType=″Author″ItemType=″Base.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 computing machine in other storage.
E) rule and constraint
Following ancillary rules and constraint are applied to relation:
A project must be the target of (only embeds relation) or (one or more relation of holding).An exception is a root Element.A project can be the target of zero or a plurality of adduction relationships.
Concern that as embedding the project of target can not be to hold the source of relation.It can be the source of adduction relationship.
If a project from document upgrading, then can not be the source of holding relation.It can be the source of relation of embedding and adduction relationship.
Project from document upgrading can not be the target of the relation of embedding.
F) Guan Xi ordering
In an individual at least embodiment, the ordering of storage platform support relation of the present invention.Finish ordering by the attribute of " Order (ordering) " by name in the fundamental relation definition.In the Order field, there is not unique constraints.Do not guarantee to have the order of the relation of same " Order " property value, yet guarantee, they can sort after the relation of band lower " Order " value and before the relation with higher " Order " field value.
Application program is by in that (SourceItem ID, RelationshipID Order) go up the relation that ordering obtains giving tacit consent to order in combination.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 assurance, all relations of given type (as, FolderMembers (file member)) are ordering subclass of the set of relationship of given project.
The data storage API 312 that is used to deal with relationship realizes the operation of the ordering of one group of support relation.Introduce following term and help to explain those operations:
RelFirst is first relation of band order value OrdFirst in the ordered set;
RelLast is last relation of ordered set crossed belt order value OrdLast;
RelX is the given relation of band order value OrdX in the set;
RelPrev approaches the relation of the band of RelX less than the order value OrdPrev of OrdX most in the set; And
RelNext approaches the relation of the band of RelX greater than the order value OrdNext of OrdX most in the set.
Operation includes but not limited to:
(SourceItemID Relationship) inserts relation as first relation in the set to InsertBeforeFirst.The value of " Order " attribute of new relation can be less than OrdFirst.
(SourceItemID Relationship) inserts relation as last relation in the set to InsertAfterLast.The value of " Order " attribute of new relation can be greater than OrdLast.
(SourceItemID, ord Relationship) insert the relation that has the value of " Order " attribute appointment to InsertAt.
(SourceItemID, ord Relationship) inserted this relation to InsertBefore before having the relation of given order value.New relation can be assigned with " Order " value, and it but does not comprise this two values between OrdPrev and ord.
(SourceItemID, ord Relationship) insert this relation to InsertAfter after having the relation of given order value.New relation can be assigned with " Order " value, and it but does not comprise this two values between ord and OrdNext.
(SourceItemID, ord Relationship) will bring the relation of deciding relations I D and move to before the relation of being with appointment " Order " value MoveBefore.Relation can be assigned with new " Order " value, and it but does not comprise this two values between OrdPrev and ord.
(SourceItemID, ord Relationship) will bring the relation of deciding relations I D and move to after the relation of being with appointment " Order " value MoveAfter.This relation can be assigned with new order value, and it but does not comprise this two values between ord and OrdNext.
Arrive as prerequisite, each project must be the member of project folder.According to relation, each project must accompany a relation with an item file.In some embodiment of the present invention, some relation is represented by the relation that exists between all projects.
As the realization to various embodiments of the present invention, relation provides an oriented binary relation, and it extends to another project (target) by a project (source).Relation is had by source item (extending its project), and therefore relation is removed if the source is removed then (deleted 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 (as Fig. 7 to shown in the attribute of a relation type).In these embodiments, create new IsOwned relation and increase progressively reference count on this target automatically, 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 deletion automatically.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 is conceived by the present invention and to realize function described herein.
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 all 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 or the like, and unrestricted), and project folder can use identical machine-processed serialization and de-serialization (import and derive) as other project with classification.(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 representative 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 a project shows that this project folder is publicly-owned for this project in logic, 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 shows that this project is publicly-owned in logic, 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 when other system derives project folder, 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 interconnecting relation between project folder (itself also is a 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 have really 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 relation not from project folder 900 to project, 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 (or not having these relations) to project 902 and 904, 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 file 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.
As preceding 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 a 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 have any different between project folder (describing) and classification (describing), in many embodiment of the present invention, the classification relation that arrives project in principle reaches the above same quadrat 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 interconnecting relation between a 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 relation not from project 1002 to classification, 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 have really 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 other classification, project folder and project respectively.Yet in various embodiments, item file clamping structure and/or classification structure forbid comprising the loop on the hardware/software interface system level.When project folder and classification similar during in digraph, forbid that the embodiment in loop is similar to directed acyclic graph (DAG), according to the mathematical definition in graph theory field, DAG does not wherein have the path to begin on same summit and the digraph that stops.
6. extensibility
As mentioned above, this storage platform aims to provide originate mode group 340.Yet at least in certain embodiments, this storage platform allows also to comprise that the clients such as (ISV) of stand alone software retail trader creates new mode 3 44 (being new project and nested element type).This section is passed the mechanism that item types that expansion defines and nested element type (or being called for short " element " type) are conceived to create this pattern through discussion in originate mode group 340.
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 subclassification by any kind of originate mode group 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 in out of true ground, necessary permission ISV customization the type.This has just considered the notion of expansion.Expansion is strongly-typed example, 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 " many classification " problem.In certain embodiments because storage platform may not supported many inheritances or overlapping subtype, application program can use expansion as the overlapping type instance of modelling (as document be legal documents be again security document) method.
A) project expansion
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 subclassification 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 bringing the project of deciding ItemID does not exist, then can not create expansion.When project deleted, deleted with all expansions of same ItemID.(ItemID ExtensionID) has identified the expansion example to two tuples uniquely.
The similar of expansion type is in 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 independently of one another in structure and behavior.
The expansion example is stored respectively and from item access.All expansion type examples can be from overall extended view visit.Can form an effectively inquiry, it will return all examples of the expansion of given type, and no matter the project of their related what types.The programming model that storage platform API provides and can store, retrieves and the modification project is expanded.
The type that expansion type can be to use the single succession model of storage platform to come subclassification.Derive the new expansion type of establishment from an expansion type.The structure of an expansion or behavior can not cover or the structure or the behavior of alternative project type hierarchical structure.Be similar to item types, the expansion type example can directly be visited by the view related with this expansion type.The ItemID of expansion shows which project they belong to, and can be used for from the corresponding item objects of global keys eye diagram retrieval.Be the purpose of operational consistency, expansion is considered to be the part of project.Other operation commonly used of copy/move, backup/restoration and storage platform definition can be operated in the expansion as the part of project.
Consider following example.In the Windows type group, define Contact (contact person) 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>
CRM (customer relation management) 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 be created-expand
<Type?Name=″HRExtension″EBase?Type=″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 be created and visit independently of one another.
In above-mentioned example, the field of CRMExtension type and method can not cover the 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 project expansion.Given contact item can visit its relevant project expansion with searching with the expansion of same ItemID 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 item's example and additional CRMExtension and HRExtension example are shared same ItemID.
Following table has been summed up similarity and the difference between Item (project), Extension (expansion) and NestedElement (nested element) type:
Project, project expansion and nested element
Figure G04801501620070530D000391
B) expansion NestedElement type
The nested element type need not be identical with item types mechanism expansion.The expansion of nested element mechanism storage and the visit identical with the nested element type field.
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 defines-field in addition, and it is the multicomponent element.
<Type?Name=″NestedElement″BaseType=″Base.Element″
IsAbstract=″True″>
<Property?Name=″Extensions″
Type=″Base.Element″
Nullable=″false″
MultiValued=″true″/>
</Type>
NestedElement expands below, and the aspect is different from the project expansion:
The nested element expansion is not an expansion type.They do not belong to the Base.Extension type is the expansion type hierarchy of 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.
Other nested element (or project) is stored these expansions as Cun Chu.Resemble other nested groups, the NestedElement expansion is existed among the UDT.They can visit by Extension (expansion) field of nested element type.
The set interface that is used to visit multi-valued attribute also is used for visit and the iteration on the type expanded set.Following table is summed up and relatively Item expansion and NestedElement expansion.
Project expansion and Nested Element expansion
Figure G04801501620070530D000411
D. database engine
As above mention, data storage realizes on database engine.In the present embodiment, database engine comprises such as realization SQL query language such as Microsoft SQL Server engines, has the relational database engine that object relationship is expanded.This section is according to present embodiment, and the data model that the data of description storage realizes provides the information of being used by the client computer of storage platform to the mapping of relation storage on logic API.Yet be appreciated that when adopting different database engines and can adopt different mappings.Really, except realization storage platform conceptual data model on the relevant database engine, also can on other types of database, realize, as object-oriented and XML database.
Object-oriented (OO) Database Systems are that programming language object (as C++, Java) provides continuation and affairs.The storage platform notion of " project " can be mapped to the object in the object-oriented system well, though 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.The object-oriented system 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 object-oriented systems is also very poor aspect search.And object-oriented systems does not provide the support to destructuring and semi-structured data.For supporting complete storage platform data model described herein, resemble notions such as relation, file and expansion and need add object data model to.In addition, need to realize as upgrading, synchronously, mechanism such as notice and security.
Be similar to object-oriented systems, 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 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,, need be incorporated into this XML database as other notions such as relation and files for supporting data model described herein; And need to realize as synchronously, mechanism such as notice and security.
About following trifle, provide a small amount of diagram so that general information illustration: Figure 13 is the diagram that informing mechanism is shown.Figure 14 illustrates the diagram that two affairs are all inserted new record the example of same B tree.Figure 15 illustrates data and changes testing process.Figure 16 illustrates exemplary catalogue tree.The existing file double-layered quilt that Figure 17 illustrates wherein based on the file system of catalogue moves in the storage platform data storage.
1. use the data storage of UDT to realize
In the present embodiment, the relevant database engine 3 14 that comprises Microsoft SQL Server engine is in one embodiment supported built-in scalar type.Built-in scalar type is " primary (native) " and " simply ".They are that primary 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 (UDT hereinafter referred to as) can be come the expansion type system by defining complicated structured type by making the user, and a kind of mechanism that is used for surpassing or surmounting the type extensibility of primary scalar type system is provided.In case defined by the user, the type system that UDT can be used for using 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 storage project 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 operational character can be called by the example at 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.
The storage platform pattern is direct to being mapped in of UDT class on high-level 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.
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, a kind of possible realization that the project in database storing is stored is to store all items in the single table of the row that have type B ase.Item.The type of service substitutability can be stored all types of projects, and can come filtered search by the subtype of the item types of the operational character of " is of (type) " of using Yukon.
Yet, owing to involve the overhead that is associated with this method in the present embodiment, projects are divided by top type, make the project of each type " family " store 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.Have only from the first order succession of Base.Item and ad hoc handled.
Use one " 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.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 storage of identification data uniquely 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 under the context of overall repertory and other situation, the therefore given ItemId of project provides GetItem () function to come the search terms object.
For ease of visit and the hiding as much as possible details that realizes, all inquiries of project can be carried out the view that makes up on the table that impinges upon above-mentioned project.Particularly, each item types is created view at family's table of 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.
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.As project, given ItemID and the right identity of ExtensionID of comprising can provide a function to be used for the retrieval expansion.Be similar to the item types view, can create view each expansion type.
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 the 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, promptly each project, expansion and relation have unique key value.A project is identified uniquely by its ItemId.(ItemId ExtensionId) identifies uniquely by composite key in expansion.Relation is by composite key (ItemId, RelationId) sign.ItemId, ExtensionId and RelationshipId all are GUID values.
6.SQL object naming
All objects of creating in 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 " basis ") can be created in the type in " [System.Storage] " SQL pattern, as " [System.Storage] .Item ".The name that produces can be with the determiner prefixing to eliminate the conflict of name.Can use at suitable place exclamation mark (! ) as the decollator of each logical gate of name.Table has been summarized the name custom that is used for object in data storage below.Name custom with the modification of the example that is used for visit data storage is listed each schema elements (project, expansion, relation and view).
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]
The project search view that divides type ItemType 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]
The expanded search view that divides type Extension!extensionType Provide all properties data to expansion ?[AcmeCorp.Doc].?[Extension!SlickyNote]
Object The name character modification Describe Example
The primary relation view Master!Relationship Be provided at the summary of all relations in the current item domains ?[System.Storage].?[Master!Relationship]
Relational view Relationship!relationshipName The data that provide all to be associated with given relation ?[AcmeCorp.Doc].?[Relationship!Authors?FromDocument]
View View!viewName Definition provides row/type based on mode view ?[AcmeCorp.Doc].?[View!DocumentTitles]
7. row name
When shining upon arbitrary object model to storage, naming conflict might take place 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 CLR and the data storage, all properties of storage platform type or schema elements (relation etc.) should have first character of capitalization.
8. search view
Provide view by storage platform, be used to search for the content of storage.Provide 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.With more abundant description, use the Update () method of storage platform API can store or change data below.
<view-name 〉] visit. BookSales] visit.Because the output format of view is self-defining (being determined by any inquiry that side who defines view provides) on the basis of each view, row define based on mode view and are directly shone upon.
All SQL search views in the storage platform data storage use the following ordering custom of row:
Logic " key word " row as the view result of ItemId, ElementId, RelationshipId etc.
As the metadata information about result type such as TypeId.
Change as CreateVersion (establishment version), UpdateVersion (renewal version) etc. and follow the tracks of row
The row of type special use (attribute of the type of statement)
The view of type special use (family's view) also comprises the object row that return object
The member of each type family can use a series of eye diagrams to search for, and each item types has a view in data storage.Figure 28 is the diagram that the notion of project search view is shown.
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, generalities item eye diagram as shown in Figure 29.
(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 to provide change 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 definite type and being used to that the TypeId-of this project identifies this project uses metadata categories to retrieve information about type
RootItemId ItemId Control first non-embedding 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 〉 n/a Each item types attribute there are row
(2) the project search view of branch type
Each item types also has the search view.Be similar to the root Element view, this view also provides by the visit of " _ Item " row to item objects.In data storage, use name [schemaName] .[itemTypeName] identify the project search view of each branch type.[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 special use 〉 Each father's attribute there are row
<item attribute 〉 <attribute special use 〉 Each exclusive attribute to this type has row
Item The CLR type of project The type of the project of CLR object one statement
B) project expansion
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 to provide change to follow the tracks of and synchronizing information. Extension] " the main extended view of sign in data storage.
Row Type Describe
?ItemId ItemId Expand the storage platform identity of related project therewith
?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 used to use metadata categories to retrieve information about this expansion
<the overall situation changes follows the tracks of 〉 The overall situation changes trace information
<extended attribute 〉 <attribute special use 〉 Each expansion type attribute there are row
(2) the expanded search view of branch type
Each expansion type also has the search view.Be similar to main extended view, this view also provides by _ Extension and is listed as the visit to item objects. ExtensionTypeName] identify the expanded search view of each branch type. OfficeDocExt].
Row Type Describe
ItemId ItemId Expand the storage platform identity of related project therewith
ExtensionId ExtensionId(GUID) The Id of this expansion example
<type change is followed the tracks of 〉 The type change trace information
<father attribute 〉 <attribute special use 〉 Each father's attribute there are row
<extended attribute 〉 <attribute special use 〉 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 platform data storage.
(1) primary relation search view
Each data storage provides-the 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-use metadata categories identifies the type of this relationship example
<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.Be similar to the primary relation view, this view provides the row of name to each attribute of this relation data. RelationshipName] 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 model (cast))
<attribute of a relation 〉 <attribute special use 〉 Attribute to each contextual definition has row
Row Type Describe
?_Relationship The CLR type of relationship example The type of CLR object-statement relation
e)
9. upgrade
All views are read-only in the storage platform data storage.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 the data definition storage of " operation " of action that intend to be carried out by the 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) ", and the set of execution is intended in their common refinements.
Operational format is extendible, and is provided at the various operations on the schema elements.Some common operation comprises:
1. project operation:
A.CreateItem (embedding or holding in the context of relation and create a new project)
B.UpdateItem (upgrading an existing project)
2. relational operation:
A.CreateRelationship (example of relation is quoted or held in establishment)
B.UpdateRelationship (upgrading a relationship example)
C.DeleteRelationship (removing a relationship example)
3. extended operation
A.CreateExtension (add one and 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, provide to change by 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 data storage comprises the row that are used to provide the change trace information; Those row are public to all items, expansion and relational view.It is to provide indirectly by the search view that makes up view itself thereon that the storage platform mode view that is defined clearly by Design Pattern 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 " the branch type " element view. Item] " and item eye diagram [AcmeCorp.Document] .[Document of branch type] 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 the information of this element for the last time and about from each partner's the version number creating and upgrade of being used to.Identify partner's (describing below) in the synchronized relation with partner's key word.The single UDT object of by name _ ChangeTrackingInfo of type [System.Storge.Store] .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 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 this locality that is updated in for the last time of this entity is finished, then this is the PartnerKey of local machine.
Row Describe
_ LastUpdatePartnerTS Locate to upgrade the time mark of the time of this entity partner corresponding to _ LastUpdatingPartnerKey.
(2) change in " the branch type " search view is followed the tracks of
Except provide with global search view identical information, the search view of each branch type 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 an additional version dedicated meta data to the interested version in synchronous operation storehouse
B) gravestone
Data storage provides gravestone information for project, expansion and relation.The gravestone view provides in the place information about movable and gravestone entity (project, expansion and relation).Project and expansion gravestone view are not proposed the visit to corresponding objects, and concern that the gravestone view provides the visit to relationship object (relationship object is for empty under the situation of gravestone relation).
(1) project gravestone
Item] from system's search terms 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 first non-embedding project of this purpose
_ChangeTrackingInfo The CLR example of ChangeTrackingInf o type This purpose changes trace information
Row Type Describe
_IsDeleted BIT This is a sign, the 0th, and campaign item, the 1st, gravestone project
_DeletionWallclock UTCDATETIME Press the partner's of delete items time on UTC wall clock date, if this project is movable, it is empty
(2) expansion gravestone
Extension] from system's 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 a sign, the 0th, and campaign item, and 1 be gravestone expansion
_ DeletionWallclock UTCDATETIME During UTC wall clock day by the partner who deletes this expansion.If this expansion is movable, it is empty
(3) concern gravestone
Relationship] concern gravestone from system's retrieval.Concern the information that the gravestone info class is similar to be provided expansion.Yet, on the target ItemRef of relationship example, provide additional information.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
Row Type Describe
_ ChangeTrackingInfo The CLR example of ChangeTrackingInfo type The change trace information of this relation
_ IsDeleted BIT This is a sign, the 0th, and campaign item, and 1 be gravestone expansion
_ DeletionWallclock UTCDATETIME Press the partner's of this relation of deletion time on UTC wall clock date.If this relation is movable, it is empty
_ Relationship The CLR example of relation This is the relationship object of activity relationship, and gravestone concerned that it is for empty
TargetItemReference ItemReference The identity of target endpoint
(4) gravestone is removed
For preventing that gravestone information from unrestrictedly increasing, data storage provides gravestone to remove task.This task determines when can give up gravestone information.The boundary of the local establishment/renewal version of this task computation, 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
// given ItemId returns an item objects
Item?Getltem(ItemId?ItemId)
B) function [System.Storage] .GetExtension
// given ItemId and ExtensionId return an EXPANDING DISPLAY AREA
Extension?GetExtension(ItemId?ItemId,ExtensionId?ExtensionId)
C) function [System.Storage] .GetRelationship
// given ItemId and RelationshipId 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 uses this to be worth and inquires about the Meta.Type view to return the information about the type of the statement of this project.For example,
// given project example is returned metadata project object
SELECT?m._Item?AS?metadatalnfoObj
FROM[System.Storage].[Item]i?INNER?JOIN[Meta].[Type]m?ON?i._Typeld=m.ItemId
WHERE?i.ItemId=@ItemId
E. security
Generally speaking, all objects that can protect use the access mask form shown in Figure 26 to arrange access rights.In this form, low 16 be used for the object special use access rights, follow 7 standard access authorities that are used to be applied to most of object types, high 4 are used to specify the generic access rights, and each object type is mapped to the authority of one group of standard and object special use with it.The ACCESS_SYSTEM_SECURITY position is corresponding to the authority of the SACL of access object.
In the access mask structure of Figure 26, the authority of project special use is placed on the special-purpose authority section of object (low 16).Because in the present embodiment, storage platform represents two groups of API:Win32 and storage platform API to keeper's security, for promoting the design of the special-purpose authority of storage platform object, must consider the authority of file system object special use.
In relevant patent incorporated herein by reference, the security model that is used for storage platform of the present invention has been described fully.In this, Figure 27 (part a, b and c) draws by an embodiment of security model, as the new safety zone of protection that opens from existing safety zone with being equal to.
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 used for the application program that keeps the service logic on easy mistake state or the execution data change incident.Application program is registered in the notice on project, project expansion and the project relationship.Submitting to data change notice to be 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 incident by the simple data that the change to project, project expansion and project relationship triggers.The second, application program is created " supervisory programme " object and is come the group that concerns between monitor item, project expansion and the project.After thrashing or system off-line surpass the schedule time, can preserve and create again the state of supervisory programme object.Single notice can reflect a plurality of renewals.
Additional detail about this function can find in relevant patent incorporated herein by reference.
G. synchronous
Press another aspect of the present invention, storage platform provides synchronous service 330, it (I) allows a plurality of examples (each has the data storage 302 of oneself) of storage platform by one group of regular flexibly next each several part of their content synchronously, and (ii) provides foundation structure so that the data storage of storage platform of the present invention is synchronous with other data source that realizes proprietary protocol for the third party.
Storage platform takes place between one group of duplicate that participates in synchronously to storage platform.For example with reference to figure 3, wish be mostly be provided under the control at another example of the storage platform of moving on the different computer systems between the data storage 302 of storage platform 300 and another remote data storage 338 synchronously.Total membership qualification of this group needn't be known by any given duplicate at any given time.
Different duplicate independently (concomitantly promptly) are made change.Synchronizing process is defined as makes each duplicate know the change of making 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;
Transmission is about the information of the ignorant change of other duplicate;
Determine when mutually conflict of two changes;
The local application changes;
Transmission collision decomposes other duplicate to guarantee convergence; And
Decompose conflict based on the policy of conflict being decomposed appointment.
Storage platform to storage platform synchronously
The basic application of the synchronous service 300 of storage platform of the present invention is stores synchronized platform a plurality of examples of (each has its data storage).Synchronous service is in operation (rather than in the bottom table at database engine 314) on the storage platform pattern level.Therefore, for example " scope (Scope) " is used to define the synchronization group of discussing 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 net result of these operations often is merged into single net result with the result of a plurality of operations.
Synchronous service is not considered transaction boundaries usually.In other words, if in single affairs, the storage platform data storage is made two changes, do not guarantee that these change to be applied on all other duplicate-can to illustrate one atomically 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 that being sent and be applied to other atomically duplicates.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 sync (synchronously) operation.Such application program provides carries out all required parameters of (the synchronous overview of face as follows) synchronously.Such application program is called as synchro control application program (SCA) here.
When synchronous two storage platform examples, start synchronously by SCA in a side.This SCA notifies local synchronous service and remote partner 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 on target machine for it.Synchronous service can be moved on schedule or in response to incident.In these cases, the synchronous service of realization timetable becomes SCA.
For enabling synchronously, need take two steps.At first, Design Pattern person must be with suitable synchronization semantics annotation storage platform model (as mentioned below appointment change unit).Secondly, synchronously must configuration (as described below) correctly on all machines with the example that participates in synchronous storage platform.
B) pattern note
The key concept of synchronous service is the notion that changes unit (Change Unit).Change the unit and be the schema fragment of the minimum of individually following 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, then do not have conflict and take place, and change is automatically merged if difference is changed the unit.The 3rd, it has seriously influenced the amount of the metadata that is kept by system.Each is changed the unit keep many synchronizing service metadatas; Therefore, make the littler meeting in change unit increase synchronous overhead.
Definition changes the unit need find out correct trading off.For this reason, synchronous service allows Design Pattern 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 Design Pattern person specify the ability of the change unit littler than element-be about to a plurality of combinations of attributes of an element in independent change unit.In this embodiment, this is to use following sentence structure 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) configuration synchronously
Wish to keep one group of synchronous storage platform partner of some part of their data to be called as synchronous community.Though the member of community wishes to keep synchronously, they need not represent data in identical mode; In other words, synchronization partner convertible they just in data in synchronization.
Under reciprocity situation, allow equity side to all their partner to keep the conversion mapping be unpractical.Replace ground, synchronous service is taked the method for definition " community's file ".Community's file is " Shared Folders " abstract of representing the synchronous with it hypothesis of all members of community.
The most handy example explanation of this notion.If Joe wishes to keep his My Documents (my document) file of some computing machines synchronous, Joe defines community's file, as is called JoeDocuments.On every computing machine, Joe is configuration one mapping between JoeDocuments file of supposing and local My Documents file subsequently.From this point, when the computing machine of Joe was synchronized with each other, they were talked by document among the JoeDocuments rather than their local project.With the method, the computing machine of all Joe is understood mutually, and needn't know whom other people is-and community's file becomes the general 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 subclass 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 shine upon 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.As if lacking or, not carrying out conversion for empty.Particularly, this means that no ID is mapped.This configuration is mainly used in the high-speed cache of creating file.
/mappings/transformations/mapIDs
The newly-generated local ident of this element request is endowed all projects from 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
The request at this mapping is handled in this element control under whose is authorized.If do not exist, then suppose the sender.
/mappings/runAs/sender
Existing this element to show, must be impersonate to the sender of the message of this mapping, and handles request under his voucher.
(2) overview
Overview is to separate required total parameter group synchronously 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 with it Remote Folder name-this file must be issued by shining upon as defined above from remote partner;
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 receives 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 permission of remote endpoint (personification), or the user starts in this locality synchronously; And
Conflict decomposition policy-appointment conflict whether should be rejected, charge to daily record or decomposition automatically-under latter event, which conflict resolver and its configuration parameter appointment uses.
CLR class when synchronous service provides the operation that allows the synchronous overview of simple construction.Overview can be serialized into the XML file or from the serialization of XML file, so that storage (often with timetable) easily.Yet, in storage platform, do not store the standard place of all overviews; Welcome SCA on the point that needn't forever keep, to make up overview.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 WindowsScheduler 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 routine makes on schedule or disposes Windows Scheduler in response to incidents such as logining or publish as the user and becomes very easy.
D) conflict is handled
Conflict in the synchronous service is handled and is divided into three phases: (1) occurs in collision detection-this step that changes when using and judges whether to use change safely; (2) automatically conflict is decomposed and is charged to daily record-at this step (after occurring in and then collision detection) information resolver that conflicts automatically, with check whether conflict can be decomposed-if can not, can randomly daily record be charged in conflict; And (3) conflict check with decompose-conflicting as if some is logged, and occurs in outside the 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 class conflicts: based on knowledge and based on the constraint.
(a) based on the conflict of knowledge
Duplicate same change unit is made when independently changing when two, the conflict based on knowledge takes place.If two change them and make in mutual ignorant situation, then be called independently-in other words, first version is not covered by second knowledge, and vice versa.Synchronous service detects all that conflict automatically based on the knowledge of above-mentioned duplicate.
The bifurcated that conflict is thought of as in the vncsion history that changes the unit is useful sometimes.If in changing the life of unit, do not clash, its vncsion history be simple chain-each occur in previous after.Under the situation based on the conflict of knowledge, two change parallel the generation, cause chain splitting, become the version tree.
(b) based on the conflict that retrains
There is the situation of destroying integrity constraint when together using that independently changes.For example, two duplicate with a same file of name establishment can cause taking place such conflict in same catalogue.
Conflict based on constraint involves two independently changes (resembling the conflict based on knowledge), but they do not influence same change unit.On the contrary, their different change unit of influence, but between them, have constraint.
The constraint that synchronous service detects when changing application destroys, and causes the conflict based on constraint automatically.Decomposition needs self-defined code usually based on the conflict of constraint, and it revises those changes in the mode of not destroying constraint; Synchronous service does not provide the general mechanism of doing like this.
(2) conflict is handled
When detecting conflict, synchronous service can be taked one of three actions (being selected by the synchronous startup person in the synchronous overview): (1) refuses this change, and it is turned back to the sender; (2) conflict is logged into the conflict daily record; Or (3) decompose conflict automatically.
Be rejected if change, synchronous service does not operate as this change with arriving this duplicate.Negative Acknowledgement is sent back to the promoter.This decomposition policy mainly goes up useful at the duplicate (as file server) that does not have the leader, it is infeasible conflict being charged to daily record there.On the contrary, those duplicate force other duplicate to handle those conflicts by refusing them.
Startup person's configuration conflict in their synchronous overview decomposes synchronously.Synchronous service is supported in and makes up a plurality of conflict resolvers-at first in the single overview in the following manner by specifying the tabulation of conflict resolver, one then a ground attempt decomposing, up to one of them success; The second, be associated with the conflict type by the resolver that will conflict, as conflict to the resolver of guiding renewal-renewal based on knowledge, but daily record is charged in all other conflicts.
(a) conflict is decomposed automatically
Synchronous service provides the conflict resolver of some acquiescences.Its tabulation comprises:
The local win: if with the data collision of this locality storage, then disregard the change that enters;
Long-range win:, then disregard local data if conflict with the change that enters;
Write win at last: this locality win or the long-range win of selecting each change unit based on the time mark that changes (notice that synchronous service does not generally rely on clock value; This conflict resolver is this regular sole exception);
Determine: identical to guarantee on all duplicate, but insignificant in other cases mode is selected an embodiment of win person-synchronous service and is used the lexicographic of Partner ID relatively to realize this feature.
In addition, ISV can realize and install their conflict resolver.Self-defined conflict resolver can be accepted configuration parameter; Those parameters must be decomposed appointment in the section by the conflict of SCA in synchronous overview
When the conflict resolver was handled conflict, it returned the tabulation of the operation (substituting conflict changes) that needs execution to Runtime Library.These operations of sync service application then, it has the long-range indication of correctly adjusting, with all the elements that comprise that the conflict processor is considered.
When using decomposition, may detect other conflict.Under such situation, new conflict must be decomposed before original processing restarts.
When conflict being considered to the branch in the vncsion history of project, conflict is decomposed can regard mergings-two branches of combination as with the formation a single point.Therefore, the conflict decomposition forwards vncsion history to DAG.
(b) conflict log record
A kind of conflict resolver of very particular type is a conflict log record device.Synchronous service is charged to the project of daily record as ConflictRecord (conflict record) with conflict.These the record conversely with the conflict in project relevant (unless project itself is deleted).Each conflict record comprises: the change that enters that leads to a conflict; The type of conflict; Renewal-renewal, renewal-deletion, deletion-renewal, insertion-insertion or constraint; And the knowledge of the version of the change that enters and its duplicate of transmission.The conflict of charging to daily record can be used for inspection described below and decomposition.
(c) conflict examination and decomposition
The synchronous service application programs provides API, decomposes to check conflict daily record and suggestion conflict wherein.This API allows application program to enumerate all conflicts, or the conflict relevant with given project.Also allow those application programs to decompose the conflict of charging to daily record with one of following three kinds of methods: (1) long-range win-acceptance is charged to the change of daily record and is override this locality change of conflict; (2) the conflict part of the change of charging to daily record is won-ignored in this locality; And the new change of (3) suggestion-wherein, application program proposes that one merges, and with its viewpoint, this merges and decomposes conflict.In case decomposed conflict by application program, synchronous service removes them from daily record.
(d) propagation of the convergence of duplicate and conflict decomposition
Under the situation of complex synchronization, in a plurality of duplicate, can detect same conflict.If this situation of generation, some things take place: (1) can decompose conflict on a duplicate, and other duplicate is delivered in decomposition; (2) conflict is decomposed on two duplicate automatically; And (3) manually decompose conflict (by overhaul API) on two duplicate.
For guaranteeing convergence, synchronous service will be conflicted with decomposing and will be forwarded to other duplicate.When the change of decomposing conflict arrived duplicate, synchronous service was automatically sought in daily record and is upgraded any conflict of decomposing thus, and eliminates them.In the case, the conflict on duplicate is decomposed and is bound to all other duplicate.
If different duplicate selected different win persons to same conflict, the sync service application binding conflict principle of decomposing then, and automatically select in two decomposition one and surpass another.Select win person to guarantee all to produce same result (embodiment uses duplicate ID lexicographic relatively) constantly in deterministic mode at all.
If different duplicating advised different " the new change " to same conflict, then synchronous service is processed into special conflict with this new conflict, and uses conflict log record device to prevent that it from propagating into other duplicate.Situation is everlasting and is taken place when manually conflict is decomposed like that.
To non-storage platform data storage 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 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 the Any Application of service such as application as change simply.
For make other people can more easily dispose and run to given back of the body end (backend) synchronously, encourage the author of sync adapters to represent standard sync adapters interface, operation is synchronously when given above-mentioned synchronous overview for it.Overview provides configuration information to adapter, some adapter be sent to the synchronous operation storehouse with control Runtime Library 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 made synchronous machine thereon and be called " client computer ", and adapter just is called " server " with the non-storage platform back of the body 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 taken place.
Enumerate based on the notion of " anchor position (anchor) " that change-this is the opaque structure of relevant last the hyposynchronous information of expression.As described in former chapters and sections, the form of storage platform knowledge is taked in the anchor position.Utilize the sync adapters that changes the service of enumerating to fall into two big classifications: the adapter of " anchor position of storage " and the adapter of use " anchor position that provides " are provided.
Difference based on about last hyposynchronous information stores where-on the client computer or on server.Adapter usually easily store this information on client computer-back of the body end often can not easily store this information.On the other hand, if a plurality of client computer and same back of the body end are synchronous, then on client computer be with this information stores 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 the anchor position that adapter wishes to use server stores, then adapter need send back to storage platform with it when change is enumerated.
In order to allow storage platform safeguard anchor position (being used for the Local or Remote storage), storage platform need be known the change that successfully is applied on the server.These and have only these changes to be included in the anchor position.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 position that use provides must be read new anchor position (it gathers the change of all successful Application) and send it to their back of the body end.
Each adapter usually needs the storage adapter exclusive data and is inserted into projects in the storage platform data storage.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 adapter demand of Query Database again.
(2) change application
Changing to use allows sync adapters to be applied to local storage platform from the change that their back of the body termination is received.The expectation adapter is transformed into the storage platform pattern with change.Figure 24 illustrates the process that generates storage platform API class from the storage platform pattern.
Changing the major function of using is to detect conflict automatically.As under 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 position of it being carried out collision detection.Change if detect the overlapping this locality that is not covered, then change application and cause conflict by the knowledge of adapter.Be similar to change and enumerate, adapter can be provided by anchor position storage or that provide.Change effective storage of using the 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) conflict is decomposed
Above-mentioned conflict is decomposed mechanism (charge to daily record and decompose option automatically) and also can be used sync adapters.When use changing, sync adapters can be specified the policy of the decomposition that is used to conflict.If specified, 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 back of the body end, adapter might detect conflict.Under such situation, adapter still can be delivered to conflict the synchronous operation storehouse, to decompose by policy.In addition, sync adapters can ask any conflict that is detected by synchronous service to send back to them so that handle.This is convenient especially to store or decompose the situation of conflicting at back of the body end.
B) adapter is realized
Though 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 synchro 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 make great efforts will be the least possible be incorporated into safe mode synchronously by the storage platform realization.Not to define, and be to use existing authority synchronous new authority.Particularly,
Anyone of energy read data stored items can enumerate the change to that project;
Anyone that can write the data storage project can use this project that changes to; 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, finish by the synchro 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 local synchronous 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 a complicated problems.Synchronous service can be used " scanning (sweep) " 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 (not having response).
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 management decision.On affected duplicate, must directly make configuration change.
H. traditional file interoperability
As above mention, 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 integral part 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 Win32 API 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 of recompile based on Win32, and such recompile may be undesirable, therefore storage platform of the present invention provide with certain interoperability as existing file systems such as NTFS be useful.Thereby in one embodiment of the invention, storage platform makes the application program that depends on the Win32 programming model can visit the content of the data storage of the data storage of storage platform and traditional new technology file system simultaneously.For this reason, storage platform uses the name custom of the superset (superset) that name is accustomed to as Win32 so that be easy to interoperability.In addition, the storage platform support is stored in file and catalogue in the storage platform volume by the Win32 API Access.
Other details about this function can find in relevant patent incorporated herein by reference.
I. storage platform API
Storage platform comprises-API that it makes application program can visit the feature and the ability of storage platform discussed above, and visit 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.Details about this function can find in relevant patent incorporated herein by reference, sum up below for simplicity this information certain some.
With reference to Figure 18, include file folder is a project, and it comprises the relation of holding with other project, and with the file system folder equivalence of common notion.Each project " comprises " at least one include file folder.
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 (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 API322 also takes on the bridge API of data storage notice, the subscript of application program is sent to notification engine, and as mentioned above notice is routed to application program (as application program 350a, 350b or 350c).In one embodiment, storage platform API 322 also defines restricted " supplier " architecture, makes it can visit data among MicrosoftExchange and the AD.
Figure 20 schematically shows the various assemblies of storage platform API.Storage platform AP 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.
The hierarchy of the class that draws from given pattern has directly reacted the hierarchy of type this pattern.As an example, consider the item types in the contact schema as shown in Figure 21 A and Figure 21 B, define.
Figure 22 illustrates the Runtime Library framework in the operation.The following operation of Runtime Library framework:
1. application program 350a, 350b or 350c are tied to the project of storage platform.
2. framework 2004 is created the ItemContext object 2202 corresponding to the binding project, and it is returned to application program.
3. application program is submitted the Find (searching) on this ItemContext (project context) to, to obtain the set of project; Return to be integrated into conceptive be object diagram 2204 (because relation).
4. application program changes, deletes and the insertion data.
5. application program is preserved change by calling Update () method.
Figure 23 illustrates the execution of " FindAll (seeking all) " operation.
Figure 24 illustrates the process that generates storage platform API class from the storage platform pattern.
Figure 25 illustrate file API based on pattern.Storage platform API comprises the name space of handling file object.This name space is called as 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 is from file system object " upgrading " or use this machine of Win32 API ground to create.The System.Storage.Files name space has two class: FileItem (docuterm) and DirectoryItem (directory items).The member of these classes and method thereof can be predicted by the mode chart of checking among Figure 25.FileItem and DirectoryItem are read-only from storage platform API.For revising them, must use Win32 API or class among the System.IO.
For API, the function that DLL (dynamic link library) (or being simply referred to as interface) can be regarded as being used to making one or more segments of code to provide with one or more other segments by code communicates or to its arbitrary mechanism, process, agreement that conducts interviews.Perhaps, DLL (dynamic link library) can be regarded as being coupled to communicatedly the one or more mechanism, method, function call, module, object etc. of assembly of system of one or more mechanism, method, function call, module etc. of other computing machine.Term in the above-mentioned statement " code snippet " is intended to comprise the one or more instructions or the code line of code, and comprise, as, code module, object, subroutine, function or the like, what the term of no matter using is, or whether code snippet is compiled separately, or whether code snippet is provided as source code, intermediate code or object identification code, whether code snippet uses in runtime system or process, or whether they are positioned on same or the different machines or stride a plurality of machines and distribute, or whether the function of being represented by code snippet is fully by software, combination by hardware or hardware and software realizes fully.
Conceptive, DLL (dynamic link library) can be generally looked, shown in Figure 30 A or Figure 30 B.It is pipeline that Figure 30 A shows interface " interface 1 ", and first and second code snippets communicate by this pipeline.Figure 30 B shows interface and comprises interface object I1 and the I2 part of yes or no first and second code snippets (can), and they make first and second code snippets of system communicate by medium M.In Figure 30 B, can think that interface object I1 and I2 are the independent interface of same system, and can think that also object I1 and I2 add that medium M has constituted interface.Although Figure 30 A and 30B show the interface on each side of Bidirectional Flow and this flow process, some realization can only have an information flow (or as described below do not have information flow) on the direction, or only has the interface object of a side.As example but not the limitation, be included within the definition of DLL (dynamic link library) such as terms such as application programming or routine interface (API), entrance, method, function, subroutine, remote procedure call and The Component Object Model (COM) interfaces.
The aspect of this class DLL (dynamic link library) can comprise that the first code segment sends the method (wherein, " information " is used with its wide significance, and comprises data, order, request or the like) of information to the second code segment; The second code segment receives the method for information; And the structure of this information, sequence, grammer, tissue, pattern, timing and content.In this, as long as information transmits in the defined mode of interface, the operation that bottom transmission medium itself can docking port is inessential, and no matter this medium is wired or wireless, or both combinations.In some cases, on conventional meaning, when a code snippet is only visited the function of being carried out by the second code segment, information can not transmitted on one or two direction, because information transmission can be or by another mechanism (as, information be placed on and code snippet between the buffer memory, file etc. of separate from information flow in) or do not exist.Any of these aspects or all can be important under given situation, as, depend on that whether code snippet is the part of the system of loose coupling or tight coupling configuration, and therefore this tabulation should be considered to illustrative and unrestricted.
This notion of DLL (dynamic link library) is known to those skilled in the art, and can read the detailed description of the invention described above and know this notion.Yet, there is other method to realize DLL (dynamic link library), unless and get rid of significantly, in these methods also are included in by appended claims.It is more accurate or complicated than the view of Figure 30 A and 30B that these other methods seem, but they are still carried out similar function and finish same whole result.Concise and to the point now some illustrative of describing DLL (dynamic link library) is replaced and is realized.
Decompose: can realize communication indirectly by communication being split into a plurality of distributed communication from a code snippet to another.This schematically describes in Figure 31 A and 31B.As shown in the figure, can be according to some interface that divides into groups to describe of function.Thus, can exploded view 30A and the interface function of 30B reach identical result, as can on mathematics, providing 24, or 2 take advantage of 2 take advantage of 3 take advantage of 2 the same.Therefore, shown in Figure 31 A, the function that provides by interface " interface 1 " can be provided become a plurality of interfaces " interface 1A ", " interface 1B ", " interface 1C " etc., and reach identical result with communication scaling with this interface.Shown in Figure 31 B, the function that is provided by interface I1 can be subdivided into a plurality of interface I1a, I1b, I1c etc., and reaches identical result.Similarly, the interface I2 that receives the second code segment of information from the first code segment can be broken down into a plurality of interface I2a, I2b, I2c etc.When decomposing, the quantity that is included in the interface in the first code segment does not need to mate the quantity that is included in the interface in the second code segment.Under arbitrary situation of Figure 31 A or 31B, the functional spirit of interface " interface 1 " and I1 is identical with the maintenance of Figure 30 A and 30B respectively.The decomposition of interface also can be deferred to associating, communication and other mathematical property, makes to decompose difficult identification.For example, command operation can be unessential, and the function of therefore being finished by interface can be finished by another section code or interface before reaching this interface preferably, is perhaps carried out by the independent assembly of system.In addition, the those of ordinary skill in programming field is appreciated that variety of way makes different function calls and reach identical result.
Redefine: in some cases, may ignore, add or redefine some aspect (as parameter) of DLL (dynamic link library), and still reach expected result.This is shown in Figure 32 A and the 32B.For example, the interface " interface 1 " of supposing Figure 30 A comprises function call Square (input, precision, output) (square), it comprises three parameters, input (input), precision (precision) and output (output), and issue to the second code segment by the first code segment.If intermediate parameters precision is unimportant under given situation, shown in Figure 32 A, it also can be left in the basket or even be replaced by meaningless (meaningless) (in this case) parameter.Also can add inessential additional (in addition) parameter.In either case, as long as return output by after the second code segment square in input, just can reach square (square) function.Precision might be extremely significant parameter to a certain downstream or the other parts of computing system also; Yet in case recognize that precision is optional to calculating square this limited purposes, it can be replaced or ignore.For example, not to transmit an effective pricision value, but under situation the about result not being had a negative impact, transmit such as insignificant values such as dates of birth.Similarly, shown in Figure 32 B, interface I1 is by interface I1 ' replacement, and it is redefined ignores or add parameter to interface.Interface I2 can be redefined similarly is interface I2 ', and it is redefined ignores unnecessary parameter or the parameter that can handle elsewhere.Main points herein are in some cases, and DLL (dynamic link library) can comprise the unwanted aspect of a certain purpose, such as parameter, therefore can ignore or redefine them, or handle them elsewhere and be used for other purpose.
Inline code: some or all functions that merge two independent code modules also are feasible, make that " interface " between them changes form.For example, the function of Figure 30 A and 30B can be transformed into the function of Figure 33 A and 33B respectively.In Figure 33 A, the first and second previous code snippets of Figure 30 A are merged into the module that comprises both.In this case, this code snippet still can communicate with one another, but this interface goes for being more suitable for the form of individual module.Thus, for example, formal calling (Call) and to return (Return) statement will be no longer essential, but be still effectively according to the similar processing or the response of interface " interface 1 ".Similarly, shown in Figure 33 B, the part of Figure 30 B (or owning) interface I2 can write incoming interface I1 embeddedly and form interface I1 ".As shown in the figure, interface I2 is divided into I2a and I2b, and interface section I2a is embedded in and writes code among the interface I1 and form interface I1 ".For concrete example, the interface 1 execution function call square of consideration Figure 30 B (input, output), it is received by interface I2, handled the value be delivered to input (it is asked square) by the second code segment afterwards, it is used output and transmits back the result who asks square.In this case, the processing of being carried out by the second code segment (input is asked square) can be carried out never calling under the situation of this interface by the first code segment.
Break away from: can finish communication indirectly by communication being split into a plurality of discrete communications from a code snippet to another.This schematically describes in Figure 34 A and 34B.Shown in Figure 34 A, provide one or more segments of middleware (to break away from interface (Divorce Interface), because function and/or interface function that they break away from from original interface), to transform the communication on first interface " interface 1 ", making them meet different interfaces, is " interface 2A ", " interface 2B " and " interface 2C " under this situation.This can finish in such a case, for example, the basis of installation of using according to " interface 1 " design of protocol with communicate as operating system, using different interfaces but change this operating system then, is interface " interface 2A ", " interface 2B " and " interface 2C " under this situation.Main points are to have changed the clean interface that is used by the second code segment, make it no longer with the employed interface compatibility of first code segment, therefore use intermediary to make old interface and new interface compatibility.Similarly, shown in Figure 34 B, it is disconnected to receive information from interface I1 to use disengaging interface DI1 to introduce third generation chip, and use breaking away from interface DI2, to introduce third generation chip disconnected with to for example interface I2a and I2b transmission interface function, redesign interface I2a and I2b with use DI2, but provide the identical functions result.Similarly, but DI1 and DI2 co-operation and provide identical or the similar functionality result converting the interface I1 of Figure 30 B and the function of I2 to a new operating system.
Rewrite: another possible variation is dynamically to rewrite code, uses anything else to replace the function of interface, and still reaches identical total result.For example, a kind of system can be arranged, wherein, (JIT) compiler or interpreter provide the code snippet that presents in the intermediate language (as Microsoft IL, JavaByteCode etc.) to timely (Just-in-Time) in execution environment (as the environment that provided by the .Net framework, java runtime environment or other similar the time of running type environment).Can write the jit compiling device and be transformed into the second code segment from the first code segment, that is, make them meet the needed distinct interface of second code segment (original or different second code segments) dynamically will communicate by letter.This has description in Figure 35 A and 35B.As among Figure 35 A see that this mode is similar to above-mentioned disengaging situation.It can be finished under such a case, and for example, the fundamental operation of the installation system that uses according to " interface 1 " design of protocol communicates, and changes this operating system then to use different interfaces.The jit compiling device can be used to make the new interface of the air communication match operation system that base application is installed.Described as Figure 35 B, can use this method that dynamically rewrites interface to carry out dynamic decomposition, perhaps change interface.
Should be noted that above-mentioned also serial in every way of situation, walk abreast or intervene code combination with other by alternative embodiment realization and the same or analogous result of interface.Thus, the alternative embodiment that above presents not is mutual limit, and can be mixed, coupling and combination with produce with Figure 30 A and 30B in the identical or equivalent situation of general situation that presented.Also should be noted that, as most of programming constructs, the present invention may not describe other the similar mode that reaches with the same or analogous function of interface, but they are still represented by the spirit and scope of the present invention, promptly, should be noted that it is by the function of representing as the interface on the basis of the value of interface or by its favourable outcome of enabling at least in part.
III. image pattern and auxiliary mode (image pattern group)
Here among each embodiment of the present invention of Jie Shiing, image (as JPEG, TIEF, bitmap etc.) is processed into product platform object (" visual project " or " image ") more simply, and the present invention includes " image (Image) pattern " with extendible expression that image in the system is provided-promptly, the feature of image and this image be how relevant with other project (including but not limited to other image) in the system.For this reason, image pattern is to visual defined attribute, behavior and relation in the system, and pattern also compulsory implement about the rule of image, as, image must comprise which exclusive data what exclusive data, image can be able to randomly comprise, how particular image is expanded, or the like.Image pattern comprises expression dissimilar images necessary type information, comprises the attribute of the semantic content of the attribute (comprising GIF, TIEF, JPEG and other known image object type) of the file layout that is used for presentation image and presentation image.The image pattern of various embodiments of the present invention is the bases that make up all visual correlation functions.
Except that image pattern, here also provide and discuss relevant auxiliary mode (being generically and collectively referred to as " image pattern group "), and some embodiment of the present invention comprises the one or more of these auxiliary modes to " photo (Photo) ", " analytic attribute (AnalysisProperties) ", " position (Location) " project.Picture mode is the extendible expression of photo object (" photo project " or simple " photo "), and wherein the photo item types is the subtype of visual item types.Analytic attribute pattern (ap mode) is the extendible expression of photograph item goal analysis attribute (AP), and it enables the advanced person's of comparison film comparing function, as the similarity etc. of automatic face recognition, image.Mode position is the extendible expression of photograph item target physical (geography) position attribution.
Figure 36 A and Figure 36 B illustrate the image pattern (project and attribute) of various embodiments of the present invention, and the element of selecting from basic schema (Fig. 7) and core schema (Fig. 8 A and Fig. 8 B), to be illustrated in the cross correlation (for simplicity, in diagram, omitting each attribute) between each pattern.
A. image pattern
As preceding discussion, image pattern comprises the necessary project of visual project, attribute and the relation that expression is dissimilar.This comprises this machine file layout that is used to represent particular image type (GIF, TIEF, JPEG etc.), and the attribute of the semantic content of presentation image.For this reason, to any visual project, item types is the elementary item type of being shared by all images, and is the direct expansion of Core.Document item types as shown in Figure 36 (i.e. " document (Document) " type in " core (Core) " pattern).(the Core.Document type is the part of the core schema shown in Fig. 8 A.) visual type comprises the field of general description image, and it may be used on all images, no matter and its form.The elementary item type of image pattern is Image (image) type, is some field of Image type below:
Attribute-name Describe
Rating The grade of this picture.This can represent consumer's grade, father and mother's grade etc.
SizeX The width pixel of image.
SizeY The height pixel of image.
BitDepth The bit depth of each pixel (1,8,16,24 etc.).
ColorSpace The name of the color space of this picture, for example " sRGB ".
ColorSpaceVersion The version of the color space of this picture is as " 1.2 ".
TimesPrinted The number of times that this image has been printed.This field is by application maintenance.
RegionOfInterest The set of area-of-interest in the image.For example zone face portion or important continental embankment rectangle.
History The history of this image.Used which filtrator? whom it is issued with Email? when printed it?
DigitalNegativeID This field is identical to all copies of same image.If the copy of image is edited, the user determines him to wish to keep it identical, thinks that still this version is new digital egative film.
OtherVersions Set to the link of other version of same picture.Lower floor's version, less version etc.This should be the relation that embeds.If an image changes, then all image subsections also should be considered to be changed by application program.If image is deleted-and all its image subsections are deleted by WinFs.
MetadataLifecycle The variable of control metadata life cycle.
Image pattern also comprises adeditive attribute (nested element), and it is expanded as follows from Base.PropertyBase:
" Region ": the zone in the Region attribute representing images, and comprise following field:
Attribute-name Describe
Left The pixel coordinate in zone
Top The pixel coordinate in zone
Right The pixel coordinate in zone
Bottom The pixel coordinate in zone
" RegionOfInterest ": this attribute representation is special information of interest in image, and comprises following field:
Attribute-name Describe
Person The people's who in this interested territory, represents tabulation.If this zone comprises some things (continental embankment etc.) beyond the people, then this field is empty.
Region The set of interesting areas in image.The rectangle of zone face portion or important continental embankment for example.If empty, then rectangle is unknown (is used for the people who catches at picture and needn't know that they wherein).
Confidence Degree of confidence in this specific coupling, the supplier returns by metadata.
In addition, image pattern also can be included in a series of relations shown in Figure 36 A between visual project and other project, and is as follows:
" PersonReference ": image can have the one or more PersonRefernce link to contact person or main body project (Core.Principal of Fig. 8 A), showing the people in particular photos, and comprises following field:
Attribute-name Describe
Displayname The name that shows the people who quotes.This field is particularly useful in the pendulous situation of link itself, even but not unsteadiness of link, this field can be used for showing the people who how accurately to quote in the contact person of link in this particular image.
" EventReference ": image also can have the link to the EventReference of incident project (Core.Event among Fig. 8 A), showing the incident to special photo, and comprises following field:
Attribute-name Describe
Displayname The name that shows the incident of quoting.This field is particularly useful when link itself is played pendulum, even but unsteadiness of link, this field can be used for showing how this incident accurately is cited in this particular image.
" LocationReference ": image also can have the link to the LocationReference of position project (Core.Location of Fig. 8 A), showing the position of particular photos, and comprises following field:
Attribute-name Describe
Latitude Take the latitude of the position of this picture.This usually can obtain from digital camera.
Longitude Take the longitude of the position of this picture.This usually can obtain from digital camera.
Altitude Take the height of the position of this picture.This usually can obtain from the data camera.
Heading Take the direction (direction of camera court) of the position of this picture.This usually can obtain from digital camera.
LocationName Take the title of the position of this picture.Though this may be the free form character string, suggestion is broken down into the significant substring of representing the position.For example " Seattle (Seattle) ", " Washingtion (Washington) ", " USA (U.S.) " can be set up three independent examples of many-valued field for this reason.
B. picture mode
Picture mode is the auxiliary mode of image pattern, and it is applied to be actually the image of certain type of photo.To any photo project, the photo type is represented one group of attribute of describing photo, no matter and pixel format, and photo type expansion Image.Image type (that is " Image " type in " image " pattern) as shown in Figure 36.Be some field of photo type below:
Attribute-name Describe
DateTaken The date of pictures taken.This field can obtain from EXIF information or manually be provided with.
DateAquired From as the date of equipment such as digital camera or scanner when getting picture.
AcquisitionSessionID Obtain unique ID of session.For example, if my same volume film scans some photos, then this ID to all photos of same volume with identical.
Orientation Specify the field of visual direction.This semanteme is identical with EXIF label (1-8 number).Need more information to ask for an interview Http:// jpeqclub.org/exif orientation.htmlSky means the unknown.Vertically/horizontal direction label and the calculating of SizeX/SizeY determinacy ground from then on.
Location The position of pictures taken
Event The incident that this image is relevant.Routine " Birthday (birthday) " " Christmas (Christmas Day) "
CameraMake The title of the camera manufacturer that is used to take a picture.Example " Canon ".
CameraModel The camera model name that is used to take a picture.Example: " S50 ".
Attribute-name Describe
ExposureTime The shutter speed of showing with stopwatch (time shutter) (or more generally is a part
Second).
Aperture Be used to make the aperture setting of exposure.
IsoSpeed Be equivalent to the film speed of ISO sensitization rate.
Flash Is flashlamp bright? the flashless lamp of 0=, the 1=flashlamp is bright.Sky means does not know whether flashlamp is bright.
RedEyeUsed Use the blood-shot eye illness pattern? 0=is not.1=is.Sky means does not know.This is useful to advanced inquiry.For example, if use blood-shot eye illness, it seems that this be portrait.
ExposureMode Exposure mode.Allow following 5 value: Auto (automatically), Shutter priority (shutter priority level), Aperture priority (aperture priority level), ISO priority (ISO priority), Manual (manually).
SubjectDistance Record the distance of object by camera.Distance is by rice.
C. analytic attribute pattern
To digital photos, can on photo, calculate one group of attribute by analysis application.Yet, calculate and these attributes of re-computation are very spended time and processor resource.In addition, these fields are application-specific, and other application program may not understand the internal format of these fields.
The comparison film project, the analytic attribute group of the basis of calculation alternately before using by these application programs, and add it to photo project with the form of the expansion of comparison film item types.Analytic attribute pattern (ap mode) is done like this by the AP type that the AP expansion is provided just, and AP expansion itself also is the expansion of the Base.Extension expansion type of basic schema as shown in Figure 7.The expansion of AP type comprises following field:
Attribute-name Describe
ColorHistogram Be used for the color histogram data that similarity detects.
GrayHistogram Be used for the grey level histogram data that similarity detects.
SimilarityIndex Be used for the visual data texturing that similarity detects
IV. conclusion
As preceding explanation, The present invention be directed to be used to organize, the storage platform of search and shared data.The notion of data storage is expanded and widened to storage platform of the present invention, surmount existing file system and Database Systems, and be designed to store all types of data, comprise structurized, non-structured or semi-structured data, as relationship type (tabular form) data, XML and the new data form that is called as project.By the data of its common storage basis and medelling, storage platform of the present invention makes consumer, knowledge worker and enterprise can more effectively carry out the exploitation of application program.It provides abundant and extendible application programming interface, and it not only can be used on ability inherent in its data model, also can comprise and expand existing file system and data bank access method.Be appreciated that to make and change and do not depart from here inventive concepts widely the foregoing description.Thereby, the specific embodiment that the invention is not restricted to disclose, and be intended to cover by all modifications in the spirit and scope of the present invention of claim definition.
Understand that from above-mentioned all or part of various systems of the present invention, method and aspect can be implemented in the mode (as instruction) of program code.Procedure code can be stored in as on the computer-readable mediums such as magnetic, electricity or optical storage media, comprise but not in floppy disk, CD-ROM, CD-RW, DVD-ROM, DVD-RAM, tape, flash memory, hard disk drive or any other machine readable media, wherein when by loading as machines such as computing machine, servers and during the executive routine code, this machine becomes implements device of the present invention.The present invention also can implement in the form of the program code that sends by certain transmission medium, transmission medium such as electric wire or cable, optical cable, comprise the network of the Internet and Intranet or the transmission by any other form, wherein when by as the machine reception of computing machine, loading and executive routine code the time, this machine becomes and is used to implement device of the present invention.When realizing on general processor, the program code combining processor is to provide the unique device that is similar to the special logic line loop operation.

Claims (15)

1. method that is used to handle a plurality of projects, described a plurality of projects comprise and belong to an image and have the discrete information units of the accessible attribute of hardware/software interface system that described method comprises:
Set up an image model, to define at least one visual project and at least one image attributes;
Expand at least one visual project and define picture mode, the photograph item purpose elementary item type of handling can be therefrom derived in described picture mode definition in described hardware/software interface system, described elementary item type is used for defining the attribute of one the region of interest Domain Properties that comprises described photo project, and described area-of-interest attribute comprises the field of at least one individual in one the first area that is used for identifying described photo project;
In described photo project with belong between the project of at least one individual in the described photo project one and set up link.
2. the method for claim 1 is characterized in that, described elementary item type also comprises at least one attribute in the following set of properties: the date of taking described photo; Obtain the described date of photo; The unique identification of the acquisition session of described photo; Direction; The position; Incident; The manufacturer of camera; The model of camera; Time shutter; Aperture; ISO speed; Whether described photo is used the indication of flashlamp; Whether to described photo is the indication of using the blood-shot eye illness pattern; Exposure mode; And the target range of described photo.
3. the method for claim 1 is characterized in that, described region of interest Domain Properties also comprises the field of at least one area-of-interest in one the second area that is used for identifying described photo project.
4. method as claimed in claim 3 is characterized in that, described region of interest Domain Properties also comprises the degree of confidence field.
5. system that is used to handle a plurality of projects, described project comprise and belong to image and have the discrete information units of the intelligible attribute of hardware/software interface system that described system comprises:
Be used to set up an image pattern, to define the device of at least one visual project and at least one image attributes;
Be used to expand the device that at least one visual project defines picture mode, the photograph item purpose elementary item type of handling can be therefrom derived in described picture mode definition in described hardware/software interface system, described elementary item type is used for defining the attribute of one the region of interest Domain Properties that comprises described photo project, described area-of-interest attribute comprises the field of at least one individual in one the first area that is used for identifying described photo project, and second field that is used for identifying at least one area-of-interest in one the second area of described photo project;
Be used at one of described photo project and belong to the device of setting up link between the project of at least one individual in this photo project.
6. system as claimed in claim 5 is characterized in that, at least one attribute in the described image pattern is the area attribute of described image, and described area attribute comprises the field of the left, up, right, down coordinate in described zone.
7. system as claimed in claim 5 is characterized in that, one region of interest Domain Properties in the described photo project also comprises the degree of confidence field.
8. system as claimed in claim 5 is characterized in that, described hardware/software interface system comprises an analytic attribute pattern, at least one analytic attribute (AP) of one in its definition institute photo project.
9. system as claimed in claim 8 is characterized in that, described at least one AP comprises at least one in the following set of properties: color histogram; Grey level histogram; And index of similarity.
10. system as claimed in claim 5 is characterized in that, described elementary item type also comprises at least one attribute in the following set of properties: the date of taking described photo; Obtain the described date of photo; The unique identification of the acquisition session of described photo; Direction; The position; Incident; The manufacturer of camera; The model of camera; Time shutter; Aperture; ISO speed; Whether described photo is used the indication of flashlamp; Whether to described photo is the indication of using the blood-shot eye illness pattern; Exposure mode; And the target range of described photo.
11. a hardware/software interface system is handled the method for a plurality of projects, described project comprises the discrete information units that belongs to the image with the intelligible attribute of described hardware/software interface system, and described method comprises:
Set up an image pattern, to define at least one visual project and at least one image attributes;
The project of setting up in described image pattern is as the elementary item of forming the elementary item type, therefrom derives all other the visual project of handling in hardware/software interface system; And
By the photo digital image project of elementary item definition with belong between at least one individual's who in the zone of described photo digital image project, represents the project and set up link.
12. method as claimed in claim 11, it is characterized in that, also comprise, in order to represent to take the geographic position at described photo digital image project place, set up described digital image project and corresponding to the link between the position project in described geographic position, make and to inquire about described digital image project based on described position project.
13. method as claimed in claim 12 is characterized in that, also comprises, for the geographic position at the digital image project place of representing to take pictures, at the described position attribution that chains setting corresponding to described geographic position.
14. method as claimed in claim 11, it is characterized in that, also comprise, in order to be illustrated at least one incident of representing in the described photo digital image project, in described photo digital image project with belong to and set up link between the project of described incident, making can be based on the described photo digital image of the project query that belongs to described incident project.
15. method as claimed in claim 11, it is characterized in that, also comprise the link of foundation from the first digital image project to the second digital image project, the described second digital picture project is father's digital image project that (a) can derive the described first digital image project from it, or the sub-figure image project that (b) derives from the described first digital image project.
CN2004800015016A 2003-08-21 2004-07-29 Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system Expired - Fee Related CN101416153B (en)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
USPCT/US03/26144 2003-08-21
PCT/US2003/026144 WO2005029313A1 (en) 2003-08-21 2003-08-21 Systems and methods for data modeling in an item-based storage platform
US10/646,632 2003-08-21
US10/646,632 US7529811B2 (en) 2003-08-21 2003-08-21 Systems and methods for the implementation of a core schema for providing a top-level structure for organizing units of information manageable by a hardware/software interface system
US10/692,779 US8238696B2 (en) 2003-08-21 2003-10-24 Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
US10/692,779 2003-10-24
PCT/US2004/024437 WO2005024550A2 (en) 2003-08-21 2004-07-29 System and method for implementation of a digital image schema in a hardware/software interface

Publications (2)

Publication Number Publication Date
CN101416153A CN101416153A (en) 2009-04-22
CN101416153B true CN101416153B (en) 2010-09-29

Family

ID=34279604

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2004800015016A Expired - Fee Related CN101416153B (en) 2003-08-21 2004-07-29 Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system

Country Status (5)

Country Link
EP (1) EP1620781A4 (en)
JP (1) JP4901472B2 (en)
KR (1) KR20060113353A (en)
CN (1) CN101416153B (en)
WO (1) WO2005024550A2 (en)

Families Citing this family (22)

* 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
US8166101B2 (en) 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
US8238696B2 (en) 2003-08-21 2012-08-07 Microsoft Corporation Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
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
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
US8095940B2 (en) 2005-09-19 2012-01-10 Citrix Systems, Inc. Method and system for locating and accessing resources
US8613048B2 (en) 2004-09-30 2013-12-17 Citrix Systems, Inc. Method and apparatus for providing authorized remote access to application sessions
US7805422B2 (en) 2005-02-28 2010-09-28 Microsoft Corporation Change notification query multiplexing
US7930346B2 (en) 2005-08-24 2011-04-19 Microsoft Corporation Security in peer to peer synchronization applications
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
US7865589B2 (en) 2007-03-12 2011-01-04 Citrix Systems, Inc. Systems and methods for providing structured policy expressions to represent unstructured data in a network appliance
US8631147B2 (en) 2007-03-12 2014-01-14 Citrix Systems, Inc. Systems and methods for configuring policy bank invocations
US7853678B2 (en) 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring flow control of policy expressions
US7853679B2 (en) 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring handling of undefined policy events
US8171483B2 (en) 2007-10-20 2012-05-01 Citrix Systems, Inc. Method and system for communicating between isolation environments
US8090797B2 (en) 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
WO2016142890A1 (en) 2015-03-12 2016-09-15 Koninklijke Philips N.V. Methods of displaying the antimicrobial sensitivity of biological isolates
CN108924653B (en) * 2018-07-19 2021-01-01 武汉斗鱼网络科技有限公司 Bullet screen message distribution method, device, equipment and storage medium
CN110706147B (en) * 2019-09-29 2023-08-11 阿波罗智联(北京)科技有限公司 Image processing environment determination method, device, electronic equipment and storage medium

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1208304A (en) * 1997-08-07 1999-02-17 株式会社东芝 Image information inputting apparatus and method
CN1240965A (en) * 1998-06-15 2000-01-12 松下电器产业株式会社 Image management system and method
US6310647B1 (en) * 1997-04-15 2001-10-30 Eastman Kodak Company Image format for storing digital images and including multiple application segments

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0744617A (en) * 1993-07-30 1995-02-14 Olympus Optical Co Ltd Device and method for controlling image storage
JP2000330858A (en) * 1999-05-25 2000-11-30 Fujitsu Ltd Image processor and program storage medium
JP4073156B2 (en) * 1999-07-14 2008-04-09 富士フイルム株式会社 Image search device
JP3824137B2 (en) * 2001-03-16 2006-09-20 日本電信電話株式会社 DATA REPRODUCING METHOD, DATA REPRODUCING DEVICE, PROGRAM, AND RECORDING MEDIUM THEREOF
JP3984029B2 (en) * 2001-11-12 2007-09-26 オリンパス株式会社 Image processing apparatus and program
US20030131002A1 (en) * 2002-01-08 2003-07-10 Gennetten K. Douglas Method and apparatus for identifying a digital image and for accessing the digital image over a network

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6310647B1 (en) * 1997-04-15 2001-10-30 Eastman Kodak Company Image format for storing digital images and including multiple application segments
CN1208304A (en) * 1997-08-07 1999-02-17 株式会社东芝 Image information inputting apparatus and method
CN1240965A (en) * 1998-06-15 2000-01-12 松下电器产业株式会社 Image management system and method

Also Published As

Publication number Publication date
WO2005024550A2 (en) 2005-03-17
CN101416153A (en) 2009-04-22
JP2007517268A (en) 2007-06-28
JP4901472B2 (en) 2012-03-21
KR20060113353A (en) 2006-11-02
EP1620781A2 (en) 2006-02-01
EP1620781A4 (en) 2008-12-03
WO2005024550A3 (en) 2007-11-22

Similar Documents

Publication Publication Date Title
CN1739107B (en) Systems and methods for providing synchronization services for units of information manageable by a hardware/software interface system
CN100458732C (en) Systems and methods for providing relational and hierarchical synchronization services for units of information manageable by a hardware/software interface system
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
CN100550010C (en) Be used for application program and system and method based on the storage platform interface of item
CN100570549C (en) The system and method that is used for the data modeling of project-based storage platform
Silberschatz et al. Strategic directions in database systems—breaking out of the box
US7634501B2 (en) Method and apparatus for mediated cooperation
US5920873A (en) Data management control system for file and database
CN1828527B (en) Platform for data services across disparate application frameworks
JP4583376B2 (en) System and method for realizing a synchronous processing service for a unit of information manageable by a hardware / software interface system
US9565246B1 (en) System and method for project and process management by synchronizing custom objects between an application and external server
US20050063083A1 (en) Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
CA2587758A1 (en) Systems and methods for controlling access to electronic records in an archives system
JP2008511928A (en) Metadata management
CN100565505C (en) System and method by intermediary&#39;s file system or device synchronization computer system
US20080028000A1 (en) Synchronization operations involving entity identifiers
CN1871598B (en) Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system
CN1739093B (en) Systems for the implementation of a synchronization schemas
CN1716247B (en) System and method for synchronously providing conflict processing for information managing unit by hardware/software interface system
Silberschatz et al. Database systems—breaking out of the box
Mocan et al. Solving semantic interoperability conflicts in cross-border e-government services
RU2412461C2 (en) Systems and methods of interfacing application programs with article based storage platform
Thimm et al. A dbms-based multimedia archiving teleservice incorporating mail
Özsu et al. An Introduction to Distributed Object Management.
Warne Flexible transaction framework for dependable workflows

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

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

Effective date of registration: 20150519

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100929

Termination date: 20190729