Columnar storage of a database index
First Claim
Patent Images
1. A computer system, comprising:
- at least one processor;
at least one memory storing a columnar index associated with a single relational database table, the columnar index comprising;
a column store comprising a plurality of rows of the columnar index stored in a column-wise fashion, wherein the columnar index associated with the single relational database table is divided into a plurality of segments, wherein individual segments of the plurality of segments correspond to individual subsets of a plurality of rows of the single relational database table, and wherein the column store includes a plurality of column arrays for the individual segments of the plurality of segments; and
a delta store comprising particular rows of the columnar index that have been updated or deleted stored in a row-wise fashion,wherein the computer system is configured to;
for individual segments of the plurality of segments, store respective absence flag arrays in the column store, wherein the respective absence flag arrays include flags corresponding to individual rows of a corresponding segment, and wherein the respective absence flag arrays indicate which rows of the corresponding segment have been logically deleted from the column store;
in response to an update for a first row of a first segment, in a first absence flag array corresponding to the first segment, set a first flag identifying the first row;
in response to a delete for a second row of the first segment, in the first absence flag array corresponding to the first segment, set a second flag identifying the second row; and
in response to a query, execute a query processing engine configured to execute the query by concurrently executing;
a first query operator on the column store in a column-wise fashion, anda second query operator on the delta store in a row-wise fashion.
2 Assignments
0 Petitions
Accused Products
Abstract
Methods, systems, and computer-readable media of columnar storage of a database index are disclosed. A particular columnar index includes a column store that stores rows of the columnar index in a column-wise fashion and a delta store that stores rows of the columnar index in a row-wise fashion. The column store also includes an absence flag array. The absence flag array includes entries that indicate whether certain rows have been logically deleted from the column store.
-
Citations
22 Claims
-
1. A computer system, comprising:
-
at least one processor; at least one memory storing a columnar index associated with a single relational database table, the columnar index comprising; a column store comprising a plurality of rows of the columnar index stored in a column-wise fashion, wherein the columnar index associated with the single relational database table is divided into a plurality of segments, wherein individual segments of the plurality of segments correspond to individual subsets of a plurality of rows of the single relational database table, and wherein the column store includes a plurality of column arrays for the individual segments of the plurality of segments; and a delta store comprising particular rows of the columnar index that have been updated or deleted stored in a row-wise fashion, wherein the computer system is configured to; for individual segments of the plurality of segments, store respective absence flag arrays in the column store, wherein the respective absence flag arrays include flags corresponding to individual rows of a corresponding segment, and wherein the respective absence flag arrays indicate which rows of the corresponding segment have been logically deleted from the column store; in response to an update for a first row of a first segment, in a first absence flag array corresponding to the first segment, set a first flag identifying the first row; in response to a delete for a second row of the first segment, in the first absence flag array corresponding to the first segment, set a second flag identifying the second row; and in response to a query, execute a query processing engine configured to execute the query by concurrently executing; a first query operator on the column store in a column-wise fashion, and a second query operator on the delta store in a row-wise fashion. - View Dependent Claims (2)
-
-
3. A method, comprising:
-
dividing a database index for a single relational database table into a plurality of segments, wherein the database index comprises a plurality of rows and a plurality of columns, and wherein individual segments comprise a subset of the plurality of rows of the database index; converting the individual segments into a plurality of column arrays, wherein the plurality of column arrays includes a column array for each of the plurality of columns; for the individual segments of the plurality of segments, storing the plurality of column arrays in a column store; storing data in a row-wise fashion in a delta store comprising rows of the column store that have been updated or deleted; for the individual segments of the plurality of segments, storing at least one respective absence flag array in the column store, wherein the at least one respective absence flag array includes individual flags corresponding to individual rows of a corresponding segment, and wherein the at least one respective absence flag array indicates which rows of the corresponding segment have been logically deleted from the column store; in response to an update for a first row of a first segment, in a first absence flag array corresponding to the first segment, setting a first flag identifying the first row; in response to a delete for a second row of the first segment, in the first absence flag array corresponding to the first segment, setting a second flag identifying the second row; and in response to a query, concurrently executing; a first query operator on the column store in a column-wise fashion, and a second query operator on the delta store in a row-wise fashion. - View Dependent Claims (4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
-
-
22. A data storage device comprising instructions that, when executed by a computer, cause the computer to:
-
divide a database index for a single relational database table into a plurality of segments, wherein the database index comprises a plurality of rows and a plurality of columns, and wherein individual segments comprise a subset of the plurality of rows of the database index; convert the individual segments into a plurality of column arrays, wherein the plurality of column arrays includes a column array for each of the plurality of columns; for the individual segments of the segments, store the plurality of column arrays in a column store; store data in a row-wise fashion in a delta store comprising rows of the column store that have been updated or deleted; for the individual segments of the plurality of segments, store at least one respective absence flag array in the column store, wherein at least one the respective absence flag array includes individual flags corresponding to individual rows of a corresponding segment, and wherein the at least one respective absence flag array indicates which rows of the corresponding segment have been logically deleted from the column store; in response to an update for a first row of a first segment, in a first absence flag array corresponding to the first segment, set a first flag identifying the first row; in response to a delete for a second row of the first segment, in the first absence flag array corresponding to the first segment, set a second flag identifying the second row; and in response to a query, concurrently execute; a first query operator on the column store in a column-wise fashion, and a second query operator on the delta store in a row-wise fashion.
-
Specification