Query engine for graph databases and heterogeneous hardware
AssigneeNeo4j Sweden AB
InventorJames Clarkson
Life of this patent
Estimating the term…
Abstract
Database query processing techniques are disclosed. In various embodiments, a query associated with a database is received. A byte code representation of the query is generated, including by decomposing the query into a discrete set of streaming operators defined over associated data frames, wherein the byte code includes code defining for each operator in the discrete set of streaming operators the processing to be performed by that operator and further embodies a data flow graph that defines a flow of data to and through the discrete set of streaming operators. The byte code is executed by a query processing engine to generate and return a query result.
Claims20
A system, comprising:
- a processor configured to:
- receive at a client device a query associated with a database, wherein the query is expressed in one of a plurality of supported query languages;
- generate a byte code representation of the query, including by decomposing the query into a discrete set of streaming operators defined over associated data frames, wherein the byte code includes code defining for each operator in the discrete set of streaming operators the processing to be performed by that operator and further embodies a data flow graph that defines a flow of data to and through the discrete set of streaming operators;
- serialize the byte code and sending the serialized byte code to a remote database server;
- receive from the remote server a response to the query;
- and
- return the response;
- and
- a memory coupled to the processor and configured to store the byte code representation of the query;
- wherein the remote server is configured to execute the byte code to instantiate one or more instances of operator in the discrete set of streaming operators and use the data flow graph to manage the flow of data to and through the respective streaming operators and use data frames in an output queue of a final operator in the data flow graph to provide the result to the query.
A method, comprising:
- receiving at a client device a query associated with a database, wherein the query is expressed in one of a plurality of supported query languages;
- generating a byte code representation of the query, including by decomposing the query into a discrete set of streaming operators defined over associated data frames, wherein the byte code includes code defining for each operator in the discrete set of streaming operators the processing to be performed by that operator and further embodies a data flow graph that defines a flow of data to and through the discrete set of streaming operators;
- storing the byte code representation of the query;
- serializing the byte code and sending the serialized byte code to a remote database server;
- receiving from the remote server a response to the query;
- and
- returning the response;
- wherein the remote server is configured to execute the byte code to instantiate one or more instances of operator in the discrete set of streaming operators and use the data flow graph to manage the flow of data to and through the respective streaming operators and use data frames in an output queue of a final operator in the data flow graph to provide the result to the query.
A computer program product embodied in a non-transitory computer readable medium and comprising computer instructions for:
- receiving at a client device a query associated with a database, wherein the query is expressed in one of a plurality of supported query languages;
- generating a byte code representation of the query, including by decomposing the query into a discrete set of streaming operators defined over associated data frames, wherein the byte code includes code defining for each operator in the discrete set of streaming operators the processing to be performed by that operator and further embodies a data flow graph that defines a flow of data to and through the discrete set of streaming operators;
- storing the byte code representation of the query
- serializing the byte code and sending the serialized byte code to a remote database server;
- receiving from the remote server a response to the query;
- and
- returning the response;
- wherein the remote server is configured to execute the byte code to instantiate one or more instances of operator in the discrete set of streaming operators and use the data flow graph to manage the flow of data to and through the respective streaming operators and use data frames in an output queue of a final operator in the data flow graph to provide the result to the query.
Dependencies are inferred from the claim text.