Direct write back systems and methodologies

Provided are systems and methods that facilitate direct write back in a multi-dimensional database. The system includes a delta cache component that receives a user request to change an original cell value and determines a delta value based at least in part upon the changed cell value. Also included is a write back partition component that selectively updates a data cell based at least in part upon the delta value without updating corresponding data cell values. The system and methods allow attributes to be added to any dimension of a cube without affecting the write back data. Adding, modifying or removing a hierarchy has no affect on write back data nor does deleting a dimension that is not referenced by a write back.

BACKGROUND OF THE INVENTION

Data warehousing and online analytical processing (OLAP) are widespread technologies employed to support business decisions and data analysis. A data warehouse is a nonvolatile repository for an enormous volume of organizational or enterprise information (e.g., 100 MB-TB). These data warehouses are populated at regular intervals with data from one or more heterogeneous data sources, for example from multiple transactional systems. This aggregation of data provides a consolidated view of an organization from which valuable information can be derived. Though the sheer volume can be overwhelming, the organization of data can help ensure timely retrieval of useful information.

Data warehouse data is often stored in accordance with a multidimensional database model. Conceptually in multidimensional database systems, data is represented as cubes with a plurality of dimensions and measures, rather than relational tables with rows and columns. A cube includes groups of data such as three or more dimensions and one or more measures. Dimensions are a cube attribute that contains data of a similar type. Each dimension has a hierarchy of levels or categories of aggregated data. Accordingly, data can be viewed at different levels of detail. Measures represent real values, which are to be analyzed. The multidimensional model is optimized to deal with large amounts of data. In particular, it allows users to execute complex queries on a data cube. OLAP is almost synonymous with multidimensional databases.

OLAP is a key element in a data warehouse system. OLAP describes a category of technologies or tools utilized to retrieve data from a data warehouse. These tools can extract and present multidimensional data from different points of view to assist and support managers and other individuals examining and analyzing data. The multidimensional data model is advantageous with respect to OLAP as it allows users to easily formulate complex queries, and filter or slice data into meaningful subsets, among other things. There are two basic types of OLAP architectures MOLAP and ROLAP. MOLAP (Multidimensional OLAP) utilizes a true multidimensional database to store data. ROLAP (Relational OLAP) utilizes a relational database to store data but is mapped so that an OLAP tool sees the data as multidimensional. HOLAP (Hybrid OLAP) is an amalgam of both MOLAP and ROLAP.

Write back allows manipulation of data for “what-if” analysis and queries without altering the original data and without corrupting or modifying such data, allowing others to rely on the original data. When write back is applied to the lowest or leaf level of a cell, the write back information is aggregated to the other members of that level as well as a higher level, which contains aggregate data from the lower level cells. The aggregation of data can slow down system performance and, in some circumstances, aggregation is not desired. Therefore, what is needed is a system and method for facilitating write back without affecting other cells in the cube or destroying the integrity of the cell data while improving system performance.

SUMMARY OF THE INVENTION

The present invention extends MDX to update any cell in a cube and allows updating at a higher granularity. According to an aspect is a system that facilitates direct write back in a multi-dimensional database. The system includes a delta cache component that receives a user request to change an original cell value and determines a delta value based at least in part upon the changed cell value. The system further includes a write back partition component that selectively updates a data cell based at least in part upon the delta value without updating corresponding data cell values. The write back partition maintains original data cell information. The delta value is the difference between the changed cell value and the original cell value and can be maintained at a session level without updating cell values at a storage level. The corresponding data cell values are aggregate values located at higher dimensions in a cube hierarchy, at lower dimensions in a cube hierarchy, and/or at the same dimension level in a cube hierarchy. The system can further include a write back storage component that repopulates the cube with the delta value(s).

According to another aspect of the invention is a method for facilitating write back to a data cube. The method includes receiving a cell data value, determining a delta value, updating the cell data value independently from other cell data values, and outputting the result of the delta value to a user. Determining a delta value is associated with the difference between an original value and the received cell value. Updating the cell data value independently from other cell data values does not affect cells at a higher, lower and/or same level in a cube hierarchy. The result outputted to the user is in the form of a “what if” query. The method can also include associating related data with the delta value and storing the delta value and associated data in a session cache. The related data is one of a user identification, a time stamp, and a system identification. The method can further include deleting the delta value and returning the cell data value to an original value.

