Graphic visualization for large-scale networking
US-9092744-B2 · Jul 28, 2015 · US
US11120082B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-11120082-B2 |
| Application number | US-201815956115-A |
| Country | US |
| Kind code | B2 |
| Filing date | Apr 18, 2018 |
| Priority date | Apr 18, 2018 |
| Publication date | Sep 14, 2021 |
| Grant date | Sep 14, 2021 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
Techniques are provided herein for efficient representation of heterogeneous graphs in memory. In an embodiment, vertices and edges of the graph are segregated by type. Each property of a type of vertex or edge has values stored in a respective vector. Directed or undirected edges of a same type are stored in compressed sparse row (CSR) format. The CSR format is more or less repeated for edge traversal in either forward or reverse direction. An edge map translates edge offsets obtained from traversal in the reverse direction for use with data structures that expect edge offsets in the forward direction. Subsequent filtration and/or traversal by type or property of vertex or edge entails minimal data access and maximal data locality, thereby increasing efficient use of the graph.
Opening claim text (preview).
What is claimed is: 1. A method, performed by one or more computers, and comprising: associating each vertex of a graph, which resides in memory, with a unique offset; for each relationship of a plurality of relationships in a data source: a) associating the relationship with these objects that reside in the memory: a respective distinct edge type in the graph for connecting a source vertex of a particular source vertex type with a destination vertex of a particular destination vertex type, a respective distinct source vector that is sorted, and a respective distinct destination vector that is sorted; b) for each instance of a plurality of instances of the relationship, creating, in the graph, a directed edge, which represents the instance of the relationship, as an instance of the distinct edge type of the relationship, wherein the directed edge comprises a source vertex of the graph and a destination vertex of the graph; c) for each vertex of the particular source vertex type: for each directed edge, of the distinct edge type, that has said vertex as its source vertex, storing, into the distinct destination vector, the unique offset of the destination vertex of the directed edge; and storing, into the distinct source vector, at the unique offset of said vertex, a last position, within the distinct destination vector, that contains a unique offset; d) associating the distinct edge type with these objects that reside in the memory: a respective distinct reverse source vector that is sorted, and a respective distinct reverse destination vector that is sorted; and e) for each vertex of the particular destination vertex type: for each directed edge, of the distinct edge type, that has said vertex as its destination vertex, storing, into same said distinct reverse destination vector, the unique offset of the source vertex of the directed edge; and storing, into same said distinct reverse source vector, at the unique offset of the said vertex, a last position, within the distinct reverse destination vector, that contains a unique offset; reading the graph by accessing at least one vector selected from: the distinct source vector of a relationship of a distinct edge type and the distinct destination vector of the relationship. 2. The method of claim 1 further comprising: associating a data field of a relationship of the data source with: a particular edge type, and an edge property vector that resides in the memory; for each instance of the relationship: associating a distinct directed edge with a unique offset; and storing a value from the data field of the instance into the edge property vector at the unique offset of the distinct directed edge. 3. The method of claim 1 wherein: a particular vector is one of: said distinct source vector or said distinct destination vector; contents of the particular vector are not word aligned. 4. The method of claim 3 wherein contents of the particular vector are bit packed. 5. The method of claim 1 further comprising, for each edge type of the graph: associating the edge type with a distinct edge mapping array; for each edge of the edge type, storing, into the distinct edge mapping array, in a same ordering of edges as the distinct reverse destination vector, a position, within the distinct destination vector, of said directed edge. 6. A method, performed by one or more computers, and comprising: associating each vertex of a graph, which resides in memory, with a unique offset; for each relationship of a plurality of relationships in a data first: associating the relationship with these objects that reside in the memory: a respective distinct arc type in the graph for connecting a first vertex of a particular first vertex type with a second vertex of a particular second vertex type, a respective distinct first vector that is sorted, and a respective distinct second vector that is sorted; for each instance of a plurality of instances of the relationship, creating, in the graph, an undirected arc, which represents the instance of the relationship, as an instance of the distinct arc type of the relationship, wherein the undirected arc comprises a first vertex of the graph and a second vertex of the graph; and for each vertex of the particular first vertex type: for each undirected arc, of the distinct arc type, that has said vertex as its first vertex, storing, into same said distinct second vector, the unique offset of the second vertex of the undirected arc; and storing, into same said distinct first vector, at the unique offset of said vertex, a last position, within the distinct second vector, that contains a unique offset; reading the graph by accessing at least one vector selected from: the distinct first vector of a relationship of a distinct arc type and the distinct second vector of the relationship. 7. The method of claim 6 wherein: the particular first vertex type is the particular second vertex type; the method further comprises: for each arc of said distinct arc type, storing, into the distinct second vector, the unique offset of the first vertex; and for each vertex of the graph of the particular first vertex type, storing, into the distinct first vector, at the unique offset of said vertex, a last position, within the distinct second vector, that contains a unique offset of a first vertex of an undirected arc that has said vertex as a second vertex. 8. One or more non-transient computer-readable media storing instructions that, when executed by one or more processors, cause: associating each vertex of a graph, which resides in memory, with a unique offset; for each relationship of a plurality of relationships in a data source: a) associating the relationship with these objects that reside in the memory: a respective distinct edge type in the graph for connecting a source vertex of a particular source vertex type with a destination vertex of a particular destination vertex type, a respective distinct source vector that is sorted, and a respective distinct destination vector that is sorted; b) for each instance of a plurality of instances of the relationship, creating, in the graph, a directed edge, which represents the instance of the relationship, as an instance of the distinct edge type of the relationship, wherein the directed edge comprises a source vertex of the graph and a destination vertex of the graph; c) for each vertex of the particular source vertex type: for each directed edge, of the distinct edge type, that has said vertex as its source vertex, storing, into the distinct destination vector, the unique offset of the destination vertex of the directed edge; and storing, into the distinct source vector, at the unique offset of said vertex, a last position, within the distinct destination vector, that contains a unique offset; d) associating the distinct edge type with these objects that reside in the memory: a respective distinct reverse source vector that is sorted, and a respective distinct reverse destination vector that is sorted; and e) for each vertex of the particular destination vertex type: for each directed edge, of the distinct edge type, that has said vertex as its destination vertex, storing, into same said distinct reverse destination vector, the unique offset of the source vertex of the directed edge; and storing, into same said distinct reverse source vector, at the unique offset of the said vertex, a last position, within the distinct reverse destination vector, that contains a unique offset; reading the graph by accessing at least one vector selected from: the distinct source vector of a relationship of a distinct edge type and the distinct destination vector of the relationship. 9. The
Entity relationship models · CPC title
Graphs; Linked lists (G06F16/9027 takes precedence) · CPC title
Vectors, bitmaps or matrices · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.