Graph processing using a mutable multilevel graph representation
First Claim
1. A system, comprising:
- one or more processors; and
a memory coupled to the one or more processors;
wherein the memory stores at least a portion of a mutable multilevel data structure that represents a graph structure;
wherein the memory further stores program instructions that when executed on the one or more processors cause the one or more processors to implement a graph processing module;
wherein in response to receiving a request to perform a computation on the graph structure, the graph processing module is configured to reconstruct an adjacency list for a given vertex of the graph structure from information stored in the mutable multilevel data structure that represents the graph structure; and
wherein the mutable multilevel data structure comprises two or more read-only data structures that collectively represent a read-only snapshot of the graph structure, wherein one of the two or more read-only data structures at a given level of the mutable multilevel data structure comprises a consistent compressed sparse row representation of the graph structure at a given point in time, wherein each of the two or more read-only data structures is located at a respective level in the mutable multilevel data structure, wherein each of the two or more read-only data structures comprises a respective vertex table and edge table, and wherein another one of the two or more read-only data structures at another level of the mutable multilevel data structure includes a vertex table with one or more references to an edge table in the one read-only data structure at the given level.
1 Assignment
0 Petitions
Accused Products
Abstract
A mutable multilevel data structure representing a graph structure may include multiple read-only levels and a single writable level. Each read-only level may include a vertex table (with references to edge tables on the same level or a different level containing elements of adjacency lists for some vertices) and an edge table (with elements of adjacency lists that changed since the previous read-only level). A hybrid variant may switch between a performance-optimized variant (whose edge tables include complete adjacency lists for vertices whose edge sets were modified) and a space-optimized variant (whose edge tables include only newly added adjacency list elements). The vertex tables and/or the writable level may be implemented using copy-on-write arrays, each including an indirection table and multiple fixed-sized data pages. Computations may be run on the read-only levels or on the writable level and read-only levels.
16 Citations
20 Claims
-
1. A system, comprising:
-
one or more processors; and a memory coupled to the one or more processors; wherein the memory stores at least a portion of a mutable multilevel data structure that represents a graph structure; wherein the memory further stores program instructions that when executed on the one or more processors cause the one or more processors to implement a graph processing module; wherein in response to receiving a request to perform a computation on the graph structure, the graph processing module is configured to reconstruct an adjacency list for a given vertex of the graph structure from information stored in the mutable multilevel data structure that represents the graph structure; and wherein the mutable multilevel data structure comprises two or more read-only data structures that collectively represent a read-only snapshot of the graph structure, wherein one of the two or more read-only data structures at a given level of the mutable multilevel data structure comprises a consistent compressed sparse row representation of the graph structure at a given point in time, wherein each of the two or more read-only data structures is located at a respective level in the mutable multilevel data structure, wherein each of the two or more read-only data structures comprises a respective vertex table and edge table, and wherein another one of the two or more read-only data structures at another level of the mutable multilevel data structure includes a vertex table with one or more references to an edge table in the one read-only data structure at the given level. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A method, comprising:
-
receiving a request to perform a computation on a graph structure, wherein the graph structure is represented by a mutable multilevel data structure stored in a memory; and in response to said receiving, a graph processing module reconstructing an adjacency list for a given vertex of the graph structure from information stored in the mutable multilevel data structure that represents the graph structure; wherein the mutable multilevel data structure comprises two or more read-only data structures that collectively represent a read-only snapshot of the graph structure, wherein one of the two or more read-only data structures at a given level of the mutable multilevel data structure comprises a consistent compressed sparse row representation of the graph structure at a given point in time, wherein each of the two or more read-only data structures is located at a respective level in the mutable multilevel data structure, wherein each of the two or more read-only data structures comprises a respective vertex table and edge table, and wherein another one of the two or more read-only data structures at another level of the mutable multilevel data structure includes a vertex table with one or more references to an edge table in the one read-only data structure at the given level; and wherein to reconstruct the adjacency list for the given vertex, the graph processing module is configured to; traverse one or more of the two or more read-only data structures to obtain elements of the adjacency list for the given vertex; and add the obtained elements to the adjacency list for the given vertex. - View Dependent Claims (18)
-
-
19. A non-transitory, computer-readable storage medium storing program instructions that when executed on one or more computers cause the one or more computers to implement a graph processing module, wherein the graph processing module is configured to perform:
-
receiving a request to perform a computation on a graph structure, wherein the graph structure is represented by a mutable multilevel data structure stored in a memory; and in response to receiving the request, reconstructing an adjacency list for a given vertex of the graph structure from information stored in the mutable multilevel data structure that represents the graph structure; wherein the mutable multilevel data structure comprises two or more read-only data structures that collectively represent a read-only snapshot of the graph structure, wherein one of the two or more read-only data structures at a given level of the mutable multilevel data structure comprises a consistent compressed sparse row representation of the graph structure at a given point in time, wherein each of the two or more read-only data structures is located at a respective level in the mutable multilevel data structure, wherein each of the two or more read-only data structures comprises a respective vertex table and edge table, and wherein another one of the two or more read-only data structures at another level of the mutable multilevel data structure includes a vertex table with one or more references to an edge table in the one read-only data structure at the given level. - View Dependent Claims (20)
-
Specification