The following description and the annexed drawings set forth in detail certain illustrative aspects of the invention. These aspects are indicative, however, of but a few of the various ways in which the principles of the invention may be employed and the invention is intended to include all such aspects and their equivalents. Other advantages and novel features of the invention will become apparent from the following detailed description of the invention when considered in conjunction with the drawings.

DESCRIPTION OF THE INVENTION

Referring now toFIG. 1, illustrated is a high-level system100that facilitates direct write back according to an aspect of the subject invention. Write back is the ability to write information to a write-enabled cube and allows a user and/or entity to alter, change, delete, add, and/or manipulate data and/or measurement values without such alterations, changes, etc. repopulating the cube until the system is instructed to do so by the user and/or entity.

Cubes are multi-dimensional objects that contain values and/or measurements whose coordinates are specified by dimensions. The dimension is a cube's structural attribute that contains members of a similar type that relate to the user's perception of the cube data. A dimension typically has an associated hierarchy and is populated from a lowest or leaf level, which contains the greatest granularity or detail of data. Upper levels, or those levels above the leaf level, in the hierarchy are associated with lower granularity or less detail, and more aggregated data. For example, a simple hierarchy can have at its lowest or leaf level time measured in seconds with the hierarchy progressing upward with the next level associated with minutes, the next level hours, then days, weeks, years, etc. Each progressively higher dimension contains a lower level of detail than the preceding lower dimension level.

Write back allows the user and/or entity to perform a “what-if” analysis on the data and/or measurement values without altering the original data. This provides others, that have access to the cube data, the ability and assurance necessary to rely upon the original data and/or perform their own manipulations on the original data/measurements at a substantially similar time without regard to anyone else's “what-if” analysis being performed on similar data.

Direct write back is the ability to update at a higher granularity level (e.g. leaf level) rather than at the same granularity or scope as the fact table that is perceived by the user. For example, in a budgeting application, budgets are generally made at a high level, such as by organizational department and/or art unit. The budget can be based upon the overall monetary requirements of such department and/or unit. However, the data underlying the budgeting application is gathered from data sources at a much finer granularity level, such as costs associated with obtaining office supplies, materials, salaries, training, etc. This cost data would be entered at the leaf level and the system would aggregate that data up to the department level. If a user wants to manipulate data at the lower granularity level to determine a “what-if” situation a measurement lower on the hierarchy is made and direct write back allows a change at this level without affecting the other level members and without the system aggregating the data to a higher level or dimension in the hierarchy.

With continuing reference toFIG. 1, to facilitate direct write back the system100includes at least three layers: a session layer102, an intermediate layer104, and a storage layer106. The session layer102is the level where the write back process or manipulation of data occurs through an interface with a user and/or entity. Changes made on the system layer102affect only the particular user and are not propagated to a server or storage layer106, thus other users are not affected by the manipulated data and can rely upon the data. The intermediate layer104includes at least one cache that stores the data being manipulated allowing the server to respond to a query based on the write back data when the changes are distributed to a server cache. The storage layer106allows the data propagated to relational storage mode to be used to update a server cache.

In accordance with an aspect of the invention, it should be appreciated that system100can provide for direct write back with respect to an OLAP system or engine and more specifically with respect to a multidimensional OLAP engine, a multidimensional database management system, or portions thereof. In particular, system100can be incorporated into a multidimensional OLAP engine, for example, to facilitate direct write back and/or update of a database, data warehouse, or structures comprising a database or data warehouse (e.g., multidimensional objects, cubes . . . ).

FIG. 2illustrates in greater detail the session layer102and associated components of system100that facilitate direct write back according to an aspect of the invention. Session layer102can include a delta cache component202, a direct cache component204, and a direct cache log component206. The delta cache component202receives original cell data information from a regular cache associated with an intermediate layer. When the session layer102receives an input, in the form of a write back208, from a user and/or entity, that data is stored or maintained in the delta cache as deltas, or changes, from the original cell data and/or measurement value. For example, if the original cell measurement value is 1000 and a write back changes such value to 900, the delta value is −100. The formula is (delta value)=(new value)−(old value). The delta value is the value maintained in the delta cache202.

