Techniques for maintaining column vectors of relational data within volatile memory
First Claim
1. A method comprising:
- maintaining, within volatile memory of a particular computing device, a plurality of column vectors for a relational table of a relational database;
wherein each column vector, of the plurality of column vectors, corresponds to a distinct column of the relational table;
wherein each column vector, of the plurality of column vectors, is a contiguous array of values;
wherein, within a particular column vector of the plurality of column vectors, values for the corresponding column are represented in a byte-comparable format;
wherein the values in the particular column vector are of a data type that is not binary numeric;
during execution of a database command, transferring, from the volatile memory of the particular computing device, a contiguous series of values in the byte-comparable format from the particular column vector to a CPU of the particular computing device; and
within the CPU of the particular computing device, concurrently performing at least one operation on each value in the contiguous series of values;
wherein the method is performed by the particular computing device.
1 Assignment
0 Petitions
Accused Products
Abstract
Techniques are provided for more efficiently using the bandwidth of the I/O path between a CPU and volatile memory during the performance of database operation. Relational data from a relational table is stored in volatile memory as column vectors, where each column vector contains values for a particular column of the table. A binary-comparable format may be used to represent each value within a column vector, regardless of the data type associated with the column. The column vectors may be compressed and/or encoded while in volatile memory, and decompressed/decoded on-the-fly within the CPU. Alternatively, the CPU may be designed to perform operations directly on the compressed and/or encoded column vector data. In addition, techniques are described that enable the CPU to perform vector processing operations on the column vector values.
-
Citations
24 Claims
-
1. A method comprising:
-
maintaining, within volatile memory of a particular computing device, a plurality of column vectors for a relational table of a relational database; wherein each column vector, of the plurality of column vectors, corresponds to a distinct column of the relational table; wherein each column vector, of the plurality of column vectors, is a contiguous array of values; wherein, within a particular column vector of the plurality of column vectors, values for the corresponding column are represented in a byte-comparable format; wherein the values in the particular column vector are of a data type that is not binary numeric; during execution of a database command, transferring, from the volatile memory of the particular computing device, a contiguous series of values in the byte-comparable format from the particular column vector to a CPU of the particular computing device; and within the CPU of the particular computing device, concurrently performing at least one operation on each value in the contiguous series of values; wherein the method is performed by the particular computing device. - 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 performance of a method comprising:
-
maintaining, within volatile memory of a particular computing device, a plurality of column vectors for a relational table of a relational database; wherein each column vector, of the plurality of column vectors, corresponds to a distinct column of the relational table; wherein each column vector, of the plurality of column vectors, is a contiguous array of values; wherein, within a particular column vector of the plurality of column vectors, values for the corresponding column are represented in a byte-comparable format; wherein the values in the particular column vector are of a data type that is not binary numeric; during execution of a database command, transferring, from the volatile memory of the particular computing device, a contiguous series of values in the byte-comparable format from the particular column vector to a CPU of the particular computing device; and within the CPU of the particular computing device, concurrently performing at least one operation on each value in the contiguous series of values. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. A computing device, comprising volatile memory and a CPU, configured to perform a method comprising:
-
maintaining, within the volatile memory, a plurality of column vectors for a relational table of a relational database; wherein each column vector, of the plurality of column vectors, corresponds to a distinct column of the relational table; wherein each column vector, of the plurality of column vectors, is a contiguous array of values; wherein, within a particular column vector of the plurality of column vectors, values for the corresponding column are represented in a byte-comparable format; wherein the values in the particular column vector are of a data type that is not binary numeric; during execution of a database command, transferring, from the volatile memory, a contiguous series of values in the byte-comparable format from the particular column vector to the CPU; and within the CPU, concurrently performing at least one operation on each value in the contiguous series of values. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24)
-
Specification