Sophisticated run-time system for graph processing
US-2016188391-A1 · Jun 30, 2016 · US
US2016117358A1 · US · A1
| Field | Value |
|---|---|
| Publication number | US-2016117358-A1 |
| Application number | US-201414524838-A |
| Country | US |
| Kind code | A1 |
| Filing date | Oct 27, 2014 |
| Priority date | Oct 27, 2014 |
| Publication date | Apr 28, 2016 |
| Grant date | — |
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 for a graph database system that accepts custom graph analytic programs that are written in a high-level graph-specific programming language and compiles the programs into executables that, when executed, directly access graph data of a graph that is stored in the graph database. In this way, a low-level data-access API is avoided. Also, a graph analytic program, which only describes an abstract description of an algorithm, does not include any details regarding data access. In one technique, a user is not required to include explicit parallelization in a graph analytic program in order for the graph analytic program to take advantage of parallelization. A compiler of the graph database system identifies portions of the graph analytic program that can benefit from parallelization and, in response, generates parallelized executable code that corresponds to those portions.
Opening claim text (preview).
What is claimed is: 1 . A method comprising: receiving, from a client device, at a graph database system, a graph analytic program that is written in a graph-specific programming language; in response to receiving the graph analytic program, compiling, at the graph database system, the graph analytic program to generate an executable; storing, in volatile memory, graph data of a particular graph that the graph analytic program targets; executing the executable to directly access the graph data; generating, at the graph database system, results of executing the executable; sending the results from the graph database system to the client device; wherein the method is performed by one or more computing devices. 2 . The method of claim 1 , wherein executing the executable comprises: creating local variables in a portion, of the volatile memory, that is private relative to execution of other executables in the graph database; after the executable is done executing, deleting the local variables. 3 . The method of claim 1 , wherein: compiling the graph analytic program comprises inserting, into the executable, transaction-related code that, when executed, begin one or more transactions and end the one or more transactions. 4 . The method of claim 3 , wherein: compiling the graph query comprises analyzing the graph analytic program to identify, within the graph analytic program, one or more locations in which a portion of the graph data is modified; inserting comprises inserting the transaction-related code into the executable based on the one or more locations. 5 . The method of claim 1 , further comprising: storing, at the graph database system, configuration data that indicates that a first graph is read-only; receiving, at the graph database system, a second graph analytic program that is written in the graph-specific query language and that targets the first graph; in response to receiving the second graph analytic program, analyzing, at the graph database system, the second graph analytic program; wherein analyzing the second graph analytic program comprises determining whether the second graph analytic program, if processed, would modify the first graph. in response to determining that the second graph analytic program, if processed, would modify the first graph, rejecting the second graph analytic program. 6 . The method of claim 1 , further comprising: receiving, at the graph database system, a second graph analytic program that is written in the graph-specific query language and that targets a first graph; in response to receiving the second graph analytic program, compiling, at the graph database system, the second graph analytic program to generate a second executable; wherein compiling the second graph analytic program comprises inserting, into the second executable, a cancel codes that, when executed, checks a flag variable; while executing the second executable, executing the cancel code to determine whether the flag variable is set; if the flag variable is set, then ceasing to execute the second executable. 7 . The method of claim 1 , further comprising: receiving, at the graph database system, a second graph analytic program that is written in the graph-specific query language and that targets a first graph; in response to receiving the second graph analytic program, compiling, at the graph database system, the second graph analytic program to generate a second executable; wherein compiling the second graph analytic program comprises inserting, into the second executable, a type check codes that, when executed, checks whether an object property stored in the graph database system is the same as an object property indicated in the second graph analytic program; while executing the second executable, executing the type check code to determine whether the object property stored in the graph database system is the same as the object property indicated in the second graph analytic program; if the object property stored in the graph database system is not the same as the object property indicated in the second graph analytic program, then ceasing to execute the second executable. 8 . The method of claim 1 , wherein compiling the graph analytic program to generate the executable comprises: identifying a portion of the graph analytic program that can benefit from parallelization, and generating, of the executable, a particular portion that is parallelized and that corresponds to the portion of the graph analytic program. 9 . The method of claim 8 , wherein compiling the graph analytic program to generate the executable comprises: identifying, within the graph analytic program, a plurality of nesting levels; determining to parallelize a first nesting level of the plurality of nesting levels; determining to parallelize a second nesting level, of the plurality of nesting levels, that is different than the first nesting level; wherein the first nesting level is within the second nesting level or the second nesting level is within the first nesting level. 10 . The method of claim 1 , wherein: graph, vertex, and edge are native data types of the graph-specific programming language; the graph-specific programming language defines an operator for iterating neighbors of a vertex; the graph-specific programming language defines an operator for iterating common neighbors of two vertices; or the graph-specific programming language defines an operator for selecting a random neighbor of a given vertex. 11 . One or more non-transitory storage media storing instructions which, when executed by one or more computing devices, cause: receiving, from a client device, at a graph database system, a graph analytic program that is written in a graph-specific programming language; in response to receiving the graph analytic program, compiling, at the graph database system, the graph analytic program to generate an executable; storing, in volatile memory, graph data of a particular graph that the graph analytic program targets; executing the executable to directly access the graph data; generating, at the graph database system, results of executing the executable; sending the results from the graph database system to the client device. 12 . The one or more non-transitory storage media of claim 11 , wherein executing the executable comprises: creating local variables in a portion, of the volatile memory, that is private relative to execution of other executables in the graph database; after the executable is done executing, deleting the local variables. 13 . The one or more non-transitory storage media of claim 11 , wherein: compiling the graph analytic program comprises inserting, into the executable, transaction-related code that, when executed, begin one or more transactions and end the one or more transactions. 14 . The one or more non-transitory storage media of claim 13 , wherein: compiling the graph query comprises analyzing the graph analytic program to identify, within the graph analytic program, one or more locations in which a portion of the graph data is modified; inserting comprises inserting the transaction-related code into the executable based on the one or more locations. 15 . The one or more non-transitory storage media of claim 11 , wherein the instructions, when executed by the one or more processors, further cause: storing, at the graph database system, configuration data that indicates that a first graph is read-only; receiving, at the graph database system, a second graph analytic program that is written in th
Indexing structures · CPC title
Techniques for rebalancing the load in a distributed system · CPC title
Querying · CPC title
Graphs; Linked lists (G06F16/9027 takes precedence) · CPC title
Programming languages or programming paradigms · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.