It is appreciated that the information in the delta cache component202is viewable and/or accessible only by the user and/or entity associated with such session layer102. Other users and/or entities that may be manipulating and/or using the original cell data and/or measurement value at a substantially similar time are not affected by the information in the delta cache component202. If the session layer102is terminated, the information in the delta cache component202is likewise terminated, deleted, or otherwise removed from the delta cache component202. The delta information maintained in the delta cache component202is communicated and expressed as deltas in a write back partition associated with a storage layer.

The direct cache component204includes a registry base, data cache(s) and a decoding table for cube dimension information. The direct cache component204can output associated information to a direct cache log component206that maintains a log of the manipulated data. The log can include the original cell measurement value, a time stamp that indicates when the data was altered, a user identification that indicating who altered the data, a system identification, etc.

The deltas can be deleted through the direct cache log component206restoring the data/measurements to original form. Alternatively and/or additionally, each delta in the sequence can be individually deleted to return to a previously changed value to manipulate the data further. In this way, the user can restore the data to its original value(s) and/or any preceding changed values without accessing the intermediate layer and/or storage layer components.

In accordance with another aspect of the invention, session level102does not have a direct cache log component206associated with the direct cache component204allowing the system to update storage immediately. It is also understood that the delta cache component202can have an associated log, allowing a lazy update of storage for both the delta cache202and the direct cache204.

Based upon the write back information208received by the system100, the delta is determined and a query210is output to the associated user and/or entity in the form of a “what-if” query. That is to say, the user and/or entity can change the values to determine the result of such values without actually changing the underlying data. This allows manipulation of the data without corrupting or affecting the original data and without affecting other users that may be using the information at a substantially similar time.

FIG. 3illustrates various components associated with the intermediate layer104of system100that facilitates direct write back in accordance with an aspect of the invention. The intermediate layer104interfaces with the session layer102and includes a regular cache component302, an intermediate direct cache component304and an intermediate direct cache log component306. The intermediate regular cache component302receives original data and/or measurements stored on the storage level and outputs the data to the delta cache component202of the session layer102allowing manipulation of the data on the session layer102. The intermediate direct cache component304receives data from the direct cache component204and from storage layer106component(s). The intermediate direct cache log component306receives data from the direct cache log component206associated with the session layer102and interfaces with the storage layer to facilitate processing of the data. The intermediate layer104can output query information308relating to a “what if” query without affecting data at the storage level.

Referring now toFIG. 4illustrated are components of a storage layer106that facilitates direct write back in accordance with an aspect of the invention. The storage layer106components interface with both the intermediate layer104components and the session layer102components to provide system direct write back capabilities. The storage layer106includes a write back storage component402, a write back partition component404, and a regular partition component406. The write back storage component402receives information from the intermediate direct cache log component306and copies the data to the direct cache component304where the information can be further manipulated.

Direct write back data is received from the delta cache202in the session level102and stored in a separate write back partition component (store)404. Each write back value is retained with the values included in the original write back. The delta information is written or stored in the write back partition component404to facilitate system update and/or to clean any affected data that might be contained in the delta cache202. The delta information can be converted from the write back partition component404to the regular partition component406if the original data is to be changed permanently. After a structural change, the direct write back data can be processed to repopulate the cube.

Write back occurs in the session layer102and depending on the allocation settings of the write back the session can calculate on the delta cache202(M2cache) or the direct cache204and304. When the information is to be updated, the delta cache202is moved to a server, locking the cache and storage. The data of the cache is written to a write back partition404where the caches are updated and/or cleaned with the affected data. At a substantially similar time, the direct cache data is moved to the server and locked.

