Legal claims defining the scope of protection, as filed with the USPTO.
1. A computer-implemented method comprising steps of: a replay database server receiving commands that were recorded by an initial database server in response to said initial database server receiving said commands; and said replay database server executing said commands relative to a replay database in response to receiving said commands; wherein said initial database server executed said commands relative to an initial database that is separate from said replay database; wherein each command of said commands is a separate workload unit in a set of workload units; constructing a dependency graph of nodes in which each node represents a workload unit in said set of workload units; wherein each node in said dependency graph is associated with a separate system change number; wherein, within said dependency graph, each particular node's system change number is not before a system change number of any other node from which that particular node depends; executing, relative to the replay database, a commit operation that corresponds to a commit node associated with a pre system change number; at least partially in response to executing the commit operation, (a) setting a replay database system change number to post a system change number associated with the commit node, (b) using the dependency graph to determine a subset of two or more nodes that depend from a node that represents the commit operation, wherein each of the two or more nodes are associated with different system change numbers that are after the pre system change number but not after the replay database system change number, and (c) executing, relative to the replay database, all unexecuted workload units of all nodes in the subset; wherein the steps are performed by one or more computing devices.
2. The method of claim 1 , further comprising steps of: said replay database server obtaining one or more identifiers that (a) are associated with one or more values that said initial database server returned as a result of executing one or more queries that are specified by said commands and (b) were recorded by said initial database server; establishing a database session with said replay database server using one or more database session attributes that said initial database server recorded; said replay database server obtaining one or more method names of one or more methods that (a) were invoked in response to one or more remote procedure calls (RPCs) and (b) were recorded by said initial database server; said replay database server obtaining one or more parameters that (a) were passed to said one or more methods in said one or more RPCs and (b) were recorded by said initial database server; said replay database server determining whether a particular command of said commands specifies an invocation of a first function that causes a database server to generate a value; and in response to said replay database server determining that said particular command specifies said invocation of said first function, said replay database server modifying said particular command to specify a value that (a) was returned in response to an invocation of said first function by said initial database server during said initial database server's processing of said particular command and (b) was recorded by said initial database server.
3. The method of claim 1 , wherein data stored in said replay database is logically identical to data stored in said initial database.
4. The method of claim 2 , further comprising: said replay database server determining whether said particular command specifies an invocation of a second function that returns a time of day; and in response to said replay database server determining that said particular command specifies said invocation of said second function, said replay database server modifying said particular command to specify a time of day that (a) was returned in response to an invocation of said second function by said initial database server during said initial database server's processing of said particular command and (b) was recorded by said initial database server.
5. The method of claim 1 , further comprising sending said commands to said replay database server by: (1) sending a first command to said replay database server at a first time, and (2) sending a second command to said replay database server at a second time that is a specified amount of time after said first time.
6. The method of claim 5 , wherein said specified amount of time is equal to an amount of time that passed between (a) a time that said initial database server received said first command and (b) a time that said initial database server received said second command.
7. The method of claim 1 , wherein, in said dependency graph, a link from a first node to a second node indicates that a workload unit of the first node must be executed relative to the replay database prior to execution of a workload unit of the second node relative to the replay database.
8. The method of claim 1 , wherein each node in said dependency graph is associated with a separate system change number that reflects a state in which the initial database was at a time that node's workload unit was received by the initial database server.
9. The method of claim 1 , wherein the post system change number reflects a state in which the initial database was at a time that the commit node's workload unit finished executing relative to the initial database rather than a state in which the initial database was at a time that the commit node's workload unit was received by the initial database server.
10. The method of claim 1 , wherein data stored in said replay database is physically stored according to a first physical storage layout; wherein data stored in said initial database is physically stored according to a second physical storage layout; and wherein said first physical storage layout differs from said second physical storage layout.
11. The method of claim 1 , wherein said replay database server executes said commands relative to said replay database during a first time interval; wherein said initial database server executed said commands relative to said initial database during a second time interval; and wherein no part of said first time interval is concurrent with any part of said second time interval.
12. The method of claim 1 , wherein said commands include one or more structured query language (SQL) statements.
13. The method of claim 1 , wherein a first session, in which a first transaction that modified a particular data item executed, was in effect during a time that at least partially overlaps with a time in which a second session, in which the first transaction did not execute, was in effect.
14. The method of claim 13 , wherein executing said commands relative to said replay database comprises: (a) determining that the first transaction modified the particular data item in said initial database before the particular data item was further modified in the second session; and (b) in response to determining that said first transaction modified said particular data item before said particular data item was further modified in said second session, executing said commands relative to said replay database in an order that ensures that said first transaction modifies said particular data item in said replay database before said particular data item is modified in said second session in said replay database.
15. A volatile or non-volatile computer-readable non-transitory medium carrying one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform steps comprising: receiving, at a replay database server, commands that were recorded by an initial database server in response to said initial database server receiving said commands; and executing said commands at said replay database server relative to a replay database in response to receiving said commands; wherein said initial database server executed said commands relative to an initial database that is separate from said replay database; wherein each command of said commands is a separate workload unit in a set of workload units; constructing a dependency graph of nodes in which each node represents a workload unit in said set of workload units; wherein each node in said dependency graph is associated with a separate system change number; wherein, within said dependency graph, each particular node's system change number is not before a system change number of any other node from which that particular node depends; executing, relative to the replay database, a commit operation that corresponds to a commit node associated with a pre system change number; at least partially in response to executing the commit operation, (a) setting a replay database system change number to post a system change number associated with the commit node, (b) using the dependency graph to determine a subset of two or more nodes that depend from a node that represents the commit operation, wherein each of the two or more nodes are associated with system change numbers that are after the pre system change number but not after the replay database system change number, and (c) executing, relative to the replay database, all unexecuted workload units of all nodes in the subset.
16. The volatile or non-volatile computer-readable non-transitory medium of claim 15 , wherein data stored in said replay database is logically identical to data stored in said initial database.
17. The volatile or non-volatile computer-readable non-transitory medium of claim 15 , wherein said steps further comprise: said replay database server obtaining one or more identifiers that (a) are associated with one or more values that said initial database server returned as a result of executing one or more queries that are specified by said commands and (b) were recorded by said initial database server; establishing a database session with said replay database server using one or more database session attributes that said initial database server recorded; said replay database server obtaining one or more method names of one or more methods that (a) were invoked in response to one or more remote procedure calls (RPCs) and (b) were recorded by said initial database server; said replay database server obtaining one or more parameters that (a) were passed to said one or more methods in said one or more RPCs and (b) were recorded by said initial database server; said replay database server determining whether a particular command of said commands specifies an invocation of a first function that causes a database server to generate a value; and in response to said replay database server determining that said particular command specifies said invocation of said first function, said replay database server modifying said particular command to specify a value that (a) was returned in response to an invocation of said first function by said initial database server during said initial database server's processing of said particular command and (b) was recorded by said initial database server.
18. The volatile or non-volatile computer-readable non-transitory medium of claim 15 , wherein the one or more sequences of instructions, when executed by the one or more processors, further cause sending said commands by: (1) sending a first command to said replay database server at a first time, and (2) sending a second command to said replay database server at a second time that is a specified amount of time after said first time.
19. The volatile or non-volatile computer-readable non-transitory medium of claim 18 , wherein said specified amount of time is equal to an amount of time that passed between (a) a time that said initial database server received said first command and (b) a time that said initial database server received said second command.
20. The volatile or non-volatile computer-readable non-transitory medium of claim 15 , wherein, in said dependency graph, a link from a first node to a second node indicates that a workload unit of the first node must be executed relative to the replay database prior to execution of a workload unit of the second node relative to the replay database.
21. The volatile or non-volatile computer-readable non-transitory medium of claim 15 , wherein each node in said dependency graph is associated with a separate system change number that reflects a state in which the initial database was at a time that node's workload unit was received by the initial database server.
22. The volatile or non-volatile computer-readable non-transitory medium of claim 15 , wherein the post system change number reflects a state in which the initial database was at a time that the commit node's workload unit finished executing relative to the initial database rather than a state in which the initial database was at a time that the commit node's workload unit was received by the initial database server.
23. The volatile or non-volatile computer-readable non-transitory medium of claim 15 , wherein data stored in said replay database is physically stored according to a first physical storage layout; wherein data stored in said initial database is physically stored according to a second physical storage layout; and wherein said first physical storage layout differs from said second physical storage layout.
24. The volatile or non-volatile computer-readable non-transitory medium of claim 15 , wherein the one or more sequences of instructions, when executed by the one or more processors, causes said replay database server to execute said commands relative to said replay database during a first time interval; wherein said initial database server executed said commands relative to said initial database during a second time interval; and wherein no part of said first time interval is concurrent with any part of said second time interval.
25. The volatile or non-volatile computer-readable non-transitory medium of claim 15 , wherein said commands include one or more structured query language (SQL) statements.
26. The volatile or non-volatile computer-readable non-transitory medium of claim 15 , wherein a first session, in which a first transaction that modified a particular data item executed, was in effect during a time that at least partially overlaps with a time in which a second session, in which the first transaction did not execute, was in effect.
27. The volatile or non-volatile computer-readable non-transitory medium of claim 26 , wherein executing said commands relative to said replay database comprises: (a) determining that the first transaction modified the particular data item in said initial database before the particular data item was further modified in the second session; and (b) in response to determining that said first transaction modified said particular data item before said particular data item was further modified in said second session, executing said commands relative to said replay database in an order that ensures that said first transaction modifies said particular data item in said replay database before said particular data item is modified in said second session in said replay database.
Unknown
July 19, 2011
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.