Versioned and hierarchical data structures and distributed transactions
First Claim
1. A computer-implemented method in a distributed computing environment utilizing a processor and memory for processing transactions in a replicated storage environment, the method comprising:
- receiving and processing, at a secondary data store, a plurality of messages of a distributed transaction from one or more primary data stores, each message of the plurality of messages containing a distributed transaction identifier;
determining that the distributed transaction identifier in each of the plurality of messages corresponds to the distributed transaction;
receiving, at the secondary data store, a commit-distributed-transaction message, the commit-distributed-transaction message containing the distributed transaction identifier and an indicator that is part of the distributed transaction, the indicator being a count of messages making up the distributed transaction;
postponing the processing of the plurality of messages and the commit-distributed-transaction message in the distributed transaction based on determining from the indicator obtained from the received commit-distributed-transaction message that each message that is part of the distributed transaction has not been received; and
after the commit-distributed-transaction message has been received and based on determining from the indicator obtained from the received commit-distributed-transaction message that each message that is part of the distributed transaction has been received, resuming the processing of the plurality of messages and the commit-distributed-transaction message and committing the distributed transaction at the secondary data store, the determining that each message that is part of the distributed transaction has been received comprises comparing, at the secondary data store, a received message count to the count of messages extracted from the commit-distributed-transaction message.
2 Assignments
0 Petitions
Accused Products
Abstract
Presented herein are methods of replicating versioned and hierarchical data structures, as well as data structures representing complex transactions. Due to interdependencies between data entities and a lack of guaranteed message ordering, simple replication methods employed for simple data types cannot be used. Operations on data structures exhibit dependencies between the messages making up the operations. This strategy can be extended to various types of complex transactions by considering certain messages to depend on other messages or on the existence of other entries at the data store. Regardless of origin, these dependencies can be enforced by suspending the processing of messages with unsatisfied dependencies until all of its dependencies have been met. Alternately, transactions can be committed immediately, creating entities that include versioned identifiers for each of their dependencies. These entities can then be garbage collected of the parent objects are not subsequently created.
22 Citations
20 Claims
-
1. A computer-implemented method in a distributed computing environment utilizing a processor and memory for processing transactions in a replicated storage environment, the method comprising:
-
receiving and processing, at a secondary data store, a plurality of messages of a distributed transaction from one or more primary data stores, each message of the plurality of messages containing a distributed transaction identifier; determining that the distributed transaction identifier in each of the plurality of messages corresponds to the distributed transaction; receiving, at the secondary data store, a commit-distributed-transaction message, the commit-distributed-transaction message containing the distributed transaction identifier and an indicator that is part of the distributed transaction, the indicator being a count of messages making up the distributed transaction; postponing the processing of the plurality of messages and the commit-distributed-transaction message in the distributed transaction based on determining from the indicator obtained from the received commit-distributed-transaction message that each message that is part of the distributed transaction has not been received; and after the commit-distributed-transaction message has been received and based on determining from the indicator obtained from the received commit-distributed-transaction message that each message that is part of the distributed transaction has been received, resuming the processing of the plurality of messages and the commit-distributed-transaction message and committing the distributed transaction at the secondary data store, the determining that each message that is part of the distributed transaction has been received comprises comparing, at the secondary data store, a received message count to the count of messages extracted from the commit-distributed-transaction message. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A computer-implemented system in a distributed computing environment, the computer-implemented system comprising a processor and memory configured to perform a method for processing transactions in a replicated storage environment, the method comprising:
-
receiving and processing, at a secondary data store, a plurality of messages of a distributed transaction from one or more primary data stores, each message of the plurality of messages containing a distributed transaction identifier; determining that the distributed transaction identifier in each of the plurality of messages corresponds to the distributed transaction; receiving, at the secondary data store, a commit-distributed-transaction message, the commit-distributed-transaction message containing the distributed transaction identifier and an indicator that specifies each message that is part of the distributed transaction, the indicator being a list comprising an individual transaction identifier of each transaction making up the distributed transaction; postponing the processing of the plurality of messages and the commit-distributed-transaction message in the distributed transaction based on determining from the indicator obtained from the received commit-distributed transaction message that each message that is part of the distributed transaction has not been received; and after the commit-distributed-transaction message has been received and based on determining from the indicator obtained from the received commit-distributed transaction message that each message that is part of the distributed transaction has been received, using the plurality of messages to cause resuming of the processing and committal of the distributed transaction at the secondary data store. - View Dependent Claims (10, 11, 12, 13, 14)
-
-
15. A computer-implemented method in a distributed computing environment utilizing a processor and memory for processing transactions in a replicated storage environment, the method comprising:
-
receiving, at a secondary data store, a plurality of messages from one or more primary data stores, each message of the plurality of messages containing a distributed transaction identifier; determining that the distributed transaction identifier in each of the plurality of messages corresponds to a distributed transaction, a designated message of the plurality of messages comprising an object replication message including an object name of an object, and identifiers for one or more parent objects of the object, each parent object identifier comprising a parent object name and a parent object version;
receiving, at the secondary data store, a commit-distributed-transaction message, the commit-distributed-transaction message containing the distributed transaction identifier and an indicator for the plurality of the messages;postponing processing of the plurality of messages and the commit-distributed-transaction message in the distributed transaction based on the indicator indicating that each of the plurality of messages corresponding to the distributed transaction has not been received; determining a full object identifier of the object from the object replication message based on the object name, the parent object name for each parent object identifier, and the parent object version for each parent object identifier, the full object identifier identifying the object and each of the one or more parent objects; and after the commit-distributed-transaction message has been received and the indicator indicates that each of the plurality of messages corresponding to the distributed transaction has been received, using the plurality of messages to cause the distributed transaction to be committed at the secondary data store, wherein the object corresponding to the determined full object identifier is created independently of whether the one or more parent objects exist at the secondary data store. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification