Multi-master data replication in a distributed multi-tenant system
Assigneesalesforce.com, inc.
InventorsIan VARLEY, Scott Hansma, Paul Burstein
Life of this patent
Estimating the term…
Abstract
A multi-master replication system is disclosed. The multi-master replication system allows a large set of peer instances to collaboratively replicate data to each other.
Claims61
A method, comprising:
- a plurality of instances, each being separately responsible for a plurality of database tables, regularly replicating updates to the database tables using a plurality of chunks;
- thereby consistently
- detecting, serving, requesting, and upsetting changes to the database tables.
A machine-readable medium carrying one or more sequences of instructions for implementing a method for providing an interface for object relationships, comprising:
- a plurality of instances, each being separately responsible for a plurality of database tables, regularly replicating updates to the database tables using a plurality of chunks;
- thereby consistently
- detecting, serving, requesting, and upserting changes to the database tables.
A method for performing replication in a multi-tenant database system, the method comprising:
- a plurality of instances, each being separately responsible for a plurality of database tables, regularly replicating updates to the database tables using a plurality of chunks;
- thereby consistently
- detecting, serving, requesting, and upserting changes to the database tables.
A method for idempotent application of modifications to a multi-tenant database system, comprising:
- a plurality of instances, each being separately responsible for a plurality of database tables, regularly replicating updates to the database tables using a plurality of chunks;
- regularly checking timestamps of database records on a record-by-record basis, thereby making the application of modified data to be idempotent and tolerant of reordering;
- and
- using markers for deleted data so that the deleted data can be applied to the database records in a same stream as insert data or update data.
A method of achieving dynamic hierarchical arrangement of nodes for optimal geographic data distribution, comprising:
- dividing instances into leaders and non-leaders within a particular data center;
- dynamically re-adjusting designation of leaders and non-leaders based at least upon load-size and reachability including but not limited to system failures or planned outages;
- and
- steering instance data to traverse multiple hops via leaders, so as to ensure that each database update only traverses a data center link a minimum number of times.
A method of achieving efficiency within a database environment, comprising:
- a plurality of instances, each being separately responsible for a plurality of database tables, regularly replicating updates to the database tables using a plurality of chunks;
- regularly reviewing all chunks for any outstanding non-upserted chunks;
- after a predetermined time period, compacting the non-upserted chunks into catchup chunks;
- marking the catchup chunks with a special bit to signify a status of being a catchup chunk;
- and
- during a process of caching catchup chunks, performing no binary caching, either on a client or a server.
A method of controlling a batch size within a relational database using a combination of date and unique ID endpoints, comprising:
- packaging a plurality of updates to database records into chunks using timestamps;
- checking all database records having the same timestamp to determine whether the total amount of records exceeds a predetermined maximum batch size;
- re-checking the records both for having the same timestamp and for an entity ID;
- and
- allowing only those records having the same timestamp and the same entity ID to be packaged into a particular chunk.
A machine-readable medium carrying one or more sequences of instructions for idempotent application of modifications to a multi-tenant database system in a multi-tenant database system, which instructions, when executed by one or more processors, cause the one or more processors to carry out the steps of:
- a plurality of instances, each being separately responsible for a plurality of database tables, regularly replicating updates to the database tables using a plurality of chunks;
- regularly checking timestamps of database records on a record-by-record basis, thereby making the application of modified data to be idempotent and tolerant of reordering;
- and
- using markers for deleted data so that the deleted data can be applied to the database records in a same stream as insert data or update data.
A machine-readable medium carrying one or more sequences of instructions for achieving dynamic hierarchical arrangement of nodes for optimal geographic data distribution in a multi-tenant database system, which instructions, when executed by one or more processors, cause the one or more processors to carry out the steps of:
- dividing instances into leaders and non-leaders within a particular data center;
- dynamically re-adjusting designation of leaders and non-leaders based at least upon load-size and reachability including but not limited to system failures or planned outages;
- and
- steering instance data to traverse multiple hops via leaders, so as to ensure that each database update only traverses a data center link a minimum number of times.
A machine-readable medium carrying one or more sequences of instructions for achieving efficiency within a multi-tenant database system, which instructions, when executed by one or more processors, cause the one or more processors to carry out the steps of:
- a plurality of instances, each being separately responsible for a plurality of database tables, regularly replicating updates to the database tables using a plurality of chunks;
- regularly reviewing all chunks for any outstanding non-upserted chunks;
- after a predetermined time period, compacting the non-upserted chunks into catchup chunks;
- marking the catchup chunks with a special bit to signify a status of being a catchup chunk;
- and
- during a process of caching catchup chunks, performing no binary caching, either on a client or a server.
A machine-readable medium carrying one or more sequences of instructions for controlling a batch size within a relational database using a combination of date and unique ID endpoints in a multi-tenant database system, which instructions, when executed by one or more processors, cause the one or more processors to carry out the steps of:
- packaging a plurality of updates to database records into chunks using timestamps;
- checking all database records having the same timestamp to determine whether the total amount of records exceeds a predetermined maximum batch size;
- re-checking the records both for having the same timestamp and for an entity ID;
- and
- allowing only those records having the same timestamp and the same entity ID to be packaged into a particular chunk.
Dependencies are inferred from the claim text.