Paged column dictionary
First Claim
1. A method comprising:
- constructing a value identifier (ID) directory in memory for a dictionary having multiple dictionary blocks, each dictionary block comprising a plurality of value blocks, each value block comprising a value ID and comprising a plurality of string values, wherein the value ID directory includes last value IDs for the multiple dictionary blocks, and wherein each of the last value IDs is mapped to an index of one of the multiple dictionary blocks that includes a string value for that last value ID;
receiving a request for an entry of the dictionary having multiple dictionary blocks, wherein the dictionary stores string values associated with corresponding value IDs for dictionary compression;
using the value ID directory and a value ID or string value associated with the request, selecting a dictionary block of the multiple dictionary blocks as responsive to the request;
selectively loading the selected dictionary block into memory;
constructing a large string map associated with the dictionary block that has been loaded into memory, wherein the large string map stores one or more pairs of values, each of the one or more pairs of values including (a) an index and (b) a large string value or pointer to the large string value, wherein the constructing the large string map includes, for one of the one or more pairs of values in the large string map, materializing the large string value, including;
loading part of the large string value from a value block of the dictionary block that has been loaded into memory; and
loading part of the large string value from one or more large string dictionary blocks, each of the one or more large string dictionary blocks comprising;
a header; and
one or more parts of large string values; and
searching the selected dictionary block that has been loaded into memory.
2 Assignments
0 Petitions
Accused Products
Abstract
A request for an entry of a dictionary having multiple dictionary blocks may be received, where the dictionary stores string values associated with corresponding value identifiers (IDs) for dictionary compression. One of the dictionary blocks may be selectively loaded into memory, and the dictionary block that has been loaded into memory may be searched. A value ID directory may be constructed in memory, where the value ID directory includes last value IDs for the dictionary blocks, and each of the last value IDs is mapped to an index of one of the dictionary blocks that includes a string value for that last value ID. A separator directory may also be constructed in memory, where the separator directory includes separators for the dictionary blocks, and each of the separators is mapped to an index of one of the dictionary blocks that includes a string value for that separator.
33 Citations
31 Claims
-
1. A method comprising:
-
constructing a value identifier (ID) directory in memory for a dictionary having multiple dictionary blocks, each dictionary block comprising a plurality of value blocks, each value block comprising a value ID and comprising a plurality of string values, wherein the value ID directory includes last value IDs for the multiple dictionary blocks, and wherein each of the last value IDs is mapped to an index of one of the multiple dictionary blocks that includes a string value for that last value ID; receiving a request for an entry of the dictionary having multiple dictionary blocks, wherein the dictionary stores string values associated with corresponding value IDs for dictionary compression; using the value ID directory and a value ID or string value associated with the request, selecting a dictionary block of the multiple dictionary blocks as responsive to the request; selectively loading the selected dictionary block into memory; constructing a large string map associated with the dictionary block that has been loaded into memory, wherein the large string map stores one or more pairs of values, each of the one or more pairs of values including (a) an index and (b) a large string value or pointer to the large string value, wherein the constructing the large string map includes, for one of the one or more pairs of values in the large string map, materializing the large string value, including; loading part of the large string value from a value block of the dictionary block that has been loaded into memory; and loading part of the large string value from one or more large string dictionary blocks, each of the one or more large string dictionary blocks comprising; a header; and one or more parts of large string values; and searching the selected dictionary block that has been loaded into memory. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. One or more computer-readable storage media storing:
-
structured data usable by one or more processors to load dictionary blocks for a dictionary into memory, the structured data stored on the computer-readable storage medium comprising; multiple dictionary blocks for a dictionary comprising string values associated with corresponding value identifiers (IDs) for dictionary compression, each of the multiple dictionary blocks storing at least some of the string values; one or more directory value ID blocks for a value ID directory comprising last value IDs for the multiple dictionary blocks, each of the one or more directory value ID blocks storing at least some of the last value IDs; and one or more directory separator blocks for a separator directory comprising separators for the multiple dictionary blocks, each of the one or more directory separator blocks storing at least some of the separators; and computer executable instructions for performing operations comprising; receiving a request for an entry of the dictionary; using a value ID or string value associated with the request, selecting a dictionary block of the multiple dictionary blocks as responsive to the request; selectively loading the selected dictionary block into memory and searching the selected dictionary block that has been loaded into memory. - View Dependent Claims (13, 14)
-
-
15. A database system comprising:
-
one or more processors; and memory storing; an attribute engine providing access to a string dictionary; a unified table component comprising; a dictionary storage component that loads one or more of multiple dictionary blocks of the string dictionary, each of the multiple dictionary blocks comprising one or more value blocks; a value ID directory providing access to an entry of the string dictionary given a value ID; a separator directory providing access to an entry of the string dictionary given a string value; and a large string handler providing access to large string values; and a basis storing value block vectors, each of the value block vectors storing pointers to the one or more value blocks for one of the multiple dictionary blocks; and computer executable instructions for, with the dictionary storage component, performing operations comprising; receiving a request for an entry of the string dictionary; using a value ID or string value associated with the request, selecting a dictionary block of the multiple dictionary blocks as responsive to the request; selectively loading the selected dictionary block into memory; and searching the selected dictionary block that has been loaded into memory. - View Dependent Claims (16, 17)
-
-
18. One or more non-transitory computer-readable media having stored thereon computer-executable instructions for causing a database system comprising one or more processors and memory, when programmed thereby, to perform operations comprising:
-
receiving a request for an entry of a dictionary having multiple dictionary blocks, wherein the dictionary stores string values associated with corresponding value identifiers (IDs) for dictionary compression, and wherein each of the multiple dictionary blocks comprises; a variable dictionary block header comprising information that indicates a number of value blocks in the dictionary block; one or more value blocks, each value block comprising a value ID and a plurality of string values, wherein a string value in a given value block of the one or more value blocks is represent using segments that comprise; when the string value does not start the given value block, a first segment specifying a prefix length of a string; a second segment specifying a remainder length of the string, a length of the segments of the given value block, or a total length of the string; and a third segment comprising a remainder string of the string; and offset values for accessing the one or more value blocks in the dictionary block; using a value ID or string value associated with the request, selecting a dictionary block of the multiple dictionary blocks as responsive to the request; selectively loading the selected dictionary block into memory; and searching the selected dictionary block that has been loaded into memory. - View Dependent Claims (19, 20, 21, 22, 29, 30, 31)
-
-
23. In a database system comprising one or more processors and memory, a method of managing a string dictionary, the method comprising:
-
constructing in memory a value identifier (ID) directory, a separator directory, and a large string handler, wherein; the value ID directory provides access to an entry of the dictionary given a value ID; the separator directory provides access to an entry of the dictionary given a string value; and the large string handler provides access to large string values; and with a dictionary storage component; receiving a request for an entry of the string dictionary; using a value ID or string value associated with the request, selecting a dictionary block of multiple dictionary blocks as responsive to the request, each of the multiple dictionary blocks comprising one or more value blocks; selectively loading the selected dictionary block into memory; and searching the selected dictionary block that has been loaded into memory; storing value block vectors as part of a basis, each of the value block vectors storing pointers to the one or more value blocks for one of the multiple dictionary blocks; and with an attribute engine, providing access to the dictionary. - View Dependent Claims (24, 25)
-
-
26. One or more non-transitory computer-readable media having stored thereon computer-executable instructions for causing a database system comprising one or more processors and memory, when programmed thereby, to perform operations to manage a string dictionary, the operations comprising:
-
constructing in memory a value identifier (ID) directory, a separator directory, and a large string handler, wherein; the value ID directory provides access to an entry of the dictionary given a value ID; the separator directory provides access to an entry of the dictionary given a string value; and the large string handler provides access to large string values; and with a dictionary storage component; receiving a request for an entry of the string dictionary; using a value ID or string value associated with the request, selecting a dictionary block of multiple dictionary blocks as responsive to the request, each of the multiple dictionary blocks comprising one or more value blocks; selectively loading the selected dictionary block into memory; and searching the selected dictionary block that has been loaded into memory; storing value block vectors as part of a basis, each of the value block vectors storing pointers to the one or more value blocks for one of the multiple dictionary blocks; and with an attribute engine, providing access to the dictionary. - View Dependent Claims (27, 28)
-
Specification