The present invention requires the right of priority of following patented claim: the U.S. Patent Application No. 10/693 that on October 24th, 2003 submits to, 574 (application attorney docket MSFT-2847), title is " SYSTEMS AND METHODS FOREXTENSIONS AND INHEITANCE FOR UNITS OF INFORMATIONMANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM (for the expansion of message unit and the system and method for succession that can be managed by hardware/software interface system) "; The U.S. Patent Application No. 10/646 that on August 21st, 2003 submits to, 580 (application attorney docket MSFT-2735), title is " SYSTEMSAND METHODS FOR DATA MODELING IN AN ITEM-BASED STORAGEPLATFORM the system and method for data modeling (in the project-based storage platform for) "; And on August 21st, 2003 the international application no PCT/US 03/26144 (application attorney docket MSFT-2779) that submits to, title is " SYSTEM AND METHODS FOR DATA MODELING IN AN ITEM-BASEDSTORAGE PLATFORM the system and method for data modeling (in the project-based storage platform for) "; By reference their content is included in to this.
The application is relevant to the invention disclosing in the application of general appointment below on theme, by reference their content whole is comprised in the present invention to (and being partly summarized in this for convenient): the U.S. Patent Application No. 10/647 that on August 21st, 2003 submits to, 058 (application attorney docket MSFT-1748), title is " SYSTEMSAND METHODS FOR REPRESENTING UNITS OF INFORMATIONMANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM BUTINDEPENDENT OF PHYSICAL REPRESENTATION (for representing the message unit that can be managed by hardware/software interface system but be independent of the system and method for physical representation) ", the U.S. Patent Application No. 10/646 that on August 21st, 2003 submits to, 941 (application attorney docket MSFT-1749), title is " SYSTEMS ANDMETHODS FOR SEPARATING UNITS OF INFORMATION MANAGEABLE BY AHARDWARE/SOFTWARE INTERFACE SYSTEM FROM THEIR PHYSICALORGANIZATION (system and method for the message unit that can be managed by hardware/software interface system for the physical organization's separation according to them) ", the U.S. Patent Application No. 10/646 that on August 21st, 2003 submits to, 940 (application attorney docket MSFT-1750), title is " SYSTEMS AND METHODS FOR THEIMPLEMENTATION OF A BASE SCHEMA FOR ORGANIZING FOR UNITS OFINFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACESYSTEM (for realizing the system and method for the basic mode formula of the message unit that tissue can be managed by hardware/software interface system) ", the U.S. Patent Application No. 10/646 that on August 21st, 2003 submits to, 632 (application attorney docket MSFT-1751), title is " SYSTEMS AND METHODS FOR THE IMPLEMATION OF ACORE SCHEMA FOR PROVIDING A TOP-LEVEL STRUCTURE FORORGANIZING UNITS OF INFORMATION MANAGEABLE BY AHARDWARE/SOFTWARE INTERFACE SYSTEM (system and method for the core schema of top level structure is provided for being embodied as message unit that tissue can be managed by hardware/software interface system) ", the U.S. Patent Application No. 10/646 that on August 21st, 2003 submits to, 645 (application attorney docket MSFT-1752), title is " SYSTEMSAND METHODS FOR REPRESENTING RELATIONSHIPS BETWEEN UNITS OFINFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACESYSTEM (for the system and method for relation between the message unit that represents to be managed by hardware/software interface system) ", the U.S. Patent Application No. 10/646 that on August 21st, 2003 submits to, 575 (application attorney docket MSFT-2733), title is " SYSTEMS AND METHODS FOR INTERFACING APPLICATIONPROGRAMS WITH AN ITEM-BASED STORAGE PLATFORM (for making the system and method for the project-based storage platform of application programming interfaces) ", the U.S. Patent Application No. 10/646 that on August 21st, 2003 submits to, 646 (application attorney docket MSFT-2734), title is " STORAGE PLATFORM FORORGANIZING, SEARCHING, AND SHARING DATA (for organizing, search for and the storage platform of shared data) ", the U.S. Patent Application No. 10/692 that on August 21st, 2003 submits to, 779 (application attorney docket MSFT-2829), title is " SYSTEMS AND METHODS FOR THE IMPLEMENTATIONOF A DIGITAL IMAGES SCHEMA FOR ORGANIZING UNITS OFINFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACESYSTEM (for realizing the system and method for the digital picture pattern of the message unit that tissue can be managed by hardware/software interface system) ", the U.S. Patent Application No. 10/692 that on August 21st, 2003 submits to, 515 (application attorney docket MSFT-2844), title is " SYSTEMS AND METHODS FOR PROVIDINGSYNCHRONIZATION SERVICES FOR UNITS OF INFORMATIONMANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM (being used to the message unit that can be managed by hardware/software interface system that the system and method for synchronous service is provided) ", the U.S. Patent Application No. 10/692 of submitting on the same day with the application, 508 (application attorney docket MSFT-2845), title is " SYSTEMS AND METHODS FOR PROVIDING RELATIONAL ANDHIERARCHICAL SYNCHRONIZATION SERVICES FOR UNITS OFINFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACESYSTEM (being used to the message unit that can be managed by hardware/software interface system that the system and method for the synchronous service of related and layering is provided) ", and the U.S. Patent Application No. 10/693 of submission on October 24th, 2003,362 (application attorney docket MSFT-2846), title is " SYSTEMS AND METHODS FOR THEIMPLEMENTATION OF A SYNCHRONIZATION SCHEMAS FOR UNITS OFINFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACESYSTEM (for realizing the system and method for the synchronous mode of the message unit that can be managed by hardware/software interface system) ".
Describe in detail
Catalogue
I. foreword ... ... ... ... ... ... ... ... ... ... 14
A. example calculation environment ... ... ... ... ... ... ... ... ..14
B. traditional storage based on file ... ... ... ... ... ... ... ..17
II. for organizing, search for and the WINFS storage platform of shared data ... ... ... ... 18
C. vocabulary ... ... ... ... ... ... ... ... ... ... .18
D. storage platform is summarized ... ... ... ... ... ... ... ... ... .18
E. data model ... ... ... ... ... ... ... ... ... ..20
1. project ... ... ... ... ... ... ... ... ... ... 21
2. project label ... ... ... ... ... ... ... ... ... ..23
3. project folder and classification ... ... ... ... ... ... ... ... 24
4. pattern ... ... ... ... ... ... ... ... ... ... 26
A) basic schema ... ... ... ... ... ... ... ... ... ..26
B) core schema ... ... ... ... ... ... ... ... ... ..26
5. relation ... ... ... ... ... ... ... ... ... ... 28
A) relation statement ... ... ... ... ... ... ... ... ... ..28
B) hold relation ... ... ... ... ... ... ... ... ... ..29
C) imbeding relation ... ... ... ... ... ... ... ... ... ..30
D) adduction relationship ... ... ... ... ... ... ... ... ... ..31
E) Rule and constraint ... ... ... ... ... ... ... ... ... 32
F) sequence of relation ... ... ... ... ... ... ... ... ... 32
6. extensibility ... ... ... ... ... ... ... ... ... ..36
A) extension ... ... ... ... ... ... ... ... ... ..37
B) expansion NestedElement type ... ... ... ... ... ... ... .40
F. database engine ... ... ... ... ... ... ... ... ... 41
1. use the data storage of UDT to realize ... ... ... ... ... ... ... .42
2. project mapping ... ... ... ... ... ... ... ... ... ..42
3. expansion mapping ... ... ... ... ... ... ... ... ... ..43
4. nested element mapping ... ... ... ... ... ... ... ... ... .44
5. object identity ... ... ... ... ... ... ... ... ... ..44
6.SQL object naming ... ... ... ... ... ... ... ... ... ..44
7. row name ... ... ... ... ... ... ... ... ... ... .45
8. search for view ... ... ... ... ... ... ... ... ... ..45
A) project ... ... ... ... ... ... ... ... ... ... 46
(1) master project search view ... ... ... ... ... ... 46
(2) the project search view of classifying type ... ... ... ... ... 46
B) extension ... ... ... ... ... ... ... .47
(1) main expanded search view ... ... ... ... ... ... 47
(2) the expanded search view of classifying type ... ... ... ... ... 47
C) nested element ... ... ... ... ... ... ... ..48
D) relation ... ... ... ... ... ... ... ... ..48
(1) primary relation search view ... ... ... ... ... ... 48
(2) relationship example search view ... ... ... ... ... ... .48
e)...................................................49
9. upgrade ... ... ... ... ... ... ... ... ..49
10. change and follow the tracks of and gravestone ... ... ... ... ... ... 50
A) change and follow the tracks of ... ... ... ... ... ... ... .50
(1) change in " master " search view is followed the tracks of ... ... ... ... 50
(2) change in " classifying type " search view is followed the tracks of ... ... ... 51
B) gravestone ... ... ... ... ... ... ... ... ..52
(1) project gravestone ... ... ... ... ... ... ... 52
(2) expansion gravestone ... ... ... ... ... ... ... 52
(3) be related to gravestone ... ... ... ... ... ... ... 53
(4) gravestone is removed ... ... ... ... ... ... ... 53
11. assistant API and functions ... ... ... ... ... ... .54
A) function [System.Storage] .GetItem.......................54
B) function [System.Storage] .GetExtension..................54
C) function [System.Storage] .GetRelationship...............54
12. metadata ... ... ... ... ... ... ... ..54
A) pattern metadata ... ... ... ... ... ... ... ..54
B) instance metadata ... ... ... ... ... ... ... ..54
G. security ... ... ... ... ... ... ... ... 54
H. notify and change tracking ... ... ... ... ... ... .55
It is I. synchronous ... ... ... ... ... ... ... ... ..55
1. synchronous to storage platform of storage platform ... ... ... ... ... 56
A) synchronous (Sync) controlling application program ... ... ... ... ... ..56
B) pattern annotation ... ... ... ... ... ... ... .57
C) synchronously configuration ... ... ... ... ... ... ... .58
(1) community's file-mapping ... ... ... ... ... ... 58
(2) overview ... ... ... ... ... ... ... ... .59
(3) timetable ... ... ... ... ... ... ... ... ... 60
D) conflict is processed ... ... ... ... ... ... ... ... ... ..60
(1) collision detection ... ... ... ... ... ... ... ... ... .60
(a) conflict based on knowledge ... ... ... ... ... ... ... ... .60
(b) conflict based on constraint ... ... ... ... ... ... ... ... .61
(2) conflict is processed ... ... ... ... ... ... ... ... ... .61
(a) automatic collision decomposition ... ... ... ... ... ... ... ... 61
(b) conflict log recording ... ... ... ... ... ... ... ... 62
(c) conflict examination and decomposition ... ... ... ... ... ... ... ... .62
(d) convergence of duplicate and the propagation of collision decomposition ... ... ... ... ... 62
2. pair non-storage platform data storage is synchronous ... ... ... ... ... ... ..63
A) synchronous service ... ... ... ... ... ... ... ... ... ..63
(1) change and enumerate ... ... ... ... ... ... ... ... ... .63
(2) change application ... ... ... ... ... ... ... ... ... .64
(3) collision decomposition ... ... ... ... ... ... ... ... ... .65
B) adapter is realized ... ... ... ... ... ... ... ... ... 65
3. security ... ... ... ... ... ... ... ... ... .65
4. manageability ... ... ... ... ... ... ... ... ... ..66
J. traditional file interoperability ... ... ... ... ... ... ... ... 66
K. storage platform API..................................................66
III. expand and inherit ... ... ... ... ... ... ... ... .71
A. type system ... ... ... ... ... ... ... ... ... ..72
B. type family ... ... ... ... ... ... ... ... ... ..77
1. nested element type ... ... ... ... ... ... ... ... .77
2. item types ... ... ... ... ... ... ... ... ... ..77
3. relationship type ... ... ... ... ... ... ... ... ... ..78
A) relation is semantic ... ... ... ... ... ... ... ... ... ..79
B) relation rule and constraint ... ... ... ... ... ... ... ... ..80
4. expansion type ... ... ... ... ... ... ... ... ... ..81
C. the function strengthening ... ... ... ... ... ... ... ... ... 82
1. inherit ... ... ... ... ... ... ... ... ... ... 82
2. expansion ... ... ... ... ... ... ... ... ... ... 83
IV. conclusion ... ... ... ... ... ... ... ... ... ..84
I. foreword
Theme of the present invention is described by details, to meet legal requirement.Yet itself does not attempt to limit the scope of this patent this description.On the contrary, present inventor's imagination, claimed theme also can otherwise be implemented, to comprise and to be similar to the different step of this declarative description or the combination of step in conjunction with other current and following technology.In addition, although term " step " can be used for meaning the different elements of adopted method here, however implicit specific order between each step that this term can not be interpreted as here disclosing, unless described clearly the order of each step.
A. example calculation environment
Many embodiment of the present invention can carry out on computers.Fig. 1 and below discussion aim to provide the concise and to the point description that wherein realizes suitable computing environment of the present invention.Although be not essential, aspects of the present invention can be with such as by describing in context as the computer executable instructions of the program module of carrying 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 data type.In addition, the present invention can realize by other computer system configurations, comprises handheld device, multicomputer system, the system based on microprocessor or programmable consumer electronics, network PC, minicomputer, large scale computer etc.The present invention can also realize in distributed computing environment, and wherein task is completed by the teleprocessing equipment linking by communication network.In distributed computing environment, program module can be arranged in Local or Remote memory storage device.
As shown in Figure 1, exemplary universal computing system comprises traditional personal computer 20 etc., and it comprises processing unit 21, system storage 22 and the various system components that comprise system storage is coupled to the system bus 23 of processing unit 21.System bus 23 can be several bus-structured any, any the local bus that comprises memory bus or memory controller, peripheral bus and use various bus architectures.System storage comprises ROM (read-only memory) (ROM) 24 and random access storage device (RAM) 25.Basic input/output 26 (BIOS) comprises as helped the basic routine of transmission information between all elements at personal computer 20 when starting, and is stored in ROM 24.Personal computer 20 also can comprise the hard disk drive 27 of reading writing harddisk (not shown), read and write the disc driver 28 of moveable magnetic disc 29, read-write as the CD drive 30 of 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.Although exemplary environments described herein adopts hard disk, moveable magnetic disc 29 and removable CD 31, those skilled in the art understand, in exemplary operation environment, also can use can stored energy by other type computer computer-readable recording mediums of the data of computer access, as magnetic tape cassette, flash card, digital video disc, Bernoulli magnetic tape cassette, random access memory (RAM), ROM (read-only memory) (ROM) etc.Similarly, example context also can comprise is permitted eurypalynous surveillance equipment, as temperature-sensitive and safety or fire alarm system, and other information source.
Some program modules can be stored in hard disk, disk 29, CD 31, ROM 24 or RAM 25, comprise operating system 35, one or more application program 36, other program module 37 and routine data 38.User can be by ordering as input equipments such as keyboard 40 and positioning equipments 42 with input information to personal computer 20.Other input equipment (not shown) can comprise microphone, operating rod, game mat, satellite dish, scanner etc.Here to the serial line interface 46 of system bus, be connected to processing unit 21 with other input equipment normal open overcoupling, but also can connect by other interface, as parallel port, game port or USB (universal serial bus) (USB).The display device of monitor 47 or other type is also by being connected to system bus 23 as the interface of video adapter 48.Except 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 as the logic of one or more remote computers of remote computer 49 is connected in network environment and operate.Remote computer 49 can be another personal computer, server, router, network PC, peer device or other common network node, and generally include above many or all elements that personal computer 20 is described, although memory storage device 50 is only shown in Fig. 1.The logic drawing in Fig. 1 connects and comprises LAN (Local Area Network) (LAN) 51 and wide area network (WAN) 52.Such network environment is common in office, enterprise-wide. computer networks, Intranet and the Internet.
While using in lan network environment, personal computer 20 is connected to LAN51 by network interface or adapter 53.While using in WAN network environment, personal computer 20 generally includes modulator-demodular unit 54 or as the wide area networks such as the Internet 52, sets up other device of communication for passing through.Built-in or external modulator-demodular unit 54 is by serial port interface 46 connected system buses 23.In network environment, personal computer 20 draws relatively program module or its part can be stored in remote memory storage device.Be appreciated that it is exemplary that the network illustrating connects, and can use other device of setting up communication link between computing machine.
As shown in the block diagram of Fig. 2, computer system 200 can be divided into three assembly groups roughly: nextport hardware component NextPort 202, hardware/software interface system component 204 and application component 206 (here in some context also referred to as " nest " or " component software ").
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, most applications the latter, itself comprises shell and kernel." operating system " is (OS) separate procedure of taking on the intermediary between application program and computer hardware.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 operating system.The object of hardware/software interface system is to provide 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 in effective mode.
Hardware/software interface system is generally loaded into computer system when starting, and manages subsequently all application programs in computer system.Application program is by coming with hardware/software interface system mutual via application programming interfaces (API) request service.Some application program make final user can by as command language or graphic user interface (GUI) and hardware/software interface system mutual.
Hardware/software interface system is the various services of executive utility traditionally.In the multitask hardware/software interface system of simultaneously moving in a plurality of programs, hardware/software interface system determines which application program is with what time sort run, and in turn each being applied to journey, how long allows before being switched to Another Application program.Hardware/software interface system is also managed sharing of between a plurality of application programs internal storage, and processes the input and output that commute hardware device as additional in hard disk, printer and dialing port etc.Hardware/software interface system also sends to the message of relevant mode of operation and contingent any mistake each application program (arriving in some cases final user).Hardware/software interface system also can pass down the management of (as printed) of (offload) batch processing job, makes the application program starting can break away from this work and restart other processing and/or operation.Can provide on the computing machine of parallel processing, hardware/software interface system is also managed partition program, and it is moved simultaneously on a plurality of processors.
Hardware/software interface system shell (being called for short " shell " here) is the interactive end-user interface to hardware/software interface system.(shell also referred to as " command interpreter ", or be 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.Contrary with shell, kernel is the innermost layer direct and hardware/software interface system that nextport hardware component NextPort is mutual.
Although can conceive many embodiment of the present invention, be particularly useful for computerized system, yet do not mean that in the present note and limit the invention to those embodiment.On the contrary, term used herein " computer system " is intended to comprise can Storage and Processing information and/or can use any and all devices of behavior or the execution of canned data opertaing device itself, and no matter whether those equipment are electronics, mechanical, logic or virtual in essence.
B. traditional storage based on file
In current most computers system, " file " is the unit that can store information, and it can comprise hardware/software interface system and application program, data set etc.In all modern hardware/software interface system (Windows, Unix, Linux, MacOS, dummy machine system etc.), file is basic discrete (can store and can the retrieve) message unit that can be processed by hardware/software interface system.File group is organized into " file " conventionally.In MicrosoftWindows, Macintosh OS and other hardware/software interface system, file be can be retrieved as single message unit, the set of the mobile and file processed.These files and then be organized into are called the hierarchy based on tree-like of " catalogue " (discussing in detail in the back) and arrange.In as other hardware/software interface system of Dos, z/OS and the operating system of great majority based on Unix, term " catalogue " and/or " file " are interchangeable, and early stage apple computer system (as Apple IIe) is used term " classification " to replace catalogue; Yet while here using, all these terms are regarded as synonym and can be used alternatingly, and are intended to also 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 the hierarchy based on tree-like, and wherein file is combined into file, file and then the relative node location arrangement of pressing formation directory tree.For example, as shown in Figure 2 B, basic document folder (or " root directory ") 212 of file system based on 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, although in hardware/software interface system level, what common ground each file in file does not have except their positions in tree-like hierarchy.Not strange, file organization has been reflected indirectly to the physical organization of the typical storage medium (as hard disk, floppy disk, CD-ROM etc.) for storing these files to the method for file hierarchy.
Except above-mentioned, each file be to its sub-folder and its catalogue container-, each file has its sub-folder and file.For example, when file is deleted by hardware/software interface system, the sub-folder of this document folder and file be deleted (also recursively comprising its sub-folder and file) also the in the situation that of each sub-folder.Equally, each file is general only to be had by a file, although and file can be copied and copy is positioned at different files, the copy of file itself is difference and separate unit, it with source document without being directly connected (as the change of source document not being reflected in hardware/software interface system level to wave file).Therefore in this respect, file and file are " physics " in itself because file is similar to physical container, process, and file as different in these containers and independently physical element process.
II. for organizing, search for and the WINFS storage platform of shared data
The present invention in conjunction with invention incorporated herein by reference for for organizing, search for and the storage platform of 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.
C. vocabulary
Here and the term using in claims have following meaning:
" project " is the unit of the addressable information of energy storage hardware/software interface system, do not resemble simple files, and it is to have by hardware/software interface system shell to represent the object to final user's the common basic attribute set of supporting of all objects.Project also tool, to common attribute and the relation of supporting of all items type, comprises the feature (discussing in detail below) that allows to introduce new attribute and relation.
" operating system " is (OS) separate procedure of disguising as the intermediary between application program and computer hardware.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 the interface between the bottom hardware assembly of computer system and the application program carried out in computer system.Hardware/software interface system generally includes (only including 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 operating system.The object of hardware/software interface system is to provide 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.
D. storage platform is summarized
With reference to figure 3, storage platform 300 is included in the data storage 302 realizing on database engine 314.In one embodiment, database engine comprises the relevant database engine with object relationship expansion.In one embodiment, relevant database engine 3 14 comprises Microsoft SQL Server relevant database engine.Data storage 302 realizes the tissue, search of supported data, shared, synchronous and safe data model 304.In as mode 3 40 isotypes, describe specific data type, and storage platform 300 is provided for adopting these patterns and for expanding the instrument 346 of these patterns, this describes in detail in the back.
The change follow-up mechanism 306 realizing 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 to utilizing other storage platform assembly of this storage platform and the ability of 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 350b, and the application program such as 350c can be accessed all above-mentioned functions of storage platform and can access the data of describing in pattern.Application program can be in conjunction with using storage platform API 322 as other API such as OLE OB API 324 and Microsoft Windows Win 32 API 326.
Storage platform 300 of the present invention can provide various services to application program, comprises the synchronous service 330 of being convenient at the data sharing of user or system.For example, synchronous service 330 allows and has the interoperability of storing other data storage 340 of 302 same format with data, and access has the data storage 342 of other form.Storage platform 300 also provide allow data storage 302 with as the file system ability of the interoperability of Windows new technology file system 318 systems such as existing file such as grade.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 as in the form of the 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 by 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 can more effectively carry out the exploitation of application program.It provides abundant and extendible programming surf zone, in not only can obtaining, is contained in the ability in its data model, can also comprise and expand existing file system and data bank access method.
In the foregoing description and 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 is only for convenience, does not attempt to make restriction like this.
E. data model
The data storage 302 of storage platform 300 of the present invention realizes a kind of data model, and it supports tissue, search, shared, synchronous and safety to residing in the data in data storage.In data model of the present invention, " project " is the elementary cell of storage information.This data model provides a kind of mechanism, for the expansion of statement project and project, for be based upon relation between project and for by the project organization to project folder and classification, will more fully describe below.
This data model depends on two primitive mechanism: type and relation.Type is to provide the structure of form of form of the example of domination type.Form is expressed as orderly group of attribute.Attribute is the name of the value or set of values of given type.For example, USPostalAddress (United States Post Office address) type has attribute Street (street), City (city), Zip (postcode), State (state), wherein Street, City and State are String types, and Zip is Int32 type.Street can be many-valued (i.e. a class value), allows address to have an above value to Street attribute.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 any primitive type (with some restriction annotating) or the type of any structure to carry out the attribute of define styles below.For example, Location (position) type definable has attribute Coordinate (coordinate) and Address (address), and wherein Address attribute is the above-mentioned type USPostalAddress.Attribute can be also essential or optional.
Relation can be declared and represent the mapping between the example set of two types.For example, can have the relation of stating 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, 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 there is in addition attribute StartDate (from date) and EndDate (date of expiry), represent that this resident living is in the time period of this house.Note, pass in time, individual can live in a plurality of houses, and house can have a plurality of residents, so place the most probable place of StartDate and EndDate information, is to be originally in relation.
Contextual definition the mapping between the example of the type constraint by providing as endpoint type.For example LivesAt relation can not be that wherein Automobile (automobile) is Occupant (resident's) relation, because Automobile is not Person.
Data model allows the subtype-super type of relationship between define styles.Subtype-superclass also referred to as fundamental type relation is that type relation defines as follows, if type A is the fundamental type of type B, each example that must be B is also 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 A has the attribute Name (name) of String type, and B has the attribute Age (age) of Int16 type, draws, any example of B must have Name and Age concurrently.The hierarchy of type can be envisaged as the tree with the single superclass type on root.The branch of root provides first order subtype, and this grade of branch provides second level subtype, and so on, until itself no longer there is end of blade (leaf-most) subtype of any subtype.Tree is not limited to the unified degree of depth, but can not comprise any loop.Given type can have zero perhaps many subtype and zero or a superclass type.Given example can meet at most the superclass type an of type and the type.In other words, to tree in arbitrary grade locate given example, this example can meet at most a subtype on this grade.If the example of a type must be also the example of the subtype of the type, 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 of supporting of all objects being 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 new attribute and the feature of relation.
Project is the object of common operation, as copied, delete, move, open, print, back up, recover, copy etc.Project is the unit that can be stored and retrieve, and the form of ownership of the stored information of being processed by storage platform exists as the attribute of project, project or the relation between project, its each be discussed in more detail below.
That project is intended to represent reality and hold intelligible data cell, 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, this project structure is defined by the project (Core pattern discusses in detail below) of the particular type in Core (core) pattern.
Location project has a plurality of attributes, comprises EAddress (e-mail address), MetropolitanRegion (urban place), Neighborhood (neighbour) and PostalAddress (postal address).The particular type attribute of each project represents immediately following attribute-name ground, and separates with attribute-name with colon (": ").The right in type name, the quantity of the value that this attribute type is allowed represents between square bracket (" [] "), and wherein the asterisk (" * ") on the right of colon (": ") represents unspecified and/or unconfined quantity (" many ")." 1 " on colon the right shows maximum values.Zero (" 0 ") on the colon left side shows that this attribute is optional (void value completely)." 1 " on the colon left side shows to have at least a value (this attribute is necessary).Neighborhood and MetropolitanRegin are all " nvarchar " types (or connection of equivalent type), and it is predefined data type or " simple types " (representing with lacking capitalization here).Yet EAddress and PostalAddress are respectively the defined type of type EAddress and PostalAddress or the attribute of " complicated type " (here with capitalization mark).Complicated type is from one or more simple data types and/or the type that derives from other complicated type.The complicated type of the attribute of a project also forms " nested element ", because the details of complicated type is nested in direct project to define its attribute, and the information appliance that belongs to these complicated types has the project of these attributes to maintain (in the border of this project, as discussed) below.These concepts of type are that crowd knows, and easily by those skilled in the art, are understood.
Fig. 5 B is the block diagram that complex properties type PostalAddress and EAddress are shown.The definition of PostalAddress attribute type, 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 quantity (zero to many) PostalAddress type etc.In this way, defined the shape of the data of the particular community in a project.EAddress attribute type is definition similarly as shown.Although optionally use in this application here, the other method that is illustrated in complicated type in Location project is to draw this project with each attribute of each complicated type of wherein listing.Fig. 5 C is the block diagram that Location project is shown, and further describes therein its complicated type.Yet should be appreciated that, in this Fig. 5 C, the another kind of Location project represents it is just the same project to shown in Fig. 5 A.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, project inheritance ground represents its oneself Item (project) type, and it is also the theme of subclassification.In other words, the storage platform in some embodiment of the present invention allows the subtype that a project is another project (thereby project is inherited the attribute of another father's project).In addition, to various embodiment of the present invention, each project is the subtype of " Item " item types, and the latter is first and the basic item types (basic schema also discusses in detail in the back) finding in basic schema.Fig. 6 A illustrates the subtype that a project (in this example for Location project) is 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.As the Item item types of therefrom deriving the elementary item of all other projects, have some as the important property of ItemId and various time mark, thereby defined the standard attribute of all items in 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 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 Location project is shown, and wherein except its direct attribute, describes the type of its succession.Should note and understand, this project is the same project shown in Fig. 5 A, although in this figure, Location illustrates with all its attributes, comprise direct attribute (shown in Ben Tu and Fig. 5 A) and inherited attribute (shown in this figure but not shown in Fig. 5 A) (and in Fig. 5 A, by Location project is shown with arrow, being that the subtype of Item item types is quoted these attributes).
Project is object independently, if thereby the project of deletion, also delete items all directly and the attribute of inheriting.Similarly, when retrieval is during one project, retrieval be this project and all directly and the attribute (comprising the information that belongs to its complex properties type) of inheriting.Some embodiment of the present invention can make the people can be in the subset of retrieval request attribute during specific project; Yet to many such embodiment acquiescences are the projects with all its direct attributes with inheriting that provide when retrieving.In addition, the attribute of project also can be expanded to the existing attribute of the type of this project by adding new attribute.These " expansions " are thereafter the real properties of this project, and the subtype of this item types can automatically comprise extended attribute.
" border " of project represented by its attribute (comprising complex properties type, expansion etc.).The border of project is also illustrated in the restriction of the operation of carrying out in project, comprises copy, deletion, movement, establishment etc.For example, in some embodiment of the present invention, when copy one project, all the elements within this item boundaries are also copied.To each project, border comprises following:
The item types of project, if and this project is another object subtype (as in the situation that of the present invention some embodiment that all items is derived from the single project of basic schema and item types), be any applicable sub-type information (information that belongs to father's item types).If the original project copying is another object subtype, this copy can be also 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 list.This in particular concerns the rule that the project folder discussing fully and all items mentioning must at least belong to a project folder below below.In addition,, about embedding project (following more discuss fully), an embedding project is considered to wherein embed the part as the project of the operations such as copy, deletion.
2. project label
In overall project space, with ItemID, identify uniquely project.Base.Item type definition store the field ItemID of the type GUID of this project identity.One project must accurately only have an identity in data storage.
It is the data structure that comprises location and identification item object 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).Resolve method is resolved ItemReference and is returned to a project.The method is covered by the concrete subtype of ItemReference, and the latter realizes the function of given one search terms while quoting.Call Resolve method as a part of 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 processed by the locator resolution method that the value of Locator can be resolved to item domains.ItemID field is ItemID type.
ItemPathReference (item Path is quoted) is the particularization that defines the ItemReference of Locator and Path (path) field.Locator field identification one item domains.It is processed by the locator resolution method that the value of Locator can be resolved to item domains.(relatively) path of take in the storage platform name space that the item domains that provided by Locator is root is provided Path field.
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 represents 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 relation statement.
3. project folder and classification
As will be more discussed fully below, 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 accessed and when revision in a project folder, the project of this revision subsequently can be directly from another project folder access.In fact, although can occur from different project folders the access of a project, in fact real access is same project.Yet a project folder needn't have its all member's projects, or owns project together in conjunction with other file simply, make the unnecessary deletion that causes project of deletion of a project folder.Yet in some embodiment of the present invention, a project must at least belong to a project folder, if make unique file of specific project deleted, to some embodiment, this project is automatically deleted, 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 using in the various systems based on file and file that is similar to.)
As more discussed fully below, project also can belong to the classification of the feature based on common description, feature is as (a) item types (or type), (b) specific directly or the attribute (or attribute) of inheriting, or (c) corresponding to the particular value (or value) of item attribute.For example, comprise that the project of the particular community of individual associated person information can belong to contact person (Contact) classification automatically, any project with associated person information attribute equally also belongs to this classification automatically.Any project equally, with the position attribution of " New York City (New York) " value can belong to New York (NewYorkCity) classification automatically.
Classification is in the conceptive project folder part that is different from, project folder can comprise the mutually irrelevant project feature of common description (without), and each project in classification has common type, attribute or the value (" common point ") that this classification is described, this concomitant basis forming the relation between other project in it and this classification or those projects just.In addition, although any particular aspects of the membership qualification of the project in particular file folder based on this project is not compulsory, yet to some embodiment, having the concomitant all items relevant to a classification in classification can automatically become such other member in hardware/software interface system level.Conceptive, classification also can be regarded phantom item file as, its membership qualification is based on the ad hoc inquiry result of (as in the context of database), and the project that meets the condition (common point by classification is determined) of this inquiry should form such other membership qualification.
Fig. 4 is illustrated in the structural relation between project, project folder and 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, as project 402 belongs to project folder 422 and 424.Some project, if project 402,404,406,408,4l0 and 412 are also the members 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 (although this major part does not resemble in certain embodiments, wherein has any attribute and automatically implies the membership qualification in classification, therefore in embodiment like that in order not to be the member of any classification, project should be fully without feature).Contrary 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 are all project (although being different item typess).
Contrary 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 above such position.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 in hardware/software interface level, has surmounted current available ability in the art.
4. pattern
A) basic schema
For the general basic of establishment and the project of use is provided, each embodiment of storage platform of the present invention comprises that foundation is for creating and organize basis (Base) pattern of the conceptual frame of project and attribute.Basic schema has defined project and the attribute of some particular type, and the feature that therefrom further derives these specific fundamental types of subtype.Use this basic schema that 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, be only an anchor position (anchor), therefrom derive all other attributes, and interknit (jointly from single attribute type, deriving) by the attribute type of its all derivation.Extension type attribute defines this expansion and has expanded which project, and definition sign that an expansion and another project are distinguished, because a project can have a plurality of expansions.
ItemFolder (project folder) is the subtype of Item item types, except the attribute of inheriting from Item, it characterizes the relation that is used for being established to its member (if any), although Identitykey (identity key word) and Property (attribute) are all 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 are also 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 core schema is shown, and Fig. 8 B is the block diagram that attribute type in core schema is shown.At the file with different extension name (* .com, * .exe, * .bat, * .sys etc.) and the differentiation of making between other criterion in based on file and file system folder, it is the function that is similar to core schema.In project-based hardware/software interface system, core schema has defined one group of core project type, and their direct (by item typess) or indirectly (by project subtype) change into project-based hardware/software interface system understanding by all items feature also can be with one or more core schema item typess of being scheduled to or predictable mode is directly processed.Predetermined item types has reflected project the most frequently used in project-based hardware/software interface system, and therefore by understanding these project-based hardware/software interface system that comprise the predetermined item type of core schema, obtains validity rank.
In certain embodiments, core schema is not extendible,, there is no the directly item types subclassification from basic schema of other type that is, unless as the specific predetermined item types of deriving of the part of core schema.By forbidding the expansion (that is, by forbidding adding new project to core schema) to core schema, the use of storage platform trustship core schema item types, because each follow-up item types must be the subtype of core schema item types.This structure allows when the other item types of definition, to have the dirigibility of resonable degree when maintenance has the benefit of one group of predetermined core project type.
With reference to figure 8A, to various embodiment of the present invention, the specific project type of being supported by core schema can comprise following one or more:
Category (classification): the effective classification of the sports representative of this item types (and the subtype therefrom deriving) in project-based hardware/software interface system.
Commodity (article): as the project of the identified things of value.
Device (equipment): the project with the logical organization of support information processing power.
Document (document): have and can not be explained and the project of the contrary content of being explained by the application program corresponding to Doctype by project-based hardware/software interface system.
Event (event): the project that records some generation event in environment.
Location (position): the project in represents physical position (as geographic position).
Message (message): the project of communication between two or more main bodys (below definition).
Principal (main body): the project that having at least one except ItemId certainly can identity verification (as, the sign of individual, tissue, group, family, author, service etc.).
Statement (statement): there is the project about the customizing messages of environment, include but not limited to: policy, reservation, voucher etc.
Similarly with reference to figure 8B, the particular community type of being supported by core schema can comprise following one or more:
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) (Property type derives from basic schema)
RichText (rich text) (Property type derives from basic schema)
EAddress (Email geology) (Property type derives from basic schema)
IdentitySecnrityPackage (identity security bag) (Relationship type derives from basic schema)
RoleOccupancy (resident role) (Relationship type derives from basic schema)
BasicPresence (basis exists) (Relationship type derives from basic schema) these projects and attribute further describe by the attribute separately of listing in Fig. 8 A and Fig. 8 B.
5. relation
Relation is binary relation, and one of them project is designated as source, and another is designated as target.Source item and destination item are associated by relation.The life cycle of source item general control relation.That is, deleted when source item, the relation between project is also deleted.
Relation is classified into: comprise (Containment) and quote (Reference) relation.Relation of inclusion is controlled the life cycle of destination item, and adduction relationship does not provide any life cycle management semantic.Figure 12 illustrates the mode of relation classification.
Relation of inclusion is classified into again (Holding) and (Embedding) relation of embedding held.When all relations of holding to a project are removed, this project is deleted.Hold relation counter mechanism control target by reference.Imbeding relation can be to compound project modeling, and can be counted as the exclusive relation of holding.A project can be one or more related targets of holding; But a project can only be the target of an imbeding relation.As the project of the target of imbeding relation, can not be that arbitrary other held or the target of imbeding relation.
Adduction relationship is not controlled the life cycle of destination item.They can be that pendulous-destination item can not exist.Adduction relationship can be for quoting project in any place (that is, comprising remote data storage) modeling of overall project name space.
The project that obtains does not obtain certain relation automatically, and application program is the relation of request items clearly.In addition modification relation, is not revised source or destination item; Similarly, interpolation relation does not affect source/destination item.
A) relation statement
The following element definition of explicit relationship type;
Specified relationship name in Name (name) attribute
One of following relationship type: hold, embed, quote.This appointment in Type (type) attribute.
Source and target end points.Each end points is specified institute's referenced items destination name and type.
Source endpoint field is generally ItemID (item id) type (without proper notice), and must quote the project in storing with the same data of relationship example.
To holding and imbeding relation, target endpoint field must be ItemIDReference (item id is quoted) type, and it must quote the project in storage identical 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 optionally 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 holotopy table.
Each relationship example is uniquely by combination (source ItemID, relations I D) sign.To all relations that are derived from given project, in given source ItemID, relations I D is unique, and no matter their type.
Source item is the owner of relation.And being designated as the life cycle of owner's project control relation, relation itself and the project relevant to them are separated.Storage platform API 322 is provided for representing the mechanism of the relation being 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 quote quoted individual event by source, do not exist, can not create this relation.If this individual event is deleted, the relationship example between individuals and organizations is also deleted.If yet organize project deleted, relation is not deleted, and it is pendulous.
B) hold relation
The relation of holding is come reference count modeling for the life cycle management of based target project.
A project can be for the source endpoint to the zero of project or a plurality of relations.The project that is not embedding project can be the destination item of holding in relation one or more.
Target endpoint reference type must be ItemIDReference, and it must quote the project in the storage identical with relationship example.
Hold the life cycle management that is related to implementation goal end points.Hold relationship example and be atomic operation as the establishment of the project of target.Can create the other relationship example of holding using same project as target.When having last as target endpoint of given project, hold relationship example when deleted, this destination item is also deleted.
In relation statement, the type of the end points project of appointment is generally forced when creating the example of this relation.After relation is set up, the type of end points project can not change.
Hold to close in the name space that ties up to formation project and play key effect.They comprise " Name (name) " attribute, and its objective definition project is with respect to source item destination name.To all relations of holding that are derived from given project, relative name is unique.From root Element, start to form the full name of this project to the orderly class table of the relative name of given project.
The relation of holding forms a directed acyclic graph (DAG).In establishment, hold while being related to, system guarantees not produce loop, thereby guarantees that the name space of project forms DAG.
Although hold the life cycle that relation is controlled destination item, it does not control the consistance of the operation of target endpoint project.Destination item is independent of and by holding relation, has its project in operation.As hold copy, movement, backup and other operation in the project in related source do not affect as homonymous target project-for example, backup file folder project does not automatically back up all items (target in FolderMember (file member) relation) in this document folder.
To hold related example below:
<Relationship Name=″FolderMembers″BaseType=″Holding”>
<Source Name=″Folder″ItemType=″Base.Folder″/>
<Target Name=″Item″ItemType=″Base.Item″
ReferenceType=″ItemIDReference″/>
</Relationship>
FolderMember relation makes the concept of file become the generic set of project.
C) imbeding relation
Imbeding relation is by the conceptual modelling of the exclusive control of the life cycle of destination item.They allow the concept of complex item.
Imbeding relation example and be atomic operation as the establishment of the project of target.A project can be the source of zero or a plurality of imbeding relations.Yet a project can be one and be only the target of an imbeding relation.Project as the target of imbeding relation can not be to hold related target.
Target endpoint reference type must be ItemIDReference, and it must quote the project in storing with relationship example identical data.
In relation statement, the type of the end points project of appointment is generally forced when creating the example of this relation.After relation is set up, the type of end points can not change.
Imbeding relation is controlled the operational consistency of this target endpoint.The operation of for example, serialization project can comprise all imbeding relations that are derived from this project and all its targets of serialization; The project that copies also copies all its embedding projects.
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, does not guarantee that the type of target is as appointment in relation statement yet.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 concept that is similar to the link on webpage as.
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 project.Because do not force the existence of target, adduction relationship is convenient to loosely-coupled relationship modeling.Adduction relationship can, in other storage, be included in the destination item in the storage on other computing machine.
E) Rule and constraint
Following ancillary rules and constraint are applied to relation:
A project must be the target of (an only imbeding relation) or (one or more relation of holding).An exception is root Element.A project can be the target of zero or a plurality of adduction relationships.
Project as imbeding relation target can not be to hold related source.It can be the source of adduction relationship.
If a project from document upgrading, can not be to hold related source.It can be the source of imbeding relation and adduction relationship.
A project from document upgrading can not be the target of imbeding relation.
F) sequence of relation
In at least one embodiment, storage platform of the present invention is supported the sequence of relation.By the attribute of " Order (sequence) " by name in fundamental relation definition, complete sequence.In Order field without unique constraints.Do not guarantee the order with the relation of same " Order " property value, yet guarantee, they can sort after the relation of band lower " Order " value and before the relation of band higher " Order " field value.
Application program is by obtaining giving tacit consent to the relation of order in the upper sequence of combination (SourceItem ID, RelationshipID, Order).The all relationship example that are derived from given project are ranked into single set, and no matter in set the type of relation.Yet this guarantees, all relations of given type (as, FolderMembers (file member)) are the sequence subsets of the set of relationship of given project.
Data storage API 312 for the treatment of relation realizes one group of operation of supporting the sequence of relation.Introduce following term and help to explain those operations:
RelFirst is with first relation of order value OrdFirst in ordered set;
RelLast is last relation of ordered set crossed belt order value OrdLast;
RelX is with the given relation of order value OrdX in set;
RelPrev is the relation of the order value OrdPrev of OrdX that is less than close to the band of RelX in set; And
RelNext is the relation of the order value OrdNext of OrdX that is greater than close to the band of RelX in set.
Operation includes but not limited to:
InsertBeforeFirst (SourceItemID, Relationship) insertion relation is as first relation in set.The value of " Order " attribute of new relation can be less than OrdFirst.
InsertAfterLast (SourceItemID, Relationship) insertion relation is as last relation in set.The value of " Order " attribute of new relation can be greater than OrdLast.
InsertAt (SourceItemID, ord, Relationship) inserts with the relation to the value of " Order " attribute appointment.
InsertBefore (SourceItemID, ord, Relationship) inserted this relation before the relation with given order value.New relation can be assigned with " Order " value, and it but does not comprise this two values between OrdPrev and ord.
InsertAfter (SourceItemID, ord, Relationship) inserts this relation after the relation with given order value.New relation can be assigned with " Order " value, and it but does not comprise this two values between ord and OrdNext.
Before MoveBefore (SourceItemID, ord, Relationship) moves to the relation of band appointment " Order " value by the relation with given relations I D.Relation can be assigned with new " Order " value, and it but does not comprise this two values between OrdPrev and ord.
After MoveAfter (SourceItemID, ord, Relationship) moves to the relation of band appointment " Order " value by the relation with given relations I D.This relation can be assigned with new order value, and it but does not comprise this two values between ord and OrdNext.
As prerequisite arrives, 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 existing 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).Therefore relation is had by source item (extending its project), if source is removed relation and is removed (as deleted in 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 (if Fig. 7 is to as shown in attribute of a relation type).In these embodiments, the new IsOwned relation of establishment increases progressively the reference count in this target automatically, and deletes the reference count that such relation can be successively decreased on this destination item.To these specific embodiments, if project has the reference count that is greater than 0, exist, if reaching 0, automatically deletes item count.Again, project folder is the project with one group of relation of (maybe can have) and other project, and these other projects comprise the membership qualification of project folder.Other actual realization of relation is possible, and conceives to realize function described herein by the present invention.
No matter actual realization how, relation is the selectable connection from an object to another object.Project belongs to an above project folder and one or more classification, no matter and these projects, file and classification be publicly-owned or privately owned ability are determined by the meaning that gives existing in project-based structure (or shortage).These logical relations are to distribute to the meaning of one group of relation, no matter and its physics realization that is used for specially realizing function described here how.Logical relation is set up (or contrary) between project and file or classification, because each of project folder and classification is the project of particular type in essence.Therefore, can be as other project project folder and classification are worked and (copy, add in email message, embed document etc., and unrestricted), and project folder can be used identical machine-processed serialization and de-serialization (import and derive) with classification as other project.(for example, in XML, all items can have serialized form, and these lattice are applied to project folder, classification and project comparably).
The above-mentioned relation that represents the relation between project and project folder thereof logically can extend to project folder, from project folder, extend to project or both from project.The relation that extends to project folder from a project in logic shows that this project folder is publicly-owned for this project, and shares its membership qualification information with this project; On the contrary, the logical relation lacking from project to project folder shows that this project folder is privately owned to this project, and does not share its membership qualification information with this project.Similarly, the relation that extends to project from project folder in logic shows that this project is publicly-owned, and can share with this project folder, and lack the logical relation that extends to project from project folder, shows that this project is privately owned and can not shares.Therefore, when deriving project folder to other system, it is the project of " publicly-owned ", it shares in new environment, and when its project folder of project search is found other sharable project, it is the project folder of " publicly-owned ", and it provides about belonging to the information of its shared with project to this project.
Fig. 9 is the block diagram that interconnecting relation between project folder (itself is also project), its member's project and project folder and 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 itself to project 902 be related to 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, this shows that 900 pairs of projects 902 of project folder are privately owned, and does not share its membership qualification information with project 902.On the other hand, project 904 really have from itself to project folder 900 be related to 924, this shows that project folder 900 is publicly-owned, and shares its membership qualification information with project 904.Yet there is no the relation from project folder 900 to project 904, this shows that project 904 is privately owned, and does not share with any other project folder, classification or the project (not shown) of project folder 900, its other member 902,906 and accessible items file 900.Contrary with its relation to project 902 and 904 (or there is no these relations), project folder 900 has and is related to 916 from itself to project 906, and project 906 have get back to project folder 900 be related to 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 share its membership qualification information with project 906.
As front discussion, the project in project folder does not need to share concomitant, because project folder is not by " description ".On the other hand, classification is by the common common point of all its member's projects is described.Therefore, the membership qualification of classification is limited to the project with described common point inherently, and in certain embodiments, all items that meets the description of classification automatically becomes such other member.Therefore,, although project folder permission represents unessential type structure by its membership qualification, the common point of classification based on definition allows membership qualification.
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, to the logical expressions of a classification, can be its membership qualification, to comprise, there is one of two attributes or both projects.If these attributes that classification is described are " A " and " B ", such other membership qualification can comprise there is attribute A and do not have B project, there is attribute B and the project that there is no the project of A and have attribute A and B concurrently.The logical expressions of describing attribute by logical operator " OR (or) ", wherein by classification, describing member's group 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 (not describing) and classification (describing), but in many embodiment of the present invention, the project relationship that arrives in principle the classification relation of project and arrive classification is above in the face of the same method of project folder and project discloses.
Figure 10 is the block diagram that the interconnecting relation between a classification (itself being also project), its member's project, classification and member's project thereof is shown.Classification 1000 has a plurality of projects 1002,1004 and 1006 as 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 the relation from itself to project 1002, 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, there is no the relation from project 1002 to classification 1000, this shows that 1000 pairs of projects 1002 of classification are privately owned, and does not share membership qualification information with project 1002.On the other hand, project 1004 really has and is related to 1024 from itself to classification 1000, and 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.Contrary with the relation (or there is no this relation) of it and project 1002 and 1004, classification 1000 has and is related to 1016 from itself to project 1006, and what project 1006 had classification of getting back to 1000 is related to 1026, this shows that project 1006 is publicly-owned together, 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 share its membership qualification information with project 1006.
Finally, because classification and project folder itself are projects, and project can cross correlation, classification can be related to project folder, vice versa, and in some other embodiment, classification, project folder and project can be related to respectively other classification, project folder and project.Yet in various embodiments, item file clamping structure and/or classification structure forbid comprising loop in hardware/software interface system level.When project folder and classification structure are similar to digraph, forbid that the embodiment in loop is similar to directed acyclic graph (DAG), according to the mathematical definition in graph theory field, DAG is the digraph that does not wherein have path to start on same summit and stop.
6. extensibility
As mentioned above, this storage platform aims to provide originate mode group 340.Yet at least in certain embodiments, this storage platform also allows to comprise that the clients such as stand alone software retail trader (ISV) create new mode 3 44 (being new project and nested element type).The item types that this section is passed expansion definition in originate mode group 340 through discussion and nested element type (or being called for short " element " type) are conceived to create the mechanism of this pattern.
Preferably, the expansion of the initial set of project and nested element type retrains as follows:
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 type of originate mode group 340 definition of storage platform (project, embed element or expansion type).
The item types or the embedding element type that due to the originate mode group by storage platform, define may inaccurately mate the needs of ISV application program, must allow ISV customization the type.This has just considered the concept 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 of pattern extensibility, expansion is also intended to solve " classifying " problem more.In certain embodiments, because storage platform may not supported many inheritances or overlapping subtype, application program can be used expansion as the overlapping type instance of the modelling method of (if document is legal documents and security document).
A) extension
For the extensibility of project is provided, data model also defines the abstract type of Base.Extension by name.This is the root type of the hierarchy of expansion type.Application program can 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>
ItemID field comprises the ItemID that expands associated project with this.Project with this ItemID must exist.If the project with given ItemID does not exist, can not create expansion.When project deleted, deleted with all expansions of same ItemID.Two tuples (ItemID, ExtensionID) have identified expansion example uniquely.
The structure of expansion type is similar to the structure of item types:
Expansion type has field;
Field can be primitive or nested element type; And
Expansion type can be by subclassification.
Following restriction is applied to expansion type
Expansion can not be the source and target of relation;
Expansion type example can not be independent of project and exist; And
Expansion type can not be as the field type in storage platform type definition
To the not constraint of the type of expansion that can be associated with given item types.Any expansion type allows any item types of expansion.When a plurality of expansion examples are affixed to a project, they are independent of one another in structure and behavior.
Expansion example is stored and from item access.All expansion type examples can be from overall extended view access.Can form an effectively inquiry, it will return to all examples of the expansion of given type, and no matter the project of their associated what types.Storage platform API provides the programming model that can store, retrieve and revise extension.
Expansion type carrys out the type of subclassification with the single succession model of storage platform.From an expansion type, derive and create new expansion type.The structure of an expansion or behavior can not cover or structure or the behavior of alternative project type hierarchical structure.Be similar to item types, expansion type example can directly be accessed by the view associated with this expansion type.The ItemID of expansion shows, which project they belong to, and can be used for retrieving corresponding item objects from global keys eye diagram.For the object of operational consistency, expansion is considered to be a part for project.Other conventional operation of copy/mobile, backup/restoration and storage platform definition can operate in the expansion of the part as project.
Consider following example.In 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 likes CRM application extensions to append to the contact person who is stored in storage platform.The CRM expansion that application developer definition comprises the treatable additional data structure of application program.
<Type Name=″CRMExtension″BaseType=″Base.Extension″>
<Property Name=″CustomerID″
Type=″String″
Nullable=″false″
MultiValued=″false″/>
</Type>
HR application developer wishes also additional data to be appended to contact person.These data are independent of CRM application data.Application developer also can create-expand
<Type Name=″HRExtension″EBaseType=″Base.Extension″>
<Property Name=″EmployeeID″
Type=″String″
Nullable=″false″
MultiValued=″false″/>
</Type>
CRMExtension and HRExtension can append to two independent expansions of contacts object.They can create independently of one another and access.
In above-mentioned example, the field of CRMExtension type and method can not cover field and the method for contact person's hierarchy.The example that it should be noted that CRMExtension type can be affixed to the item types that is different from contact person.
When searching linkman project, automatically do not retrieve its extension.Given contact item, can visit its relevant extension with the expansion of the same ItemID of searching belt by inquiring about overall extended view.
Can visit CRMExtension all in system by CRMExtension type view and expand, 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.
Table has below been summed up similarity and the difference between Item (project), Extension (expansion) and NestedElement (nested element) type:
Item, ItemExtension and NestedElement
B) expansion NestedElement type
Nested element type need not be identical with item types mechanism expansion.The expansion of nested element mechanism storage and the access identical with 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>
NestedElement type is inherited from this type.NestedElement element type is definition one field in addition, and it is multicomponent element.
<Type Name=″NestedElement″BaseType=″Base.Element″
IsAbstract=″True″>
<Property Name=″Extensions″
Type=″Base.Element″
Nullable=″false″
MultiValued=″true″/>
</Type>
NestedElement expands aspect below and is different from extension:
Nested element expansion is not expansion type.They do not belong to take the expansion type hierarchy that Base.Extension type is root.
Together with other field of nested element expansion and this project, store, and be not the inquiry that the overall situation addressable can not form all examples of retrieving given expansion type.
As Cun Chu, other nested element (or project) is stored these expansions.Resemble other nested groups, NestedElement expansion is stored in UDT.They can visit by Extension (expansion) field of nested element type.
The set interface that is used for accessing multi-valued attribute is also for the access in Extended-type group and iteration.Table is below summed up and relatively Item expansion and NestedElement expansion.
Item expansion and NestedElement expansion
F. database engine
As mentioned above, data are stored on database engine and realize.In the present embodiment, database engine comprise such as Microsoft SQL Server engine etc. realize SQL query language, with the relational database engine of object relationship expansion.This section is according to the present embodiment, and the data model that data of description storage realizes, to the mapping of relational storage, provides the information of being used by the client computer of storage platform on logic API.Yet be appreciated that when adopting different database engines and can adopt different mappings.Really, except realizing on relevant database engine storage platform conceptual data model, also can in 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 concept of " project " can be mapped to the object in Object-Oriented Systems well, although the set embedding must be added to object.Other storage platform type concepts such as similar inheritance and nested element type are also mapped to the system of object-oriented type.Object-Oriented Systems is support target identity conventionally; Therefore, project identity can be mapped to object identity.The behavior of project (operation) is mapped to object method well.Yet the common inorganizable ability of OO system is also very poor aspect search.And OO system does not provide the support to destructuring and semi-structured data.For supporting complete storage platform data model described herein, resemble the concepts such as relation, file and expansion and need to add object data model to.In addition need to realize as the mechanism such as upgrading, synchronous, notice and security.
Be similar to OO system, the XML database based on XSD (XML mode-definition) is supported the system of inheriting type based on single.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 XSD of project.The single XSD document of XML database processing is also inorganizable and widen search capability.As object-oriented database, for supporting data model described herein, as other concepts such as relation and file need to be incorporated into this XML database; And need to realize as the mechanism such as synchronous, notice and security.
About trifle below, 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 directory tree.Figure 17 illustrates the wherein existing file double-layered quilt of the file system based on catalogue and moves in the storage of storage platform data.
1. use the data storage of UDT to realize
In the present embodiment, the relevant database engine 3 14 that comprises in one embodiment Microsoft SQL Server engine is supported built-in scalar type.Built-in scalar type is " primary (native) " and " simply ".They are that primary meaning is, user can not define themselves type; They are that simple meaning is, user can not encapsulate complicated structure.User-defined type (hereinafter referred to as UDT), by making user carry out expansion type system by defining complicated structured type, provides a kind of for surpassing or surmount the mechanism of the type extensibility of primary scalar type system.Once defined by the user, UDT can be for the type system that can use built-in scalar type Anywhere.
Press one aspect of the present invention, storage platform pattern is mapped to the UDT class in database engine storage.Data stored items is mapped to the UDT class deriving from Base.Item type.Be similar to project, expansion also can be mapped to UDT class and use and inherit.Root expansion type is Base.Extension, from it, derives all expansion types.
UDT is 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 for the type in T-SQL.UDT can be: in row in the type, T-SQL of row the type of the parameter of routine or in T-SQL type of variables.
Storage platform pattern to being mapped in of UDT class high-level upper be direct completely.Generally speaking, storage platform pattern is mapped to CLR name space.Storage platform type is mapped to CLR class.The succession mirror image of CLR class the succession of storage platform type, and storage platform attribute is mapped to CLR generic attribute.
2. project mapping
In order to wish project, can be searched for globally, and in the relational data of the present embodiment, support to inherit and type substitutability, to a kind of possible realization of the project storage in database storage, be to store all items in the single table at the row with type B ase.Item.Type of service substitutability, can store all types of projects, and can carry out filtered search by the subtype of the item types of the operational character of use Yukon " is of (type) ".
Yet, owing to involving in the present embodiment the overhead being associated with this method, by top type, projects are divided, the project of each type " family " is stored in independent table.In this partition mode, the item types that each is directly inherited from Base.Item creates a table.As mentioned above, inheriting the substitutability of these type type of service is below stored in suitable type family table.Only from the first order of Base.Item, inherit and ad hoc processed.
Use the copy that the overall situation of one " shade " table storage all items can search attribute.This table can be safeguarded by the Update () method of storage platform API, make the change of all data by the method.Bu Xiang 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 by representing ItemID and TypeID (type i D) item objects being stored in type family table.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 the project of finding by its ItemID is all conventional operation in the context of overall repertory and other situation, the therefore given ItemId of project, provides GetItem () function to carry out search terms object.
For ease of accessing and hiding as much as possible the details realizing, all inquiries of project can be carried out impinging upon the view building on the table of above-mentioned project.Particularly, the family's table establishment view for suitable type to each item types.These type views can be selected the type being associated, and comprise all items of subtype.For simplicity, except UDT object, view can be to comprising that all TLDs of the type of inheriting field represent row.
3. expansion mapping
Expansion is very similar to project, and has some identical requirement.As support adoptive another root type, expansion stored in many same considerations and relatively compromise.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 for retrieving expansion.Be similar to item types view, to each expansion type, can create view.
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 expansion.Therefore, nested element does not surmount their project and the Storage Mapping of the mapping of extension container.In other words, in system, there is no 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, each project, expansion and relation have unique key value.A project is identified uniquely by its ItemId.Expansion is identified uniquely by composite key (ItemId, ExtensionId).Relation is identified by composite key (ItemId, RelationId).ItemId, ExtensionId and RelationshipId are all GUID values.
6.SQL object naming
The all objects that create in data storage can be stored in the SQL pattern name deriving from storage platform pattern name.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 producing can be by determiner prefixing to eliminate the conflict of name.At suitable place, can use exclamation mark (! ) as the decollator of each logical gate of name.Table has been summarized the name custom for object in data storage below.List each schema elements (project, expansion, relation and view) with together with the name custom of the modification of example for visit data storage.
Object |
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 of classifying type |
ItemType |
All properties data from project and any parent type are provided |
[AcmeCorp.Doc].[OfficeDoc] |
Main expanded search view |
Master!Extension |
The summary of all expansions in current item domains is provided |
[System.Storage].[Master!Extension] |
The expanded search view of classifying type |
Extension!extensionType |
To expansion, provide all properties data |
[AcmeCorp.Doc].[Extension!SlickyNote] |
Primary relation view |
Master!Relationship |
Related summary in current item domains is provided |
[System.Storage].[Master!Relationship] |
Relational view |
Relationship!relationshipName |
The data that provide all with given relation to be associated |
[AcmeCorp.Doc].[Relationship!Authors FromDocument] |
View |
View!viewName |
Based on mode view, definition provides row/type |
[AcmeCorp.Doc].[View!DocumentTitles] |
7. row name
When shining upon arbitrary object model to storage, due to the additional information of storing, likely there is naming conflict together with application object.For avoiding naming conflict, underscore character (_) prefixing for the particular column of all non-types (not mapping directly to the row of the attribute of the name in type declarations).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 data storage, all properties of storage platform type or schema elements (relation etc.) should have the first character of capitalization.
8. search for view
By storage platform, provide view, for searching for the content of storage.To each project and expansion type, provide SQL view.In addition, provide view with support relation and view (being defined by data model).All SQL views and the bottom table in storage platform are read-only.To more fully describe below, and use the Update () method of storage platform API can store or change data.
<view-name>] access.BookSales] visit.Because the output format of view is self-defining (arbitary inquiry being provided by that side who defines view is determined) on the basis of each view, row define and are directly shone upon based on mode view.
All SQL search views in the storage of storage platform data are used the following sequence custom of row:
As logic " key word " row of 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. follow the tracks of and be listed as
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 of returning an object value
The member of each type family can search for a series of eye diagrams, and in data storage, each item types has a view.Figure 28 is the diagram that the concept of project search view is shown.
A) project
Each project search view comprises a line to each example of the project of particular type or its subtype.For example, the view of document can return to the example of Document (document), LegalDocument (legal documents) and ReviewDocument (checking document).Given this example, as shown in Figure 29 generalities item eye diagram.
(1) master project search view
Each example definition of storage platform data storage is called the special item view of master project view (Master Item View).This view provides the survey information about each project in data storage.View provides row to each item types attribute, the type of a row described project wherein, and some row are used for providing changing to be followed the tracks of and synchronizing information.Item] " identify master project view.
Row |
Type |
Describe |
ItemId |
ItemId |
The storage platform identity of this project |
_TypeId |
TypeId |
The TypeId-of this project identify this project exact type and can be for retrieve the information about type by metadata categories |
_RootItemId |
ItemId |
Control first non-embedded elder generation's of this object life cycle ItemId |
<overall situation changes tracking> |
… |
The overall situation changes trace information |
<item attribute> |
n/a |
Each item types attribute is had to row |
(2) the project search view of classifying type
Each item types also has search view.Be similar to root Element view, this view also provides by the access of " _ Item " row to item objects.In data storages, use name [schemaName] .[itemTypeName] identify the project search view of each classifying type.[AcmeCorp.Dod] .[OfficeDoc for example].
Row |
Type |
Describe |
ItemId |
ItemId |
The storage platform identity of this project |
<type change tracking> |
… |
Type change trace information |
<father's attribute> |
<attribute is special-purpose> |
Each father's attribute is had to row |
<item attribute> |
<attribute is special-purpose> |
Each exclusive attribute to this type has row |
_Item |
The CLR type of project |
The type of the project of CLR object one statement |
B) extension
All items expansion in WinFs storage also can be used 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 data storage.This view has row to each extended attribute, and wherein row are described the type of expansion, and some row are used for providing change to follow the tracks of and synchronizing information.Extension] " in data storage, identify main extended view.
Row |
Type |
Describe |
ItemId |
ItemId |
Expand therewith the storage platform identity of associated project |
ExtensionId |
ExtensionId(GUID) |
The id of this expansion example |
_TypeId |
TypeId |
The TypeId-of this expansion identifies the exact type of this expansion, and can be for retrieving the information about this expansion by metadata categories |
<overall situation changes tracking> |
… |
The overall situation changes trace information |
<extended attribute> |
<attribute is special-purpose> |
Each expansion type attribute is had to row |
(2) the expanded search view of classifying type
Each expansion type also has search view.Be similar to main extended view, this view also provides by _ Extension and is listed as the access to item objects.ExtensionTypeName] identify the expanded search view of each classifying type.OfficeDocExt].
Row |
Type |
Describe |
ItemId |
ItemId |
Expand therewith the storage platform identity of associated project |
ExtensionId |
ExtensionId(GUID) |
The Id of this expansion example |
<type change tracking> |
… |
Type change trace information |
<father's attribute> |
<attribute is special-purpose> |
Each father's attribute is had to row |
<extended attribute> |
<attribute is special-purpose> |
The exclusive attribute of each this type is had to 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 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 linking between projects in the storage of storage platform data.
(1) primary relation search view
Each provide-primary relation of data storage view.This view provides the information about all relationship example in data storage.Relationship] " identify primary relation view.
Row |
Type |
Describe |
ItemId |
ItemId |
The identity of source endpoint (ItemId) |
RelationshipId |
RelationshipId(GUID) |
The id of this relationship example |
_RelTypeId |
RelationshiPTypeId |
The RelTypeId-of this relation identifies the type of this relationship example by metadata categories |
<overall situation changes tracking> |
… |
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 to this particular kind of relationship.Be similar to 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 tracking> |
… |
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 is special-purpose> |
The attribute of each contextual definition is had to row |
_Relationship |
The CLR type of relationship example |
The type of CLR object-statement relation |
e)
9. upgrade
In the storage of storage platform data, all views are read-only.For creating the new example of data model elements (project, expansion or relation), or upgrade existing example, must use ProcessOperation or the ProcessUpdategram method of storage platform API.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 consumption refinement.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 carrying out is intended in their common refinements.
Operational format is extendible, and the various operations in schema elements are provided.Some common operation comprises:
1. project operation:
A.CreateItem (creating a new project in embedding or holding related context)
B.UpdateItem (upgrading an existing project)
2. relational operation:
A.CreateRelationship (related example is quoted or held in establishment)
B.UpdateRelationship (upgrading a relationship example)
C.DeleteRelationship (removing a relationship example)
3. extended operation
A.CreateExtension (add one and expand to existing project)
B.UpdateExtension (upgrading an existing expansion)
C.DeleteExtension (deleting an expansion)
10. change and follow the tracks of and gravestone
As more discussed fully, by data storage, provide change tracking and gravestone to serve below.This section provides the general introduction of the change trace information representing in data storage
A) change and follow the tracks of
Each the search view being provided by data storage comprises the row that change trace information for providing; Those row are public to all items, expansion and relational view.It is indirectly to provide by building the search view of view itself thereon that the storage platform mode view being defined clearly by Model Design person does not automatically provide change trace information-this information.
Each element in data storage, can be changed trace information from two places: " master " element view and " classifying type " element view.Item] " and item eye diagram [AcmeCorp.Document] .[Document of classifying type] in obtain the change trace information about AcmeCorp.Document.Document item types.
(1) change in " master " search view is followed the tracks of
Change trace information in main search view provide about the establishment of element and upgrade version information, about which synchronization partner create this element information, which synchronization partner to upgrade for the last time the information of this element and from each partner's the version number for creating and upgrading about.With partner's key word, identify the partner's (the following describes) in synchronized relation.The single UDT object of the be called _ ChangeTrackingInfo of type [System.Storge.Store] .ChangeTrackingInfo comprises all these information.Define styles in System.Storage pattern.Can obtain _ ChangeTrackingInfo in all global search views of project, expansion and relation.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 attribute kit contain 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 establishment, this is the PartnerKey of local machine |
_ CreatingPartnerTS |
the partner corresponding to _ CreatingPartnerKey, locate to create the time mark of the time of this entity |
_ 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 to this entity completes, this is the PartnerKey of local machine. |
_ LastUpdatePartnerTS |
the partner corresponding to _ LastUpdatingPartnerKey, locate to upgrade the time mark of the time of this entity. |
(2) change in " classifying type " search view is followed the tracks of
Except provide with global search view identical information, the search view of each classifying type provides the additional information that is recorded in the synchronous regime of each element in synchronous topology.
Row |
Type |
Describe |
<overall situation changes tracking> |
… |
From the overall situation, change the information of following the tracks of |
_ChangeUnitVersions |
MultiSet<changes unit version> |
The description of the version number of the change unit in element-specific |
_ElementSyncMetadata |
ElementSyncMetadata |
About additional version independent elements data to the interested project in synchronous operation storehouse only |
_VersionSyncMetadata |
VersionSyncMetadata |
About the additional version dedicated meta data to the interested version in synchronous operation storehouse only |
B) gravestone
Data are stored as project, expansion and relation gravestone information are provided.Gravestone view provides in a place information about movable and gravestone entity (project, expansion and relation).Project and expansion gravestone view are not proposed the access to corresponding objects, and are related to that gravestone view provides the access to relationship object (relationship object is for empty in the situation that gravestone is related to).
(1) project gravestone
Item] from system retrieval project gravestone.
Row |
Type |
Describe |
ItemId |
ItemId |
The identity of project |
_TypeID |
TypeId |
The type of project |
<item attribute> |
… |
Attribute to all items definition |
_RootItemId |
ItemId |
The ItemId that comprises this first non-embedded project of object |
_ChangeTrackingInfo |
The CLR example of ChangeTrackingInf o type |
This object changes trace information |
_IsDeleted |
BIT |
This is sign, the 0th, and campaign item, the 1st, gravestone project |
_DeletionWallclock |
UTCDATETIME |
By 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 retrieval expansion gravestone.Expansion changes the trace information interpolation that provides for project the has been provided information of ExtensionId attribute.
Row |
Type |
Describe |
ItemId |
ItemId |
The identity that has the project of this expansion |
ExtensionId |
ExtensionId |
The ExtensionId of this expansion |
_TypeID |
TypeId |
The type of this expansion |
_ ChangeTrackingInfo |
the CLR example of ChangeTrackingInfo type |
the change trace information of this expansion |
_ IsDeleted |
bIT |
this is sign, the 0th, and campaign item, and l is gravestone expansion |
_ DeletionWallclock |
uTCDATETIME |
during the partner's of this expansion of deletion UTC wall clock day.If this expansion is movable, it is empty |
(3) be related to gravestone
Relationship] from system retrieval, be related to gravestone.Be related to that gravestone info class is similar to the information that expansion is provided.Yet, on the target ItemRef of relationship example, provide additional information.In addition, go back choice relation object.
row |
type |
describe |
itemId |
itemId |
the identity (identity of the source endpoint of relation) that has the project of this relation |
relationshipId |
relationshipId |
the RelationshipId of this relation |
_ TypeID |
typeId |
the type of relation |
_ ChangeTrackingInfo |
the CLR example of ChangeTrackingInfo type |
the change trace information of this relation |
_ IsDeleted |
bIT |
this is sign, the 0th, and campaign item, and 1 be gravestone expansion |
_ DeletionWallclock |
uTCDATETIME |
by the time on UTC wall clock date of deleting the partner of this relation.If this relation is movable, it is empty |
_ Relationship |
the CLR example of relation |
this is the relationship object of activity relationship, and gravestone is related to it is for empty |
targetItemReference |
itemReference |
the identity of target endpoint |
(4) gravestone is removed
For preventing gravestone information grow without bound, data storage provides gravestone to remove task.When this task can give up gravestone information if being determined.The local boundary that creates/upgrade version of this task computation, and by giving up all gravestone versions more early, block gravestone information subsequently.
11. assistant API and functions
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 to an item objects
Item Getltem(Itemld Itemld)
B) function [System.Storage] .GetExtension
// given ItemId and ExtensionId return to an EXPANDING DISPLAY AREA
Extension GetExtension(Itemld Itemld,Extensionld Extensionld)
C) function [System.Storage] .GetRelationship
// given ItemId and return-relationship object of RelationshipId
Relationship GetRelationship(Itemld Itemld,Relationshipld Relationshipld)
12. metadata
The metadata that has two classes to represent in storage: instance metadata (type of project etc.), and genre metadata.
A) pattern metadata
Pattern metadata is stored in data storage as the example of the item types from meta schema.
B) instance metadata
Application program use-case metadata is carried out 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 global keys eye diagram, to return to the type of this project, and is worth to inquire about Meta.Type view to return to the information about the type of the statement of this project with this.For example,
// given project example is returned to metadata project object
SELECT m._Item AS metadatalnfoObj
FROM[System.Storage].[Item]i INNER JOIN[Meta].[Type]m ON i._Typeld=m.Itemld
WHERE i.Itemld=@ltemld
G. security
Generally speaking, all objects of protecting arrange access rights with the access mask form shown in Figure 26.In this form, low 16 for object special use access rights, high 4 are used to specify generic access rights for being applied to the standard access authority of most of object types to follow 7, and each object type is mapped to the authority of one group of standard and object special use.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 (low 16) of object.Due 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 for storage platform of the present invention has fully been described.In this, Figure 27 (part a, b and c) draws the embodiment by security model, as the new safety zone of protection equally opening from existing safety zone.
H. notify and change tracking
Press another aspect of the present invention, storage platform provides the notification capabilities that allows application tracks data to change.This feature is mainly for the application program that keeps the service logic in volatile state or executing data change event.Application program is registered in the notice on project, extension and 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 notifying.The first, the simple data that application program registration is triggered by the change to project, extension and project relationship changes event.The second, application program creates the group that " supervisory programme " object carrys out relation between supervision project, extension and project.After thrashing or system off-line surpass the schedule time, can preserve and re-create the state of supervisory programme object.Single notice can reflect a plurality of renewals.
Additional detail about this function can find in relevant patent previously incorporated herein by reference.
I. synchronous
According to another aspect of the present invention, storage platform provides synchronous service 330, the Multi-instance (each has its data-carrier store 302) that its (i) allows storage platform is according to one group of their partial content of regular and synchronized flexibly, and (ii) for third party provides a foundation structure, to carry out the data storage of synchronous storage platform of the present invention by other data source that realizes proprietary protocol.
Storage platform synchronously occurs storage platform between one group of duplicate participating in.For example, with reference to figure 3, may want provides synchronous between another remote data storage 338 (may operate in a different computer system) under the data-carrier store 302 of storage platform 300 is controlled from another example of storage platform.Whole membership qualifications of this group need not to be known at any given time for any given duplicate.
Different duplicate can be made change (that is, side by side) independently.Synchronous procedure definition makes each duplicate know the change that other duplicate is made.This synchronizing capacity is many main (multi-master) inherently.
Synchronizing capacity of the present invention allows duplicate:
Determine which 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 another duplicate;
Determine when that two changes conflict each other;
In this locality, application changes;
Transmitting collision decomposition scheme assembles with assurance to other duplicate; And
Appointment policy based on collision decomposition scheme is decomposed conflict.
1. synchronous to storage platform of storage platform
The basic application of the synchronous service 300 of storage platform of the present invention is the Multi-instance of stores synchronized platform (each storage of the data with it).Synchronous service operates (rather than in bottom table of database engine 314) in storage platform pattern level.Therefore, for example " scope (Scope) " is for defining synchronization group discussed below.
Synchronous service is by the principle operation of " pure change (net change) ".Not record and send each operation (as transactional replication) that therefore synchronous service but send the net result of these operations is often merged into single net result by the result of a plurality of operations.
Synchronous service is not considered transaction boundaries conventionally.In other words, if storage platform data storages is made to two changes in single affairs, do not guarantee that these change to be applied to atomically on all other duplicate-can to illustrate one and change and other change is not shown.The exception of this principle is that, if same project is made to two changes in same affairs, these changes guarantee that being sent atomically and be applied to other copies.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 synchronous (seeing synchronous overview below) required all parameters.Such application program is called as synchro control application program (SCA) here.
When synchronous two storage platform examples, in a side, by SCA, started synchronous.This SCA notice local synchronization service is synchronizeed with remote partner.At opposite side, synchronous service is by being waken up by the message of sending from the synchronous service of initiating machine.Its persistent configuration information (mapping seeing below) based on existing on target machine responds.Synchronous service can be moved on schedule or in response to event.In these cases, the synchronous service that realizes timetable becomes SCA.
Synchronous for enabling, need to take two steps.First, Model Design person must be with suitable synchronization semantics annotation storage platform model (appointment change unit) as mentioned below.Secondly, synchronously must correctly configuration (as described below) on all machines with the example that participates in synchronous storage platform.
B) pattern annotation
The key concept of synchronous service is the concept that changes unit (Change Unit).Changing unit is the minimum schema fragment of individually being followed the tracks of by storage platform.Each is changed to unit, and synchronous service can have been determined since it is changed or is not changed since synchronously for the last time.
Change unit in designated mode reaches some objects.First, it has determined how online synchronous service is said another word.In changing unit, make while changing, whole change unit is sent to other duplicate, because synchronous service does not know which part that changes unit is changed.Secondly, it has determined the granularity of collision detection.When same change unit being made to two concurrent changes (these terms are specific definition in follow-up chapters and sections), synchronous service causes conflict; On the other hand, if difference is changed to unit, make concurrent change, without conflict, occur, and change is automatically merged.The 3rd, it has seriously affected the amount of the metadata being kept by system.Each is changed to unit and keep many synchronizing service metadatas; Therefore, make to change the less meeting in unit and increase synchronous overhead.
Definition changes unit need to find out correct trading off.For this reason, synchronous service allows Model Design person to participate in this process.
In one embodiment, synchronous service does not support to be greater than the change unit of an element.Yet its supports to allow Model Design person specify a plurality of combinations of attributes of the ability of the change unit less than element-be about to an element in independent change unit.In this embodiment, this is to use following syntax to realize:
<Type Name=″Appointment″MajorVersion=″1″ MinorVersion=″0″ExtendsType=″Base.Item″
ExtendsVersion=″1″>
<Field Name=″MeetingStatus″Type=″the storage platformTypes.uniqueidentifier
Nullable=″False″/>
<Fileld Name=″OrganizerName″Type=″the storage platformTypes.nvarchar(512)″
Nullable=″False″/>
<Filed Name=″OrganizerEmail″Type=″the storage plattormTypes.nvarchar(512)″
TypeMajorVersion=″1″ MultiValued=″True″/>
…
<ChangeUnit Name=″CU_Status″>
<Field Name=″MeetingStatus″/>
</ChangeUnit>
<ChangeUnit Name=″CU_Organizer″/>
<Field Name=″OrganizerName″/>
<Field Name=″OrganizerEmail″/>
</ChangeUnit>
…
</Type>
C) synchronously configuration
The one group of storage platform partner who wishes some Partial synchronization of their data of maintenance is called as synchronous community.Although it is synchronous that the member of community wishes to keep, they need to not represent data in identical mode; In other words, convertible their the synchronous data of synchronization partner.
In reciprocity situation, it is unpractical allowing equity side maintain conversion mapping to all their partners.Replace ground, synchronous service is taked the method for definition " community's file ".Community's file is to represent " Shared Folders " of synchronous hypothesis abstract with it of all members of community.
The most handy example explanation of this concept.If Joe wishes to keep My Documents (my document) Folder synchronizing of his some computing machines, Joe defines community's file, as is called JoeDocuments.On every computing machine, Joe configures a mapping between the JoeDocuments file of supposing and local My Documents file subsequently.From this point, when the computing machine of Joe is synchronized with each other, they are talked by the document in 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 common language of synchronous community.
Configuration synchronization service comprises three steps: (1) is defined in the mapping between local folders and community's file; (2) definition determines which obtains synchronous synchronous overview (as synchronizeed with whom, and which subset should be sent out, which is received); And (3) define the timetable that different synchronous overviews should be moved, or manually move them.
(1) community's file-mapping
Community's file mapping is stored on indivedual machines as 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 is counted as synchronous to each this mapping.
/mappings/transformations
How this element definition is transformed into local folders and reverse conversion how by project from community's file.If lack or for empty, do not carry out conversion.Particularly, this means without ID mapped.This configuration is mainly used in creating the high-speed cache of file.
/mappings/transformations/mapIDs
The newly-generated local ident of this element request is endowed all projects from community's file mapping, rather than reuses the ID of community.ID mapping is safeguarded in synchronous operation storehouse, since revolution change project.
/mapping/transformations/localRoot
All root Elements in this element request community file are as the sub-project of designated root.
/mappings/runAs
This control of element is processed the request for this mapping under whose is authorized.If do not exist, suppose sender.
/mappings/runAs/sender
Existing this element to show, must be impersonate to the sender of the message of this mapping, and processes request under his voucher.
(2) overview
Synchronous overview is separated synchronous required total parameter group.By SCA, provide it to synchronous operation storehouse synchronous to start.Storage platform comprises following information to the synchronous synchronous overview of storage platform:
Local folders, as the source and target changing;
Synchronous Remote Folder name-this file must be by shining upon from remote partner and issue as defined above with it;
The support of direction-synchronous service only sends, receives only and send-receive synchronous;
Local filter device-selection sends any local information to remote partner.Be expressed as the storage platform inquiry in local folders;
Remote filter device-selection receives what remote information-be expressed as storage platform inquiry community's file from remote partner;
How conversion-definition is changed between project and native format;
Local security-appointment is the change that application is retrieved from remote endpoint under the license of remote endpoint (personification), or user is synchronous at local boot; And
Collision decomposition policy-appointment conflict whether should be rejected, charge to daily record or automatic classifying-under latter event, which collision decomposition device and its configuration parameter are used in appointment.
CLR class when synchronous service provides the operation that allows the synchronous overview of simple construction.Overview can be serialized into XML file or from the serialization of XML file, store by (often together with timetable) so that easy.Yet the standard of not storing all overviews in storage platform is local; Welcome SCA to build overview on the point that needn't forever keep.Note, do not need to have local mapping and start synchronous.Can in overview, specify all synchronizing informations.Yet in response to the synchronization request being started 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 completes this task-available WindowsScheduler in Microsoft Windows operating system.Synchronous service comprises command line utility, and it takes on SCA the synchronous overview triggering synchronous based on being kept in XML file.This utility routine makes on schedule or configures Windows Scheduler in response to events such as logining or publish as user to become very easy.
D) conflict is processed
Conflict in synchronous service is processed and is divided into three phases: collision detection-this step that (1) occurs in while changing application judges whether to apply safely change; (2) automatic collision decomposition charge to daily record-at the automatic collision decomposition device of this step (after occurring in and then collision detection) information, with check conflict whether can be decomposed-Ruo can not, optionally conflict is charged to daily record; And (3) conflict checks that some conflicts with decomposition-Ruo and be logged, and occur in outside simultaneous session, take that this step-now, the conflict being 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 constraint.
(a) conflict based on knowledge
When two duplicate, same change unit is made while independently changing, the conflict based on knowledge occurs.If two change, they make in mutual ignorant situation, are called independently-in other words, and first version is not covered by the knowledge of second, and vice versa.The knowledge of synchronous service based on above-mentioned duplicate detects all that conflict automatically.
The bifurcated that conflict is thought of as in the vncsion history that changes unit is useful sometimes.If do not clash in changing the life of unit, its vncsion history be simple chain-each occur in previous after.In the situation that the conflict based on knowledge, two change parallel generation, cause chain splitting, become version tree.
(b) conflict based on constraint
There is the situation of destroying integrity constraint while together applying that independently changes.For example, in same catalogue, with two duplicate of a same file of name establishment, can cause occurring such conflict.
Conflict based on constraint involves two and independently changes (resembling the conflict based on knowledge), but they do not affect same change unit.On the contrary, they affect different change unit, but have constraint between them.
The constraint that synchronous service detects when changing application destroys, and automatically causes the conflict based on constraint.The conflict of decomposition based on constraint needs self-defined code conventionally, and it revises those changes not destroy the mode of constraint; Synchronous service does not provide the general mechanism of doing like this.
(2) conflict is processed
When conflict being detected, synchronous service can be taked one of three actions (the synchronous startup person in synchronous overview selects): (1) refuses this change, returns it to sender; (2) conflict is logged into conflict daily record; Or (3) automatic classifying conflict.
If change, be rejected, synchronous service does not operate as this change arrives this duplicate.Negative Acknowledgement is sent back to promoter.This decomposition policy is mainly upper useful at the duplicate without leader (as file server), and it is infeasible conflict being charged to daily record there.On the contrary, those duplicate force other duplicate to process those conflicts by refusing them.
Synchronous startup person configuration conflict in their synchronous overview decomposes.Synchronous service is supported in and in single overview, combines in the following manner a plurality of collision decomposition devices-first by specifying the list of collision decomposition device, attempt one by one decomposing, until one of them success; The second, by collision decomposition device is associated with conflict type, as conflict to resolver based on knowledge is upgraded-upgrades in guiding, but daily record is charged in all other conflicts.
(a) automatic collision decomposition
Synchronous service provides the collision decomposition device of some acquiescences.Its list comprises:
Local win: if with the data collision of this locality storage, disregard the change entering;
Long-range win: if conflict with the change entering, disregard local data;
Finally write win: the time mark based on changing select that each this locality that changes unit is won or long-range win (note, synchronous service does not generally rely on clock value; This collision decomposition device is this regular sole exception);
Determine: identical to guarantee on all duplicate, but the embodiment that insignificant mode is selected winner-synchronous service in other cases relatively realizes this feature with the lexicographic of Partner ID.
In addition, ISV can realize and install their collision decomposition device.Self-defined collision decomposition device can be accepted configuration parameter; Those parameters must be specified in the collision decomposition section in synchronous overview by SCA
When collision decomposition device is processed conflict, it returns to the list that needs the operation of execution (substituting conflict changes) to Runtime Library.Then these operations of sync service application, it has the long-range indication of correctly adjusting, with all the elements that comprise that conflict processor is considered.
In application decomposition, other conflict may be detected.In such situation, new conflict must be decomposed before original processing restarts.
While conflict being considered to the branch in the vncsion history of project, collision decomposition can be regarded two branches of merging-combination as to form a single point.Therefore, collision decomposition forwards vncsion history to DAG.
(b) conflict log recording
A kind of collision decomposition device of very particular type is conflict log recording device.Synchronous service is charged to daily record as the project of ConflictRecord (conflict record) using conflict.These record conversely with conflict in project relevant (unless project itself is deleted).Each conflict record comprises: the change entering leading to a conflict; The type of conflict; Upgrade-upgrade, upgrade-delete, delete-upgrade, insert-insert or constraint; And the knowledge of the version of the change entering 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
Synchronous service application programs provides API, to check conflict daily record suggestion collision decomposition wherein.This API allows application program to enumerate all conflicts, or the conflict relevant with given project.Also allow those application programs with one of following three kinds of methods, to decompose the conflict of charging to daily record: (1) long-range win-acceptance is charged to the change of daily record and 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 (3) advise new change-wherein, application program proposes that one merges, and with its viewpoint, this merges and decomposes conflict.Once decompose conflict by application program, synchronous service removes them from daily record.
(d) convergence of duplicate and the propagation of collision decomposition
The in the situation that of complex synchronization, in a plurality of duplicate, same conflict can be detected.If there is this situation, there are some things: (1) can decompose conflict on a duplicate, and decomposition is delivered to other duplicate; (2) conflict on two duplicate by automatic classifying; And (3) manually decompose conflict (by overhaul API) on two duplicate.
For guaranteeing convergence, synchronous service is forwarded to other duplicate by collision decomposition.When decomposing the change arrival duplicate of conflict, synchronous service is automatically found and is upgraded thus any conflict of decomposing in daily record, and eliminates them.In the case, the collision decomposition on a duplicate is bound to all other duplicate.
If different duplicate has been selected different winners to same conflict, the principle of sync service application binding collision decomposition, and automatically select in two decomposition one and surpass another.In deterministic mode, select winner to guarantee all to produce same result (embodiment is used the comparison of duplicate ID lexicographic) in all moment.
If different, copy " newly changing " different to same conflict suggestion, synchronous service is processed into special conflict by this new conflict, and prevents that with conflict log recording device it from propagating into other duplicate.When situation is everlasting manual collision decomposition like that, occur.
2. pair non-storage platform data storage is synchronous
By storage platform of the present invention on the other hand, storage platform provides ISV for realizing the architecture of sync adapters, sync adapters make storage platform can with as legacy systems such as Microsoft Exchange, AD, Hotmail, synchronize.The many synchronous service that 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 as changed and any application program of the service such as application simply.
In order to make other people can more easily configure and run to the synchronous of given back of the body end (backend), encourage the author of sync adapters to represent standard sync adapters interface, it moves synchronously when given above-mentioned synchronous overview.Overview provides configuration information to adapter, some adapter be sent to synchronous operation storehouse with controlling run storehouse service (as, synchronous file).
A) synchronous service
Synchronous service provides some synchronous service to adapter author.At this section remaining part, easily storage platform is made to synchronous machine thereon and be called " client computer ", and adapter is just called " server " with the non-storage platform back of the body end of its dialogue.
(1) change and enumerate
Change tracking data based on being maintained by synchronous service, change enumerate allow sync adapters easily enumerate since last and this partner attempt to make synchronize since change to data storage folders generation.
Concept based on " anchor position (anchor) " enumerates that change-this means the opaque structure of relevant last hyposynchronous information.As described in former chapters and sections, the form of storage platform knowledge is taked in anchor position.Utilize the sync adapters that changes the service of enumerating to fall into two large classifications: the adapter of " anchor position of storage " and the adapter of use " anchor position providing " are provided.
Difference based on where being stored in about last hyposynchronous information-in client computer or on server.Adapter usually easily store this information in client computer-back of the body end often can not easily store this information.On the other hand, if a plurality of client computer synchronize with same back of the body end, this information is stored in client computer be poor efficiency and be in some cases incorrect-this makes a client computer not know that other client computer shifted the change of server onto.If adapter wishes to use the anchor position of server stores, adapter need to be sent back to storage platform when change is enumerated.
In order to allow storage platform safeguard anchor position (for Local or Remote storage), storage platform need to be known the change being successfully applied on server.These and only have these changes to be included in anchor position.During change is enumerated, sync adapters is used and is confirmed (Acknowledgement) interface, to report which changes, is successfully applied.When same EOS, 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 storage adapter exclusive data and is inserted into the projects in the storage of storage platform data.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 application allows sync adapters that the change of the back of the body termination receipts from them is applied to local storage platform.Expectation adapter is transformed into storage platform pattern by change.Figure 24 illustrates the process that generates storage platform API class from storage platform pattern.
The major function that changes application is automatically to detect conflict.As in the situation that storage platform is synchronous to storage platform, two overlapping changes that conflict is defined by making when not knowing mutually.When adapter uses change application, they must specify the anchor position of it being carried out to collision detection.The overlapping this locality that is not adapted the knowledge covering of device if detect changes, and changes application and causes conflict.Be similar to change and enumerate, adapter can be provided by anchor position storage or that provide.Change effective storage of application support adapter dedicated meta data.Such data can be appended in the change that will apply by adapter, and can be stored by synchronous service.Data can be returned when change is enumerated in next time.
(3) collision decomposition
The collision decomposition mechanism (comprise and charge to daily record and automatic classifying option) of describing in IV below also can be used sync adapters.When application changes, sync adapters can be specified the policy for collision decomposition.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 this locality change to be applied to back of the body end, adapter likely detects conflict.In such situation, adapter still can be delivered to conflict synchronous operation storehouse, to decompose by policy.In addition, sync adapters can ask any conflict being detected by synchronous service to send back to them to process.This is convenient especially at back of the body end, to store or decompose the situation of conflicting.
B) adapter is realized
Although some " adapter " is the application program of utilizing Runtime Library interface simply, yet encourage adapter to realize the adaptor interface of standard.These interfaces allow synchro control application program: request adapter is carried out synchronous by given synchronous overview; Cancel just carrying out synchronous; And receive about just carrying out synchronous progress report (Percent Complete).
3. security
Synchronous service is made great efforts the least possible safe mode being realized by storage platform that is synchronously incorporated into.Not to define synchronous new authority, but use existing authority.Particularly,
Anyone of energy read data stored items can enumerate the change to that project;
Anyone that can write data stored items can apply this project that changes to; And
Anyone of energy growth data stored items can be by synchronizing metadata and this item association.
Synchronous service is maintenance safe authorization message not.When making change at duplicate A by user U, and while being forwarded to duplicate B, the fact that this change is made at A place (by U) has at first been lost.If B is forwarded to duplicate C by this change, this is to complete under the mandate of B rather than the mandate at A.This just causes following restriction: if distrust a duplicate to make its change to a project, it can not forward the change of being made by other duplicate.
When starting synchronous service, by synchro control application program, completed.The identity of synchronous service personification SCA, and under this identity, complete all operations (local with long-range).As explanation, observe user U and can not make local synchronization service user U not there is to the change of the project of read access from the retrieval of remote storage platform.
4. manageability
The distributed community that monitors duplicate is complicated problem.Synchronous service can be used " scanning (sweep) " algorithm to collect and distribute the information about the state of this duplicate.The attribute of scanning algorithm is guaranteed to be finally collected about the information of all configured duplicate, and the duplicate of this failure (without response) detected.
On each duplicate, can obtain the monitor message of community's scope.Can be on the duplicate of choosing arbitrarily operation monitoring instrument, to check this monitor message and to make management decision.On affected duplicate, must directly make configuration change.
J. traditional file interoperability
As mentioned above, at least in certain embodiments, storage platform of the present invention is intended to be implemented as the integral part of the hardware/software interface system of computer system.For example, storage platform of the present invention can be implemented as the integral part of Microsoft Windows family operating system.In this respect, storage platform API becomes a 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 in 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 implementing in Microsoft Windows family operating system, the alternative new technology file system of realizing in this operating system of storage platform.Current, application program visits the service of new technology file system by the Win32 API being represented by Windows family operating system.
Yet, will be appreciated that, by storage platform of the present invention, substitute new technology file system completely and need the existing application program based on Win32 of recompile, therefore and such recompile may be undesirable, storage platform of the present invention provides and be useful as certain interoperability of the existing file systems such as NTFS.Thereby in one embodiment of the invention, the application program that storage platform makes to depend on Win32 programming model can be accessed the content of the data storage of storage platform and the data storage of traditional new technology file system simultaneously.For this reason, storage platform is used as the name of the superset (superset) of Win32 name custom to be accustomed to so that be easy to interoperability.In addition, storage platform support is stored in file and the catalogue in storage platform volume by Win32 API Access.
Other details about this function can find in relevant patent previously incorporated herein by reference.
K. storage platform API
Storage platform comprises API, and it makes application program can access feature and the ability of storage platform discussed above, and access is stored in the project in data storage.This section is described an 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 of equal value with the file system folder of common concept.Each project " comprises " at least one include file folder.
Figure 19 illustrates by the basic architecture of the storage platform API of the present embodiment.Storage platform API is used 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 access the data in MicrosoftExchange and 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) Runtime Library framework 2004, the persistence of its management object the class 2006 that provides support; And (3) instrument 2008, it is for generating CLR class from storage platform pattern.
The hierarchy of the class drawing from given pattern has directly reacted the hierarchy of type this pattern.As an example, the item types that consideration defines in the contact schema as shown in Fig. 2 lA and Figure 21 B.
Figure 22 illustrates the Runtime Library framework in operation.Runtime Library framework operates as follows:
1. application program 350a, 350b or 350c are tied to the project of storage platform.
2. the ItemContext object 2202 that framework 2004 creates corresponding to binding project, and returned to application program.
3. application program is submitted the Find (searching) on this ItemContext (project context) to, to obtain a destination aggregation (mda); Return to be integrated into conceptive be object diagram 2204 (due to relation).
4. application program change, deletion and data inserting.
5. application program is preserved change by calling Update () method.
Figure 23 illustrates the execution of " FindAll (finding all) " operation.
Figure 24 illustrates the process that generates storage platform API class from storage platform pattern.
Figure 25 illustrate file API based on pattern.Storage platform API comprises the name space of processing file object.This name space is called as System.Storage.Files.The data member of the class in System.Storage.Files has directly reflected the information being stored in storage platform storage; This information is from file system object " upgrading " or use Win32 API the machine ground to create.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 in Figure 25.FileItem and DirectoryItem are read-only from storage platform API.For revising them, must use Win32 API or the class in System.IO.
For API, arbitrary mechanism, process, the agreement that the function for making one or more segments of code provide with one or more other segments by code communicates or it is conducted interviews can be provided DLL (dynamic link library) (or being simply referred to as interface).Or DLL (dynamic link library) can be regarded as being coupled to communicatedly one or more mechanism, method, function call, module, object etc. of assembly of the system of one or more mechanism, method, function call, module of other computing machine etc.Term in above-mentioned statement " code snippet " is intended to comprise one or more instructions or the code line of code, and comprise, as, code module, object, subroutine, function etc., what the term of no matter applying 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 different machines or across a plurality of machines distributions, or whether the function being represented by code snippet is completely by software, combination by hardware or hardware and software realizes completely.
Conceptive, DLL (dynamic link library) can be generally looked, as shown in Figure 30 A or Figure 30 B.It is pipeline that Figure 30 A shows interface " interface 1 ", and the 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 the first and second code snippets (can), and they make the 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 also can think that object I1 and I2 add that medium M has formed interface.Although Figure 30 A and 30B show the interface in each side of Bidirectional Flow and this flow process, some realization can only have an information flow in direction (or as described below do not have information flow), or only has the interface object of a side.As example but not limitation, within terms such as application programming or routine interface (API), entrance, method, function, subroutine, remote procedure call and the Component Object Model (COM) interface is included in the definition of DLL (dynamic link library).
The aspect of this class DLL (dynamic link library) can comprise that first code segment sends the method (wherein, " information " is used with its broadest sense, and comprises data, order, request etc.) of information to second code segment; 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 accessed the function of being carried out by second code segment, information can not transmitted in one or two direction, because communication 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 given in the situation that, as, depend on that whether code snippet is a part for the system of loose coupling or tight coupling configuration, and therefore this list should be considered to illustrative and unrestricted.
This concept 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 concept.Yet, there is other method to realize DLL (dynamic link library), unless and get rid of significantly, these methods are also included by appended claims.These other methods seem more accurate or complicated than the view of Figure 30 A and 30B, but they are still carried out similar function and complete same integral result.Concise and to the point some illustrative of describing DLL (dynamic link library) is replaced and is realized now.
decompose: can indirectly realize the communication from a code snippet to another by communication being split into a plurality of distributed communication.This schematically describes in Figure 31 A and 31B.As shown in the figure, can be according to function divide into groups to describe some interface.Thus, can exploded view 30A and the interface function of 30B reach identical result, as provided 24 on mathematics, or 2 take advantage of 2 take advantage of 3 take advantage of 2 the same.Therefore,, as shown in Figure 31 A, can segment the function that provided by interface " interface 1 " the communication scaling of this interface is become to a plurality of interfaces " interface 1A ", " interface 1B ", " interface 1C " etc., and reach identical result.As shown in Figure 31 B, the function being 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 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 first code segment does not need coupling to be included in the quantity of the interface in second code segment.In 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 more difficult identification.For example, command operation can be unessential, and the function therefore being completed by interface can complete preferably by another section of code or interface before reaching this interface, or is 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 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 issued to second code segment by first code segment.If intermediate parameters precision is unimportant under given situation, as shown in Figure 32 A, it also can be left in the basket or even by meaningless (meaningless) (in this case) parameter, be replaced.Also can add inessential additional (in addition) parameter.In either case, as long as return to output in input by after second code segment square, just can reach square (square) function.Precision is likely also extremely significant parameters to a certain downstream of computing system or other parts; Yet once 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 transmit such as insignificant values such as dates of birth in the situation that result not being had a negative impact.Similarly, as shown in Figure 32 B, interface I1 is by interface I1 ' replacement, and it is redefined to ignore or adds parameter to interface.Interface I2 can be redefined similarly as interface I2 ', and it is redefined to ignore unnecessary parameter, or the parameter that can process elsewhere.Main points are herein in some cases, and DLL (dynamic link library) can comprise the unwanted aspect of a certain object, such as parameter, therefore can ignore or redefine them, or processing elsewhere them for other object.
inline code: some or all functions that merge two independent code modules are also feasible, and " interface " between them is changed form.For example, the function of Figure 30 A and 30B can be transformed into respectively the function of Figure 33 A and 33B.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 to (Return) statement will be no longer essential, but according to similar processing or the response of interface " interface 1 ", be still effectively.Similarly, as shown in Figure 33 B, the part of Figure 30 B (or all) 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 in interface I1, writes code and form interface I1 ".For concrete example, the interface 1 execution function call square (input, output) that considers Figure 30 B, it is received by interface I2, by second code segment, processed be delivered to input value (it is asked square) afterwards, the result that it is used output to transmit back to ask square.In this case, the processing of being carried out by second code segment (input is asked square) can be carried out by first code segment in the situation that never calling this interface.
depart from: can indirectly complete the communication from a code snippet to another by communication being split into a plurality of discrete communication.This schematically describes in Figure 34 A and 34B.As shown in Figure 34 A, provide one or more segments of middleware (to depart from interface (Divorce Interface), because function and/or interface function that they depart from from original interface), to transform the communication on first interface " interface 1 ", make them meet different interfaces, be " interface 2A ", " interface 2B " and " interface 2C " in this situation.This can complete in such a case, for example, according to the basis of installation of " interface 1 " Protocol Design application with as operating system, communicate, but then change this operating system, use different interfaces, be interface " interface 2A ", " interface 2B " and " interface 2C " in this situation.Main points are to have changed the clean interface being used by second code segment, make the interface compatibility that it no longer uses with first code segment, therefore with intermediary make old interface and new interface compatible.Similarly, as shown in Figure 34 B, can use disengaging interface DI1 to introduce third generation chip disconnected to receive information from interface I1, and use departing 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 to use DI2, but be to provide identical functional outcome.Similarly, DI1 and DI2 can co-operation the function of the interface I1 of Figure 30 B and I2 is converted to a new operating system, and provide same or similar functional outcome.
rewrite: another possible variation is dynamically to rewrite code, replaces the function of interface, and still reach identical total result with anything else.For example, can there is a kind of system, wherein, to execution environment (as the environment being provided by .Net framework, java runtime environment or other similar time of running type environment) in timely (Just-in-Time) (JIT) compiler or interpreter provide the code snippet presenting in intermediate language (as Microsoft IL, JavaByteCode etc.).Can write JIT compiler dynamically communication is transformed into second code segment from first code segment, that is, make them meet the needed distinct interface of second code segment (original or different second code segments).This has description in Figure 35 A and 35B.As seen in Figure 35 A, this mode is similar to above-mentioned disengaging situation.It can complete under such a case, and for example, the fundamental operation of the installation system of applying according to " interface 1 " Protocol Design communicates, and then changes this operating system to use different interfaces.The air communication that JIT compiler can have been installed base application for order meets the new interface of operating system.As described in Figure 35 B, can apply this method that dynamically rewrites interface to carry out dynamic decomposition, or change interface.
It should be noted that and above-mentionedly by alternative embodiment, realize and the also serial in every way of situation of the same or analogous result of interface, parallel or intervene code combination with other.Thus, the alternative embodiment above presenting not is mutual limit, and can be mixed, coupling and combination to be to produce the situation identical or equivalent with the general situation being presented in Figure 30 A and 30B.Also should be noted that, as most of programming constructs, the present invention may not describe other the similar mode reaching with the same or analogous function of interface, but they are still represented by the spirit and scope of the present invention,, it should be noted that it is the function that represents of the basic interface by the value as interface or the favourable outcome of being enabled by it at least in part.
III. expand and inherit
A basic concept of the present invention is to utilize project, and it is used to a certain extent by labyrinth pattern description and that implemented by hardware/software interface system, behavior and operation and carrys out modelling real-world application object.For abundant subtype function is provided, and in various embodiment of the present invention, hardware/software interface system (for convenient, hereinafter will referred to as " WinFS ") can provide a kind of mechanism, by it, can use " expansion " to carry out expansion project (and item types).Expansion provides additional data structure (attribute, relation etc.) to the item types structure having existed.
As (and particularly the discussing in chapters and sections II.E.6. (a) and II.F.3) of discussing in this article above, although be the initial sets that will supply a pattern for storage platform, but storage platform allows client to comprise that independently software vendors (ISV) creates new pattern (that is, new project and nested element type) in some embodiment at least.The item types or the nested element type that due to the initial sets by storage platform pattern, define inaccurately meet the demand of ISV application, so are necessary to allow ISV types of customization.This is to allow by the concept of expansion.Expansion is strong typing example but (a) they can not have an independent existence and (b) they must be attached to project or nested element.And except solving the demand of pattern extensibility, expansion also will solve " multiple type " problem.Because storage platform in some embodiments is not supported multiple inheritance or overlapping subtype, therefore application can be used expansion as the mode of the overlapping type instance of modelling (for example, a document can be " legal documents ", can be also " security document ").
A. type system
In various embodiment of the present invention, WinFS type system provides a kind of mechanism that defines the structure of data.Type system is for representing to be stored in the data of WinFS.WinFS type is stated in WinFS pattern.Name space of WinFS mode-definition, it is as the logic groups of a set type and other WinFS schema elements.WinFS pattern can be used WinFS Pattern definition language (SDL) (it may use XML language) to state.The example of a possible pattern statement below:
<Schema Namespace=″System.Storage″>
Type definitions
</Schema>
WinFS pattern is also as type version unit.WinFS defines the system model of some guidance systems.These are System.Storage schema name word spaces, the type declarations that it comprises root type in system, and System.Storage.WinFS schema name word space, all base scalar types in its statement system.
WinFS type system is stated one group of simple scalar type.These types are as the most basic building block of all other types in WinFS type system.These types are stated in schema name word space System.Storage.WinFS.Table definition fundamental type set below.
winFS type |
managed SQL type |
cLR type |
describe |
string |
sqlString |
string |
it is 2^31 character length that variable-length Unicode data have maximum length.Use " max " (maximum) key length to fix or unfettered from 1-4000 character. |
binary |
sqlBinary |
byte[] |
it is 2^32 byte length that the binary data of variable-length has maximum length.Use " max " (maximum) key length to fix or unfettered from 1-8000 byte. |
boolean |
sqlBoolean |
boolean |
it can be the Boolean of NULL |
byte |
sqlByte |
byte |
single without symbol-byte |
int16 |
sqlInt16 |
int16 |
integer data from-2^15 (32,768) to 2^15-1 (32,767) |
int32 |
sqlInt32 |
int32 |
integer (integer) data from-2^31 (2,147,483,648) to 2^31-1 (2,147,483,647) |
int64 |
sqlInt64 |
int64 |
integer (integer) data from-2^63 (9223372036854775808) to 2^63-1 (9223372036854775807) |
double |
sqlDouble |
double |
floating point precision logarithmic data is from-3.40E+38 to 3.40E+38 |
single |
sqlSingle |
single |
floating point precision logarithmic data is from-1.79E+308 to 1.79E+308 |
decimal |
sqlDecimal |
decimal |
sQLDecimal has the value scope larger than CLRDecimal type.Precision 28 numbers always in storer |
|
|
|
word and ratio are 0. |
dateTime |
sqlDateTime |
dateTime |
date and time, from Dec 31,1 day to 9999 January in 1753, has the degree of accuracy of three centiseconds or 3.33 seconds |
guid |
sqlGuid |
guid |
global unique identification symbol (GUID) |
xml |
sqlXmlReader |
xmlReader |
for milestone B, WinFS.Xml will be mapped to " String " type.Real XML data type support expection is in milestone C. |
stream |
tBD |
tBD |
binary data type, is used the storage of supporting document stream for effectively access.This type will be supported in milestone C. |
It is a scalar type that WinFS enumerates, and it states the constant of one group of name, is called value list.Enumeration type can used the use Anywhere of scalar type.Here be the example of enumerating statement:
<Enumeration Name=″Gender″>
<Value Name=″Male″/>
<Value Name=″Female″/>
</Enumeration>
Enumerated value is based on zero.Gender.Male represents to be worth 0 and Gender.Female represents to be worth 1 in the above example.
Complicated type is by name and one group of attribute definition.Attribute is member's field of type, and by name and type definition.The type of attribute can be scalar (comprising enumeration type) or can be other complicated type.The WinFS type that can be used as the type of attribute is called as nested type.The example of nested type can be only exists as the property value of the attribute of complicated WinFS type--and this example is nested in the example of a complicated type.Nested type is to use the statement of NestedType (nested type) schema elements.Here be some examples of life type statement:
<NestedType Name=″Address″BaseType=″System.Storage.NestedObject″>
<Property Name=″Street″Type=″WinFS.String″Size=″256″
Nullable=″false″/>
<Property Name=″City″Type=″WinFS.String″Size=″256″
Nullable=″false″/>
<Property Name=″State″Type=″WinFS.String″Size=″256″
Nullable=″false″/>
<Property Name=″Country″Type=″WinFSString″Size=″256″
Nullable=″false″/>
</NestedType>
<ItemType Name=″Person″BaseType=″System.Storage.Item″>
<Property Name=″Name″Type=″WinFS.String″Size=″256″
Nullable=″false″/>
<Property Name=″Age″Type=″WinFS.Int32″
Nullable=″false″Default=″1″/>
<Property Name=″Picture″Type=″WinFS.Binary″Size=″max″/>
<Property Name=″Addresses″Type=″MultiSet″MultiSetOfIype=″Address″/>
</ItemType>
For the attribute of type String and Binary, must specify Size (size) attribute.This attribute is specified the full-size that is included in the value in Property (attribute).It can be the constraint of null that attribute can be used Nullable attribute to state alternatively.The value of this attribute must provide a value while representing to be applied in the example that creates the type for " false (vacation) ".Another optional Property (attribute) attribute is Default (acquiescence) attribute, and it specifies the default value of Property (attribute).This value will be assigned to Property (attribute) when example creates, if application does not provide it.
Addresses in upper example (address) attribute is MultiSet (multiple setting) type.The attribute of MultiSet (multiple setting) type is also referred to as multi-valued attribute.The example that MultiSet (multiple setting) comprises one group of Address (address) type in this example.MultiSet (multiple setting) is similar to set.It can comprise the example of zero or a plurality of complicated types.The type of the example in MultiSet (multiple setting) must be complicated nested type.MultiSet (multiple setting) type is not supported the WinFS scalar type example of (comprising enumeration type).The attribute of MultiSet (multiple setting) type can not be and can not have default value for null's.
WinFS supports the single inheritance of type.All types in WinFS must and can only be inherited a WinFS type from one.The type that the type of inheriting is called derived type and derives this type from it is called base type.Base type in BaseType (base type) attribute in WinFS statement element.Suppose that type A derives from base type B, and B and then derive from Type C.Type C is ancestors' type of type A and type B.Type A is descendants's type of type B and C.The data instance being stored in WinFS is the example of single type all the time.Yet data instance can be considered as to the example of one group of type that comprises the type and all ancestors' types thereof.For the data instance of the example as such set type, call the ancestors' of any other type in the group that is not in the end to derive (most-derived) type type.Independent typed data instance is to be exactly the example of a last derived type.Conventionally, the last derived type of independent typed element is called to its type.Derived type is inherited all properties of stating in its base type.Derived type can be stated new attribute but can not cover the attribute defining in base type.The attribute of stating in derived type must not used the name identical with the attribute of base type.
The major advantage of inheriting in data model comes from the replaceability of inheriting type.Consider example below:
<NestedType Name=″Name″BaseType=″System.Storage.NestedObject″>
<Property Name=″FirstName″Type=″WinFS.String″/>
<Property Name=″LastName″Type=″WinFS.String″/>
</Nestedype>
<NestedType Name=″NameWithMiddleInitial″BaseType=″Name″>
<Property Name=″MiddleInitial″Type=“WinFS.String″/>
</NestedType>
<NestedType Name=″Person″BaseType=″System.Storage.Item″>
<Property Name=″RealName″Type=″Name″/>
<Property Name=″OtherNames″Type=″MultiSet″MultiSetOfType=″Name″/>
</NestedType>
In the above example, type Person (individual) has the attribute RealName that type is Name (name) (true name) and as the attribute OtherNames (other name) of one group of Name (name) type.Conventionally requiring attribute RealName (true name) to only have its type is the example of Name (name).Yet by inheriting, allowing monodrome example is the value of RealName (true name), as long as Name (name) type is one of the ancestors of the last derived type of this element.Therefore, the example of NameWithMiddleInitial (name with middle initial) will allow for the value of attribute RealName (true name).
Expand identical rule to set a property.Attribute OtherNames (other name) comprises a group element.For each independent type example (they are members for this set), the last derived type of this example must have Name (name) as its one of ancestors.Therefore, some examples in OtherNames (other name) set can be the examples of Name (name) type, although other example may be the example of NameWithMiddleInitial (name with middle initial) type.
Inherit and also support inquiry easily, because likely find out all examples of certain type in WinFS system.When searching all examples of a type, query engine also will return to the example that all its last derived types are descendants of this type.Yet, only have project, expansion and relationship type (not being attribute type) to support these operations.For nested type (being again nested element, attribute or complex properties type), the example being only included in single multiple setting a property is supported this operation.
B. type family
In a word, four different categorical serieses of WinFS type system definition:
Nested element type (being again nested type or attribute type)
Item types
Relationship type
Expansion type
Each categorical series has a different attribute and usage set in WinFS type system.System.Storage schema name word space statement Four types is as the root type of each categorical series.Chapters and sections below describe these type systems in detail.
1. nested element type
Unlike other WinFS categorical series, nested type can be used as the type of the attribute of complicated WinFS type.The example of nested type is only to be nested in the example of another complicated type.Yet the example of nested type can not be by global query--, application can not be write all examples that a given nested type in WinFS storer is returned in a simple inquiry.
2. item types
WinFS project is that its ancestors are examples of the type of System.Storage.Item type.This type is the complicated type as the root of item types series.System.Storage.Item has stated the attribute that an ItemID by name (item id) type is Guid.This is a specific properties of project, as the primary key of project.The value that guarantees this attribute is unique for the project in a given WinFS storer.This attribute can not be null, and must be when being applied in the example that creates item types assignment.ItemID (item id) attribute is also immutable--it never changes and must not be reused.
Query engine can return to the example of given item types in WinFS storer.This inquiry can be returned to all examples of the type and all types descendants type thereof.The center role that described project has in WinFS system operational semantics after a while herein.
3. relationship type
Relationship type can be present between project relation.WinFS relationship type is described scale-of-two relation, and wherein specifying a project is source and to specify another project be target.Relation is that its ancestors are examples of the type of System.Storage.Relationship type.This type is the root of relationship type hierarchical structure.Column Properties under System.Storage.Relationship type declarations:
SourceItemID (source item ID)--as the ItemID (item id) of the project in the source of relationship example
RelationshipID (relations I D)--with respect to the unique identifier of the relation of source item; (SourceItemID (source item ID), RelationshipID (relations I D)) is to forming the primary key of relation in WinFS
The ItemID (item id) of TargetItemId (destination item ID)--the target of relation
Mode (mode)--one of 3 kinds of possible relationship example modes: Holding (holding), Embedding (embedding) or Reference (quoting)
The name of Name (name)--relation of inclusion is used for holding relation
IsHidden (whether hiding)--boolean properties, application can filter with it the shown relation that do not need alternatively
SourceItemID (source item ID), RelationshipID (relations I D), TargetItemId (destination item ID) and Mode (mode) property value are immutable.They at relationship example creation-time by assignment and can not change.
Relationship type is claimed as the complicated type with following additional constraint:
Source and target end points standard: each end points is specified the type of name and the project that is cited
Institute's permission mode of the example of relationship type: relationship example can not have the value of unallowed Mode (mode) attribute in relation statement
Here be the example of relation statement:
<RelationshipType Name=″DocumentAuthor″
BaseType=″System.Storage.Relationship″
AllowsHolding=″true″
AllowsEmbedding=″false″
AllowsReference=″true″>
<Source Name=″Document″Type=″Core.Document″/>
<Target Name=″Author″Type=″Core.Contact″/>
<Property Name=″Role″Type=″WinFS.String″/>
<Property Name=″DisplayName″Type=″WinFS.String″/>
</RelationshipType>
DocumentAuthor (document author) relation is with example, the restriction of Holding (holding) or Reference (quoting) to be stated.The example that this means DocumentAuthor (document author) relation can have the example with value Mode=" Reference " or Mode=" Holding ".Do not allow to have the example of value Mode=" Embedding ".
The source endpoint of " Document (document) " by name and the target endpoint of item types " Core.Contact " of relation statement item types " Core.Document ".Relation has also been stated two adeditive attributes.Relationship example and project are stored dividually and are accessed.All relationship example can be from overall extended view access.Can write all examples that given relationship type is returned in an inquiry.
A given project, the relation that all these projects are source can be enumerated by SourceItemID (source item ID) attribute based on relation.Equally, for a given project, all relations that this project is target in same storer can be used TargetItemId (destination item ID) attribute of relation to enumerate.
A) relation is semantic
Chapters and sections are below described the semanteme of different relationship example modes:
hold relation: the relation of holding is for the life-span management based on reference count of modelling destination item.A project can be zero or a plurality of source endpoints that are related to project.The project that is not the project of embedding can be one or more related targets of holding.Destination item must be with relationship example in same storer.
Hold the life-span management that is related to implementation goal end points.Hold relationship example and be atomic operation as the establishment of the project of target.Can create and take the additional relation of holding that same project is target.When last have a given project as target endpoint hold relationship example when deleted, destination item is also deleted.
When in relation statement, the type of the end points project of appointment creates the example in relation, be implemented.The type of end points project can not be changed after opening relationships.
Hold to close to tie up to and while forming WinFS entry name word space, play the part of a pivotal player.All relations of holding participate in name space statement." Name (name) " attribute in relation statement is relevant to source item statement target item destination name.This relevant name is unique and can not is null for all relations of holding that are derived from a given project.The ordered list of this relevant name starts the given project that forms the complete name of project to from root Element.
The relation of holding forms directed acyclic graph (DAG).When the relation of holding creates, System Assurance does not produce circulation, thereby Guarantee item name space forms DAG.For the more information of WinFS name space and item Path, with reference to " WinFS name space " standard.
imbeding relation: the concept of the Absolute control in the life-span of imbeding relation modelling destination item.They support compound term object concept.Imbeding relation 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 imbeding relations.Yet project can be one and the target of an imbeding relation only.Project as the target of imbeding relation can not be to hold related target.Destination item must be with relationship example in same storer.
When in relation statement, the end points item types of appointment is created the example in relation, implement.The type of end points project can not change after opening relationships.Imbeding relation does not participate in WinFS name space.The Name of imbeding relation (name) property value must be null.
adduction relationship: adduction relationship is not controlled the life-span of the project that it quotes.Adduction relationship does not guarantee the existence of target, does not guarantee as the target type of appointment in relation statement yet.This means that adduction relationship can imagine.And adduction relationship can be quoted the project in other WinFS storer.
In WinFS, adduction relationship is by the relation for most of non-life-span managements between modelling project.Owing to not forcing the existence of target, so adduction relationship is convenient to the relation of modelling loose coupling.Adduction relationship can be for the destination item in other WinFS storer (comprise and being stored on other machine).Imbeding relation does not participate in WinFS name space.The value of the Name of imbeding relation (name) attribute must be null.
B) relation rule and constraint
Below additional Rule and constraint be applicable to relation:
A project must be the target of (with regard to an imbeding relation) or (one or more holds relation).An exception is root Element.A project can be the target of zero or a plurality of adduction relationships.
Project as imbeding relation target can not be to hold related source.It can be the source of adduction relationship.
A project can not be to hold related source, if it promotes from file.It can be the source of imbeding relation and adduction relationship.
A project promoting from file can not be the target of imbeding relation.
When relationship type A is while deriving from base relationship type B, following rule is applicable:
Relationship type A can further limit endpoint type.Endpoint type must be the subtype of the corresponding endpoint type in base relationship B.If end points is further limited, be necessary for a new name of this end points statement.If do not limit end points, the standard of end points is optional
Relationship type A can further be limited in the way of example allowing of stating in base relationship.Restricted way of example set must be the subset of the base type of allowed example types.
The name of end points is considered as attribute name: they are not identical with the name of attribute or the name of end points or its base type.
Source and target element is optional, if corresponding endpoint type is not further limited by the relation that is derived
Here be the example from the statement of the relationship type in DocumentAuthor defined above (document author) relation derivation herein:
<RelationshipType Name=″LegalDocumentAuthor″
BaseType=″Core.DocumentAuthor″
AllowsHolding=″false″
AllowsEmbedding=″false″
AllowsReference=″true″>
<Source Name=″LegalDocument″Type=″Legal.Document″/>
<Property Name=″CaseNumber″Type=″WinFS.String″/>
</RelationshipType>
LegalDocumentAuthor (legal documents author) relation also limits source endpoint but limited target end points not.Source endpoint type is Legal.Document, and it is derived from Core.Document.Target endpoint is not further limited in this example, has therefore omitted object element.The relation way of example that also further restriction allows.It does not allow the permission mode of Holding (holding) mode and only reservation is to quote.
4. expansion type
WinFS expansion is that its ancestors are examples of the type of System.Storage.Extension type.This type is the complicated type for the root of expansion type series.
System.Storage.Extension defines two attributes:
ItemID (item id)-with the ItemID (item id) of the project that is associated of expansion
ExtensionID (Extended ID)--expansion is relevant to the unique identifier of ItemID (item id).(ItemID (item id), ExtensionID (Extended ID)) is to unique identification expansion example.
Restriction is below applicable to expansion type:
Expansion type example can not be independent of project and exist.Having same ItemID (item id) must be present in storer as the item types example of expanding ItemID (item id) before expansion type example creates.If there is the project of given ItemID (item id), do not exist, can not create expansion.When this project is deleted, all expansions with same ItemID (item id) are deleted.
Example at the most of a given last derivation expansion type can be independent with one project be associated.
Expansion can not be the source and target of relation.
Not constraint in the type of the expansion that can be associated with given item types.Allow any expansion type to expand any item types.When the Multi-instance of different expansion types is attached to a project, they are all irrelevant each other aspect structure and behavior two.Expansion example and project are stored dividually and access.All expansion examples can be from overall extended view access.Can write all examples that the expansion of given type is returned in an inquiry, no matter they are associated with the project of what type.The ItemID (item id) of expansion represents they belong to which project and can be for retrieving corresponding item objects from global keys eye diagram.And, a given project, all expansion examples that are associated with this project can be used ItemID (item id) attribute of expansion to enumerate.
C. the function strengthening
In some embodiment of the present invention, hardware/software interface system utilization expansion and succession be so that the relation between the various projects of formalization, thereby strengthen the ability of a plurality of projects of inquiry.
1. inherit
Figure 36 illustrates the subset of a series of projects that connect each other and their relation.Document (document) project 3602 and Contact (contact person) project 3604 are directly by appointment, to be related to that 3606 is relevant, in this example, be related to that 3606 is " author relationships "--, Contact (contact person) the 3604th, " author " of Document (document) 3602.In this example, Picture (photo) project 3622, Music (music) project 3624 and Special (special) project 3626 are all inherited from Document (document) project 3604, because the type of each project is the subtype of Document (document) item types.Equally, Person (individual) project 3642 and Organization (tissue) project 3644 are inherited from Contact (contact person) project 3604.In some embodiment of the present invention, the project of these successions (Person (individual) 3622, Music (music) 3624, Special (special) 3626, Person (individual) 3642 and Organization (tissue) 3644) is not only inherited the attribute of corresponding parents' project (Document (document) 3602 and Contact (contact person) 3604), and they also inherit the relation of appointment between these two parents' projects.For example, Person (individual) 3622 inherit with Contact (contact person) 3664 be related to 3662, with Person (individual) 3642 be related to 3664 and with Organization (tissue) 3644 be related to 3666.Similar set of relationship also by shown in each other project inherit.
Yet, be important to note that, be related to that inheritance is not in each context, to occur automatically and not.For example, describe when a type can heritable attribute (that is, inheritance is controlled) itself be not hereditable.Inheritance parameter is preserved and is adjusted by hardware/software interface system.
2. expansion
Figure 37 A illustrates the shortcoming for the standard subtype of the project of application specific object.In this accompanying drawing, Contact (contact person) can be by four application, APP1, APP2, APPX and APPY access.APP1 and APP2 access criteria Contact (contact person), but each needs the contact object (adding additional field) of an expansion APPX and APPY, thereby derive Contact ' and Contact ", they each from Contact (contact person), inherit.Yet problem is three different examples that have now basic Contact (contact person) project--one in Contact (contact person), one in Contact ', and one at Contact " in.
The part solution of this problem, as shown in Figure 37 B, expand the attribute of Contact (contact person) to comprise the needed field of the such application of requirement.In this case, expansion Contact (contact person) is to comprise the added field being required by APPX.Yet, directly expand the field of project a such as Contact (contact person) and can only carry out once, thereby APPY can not be used this method.
In one embodiment of the invention, more fully solution is to use the expansion different and independent from Contact (contact person) itself to expand Contact (contact person).Like this, APPX can expand Contact (contact person) to comprise its APPX added field, and APPY also can expand Contact (contact person) to comprise its APPY added field simultaneously.These expansions be subsequently can search for and can inquire about, and thereby these expansions support multiple typed form for hardware/software interface system.
IV. conclusion
As previously shown, the present invention is directed to for organizing, search for and the storage platform of shared data.The concept of the data storage outside existing file system and Database Systems is expanded and expanded to storage platform of the present invention, and designed to be used the storage of all types of data, comprise structurized, non-structured or semi-structured data for example relation (tabular) data, XML, and a kind of data that are known as the new model of project.By the data of its common storage function and medelling, storage platform of the present invention is allowed for the more effective application and development of client, Knowledge Worker and enterprise.It provides abundant and extendible application programming interface, and described interface not only can be used performance intrinsic in its data model, and comprises and expanded existing file system and data bank access method.Be appreciated that in the situation that do not depart from its wide in range inventive concept, the change that can carry out above-described embodiment.Therefore, the present invention is not limited to disclosed specific embodiments, and is intended to be changed by the institute in the covering the spirit and scope of the present invention of claims defined.
As become clearly according to the above, all or a part of can embodiment with the form of program code (that is, instruction) of various systems of the present invention, method and aspect.This program code can be stored on computer-readable medium, magnetic, electricity or the storage medium of light for example, in non-limiting situation, comprise floppy disk, CD-ROM, CD-RW, DVD-ROM, DVD-RAM, tape, flash memory, hard disk drive or other machinable medium, wherein, when program code is loaded into machine for example in computing machine or server and while being carried out by machine, described machine just becomes for implementing device of the present invention.The present invention can also embody with the form of the program code that is transmitted on some transmission mediums, on transmission medium for example on electric wire or cable, by optical fiber, on network, comprise the Internet or in-house network, or by the transmission of any other form, wherein, when program code is received and be loaded into machine for example in computing machine and while being carried out by machine, described machine just becomes for implementing device of the present invention.When being implemented on general processor, described program code combines with processor, to unique device of the operation that is similar to particular logic circuit is provided.