Managing an index of a table of a database

A method, a system, and a computer program product for managing a database are disclosed. Managing the database includes managing an index of a table of the database. Managing the index includes determining the table includes a first field having a first input value configured to identify a first dynamic data function utilized to determine a first output value for the first field. In embodiments, managing the index includes determining the first dynamic data function is deterministic, determining the first output value for the first field using the first dynamic data function, and storing the first output value for the first field. In embodiments, managing the index includes determining the first dynamic data function is nondeterministic, determining a first special value to represent the first output value for the first field, and storing the first special value for the first field.

TECHNICAL FIELD

This disclosure relates generally to database management systems and, more particularly, relates to dynamic data configured to be updated by a dynamic data function.

BACKGROUND

Databases are used to store information for numerous types of applications. Examples include various industrial, commercial, technical, scientific, and educational applications. Database management systems (DBMSs) are a typical mechanism for accessing data stored in a database. DBMSs are typically configured to separate the process of storing data from accessing, manipulating, or using data stored in a database. DBMSs often require tremendous resources to handle the heavy workloads placed on such systems. As such, it may be useful to increase the performance of database management systems with respect to dynamic data.

SUMMARY

Aspects of the disclosure include a method, a system, and a computer program product for managing a database. Managing the database may include managing a table of the database. The table may have a set of fields. The set of fields can include a first field in a first row of the table.

Managing the table includes selecting, in the first field, a first input value. The first input value can be configured to identify a first dynamic data function. The first dynamic data function may be utilized to determine a first output value for the first field. Managing the table includes determining the first output value for the first field. The first output value for the first field may be determined using the first dynamic data function. The first output value for the first field may be determined in response to a read request including the first field. Managing the table includes returning (for the read request) the first output value for the first field. The first output value for the first field may be returned in response to determining the first output value for the first field.

Managing the database may include managing an index of the table of the database. Managing the index includes determining the table includes a first field. The first field may have a first input value. The first input value can be configured to identify a first dynamic data function. The first dynamic data function can be utilized to determine a first output value for the first field.

Managing the index may include determining the first dynamic data function is deterministic. The first dynamic data function may be determined to be deterministic in response to a request to create the index including the first field. Managing the index may include determining the first output value for the first field. The first output value for the first field may be determined using the first dynamic data function. The first output value for the first field may be determined in response to the first dynamic data function being deterministic. Managing the index may include storing (in the index) the first output value for the first field. The first output value for the first field may be stored in response to determining the first output value for the first field.

Managing the index may include determining the first dynamic data function is nondeterministic. The first dynamic data function may be determined to be nondeterministic in response to a request to create the index including the first field. Managing the index may include determining a first special value. The first special value can represent the first output value for the first field. The first special value may be determined in response to the first dynamic data function being nondeterministic. Managing the index may include storing (in the index) the first special value for the first field. The first special value for the first field may be stored in response to determining the first special value for the first field.

DETAILED DESCRIPTION

Aspects of the disclosure define a field (of a column) in a row of a table of a database such that the field is a dynamic data value (not a fixed value). The dynamic data value can be a current value of a dynamic data function (DDF) when data is read. To illustrate, a DDF can be a special register, a function, a procedure, a structured query language (SQL) statement, a program call, or some SQL data manipulation operation. Aspects of the disclosure define the DDF for the field. The DDF in the field could be invoked to retrieve dynamic data (e.g., dynamic data related to a user instead of fixed data stored with the row—for instance, this may have a positive impact in situations where at least one feature of the user changes). As an example, aspects could have positive impacts when applications are rolled out to many virtual servers (e.g., thousands) in a cloud environment.

Aspects of the disclosure include invoking the DDF when a dynamic data value is in the particular field being read (e.g., a value tagged with a special character is in the particular field). According to embodiments of the disclosure, when such a row is read, the DDF is invoked to retrieve the real value for the field of the column when a special tagged dynamic data value is in the field. As such, a tagged dynamic data operation can be defined for any or all rows of any or all columns of a file, which can give flexibility for the data returned. Such aspects may be unlike a trigger or column mask (e.g., may not need to invoke a function or procedure for every column of every row every time the row is used—but instead invoke it when a special tagged dynamic data value is in that field thereby indicating the function or procedure needs to get the real value for tagged dynamic data for the field).

