1. Technical Field
This invention relates to storage of multiple instances of a resource. More specifically, the invention pertains to eliminating storage of redundant instances of data in a data structure.
2. Description of the Prior Art
A storage device is a device for recording data. Computer data storage utilizes one or more storage devices to record data. The storage devices may include disks, tapes, disk arrays, tape arrays, flash drives, etc., and any other mechanism capable of non-volatile data storage. It is recognized in the art that storage devices have a finite amount of space for recording data. Accordingly, management of the storage device is critical to ensuring the availability of space for the data intended to be recorded thereon.
It is recognized in the art that software products process data in the form of numbers and integers, and also resources, such as string variables. A string variable is recognized in the art as a series of characters. Some software products contain multiple instances of the same resource, including text or images display to the user during or following execution of the associated program. Each string instance occupies space on an associated storage device. Accordingly, multiple copies of the same resource provide an unnecessary redundancy of data in the limited space of the storage device.
In a similar manner, it is known in the art to translate character strings and other resources into different languages. This provides versatility of a program as it enables users in different countries to take advantage of the same program. Translation memory tools are frequently employed to reduce the cost associated with translating character strings. However, translation memory tools diverge when there are multiple instances of non-identical character strings. The discrepancies of the string usage are compounded with translation of the associated character strings.
Accordingly, there is a need for a tool that mitigates issues pertaining to multiple copies of resources. The tool addresses storage and access to resources and provides convergence of the issues that arise from inconsistency associated with resource usage.
This invention comprises a method, system, and article for storing and locating data pertaining to a resource in a hierarchy, such as that used in object oriented programming, having a multi-dimensional resource feedback algorithm.
In one aspect of the invention, a method is provided for locating a resource in a data structure hierarchy. Data is stored in a hierarchy, with the hierarchy being at least a two dimensional hierarchy that includes multiple levels with multiple locales in each class level. In one embodiment, such as an object oriented hierarchy, the level may take the form of a class level. Level information and an identifier are extracted for the resource. The hierarchy is then traversed by applying the extracted determined resource level information and identifier to the hierarchy to locate a corresponding data item for the resource in the hierarchy. A data match of the resource is returned from the hierarchy in response to a match of both the level and the identifier of the resource with a data item stored in the hierarchy.
In another aspect of the invention, a computer system is provided with a processor unit in communication with data storage and hierarchically stored data. The hierarchy is at least a two dimensional hierarchy that includes multiple levels with multiple locales in each class level. A resource manager is provided in communication with the hierarchy. The resource manager extracts identifier and level information for the resource. In addition, a data location manager is provided in communication with the resource manager. The data location manager traverses the hierarchy, through application of the extracted resource level information and identifier to the hierarchy, to locate a corresponding data item for the resource in the hierarchy. A data match of the resource is returned from the hierarchy in response to a match of both the level and the identifier of the resource with a data item stored in the hierarchy.
In yet another aspect of the invention, an article is provided with a computer readable carrier including computer program instructions configured to traverse the hierarchy. Instructions are provided to locate data in the hierarchy. The hierarchy is at least a two dimensional hierarchy that includes multiple levels with multiple locales in each level. Instructions are also provided to extract identifier and level information for the resource and to traverse the hierarchy. The traversal instructions apply the extracted resource level information and identifier to the hierarchy to locate a corresponding data item for the resource in the hierarchy. A data match of the resource is returned from the hierarchy responsive to a match of both the class level and the identifier of the resource with a data item stored in the hierarchy.
Other features and advantages of this invention will become apparent from the following detailed description of the presently preferred embodiment of the invention, taken in conjunction with the accompanying drawings.
The drawings referenced herein form a part of the specification. Features shown in the drawing are meant as illustrative of only some embodiments of the invention, and not of all embodiments of the invention unless otherwise explicitly indicated. Implications to the contrary are otherwise not to be made.
It will be readily understood that the components of the present invention, as generally described and illustrated in the Figures herein, may be arranged and designed in a wide variety of different configurations. Thus, the following detailed description of the embodiments of the apparatus, system, and method of the present invention, as presented in the Figures, is not intended to limit the scope of the invention, as claimed, but is merely representative of selected embodiments of the invention.
The functional units described in this specification have been labeled as managers, including a resource manager and a data location manager. A manager may be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices, or the like. The manager may also be implemented in software for execution by various types of processors. An identified manager of executable code may, for instance, comprise one or more physical or logical blocks of computer instructions which may, for instance, be organized as an object, procedure, function, or other construct. Nevertheless, the executables of an identified manager need not be physically located together, but may comprise disparate instructions stored in different locations which, when joined logically together, comprise the manager and achieve the stated purpose of the manager.
Indeed, a manager of executable code could be a single instruction, or many instructions, and may even be distributed over several different code segments, among different applications, and across several memory devices. Similarly, operational data may be identified and illustrated herein within the manager, and may be embodied in any suitable form and organized within any suitable type of data structure. The operational data may be collected as a single data set, or may be distributed over different locations including over different storage devices, and may exist, at least partially, as electronic signals on a system or network.
Reference throughout this specification to “a select embodiment,” “one embodiment,” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, appearances of the phrases “a select embodiment,” “in one embodiment,” or “in an embodiment” in various places throughout this specification are not necessarily referring to the same embodiment.
Furthermore, the described features, structures, or characteristics may be combined in any suitable manner in one or more embodiments. In the following description, numerous specific details are provided, such as examples of traversing a data structure by applying extracted resource information to provide a thorough understanding of embodiments of the invention. One skilled in the relevant art will recognize, however, that the invention can be practiced without one or more of the specific details, or with other methods, components, materials, etc. In other instances, well-known structures, materials, or operations are not shown or described in detail to avoid obscuring aspects of the invention.
The illustrated embodiments of the invention will be best understood by reference to the drawings, wherein like parts are designated by like numerals throughout. The following description is intended only by way of example, and simply illustrates certain selected embodiments of devices, systems, and processes that are consistent with the invention as claimed herein.
The method, apparatus, and article of manufacture of the present invention provides valuable advantage over the prior art. According to the present invention, there is no redundancy of data items stored in the data structure. This provides uniformity associated with the data items sought from the data structure. Similarly, a set of rules are employed to logically traverse the data structure. As a resource is encountered, the level and associated identifier are extracted from the resource. The extracted data is then employed with the rules to traverse the data structure for an associated data item. In one embodiment, the local information is extracted from the resource and employed together with the extracted class level and/or identifier to traverse the data structure.
In the following description of the embodiments, reference is made to the accompanying drawings that form a part hereof, and which shows by way of illustration the specific embodiment in which the invention may be practiced. As one skilled in the art would recognize, a hierarchy is an embodiment of the computer science concept of a tree where classes are organized into hierarchies or trees. Conceptually, the classes can be thought of as nodes in the tree, and a “class level” is identified as a node height within a tree. It is to be understood that other embodiments may be utilized because structural changes may be made without departing form the scope of the present invention.
A data structure hierarchy is employed to organize a collection of data.
In one embodiment, the data in the hierarchy may be in the form of character strings. For purposes of description, the data examples shown herein will be described pertaining to character strings of two languages, English and French, with the French having some Belgian French derivatives. However, the invention should not be limited to translation between two languages or the languages described herein. In one embodiment, alternative languages may be substituted for the languages described herein, as well as an expansion of the hierarchy to accommodate additional languages.
In a similar manner, as shown in
As shown in
If following step (322) it is determined that the encountered resource is not present in the hierarchy level N, then the variable P is reset (324) and the variable N associated with the class level is incremented (326). The increment of the variable N enables the search to proceed to the next class level of the data structure hierarchy and each of the locales therein, as represented by the resetting of the variable P. Thereafter, it is determined if there is a next class level in the hierarchy (328). In other words, has the traversal concluded each of the hierarchical class levels of the data structure. A positive response to the determination at step (328) is followed by a conclusion of the data structure search without a return of a data match for the encountered resource (330). Conversely, a positive response to the determination at step (328) is followed by a return to step (314). Accordingly, as demonstrated herein, each class level within the hierarchy is searched for a data match of an encountered resource.
As demonstrated in
In one embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc. The invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
In order to efficiently traverse the data structure to locate a resource therein, a set of managers are provided in communication with the data storage. A resource manager (430) and a data location manager (432) are both shown residing in memory (406) of the server (402). The resource manager (430) is employed to extract identifier and class level information for the encountered resource. The data location manager (432) is employed to traverse the data structure to locate a corresponding data item for the encountered resource. In one embodiment, the data location manager employs both the extracted class level information and the extracted identifier for locating the data item.
Although the managers (430) and (432) are shown residing in memory (406), the invention should not be limited to this embodiment. In one embodiment, the managers (430) and (432) may individually or in combination reside as hardware tools external to memory (406), or they may be implemented as a combination of hardware and software tools. Accordingly, the managers (430) and (432) may be implemented as software or hardware tools to facilitate extraction of resource identification information and traversal of the data structure.
Embodiments within the scope of the present invention also include articles of manufacture comprising program storage means having encoded therein program code. Such program storage means can be any available media which can be accessed by a general purpose or special purpose computer. By way of example, and not limitation, such program storage means can include RAM, ROM, EEPROM, CD-ROM, or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired program code means and which can be accessed by a general purpose or special purpose computer. Combinations of the above should also be included in the scope of the program storage means.
The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, random access memory (RAM), read-only memory (ROM), a rigid magnetic disk, and an optical disk. Current examples of optical disks include compact disks, read only (CD-ROM), compact disk read/write (CD-R/W) and DVD.
A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.
Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers. Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks.
The software implementation can take the form of a computer program product accessible from a computer-useable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system.
Data is organized in a hierarchy together with a set of resource fallback rules that limits the quantity of data items retained in the data structure. A single version of each resource is retained in the data structure. When applying string translations to the resources in the hierarchy, both product size and translation costs are reduced. In addition, resources are synchronized by the uniformity of providing a single translation for the resource. There is no requirement to duplicate data items. This eliminates discrepancies associated with multiple conflicting or confusing data items.
It will be appreciated that, although specific embodiments of the invention have been described herein for purposes of illustration, various modifications may be made without departing from the spirit and scope of the invention. In particular, the aspect of traversing the data structure as demonstrated in