Column Vector Memory Storage for Database Bandwidth Efficiency
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Relational database systems face inefficiencies in database operations due to the need to transfer large amounts of irrelevant data between volatile memory and CPU, as data is stored in row-major format on disk, leading to suboptimal use of bandwidth and processing time.
Innovation Solution
Storing relational data in column vectors within volatile memory, allowing for compression and encoding, and enabling vector processing operations to efficiently handle and process data, thereby reducing the amount of data transferred and improving processing speed.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If data is stored in row-major format on disk, then data retrieval follows conventional storage methods, but large amounts of irrelevant data must be transferred between volatile memory and CPU, reducing bandwidth efficiency
Solution Approach 1:
The patent segments relational data into column vectors, organizing data by columns rather than rows. This segmentation allows the system to transfer only the specific column data needed for a query from volatile memory to CPU, eliminating the transfer of irrelevant data from other columns and thereby reducing bandwidth usage while improving database operation efficiency.
Solution Approach 2:
The patent extracts only the necessary column data from the relational table structure and loads it into volatile memory as column vectors. This extraction principle ensures that when data is transferred to CPU, only the relevant information is moved, not entire rows with potentially irrelevant data, thus optimizing bandwidth efficiency.
2Speed
If data is stored in row-major format, then complete rows are available for processing, but processing speed decreases due to handling irrelevant data
Solution Approach 1:
By segmenting data into column vectors, the patent enables the CPU to process only the specific column data required for a query. This segmentation reduces the volume of data that must be processed while maintaining complete information for the relevant columns, thereby increasing processing speed without sacrificing data completeness.
Solution Approach 2:
The patent applies partial action by loading only the necessary column data into volatile memory rather than complete rows. This partial loading approach reduces the total data transfer volume while providing sufficient data for query processing, thus improving processing speed without the overhead of handling extraneous information.
3Productivity
If column vectors are stored in volatile memory, then relevant data transfer is minimized, but data organization differs from conventional row-major format
Solution Approach 1:
The patent introduces dynamic adaptability by allowing the system to switch between conventional row-major storage on disk and column vector storage in volatile memory. This dynamic approach optimizes for the specific operation being performed - using row-major for storage and column vectors for processing - thereby improving bandwidth efficiency without permanently complicating the storage structure.
Solution Approach 2:
The patent introduces column vectors as an intermediary data structure between the conventional row-major storage on disk and the CPU processing. This intermediary format in volatile memory serves as a bridge that translates the row-based storage structure into a column-based processing format, minimizing irrelevant data transfer while managing the complexity through a well-defined intermediate representation.
Data Source
Figure 1
Figure 2
Figure 3
AI summary
Techniques are provided for more efficiently using the bandwidth of the I/O path between a CPU and volatile memory during the performance of database operation. Relational data from a relational table is stored in volatile memory as column vectors, where each column vector contains values for a particular column of the table. A binary-comparable format may be used to represent each value within a column vector, regardless of the data type associated with the column. The column vectors may be compressed and/or encoded while in volatile memory, and decompressed/decoded on-the-fly within the CPU. Alternatively, the CPU may be designed to perform operations directly on the compressed and/or encoded column vector data. In addition, techniques are described that enable the CPU to perform vector processing operations on the column vector values.