← Back to Patent Explorer
US6529921B1 Expired / Lapsed US ⏱️ 0.0 years remaining

Dynamic synchronization of tables

Assignee: Microsoft Technology Licensing LLC
•
Filing: 1999-06-29
•
Granted: 2003-03-04
•
Expires: 2019-06-29
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract Each node in a network accessing a common database caches a copy of the database tables it uses and updates those tables based on changes made by other nodes in a coherent cache, i.e., those node that also have a copy of the tables in their cache. When a new node joins the coherent cache, dynamic synchronization of the table is performed by having one of the existing nodes act as a source to populate the table(s) required on the new (destination) node from its own copy. The dynamic synchronization controls the population operation and allows for the populating of tables on the destination node from partially populated tables on the source node. The dynamic synchronization of the tables permits database updates to continue to be made to the tables by the existing nodes in the coherent cache and provides a mechanism to propagate the committed updates to the tables on the destination node. Once the tables on the destination node are fully populated, all pending updates are suspended while a snapshot of the state of the table on the source node is taken. Once the destination node has processed the snapshot, active transactions on the source node are initiated on the destination node, and all transactions are allowed to modify the table on the destination node.

Inventors

  • 👤 Brian T. Berkowitz
  • 👤 Peter A. Christofferson

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-06 20:25
CPC Classifications
G; G06; G06F; G06F16/00; G06F16/20; G06F16/27; G06F16/273; Y; Y10; Y10S; Y10S707/00; Y10S707/99931; Y10S707/99933; Y10S707/99936; Y10S707/99951; Y10S707/99952; Y10S707/99953; Y10S707/99955

Claims Analysis

