Hardware implementation of the aggregation/group by operation: filter method
First Claim
1. A method comprising:
- receiving a request to aggregate data grouped by a first column;
in response to receiving the request, performing the steps of;
parsing the request to identify one or more predicates associated with the request;
determining how the one or more predicates should be programmed into reconfigurable hardware;
programming the reconfigurable hardware to produce a predicate-specific circuit that implements a filter unit into which the one or more predicates are programmed; and
loading values from the first column into an input cache;
wherein the values loaded into the input cache include values, from the first column, from a set of rows;
wherein the predicate-specific circuit includes logic to perform a comparison between a particular value, from the first column of a first row, andvalues in the first column of a plurality of rows, of the set of rows;
based on the comparison of the particular value to values in the first column of the plurality of rows, generating a predicate result that identifies rows, within the plurality of rows, that have values in the first column that match the particular value; and
passing the predicate result produced by the predicate-specific circuit to an aggregation unit that includes logic to generate an aggregate value for a second column by aggregating values, from the second column, of each of the rows identified by the predicate result;
wherein the method is performed by one or more computing devices.
1 Assignment
0 Petitions
Accused Products
Abstract
Techniques are described for performing grouping and aggregation operations. In an embodiment, a request is received to aggregate data grouped by a first column. In response to receiving the request, values are loaded from the first column into an input cache. The values include values, from the first column, from a set of rows. A filter unit is programmed with logic to perform a comparison between a particular value, from the first column of a first row, and values in the first column of a plurality of rows, of the set of rows. Based on the comparison, a predicate result is generated that identifies rows, within the plurality of rows, that have a valued in the first column that matches the particular value. An aggregate value for a second column is generated by aggregating values, from the second column, of each of the rows identified by the predicate result.
37 Citations
19 Claims
-
1. A method comprising:
-
receiving a request to aggregate data grouped by a first column; in response to receiving the request, performing the steps of; parsing the request to identify one or more predicates associated with the request; determining how the one or more predicates should be programmed into reconfigurable hardware; programming the reconfigurable hardware to produce a predicate-specific circuit that implements a filter unit into which the one or more predicates are programmed; and loading values from the first column into an input cache; wherein the values loaded into the input cache include values, from the first column, from a set of rows; wherein the predicate-specific circuit includes logic to perform a comparison between a particular value, from the first column of a first row, and values in the first column of a plurality of rows, of the set of rows; based on the comparison of the particular value to values in the first column of the plurality of rows, generating a predicate result that identifies rows, within the plurality of rows, that have values in the first column that match the particular value; and passing the predicate result produced by the predicate-specific circuit to an aggregation unit that includes logic to generate an aggregate value for a second column by aggregating values, from the second column, of each of the rows identified by the predicate result; wherein the method is performed by one or more computing devices. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A non-transitory computer-readable medium storing instructions, which, when executed by one or more processors, cause one or more computing devices to perform operations comprising:
-
receiving a request to aggregate data grouped by a first column; in response to receiving the request; parsing the request to identify one or more predicates associated with the request; determining how the one or more predicates should be programmed into reconfigurable hardware; programming the reconfigurable hardware to produce a predicate-specific circuit that implements a filter unit into which the one or more predicates are programmed; and loading values from the first column into an input cache; wherein the values loaded into the input cache include values, from the first column, from a set of rows; wherein the predicate-specific circuit includes logic to perform a comparison between a particular value, from the first column of a first row, and values in the first column of a plurality of rows, of the set of rows; based on the comparison of the particular value to values in the first column of the plurality of rows, generating a predicate result that identifies rows, within the plurality of rows, that have values in the first column that match the particular value; and passing the predicate result produced by the predicate-specific circuit to an aggregation unit that includes logic to generate an aggregate value for a second column by aggregating values, from the second column, of each of the rows identified by the predicate result. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. A system for performing grouping and aggregation operations comprising:
-
a control unit configured to; receive a request to aggregate data grouped by a first column; parse the request to identify one or more predicates associated with the request; determine how the one or more predicates should be programmed into reconfigurable hardware; cause values to be loaded from the first column into an input cache; wherein the values loaded into the input cache include values, from the first column, from a set of rows; a filter unit that is coupled to the control unit and comprises first reconfigurable hardware, wherein the first reconfigurable hardware, when programmed based on the request by the control unit to produce a predicate-specific circuit that implements the filter unit into which the one or more predicates are programmed, is configured to; compare a particular value, from the first column of a first row, and values in the first column of a plurality of other rows, of the set of rows; based on said comparing, generating a bitvector that identifies rows, within the plurality of rows, that have values in the first column that match the particular value; an aggregate unit that is coupled to the control unit is configured to; receive the bitvector produced by the filter unit; generate an aggregate value for a second column by aggregating values, from the second column, of each of the rows identified by the bitvector. - View Dependent Claims (18, 19)
-
Specification