Aspects of the disclosure include establishing indexes that use the DDF value. A database management system (DBMS) manager can determine if the DDF is deterministic or nondeterministic. If the DDF in the field is deterministic, the DBMS manager could determine the value for the field and use that value in the index for the field. If the DDF in the field is nondeterministic, a special value could be placed in the index that could be used by the DBMS manager as the index is being checked to trigger the DBMS manager to retrieve the DDF value for the field from the DDF when checking the values in the index. Accordingly, a key of the index for a DDF field may be defined. Thus, the index for the field can contain traditional values (e.g., fixed values), the DDF values (e.g., as computed when deterministic), and the special value (when nondeterministic).

Aspects of the disclosure include a method, a system, and a computer program product for managing a database. Managing the database may include managing a table of the database. The table may have a set of fields. The set of fields can include a first field in a first row of the table.

Managing the table includes selecting, in the first field, a first input value. The first input value can be configured to identify a first dynamic data function. The first dynamic data function may be utilized to determine a first output value for the first field. Managing the table includes determining the first output value for the first field. The first output value for the first field may be determined using the first dynamic data function. The first output value for the first field may be determined in response to a read request including the first field. Managing the table includes returning (for the read request) the first output value for the first field. The first output value for the first field may be returned in response to determining the first output value for the first field.

Managing the database may include managing an index of the table of the database. Managing the index includes determining the table includes a first field. The first field may have a first input value. The first input value can be configured to identify a first dynamic data function. The first dynamic data function can be utilized to determine a first output value for the first field.

Managing the index may include determining the first dynamic data function is deterministic. The first dynamic data function may be determined to be deterministic in response to a request to create the index including the first field. Managing the index may include determining the first output value for the first field. The first output value for the first field may be determined using the first dynamic data function. The first output value for the first field may be determined in response to the first dynamic data function being deterministic. Managing the index may include storing (in the index) the first output value for the first field. The first output value for the first field may be stored in response to determining the first output value for the first field.

Managing the index may include determining the first dynamic data function is nondeterministic. The first dynamic data function may be determined to be nondeterministic in response to a request to create the index including the first field. Managing the index may include determining a first special value. The first special value can represent the first output value for the first field. The first special value may be determined in response to the first dynamic data function being nondeterministic. Managing the index may include storing (in the index) the first special value for the first field. The first special value for the first field may be stored in response to determining the first special value for the first field.

It is understood in advance that although this disclosure includes a detailed description regarding cloud computing, implementation of the teachings recited herein are not limited to a cloud computing environment. Rather, embodiments of the disclosure are capable of being implemented in conjunction with any other type of computing environment now known or later developed.

Characteristics are as follows:

Service Models are as follows:

Deployment Models are as follows:

Workloads layer66provides examples of functionality for which the cloud computing environment may be utilized. Examples of workloads and functions which may be provided from this layer include: mapping and navigation; software development and lifecycle management; virtual classroom education delivery; data analytics processing; transaction processing; and managing a database. Aspects of managing the database may include managing a table of the database or managing an index of the table of the database. For example, in a cloud environment/system, a first virtual machine may be saved into an image. From the image, n virtual machines can be created. At least a plurality (e.g., each one) of the n virtual machines will need some amount of configuration to make them unique virtual machines in the cloud environment/system. In an embodiment, a dynamic data function (DDF) may be stored in the database of an image which defines the machines name or IP address. After creating the n virtual machines, when the field is read on a selected virtual machine, the DDF may return the current system name or current Internet Protocol (IP) address of the selected virtual machine. Thus, each of the n virtual machines can retrieve their current system name or IP address from the database via such logic (and further configuration may be unnecessary). Aspects of managing the database may have positive impacts on performance or efficiency of the DBMS.

FIG. 2Aillustrates an example representation of a computer system100connected to one or more client computers160via a network155, according to some embodiments. For the purposes of this disclosure, computer system100may represent practically any type of computer, computer system, or other programmable electronic device, including but not limited to, a client computer, a server computer, a portable computer, a handheld computer, an embedded controller, etc. In some embodiments, computer system100may be implemented using one or more networked computers, e.g., in a cluster or other distributed computing system.

The computer system100may include, without limitation, one or more processors (CPUs)105, a network interface115, an interconnect120, a memory125, and a storage130. The computer system100may also include an I/O device interface110used to connect I/O devices112, e.g., keyboard, display, and mouse devices, to the computer system100.

