N-bit compressed versioned column data array for in-memory columnar stores
First Claim
Patent Images
1. A method comprising:
- mapping, in a columnar in-memory database, each distinct value in a column to a different value identifier, a set of value identifiers comprising the different value identifiers;
populating a first backing array of an index vector by inserting at each given position in the first backing array, the value identifier corresponding to the value that the corresponding row has for the column, the first backing array having a predefined chunk of allocated memory, each position in the index vector being logically n-bits wide, wherein each different value identifier in the set of value identifiers has a binary representation that is less than or equal to n bits;
determining that the first backing array does not have capacity in the predefined chunk of allocated memory for a subsequent value identifier to be inserted therein;
generating, based on the determining, a second backing array in a different chunk of allocated memory including the set of value identifiers and having capacity for the subsequent value identifier to be inserted therein; and
inserting the subsequent value identifier in the second backing array.
1 Assignment
0 Petitions
Accused Products
Abstract
As part of a columnar in-memory database, value identifiers are inserted into a backing array in-memory until such time that it is determined that such backing array does not have sufficient capacity. A new backing array is then generated that includes the value identifiers in the old backing array and which has sufficient capacity. The old backing array can be flushed from memory when there are no active operations using such backing array. Such an arrangement allows for readers and non-structural writers to operate concurrently.
-
Citations
19 Claims
-
1. A method comprising:
-
mapping, in a columnar in-memory database, each distinct value in a column to a different value identifier, a set of value identifiers comprising the different value identifiers; populating a first backing array of an index vector by inserting at each given position in the first backing array, the value identifier corresponding to the value that the corresponding row has for the column, the first backing array having a predefined chunk of allocated memory, each position in the index vector being logically n-bits wide, wherein each different value identifier in the set of value identifiers has a binary representation that is less than or equal to n bits; determining that the first backing array does not have capacity in the predefined chunk of allocated memory for a subsequent value identifier to be inserted therein; generating, based on the determining, a second backing array in a different chunk of allocated memory including the set of value identifiers and having capacity for the subsequent value identifier to be inserted therein; and inserting the subsequent value identifier in the second backing array. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A non-transitory computer program product storing instructions which, when executed by at least one data processor forming part of at least one computing system, result in operations comprising:
-
mapping, in a columnar in-memory database, each distinct value in a column to a different value identifier, a set of value identifiers comprising the different value identifiers; populating a first backing array of an index vector by inserting at each given position in the first backing array, the value identifier corresponding to the value that the corresponding row has for the column, the first backing array having a predefined chunk of allocated memory; determining that the first backing array does not have capacity in the predefined chunk of allocated memory for a subsequent value identifier to be inserted therein; generating, based on the determining, a second backing array in a different chunk of allocated memory including the set of value identifiers and having capacity for the subsequent value identifier to be inserted therein; and inserting the subsequent value identifier in the second backing array.
-
-
19. A system comprising:
-
at least one data processor; and memory storing instructions which, when executed by the at least one data processor, result in operations comprising; mapping, in a columnar in-memory database, each distinct value in a column to a different value identifier, a set of value identifiers comprising the different value identifiers; populating a first backing array of an index vector by inserting at each given position in the first backing array, the value identifier corresponding to the value that the corresponding row has for the column, the first backing array having a predefined chunk of allocated memory; determining that the first backing array does not have capacity in the predefined chunk of allocated memory for a subsequent value identifier to be inserted therein; generating, based on the determining, a second backing array in a different chunk of allocated memory including the set of value identifiers and having capacity for the subsequent value identifier to be inserted therein; and inserting the subsequent value identifier in the second backing array.
-
Specification