Processing mutations for a remote database
First Claim
1. A method implemented by one or more data processing apparatus, the method comprising:
- receiving, by a server, a log of database mutations from a single client device, the log of database mutations indicating changes previously made to a client version of a database stored on the single client device, and each database mutation specifying;
an entity included in the database, where the entity includes a row or record in the database;
an operation for the entity; and
a client version number for the entity;
identifying, in the log of database mutations and by the server, two or more database mutations that each specify a same client version number for a same entity and specify a different operation that was performed on the single client device for the same entity;
determining, by the server and based on a conflict resolution policy that describes a policy for resolving a conflict in the entity between the single client device and the server, that a conflict between the single client device and the server for a first database mutation of the two or more database mutations resolves in favor of the client device over the server; and
in response to determining the conflict between the single client device and the server for the first database mutation of the two or more database mutations resolves in favor of the client device over the server, collapsing the first database mutation and a second database mutation of the two or more database mutations, that specifies setting a value of the entity to a different value than the first database mutation specifies, into a single database mutation that specifies a single operation that sets the value of the entity to the different value,wherein a conflict between the second database mutation and the server resolves in favor of the client device because both the first database mutation occurred before the second database mutation and the conflict between first database mutation and the server resolves in favor of the client device.
2 Assignments
0 Petitions
Accused Products
Abstract
Methods, systems, and apparatus are described for processing mutations for a remote database. In one aspect, a method includes receiving a log of database mutations from a client device, the log of database mutations indicating changes previously made to a client version of a database stored on the client device, and each database mutation specifying: an entity included in the database; an operation for the entity; and a client version number for the entity; identifying, in the log of database mutations, two or more database mutations that each specify a same client version number for a same entity; determining, based on a conflict resolution policy, that the two or more database mutations are eligible for collapsing; and collapsing the two or more database mutations into a single database mutation.
-
Citations
18 Claims
-
1. A method implemented by one or more data processing apparatus, the method comprising:
-
receiving, by a server, a log of database mutations from a single client device, the log of database mutations indicating changes previously made to a client version of a database stored on the single client device, and each database mutation specifying; an entity included in the database, where the entity includes a row or record in the database; an operation for the entity; and a client version number for the entity; identifying, in the log of database mutations and by the server, two or more database mutations that each specify a same client version number for a same entity and specify a different operation that was performed on the single client device for the same entity; determining, by the server and based on a conflict resolution policy that describes a policy for resolving a conflict in the entity between the single client device and the server, that a conflict between the single client device and the server for a first database mutation of the two or more database mutations resolves in favor of the client device over the server; and in response to determining the conflict between the single client device and the server for the first database mutation of the two or more database mutations resolves in favor of the client device over the server, collapsing the first database mutation and a second database mutation of the two or more database mutations, that specifies setting a value of the entity to a different value than the first database mutation specifies, into a single database mutation that specifies a single operation that sets the value of the entity to the different value, wherein a conflict between the second database mutation and the server resolves in favor of the client device because both the first database mutation occurred before the second database mutation and the conflict between first database mutation and the server resolves in favor of the client device. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A system comprising:
-
one or more data processing apparatus; and a data store storing instructions that, when executed by the one or more data processing apparatus, cause the one or more data processing apparatus to perform operations comprising; receiving, by a server, a log of database mutations from a single client device, the log of database mutations indicating changes previously made to a client version of a database stored on the single client device, and each database mutation specifying; an entity included in the database, where the entity includes a row or record in the database; an operation for the entity; and a client version number for the entity; identifying, in the log of database mutations and by the server, two or more database mutations that each specify a same client version number for a same entity and specify a different operation that was performed on the single client device for the same entity; determining, by the server and based on a conflict resolution policy that describes a policy for resolving a conflict in the entity between the single client device and the server, that a conflict between the single client device and the server for a first database mutation of the two or more database mutations resolves in favor of the client device over the server; and in response to determining the conflict between the single client device and the server for the first database mutation of the two or more database mutations resolves in favor of the client device over the server, collapsing the first database mutation and a second database mutation of the two or more database mutations, that specifies setting a value of the entity to a different value than the first database mutation specifies, into a single database mutation that specifies a single operation that sets the value of the entity to the different value, wherein a conflict between the second database mutation and the server resolves in favor of the client device because both the first database mutation occurred before the second database mutation and the conflict between first database mutation and the server resolves in favor of the client device. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A non-transitory computer readable medium storing instructions that, when executed by one or more data processing apparatus, cause the one or more data processing apparatus to perform operations comprising:
-
receiving, by a server, a log of database mutations from a single client device, the log of database mutations indicating changes previously made to a client version of a database stored on the single client device, and each database mutation specifying; an entity included in the database, where the entity includes a row or record in the database; an operation for the entity; and a client version number for the entity; identifying, in the log of database mutations and by the server, two or more database mutations that each specify a same client version number for a same entity and specify a different operation that was performed on the single client device for the same entity; determining, by the server and based on a conflict resolution policy that describes a policy for resolving a conflict in the entity between the single client device and the server, that a conflict between the single client device and the server for a first database mutation of the two or more database mutations resolves in favor of the client device over the server; and in response to determining the conflict between the single client device and the server for the first database mutation of the two or more database mutations resolves in favor of the client device over the server, collapsing the first database mutation and a second database mutation of the two or more database mutations, that specifies setting a value of the entity to a different value than the first database mutation specifies, into a single database mutation that specifies a single operation that sets the value of the entity to the different value, wherein a conflict between the second database mutation and the server resolves in favor of the client device because both the first database mutation occurred before the second database mutation and the conflict between first database mutation and the server resolves in favor of the client device. - View Dependent Claims (16, 17, 18)
-
Specification