Multi-blob consistency for atomic data transactions
First Claim
1. One or more computer readable non-transitory memory storing computer-executable instructions that, when executed, cause one or more processors to perform acts, comprising:
- determining one or more data blobs in at least one data store to be modified based on an application request, wherein individual ones of the data blobs to be modified have associated therewith a unique data blob identifier;
reading a master blob to (1) locate a stored version number of an individual data blob to be modified, and (2) obtain a version number of the master blob;
for the individual data blob to be modified, writing to the data store a new data blob with a new version number and the unique data blob identifier of the respective data blob to be modified;
reading the master blob to re-obtain the version number of the master blob;
determining whether the obtained version number of the master blob matches the re-obtained version number of the master blob;
in response to determining that the obtained version number of the master blob matches the re-obtained version number of the master blob;
replacing the stored version number of the individual data blob to be modified in the master blob with a new version number of a corresponding new data blob; and
deleting the individual data blob to be modified using a corresponding stored version number; and
in response to determining that the obtained version number of the master blob is different than the re-obtained version number of the master blob, deleting the one or more new data blobs.
1 Assignment
0 Petitions
Accused Products
Abstract
A multi-blob consistency component of a tiered middleware framework ensures data blobs are transacted in an atomic manner. The component determines a data blob of a data store to be modified based on an application request. The component then reads a master blob to locate a stored version number of the data blob to be modified and a version number of the master blob. A new data blob with a new version number that replaces the data blob to be modified is written to the data store. The component then reads the master blob again to re-obtain the version number of the master blob. Thus, when the obtained and re-obtained version numbers match, the component replaces the stored version number of the data blob with the new version number of the new data blob. Further, the component deletes the data blob to be modified using the stored version number.
44 Citations
33 Claims
-
1. One or more computer readable non-transitory memory storing computer-executable instructions that, when executed, cause one or more processors to perform acts, comprising:
-
determining one or more data blobs in at least one data store to be modified based on an application request, wherein individual ones of the data blobs to be modified have associated therewith a unique data blob identifier; reading a master blob to (1) locate a stored version number of an individual data blob to be modified, and (2) obtain a version number of the master blob; for the individual data blob to be modified, writing to the data store a new data blob with a new version number and the unique data blob identifier of the respective data blob to be modified; reading the master blob to re-obtain the version number of the master blob; determining whether the obtained version number of the master blob matches the re-obtained version number of the master blob; in response to determining that the obtained version number of the master blob matches the re-obtained version number of the master blob; replacing the stored version number of the individual data blob to be modified in the master blob with a new version number of a corresponding new data blob; and deleting the individual data blob to be modified using a corresponding stored version number; and in response to determining that the obtained version number of the master blob is different than the re-obtained version number of the master blob, deleting the one or more new data blobs. - View Dependent Claims (2, 3)
-
-
4. One or more computer readable non-transitory memory storing computer-executable instructions that, when executed, cause one or more processors to perform acts comprising, comprising:
-
determining a new data blob to be created in a data store based on an application request; reading a master blob that corresponds to the new data blob to obtain a version number of the master blob; writing the new data blob with a new version number and a new data blob identifier to the data store; reading the master blob to re-obtain the version number of the master blob; writing the new version number of the new data blob to the master blob when the obtained version number of the master blob matches the re-obtained version number of the master blob; and deleting the new data blob from the data store when the obtained version number of the master blob is different than the re-obtained version number of the master blob. - View Dependent Claims (5, 6, 7, 8, 9, 10)
-
-
11. A computer-implemented method, comprising:
-
under control of one or more computing systems comprising one or more hardware processors executing executable instructions to perform acts that include; determining a data blob in a data store to be modified based on an application request, the data blob to be modified having a particular data blob identifier; reading a master blob to (1) locate a stored version number of the data blob to be modified and (2) obtain a version number of the master blob; writing a new data blob with a new version number and the particular data blob identifier to the data store as a replacement for the data blob to be modified; reading the master blob to re-obtain the version number of the master blob; and when the obtained version number of the master blob matches the re-obtained version number of the master blob; replacing the stored version number of the data blob to be modified in the master blob with the new version number; and deleting the data blob to be modified using the stored version number. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
-
-
22. A computer-implemented method, comprising:
-
under control of one or more computing systems comprising one or more hardware processors executing executable instructions, receiving a particular data blob identifier as part of an application request to access data from a data store; identifying a parent master blob based on the particular data blob identifier, the parent master blob including a data entry that leads to a child master blob, the data entry including a child master blob identifier for the child master blob and a version number for the child master blob, locating the child master blob based on the child master blob identifier and the version number of the child master blob in the data entry of the parent master blob, the child master blob storing a current data blob version number that corresponds to the particular data blob identifier; reading the child master blob to locate the current data blob version number that corresponds to the particular data blob identifier; accessing data from a data blob in the data store when the data blob has the particular data blob identifier and the current data blob version number; and retrying the reading and the accessing when no data blob with the particular data blob identifier and the current data version number is present in the data store. - View Dependent Claims (23, 24, 25, 26, 27)
-
-
28. One or more computer readable non-transitory memory storing computer-executable instructions that, when executed, cause one or more processors to perform acts comprising:
-
in response to receiving a particular data blob identifier as part of an application request to access data from a data store, reading a master blob to locate a current data blob version number that corresponds to the particular data blob identifier; locating one or more data blobs in the data store having the particular data blob identifier using a prefix query; accessing data from one of the one or more data blobs when the one data blob has the particular data blob identifier and the current data blob version number; ignoring the one or more data blobs by refraining from accessing data from the one data blob when the one data blob has the particular data blob identifier and a corresponding data blob version number that is different from the current data blob version number; and retrying the reading and the accessing when no data blob with the particular data blob identifier and the current data version number is located via the prefix query. - View Dependent Claims (29, 30, 31, 32, 33)
-
Specification