Large string access and storage
First Claim
1. A method, implemented by a computing system comprising one or more processors coupled to one or more memories, comprising:
- receiving a request to access a large string value, the request comprising a value ID;
with a value ID directory loaded into a memory of the one or more memories, determining a dictionary block ID of a dictionary block associated with the value ID, the dictionary storing string values for dictionary compression;
from a determined dictionary block, loaded into a memory of the one or more memories, having the determined dictionary block ID and comprising one or more value blocks having value block IDs, accessing a value block having a value block ID corresponding to the value ID, the accessed value block comprising a first portion of the requested large string value and one or more logical pointers to one or more large string pages containing a remainder of the large string value;
loading, with a processor of the one or more processors, the first portion of the large string value from the accessed value block, and loading the remainder of the large string value by dereferencing the one or more logical pointers to load from at least corresponding referenced large string pages the remainder of the large string value, providing the large string value;
storing, with a processor of the one or more processors, the loaded large string value into a contiguous memory location of the one or more memories, the contiguous memory location comprising a plurality of sequential, addressable memory locations, the contiguous memory location further comprising an addressable starting memory location having an address;
creating, with a processor of the one or more processors, a pointer to the starting memory address of the stored large string value;
storing, with a processor of the one or more processors, the pointer to the large string value; and
returning a pointer that can be dereferenced to access the stored large string value in response to the request.
1 Assignment
0 Petitions
Accused Products
Abstract
Techniques for handling large string values in a string dictionary within an in-memory database system are presented. The string dictionary can be a paged-column main dictionary. For example, a value block of a dictionary may be loaded into memory, where the dictionary stores values for dictionary compression. The value block may include a first portion of a large string value and one or more logical pointers to one or more large string pages containing a remainder of the large string value. The large string value may be materialized into a contiguous location in memory, and a pointer to the materialized large string value may be created.
27 Citations
20 Claims
-
1. A method, implemented by a computing system comprising one or more processors coupled to one or more memories, comprising:
-
receiving a request to access a large string value, the request comprising a value ID; with a value ID directory loaded into a memory of the one or more memories, determining a dictionary block ID of a dictionary block associated with the value ID, the dictionary storing string values for dictionary compression; from a determined dictionary block, loaded into a memory of the one or more memories, having the determined dictionary block ID and comprising one or more value blocks having value block IDs, accessing a value block having a value block ID corresponding to the value ID, the accessed value block comprising a first portion of the requested large string value and one or more logical pointers to one or more large string pages containing a remainder of the large string value; loading, with a processor of the one or more processors, the first portion of the large string value from the accessed value block, and loading the remainder of the large string value by dereferencing the one or more logical pointers to load from at least corresponding referenced large string pages the remainder of the large string value, providing the large string value; storing, with a processor of the one or more processors, the loaded large string value into a contiguous memory location of the one or more memories, the contiguous memory location comprising a plurality of sequential, addressable memory locations, the contiguous memory location further comprising an addressable starting memory location having an address; creating, with a processor of the one or more processors, a pointer to the starting memory address of the stored large string value; storing, with a processor of the one or more processors, the pointer to the large string value; and returning a pointer that can be dereferenced to access the stored large string value in response to the request. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. One or more computer-readable storage medium comprising computer-executable instructions usable by one or more processors of a computing system, the one or more processors in communication with the one or more computer-readable storage medium, to perform operations to support handling of large string values for a dictionary in memory, the operations comprising:
-
receiving a request to access a large string value, the request comprising a string value; with a separator directory comprising one or more directory separator blocks, at least one of the one or more directory separator blocks comprising separators for multiple dictionary blocks of a dictionary, determining a dictionary block ID associated with the string value, wherein; the multiple dictionary blocks store string values for dictionary compression; a determined dictionary block of the multiple dictionary blocks has the determined dictionary block ID; each of the one or more directory separator blocks stores at least some of the separators; at least a portion of the multiple dictionary blocks store one or more large string values for dictionary compression; the determined dictionary block stores part of a large string value corresponding to the string value of the request and one or more logical pointers for one or more large string blocks comprising a remainder of the large string value; from the determined dictionary block, loaded into memory, accessing a first portion of the requested large string value and one or more logical pointers to at least one of one or more large string blocks containing a remainder of a large string value associated with the string value of the request; loading the first portion of the large string value from the determined dictionary block, and loading the remainder of the large string value by following the one or more logical pointers to load from at least corresponding referenced large string blocks the remainder of the large string value, providing the large string value; storing the loaded large string value into a contiguous memory location, the contiguous memory location comprising an addressable starting memory location having an address; creating a pointer to the starting memory address of the stored large string value; storing the pointer to the large string value; and returning a pointer that can be followed to access the stored large string value in response to the request. - View Dependent Claims (11, 12, 13)
-
-
14. A database system comprising:
-
one or more processors; and one or more memories in communication with the one or more processors, the one or more memories storing computer-executable instructions to perform operations comprising; receiving a request to access a large string value, the request comprising a value ID or a value string; searching a value block vector, the value block vector associated with a dictionary page for a dictionary block of a dictionary comprising multiple dictionary blocks, for a value block corresponding to the value ID, or a value ID corresponding to the value string, the value block comprising a first portion of the requested large string value and one or more physical or logical pointers to one or more large string blocks containing a remainder of the large string value; loading the first portion of the large string value from the value block, and loading the remainder of the large string value by dereferencing the one or more physical or logical pointers to load from at least corresponding referenced large string blocks the remainder of the large string value, providing the large string value; storing the loaded large string value in memory; creating a pointer to the stored large string value; storing the pointer to the large string value; and returning a pointer that can be dereferenced to access the stored large string value in response to the request. - View Dependent Claims (15, 16, 17, 18, 19, 20)
-
Specification