Each processor105may retrieve and execute programming instructions stored in the memory125or storage130. Similarly, the processor105may store and retrieve application data residing in the memory125. The interconnect120may transmit programming instructions and application data between each processor105, I/O device interface110, network interface115, memory125, and storage130. The interconnect120may be one or more busses. The processor105may be a single central processing unit (CPU), multiple CPUs, or a single CPU having multiple processing cores in various embodiments. In one embodiment, a processor105may be a digital signal processor (DSP).

The memory125may be representative of a random access memory, e.g., Static Random Access Memory (SRAM), Dynamic Random Access Memory (DRAM), read-only memory, or flash memory. The storage130may be representative of a non-volatile memory, such as a hard disk drive, solid state device (SSD), or removable memory cards, optical storage, flash memory devices, network attached storage (NAS), or connections to storage area network (SAN) devices, or other devices that may store non-volatile data. The network interface115may be configured to transmit data via the communications network155.

The memory125may include a database management system (DBMS)135, a result set140, a query145, and applications150. Although these elements are illustrated as residing in the memory125, any of the elements, or combinations thereof, may reside in the storage130or partially in the memory125and partially in the storage130. Each of these elements will be described in greater detail in accordance withFIG. 2.

The network155may be any suitable network or combination of networks and may support any appropriate protocol suitable for communication of data and/or code to/from the server computer system100and the client computer system160. In some embodiments, the network155may support wireless communications. In other embodiments, the network155may support hardwired communications. The network155may be the Internet and may support Internet Protocol in some embodiments. In other embodiments, the network155may be implemented as a local area network (LAN) or a wide area network (WAN). The network155may also be implemented as a cellular data network. Although the network155is shown as a single network in the figures, one or more networks of the same or different types may be included.

The client computer system160may include some or all of the hardware and software elements of the computer system100previously described. As shown, there may be one or more client computers160connected to the computer system100via the network155. In some embodiments, one or more client computers160may send a query145by network155to computer system100and receive a result set140.

FIG. 2Billustrates an example database management system (DBMS)135. The DBMS135may include a parser210, an optimizer220, an execution engine230, and a database232. The parser210may receive a database query145from an application150. In some embodiments, the database query145may be in the form of a Structured Query Language (SQL) statement. The parser210may generate a parsed statement215. The parser210may send the parsed statement215to an optimizer220. The optimizer220may attempt to optimize the parsed statement. In some embodiments, optimizing may improve the performance of the database query145by, for example, reducing the amount of time it takes to provide a user with a response. The optimizer220may generate an execution plan246(access plan), which may be maintained in a query plan cache245, according to some embodiments. The query plan cache245may include one or more execution plans246, including the current execution plan as well as previously used execution plans. Once an execution plan246is generated, the execution plan246may be sent to the execution engine230. The execution engine230may execute the query145. Executing the query145may include finding and retrieving data in the database tables235that satisfies the criteria supplied in the query145. The execution engine230may store the data returned matching the query145in a result set140. The DBMS135may return the result set140to an application150, such as the application in which the database query145was generated, as a response to the database query145.

A database232may include one or more tables235and, in some embodiments, one or more indexes240. A database table235may organize data into rows and columns. Each row of a database table235may correspond to an individual entry, a tuple, or a record in the database232. A column may define what is stored in each entry, tuple, or record. In some embodiments, columns of a table235may also be referred to as fields or attributes. Each table235within the database232may have a unique name. Each column within a table235may also have a unique name. A row, tuple, or record, however, within a particular table235may not be unique, according to some embodiments. A database232may also include one or more indexes240. An index240may be a data structure that may inform the DBMS135of the location of a particular record within a table235if given a particular indexed column value. In some embodiments, the execution engine230may use the one or more indexes240to locate data within a table235. In other embodiments, the execution engine230may scan the tables235without using an index240.

FIG. 3is a flowchart illustrating a method300of managing a database according to embodiments. Managing the database may include managing a table of the database. The table may have a set of fields. The set of fields can include a first field in a first row of the table. In embodiments, the set of fields can include a second field in a second row of the table. The first and second fields can be in a first column of the table. The method300begins at block301.

At block310, a first input value may be selected in the first field. Selecting can include, for example, establishing or storing. The first input value can be configured to identify a first dynamic data function. The first dynamic data function may be utilized to determine a first output value for the first field. In embodiments, block310can include establishing, in the first field, a first stored value that indicates the first dynamic data function is utilized to ascertain the first output value for the first field.

In embodiments, the first input value includes a tag or marker to identify the first dynamic data function (e.g., using “%” as part of the first input value such as at the beginning and end of the entry). For example, a date column of a table may have an example field with a DDF for the current date where the contents of the example field are “% AND_CURRENT_DATE %”. In embodiments, a first dynamic data function definition defines the first dynamic data function. In embodiments, the first dynamic data function definition may be stored in a data structure. In embodiments, the first dynamic data function definition may be stored in a bit map. In embodiments, the first dynamic data function definition may be stored in a multi-dimensional array. In embodiments, the first dynamic data function can be a special register, a function, a procedure, a structured query language (SQL) statement, a program call, an internet protocol (IP) address, etc.

In embodiments, a second stored value may be selected in the second field. The second stored value may be different from the first input value. In embodiments, the second stored value is a second input value configured to identify a second dynamic data function (e.g., two distinct dynamic data functions in one column). In certain embodiments, the second stored value is configured to identify a feature other than a dynamic data function (i.e., the second stored value is not configured to identify a dynamic data function). In certain embodiments, the second stored value is fixed data (e.g., data entered/written that can be changed by a delete/update). In such embodiments, the first column may include both a dynamic data function (e.g., the first dynamic data function in the first field) and fixed data (e.g., the second stored value which is fixed data in the second field).

Aspects of the disclosure do not require a column definition to include a particular dynamic data function (e.g., to apply the first dynamic data function to the entire column). In embodiments, the column definition, for a column having the first field, includes absence of the first dynamic data function. Put differently, the first dynamic data function is not included in a column definition for the first column (which has the first field). As such, the first column in its entirety need not be coupled with the first dynamic data function (the first field, by itself, can be coupled with the first dynamic data function). Aspects of the disclosure may allow for the particular dynamic data function to be implemented for a specifically chosen field rather than an entire column.

At block320, the first output value for the first field may be determined. The first output value for the first field may be determined using the first dynamic data function. The first output value for the first field may be determined in response to a read request including the first field. In embodiments, determining can include at least one of computing or calculating (e.g., using an algorithm). In embodiments, the first and second fields of the first column are determined differently in response to the read request (e.g., two distinct dynamic data functions, one is dynamic data function and one is fixed data). For example, the first output value for the first field in the first column may be computed using the first dynamic data function to determine a changing IP address and the second output value for the second field in the first column may be a fixed value of 123456789.

At block330, the first output value for the first field may be returned (for the read request). The first output value for the first field may be returned in response to determining the first output value for the first field. In embodiments, returning can include publishing (e.g., on a server). In embodiments, returning can include transmitting (e.g., from a server to a client computer). In embodiments, returning can include providing (e.g., to a database). In embodiments, returning can include displaying (e.g., on a display system such as a monitor). For example, the changing IP address could be returned/published/transmitted/provided/displayed. Similarly, the second output value for the second field may be returned; in the example, the fixed value of 123456789 may be returned/published/transmitted/provided/displayed.

Method300may conclude at block399. Method300may have positive impacts on performance or efficiency of the DBMS. As a first illustrative case, when creating the table, the table could be defined in the following example definition:

When a field is inserted, a user could enter in a client address, a client transaction, and a function entered in the field for CLIENT_SERVER which would be the SERVER_NAME function. When that field is read, the database manager could invoke the SERVER_NAME function and retrieve the server address. A “%” tag could be used to mark the dynamic data function (DDF) operation definable by the user:Insert into file values(‘1435 Woodhucklebury Drive New York’ ‘buying 10 shares of stock’ ‘HTTP/:“∥% Current server %∥”’/@acmecompanynameforwidgets.com’)Insert into file values(‘1436 Woodhucklebury Drive New York’ ‘buying 100 shares of stock’ ‘HTTP/:RCHVIKES/@acmecompanynameforwidgets.com’)Insert into file values(‘1437 Woodhucklebury Drive New York’ ‘buying 1000 shares of stock’ ‘HTTP/:“% Select hostname from file1%∥”’/@acmecompanynameforwidgets.com’)

When the rows are read:Rcd 1: 1435 Woodhucklebury Drive New York’ ‘buying 10 shares of stock’ ‘HTTP/:System1/@acmecompanynameforwidgets.com’ (Note: current_server returned)Rcd 2: 1436 Woodhucklebury Drive New York “buying 100 shares of stock’ ‘HTTP/:RCHVIKES/@acmecompanynameforwidgets.com’Rcd 3: 1437 Woodhucklebury Drive New York “buying 1000 shares of stock’ ‘HTTP/:SERVER_FILESYSTEM@acmecompanynameforwidgets.com’ (Note: server name from file1)
Aspects of the disclosure, as shown in the first illustrative case, allow a DDF to be defined for a field in the table. The DDF may be invoked to retrieve the data related to the user and not the data stored with the field. The data can be tagged dynamic data of the DDF.

In a second illustrative case, similar to the first illustrative case, the table QSYS/TABLE1 can be copied to a different system. The values for the server may not be constant values, but the real server values; for example, the file in System1 and System2 as in the steps that follow which 1) Create the table on System1, 2) Insert rows on System1, and 3) Save the table from System and restore on System2:

A special/placeholder/indicator value may be stored in the field in the data space to indicate that a DDF is used to determine the value of the field. Since each field of every row across every column could contain a DDF, a bit map or a multi-dimensional array may be utilized to store the DDF definition(s) used for fields. In embodiments, it may be a few DDFs across the table. In other embodiments, every field may have a DDF. In embodiments, the returned value of the DDF is compatible with the data type for the field. In embodiments, the tag (e.g., “% %”) can be utilized to mark the DDF to be used. In embodiments, the tag may be definable/configurable by the user.

In embodiments, aspects of the disclosure may not invoke a function/procedure/etc. for every column of every row every time the field/row is used (e.g., unlike a trigger or column mask). In such embodiments, invocation may occur in response to a special tagged dynamic data value being in/inserted-into a field indicating the function or procedure may/should get the real value for tagged dynamic data for the column. For example, if a READ trigger is in place on a row, each time a row is read, the trigger function must be invoked. According to embodiments of the disclosure, each time a row is read, only if a special tagged dynamic data value is in the field (of the column) will the DDF need to be invoked to retrieve the real value for the column. Accordingly, a tagged dynamic data operation can be defined for any or all rows of any or all columns of a file (e.g., any or all fields), which can provide flexibility with respect to the data returned. In embodiments, the DDF enabled field can be a special type of field, versus pure CHAR; for example:

FIG. 4andFIG. 5are flowcharts illustrating methods of managing a database according to embodiments. The methods400and500may be methods for indexing. The methods for indexing may include determination as to whether a dynamic data function is deterministic or nondeterministic. Such determination may have positive impacts on performance or efficiency for indexing (e.g., in an embodiment having a value to return and not needing to calculate a return value for a DDF).

Deterministic functions/algorithms can include functions/algorithms which, given a particular input, will always produce the same output, with the underlying machine always passing through the same sequence of states. Nondeterministic functions/algorithms can exhibit different behaviors on different runs (as opposed to a deterministic algorithm). In embodiments, a particular field having the dynamic data function may indicate whether the dynamic data function is deterministic or nondeterministic (e.g., a checkbox system). In embodiments, partially deterministic may be an option. In embodiments, partially deterministic may be a subset of deterministic or nondeterministic based on a predetermined choice, a user preference, or an algorithmic analysis.

FIG. 4is a flowchart illustrating a method400of managing a database according to embodiments. The method400, which may be a method for indexing, begins at block401. Managing the database may include managing an index of a table (e.g., the table may be as inFIG. 3/method300) of the database.

At block410, it may be determined that the table includes a first field of a set of fields (the first field may be in a first row and a first column). The first field may have a first input value. The first input value can be configured to identify a first dynamic data function. The first dynamic data function can be utilized to determine a first output value for the first field. In embodiments, the first dynamic data function can include a specific system function (e.g., server IP address). In embodiments, a specific index may be created over a column for the specific system function (e.g., index of IP addresses).

At block420, it may be determined that the first dynamic data function is deterministic. Deterministic functions/algorithms can include functions/algorithms which, given a particular input, will always produce the same output, with the underlying machine always passing through the same sequence of states. The first dynamic data function may be determined to be deterministic in response to a request to create the index including the first field. In embodiments, determining the first dynamic data function is deterministic can include analyzing (e.g., parsing) a first dynamic data function definition that defines the first dynamic data function. For example, two structures may be utilized. A first structure may determine (e.g., yes/no) whether any field in a given row has tagged data. A second structure may define what the tags are. A bit map or a multi-dimensional array may be used. In embodiments, the first dynamic data function definition may be stored in the bit map. In embodiments, the first dynamic data function definition may be stored in the multi-dimensional array. Other implementations, including other combinations, are contemplated.

In embodiments, determining the first dynamic data function is deterministic may include determining the first dynamic data function is a query. As such, determining the first dynamic data function is deterministic may include determining a result of the query to be unchanged based on a data-change temporal-identifier. For example, the result of the query may have a first computed result that includes 1444 records and has a 02292012_00123105 identifier (e.g., representing Feb. 29, 2012 at 12:31:05 pm) when the query is run on Apr. 15, 2012 (tax day 2012). In addition, the result of the query may have a second computed result that includes 1444 records and has a 02292012_00123105 identifier (e.g., representing Feb. 29, 2012 at 12:31:05 pm) when the query is run on Apr. 15, 2013 (tax day 2013). The fact that the two results both contain 1444 records may be persuasive that the results are the same (e.g., the data needed/computed for the query has not changed such as no more sales of a particular product have been made) but the fact that the identifier is 02292012_00123105 may prove conclusively that the results are the same. Thus, the data-change temporal-identifier may be useful to determine the result of the query may be unchanged. As another example, the data-change temporal-identifier may be a timestamp of the last change (insert/update/delete) of a table. Thus, if a table has not changed since the output value (for the dynamic data function) was determined, any queries over it will return the same value. Therefore the dynamic data function can keep using the cached output value until the timestamp on the table changes.

In embodiments, determining the first dynamic data function is deterministic may include determining the first dynamic data function is a specific system function. As such, determining the first dynamic data function is deterministic may include determining a computed value of the specific system function to be unchanged based on a varied-parameter for the specific system function. For example, consider a case where the specific system function uses the law of exponents where a number to a zero power equals one (i.e., n0=1). In the case where this is the first dynamic data function, the first dynamic data function may be considered deterministic because the computed value of the specific system function (i.e., the computed value is 1) is unchanged based on the varied-parameter (i.e., n) for the specific system function) (n0). As another example, a determined/computed value for a set of digits of an IP address for a data center used for cloud computing may be consistent regardless of a varied-parameter such as a building number for a set of servers at a given data warehouse.

At block430, the first output value for the first field may be determined. The first output value for the first field may be determined using the first dynamic data function. The first output value for the first field may be determined in response to the first dynamic data function being deterministic.

At block440, the first output value for the first field may be stored (in the index). The first output value for the first field may be stored in response to determining the first output value for the first field. In embodiments, a sparse index may be created using the first output value for the first field. In embodiments, the index may be created on a first system. A request to create the index on a second system may occur, be instantiated, or be received. The index on the first system may be invalidated, archived, or deleted (in response to the request to create the index on the second system). Using the first dynamic data function, the index may be created on the second system. For example, the first output value for the first field may be stored (in the index) on the first system and subsequently the first output value for the first field may be stored (in the index) on the second system (and the index on the first system may be invalidated contemporaneously). Method400may conclude at block499. Method400may have positive impacts on performance or efficiency of the DBMS.

FIG. 5is a flowchart illustrating a method500of managing a database according to embodiments. The method500, which may be a method for indexing, begins at block501. Managing the database may include managing an index of a table (e.g., the table may be as inFIG. 3/method300) of the database.

At block510, it may be determined that the table includes a first field of a set of fields (the first field may be in a first row and a first column). The first field may have a first input value. The first input value can be configured to identify a first dynamic data function. The first dynamic data function can be utilized to determine a first output value for the first field. In embodiments, the first dynamic data function can include a specific system function (e.g., server IP address). In embodiments, a specific index may be created over a column for the specific system function (e.g., index of IP addresses).

At block520, it may be determined that the first dynamic data function is nondeterministic. Nondeterministic functions/algorithms can exhibit different behaviors on different runs (as opposed to a deterministic algorithm). For example, race conditions, random number generators, or polynomial/exponential times can be associated with nondeterministic functions/algorithms. The first dynamic data function may be determined to be nondeterministic in response to a request to create the index including the first field.

In embodiments, determining the first dynamic data function is nondeterministic can include analyzing (e.g., parsing) a first dynamic data function definition that defines the first dynamic data function. For example, two structures may be utilized. A first structure may determine (e.g., yes/no) whether any field in a given row has tagged data. A second structure may define what the tags are. A bit map or a multi-dimensional array may be used. In embodiments, the first dynamic data function definition may be stored in the bit map. In embodiments, the first dynamic data function definition may be stored in the multi-dimensional array. Other implementations, including other combinations, are contemplated.

In embodiments, determining the first dynamic data function is nondeterministic may include determining the first dynamic data function is a query. As such, determining the first dynamic data function is nondeterministic may include determining a result of the query to be changed based on a data-change temporal-identifier. For example, the result of the query may have a first computed result that includes 1444 records and has a 02292012_00123105 identifier (e.g., representing Feb. 29, 2012 at 12:31:05 pm) when the query is run on Apr. 15, 2012 (tax day 2012). In addition, the result of the query may have a second computed result that includes 1444 records and has a 03312013_00145645 identifier (e.g., representing Mar. 31, 2013 at 2:56:45 pm) when the query is run on Apr. 15, 2013 (tax day 2013). The fact that the two results both contain 1444 records may be persuasive that the results are the same (e.g., the data needed/computed for the query has not changed such as no more sales of a particular product have been made) but the fact that the identifier is 03312013_00145645 may indicate that the results may be different. Thus, the data-change temporal-identifier may be useful to determine the result of the query may be changed.

In embodiments, determining the first dynamic data function is nondeterministic may include determining the first dynamic data function is a specific system function. As such, determining the first dynamic data function is nondeterministic may include determining a computed value of the specific system function to be changed based on a varied-parameter for the specific system function. For example, consider a case where the specific system function uses the exponentiation where two to the power of a number produces a result (i.e., 2n=x). In the case where this is the first dynamic data function, the first dynamic data function may be considered nondeterministic because the computed value of the specific system function (i.e., the computed value is x) may change based on the varied-parameter (i.e., n) for the specific system function (2n). As another example, a determined/computed value for a set of digits of an IP address for a data center used for cloud computing may change based on a varied-parameter such as a data warehouse used for application processing given requests received by differing geolocations having identified load requirements (e.g., requests by one user in one location with one load requirement may be processed at different data centers under differing circumstances affecting the overall cloud computing environment such as other requests by other users).

At block530, a first special value may be determined. The first special value can represent the first output value for the first field (e.g., in embodiments when a nondeterministic dynamic data function is present the remainder of the index may be populated as usual). The first special value may be determined in response to the first dynamic data function being nondeterministic. The special value may indicate that a DDF is used to determine the value of the field. For example, the special value may be “Δ” in embodiments.

At block540, the first special value (e.g., “Δ”) for the first field may be stored (in the index). Such storing may occur in response to determining the first special value for the first field. In embodiments, the index may be created on a first system. A request to create the index on a second system may occur, be instantiated, or be received. The index on the first system may be invalidated, archived, or deleted (in response to the request to create the index on the second system). Using the first dynamic data function, the index may be created on the second system. For example, the first special value for the first field may be stored (in the index) on the first system and subsequently the first special value for the first field may be stored (in the index) on the second system. Method500may conclude at block599. Method500may have positive impacts on performance or efficiency of the DBMS.

Aspects of the present disclosure have been described with reference to flowchart illustrations, block diagrams, or both, of methods, apparatuses (systems), and computer program products according to embodiments of this disclosure. It will be understood that each block of the flowchart illustrations or block diagrams, and combinations of blocks in the flowchart illustrations or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions or acts specified in the flowchart or block diagram block or blocks.

Typically, cloud-computing resources are provided to a user on a pay-per-use basis, where users are charged only for the computing resources actually used (e.g., an amount of storage space used by a user or a number of virtualized systems instantiated by the user). A user can access any of the resources that reside in the cloud at any time, and from anywhere across the Internet. In context of the present disclosure, a user may access applications or related data available in the cloud. For example, the nodes used to create a stream computing application may be virtual machines hosted by a cloud service provider. Doing so allows a user to access this information from any computing system attached to a network connected to the cloud (e.g., the Internet).