Total Claims: 46
Claim 1
Independent Claim 134 words
A method of dynamically synchronizing a table from a source node to a destination node comprising: streaming, to the destination node, static data in the table of the source node; streaming, to the destination node, committed changes to the table on the source node interspersed with the static data; creating, on the destination node, a copy of the table from the static data and the committed changes; pausing, on the source node, active transactions that involve the table; streaming, to the destination node, uncommitted changes associated with the active transactions on the source node; resuming, on the source node, each active transaction when the associated uncommitted changes have been sent to the destination node; and initiating, on the destination node, remote transactions that correspond to a set of transactions active on the source node.
Claim 2
Independent Claim 134 words
A method of dynamically synchronizing a table from a source node to a destination node comprising: streaming, to the destination node, static data in the table of the source node; streaming, to the destination node, committed changes to the table on the source node interspersed with the static data; creating, on the destination node, a copy of the table from the static data and the committed changes; pausing, on the source node, active transactions that involve the table; streaming, to the destination node, uncommitted changes associated with the active transactions on the source node; resuming, on the source node, each active transaction when the associated uncommitted changes have been sent to the destination node; and initiating, on the destination node, remote transactions that correspond to a set of transactions active on the source node.
Claim 3
Dependent Claim 58 words
The method of claim 1 , further comprising: streaming, to the destination node, any committed changes resulting from the resumption of each transaction of the source node interspersed with the uncommitted changes for the active transactions; and applying, to the copy of the table on the destination node, any committed changes resulting from the resumption of each transaction.
Claim 4
Dependent Claim 34 words
The method of claim 1 , wherein remote transactions are initiated on the destination node in response to a message from the source node that all changes for the active transactions have been sent.
Claim 5
Dependent Claim 50 words
The method of claim 1 , further comprising: sending, to the destination node, an identity for any active transaction on the source node that terminates before the corresponding transaction is initiated on the destination node; and aborting, on the destination node, all changes identified as associated with the terminated transaction.
Claim 6
Dependent Claim 18 words
The method of claim 1 , wherein the static data in the table comprises metadata and table records.
Claim 7
Dependent Claim 25 words
The method of claim 1 , wherein streaming the static data in the table comprises populating the table on the source node from a backend.
Claim 8
Dependent Claim 26 words
The method of claim 1 , wherein streaming the static data in the table comprises synchronizing the table on the source node from a third node.
Claim 9
Dependent Claim 16 words
The method of claim 1 , wherein the uncommitted changes form a snapshot of the table.
Claim 10
Dependent Claim 37 words
The method of claim 1 , wherein the committed changes are evaluated based on a comparison of a key value in each committed change with a key value of a last record sent to the destination node.
Claim 11
Dependent Claim 15 words
The method of claim 1 , wherein the acts are performed in the order recited.
Claim 12
Dependent Claim 99 words
A computer-readable medium having computer-executable instructions to a cause a source computer on a network to perform a method providing a synchronization stream, the method comprising: obtaining static data from a table in key order; transmitting the static data in the synchronization stream; identifying changes to the table that are uncommitted after transmitting the static data; transmitting the uncommitted changes in the synchronization stream; determining when an uncommitted change commits after transmitting the uncommitted change in the synchronization stream; transmitting information regarding the commit of the uncommitted change on the network; and transmitting a message to initiate active transactions.
Claim 13
Dependent Claim 99 words
A computer-readable medium having computer-executable instructions to a cause a source computer on a network to perform a method providing a synchronization stream, the method comprising: obtaining static data from a table in key order; transmitting the static data in the synchronization stream; identifying changes to the table that are uncommitted after transmitting the static data; transmitting the uncommitted changes in the synchronization stream; determining when an uncommitted change commits after transmitting the uncommitted change in the synchronization stream; transmitting information regarding the commit of the uncommitted change on the network; and transmitting a message to initiate active transactions.
Claim 14
Dependent Claim 35 words
The computer-readable medium of claim 11 , wherein the method further comprises: determining when a change is committed to the table while transmitting the static data; and transmitting the committed change in the synchronization stream.
Claim 15
Dependent Claim 20 words
The computer-readable medium of claim 11 , wherein obtaining the static data comprises: synchronizing the table data from a backend.
Claim 16
Dependent Claim 19 words
The computer-readable of claim 11 , wherein obtaining the static data comprises: synchronizing the table data from another node.
Claim 17
Dependent Claim 98 words
A computer-readable medium having computer-executable instructions to a cause a destination computer on a network to perform a method of applying data received in a synchronization stream to a table, the method comprising: receiving static table data in the synchronization stream; creating the table from the static data; receiving uncommitted changes in the synchronization stream; queuing the uncommitted changes; receiving information on the network regarding an uncommitted change in the queue that commits; deleting the uncommitted change that committed from the queue; receiving a message to initiate active transactions; identifying active transactions; and initiating the identified active transactions.
Claim 18
Dependent Claim 98 words
A computer-readable medium having computer-executable instructions to a cause a destination computer on a network to perform a method of applying data received in a synchronization stream to a table, the method comprising: receiving static table data in the synchronization stream; creating the table from the static data; receiving uncommitted changes in the synchronization stream; queuing the uncommitted changes; receiving information on the network regarding an uncommitted change in the queue that commits; deleting the uncommitted change that committed from the queue; receiving a message to initiate active transactions; identifying active transactions; and initiating the identified active transactions.
Claim 19
Dependent Claim 33 words
The computer-readable medium of claim 15 , wherein the method further comprises: receiving a committed change in the synchronization stream while receiving the static data; and applying the committed change to the table.
Claim 20
Dependent Claim 163 words
A distributed computer system having a source node and destination node, and implementing dynamic synchronization of a table from the source node to the destination node, the distributed computer system comprising: means for streaming, to the destination node, static data in the table of the source node; means for streaming, to the destination node, committed changes to the table on the source node interspersed with the static data; means for creating, on the destination node, a copy of the table from the static data and the committed changes; means for pausing, on the source node, active transactions that involve the table; means for streaming, to the destination node, uncommitted changes associated with the active transactions on the source node; means for resuming, on the source node, each active transaction when the associated uncommitted changes have been sent to the destination node; and means for initiating, on the destination node, remote transactions that correspond to a set of transactions active on the source node.
Claim 21
Dependent Claim 163 words
A distributed computer system having a source node and destination node, and implementing dynamic synchronization of a table from the source node to the destination node, the distributed computer system comprising: means for streaming, to the destination node, static data in the table of the source node; means for streaming, to the destination node, committed changes to the table on the source node interspersed with the static data; means for creating, on the destination node, a copy of the table from the static data and the committed changes; means for pausing, on the source node, active transactions that involve the table; means for streaming, to the destination node, uncommitted changes associated with the active transactions on the source node; means for resuming, on the source node, each active transaction when the associated uncommitted changes have been sent to the destination node; and means for initiating, on the destination node, remote transactions that correspond to a set of transactions active on the source node.
Claim 22
Dependent Claim 64 words
The distributed computer system of claim 17 , further comprising: means for streaming, to the destination node, any committed changes resulting from the resumption of each transaction of the source node interspersed with the uncommitted changes for the active transactions; and means for applying, to the copy of the table on the destination node, any committed changes resulting from the resumption of each transaction.
Claim 23
Dependent Claim 36 words
The distributed computer system of claim 17 , wherein remote transactions are initiated on the destination node in response to a message from the source node that all changes for the active transactions have been sent.
Claim 24
Dependent Claim 56 words
The distributed computer system of claim 17 , further comprising: means for sending, to the destination node, an identity for any active transaction on the source node that terminates before the corresponding transaction is initiated on the destination node; and means for aborting, on the destination node, all changes identified as associated with the terminated transaction.
Claim 25
Dependent Claim 20 words
The distributed computer system of claim 17 , wherein the static data in the table comprises metadata and table records.
Claim 26
Dependent Claim 27 words
The distributed computer system of claim 17 , wherein streaming the static data in the table comprises populating the table on the source node from a backend.
Claim 27
Dependent Claim 28 words
The distributed computer system of claim 17 , wherein streaming the static data in the table comprises synchronizing the table on the source node from a third node.
Claim 28
Dependent Claim 18 words
The distributed computer system of claim 17 , wherein the uncommitted changes form a snapshot of the table.
Claim 29
Dependent Claim 39 words
The distributed computer system of claim 17 , wherein the committed changes are evaluated based on a comparison of a key value in each committed change with a key value of a last record sent to the destination node.
Claim 30
Dependent Claim 17 words
The distributed computer system of claim 17 , wherein the acts are performed in the order recited.
Claim 31
Independent Claim 91 words
A method executed on a source computer on a network to provide a synchronization stream, the method comprising: obtaining static data from a table in key order; transmitting the static data in the synchronization stream; identifying changes to the table that are uncommitted after transmitting the static data; transmitting the uncommitted changes in the synchronization stream; determining when an uncommitted change commits after transmitting the uncommitted change in the synchronization stream; transmitting information regarding the commit of the uncommitted change on the network; and transmitting a message to initiate active transactions.
Claim 32
Independent Claim 91 words
A method executed on a source computer on a network to provide a synchronization stream, the method comprising: obtaining static data from a table in key order; transmitting the static data in the synchronization stream; identifying changes to the table that are uncommitted after transmitting the static data; transmitting the uncommitted changes in the synchronization stream; determining when an uncommitted change commits after transmitting the uncommitted change in the synchronization stream; transmitting information regarding the commit of the uncommitted change on the network; and transmitting a message to initiate active transactions.
Claim 33
Dependent Claim 31 words
The method of claim 27 , further comprising: determining when a change is committed to the table while transmitting the static data; and transmitting the committed change in the synchronization stream.
Claim 34
Dependent Claim 19 words
The method of claim 27 , wherein obtaining the static data comprises: synchronizing the table data from a backend.
Claim 35
Dependent Claim 19 words
The method of claim 27 , wherein obtaining the static data comprises: synchronizing the table data from another node.
Claim 36
Independent Claim 89 words
A method executed on a destination computer on a network to apply data received in a synchronization stream to a table, the method comprising: receiving static table data in the synchronization stream; creating the table from the static data; receiving uncommitted changes in the synchronization stream; queuing the uncommitted changes; receiving information on the network regarding an uncommitted change in the queue that commits; deleting the uncommitted change that committed from the queue; receiving a message to initiate active transactions; identifying active transactions; and initiating the identified active transactions.
Claim 37
Independent Claim 89 words
A method executed on a destination computer on a network to apply data received in a synchronization stream to a table, the method comprising: receiving static table data in the synchronization stream; creating the table from the static data; receiving uncommitted changes in the synchronization stream; queuing the uncommitted changes; receiving information on the network regarding an uncommitted change in the queue that commits; deleting the uncommitted change that committed from the queue; receiving a message to initiate active transactions; identifying active transactions; and initiating the identified active transactions.
Claim 38
Dependent Claim 29 words
The method of claim 31 , further comprising: receiving a committed change in the synchronization stream while receiving the static data; and applying the committed change to the table.
Claim 39
Dependent Claim 103 words
A source computer on a network operating to provide a synchronization stream, the source computer comprising: means for obtaining static data from a table in key order; means for transmitting the static data in the synchronization stream; means for identifying changes to the table that are uncommitted after transmitting the static data; means for transmitting the uncommitted changes in the synchronization stream; means for determining when an uncommitted change commits after transmitting the uncommitted change in the synchronization stream; means for transmitting information regarding the commit of the uncommitted change on the network; and means for transmitting a message to initiate active transactions.
Claim 40
Dependent Claim 103 words
A source computer on a network operating to provide a synchronization stream, the source computer comprising: means for obtaining static data from a table in key order; means for transmitting the static data in the synchronization stream; means for identifying changes to the table that are uncommitted after transmitting the static data; means for transmitting the uncommitted changes in the synchronization stream; means for determining when an uncommitted change commits after transmitting the uncommitted change in the synchronization stream; means for transmitting information regarding the commit of the uncommitted change on the network; and means for transmitting a message to initiate active transactions.
Claim 41
Dependent Claim 36 words
The source computer of claim 33 , further comprising: means for determining when a change is committed to the table while transmitting the static data; and means for transmitting the committed change in the synchronization stream.
Claim 42
Dependent Claim 25 words
The source computer of claim 33 , wherein said means for obtaining the static data comprises: means for synchronizing the table data from a backend.
Claim 43
Dependent Claim 24 words
The method of claim 33 , wherein said means for obtaining the static data comprises: means for synchronizing the table data from another node.
Claim 44
Dependent Claim 105 words
A destination computer on a network operating to apply data received in a synchronization stream to a table, the destination computer comprising: means for receiving static table data in the synchronization stream; means for creating the table from the static data; means for receiving uncommitted changes in the synchronization stream; means for queuing the uncommitted changes; means for receiving information on the network regarding an uncommitted change in the queue that commits; means for deleting the uncommitted change that committed from the queue; means for receiving a message to initiate active transactions; means for identifying active transactions; and means for initiating the identified active transactions.
Claim 45
Dependent Claim 105 words
A destination computer on a network operating to apply data received in a synchronization stream to a table, the destination computer comprising: means for receiving static table data in the synchronization stream; means for creating the table from the static data; means for receiving uncommitted changes in the synchronization stream; means for queuing the uncommitted changes; means for receiving information on the network regarding an uncommitted change in the queue that commits; means for deleting the uncommitted change that committed from the queue; means for receiving a message to initiate active transactions; means for identifying active transactions; and means for initiating the identified active transactions.
Claim 46
Dependent Claim 34 words
The destination computer of claim 37 , further comprising: means for receiving a committed change in the synchronization stream while receiving the static data; and means for applying the committed change to the table.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2006-03-03 2006-09-02 2007-03-04 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2010-03-03 2010-09-02 2011-03-04 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2014-03-03 2014-09-02 2015-03-04 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag