# US 12,117,976 B2 · Schema based data buffering and processing on a client device

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

- Number: US 12,117,976 B2
- Document ID: US12117976B2
- Status: Granted
- Kind: B2
- Application number: 17/216,384
- Filed: 2021-03-29
- Published: 2022-09-29
- Granted: 2024-10-15
- Earliest claimed: 2021-03-29
- Assignees: Red Hat, Inc.
- Applicants: Red Hat, Inc.
- Inventors: Wojciech Trocki; Gianluca Zuccarelli
- Web page: https://patentgrep.com/patent/US12117976B2

## CPC

- G06F 16/211: {Schema design and management}
- G06F 16/212: {with details for data modelling support}
- G06F 16/215: Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
- G06F 16/2358: {Change logging, detection, and notification (replication G06F16/27)}
- G06F 16/2379: {Updates performed during online database operations; commit processing}
- G06F 16/245: Query processing
- G06F 16/24568: {Data stream processing; Continuous queries}
- G06F 16/275: {Synchronous replication}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Schema based data buffer and processing on a client device. A client device may obtain a schema for a set of data. The set of data is stored on a server device. The client device may also obtain a copy of the set of data from a server database. The copy of the set of data is stored on a client device. The client device may further obtain a set of mutations to one or more portions of the set of data. The client device may further modify the set of mutations based on the schema for the set of data. The client device may further apply the modified set of mutations to the copy of the set of data that is stored on the client device.

## Claims

### Claim 1

A method, comprising:
obtaining a schema for a set of data comprising data objects, wherein the schema comprises a hierarchy and data types of the set of data, wherein the set of data is stored on a server device;
obtaining a local copy of the set of data from the server device, wherein the local copy of the set of data is stored on a client device;
losing communications between the server device and the client device;
obtaining a set of mutations in a sequence, at the client device, to a plurality of the data objects in the set of data;
determining whether application of the set of mutations in the sequence to the set of data would result in data errors or data inconsistencies based on the schema;
in response to the determining that data errors or data inconsistencies would result, modifying, by the client device, the set of mutations based on the schema for the set of data, wherein the modifying comprises:
reordering the sequence of the set of mutations based on the schema, and
replacing a client device first identifier associated with each mutation of the set of mutations, with a server device second identifier associated with the mutation;
applying the modified set of mutations to the local copy of the set of data;
reestablishing communications between the server device and the client device; and
transmitting, to the server device, the modified set of mutations to the server device.

### Claim 2 (depends on 1)

The method of claim 1, wherein obtaining the set of mutations comprises:
transmitting a delta query to the server device; and
receiving the set of mutations based on the delta query.

### Claim 3 (depends on 2)

The method of claim 2, wherein:
the delta query indicates a last time when the client device last updated the local copy of the set of data with the set of data, and
the set of mutations comprises updates to the set of data that have occurred since the last time.

### Claim 4 (depends on 1)

The method of claim 1, wherein obtaining the set of mutations comprises receiving the set of mutations from the server device based on one or more subscriptions of the client device.

### Claim 5 (depends on 1)

The method of claim 1, wherein obtaining the set of mutations occurs in response to a determination that communications between the server device and the client device were lost.

### Claim 6 (depends on 1)

The method of claim 1, wherein modifying the set of mutations further comprises removing one or more duplicate mutations from the set of mutations.

### Claim 7 (depends on 1)

The method of claim 1, wherein the schema for the set of data is defined using a query language corresponding to the server device.

### Claim 8 (depends on 7)

The method of claim 7, wherein the query language comprises GraphQL.

### Claim 9

A client device, comprising:
a memory to store a local copy of a set of data; and
a processing device operatively coupled to the memory, the processing device to:
obtain a schema for a set of data comprising data objects, wherein the schema comprises a hierarchy and data types of the set of data, wherein the set of data is stored on a server device;
obtain the local copy of the set of data from the server device, wherein the local copy of the set of data is stored on a client device;
lose communications between the server device and the client device;
obtain a set of mutations in a sequence, at the client device, to a plurality of the data objects in the set of data;
determine whether application of the set of mutations in the sequence to the set of data would result in data errors or data inconsistencies based on the schema;
in response to the determination that data errors or data inconsistencies would result, modify, by the client device, the set of mutations based on the schema for the set of data, wherein to modify comprises:
reorder the sequence of the set of mutations based on the schema, and
replace a client device first identifier associated with each mutation of the set of mutations with a server device second identifier associated with the mutation;
apply the modified set of mutations to the local copy of the set of data;
reestablish communications between the server device and the client device; and
transmit the modified set of mutations to the server device.

### Claim 10 (depends on 9)

The client device of claim 9, wherein to obtain the set of mutations comprises:
transmit a delta query to the server device; and
receive the set of mutations based on the delta query.

### Claim 11 (depends on 10)

The client device of claim 10, wherein:
the delta query indicates a last time when the client device last updated the local copy of the set of data with the set of data, and
the set of mutations comprises updates to the set of data that have occurred since the last time.

### Claim 12 (depends on 9)

The client device of claim 9, wherein to obtain the set of mutations comprises receive the set of mutations from the server device based on one or more subscriptions of the client device.

### Claim 13 (depends on 9)

The client device of claim 9, wherein to obtain the set of mutations occurs in response to a determination that communications between the server device and the client device were lost.

### Claim 14 (depends on 9)

The client device of claim 9, wherein to modify the set of mutations further comprises remove one or more duplicate mutations from the set of mutations.

### Claim 15 (depends on 9)

The client device of claim 9, wherein the schema for the set of data is defined using a query language corresponding to the server device.

### Claim 16 (depends on 15)

The client device of claim 15, wherein the query language comprises GraphQL.

### Claim 17

A non-transitory computer-readable medium, having instructions stored thereon which, when executed by a processing device, cause the processing device to:
obtain a schema for a set of data comprising data objects, wherein the schema comprises a hierarchy and data types of the set of data, wherein the set of data is stored on a server device;
obtain a local copy of the set of data from the server device, wherein the local copy of the set of data is stored on a client device;
lose communications between the server device and the client device;
obtain a set of mutations in a sequence, at the client device, to a plurality of the data objects in the set of data;
determine whether application of the set of mutations in the sequence to the set of data would result in data errors or data inconsistencies based on the schema;
in response to the determination that data errors or data inconsistencies would result, modify, by the client device, the set of mutations based on the schema for the set of data, wherein to modify comprises:
reorder the sequence of the set of mutations based on the schema, and
replace a client device first identifier associated with each mutation of the set of mutations with a server device second identifier associated with the mutation;
apply the modified set of mutations to the local copy of the set of data;
reestablish communications between the server device and the client device; and
transmit the modified set of mutations to the server device.
