# US 10,871,918 B2 · Writing composite objects to a data store

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

- Number: US 10,871,918 B2
- Document ID: US10871918B2
- Status: Granted
- Kind: B2
- Application number: 15/667,448
- Filed: 2017-08-02
- Published: 2019-02-07
- Granted: 2020-12-22
- Earliest claimed: 2017-08-02
- Assignees: Intuit Inc.
- Applicants: Intuit Inc.
- Inventors: Grigoriy Kesler
- Web page: https://patentgrep.com/patent/US10871918B2

## CPC

- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0611: {in relation to response time}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 9/30: Arrangements for executing machine instructions, e.g. instruction decode (for executing microinstructions G06F9/22)
- G06F 9/46: Multiprogramming arrangements
- G06F 9/52: Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F 16/13: File access structures, e.g. distributed indices (arrangements of input from, or output to, record carriers G06F3/06)
- G06F 16/9024: {Graphs; Linked lists (G06F16/9027 takes precedence)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

This disclosure relates to optimizing write requests based on an object dependency graph. An example method generally includes receiving, from a client device, a write request specifying an object to be written to the data store. A gateway server determines, based on an object dependency graph associated with the specified object and identifying relationships between the specified object and one or more dependency objects, one or more dependency objects to be written to the data store. The gateway server generates a plurality of write requests for the specified object and the one or more dependency objects and generates an execution plan for the plurality of write requests based on the object dependency graph. The gateway server executes the plurality of write requests based on the execution plan.

## Claims

### Claim 1

A method for writing data to a data store, comprising:
receiving, from a client device, a write request specifying an object to be written to the data store;
determining, based on traversing an object dependency graph defining the specified object and identifying relationships between the specified object and dependency objects of the specified object, dependency objects to be written to a plurality of data stores including the data store, wherein the dependency objects comprise objects stored across the plurality of data stores or objects to be written across the plurality of data stores prior to writing the specified object to the data store;
generating a plurality of write requests for the specified object and the dependency objects, each of the plurality of write requests being directed to one of the plurality of data stores;
generating an execution plan for the plurality of write requests based on the object dependency graph; and
executing the plurality of write requests against the plurality of data stores based on the execution plan.

### Claim 2 (depends on 1)

The method of claim 1, wherein generating the execution plan comprises:
instantiating a write request queue;
traversing the object dependency graph to identify write requests corresponding to independent data objects;
inserting the write requests corresponding to independent data objects into the write request queue; and
inserting write requests corresponding to objects dependent on the independent data objects into the write request queue.

### Claim 3 (depends on 2)

The method of claim 2, wherein inserting the write requests corresponding to independent objects comprises:
upon determining that a plurality of write requests in the write request queue are associated with a same object type, coalescing the plurality of write requests into a single write request.

### Claim 4 (depends on 2)

The method of claim 2, wherein inserting the write requests corresponding to independent objects comprises:
upon determining that a plurality of write requests in the write request queue are associated with a same data store location, coalescing the plurality of write requests into a single write request.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
obtaining the object dependency graph by introspection into a definition of the specified object.

### Claim 6 (depends on 1)

The method of claim 1, wherein the object dependency graph comprises a plurality of nodes, each node being associated with an object and including an object name, a location at which the object is stored, and references to one or more other nodes that the object depends on.

### Claim 7 (depends on 1)

The method of claim 1, wherein executing the plurality of write requests comprises:
executing a first write request against a data store specified by the first write request;
upon detecting a failure to successfully execute the first write request, repeating execution of the first write request; and
upon detecting that the first write request successfully executed, executing a second write request of the plurality of write requests against a data store specified by the second write request.

### Claim 8

A system, comprising:
a processor; and
a memory storing instructions which, when executed on the processor, perform an operation for writing data to a data store, the operation comprising:
receiving, from a client device, a write request specifying an object to be written to the data store;
determining, based on traversing an object dependency graph defining the specified object and identifying relationships between the specified object and dependency objects of the specified object, dependency objects to be written to a plurality of data stores including the data store, wherein the dependency objects comprise objects stored across the plurality of data stores or objects to be written across the plurality of data stores prior to writing the specified object to the data store;
generating a plurality of write requests for the specified object and the dependency objects, each of the plurality of write requests being directed to one of the plurality of data stores;
generating an execution plan for the plurality of write requests based on the object dependency graph; and
executing the plurality of write requests against the plurality of data stores based on the execution plan.

### Claim 9 (depends on 8)

The system of claim 8, wherein generating the execution plan comprises:
instantiating a write request queue;
traversing the object dependency graph to identify write requests corresponding to independent data objects;
inserting the write requests corresponding to independent data objects into the write request queue; and
inserting write requests corresponding to objects dependent on the independent data objects into the write request queue.

### Claim 10 (depends on 9)

The system of claim 9, wherein inserting the write requests corresponding to independent objects comprises:
upon determining that a plurality of write requests in the write request queue are associated with a same object type, coalescing the plurality of write requests into a single write request.

### Claim 11 (depends on 9)

The system of claim 9, wherein inserting the write requests corresponding to independent objects comprises:
upon determining that a plurality of write requests in the write request queue are associated with a same data store location, coalescing the plurality of write requests into a single write request.

### Claim 12 (depends on 8)

The system of claim 8, wherein the operation further comprises:
obtaining the object dependency graph by introspection into a definition of the specified object.

### Claim 13 (depends on 8)

The system of claim 8, wherein the object dependency graph comprises a plurality of nodes, each node being associated with an object and including an object name, a location at which the object is stored, and references to one or more other nodes that the object depends on.

### Claim 14 (depends on 8)

The system of claim 8, wherein executing the plurality of write requests comprises:
executing a first write request against a data store specified by the first write request;
upon detecting a failure to successfully execute the first write request, repeating execution of the first write request; and
upon detecting that the first write request successfully executed, executing a second write request of the plurality of write requests against a data store specified by the second write request.

### Claim 15

A non-transitory computer-readable medium comprising instructions which, when executed on one or more processors, performs an operation for writing data to a data store, the operation comprising:
receiving, from a client device, a write request specifying an object to be written to the data store;
determining, based on traversing an object dependency graph defining the specified object and identifying relationships between the specified object and dependency objects of the specified object, dependency objects to be written to a plurality of data stores including the data store, wherein the dependency objects comprise objects stored across the plurality of data stores or objects to be written across the plurality of data stores prior to writing the specified object to the data store;
generating a plurality of write requests for the specified object and the dependency objects, each of the plurality of write requests being directed to one of the plurality of data stores;
generating an execution plan for the plurality of write requests based on the object dependency graph; and
executing the plurality of write requests against the plurality of data stores based on the execution plan.

### Claim 16 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein generating the execution plan comprises:
instantiating a write request queue;
traversing the object dependency graph to identify write requests corresponding to independent data objects;
inserting the write requests corresponding to independent data objects into the write request queue; and
inserting write requests corresponding to objects dependent on the independent data objects into the write request queue.

### Claim 17 (depends on 16)

The non-transitory computer-readable medium of claim 16, wherein inserting the write requests corresponding to independent objects comprises:
upon determining that a plurality of write requests in the write request queue are associated with a same object type, coalescing the plurality of write requests into a single write request.

### Claim 18 (depends on 16)

The non-transitory computer-readable medium of claim 16, wherein inserting the write requests corresponding to independent objects comprises:
upon determining that a plurality of write requests in the write request queue are associated with a same data store location, coalescing the plurality of write requests into a single write request.

### Claim 19 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein the operation further comprises:
obtaining the object dependency graph by introspection into a definition of the specified object.

### Claim 20 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein executing the plurality of write requests comprises:
executing a first write request against a data store specified by the first write request;
upon detecting a failure to successfully execute the first write request, repeating execution of the first write request; and
upon detecting that the first write request successfully executed, executing a second write request of the plurality of write requests against a data store specified by the second write request.
