IP Library Patent Application 15003527
Patent Application
App. No. 15/003,527

BRANCHABLE GRAPH DATABASES

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 None
App. No.
15/003,527
Abstract

The disclosed embodiments provide a system for providing a graph database storing a graph. During operation, the system executes one or more processes for providing the graph database. Next, the system stores a sequence of changes to the graph in a base version of the graph database. The system then branches a version of the graph database from a virtual time in the base version. Finally, the system uses the branched version to process one or more queries of the graph database.

Claims (63)

1 . A method, comprising:

executing, on a computer system, one or more processes for providing a graph database storing a graph, wherein the graph comprises a set of nodes, a set of edges between pairs of nodes in the set of nodes, and a set of predicates; and

maintaining, by the one or more processes, the graph database by:

storing a sequence of changes to the graph in a base version of the graph database;

branching a version of the graph database from a virtual time in the base version; and

using the branched version to process one or more queries of the graph database.

2 . The method of claim 1 , wherein using the branched version to process the one or more queries of the graph database comprises:

receiving a first query as a write request that comprises one or more additional changes to the graph; and

writing the one or more additional changes to the branched version.

3 . The method of claim 2 , wherein using the branched version to process the one or more queries of the graph database further comprises:

verifying a successful write of the one or more additional changes to the branched version; and

merging the one or more additional changes from the branched version into the base version.

4 . The method of claim 3 , wherein merging the one or more changes into the base version comprises:

appending the one or more additional changes to the sequence of changes in the base version.

5 . The method of claim 3 ,

wherein the one or more additional changes are written to the branched version during a user session; and

wherein the one or more additional changes are merged from the branched version into the base version at an end of the user session.

6 . The method of claim 2 , wherein using the branched version to process the one or more queries of the graph database further comprises:

receiving a second query as a read request; and

providing, in response to the second query, a result that comprises the one or more additional changes from the branched version and one or more changes from the base version that predate a creation of the branched version.

7 . The method of claim 2 , wherein the one or more additional changes comprise one or more temporary changes to the graph database.

8 . The method of claim 1 , wherein branching the version of the graph database from the virtual time in the base version comprises:

referencing, from the branched version, an offset in the base version that represents the virtual time; and

using the branched version to track an additional sequence of changes to the graph after the virtual time.

9 . The method of claim 1 , wherein using the branched version to process the one or more queries of the graph database comprises:

using the branched version to process read requests independently of updates to the sequence of changes in the base version.

10 . The method of claim 1 , wherein using the branched version to process one or more queries of the graph database comprises:

creating an index from the branched version; and

using the index to process the one or more queries.

11 . An apparatus, comprising:

one or more processors; and

memory storing instructions that, when executed by the one or more processors, cause the apparatus to:

execute one or more processes for providing a graph database storing a graph, wherein the graph comprises a set of nodes, a set of edges between pairs of nodes in the set of nodes, and a set of predicates;

store a sequence of changes to the graph in a base version of the graph database;

branch a version of the graph database from a virtual time in the base version; and

use the branched version to process one or more queries of the graph database.

12 . The apparatus of claim 11 , wherein using the branched version to process the one or more queries of the graph database comprises:

receiving a first query as a write request that comprises one or more additional changes to the graph; and

writing the one or more additional changes to the branched version.

13 . The apparatus of claim 12 , wherein using the branched version to process the one or more queries of the graph database further comprises:

verifying a successful write of the one or more additional changes to the branched version; and

merging the one or more additional changes from the branched version into the base version.

14 . The apparatus of claim 13 ,

wherein the one or more additional changes are written to the branched version during a user session, and

wherein the one or more additional changes are merged from the branched version into the base version at an end of the user session.

15 . The apparatus of claim 12 , wherein using the branched version to process the one or more queries of the graph database further comprises:

receiving a second query as a read request; and

providing, in response to the second query, a result that comprises the one or more additional changes from the branched version and one or more changes from the base version that predate a creation of the branched version.

16 . The apparatus of claim 12 , wherein the one or more additional changes comprise one or more temporary changes to the graph database.

17 . The apparatus of claim 11 , wherein branching the version of the graph database from the virtual time in the base version comprises:

referencing, from the branched version, an offset in the base version that represents the virtual time; and

using the branched version to track an additional sequence of changes to the graph after the virtual time.

18 . The apparatus of claim 11 , wherein using the branched version to process the one or more queries of the graph database comprises:

using the branched version to process read requests independently of updates to the sequence of changes in the base version.

19 . A system, comprising:

a management module comprising a non-transitory computer-readable medium comprising instructions that, when executed by one or more processors, cause the system to execute one or more processes for providing a graph database storing a graph, wherein the graph comprises a set of nodes, a set of edges between pairs of nodes in the set of nodes, and a set of predicates; and

a processing module comprising a non-transitory computer-readable medium comprising instructions that, when executed by the one or more processors, cause the system to maintain, by the one or more processes, the graph database by:

store a sequence of changes to the graph in a base version of the graph database;

branch a version of the graph database from a virtual time in the base version; and

use the branched version to process one or more queries of the graph database.

20 . The system of claim 19 , wherein branching the version of the graph database from the virtual time in the base version comprises:

referencing, from the branched version, an offset in the base version that represents the virtual time; and

using the branched version to track an additional sequence of changes to the graph after the virtual time.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 1, 2017
From: LINKEDIN CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 044746/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 12, 2016
From: SHANKAR, SHYAM; MEYER, SCOTT M.
To: LINKEDIN CORPORATION
Reel/Frame 037725/0372 →