Information processing can be performed wherein a cube is updated based upon cube specifications and where one or more cell updates can consist of manipulations at the tuple or row level. As optional other data may be used to update the cells and can be expressed in the form Use_Equal_Allocation|Use_Equal_Increment|Use_Weighted_Allocation [By <weight value_expression>]|Use_Weighted_Increment [By <weight value_expression>]]|Use_No_Allocation]. Where direct write back is indicated with the Use_No_Allocation keyword.

Changes that do not have an effect on direct write back include any process type of the cube (its measure groups or its dimensions); adding a new dimension; deleting a dimension (which is not referenced by a write back); adding, modifying or removing a hierarchy; and adding a new measure. In addition, attributes can be added to any dimension. By way of illustration and not limitation, a budgeting scenario will be discussed. A cube may include a hierarchy of sales data for each individual store broken down by year(s)/month(s)/week(s). The cube contains the individual stores that are located in the Seattle, Wash. area and the data rolls the Seattle stores up into the northwest region. When the budget for a particular store or for the entire Seattle region is desired, the user can query for this data and receives the data associated with the northwest region in the form of write back data. However, if the stores are reorganized and a finer granular detail than “northwest region” is desired, for example, the user now wants to budget by state rather than region, the write back record stays the same but now the system lists Seattle in Washington rather than in the northwest region. The direct write back system provides the proper rolled up numbers because the direct write back is not lost when some of the dimensions are restructured. The data including the stores in Washington is output to the user in the form of a “what-if” query. If the user wants to revert back to region information, the dimension can be modified in a similar manner.

Changes that cannot be made without removing the write back data include deleting an attribute or its attribute hierarchy where the attribute is included in a write back (either explicitly or by removing its parent dimension). Additional changes that cannot be made without removing the write back data include deleting a measure included in a write back, adding an attribute without an all level to a dimension included in a write back, and changing the dimension granularity when the dimension was included in a write back.

The subject invention (e.g., in connection with direct write back) can employ various artificial intelligence based schemes for carrying out various aspects thereof. For example, a process for determining whether data should be aggregated (e.g. rolled up) or de-aggregated (e.g. rolled down) in the cube hierarchy can be facilitated via an automatic classifier system and process. Such classifier system and process can be used in conjunction with any of the approaches described herein.

A classifier is a function that maps an input attribute vector, X=(x1, x2, x3, x4, . . . xn), to a confidence that the input belongs to a class, that is, f(x)=confidence(class). Such classification can employ a probabilistic and/or statistical-based analysis (e.g., factoring into the analysis utilities and costs) to prognose or infer an action that a user desires to be automatically performed. In the case of direct write back, for example, attributes can be appropriate aggregation functions such as mathematical functions and/or values, or other data-specific attributes derived from the cell value that was changed, and the classes are categories or areas of interest such as adding, deleting, and/or modifying dimensions and/or hierarchies.

As will be readily appreciated from the subject specification, the subject invention can employ classifiers that are explicitly trained (e.g., using generic training data) as well as implicitly trained (e.g., by observing user behavior, receiving extrinsic information). For example, SVMs are configured using a learning or training phase within a classifier constructor and feature selection module. Thus, the classifier(s) can be used to automatically perform a number of functions, including but not limited to determining when a event, such as update to a data cell, has occurred according to a predetermined criterion or criteria.

FIG. 5illustrates a block diagram structure for a partition that facilitates direct write back in accordance with an aspect of the invention. The upper partition level502includes data tables506,508, and510that include look up tables that provide information regarding granularity and various identification features relating to cell information. For example, data relating to table506include grain identification (GrainID), grain, and boundaries. Table508includes grain identification (GrainID), tuple identifications (TupID_Dim1, TupleID_Dim2, . . . TupleID_DimN), measure identification (MeasureId) and value. Table510contains dimension identification (DimID), tuple identification (TupleID), attribute identification (AttributeID), key identification (KeyId) and key. This information is output to the direct cache level504.

The direct cache level504includes a registry512based on granularity and provides aggregations with extensions in order to keep these boundaries for every attribute. The data from the registry is maintained in at least one cache514for every granularity and includes cached records and hash tables for record access. The data in this cache(s)514is discarded when system memory becomes low and allows the data to be reloaded on demand. The cache514keeps the data for a given granularity and compresses to zero any attribute that is not valid for the current granularity. The decoding table for Dimension or NTab516per dimension contains the not granular Taupe definitions and provides compression of the data. The decode table provides a fast decoding path to convert write back data from storage to cache format without requiring table look ups.

