IP Library Granted Patent US 8,612,688
Granted Patent B2
US 8,612,688 · App. 13/227,381 · Granted Dec 17, 2013

Distributed cache for graph 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 8,612,688
App. No.
13/227,381
Granted
Dec 17, 2013
Kind
B2
Abstract

A distributed caching system for storing and serving information modeled as a graph that includes nodes and edges that define associations or relationships between nodes that the edges connect in the graph.

Claims (38)

1. A method, comprising

receiving, at a first cache node, a request to add an association between a first node and a second node, wherein the first node is identified by a first identifier in a first range of identifiers allocated to the first cache node of a cluster, and wherein the second node is identified by a second identifier in a second range of identifiers allocated to a second cache node of the cluster;

storing data indicating the association between the first and second node in a memory of the first cache node; and

transmitting a message to the second cache node, wherein the message is operative to cause the second cache node to add the association between the first and second node in a memory of the second cache node.

2. The method of claim 1 further comprising identifying a shard identifier corresponding to the second identifier, and wherein the second cache node is associated with the identified shard identifier.

3. The method of claim 1 wherein the message signals to the second cache node that the message contains an update required to establish a bi-directional association in the cache layer between the first node and the second node.

4. The method of claim 1 further comprising forwarding the message to a leader cache node corresponding to a shard identifier associated with the first identifier.

5. The method of claim 1 wherein the first and second nodes are contained in a graph structure comprising one to a plurality of node types.

6. The method of claim 1 wherein the association is an identified association type of a plurality of association types.

7. The method of claim 1 wherein the request identifies an association type, and wherein the method further comprises

maintaining in a memory, for each association set corresponding to the first node of a plurality of nodes and an association type of a plurality of association types, a first index and a second index; wherein the first index comprises an ordered array of entries, each entry including a node identifier of a second node that is associated with the first node and a sorting attribute; wherein the second index comprises a hash table comprising entries corresponding to the node identifiers of respective second nodes that are associated with the first node; and

accessing the memory against the first association type and the first node identifier to add the second node identifier to a first index and a second index corresponding to the first association type and the first node identifier.

8. A cache node operative in a cluster of cache nodes, comprising

one or more processors;

a memory;

a non-transitory storage medium storing computer-readable instructions, the instructions, when executed, operative to cause the one or more processors to:

receive a request to add an association between a first node and a second node, wherein the first node is identified by a first identifier in a first range of identifiers allocated to the cache node of a cluster, and wherein the second node is identified by a second identifier in a second range of identifiers allocated to a second cache node of the cluster;

store data indicating the association between the first and second node in a memory of the cache node; and

transmit a message to the second cache node, wherein the message is operative to cause the second cache node to add the association between the first and second node in a memory of the second cache node.

9. The cache node of claim 8 wherein the instructions are further operative to cause the one or more processors to identify a shard identifier corresponding to the second identifier, and wherein the second cache node is associated with the identified shard identifier.

10. The cache node of claim 8 wherein the message signals to the second cache node that the message contains an update required to establish a bi-directional association in the cache layer between the first node and the second node.

11. The cache node of claim 8 wherein the instructions are further operative to cause the one or more processors to forward the message to a leader cache node corresponding to a shard identifier associated with the first identifier.

12. The cache node of claim 8 wherein the first and second nodes are contained in a graph structure comprising one to a plurality of node types.

13. The cache node of claim 8 wherein the association is an identified association type of a plurality of association types.

14. The cache node of claim 8 wherein the request identifies an association type, and wherein the instructions are further operative to cause the one or more processors to

maintain in a memory, for each association set corresponding to the first node of a plurality of nodes and an association type of a plurality of association types, a first index and a second index; wherein the first index comprises an ordered array of entries, each entry including a node identifier of a second node that is associated with the first node and a sorting attribute; wherein the second index comprises a hash table comprising entries corresponding to the node identifiers of respective second nodes that are associated with the first node; and

access the memory against the first association type and the first node identifier to add the second node identifier to a first index and a second index corresponding to the first association type and the first node identifier.

15. A non-transitory storage medium storing computer-readable instructions, the instructions, when executed, operative to cause one or more processors to:

receive, at a first cache node, a request to add an association between a first node and a second node, wherein the first node is identified by a first identifier in a first range of identifiers allocated to the first cache node of a cluster, and wherein the second node is identified by a second identifier in a second range of identifiers allocated to a second cache node of the cluster;

store data indicating the association between the first and second node in a memory of the first cache node; and

transmit a message to the second cache node, wherein the message is operative to cause the second cache node to add the association between the first and second node in a memory of the second cache node.

16. The storage medium of claim 15 wherein the instructions are further operative to cause the one or more processors to identify a shard identifier corresponding to the second identifier, and wherein the second cache node is associated with the identified shard identifier.

17. The storage medium of claim 15 wherein the message signals to the second cache node that the message contains an update required to establish a bi-directional association in the cache layer between the first node and the second node.

18. The storage medium of claim 15 wherein the instructions are further operative to cause the one or more processors to forward the message to a leader cache node corresponding to a shard identifier associated with the first identifier.

19. The storage medium of claim 15 wherein the association is an identified association type of a plurality of association types.

20. The storage medium of claim 15 wherein the request identifies an association type, and wherein the instructions are further operative to cause the one or more processors to

maintain in a memory, for each association set corresponding to the first node of a plurality of nodes and an association type of a plurality of association types, a first index and a second index; wherein the first index comprises an ordered array of entries, each entry including a node identifier of a second node that is associated with the first node and a sorting attribute; wherein the second index comprises a hash table comprising entries corresponding to the node identifiers of respective second nodes that are associated with the first node; and

access the memory against the first association type and the first node identifier to add the second node identifier to a first index and a second index corresponding to the first association type and the first node identifier.

Assignments (1)
CHANGE OF NAME Recorded Dec 20, 2021
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 058553/0802 →