# US 9,519,674 B2 · Stateless datastore-independent transactions

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 9,519,674 B2
- Document ID: US9519674B2
- Status: Granted
- Kind: B2
- Application number: 14/482,661
- Filed: 2014-09-10
- Published: 2016-03-10
- Granted: 2016-12-13
- Earliest claimed: 2014-09-10
- Assignees: Amazon Technologies, Inc.
- Applicants: Amazon Technologies, Inc.
- Inventors: Allan Henry Vermeulen; Timothy Andrew Rath; Timothy Daniel Cole; Kiran-Kumar Muniswamy-Reddy
- Web page: https://patentgrep.com/patent/US9519674B2

## CPC

- G06F 16/275: {Synchronous replication}
- G06F 16/2308: {Concurrency control (transaction processing G06F9/466)}
- G06F 16/2322: {using timestamps}
- G06F 16/2358: {Change logging, detection, and notification (replication G06F16/27)}
- G06F 16/2379: {Updates performed during online database operations; commit processing}
- G06F 16/2471: {Distributed queries}
- G06F 16/27: Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F 16/273: {Asynchronous replication or reconciliation}
- G06F 16/9024: {Graphs; Linked lists (G06F16/9027 takes precedence)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

At a client-side component of a storage group, a read descriptor generated in response to a read request directed to a first data store is received. The read descriptor includes a state transition indicator corresponding to a write that has been applied at the first data store. A write descriptor indicative of a write that depends on a result of the read request is generated at the client-side component. The read descriptor and the write descriptor are included in a commit request for a candidate transaction at the client-side component, and transmitted to a transaction manager.

## Claims

### Claim 1

A system, comprising:
one or more computing devices configured to:
receive, at a client-side component of a heterogeneous storage group comprising a plurality of data stores including a first data store and a second data store, respective read descriptors corresponding to one or more reads, including a first read descriptor corresponding to a first read directed to the first data store, wherein the first read descriptor comprises an indication of a state transition that has been applied at the first data store, and wherein, in accordance with a stateless protocol, the first data store does not maintain session metadata pertaining to the client-side component after the first read descriptor is provided to the client-side component;
store, in one or more buffers accessible to the client-side component, respective write descriptors of one or more writes, including a first write descriptor of a first write directed to a particular data store of the heterogeneous storage group, wherein a payload of the first write is based at least in part on a result of the first read, and wherein the first write descriptor indicates an object to be modified at the particular data store;
generate, at the client-side component, a commit request for a candidate transaction comprising the one or more writes, wherein the commit request comprises at least the first read descriptor and the first write descriptor;
transmit, from the client-side component to a transaction manager, the commit request;
determine, at the transaction manager, that the candidate transaction is accepted for commit based at least in part on an analysis of the first read descriptor in accordance with a concurrency control protocol; and
initiate a modification of the object indicated in the first write descriptor.

### Claim 2 (depends on 1)

The system as recited in claim 1, wherein the client-side component comprises a process executing at a request handler node of a storage service implemented at a provider network.

### Claim 3 (depends on 1)

The system as recited in claim 1, wherein the first read descriptor comprises read repeatability verification metadata for at least the first read.

### Claim 4 (depends on 1)

The system as recited in claim 1, wherein the commit request includes a second read descriptor corresponding to a second read directed to the second data store, wherein a payload of at least one write of the one or more writes is based at least in part on a result of the second read.

### Claim 5 (depends on 1)

The system as recited in claim 1, wherein the one or more writes comprise a second write directed to a different data store than the particular data store.

### Claim 6

A method, comprising:
performing, by one or more computing devices:
receiving, at a client-side component of a storage group comprising one or more data stores including a first data store, respective read descriptors corresponding to one or more reads, including a first read descriptor corresponding to a first read directed to the first data store, wherein the first read descriptor comprises an indication of a state transition that has been applied at the first data store;
generating, at the client-side component, respective write descriptors of one or more writes, including a first write descriptor of a first write directed to a particular data store of the one or more data stores, wherein a payload of the first write is based at least in part on a result of the first read, and wherein the first write descriptor indicates an object to be modified at the particular data store;
transmitting, from the client-side component to a transaction manager, a commit request for a candidate transaction comprising one or more writes including the first write, wherein the commit request comprises at least the first read descriptor and the first write descriptor;
determining, at the transaction manager, that the candidate transaction is to be accepted for commit based at least in part on an analysis of the first read descriptor.

### Claim 7 (depends on 6)

The method as recited in claim 6, wherein in accordance with a stateless protocol, the first data store does not maintain session metadata pertaining to the first read after the first read descriptor is provided to the client-side component.

### Claim 8 (depends on 6)

The method as recited in claim 6, further comprising performing, by the one or more computing devices:
storing, in a durable log of the transaction manager, a transaction record indicating that the candidate transaction has been accepted for commit;
wherein said determining that the candidate transaction is to be accepted for commit is based at least in part on an analysis of one or more other transaction records stored in the durable log.

### Claim 9 (depends on 8)

The method as recited in claim 8, wherein the durable log is implemented using a plurality of nodes of a replication graph.

### Claim 10 (depends on 6)

The method as recited in claim 6, wherein said determining that the candidate transaction is to be accepted for commit comprises verifying that a result set of the first read has not been modified since the read descriptor was generated.

### Claim 11 (depends on 6)

The method as recited in claim 6, wherein the indication of the particular state transition comprises a logical timestamp.

### Claim 12 (depends on 6)

The method as recited in claim 6, wherein the first read descriptor comprises read repeatability verification metadata for at least the first read.

### Claim 13 (depends on 6)

The method as recited in claim 6, wherein the one or more data stores comprise a second data store, wherein the first data store implements a first data model and the second data store implements a different data model, wherein the commit request includes a second read descriptor corresponding to a second read directed to the second data store, wherein a payload of at least one write of the one or more writes is based at least in part on a result of the second read.

### Claim 14 (depends on 12)

The method as recited in claim 12, wherein the first data store comprises one of: a non-relational database system, a relational database system, a storage service that implements a web services interface allowing access to unstructured data objects, an in-memory database, an instance of a distributed cache, a component of a queueing service, or a component of a notification service.

### Claim 15 (depends on 6)

The method as recited in claim 6, wherein the first data store does not support atomicity for a transaction that includes more than one write.

### Claim 16

A non-transitory computer-accessible storage medium storing program instructions that when executed on one or more processors:
receive, at a client-side component of a storage group comprising one or more data stores including a first data store, respective read descriptors corresponding to one or more reads, including a first read descriptor corresponding to a first read directed to the first data store, wherein the first read descriptor comprises an indication of a state transition that has been applied at the first data store;
generate, at the client-side component, respective write descriptors of one or more writes, including a first write descriptor of a first write directed to a particular data store of the one or more data stores, wherein a payload of the first write is based at least in part on a result of the first read, and wherein the first write descriptor indicates an object to be modified at the particular data store; and
transmit, from the client-side component to a transaction manager, a commit request for a candidate transaction comprising one or more writes including the first write, wherein the commit request comprises at least the first read descriptor and the first write descriptor.

### Claim 17 (depends on 16)

The non-transitory computer-accessible storage medium as recited in claim 16, wherein in accordance with a stateless protocol, the first data store does not maintain session metadata pertaining to the first read.

### Claim 18 (depends on 16)

The non-transitory computer-accessible storage medium as recited in claim 16, wherein the first read descriptor comprises read repeatability verification metadata for at least the first read.

### Claim 19 (depends on 16)

The non-transitory computer-accessible storage medium as recited in claim 16, wherein the one or more data stores comprises a second data store, wherein the first data store implements a first data model and the second data store implements a different data model, wherein the commit request includes a second read descriptor corresponding to a second read directed to the second data store, wherein a payload of at least one write of the one or more writes is based at least in part on a result of the second read.

### Claim 20 (depends on 16)

The non-transitory computer-accessible storage medium as recited in claim 16, wherein the first data store does not support atomicity for a transaction that includes more than one write.