Upon server restart, the system opens the granularity and decoding table allowing the system to immediately respond to query results if those results do not affect the granularity requested. If the registry detects that data for a particular granularity is requested by the query, the system sends the query to storage and converts the result to direct cache and returns it as a query result. In this case, the query result will be presented as part of data caches514. The first look up is to the direct cache and if the cell is not found, then the regular cache is looked to for that cell.

FIG. 6illustrates a block diagram of a system600that includes a user interface component602, a granularity control component604, a write back control component606and a storage component608that interface to facilitate direct write back according to an aspect of the subject invention. The user interface component602provides selection of information via various devices such as a mouse, a roller ball, a keypad, a keyboard, a pen and/or voice activation, for example. Typically, a mechanism such as a push button or the enter key on the keyboard can be employed subsequent entering the information in order to initiate the search. However, it is to be appreciated that the invention is not so limited. For example, merely highlighting a check box can initiate information conveyance. In another example, a command line interface can be employed. For example, the command line interface can prompt (e.g., via a text message on a display and an audio tone) the user for information via providing a text message. The user can than provide suitable information, such as alpha-numeric input corresponding to an option provided in the interface prompt or an answer to a question posed in the prompt. It is to be appreciated that the command line interface can be employed in connection with a GUI and/or API. In addition, the command line interface can be employed in connection with hardware (e.g., video cards) and/or displays (e.g., black and white, and EGA) with limited graphic support, and/or low bandwidth communication channels.

The user interface component602interfaces with the granularity control component604that determines the level of granularity of data that is being manipulated and if direct write back is desired. For example, the granularity of the data can be at the lowest level of the cube, which has the highest amount of detail. The granularity of the data can be at an upper level of the cube, where each level up from the lowest level indicates a lower amount of detail in its associated data. The granularity control component further provides aggregation of the data at the higher levels from detailed data provided by the lowest cell level(s).

When data at a lower cell level is changed (e.g. through a what-if query), the write back control component606determines the delta associated with that change and the delta is stored in a delta cache. This allows the desired changes to be performed without affecting the original data of the cube. This also allows data at a higher aggregate level to be manipulated and changed without corrupting the integrity of the data below it. Storage component608is where the system originally pulls the data from, this original cell data is not changed during direct write back and is only changed and/or updated when instructed by a user to update the data. Thus, after a “what-if” query is performed, if the user desires that information to be the saved information, a request is sent and the new information is stored on the storage component608.

According to another aspect of the invention, data can also be manipulated at a lower level (higher granularity) without the data being aggregated up to a higher level. By way of illustration and not limitation, if a user is making a budget and enters $1,000.00 for each month at the leaf level, the system aggregates this amount as $12,000.00 for the year 2005. Conversely, if the user enters $12,000 for the year 2005, the system allocates that information down to January through December. This down allocation may be divided equally among the months of the year or based upon some other factor, such as criteria indicating that January receives a different value than December, etc. Alternatively and/or additionally, if the user enters $1000 for the year 2005, this value is stored at the year level and there is no allocation performed. The $1000 value is stored in the direct write back data in the keys of the year attributes. In this example, the $1000 is stored by the key to year 2005. This type of storing, without allocation, does not change the data in the lower levels of the hierarchy, thus increasing system performance.

In view of the exemplary systems shown and described above, methodologies, which may be implemented in accordance with one or more aspects of the present invention, will be better appreciated with reference to the diagram ofFIGS. 7 and 8. While, for purposes of simplicity of explanation, the methodology is shown and described as a series of function blocks, it is to be understood and appreciated that the invention is not limited by the order of the blocks, as some blocks may, in accordance with the invention, occur in different orders and/or concurrently with other blocks from that shown and described herein. Moreover, not all illustrated blocks may be required to implement a methodology in accordance with one or more aspects of the invention. It is to be appreciated that the various blocks may be implemented via software, hardware, a combination thereof or any other suitable means (e.g. device, system, process, component) for carrying out the functionality associated with the blocks. It is also to be appreciated that the blocks are merely to illustrate certain aspects of the invention in a simplified form and that these aspects may be illustrated via a lesser and/or greater number of blocks.

FIG. 7illustrates a block diagram of a methodology700for direct write back according to an aspect of the invention. The method starts at702where cell update information is received. This information can be input by a user and/or entity through, for example, a user interface. The cell update can be performed on any granularity level of a data cube according to an aspect of the invention.

At704, a delta value is generated for the updated cell independently of other cell data values regardless of the location of such other cell values in the hierarchy. The delta value is the sum of the new value minus the old value. The delta value is retained in a cache, for example, along with the original cell value and/or other data associated with the changed cell value (e.g., time stamp, user identification, . . . ). The delta value is viewable and/or accessible only by the user and/or entity associated with the updated cell request. Other users and/or entities that may be manipulating and/or utilizing the original cell data and/or measurement value at a substantially similar time are not affected by the information associated with the updated cell request for a particular user session. If the user session is terminated, the delta value information is likewise terminated, deleted or otherwise removed. The delta value can be maintained in a log containing the associated cell update request. The log can include the original cell measurement value and other associated values including a time stamp that indicates when the data was altered, a user identification indicating who altered the data, a system identification, etc.

At706, a query (e.g. a “what-if” query) is returned to the user utilizing the updated cell value. If the user does not want to implement that change, the deltas can be deleted through a direct cache log component that restores the data/measurements to original form. Alternatively and/or additionally, each delta in the sequence can be individually deleted to return to a previously changed value and/or to further manipulate the data. In this way, the user can restore the data to its original value(s) and/or any preceding changed values without accessing the intermediate layer and/or storage layer components.

With reference now toFIG. 8, illustrated is a block diagram of a methodology800for restructuring dimensions utilizing direct write back in accordance with an aspect of the invention. The system starts at802where cube hierarchy data is retrieved. This data includes data associated with the lowest or leaf level and corresponding higher levels that contain aggregated data based on the leaf level data. At804, a request to restructure the dimensions associated with a higher level is received. By way of illustration and not limitation, a budgeting scenario will be discussed. A cube may include a hierarchy of sales data for each individual store broken down by year(s)/month(s)/week(s). The cube contains the individual stores that are located in the Seattle, Wash. area and the data rolls the Seattle stores up into the northwest region. When the budget for a particular store or for the entire Seattle region is desired, the user can query for this data and receives the data associated with the northwest region in the form of write back data. However, if the stores are reorganized and a finer granular detail than “northwest region” is desired the dimension can be changed, such as to associate each store with the particular state in which it is located. The method allows this alteration and the write back record stays the same but now lists the Seattle stores in Washington state rather than in the northwest region. The direct write back system provides the proper rolled up numbers at806because the direct write back is not lost when some of the dimensions are restructured. The data including the Washington state reference is output to the user at808.

With reference now toFIG. 9, an exemplary environment910for implementing various aspects of the invention includes a computer912. The computer912includes a processing unit914, a system memory916, and a system bus918. The system bus918couples system components including, but not limited to, the system memory916to the processing unit914. The processing unit914can be any of various available processors. Dual microprocessors and other multiprocessor architectures also can be employed as the processing unit914.

The system memory916includes volatile memory920and nonvolatile memory922. The basic input/output system (BIOS), containing the basic routines to transfer information between elements within the computer912, such as during start-up, is stored in nonvolatile memory922. By way of illustration, and not limitation, nonvolatile memory922can include read only memory (ROM), programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable ROM (EEPROM), or flash memory. Volatile memory920includes random access memory (RAM), which acts as external cache memory. By way of illustration and not limitation, RAM is available in many forms such as synchronous RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), Synchlink DRAM (SLDRAM), and direct Rambus RAM (DRRAM).

