IP Library Granted Patent US 7,996,360
Granted Patent B2
US 7,996,360 · App. 12/147,763 · Granted Aug 9, 2011

Coordinating updates to replicated data

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,996,360
App. No.
12/147,763
Granted
Aug 9, 2011
Kind
B2
Abstract

Techniques for coordinating updates to replicated data are disclosed. For example, in a system comprised of a plurality of nodes, a method for maintaining consistent copies of data across the nodes comprises the following steps. A copy of an object o 1 is maintained by a plurality of nodes. In response to a request r 1 to update a copy of object o 1 , a message is sent to at least some of the plurality of nodes instructing a node receiving the message to invalidate its copy of object o 1 . In response to a node n 1 receiving an invalidation message arising from r 1 wherein n 1 is processing another request r 2 to update object o 1 , requests r 1 and r 2 are coordinated to prevent the requests from causing conflicting updates or invalidations.

Claims (75)

1. In a system comprised of a plurality of nodes, a method for storing consistent copies of objects across said plurality of nodes comprising steps of:

processing a plurality of requests to update the objects;

associating times with said plurality of requests;

storing a copy of an object o 1 by at least two of said plurality of nodes;

a first node n 0 receiving a request r 1 to update a copy of the object o 1 , wherein the request r 1 is associated with a time t 1 ;

the node n 0 sending an invalidation message m 1 including the time t 1 to at least one of said plurality of nodes;

a second node n 1 receiving the message m 1 ;

in response to the node n 1 being aware of another update request r 2 to the object o 1 , wherein the request r 2 is associated with a time t 2 , the node n 1 processing the message m 1 based on the time t 1 and the time t 2 ;

in response to the node n 0 receiving a negative reply to the message m 1 , the system aborting its attempt to update the object o 1 according to the request r 1 ; and

in response to the node n 0 receiving positive replies from each node to which the node n 0 sent the message m 1 , the system updating the object o 1 according to the request r 1 .

2. The method of claim 1 , wherein the node n 1 sends a negative response to the node n 0 in response to the time t 2 being after the time t 1 .

3. The method of claim 1 , wherein the node n 1 sends a positive response to the node n 0 in response to the time t 1 being after the time t 2 .

4. The method of claim 3 , wherein the node n 1 invalidates a copy of the object of that the node n 1 is storing.

5. The method of claim 1 , wherein the node n 1 is processing the request r 2 at the time the node n 1 receives the message m 1 .

6. The method of claim 1 , wherein the node n 1 has finished processing the request r 2 at the time the node n 1 receives the message m 1 .

7. The method of claim 2 , wherein the system updates the object o 1 according to the request r 2 .

8. The method of claim 1 , further comprising a step of:

in response to the system aborting its attempt to update the object of in response to the request r 1 , the system attempting again to update the object o 1 according to the request r 1 .

9. The method of claim 1 , further comprising steps of:

maintaining a log of updates to the object o 1 ; and

using said log to undo at least one update to the object o 1 .

10. The method of claim 1 , further comprising steps of:

maintaining statistics on frequencies with which objects are accessed and updated; and

in response to the object o 1 having a high ratio of accesses to updates, propagating a new value of the object o 1 to at least one remote node.

11. The method of claim 1 , further comprising steps of:

exchanging periodic heartbeat messages between said nodes to maintain availability information; and

in response to a node failing to respond to a heartbeat message after a time period has elapsed, declaring said node failed.

12. The method of claim 11 , further comprising a step of:

exchanging lists of failed nodes to ensure nodes have a similar notion of which nodes have failed.

13. The method of claim 1 , further comprising a step of:

in response to a node failing to respond to an invalidation message after a time period has elapsed, declaring said node failed.

14. In a system comprised of a plurality of nodes, a method for storing consistent copies of objects across said plurality of nodes comprising steps of:

processing a plurality of requests to update the objects;

associating times with said plurality of requests;

storing a copy of an object o 1 by at least two of said plurality of nodes;

a first node n 0 receiving a request r 1 to update a copy of the object o 1 , wherein the request r 1 is associated with a time t 1 ;

the node n 0 sending an invalidation message m 1 including the time t 1 to at least one of said plurality of nodes;

a second node n 1 receiving the message m 1 ;

in response to the node n 1 being aware of another update request r 2 to the object o 1 which the system is currently handling, wherein the request r 2 is associated with a time t 2 , the node n 1 processing the message m 1 based on the time t 1 and the time t 2 , and the system merging content from both the request r 1 and the request r 2 to create a new value for the object o 1 .

15. The method of claim 14 , further comprising steps of:

maintaining a log of updates to the object o 1 ; and

using said log to undo at least one update to the object o 1 .

16. The method of claim 14 , further comprising steps of:

