⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc610.txt

📁 RFC 相关的技术文档
💻 TXT
📖 第 1 页 / 共 5 页
字号:
conceptually, than other components and may be operated on together.Arrays allow for repetition in data structures.  An array, like astruct, is a static aggregate of data items (called _members_). Eachmember of an array is of the same type.  Associated with each member isan index by which that member can be referenced relative to the array.Arrays can he used to model repeating data in a record (repeatinggroups).The concept of string is actually a hybrid of basic data and dataaggregates.  Strings are aggregates in that they are compositions(similar to arrays) of more primitive data (e.g., characters). They are,however, generally conceived of as basic in that they are mostly viewedas a unit rather than as a collection of items, where each item hasindividual importance. Also the meaning of a string is highly dependenton the order of the individual components.  In more concrete terms,there are operations which are defined on specific types of strings.For example, the logical operators (_and_, _or_, etc.) are defined tooperate on strings of bits.  However, there are no operations which aredefined on arrays of bits, although there are operations defined on botharrays, in general, and on bits.  Strings of characters, bits, anduninterpreted data will be available in datalanguage.Lists are like arrays in that they are collection of similar members.However, lists are dynamic rather than static.  Members of a list can beadded and deleted from the list.  Although, the members of a list areordered (in fact more than one ordering can be defined on a list), thelist is not intended to be referenced via an index, as is the case withan array.  Members of a list can be referenced via some method ofsequencing through the list.  A list member, or set (see discussionunder virtual data) of members, can also be referenced, by some methodof identification by content.  The list structure can be used to modelthe common notion of a file.  Also restrictive use of lists ascomponents of structs provides power with respect to the construction ofdynamic hierarchical data relationships below the file level.  Forexample, the members of a list may themselves be, in part, composed oflists, as in a list of families, where each family contains a list ofchildren as well as other information.Directories are dynamic data aggregates which may contain any type ofdata item.  Data items contained in a directory are called _nodes_.Associated with each node of a directory is a name by which that dataitem can be referenced relative to the directory. As with lists, itemsmay be dynamically added to and deleted from a directory.  The primarymotivation behind providing the directory capability is to allow theuser to group conceptually related data together.  Since directoriesWinter, Hill & Greiff                                          [Page 23]RFC 610           Further Datalanguage Design Concepts     December 1973need not contain only file type information, "auxiliary" data can bekept as part of the directory.  For example, "constant" information,like salary range tables for a corporation data base; or user definedoperations and data types (see below) can be maintained in a directoryalong with the data which may use this information.  Also directoriesmay themselves be part of a directory, allowing for a hierarchy of datagrouping.Directories will also be defined so that system controlled informationcan be maintained with some of the subordinate items (e.g. time ofcreation, time of update, privacy locks, etc.).  It may also be possibleto allow the data user to define and control his own information whichwould be maintained with the data. At the least, the design ofdatalanguage will allow for parametric control over the informationmanaged by the system.Directories are the most general and dynamic type of aggregate data.Both the name and description (see below) of directory nodes exist withthe nodes themselves, rather than as part of the description of thedirectory.  Also the level of nesting of a directory is dynamic sincedirectories can be dynamically added to directories.  Directories arethe only aggregate for which this is true.Datalanguage will also provide some specific and useful variations ofthe above data aggregates.  Structs will be available which allow foroptional components. In this case the existence of a component would bebased on the contents of other components.  It may also he possible toallow for the existence to be based on information found at a higherlevel of data hierarchy.  Similarly, components with _unresolved_ typewill be provided.  That is the component may be one of a fixed number oftypes.  The type of the component would be based on the contents ofother components of the struct.  It is also desirable to allow the typeor existence of a component to be based on information other than thecontents of other components.  For instance, the type of one componentmight be based on the type of another component.  In general, we wouldlike for datalanguage to allow for the attributes (see below) of oneitem to be a function of the attributes of other items.We would also like to provide mixed lists.  Mixed lists are lists whichcontain more than one type of member.  In this case the members wouldhave to be self defining.  That is, the type of all member would have tobe "alike" to the degree that information which defines the type of thatmember could be found.Similar to components whose type is unresolved are Arrays withunresolved length.  In this case, information defining the length of thearray must be carried with the array or perhaps with other components ofan aggregate which encompasses the array.Winter, Hill & Greiff                                          [Page 24]RFC 610           Further Datalanguage Design Concepts     December 1973In all of the above cases the type of an item is unresolved to somedegree and information which totally resolves the type is carried withthe item.  It is possible that in some or perhaps all of these cases thedatacomputer system could be responsible for the maintenance of thisinformation, making it invisible to the data user.3.3 General Relational CapabilitiesThe data aggregates described above allow for the modeling of variousrelationships among data.  All relationships which can be constructedare hierarchical.Two approaches can he taken to provide the capability of modeling non-hierarchical relationships.  New types of data aggregates can beintroduced which will broaden the range of data relationshipsexpressible in datalanguage.  Or, a basic data type of "pointer" can beintroduced which will serve as a primitive out of which relations can berepresented.  Pointer would be a data type which establishes some kindof correspondence from one item to another.  That is, it would be amethod of finding one item, given another . Providing the ability tohave items of type pointer does not necessitate the introduction of theconcept of address which we deem to be a dangerous step.  For example,an item defined to point to a record in a personnel file could contain asocial security number which is contained in each record of the file anduniquely identifies that record.  In general a pointer is an item ofinformation which can be used to uniquely identify another item.While the pointer approach provides the greater degree of flexibility,it does this at the price of relegating much of the work to the user aswell as severely limiting the amount of control the datacomputer systemhas over the data.  A hybrid solution is possible, where some newaggregate data types are provided as well as a restricted form ofpointer data type.  While the approach to be taken is still beingstudied, the datalanguage design will include some method of expressingnon-hierarchical data structures.3.4 Ordering of DataLists are generally viewed as ordered.  It is possible, however, that alist can be used to model a dynamic collection of similar items whichare not seen as ordered.  The unordered case is important, in that,given this information the datacomputer can be more efficient since newmembers can be added wherever it is convenient.There are a number of ways a list can be ordered.  For instance, theordering of a list can be based on the contents of its members.  In theWinter, Hill & Greiff                                          [Page 25]RFC 610           Further Datalanguage Design Concepts     December 1973simplest case this involves the contents of a basic data item.  Forexample, a list of structs containing information on employees of acompany may be ordered on the component which contains the employee'ssocial security number. More complex ordering criteria are possible.For example, the same list could be ordered alphabetically with respectto the employee's last name.  In this case the ordering relation is afunction of two items, the last and first names.  The user might alsowant to define his own ordering scheme, even for orderings based onbasic data items.  An ordering could be based on an employee's job titlewhich might even utilize auxiliary data (i.e. data external to thelist).  It is also possible to maintain a list in order of insertion.In the most general case, the user could dynamically define his orderingby specification of where an item is to be placed as part of hisinsertion requests.  In all of the above cases, data could be maintainedin ascending or descending order.In addition to maintenance of a list in some order, it is possible todefine one or more orderings "imposed" on a list.  These orderings mustbe based on the contents of a list's members.  This situation is similarto the concept of virtual data (see below) in that the list is notphysically maintained in a given order, but retrieved as if it were.Orderings of this type can be dynamically formed (see discussion of setunder virtual data).  Imposed orderings can be accomplished via themaintenance of auxiliary structures (see discussion under internalrepresentation) or by utilization of a sorting strategy on retrievals.Much work has been done with regard to effective implementation of themaintenance and imposition of orderings on lists.  This work isdescribed in working paper number 2.3.5 Data IntegrityAn important feature of any data management system is the ability tohave the system insure the integrity of the data.  Data needs to beprotected against erroneous manipulation by people and against systemfailure.Datalanguage will provide automatic validity checks.  Many flavors needto be provided so that appropriate trade-offs can be made between thedegree of insurance and the cost of validation.  The datalanguage userwill be able to request constant validation: where validity checks aremade whenever the data is updated; validation on access: where validitychecks are performed when data is referenced but before it is retrieved;regularly scheduled validation: where the data is checked at regularintervals; background validation: where the system will run checks inits spare time; and validation on demand.  Constant validation andvalidation on access are actually special cases of the more generalconcept of event triggered validation.  In this case the user specifiesWinter, Hill & Greiff                                          [Page 26]RFC 610           Further Datalanguage Design Concepts     December 1973an event which will cause data validation procedures to be invoked. Thisfeature can be used to accomplish such things as validation following a"batch" of updates.  Also, some mechanism for specifying combinations ofthese types would be useful.In order for some of the data validation techniques to be effective, itmay be necessary to keep some data validation "bookkeeping" informationwith the data.  For example, information which can be used to determinewhether an item has been checked since it was last updated might be usedto cause validation on access if there has not been a recent backgroundvalidation.  The datacomputer may provide for optional automaticmaintenance of such special kinds of information.In order for the datacomputer system to insure data validity, the usermust define what valid is.  Two types of validation can be requested. Inthe first case the user can tell the datacomputer that a specific dataitem may only assume one of a specific set of values.  For example, thecolor component of a struct may only assume the values 'red', 'green',or 'blue'.  The other case is where some relation must hold betweenmembers of an aggregate.  For example, if the sex component of a structis 'male' then the number of pregnancies component must be 0.Data validation is only half of the data integrity picture. Dataintegrity involves methods of restoring damaged data.  This requiresmaintenance of redundant information.  Features will be provided whichwill make the datacomputer system responsible for the maintenance ofredundant data and possibly even automatic restoration of damaged data.In section 2 we discussed possible uses of the datacomputer for filebackup.  All features which are provided for this purpose will also beavailable as methods of maintaining backup information for restorationof files residing at the datacomputer.3.6 PrivacyDatalanguage will have to provide extensive privacy and protectioncapabilities.  In its simplest form a privacy lock is provided at thefile level.  The lock is opened with a password key.  Associated withthis key is a set of privileges (reading, updating, etc.). Two degreesof generality are sought.  Privacy should be available at all levels ofdata.  Therefore, groups of related data, including groups of filescould be made private by creating private directories.  Also, specificfields of records could be made private by having private components ofa struct where other components of the struct are visible to a wider (ordifferent) class of users.  We would also like the user to be able todefine his own mechanism.  In this way, very personalized, complex, andhence secure mechanisms can be defined.  Also features such as 'everyonecan see his own salary' might be possible.Winter, Hill & Greiff                                          [Page 27]RFC 610           Further Datalanguage Design Concepts     December 19733.7 ConversionMany types of data are related in that some or all of the possiblevalues of one type of data have an "obvious" translation to the valuesof another.  For example, the character '6' has a natural translation tothe integer 6, or the six character string 'abc   ' (three trailingblanks) has a natural translation to the four character string 'abc '(one trailing blank). Datalanguage will provide conversion capabilitiesfor the standard, commonly called for, translations. These conversionscan be explicitly invoked by the user or implicitly invoked when data ofone type is needed for an operation but data of another type isprovided.  In the case of implicit invocation of conversion of data theuser will have control over whether conversion takes place for a givendata item. More generally we would like to provide a facility wherebythe user could specify conditions which determine when an item is to beconverted.  Also, the user should be able to define his own conversionoperations, either for a conversion between types which is not providedby the datacomputer system or to override the standard conversionoperation for some or all items of a given type.3.8 Virtual and Derived DataOften, information important to users of data is embedded in that datarather than explicitly maintained.  For example, the dollar value of anindividual's interest in a company in a file of stock holders.  Sincethe value of the company changes frequently, it is not feasible tomaintain this information with each record. It is useful to be able touse the file as if information of this type was part of each record.When referencing the dollar value field of a recor

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -