Methods and apparatus to implement parallel transactions
First Claim
1. A method comprising:
- at one or more computers,maintaining a set of shared data utilized by multiple processes executing in parallel,providing a globally accessible version information variable that changes over time,for each of at least two variables stored in the set of shared data, maintaining a corresponding location to store a respective instantaneous data value associated with the globally accessible version information variable,receiving a first query for a current data value associated with the globally accessible version information variable around a respective start time of a transaction executed by a given process of the multiple processes,providing the current data value associated with the globally accessible version information variable to the given process,after receiving the first query and after the start time of the transaction, receiving a second query associated with the transaction for respective version information associated with a corresponding variable read from the shared data and used to produce a respective transaction outcome associated with the transaction, the respective version information set to a respective value of the globally accessible version information variable at a time when the corresponding variable was last written to by one of the multiple processes, andforwarding the respective version information associated with the corresponding variable enabling the given process to abort the transaction if the respective version information indicates that the corresponding variable in the set of shared data was modified by another one of the multiple processes after the respective start time of the transaction.
2 Assignments
0 Petitions
Accused Products
Abstract
The present disclosure describes a unique way for each of multiple processes to operate in parallel using (e.g., reading, modifying, and writing to) the same shared data without causing corruption to the shared data. For example, each of multiple processes utilizes current and past data values associated with a global counter or clock for purposes of determining whether any shared variables used to produce a respective transaction outcome were modified (by another process) when executing a respective transaction. If a respective process detects that shared data used by respective process was modified during a transaction, the process can abort and retry the transaction rather than cause data corruption by storing locally maintained results associated with the transaction to a globally shared data space.
-
Citations
18 Claims
-
1. A method comprising:
at one or more computers, maintaining a set of shared data utilized by multiple processes executing in parallel, providing a globally accessible version information variable that changes over time, for each of at least two variables stored in the set of shared data, maintaining a corresponding location to store a respective instantaneous data value associated with the globally accessible version information variable, receiving a first query for a current data value associated with the globally accessible version information variable around a respective start time of a transaction executed by a given process of the multiple processes, providing the current data value associated with the globally accessible version information variable to the given process, after receiving the first query and after the start time of the transaction, receiving a second query associated with the transaction for respective version information associated with a corresponding variable read from the shared data and used to produce a respective transaction outcome associated with the transaction, the respective version information set to a respective value of the globally accessible version information variable at a time when the corresponding variable was last written to by one of the multiple processes, and forwarding the respective version information associated with the corresponding variable enabling the given process to abort the transaction if the respective version information indicates that the corresponding variable in the set of shared data was modified by another one of the multiple processes after the respective start time of the transaction. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 17)
-
12. A computer environment including a global space accessible by multiple processes, the computer environment comprising:
one or more computers configured to maintain a set of shared data utilized by multiple processes executing in parallel, maintain a globally accessible version information variable that changes over time, for each of at least two variables stored in the set of shared data, maintain a corresponding location to store a respective instantaneous data value associated with the globally accessible version information variable, receive a first query for a current data value associated with the globally accessible version information variable around a respective start time of a transaction executed by a given process of the multiple processes, provide the current data value associated with the globally accessible version information variable to the given process, after receiving the first query and after the start time of the transaction, receive a second query associated with the transaction for respective version information associated with a corresponding variable read from the shared data and used to produce a respective transaction outcome associated with the transaction, the respective version information set to a respective value of the globally accessible version information variable at a time when the corresponding variable was last written to by one of the multiple processes, and forward the respective version information associated with the corresponding variable enabling the given process to abort the transaction if the respective version information indicates that the corresponding variable in the set of shared data was modified by another one of the multiple processes after the respective start time of the transaction. - View Dependent Claims (13, 14, 15)
-
16. A computer system comprising:
-
a processor; a memory unit that stores instructions associated with an application executed by the processor; and an interconnect coupling the processor and the memory unit, enabling the computer system to execute the application and perform operations of; maintaining a set of shared data utilized by multiple processes executing in parallel, providing a globally accessible version information variable that changes over time, for each of at least two variables stored in the set of shared data, maintaining a corresponding location to store a respective instantaneous data value associated with the globally accessible version information variable, receiving a first query for a current data value associated with the globally accessible version information variable around a respective start time of a transaction executed by a given process of the multiple processes, providing the current data value associated with the globally accessible version information variable to the given process, after receiving the first query and after the start time of the transaction, receiving a second query associated with the transaction for respective version information associated with a corresponding variable read from the shared data and used to produce a respective transaction outcome associated with the transaction, the respective version information set to a respective value of the globally accessible version information variable at a time when the corresponding variable was last written to by one of the multiple processes, and forwarding the respective version information associated with the corresponding variable enabling the given process to abort the transaction if the respective version information indicates that the corresponding variable in the set of shared data was modified by another one of the multiple processes after the respective start time of the transaction. - View Dependent Claims (18)
-
Specification