Computer912also includes removable/nonremovable, volatile/nonvolatile computer storage media.FIG. 9illustrates, for example a disk storage924. Disk storage924includes, but is not limited to, devices like a magnetic disk drive, floppy disk drive, tape drive, Jaz drive, Zip drive, LS-100 drive, flash memory card, or memory stick. In addition, disk storage924can include storage media separately or in combination with other storage media including, but not limited to, an optical disk drive such as a compact disk ROM device (CD-ROM), CD recordable drive (CD-R Drive), CD rewritable drive (CD-RW Drive) or a digital versatile disk ROM drive (DVD-ROM). To facilitate connection of the disk storage devices924to the system bus918, a removable or non-removable interface is typically used such as interface926.

It is to be appreciated thatFIG. 9describes software that acts as an intermediary between users and the basic computer resources described in suitable operating environment910. Such software includes an operating system928. Operating system928, which can be stored on disk storage924, acts to control and allocate resources of the computer system912. System applications930take advantage of the management of resources by operating system928through program modules932and program data934stored either in system memory916or on disk storage924. It is to be appreciated that the invention can be implemented with various operating systems or combinations of operating systems.

A user enters commands or information into the computer912through input device(s)936. Input devices936include, but are not limited to, a pointing device such as a mouse, trackball, stylus, touch pad, keyboard, microphone, joystick, game pad, satellite dish, scanner, TV tuner card, digital camera, digital video camera, web camera, and the like. These and other input devices connect to the processing unit914through the system bus918via interface port(s)938. Interface port(s)938include, for example, a serial port, a parallel port, a game port, and a universal serial bus (USB). Output device(s)940use some of the same type of ports as input device(s)936. Thus, for example, a USB port may be used to provide input to computer912, and to output information from computer912to an output device940. Output adapter942is provided to illustrate that there are some output devices940like monitors, speakers, and printers among other output devices940that require special adapters. The output adapters942include, by way of illustration and not limitation, video and sound cards that provide a means of connection between the output device940and the system bus918. It should be noted that other devices and/or systems of devices provide both input and output capabilities such as remote computer(s)944.

Computer912can operate in a networked environment using logical connections to one or more remote computers, such as remote computer(s)944. The remote computer(s)944can be a personal computer, a server, a router, a network PC, a workstation, a microprocessor based appliance, a peer device or other common network node and the like, and typically includes many or all of the elements described relative to computer912. For purposes of brevity, only a memory storage device946is illustrated with remote computer(s)944. Remote computer(s)944is logically connected to computer912through a network interface948and then physically connected via communication connection950. Network interface948encompasses communication networks such as local-area networks (LAN) and wide-area networks (WAN). LAN technologies include Fiber Distributed Data Interface (FDDI), Copper Distributed Data Interface (CDDI), Ethernet/IEEE 802.3, Token Ring/IEEE 802.5 and the like. WAN technologies include, but are not limited to, point-to-point links, circuit switching networks like Integrated Services Digital Networks (ISDN) and variations thereon, packet switching networks, and Digital Subscriber Lines (DSL).

Communication connection(s)950refers to the hardware/software employed to connect the network interface948to the bus918. While communication connection950is shown for illustrative clarity inside computer912, it can also be external to computer912. The hardware/software necessary for connection to the network interface948includes, for exemplary purposes only, internal and external technologies such as, modems including regular telephone grade modems, cable modems and DSL modems, ISDN adapters, and Ethernet cards.

FIG. 10is a schematic block diagram of a sample-computing environment1000with which the invention can interact. The system1000includes one or more client(s)1010. The client(s)1010can be hardware and/or software (e.g., threads, processes, computing devices). The system1000also includes one or more server(s)1030. The server(s)1030can also be hardware and/or software (e.g., threads, processes, computing devices). The servers1030can house threads to perform transformations by employing the invention, for example. One possible communication between a client1010and a server1030may be in the form of a data packet adapted to be transmitted between two or more computer processes. The system1000includes a communication framework1050that can be employed to facilitate communications between the client(s)1010and the server(s)1030. The client(s)1010are operably connected to one or more client data store(s)1060that can be employed to store information local to the client(s)1010. Similarly, the server(s)1030are operably connected to one or more server data store(s)1040that can be employed to store information local to the servers1030.