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.
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. 8. The method of claim 1 , wherein a string value in a given value block of the plurality of value blocks is represented 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; and a third segment comprising a remainder string of the string.