maintaining statistics on frequencies with which objects are accessed and updated; and

in response to the object o 1 having a high ratio of accesses to updates, propagating a new value of the object o 1 to at least one remote node.

17. The method of claim 14 , further comprising steps of:

exchanging periodic heartbeat messages between said nodes to maintain availability information; and

in response to a node failing to respond to a heartbeat message after a time period has elapsed, declaring said node failed.

18. The method of claim 17 , further comprising a step of:

exchanging lists of failed nodes to ensure nodes have a similar notion of which nodes have failed.

19. The method of claim 14 , further comprising a step of:

in response to a node failing to respond to an invalidation message after a time period has elapsed, declaring said node failed.

20. In a system comprised of a plurality of nodes, an apparatus for storing consistent copies of objects across said plurality of nodes, comprising at a first node n 1 of the plurality of nodes:

a memory; and

a processor coupled to the memory and configured to:

receive a request r 1 to update a copy of an object o 1 , wherein the request r 1 is associated with a time t 1 and wherein the copy of the object o 1 is stored by at least two of said plurality of nodes;

send an invalidation message m 1 including the time t 1 to at least one of said plurality of nodes;

wherein a second node n 1 receives the message m 1 ;

in response to the node n 1 being aware of another update request r 2 to the object o 1 , wherein the request r 2 is associated with a time t 2 , the node n 1 processes the message m 1 based on the time t 1 and the time t 2 ; in response to the node n 0 receiving a negative reply to the message m 1 , the system aborts its attempt to update the object o 1 according to the request r 1 ; and, in response to the node n 0 receiving positive replies from each node to which the node n 0 sent the message m 1 , the system updates the object o 1 according to the request r 1 .

21. In a system comprised of a plurality of nodes, a computer program product for storing consistent copies of objects across said plurality of nodes, the computer program product comprising:

a computer readable storage medium associated with a first node n 0 of the plurality of nodes;

a first program instruction to receive a request r 1 to update a copy of an object o 1 , wherein the request r 1 is associated with a time t 1 and wherein the copy of the object o 1 is stored by at least two of said plurality of nodes; and

a second program instruction to send an invalidation message m 1 including the time t 1 to at least one of said plurality of nodes;

wherein a second node n 1 receives the message m 1 ; in response to the node n 1 being aware of another update request r 2 to the object o 1 , wherein the request r 2 is associated with a time t 2 , the node n 1 processes the message m 1 based on the time t 1 and the time t 2 ; in response to the node n 0 receiving a negative reply to the message m 1 , the system aborts its attempt to update the object o 1 according to the request r 1 ; and, in response to the node n 0 receiving positive replies from each node to which the node n 0 sent the message m 1 , the system updates the object o 1 according to the request r 1 .

22. In a system comprised of a plurality of nodes, an apparatus for storing consistent copies of objects across said plurality of nodes, comprising at a first node n 0 of the plurality of nodes:

a memory; and

a processor coupled to the memory and configured to:

receive a request r 1 to update a copy of an object o 1 , wherein the request r 1 is associated with a time t 1 and wherein the copy of the object o 1 is stored by at least two of said plurality of nodes;

send an invalidation message m 1 including the time t 1 to at least one of said plurality of nodes;

wherein a second node n 1 receives the message m 1 ; and, in response to the node n 1 being aware of another update request r 2 to the object o 1 which the system is currently handling, wherein the request r 2 is associated with a time t 2 , the node n 1 processing the message m 1 based on the time t 1 and the time t 2 , and the system merges content from both the request r 1 and the request r 2 to create a new value for the object o 1 .

23. In a system comprised of a plurality of nodes, a computer program product for storing consistent copies of objects across said plurality of nodes, the computer program product comprising:

a computer readable storage medium associated with a first node n 0 of the plurality of nodes;

a first program instruction to receive a request r 1 to update a copy of an object o 1 , wherein the request r 1 is associated with a time t 1 and wherein the copy of the object o 1 is stored by at least two of said plurality of nodes; and

a second program instruction to send an invalidation message m 1 including the time t 1 to at least one of said plurality of nodes;

wherein a second node n 1 receives the message m 1 ; and, in response to the node n 1 being aware of another update request r 2 to the object o 1 which the system is currently handling, wherein the request r 2 is associated with a time t 2 , the node n 1 processing the message m 1 based on the time t 1 and the time t 2 , and the system merges content from both the request r 1 and the request r 2 to create a new value for the object o 1 .

Assignments (3)
CHANGE OF NAME Recorded Aug 26, 2014
From: SAP AG
To: SAP SE
Reel/Frame 033625/0334 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2012
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: SAP AG
Reel/Frame 028540/0522 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 27, 2008
From: IYENGAR, ARUN KWANGIL; REPANTIS, THOMAS
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 021161/0091 →