SYSTEMS AND METHODS TO PROCESS A QUERY WITH A UNIFIED STORAGE INTERFACE
Systems and methods to process a query with a unified storage interface are described. The system receives a query from a client machine and generates a query expression tree based on the query expression. The system generates a cursor expression tree based on the query expression tree. The system executes a plurality of software components in the cursor expression tree to retrieve data from a first storage device. The plurality of software components comprise a first software component that is utilized to retrieve data irrespective of a plurality of storage devices and a second software component that is utilized to retrieve data from a first storage device. Finally, the system communicates search results to the client machine, the search results include at least a portion of the data.
1 . A system comprising:
a front-end server to receive a query, over a network, from a client machine, the query includes a query expression that includes at least one keyword:
a query engine to generate a query expression tree based on the query expression, the query expression tree includes a plurality of nodes that are representative of the query expression, the query engine to generate a cursor expression tree based on the query expression tree, the cursor expression tree includes a plurality of software components that correspond to the plurality of nodes in the query expression tree, the query engine to execute the plurality of software components in the cursor expression tree to retrieve data from a first storage device, the plurality of software components comprise a first software component that is utilized to retrieve data irrespective of a plurality of storage devices and a second software component that is utilized to retrieve data from a first storage device that is included in the plurality of storage devices, the front-end server to communicate search results, over the network, to the client machine, the search results include at least a portion of the data.
2 . The system of claim 1 , wherein the first software component includes a storage cursor object.
3 . The system of claim 1 , wherein the query engine generates the first software component based on an “AND” expression node in the query expression tree.
4 . The system of claim 1 , wherein the query engine generates the second software component based on a term expression node in the query expression tree.
5 . The system of claim 4 , wherein the query engine identifies the first storage device based on an input table that is associated with the term expression.
6 . The system of claim 1 , wherein the query engine identifies a second storage device based on a second input table that is associated with a second query expression that is included in a second query that is received from the client machine.
7 . The system of claim 6 , wherein the second storage device is utilized to store data in directed graph format.
8 . The system of claim 1 , wherein the first storage device is utilized to store data in a relational format that includes tuples.
9 . The system of claim 1 , wherein the query engine stores the first and second software components in the cursor expression tree.
10 . A method comprising:
receiving a query, over a network, from a client machine, the query including a query expression that includes at least one keyword;
generating a query expression tree based on the query expression, the query expression tree including a plurality of nodes being that are representative of the query expression;
generating a cursor expression tree based on a query expression tree, the cursor expression tree including a plurality of software components that correspond to the plurality of nodes in the query expression tree;
executing the plurality of software components in the cursor expression tree to retrieve data from a first storage device, the plurality of software components comprising a first software component that is utilized to retrieve data irrespective of a plurality of storage devices and a second software component that is utilized to retrieve data from a first storage device that is included in the plurality of storage devices; and
communicating search results, over the network, to the client machine, the search results including at least a portion of the data.
11 . The method of claim 10 , wherein the first software component includes a storage cursor object.
12 . The method of claim 10 , wherein the generating the cursor expression tree includes generating the first software component based on an “AND” expression node in the query expression tree.
13 . The method of claim 10 , wherein the generating the cursor expression tree includes generating the second software component based on a term expression node in the query expression tree.
14 . The method of claim 13 , further comprising identifying the first storage device based on an input table that is associated with the term expression.
15 . The method of claim 10 , further comprising identifying a second storage device based on an second input table that is associated with a second query expression that is included in a second query that is received from the client machine.
16 . The method of claim 15 , wherein the second storage device is utilized to store data in directed graph format.
17 . The method of claim 10 , wherein the first storage device is utilized to store data in a relational format that includes tuples.
18 . The method of claim 10 , further comprising storing the first and second software components in the cursor expression tree.
19 . A machine readable medium storing instructions, which when executed on a processor, cause the processor to perform a method comprising.
receiving a query, over a network, from a client machine, the query including a query expression that includes at least one keyword,
generating a query expression tree based on the query expression, the query expression tree including a plurality of nodes being that are representative of the query expression;
generating a cursor expression tree based on a query expression tree, the cursor expression tree including a plurality of software components that correspond to the plurality of nodes in the query expression tree:
executing the plurality of software components in the cursor expression tree to retrieve data from a first storage device, the plurality of software components comprising a first software component that is utilized to retrieve data irrespective of a plurality of storage devices and a second software component that is utilized to retrieve data from a first storage device that is included in the plurality of storage devices; and
communicating search results, over the network, to the client machine, the search results including at least a portion of the data.
20 . A system comprising:
a front-end server to receive a query, over a network, from a client machine, the query includes a query expression that includes at least one keyword;
a means for generating a query expression tree based on the query expression, the query expression tree includes a plurality of nodes that are representative of the query expression, a query engine to generate a cursor expression tree based on the query expression tree, the cursor expression tree includes a plurality of software components that correspond to the plurality of nodes in the query expression tree, the means for executing the plurality of software components in the cursor expression tree to retrieve data from a first storage device, the plurality of software components comprise a first software component that is utilized to retrieve data irrespective of a plurality of storage devices and a second software component that is utilized to retrieve data from a first storage device that is included in the plurality of storage devices, the front-end server to communicate search results, over the network, to the client machine, the search results include at least a portion of the data.