Transactionally consistent indexing for data blobs
First Claim
1. One or more computer readable non-transitory memories storing computer-executable instructions that, when executed, cause one or more processors to perform acts comprising:
- determining an index entry to be added to a transactional index and an index entry to be removed from the transactional index based at least in part on a received application request, each index entry having a “
maybe”
consistency state;
inserting the index entry to be added;
reading a time stamp of the index entry to be removed;
updating, based at least in part on the received application request, a data blob in a data store that is associated with the index entry to be added and a data blob in the data store that is associated with the index entry to be removed;
re-reading the time stamp of the index entry to be removed after the updating of a corresponding data blob;
when the time stamp matches the re-read time stamp, deleting the index entry to be removed from the transactional index; and
when the time stamp does not match the re-read time stamp, aborting a deletion attempt of the index entry to be removed.
1 Assignment
0 Petitions
Accused Products
Abstract
A transactionally consistent indexer is a tiered middleware framework component that updates a transactional index for a data blob according to a data transaction requested by an application. The transactionally consistent indexer determines index entries to be added or removed from a transaction index based on the application request. The transactionally consistent indexer further inserts each index entry to be added into the transaction index. With respect to each index entry to be removed, the transactionally consistent indexer uses a time stamp or version number of the index entry for ensuring optimistic concurrency during deletion. The transactionally consistent indexer then updates a data blob that is associated with each index entry to be added or each index entry to be removed based on the application request.
-
Citations
30 Claims
-
1. One or more computer readable non-transitory memories storing computer-executable instructions that, when executed, cause one or more processors to perform acts comprising:
-
determining an index entry to be added to a transactional index and an index entry to be removed from the transactional index based at least in part on a received application request, each index entry having a “
maybe”
consistency state;inserting the index entry to be added; reading a time stamp of the index entry to be removed; updating, based at least in part on the received application request, a data blob in a data store that is associated with the index entry to be added and a data blob in the data store that is associated with the index entry to be removed; re-reading the time stamp of the index entry to be removed after the updating of a corresponding data blob; when the time stamp matches the re-read time stamp, deleting the index entry to be removed from the transactional index; and when the time stamp does not match the re-read time stamp, aborting a deletion attempt of the index entry to be removed. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A computer-implemented method, comprising:
under control of one or more computing systems comprising one or more processors, determining one or more index entries to be added to or one or more index entries to be removed from a transactional index based at least in part on an application request, wherein individual index entries have associated therewith a corresponding identifier; performing at least one of inserting the one or more index entries to be added to the transactional index or reading a time stamp or a version number of the one or more index entries to be removed; updating, in a data store, a data blob associated with one or more index entries to be added or the one or more index entries to be removed based at least in part on the application request; and checking that an identifier of a particular index entry in the transactional index has a first value that matches a second value of a related data field in a corresponding data blob, and deleting the particular index entry when the first and the second values do not agree and an in-progress data transaction to the data store that corresponds to the index entry is absent. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13, 14, 15)
-
16. A computer-implemented method, comprising:
under control of one or more computing systems comprising one or more processors, determining whether a new index entry is to be added to a transactional index based at least in part on an application request; determining whether an existing index entry is to be removed from a transaction index based at least in part on the application request; responsive to determining that the new index entry is to be added, inserting the new index entry to be added to the transactional index, wherein the new index entry includes a consistency state indicating that the new index entry is being created to track a respective field property value that is being added to a corresponding data blob, and, responsive to determining that the existing index entry is to be removed, reading a time stamp of the existing index entry to be removed and changing a consistency state of the existing index entry to be removed to a consistency state indicating that the existing index entry is to be deleted; updating, in a data store, a data blob associated with the new index entry to be added or the existing index entry to be removed based at least in part on the application request; and responsive to determining that the new index entry is to be added, changing, using optimistic concurrency, a consistency state of the new index entry to a consistency state indicating that the new index entry is accurate, and, responsive to determining that the existing index entry is to be removed, deleting, using optimistic concurrency, the existing index entry with the consistency state indicating that the existing index entry is to be deleted. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30)
Specification