SYSTEMS AND METHODS FOR FAULT TOLERANT, ADAPTIVE EXECUTION OF ARBITRARY QUERIES AT LOW LATENCY
First Claim
1. A system for performing distributed execution of database queries, the system comprising:
- a query server comprising at least one memory storing computer executable instructions and at least one processing unit for executing the instructions, wherein execution of the instructions causes the at least one processing unit to;
receive a query to be executed on a database;
form a query plan based on the query, the query plan comprising a plurality of operators, each operator divided into one or more tasks;
assign tasks to task slots on a plurality of worker nodes in a cluster, wherein the task slots comprise pools of resources that run tasks without start-up overhead; and
upon receipt of a notification that a task has completed on a worker node, immediately assign an unassigned task to a free task slot on that worker node, such that the task may begin executing on that worker node substantially immediately thereafter.
2 Assignments
0 Petitions
Accused Products
Abstract
A system and method for performing distributed execution of database queries includes a query server that receives a query to be executed on a database, forms a query plan based on the query, assigns tasks to task slots on a plurality of worker nodes in a cluster, and, upon receipt of a notification that a task has completed on a worker node, immediately assigns an unassigned task to a free task slot on that worker node, such that the task may begin executing on that worker node substantially immediately thereafter. The task slots on worker nodes include pools of resources that run tasks without start-up overhead.
-
Citations
40 Claims
-
1. A system for performing distributed execution of database queries, the system comprising:
-
a query server comprising at least one memory storing computer executable instructions and at least one processing unit for executing the instructions, wherein execution of the instructions causes the at least one processing unit to; receive a query to be executed on a database; form a query plan based on the query, the query plan comprising a plurality of operators, each operator divided into one or more tasks; assign tasks to task slots on a plurality of worker nodes in a cluster, wherein the task slots comprise pools of resources that run tasks without start-up overhead; and upon receipt of a notification that a task has completed on a worker node, immediately assign an unassigned task to a free task slot on that worker node, such that the task may begin executing on that worker node substantially immediately thereafter. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A system for performing distributed execution of database queries, the system comprising:
a plurality of worker nodes, each worker node comprising; a first memory storing at least a portion of a database; a second memory storing computer executable instructions; and at least one processing unit for executing the instructions, wherein execution of the instructions causes the worker node to; receive, from a query server, an assignment of a task to be executed on a free task slot of the worker node, wherein the task is assigned to the task slot by the query server and received by the worker node immediately after the task slot becomes available; receive a notification, from the query server, that input required by a task assigned to a task slot of the worker node is available; and in response to the notification, retrieve the required input from a worker node that produced the required input. - View Dependent Claims (18, 19, 20, 31, 32, 33, 34, 35, 36)
-
21. In a system comprising a query server having at least one memory storing computer executable instructions, a method for performing distributed execution of database queries, the method comprising:
-
executing the instructions by at least one processing unit, the execution of the instructions resulting in the query server performing the steps of; receiving a query to be executed on a database; forming a query plan based on the query, the query plan comprising a plurality of operators, each operator divided into one or more tasks; assigning tasks to task slots on a plurality of worker nodes in a cluster, wherein the task slots comprise pools of resources that run tasks without start-up overhead; and upon receiving a notification that a task has completed on a worker node, immediately assigning an unassigned task to a free task slot on that worker node, such that the task may begin executing on that worker node substantially immediately thereafter. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28, 29, 30)
-
-
37. In a system comprising a plurality of worker nodes, each worker node having a first memory storing at least a portion of a database and a second memory storing computer executable instructions, a method for performing distributed execution of database queries, the method comprising:
executing the instructions by at least one processing unit, the execution of the instructions resulting in a worker node performing the steps of; receiving, from a query server, an assignment of a task to be executed on a free task slot of the worker node, wherein the task is assigned to the task slot by the query server and received by the worker node immediately after the task slot becomes available; receiving a notification, from the query server, that input required by a task assigned to a task slot of the worker node is available; and in response to the notification, retrieving the required input from a worker node that produced the required input. - View Dependent Claims (38, 39, 40)
Specification