Bucket-based materialization method for columnar database, server, product and storage medium

By dividing the row number sequence into multiple bucket tables in a column-based database and executing data reads in parallel, the problem of random access to storage media under the delayed materialization strategy is solved, and data reading performance is improved.

WO2025196530A1PCT designated stage Publication Date: 2025-09-25CLOUD INTELLIGENCE ASSETS HOLDING (SINGAPORE) PTE LTD
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
PCT/IB2025/051541
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-03-19
Filing Date
2025-02-13
Publication Date
2025-09-25

AI Technical Summary

Technical Problem

In a column-based database, when the size of a data table exceeds the memory, the delayed materialization strategy leads to an increase in random access to the storage medium, seriously affecting database performance.

Method used

The bucket materialization method is used to divide the row number sequence into multiple bucket tables. Data reading operations are performed in parallel through multiple bucket threads, which reduces the randomness of the row numbers in each bucket table and reduces random access to the storage medium.

Benefits of technology

It improves the data reading performance of column-based databases, reduces the randomness of access to storage media, and improves data reading efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure IB2025051541_25092025_PF_FP_ABST
    Figure IB2025051541_25092025_PF_FP_ABST
Patent Text Reader

Abstract

Provided in the embodiments of the present disclosure are a bucket-based materialization method for a columnar database, a server, a product and a storage medium. The materialization method comprises: acquiring a row number sequence used for querying a target data table; then dividing row numbers in the row number sequence into a plurality of bucket tables on the basis of row number ranges to which the row numbers in the row number sequence belong; and respectively executing data reading operations corresponding to the plurality of bucket tables in the target data table, so as to obtain materialization tables respectively corresponding to the plurality of bucket tables. By means of bucketing the inputted row numbers, the embodiments enable the row numbers in a same bucket table to be located in a smaller local range, and the randomness of the row numbers in each bucket table is low, such that the data reading process of each bucket table has relatively strict spatial locality. During the execution of the data reading operation of each bucket table, the target data table can be retrieved according to row numbers having relatively low randomness in a local range, and the randomness of access operation of a storage medium where the target data table is located is thus reduced when using the row numbers having relatively low randomness in the local range, thereby improving the data reading performance of columnar databases.
Need to check novelty before this filing date? Find Prior Art

Description

[0001]TECHNICAL FIELD This disclosure relates to the field of computer technology, and more particularly to a bucketed materialization method, server, product, and storage medium for a column-based database. Background: Column-based databases are an emerging data storage method. In a column-based database, data is stored by column. Specifically, data in the same column of a relational table is stored adjacently on a storage medium (such as a disk), while data in different columns is stored separately on the storage medium. When querying data, a column-based database allows only the columns referenced by the query to be read. Therefore, compared to row-based databases, column-based databases do not need to read all columns, resulting in significant performance advantages when processing analytical queries. In a column-based database, the separate storage of different columns allows the column-based executor to employ a delayed materialization (also known as post-materialization or late materialization) strategy to perform data read operations. In the delayed materialization strategy, database operators use row numbers (i.e., RowIDs) to communicate their calculation results. When a calculation operation requires data from a particular column, the row number is used as an index to read the column-stored data. However, when using the delayed materialization strategy, each operator must directly access the table storage medium based on the row number to read the column-stored data if the data size of the table exceeds the memory capacity of the column-stored database. However, reading column-stored data based on out-of-order row numbers generates a large number of random accesses to the storage medium, severely degrading database performance. Therefore, a new solution is needed. SUMMARY OF THE INVENTION Various aspects of the present disclosure provide a bucketed materialization method, server, product, and storage medium for a column-stored database, designed to reduce the randomness of storage medium access operations during delayed materialization and improve database data read performance. An embodiment of the present disclosure provides a bucketing materialization method for a column-stored database, applicable to any execution operator of the column-stored database, comprising: obtaining a row number sequence for querying a target data table; dividing the row numbers in the row number sequence into multiple bucketed tables according to the row number ranges to which the row numbers belong; wherein the multiple bucketed tables correspond to different row number ranges, and the row number range of any bucketed table is included in the total row number range of the target data table; and executing data read operations corresponding to the multiple bucketed tables in the target data table to obtain materialized tables corresponding to each of the multiple bucketed tables.Optionally, before dividing the row numbers in the row number sequence into multiple bucket tables according to the row number range to which the row numbers in the row number sequence belong, the method further includes: obtaining the total data volume of the target data table; determining the total number of bucket tables corresponding to the target data table according to the set storage length of a single bucket table; the storage length is less than or equal to the length of the memory of the column storage database; the storage length is determined according to the set row number range difference and the length of a single row of data in the target data table; creating a first number of bucket tables in the memory according to the length of the memory of the column storage database, and creating a second number of bucket tables in the disk corresponding to the column storage database; the sum of the first number and the second number is equal to the total number of bucket tables. Optionally, in the target data table, respectively executing data reading operations corresponding to the multiple bucketed tables includes: using multiple reading threads to execute data reading operations corresponding to some bucketed tables in the multiple bucketed tables in parallel in the target data table, wherein the some bucketed tables are located in the memory of the column storage database; wherein any one of the multiple reading threads is used to determine, from the disk, a second bucketed table among the multiple bucketed tables on which a data reading operation has not been performed, after executing the data reading operation corresponding to the first bucketed table in the memory; loading the second bucketed table into the memory, and executing the data reading operation corresponding to the second bucketed table. Optionally, dividing the row numbers in the row number sequence into multiple bucket tables according to the row number range to which the row numbers in the row number sequence belong, includes: using multiple bucketing threads, dividing the row numbers in the row number sequence into multiple internal bucket tables corresponding to each of the multiple bucketing threads according to the row number range to which the row numbers in the row number sequence belong, the multiple internal bucket tables of any bucketing thread corresponding to different row number ranges; before respectively executing data reading operations corresponding to the multiple bucketing tables in the target data table, further including: merging the internal bucket tables with the same row number range in the multiple internal bucketing tables corresponding to each of the multiple bucketing threads to obtain the multiple bucketing tables. Optionally, the method further includes: generating a sequence identifier for the row numbers in the row number sequence; merging the internal bucket tables with the same row number range in the multiple internal bucket tables corresponding to each of the multiple bucket threads to obtain the multiple bucket tables, including: generating a global bucket table corresponding to the multiple internal bucket tables for at least one internal bucket table corresponding to any row number range; determining the sequence identifier corresponding to each of the multiple row numbers in the multiple internal bucket tables; and writing the multiple row numbers into the global bucket table in sequence according to the order represented by the sequence identifier and the mapping relationship between the sequence identifier and the row number to obtain the bucket table after the multiple internal bucket tables are merged.Optionally, in the target data table, respectively executing data reading operations corresponding to the multiple bucketed tables includes: when executing the data reading operation corresponding to any bucketed table among the multiple bucketed tables, searching the target data table in turn according to multiple row numbers in the bucketed table, and obtaining data reading results corresponding to each of the multiple row numbers; and writing the data reading results corresponding to each of the multiple row numbers into the row where the corresponding sequence identifier is located in the bucketed table according to the correspondence between the row number and the sequence identifier, to obtain a materialized table corresponding to the bucketed table. Embodiments of the present disclosure also provide a bucketing materialization method for a column-stored database, applicable to any execution operator of the column-stored database, comprising: obtaining a multidimensional row number sequence for querying a multidimensional data table; adding a sequence identifier to the multidimensional row number sequence, wherein row numbers in the same row in the multidimensional row number sequence have the same sequence identifier; dividing rows containing row numbers in a first row number sequence in the multidimensional row number sequence into multiple bucketed tables based on the row number range to which the row numbers in the first row number sequence belong; wherein the multiple bucketed tables correspond to different row number ranges, and the row number range of any bucketed table is included in the total row number range of the multidimensional data table; performing data read operations corresponding to the multiple bucketed tables in the data table corresponding to the first row number sequence, respectively, to obtain multiple materialized tables corresponding to the first row number sequence; and performing at least one bucketing materialization operation based on the sequence identifier of the multidimensional row number sequence, the multiple materialized tables corresponding to the first row number sequence, and at least one row number sequence in the multidimensional row number sequence other than the first row number sequence, to obtain the materialized table corresponding to the multidimensional row number sequence. Optionally, at least one bucketing materialization operation is performed based on the multiple materialized tables corresponding to the first row number sequence and at least one row number sequence other than the first row number sequence in the multidimensional row number sequence, including: when performing any bucketing materialization operation, for a target row number sequence in the at least one row number sequence on which the bucketing materialization operation has not been performed, bucketing the multiple materialized tables obtained in the previous bucketing materialization operation using the target row number sequence as a first keyword and the order identifier of the multidimensional row number sequence as a second keyword to obtain multiple bucketed tables corresponding to the target row number sequence; performing a data reading operation on the multiple bucketed tables corresponding to the target row number sequence in a data table in the multidimensional data table corresponding to the target row number sequence to obtain multiple materialized tables corresponding to the target row number sequence; wherein, if the previous bucketing materialization operation is the bucketing materialization operation corresponding to the first row number sequence, the multiple materialized tables obtained in the previous bucketing materialization operation are the multiple materialized tables corresponding to the first row number sequence.Optionally, bucketing multiple materialized tables obtained by a previous bucketing materialization operation using the target row number sequence as a first keyword and the sequence identifier of the multidimensional row number sequence as a second keyword to obtain multiple bucketed tables corresponding to the target row number sequence includes: using multiple bucketing threads to divide data rows in the multiple materialized tables obtained by the previous materialization operation into different bucketed tables according to row number ranges to which row numbers in the target row number sequence belong, thereby obtaining multiple internal bucketed tables corresponding to each of the multiple bucketing threads; the multiple internal bucketed tables of any bucketing thread correspond to different row number ranges; generating, for at least one internal bucketed table corresponding to any row number range, a global bucketed table corresponding to the at least one internal bucketed table; determining sequence identifiers corresponding to each of the multiple row numbers in the target row number sequence that are divided into the at least one internal bucketed table; and sequentially writing the data rows where the multiple row numbers in the at least one internal bucketed table are located into the global bucketed table according to the order represented by the sequence identifiers and the mapping relationship between the sequence identifiers and the row numbers, thereby obtaining a bucketed table obtained by merging the at least one internal bucketed table. Optionally, multiple bucketing threads are used to partition data rows from multiple materialized tables obtained from the previous materialization operation into different bucketed tables based on the row number range to which the row numbers in the target row number sequence belong. This includes: when bucketing any materialized table from the multiple materialized tables obtained from the previous materialization operation, any bucketing thread determines, for any data row in the materialized table, the row number corresponding to the data row in the target row number sequence; determines, based on the row number range to which the row number belongs, the internal bucket corresponding to the row number; and writes the data row into the internal bucketed table corresponding to the row number range. Embodiments of the present disclosure also provide a server comprising: a memory and a processor; the memory being configured to store one or more computer instructions; and the processor being configured to execute the one or more computer instructions to perform the steps of the method provided in embodiments of the present disclosure. Embodiments of the present disclosure also provide a computer-readable storage medium storing a computer program, which, when executed by the processor, can implement the steps of the method provided in embodiments of the present disclosure. Embodiments of the present disclosure also provide a computer program product, including a computer program / instructions. When executed by a processor, the computer program / instructions can implement the steps of the method provided in the embodiments of the present disclosure. In the bucketing materialization method for a column-based database provided in the embodiments of the present disclosure, by bucketing input row numbers, row numbers within the same bucketed table are located within a smaller local range, and row numbers within the bucketed table have lower randomness. This ensures that the data reading process for each bucketed table has relatively strict spatial locality.For the execution operator, when performing data read operations on each bucketed table, the target data table on disk can be searched based on row numbers with low randomness within a local range. This low randomness in row numbers within the local range reduces the randomness of access operations to the storage medium where the target data table resides, thereby improving the data read performance of the column-based database. BRIEF DESCRIPTION OF THE DRAWINGS The drawings described herein are provided to provide a further understanding of the present disclosure and constitute a part of this disclosure. The illustrative embodiments of this disclosure and their description are provided to explain the present disclosure and are not intended to unduly limit the present disclosure. In the accompanying drawings: Figure 1 is a schematic flow chart of a bucketing materialization method for a column-based database provided by an exemplary embodiment of the present disclosure; Figure 2 is a schematic diagram of row number partitioning and bucketed table merging provided by an exemplary embodiment of the present disclosure; Figure 3 is a schematic flow chart of a bucketing materialization method for a column-based database provided by another exemplary embodiment of the present disclosure; Figure 4a is a schematic diagram of bucketing and merging a first row number sequence in a multidimensional row number sequence provided by an exemplary embodiment of the present disclosure; Figure 4b is a schematic diagram of the materialization results of one row number sequence in a multidimensional row number sequence provided by an exemplary embodiment of the present disclosure; Figure 5a is a schematic diagram of bucketing and merging a second row number sequence in a multidimensional row number sequence provided by an exemplary embodiment of the present disclosure; Figure 5b is a schematic diagram of the materialization results of the second row number sequence in a multidimensional row number sequence provided by an exemplary embodiment of the present disclosure; Figure 6 is a schematic diagram of the structure of a server provided by an exemplary embodiment of the present disclosure. DETAILED DESCRIPTION To further clarify the objectives, technical solutions, and advantages of the present disclosure, the technical solutions of the present disclosure will be described clearly and completely below in conjunction with specific embodiments of the present disclosure and the corresponding drawings. Obviously, the described embodiments are only some of the embodiments of the present disclosure, and are not exhaustive. All other embodiments derived by persons of ordinary skill in the art based on the embodiments of this disclosure without inventive effort are within the scope of protection of this disclosure. The terms used in the embodiments of this disclosure are intended solely to describe specific embodiments and are not intended to limit the disclosure. The singular forms "a," "an," "the," and "the" used in the embodiments of this disclosure and the appended claims are intended to include the plural forms, unless the context clearly indicates otherwise. "A plurality" generally includes at least two, but does not exclude the inclusion of at least one. It should be understood that the term "and / or" as used herein is merely a description of an association between associated objects, indicating that three possible relationships exist. For example, "A and / or B" can mean: A exists alone, A and B exist simultaneously, or B exists alone. Furthermore, the character " / " as used herein generally indicates an "or" relationship between the associated objects.It should also be noted that the terms "comprise," "include," or any other variations thereof are intended to encompass non-exclusive inclusion, such that a product or system comprising a list of elements includes not only those elements but also other elements not explicitly listed, or elements inherent to such product or system. Without further limitation, elements defined by the phrase "comprising a..." do not preclude the presence of other identical elements in the product or system comprising the elements. The database described in various embodiments of the present disclosure refers to a column-based database, which stores data by column on a storage medium, such as a disk partition. Data materialization is the process of creating query results corresponding to user query statements. Typically, query results are stored in a temporary table, called a materialized table. To reduce the overhead of materialization operations, database systems can adopt a late materialization strategy. The basic concept of this materialization strategy is to defer materialization operations until later in the query execution process, performing actual data materialization only when necessary. By delaying materialization, database systems can avoid premature data conversion and combination, thereby reducing unnecessary computation and input / output (I / O) overhead and improving query performance. In this delayed materialization strategy, database operators use row numbers to communicate their calculation results. When a calculation is needed on a column of data, the row number is used as an index to access the column-stored data. Operators query the database table for the corresponding data based on the input row number and perform calculations on the retrieved data. When the table is stored on disk, operators access the disk to read data corresponding to a row number and load the table from disk into the database's memory to perform calculations based on the data. However, if the table is longer than the database's memory, a single disk access operation can only load the rows containing the row number into memory, not all the data in the table. When the input row numbers are out of sequence, the number of random disk accesses by the operator increases. If the disk is a mechanical hard disk, random access requires the hard disk head to frequently move between sectors or tracks, increasing head seek time and rotational latency, thereby reducing database processing performance.If the disk is a solid-state drive (SSD), random access to the SSD requires switching between different data blocks within the SSD, which reduces database processing performance. Currently, there is a solution that combines early materialization with runtime Bloom filter pushdown. This allows early materialization to achieve the same optimization benefits as delayed materialization in specific scenarios while avoiding the drawbacks of delayed materialization. However, this solution is not universally applicable. Specifically, 1) Bloom filter pushdown is limited in scope and cannot span multiple join statements and pipelines; 2) it only works for probe tables within join tables; the build table within join statements still cannot be materialized lazily using Bloom filters. Alternatively, cache-friendly data materialization methods can be used in projection operators within specific databases to improve performance. However, this solution is only applicable to single-threaded, all-in-memory scenarios and can only be used to materialize data from two tables. In another approach, a method can be used to globally sort row numbers and then perform materialization based on the results of the global sort. In this approach, globally sorting row numbers introduces significant performance overhead, resulting in negative returns. Furthermore, this approach can only sort row numbers according to the order of one table and cannot support materialization of data from multiple tables. To address the above technical issues, some embodiments of the present disclosure provide a bucketing materialization method for a column-based database. The technical solutions provided by various embodiments of the present disclosure are described in detail below with reference to the accompanying drawings. Figure 1 is a flowchart of a bucketing materialization method for a column-based database provided in accordance with an exemplary embodiment of the present disclosure. As shown in Figure 1, the method primarily includes the following steps: Step 101: Obtain a row number sequence for querying a target data table. Step 102: Divide the row numbers in the row number sequence into multiple bucketed tables based on the row number range to which they belong. The multiple bucketed tables correspond to different row number ranges, and the row number range of any bucketed table is included in the total row number range of the target data table. Step 103: In the target data table, data read operations corresponding to the multiple bucketed tables are performed to obtain materialized tables corresponding to each of the bucketed tables. This embodiment is performed by an execution operator in a column-based database. The execution operator is a basic component of a query execution plan and is used to process data according to specified data processing logic. It has input and output.When the query optimizer generates a query execution plan for a given query statement, it decomposes the query statement into a series of execution operators. These operators describe how to execute the query operations corresponding to the query statement in the database system. Each execution operator typically corresponds to one or more underlying operations in the database management system. The row number sequence obtained by any execution operator may be passed on by other operators in the column-based database. This row number sequence may include multiple row numbers, which are used to retrieve rows in the target data table to retrieve the corresponding data. In this embodiment, the target data table is a single-dimensional data table in the column-based database. Data in the same column of the target data table is stored adjacently in the storage medium, forming a row of data in the target data table. Each row of data in the target data table has a unique row number that indicates the logical location of the row of data in the target data table. This row number is used to index the rows in the target data table that meet the conditions based on the input row number. In this embodiment, the execution operator can maintain multiple bucket tables. Each bucket table can be a data table with a certain storage length for caching data of the specified length. The data stored in the multiple bucket tables can be managed and operated independently. In some optional embodiments, after determining the target data table, multiple bucket tables can be created based on the amount of data contained in the target data table. Optionally, the total data volume of the target data table can be obtained, and the total number of bucket tables corresponding to the target data table can be determined based on the set storage length of a single bucket table. The storage length of a single bucket table can be less than or equal to the memory length of the column-based database; this storage length can be determined based on a set row number range difference and the length of a single row of data in the target data table. The row number range difference refers to the difference between the minimum and maximum row number values ​​in the row number range corresponding to a single bucket table. The smaller the row number range difference, the less randomness there is in disk access of row numbers in the bucket table, and the higher the database performance. The row number range difference can be set based on experience. For example, based on experience, the row number range difference is set to 100. If the length of a single row of data in the target data table is n, the storage length of a single bucketed table can be 100*n. After determining the total number of bucketed tables, multiple bucketed tables can be created based on this total number of bucketed tables. However, if the amount of data in the target data table exceeds the memory capacity of the column-based database, all of the multiple bucketed tables cannot be created in memory. Therefore, based on the memory capacity of the column-based database, a first number of bucketed tables can be created in memory, and a second number of bucketed tables can be created on disk corresponding to the column-based database. The sum of the first and second numbers equals the calculated total number of bucketed tables.Specifically, among multiple bucketed tables, a first number of bucketed tables can be stored in the database's memory, and the total storage length of these bucketed tables in memory does not exceed the database's memory length. Among these multiple bucketed tables, bucketed tables that exceed the memory length (i.e., the second number of bucketed tables) can be temporarily overflowed to disk, retaining a smaller number of bucketed tables in memory. This supports the use of bucketed materialization in memory-constrained scenarios. Multiple bucketed tables can correspond to different row number ranges, used to cache data within the target data table corresponding to these row number ranges. Any row number range must fall within the target data table's total row number range. For example, assuming the target data table contains 3x rows of data and the row number range is [0, 3x], based on the target data table's data volume and the storage length of a single bucketed table, three bucketed tables can be created: bucketed table A1, bucketed table A2, and bucketed table A3. The row number range for bucket table A1 is [0, x), the row number range for bucket table A2 is [x, 2x), and the row number range for bucket table A3 is [2x, 3x]. o When the database's memory length is greater than 2x*N and less than 3x*N, bucketed tables A1 and A2 can be created in memory, and bucketed table A3 can be created and stored on disk, as shown in Figure 2. After obtaining the row number sequence, the operator can be executed to divide the row numbers in the row number sequence into different bucketed tables based on the row number range they belong to. For example, if the target data table contains 1 to 9 rows of data, the row number ranges corresponding to bucketed tables A1, A2, and A3 are: [1,4], [4,7], and [7,9], respectively. oIf the row number sequence obtained by the operator is {1, 9, 3, 4, 8}, then row numbers 1 and 3 in the row number sequence can be divided into bucket table A1, row number 4 in the row number sequence can be divided into bucket table A2, and row numbers 9 and 8 in the row number sequence can be divided into bucket table A3. The operation of dividing the row numbers in a row number sequence into different bucket tables is called a bucketing operation. In some optional embodiments, when the operator divides the row numbers in the row number sequence into multiple bucket tables based on the row number ranges to which they belong, multiple bucketing threads can be used to divide the row numbers in the row number sequence into different bucket tables in parallel to improve processing efficiency. Optionally, in this embodiment, each bucketing thread of the operator can maintain multiple internal bucketing tables. The internal bucketing tables of the multiple bucketing threads are divided in the same manner, and the multiple internal bucketing tables of the same bucketing thread correspond to different row number ranges. For example, as shown in Figure 2, when the execution operator uses three bucketing threads to process row number partitioning, each of the three bucketing threads can maintain three internal bucketing tables. The row number ranges corresponding to the three internal bucketing tables of each bucketing thread are: [0, x), [x, 2x), and [2x, 3x]. The execution operator can partition the row numbers in the row number sequence into multiple internal bucketing tables corresponding to the multiple bucketing threads of the execution operator based on the row number ranges to which the row numbers belong. Based on this implementation, when the input row number sequence contains a large number of row numbers, using multiple bucketing threads to perform the row number partitioning operation can quickly partition a large number of rows into different bucketing tables, thereby improving data reading efficiency. Accordingly, before executing data read operations corresponding to the multiple bucketed tables in the target data table based on the row numbers assigned to them, the execution operator can merge at least one internal bucketed table with the same row number range among the multiple internal bucketed tables corresponding to the multiple bucketing threads, thereby obtaining multiple bucketed tables for materialization. These merged bucketed tables are also referred to as global bucketed tables. For example, as shown in Figure 2, the multiple internal bucketed tables corresponding to the row number range [0, x) can be merged to obtain global bucketed table 1 corresponding to the row number range [0, x). The multiple internal bucketed tables corresponding to the row number range [x, 2x) can be merged to obtain global bucketed table 2 corresponding to the row number range [x, 2x]. Similarly, after the multiple internal bucketed tables corresponding to the row number range [2x, 3x] are loaded into memory, the multiple internal bucketed tables corresponding to the row number range [2x, 3x] can be merged to obtain the global bucketed table corresponding to the row number range [2x, 3x].After merging to obtain a global bucketed table, the execution operator can perform read operations on the target data table on disk based on the global bucketed table, obtaining data read results corresponding to the row numbers assigned to each global bucketed table. After partitioning the row numbers in the row number sequence into multiple bucketed tables, the execution operator can access the target data table in the column-store database based on the row numbers assigned to the multiple bucketed tables, performing data read operations corresponding to the multiple bucketed tables in the target data table, and obtaining data read results corresponding to the row numbers assigned to the multiple bucketed tables. In some optional embodiments, the execution operator can sequentially execute data read operations corresponding to the multiple bucketed tables according to the row number ranges corresponding to the bucketed tables. In other optional embodiments, the execution operator can use multiple read threads to concurrently execute data read operations corresponding to some of the bucketed tables in the multiple bucketed tables in the target data table. These bucketed tables are the bucketed tables located in the database's memory. Optionally, the number of read threads can be the same as the number of bucketed tables stored in memory, allowing data read operations to be performed on all bucketed tables in memory in parallel. After completing the data read operation for a first bucketed table in memory, any one of the multiple read threads can determine from disk a second bucketed table among the multiple bucketed tables for which a data read operation has not yet been performed, load the second bucketed table into memory, and then perform the data read operation for the second bucketed table. It should be understood that the terms "first" and "second" used herein to describe bucketed tables are merely used to distinguish between identical description objects and do not limit the order of the described bucketed tables within the multiple bucketed tables. The data read results corresponding to any bucketed table include the data read results corresponding to the row numbers in the bucketed table. When performing the data read operation for each bucketed table, the execution thread can sequentially retrieve the row numbers from the bucketed table and, based on the retrieved row numbers, search the target data table in the column-based database to obtain data read results corresponding to the multiple row numbers in the bucketed table. The data read result corresponding to any row number is written to the row corresponding to that row number in the bucketed table. For any bucketed table, after the data read results corresponding to all row numbers in that bucketed table are written to it, the bucketed table can be called a materialized table. Continuing with the above example, the execution operator can use read threads F1 and F2 to concurrently perform data read operations on bucketed tables A1 and A2 in memory. For example, read thread F1 can sequentially read the data row corresponding to row number 1 and the data row corresponding to row number 3 in bucketed table A1 from the target data table on disk, obtaining the data read results corresponding to row number 1 and row number 3.The data read results corresponding to row number 1 and row number 3 are backfilled into bucket table A1, resulting in materialized table A1'. Similarly, read thread F2 can obtain the data read result corresponding to row number 4. The data read result corresponding to row number 4 is backfilled into bucket table A2, resulting in materialized table A2'. Assuming that read thread F2 completes the data read operation on bucket table A2 first, bucket table F2 can add bucket table A3 to memory and continue to read data from bucket table A3, obtaining data read results corresponding to row numbers 9 and 8. Based on the above embodiment, after obtaining the data read result corresponding to any bucket table, the execution operator can output the data read result corresponding to that bucket table. After obtaining the data read result corresponding to any bucket table, the execution operator can perform a set data processing operation on the data read result corresponding to that bucket table. For example, in some embodiments, the execution operator can perform calculations on the data read result according to its set calculation logic, write the calculation result to disk, and return the row number corresponding to the calculation result on disk to other operators. In other embodiments, the execution operator may determine whether the data read result for each row number meets the set conditions based on a predetermined judgment logic. If the data read result for any row number is determined to meet the set conditions, the execution operator outputs the row number to other operators. These examples are not listed here. In some optional embodiments, within any bucketed table, the execution operator may reorder the row numbers in the bucketed table according to their order in the input row number sequence, thereby ensuring local order within the bucketed table and further reducing the randomness of the row numbers within the bucketed table. A specific example will be provided below. Optionally, the execution operator may generate sequence identifiers for the row numbers in the row number sequence and, based on the sequence identifiers, merge the internal bucketed tables corresponding to multiple bucketed threads that have the same row number range. Taking at least one internal bucketed table corresponding to any row number range as an example, a global bucketed table corresponding to the at least one internal bucketed table may be generated, and sequence identifiers corresponding to the multiple row numbers in the at least one internal bucketed table may be determined. Based on the order indicated by the sequence identifiers and the mapping between sequence identifiers and row numbers, the multiple row numbers are sequentially written into the global bucketing table to generate the bucketing table resulting from the merging of the at least one internal bucketing table. For example, if the input row number sequence is (1, 5, 11, 3, 16, 4, 8), the sequence identifiers generated for this row number sequence can be as shown in the following table. In this implementation, when merging multiple internal buckets with the same row number range, the row numbers assigned to the multiple internal buckets are reordered according to the order in which the row numbers were input, ensuring that the row numbers in the merged buckets are locally ordered. Based on this, when performing a materialization operation on a bucketed table, the target data table can be searched sequentially based on the multiple row numbers in the bucketed table to obtain the data read results corresponding to each of the multiple row numbers. On the one hand, because the row numbers in the multiple internal buckets are reordered according to the order in which they were input when merging the internal buckets, the materialized order of the row numbers in the buckets is locally consistent with the input order, and thus the order in the resulting materialized table is also locally consistent with the input order. On the other hand, when the target data table is stored on disk, the disk is read based on the locally ordered row numbers when performing the materialization operation corresponding to each bucketed table. This further reduces the randomness of disk access operations and improves database performance. In this embodiment, by bucketing the input row numbers, row numbers within the same bucketed table are located within a smaller local range, and the randomness of row numbers within the bucketed table is low. This ensures that the data reading process for each bucketed table has strict spatial locality. For the execution operator, when performing data reading operations on each bucketed table, the target data table on disk can be searched based on row numbers with low randomness within the local range. This low randomness of row numbers within the local range reduces the randomness of access operations to the storage medium (e.g., disk) for a single bucketed table, thereby improving the data reading performance of column-based databases. Furthermore, compared to methods that globally sort the input row numbers, the bucketed table method employed in the embodiments of the present disclosure is less complex and significantly reduces the overhead associated with row number reorganization. The above-described embodiments of the present disclosure provide a method for bucketing and materializing a single-dimensional data table on disk. Other embodiments of the present disclosure also provide a method for bucketing and materializing a multidimensional data table, which will be exemplified below. FIG3 illustrates a bucketing materialization method for a column-based database provided by an exemplary embodiment of the present disclosure. As shown in FIG3 , when executed by an execution operator in a database, the method primarily includes the following steps: Step 301: Obtain a multidimensional row number sequence for querying a multidimensional data table. Step 302: Add a sequence identifier to the multidimensional row number sequence, such that row numbers in the same row in the multidimensional row number sequence have the same sequence identifier. Step 303: Divide the rows containing row numbers in a first row number sequence in the multidimensional row number sequence into multiple bucketed tables based on the row number range to which the row numbers in the first row number sequence belong. The multiple bucketed tables correspond to different row number ranges, and the row number range of any bucketed table is included in the total row number range of the multidimensional data table.Step 304: In the data table corresponding to the first row number sequence, data read operations corresponding to the multiple bucketed tables are performed respectively to obtain multiple materialized tables corresponding to the first row number sequence. Step 305: Based on the sequence identifier of the multidimensional row number sequence, the multiple materialized tables corresponding to the first row number sequence, and at least one row number sequence other than the first row number sequence in the multidimensional row number sequence, at least one bucketed materialization operation is performed to obtain the materialized table corresponding to the multidimensional row number sequence. In this embodiment, the target data table to be queried in the column-based database is a multidimensional data table, which is obtained by concatenating at least two data tables. Based on the embodiments of the present disclosure, an execution operator can be used to perform bucketed materialization on the data in the multidimensional data table. The multidimensional row number sequence includes two or more row number sequences. The multidimensional row number sequence has a corresponding relationship with the multidimensional data table, so that the multidimensional data table can be queried based on the multidimensional row number sequence. For example, the target data table is obtained by concatenating data table T1 and data table T2. The multidimensional row number sequence received by the execution operator includes row number sequence XI and row number sequence X2. Row number sequence XI is used to query data table T1 in the target data table, and row number sequence X2 is used to query data table T2 in the target data table. For example, if the multidimensional row number sequence is {(1,12), (1,16), (7,18), (4,16), (6,3)}, the multidimensional row number sequence includes row number sequence X1 = {1,1,7, 4,6} and row number sequence X2 = {12,16,18, 16,3}. In this embodiment, a sequence identifier field can be added to the multidimensional row number sequence, and a sequence identifier is generated for the row numbers in the multidimensional row number sequence based on the order of the row numbers in the multidimensional row number sequence. Row numbers with the same order in different row number sequences have the same sequence identifier. For example, in row number sequence X1 and row number sequence X2, the row numbers (1, 12) that are first in the order have the same sequence identifier, the row numbers (1, 16) that are second in the order have the same sequence identifier, and so on. This is not further described. In some optional embodiments, a continuously auto-incrementing ID (identifier) ​​may be generated for the multidimensional row number sequence to generate sequence identifiers for row numbers with the same order, as shown in the following table. In the above table, an auto-incrementing ID field is used as a sequential identifier for row numbers with the same arrangement order in the multidimensional row number sequence. This allows, on the one hand, the ID field to establish a combined relationship between row numbers in different row number sequences, facilitating reverse mapping of query results. On the other hand, the ID field can be used to identify the order in which data is returned, thus satisfying query requirements. After obtaining the multidimensional row number sequence and the sequential identifier, the bucketed materialization operation can be performed sequentially on each row number sequence. In this embodiment, the materialization order of the multiple row number sequences is not restricted. The row number sequence that undergoes the first materialization operation can be any row number sequence in the multidimensional row number sequence. The row number sequence that undergoes the second materialization operation can be any remaining row number sequence that has not undergone the materialization operation. This process continues in this manner until all row number sequences have undergone the materialization operation. For ease of description, in this embodiment, the row number sequence that undergoes the first materialization operation is described as the first row number sequence. The bucketing and materialization operation for the first row number sequence is similar to the implementation of the single-dimensional row number sequence described in the previous embodiment. For details, please refer to the description of the embodiments corresponding to Figures 1 and 2 and will not be further described here. It should be noted that during the bucketing operation for the first row number sequence, the rows containing the row numbers in the first row number sequence can be divided into multiple bucketing tables. Furthermore, each row number in the first row number sequence can carry its corresponding row number in another row number sequence in the multidimensional row number sequence and its corresponding sequence identifier. This preserves the mapping relationship between the multidimensional row number sequence and the sequence identifier during the bucketing and materialization process. This will be illustrated below with reference to Figure 4a. In the diagram of Figure 4a, the input multidimensional row number sequence includes row number sequence X1 and row number sequence X2, corresponding to data tables T1 and T2 in the multidimensional data table, respectively. Assume that the row numbers in row number sequence X2 are preferentially selected for bucketing, and the data in data table T2 is preferentially materialized. After the bucketing table is divided, in row number sequence X2, the rows in [0, 2 16Rows with row numbers in the range [2% - 2%) are assigned to internal bucket tables X2-1-1 and X2-1-2, while rows with row numbers in the range [2% - 2%) are assigned to internal bucket tables X2-2-K. As shown in Figure 4a, internal bucket tables X2-1-1 and X2-1-2 can be merged to form global bucket X2-1, and internal bucket table X2-2-1 can be merged to form global bucket X2-2. In this case, row numbers in row number sequence X2 assigned to global bucket table X2-1 have low randomness, and row numbers assigned to global bucket table X2-2 also have low randomness. When materializing data in data table T2 based on global bucket tables X2-1 and X2-2, strict spatial locality is maintained, resulting in few or no random disk accesses. When materializing data table T2 using the row numbers of row number sequence X2 in any global bucketed table, data table T2 can be searched based on the row numbers of row number sequence X2 in the global bucketed table to retrieve the data row corresponding to that row number. After retrieving the data row corresponding to each row number, the data row can be backfilled into the location corresponding to that row number in the global bucketed table. As shown in Figure 4b, materializing data table T2 based on the row numbers of row number sequence X2 in global bucketed table X2-1 yields materialized table T2-X2-K. Materializing data table T2 based on the row numbers of row number sequence X2 in global bucketed table X2-2 yields materialized table T2-X2-2. In the bucketed tables shown in Figure 4a and the materialized tables shown in Figure 4b, each row number in row number sequence X2 carries its corresponding row number in row number sequence XI and the corresponding ID field, identifying the mapping relationship between row number sequence XI, row number sequence X2, and the ID field. After obtaining multiple materialized tables corresponding to the first row number sequence, at least one bucketing materialization operation can be performed based on the multiple materialized tables corresponding to the first row number sequence and at least one row number sequence in the multidimensional row number sequence other than the first row number sequence to obtain the materialized table corresponding to the multidimensional row number sequence. Each of these at least one bucketing materialization operations is performed based on the materialized table obtained by the previous materialization operation. The following provides an exemplary description of each bucketing materialization operation. Assume that this bucketing materialization operation is used to perform a bucketing materialization operation on a target row number sequence in the at least one row number sequence. The target row number sequence refers to any row number sequence in the multidimensional row number sequence other than the first row number sequence for which a bucketing materialization operation has not yet been performed.Optionally, when performing any bucketing materialization operation, the target row number sequence can be used as the first key and the order identifier of the multidimensional row number sequence as the second key to bucketize the multiple materialized tables obtained from the previous bucketing materialization operation, thereby obtaining multiple bucketed tables corresponding to the target row number sequence. If the previous bucketing materialization operation was a bucketing materialization operation corresponding to the first row number sequence, then the multiple materialized tables obtained from the previous bucketing materialization operation are the multiple materialized tables corresponding to the first row number sequence. Subsequently, a data read operation can be performed on the multiple bucketed tables corresponding to the target row number sequence in the multidimensional data table, thereby obtaining multiple materialized tables corresponding to the target row number sequence. For example, assuming that the multidimensional row number sequence X includes row number sequence X1, row number sequence X2, and row number sequence X3, during the bucketing materialization operation, row number sequence X2 can be used as the first row number sequence to perform the bucketing materialization method, thereby obtaining multiple materialized tables corresponding to row number sequence X2. Next, using row number sequence X1 as the first keyword and the sequence identifier of multidimensional row number sequence X as the second keyword, multiple materialized tables of row number sequence X2 can be bucketed to obtain multiple bucketed tables of row number sequence X1. Materialization operations can be performed on multiple bucketed tables of row number sequence X1 to obtain multiple materialized tables of row number sequence X1. Next, using row number sequence X3 as the first keyword and the sequence identifier of multidimensional row number sequence X as the second keyword, multiple materialized tables of row number sequence X1 can be bucketed to obtain multiple bucketed tables of row number sequence X3. Materialization operations can be performed on multiple bucketed tables of row number sequence X3 to obtain multiple materialized tables of row number sequence X3. This completes the bucketed materialization operation of the multidimensional row number sequence. In some optional embodiments, multiple bucketing threads may be used to bucket multiple materialized tables obtained from a previous bucketing materialization operation based on a first keyword and a second keyword. After obtaining an internal bucketing table for each bucketing thread, bucketing tables with the same row number range may be merged to form a global bucketing table corresponding to each row number range. The following description will continue using the target row number sequence as an example using the first keyword as the target row number sequence. Alternatively, multiple bucketing threads may be used to partition data rows from multiple materialized tables obtained from a previous materialization operation into different bucketing tables based on the row number ranges to which row numbers in the target row number sequence belong, thereby obtaining multiple internal bucketing tables corresponding to each of the multiple bucketing threads. The multiple internal bucketing tables of any bucketing thread correspond to different row number ranges. Taking any materialized table as an example, when bucketing any data row in the materialized table, any bucketing thread may determine the row number corresponding to the data row in the target row number sequence and, based on the row number range to which the row number belongs, determine the internal bucket corresponding to the row number.Afterwards, the data row is written to the internal bucketed table corresponding to the row number range. The following example will continue to be used for explanation. After executing the bucketed materialization operation for data table T2, the bucketed materialization operation for data table T1 can be executed. As shown in Figure 5a, the materialized table of data table T2 can be bucketed using a bucketing method where the first key is the row number of the row number sequence X1 and the second key is the ID field. As shown in FIG5a, when multiple bucketing threads are used to perform a bucketing operation on materialized tables T2-X2-1 and T2-X2-2, rows corresponding to row numbers in the range [0, 2) in row number sequence X1 are allocated to internal bucket table X1-1-1, and rows corresponding to row numbers in the range [2-2) are allocated to internal bucket table X1-2-1o. For example, in materialized table T2-X2-1, all rows corresponding to row number 1 in row number sequence X1 are allocated to internal bucket table X1-1-1o. After the internal bucketing is completed, internal bucket tables with the same row number range can be merged to obtain a global bucketing table. When merging the internal bucketing tables, the data rows in the internal bucketing tables with the same row number range can be reordered according to the second keyword. Optionally, for at least one internal bucketing table corresponding to any row number range, a global bucketing table corresponding to the at least one internal bucketing table can be generated. The process further determines sequence identifiers corresponding to the multiple row numbers in the target row number sequence that are allocated to the at least one internal bucketed table. Subsequently, the process sequentially writes the data rows corresponding to the multiple row numbers in the at least one internal bucketed table into the global bucketed table according to the order indicated by the sequence identifiers and the mapping relationship between the sequence identifiers and the row numbers, thereby obtaining a bucketed table after merging the at least one internal bucketed table.As shown in FIG5a , the global bucket table X1-1 corresponding to the internal bucket table X1-1-1 and the internal bucket table X1-2-1 has row numbers in the row number sequence XI in the internal bucket table X1-1-1 and the internal bucket table X1-2-1, and the IDs corresponding to the row numbers are 2, 1, and 5, respectively. When merging the at least one internal bucket table, the data rows corresponding to the row numbers in the row number sequence XI can be written into the global bucket table X1-1 in the order of IDs 1, 2, and 5. Similarly, the data rows in the internal bucket table X1-1-1 can be mapped to the global bucket table X1-2 in the order indicated by the IDs in the internal bucket table X1-2-1. After mapping, the global bucket table X1-1 and the global bucket table X1-2 are obtained based on the above embodiment. As shown in FIG5b , the data table T1 can be materialized according to the row numbers in the row number sequence XI in the global bucket table X1-1. Materialized table T1-X1-10 is obtained. Data table T1 is materialized based on the row numbers of row number sequence X1 in global bucketed table X1-2, resulting in materialized table T1-X1-20. In this embodiment, when materializing a multidimensional data table, bucketed materialization is performed on each of the multiple data tables separately, eliminating the need to distinguish between the left and right tables in a join table. Therefore, this method is applicable to materializing build tables generated based on join statements. When materializing each data table, the input row numbers are bucketed, ensuring that row numbers within the same bucketed table are within a smaller local range. Row numbers within a bucketed table are less random, thereby ensuring strict spatial locality in the data reading process for each bucketed table. When performing data read operations on each bucketed table, the target data table on disk can be searched based on row numbers with low randomness within a local range. This low randomness in row numbers reduces the randomness of access operations on the storage medium (e.g., disk) for a single bucketed table, thereby improving data read performance in column-based databases. Furthermore, when materializing a multidimensional data table, by generating sequence identifiers, data from the same row read from multiple data tables can be mapped to the same location, thus supporting bucketed materialization operations on any number of data tables. It should be noted that the execution entity of each step of the method provided in the above embodiment can be the same device, or the method can be executed by different devices. For example, the execution entity of steps 101 to 104 can be device A; for another example, the execution entity of steps 101 and 102 can be device A, and the execution entity of step 103 can be device B; and so on.In addition, some processes described in the above embodiments and accompanying figures include multiple operations that appear in a specific order. However, it should be understood that these operations may be executed in a different order than the order in which they appear herein or in parallel. Operation numbers such as 101 and 102 are merely used to distinguish between different operations and do not represent any specific execution order. Furthermore, these processes may include more or fewer operations, and these operations may be executed in sequence or in parallel. It should be noted that terms such as "first" and "second" are used herein to distinguish between different messages, devices, modules, etc., and do not represent a sequential order, nor do they limit "first" and "second" to different types. It should be noted that all user information (including but not limited to user device information, user personal information, etc.) and data (including but not limited to data used for analysis, storage, and display, etc.) involved in this disclosure are authorized by the user or fully authorized by all parties. The collection, use, and processing of these data must comply with the relevant laws, regulations, and standards of the relevant countries and regions, and corresponding operation portals are provided for users to choose to authorize or reject. FIG6 illustrates a schematic diagram of the structure of a server provided by an exemplary embodiment of the present disclosure. As shown in FIG6 , the server includes a memory 601, a processor 602, and a communication component 603. Memory 601 is configured to store computer programs and may be configured to store various other data to support operations on the server. Examples of such data include instructions for any application or method operating on the server. Processor 602, coupled to memory 601, is configured to execute the computer program in memory 601 to: obtain a row number sequence for querying a target data table; divide the row numbers in the row number sequence into multiple bucketed tables based on the row number ranges to which they belong; wherein the multiple bucketed tables correspond to different row number ranges, and the row number range of any bucketed table is included in the total row number range of the target data table; and perform data read operations corresponding to each of the multiple bucketed tables in the target data table to obtain the materialized tables corresponding to each of the multiple bucketed tables.Optionally, before dividing the row numbers in the row number sequence into multiple bucket tables according to the row number range to which the row numbers in the row number sequence belong, the processor 602 is further used to: obtain the total data volume of the target data table; determine the total number of bucket tables corresponding to the target data table according to the set storage length of a single bucket table; the storage length is less than or equal to the length of the memory of the column storage database; the storage length is determined according to the set row number range difference and the length of a single row of data in the target data table; create a first number of bucket tables in the memory according to the length of the memory of the column storage database, and create a second number of bucket tables in the disk corresponding to the column storage database; the sum of the first number and the second number is equal to the total number of bucket tables. Optionally, when the processor 602 respectively executes the data reading operations corresponding to the multiple bucket tables in the target data table, it is specifically used to: use multiple reading threads to execute the data reading operations corresponding to some bucket tables in the multiple bucket tables in parallel in the target data table, and the some bucket tables are located in the memory of the column storage database; wherein any one of the multiple reading threads is used to determine, from the disk, a second bucket table in the multiple bucket tables on which the data reading operation has not been performed, after executing the data reading operation corresponding to the first bucket table in the memory; load the second bucket table into the memory, and execute the data reading operation corresponding to the second bucket table. Optionally, when the processor 602 divides the row numbers in the row number sequence into multiple bucket tables according to the row number range to which the row numbers in the row number sequence belong, it is specifically configured to: use multiple bucketing threads to divide the row numbers in the row number sequence into multiple internal bucketing tables corresponding to each of the multiple bucketing threads according to the row number range to which the row numbers in the row number sequence belong, where the multiple internal bucketing tables of any bucketing thread correspond to different row number ranges; and before respectively executing data reading operations corresponding to the multiple bucketing tables in the target data table, further comprising: merging the internal bucketing tables with the same row number range among the multiple internal bucketing tables corresponding to each of the multiple bucketing threads to obtain the multiple bucketing tables.Optionally, the processor 602 is further configured to: generate a sequence identifier for the row numbers in the row number sequence; when the processor 602 merges the internal bucket tables with the same row number range in the multiple internal bucket tables corresponding to each of the multiple bucket threads to obtain the multiple bucket tables, the processor 602 is specifically configured to: generate a global bucket table corresponding to the multiple internal bucket tables for at least one internal bucket table corresponding to any row number range; determine the sequence identifier corresponding to each of the multiple row numbers in the multiple internal bucket tables; and write the multiple row numbers into the global bucket table in sequence according to the order represented by the sequence identifier and the mapping relationship between the sequence identifier and the row number to obtain the bucket table after the multiple internal bucket tables are merged. Optionally, when the processor 602 respectively executes the data reading operations corresponding to the multiple bucketed tables in the target data table, it is specifically used to: when executing the data reading operation corresponding to any bucketed table among the multiple bucketed tables, search the target data table in turn according to the multiple row numbers in the bucketed table, and obtain the data reading results corresponding to each of the multiple row numbers; according to the correspondence between the row number and the sequence identifier, write the data reading results corresponding to each of the multiple row numbers into the row where the corresponding sequence identifier is located in the bucketed table, to obtain the materialized table corresponding to the bucketed table. The server shown in FIG6 can also be used to perform the following bucketing materialization method for a column-oriented database, wherein the processor 602 is configured to: obtain a multidimensional row number sequence for querying a multidimensional data table; add a sequence identifier to the multidimensional row number sequence, such that row numbers in the same row in the multidimensional row number sequence have the same sequence identifier; divide the rows containing row numbers in a first row number sequence in the multidimensional row number sequence into multiple bucketed tables based on the row number range to which the row numbers in the first row number sequence belong; wherein the multiple bucketed tables correspond to different row number ranges, and the row number range of any bucketed table is included in the total row number range of the multidimensional data table; perform data read operations corresponding to the multiple bucketed tables in the data table corresponding to the first row number sequence, respectively, to obtain multiple materialized tables corresponding to the first row number sequence; and perform at least one bucketing materialization operation based on the sequence identifier of the multidimensional row number sequence, the multiple materialized tables corresponding to the first row number sequence, and at least one row number sequence in the multidimensional row number sequence other than the first row number sequence, to obtain the materialized table corresponding to the multidimensional row number sequence.Optionally, when the processor 602 performs at least one bucketing materialization operation based on the multiple materialized tables corresponding to the first row number sequence and at least one row number sequence other than the first row number sequence in the multidimensional row number sequence, the processor 602 is specifically configured to: when performing any bucketing materialization operation, for a target row number sequence in the at least one row number sequence on which the bucketing materialization operation has not been performed, bucket the multiple materialized tables obtained in the previous bucketing materialization operation using the target row number sequence as a first keyword and the order identifier of the multidimensional row number sequence as a second keyword to obtain multiple bucketed tables corresponding to the target row number sequence; and perform a data read operation on the multiple bucketed tables corresponding to the target row number sequence in a data table in the multidimensional data table corresponding to the target row number sequence to obtain multiple materialized tables corresponding to the target row number sequence; wherein, if the previous bucketing materialization operation is the bucketing materialization operation corresponding to the first row number sequence, then the multiple materialized tables obtained in the previous bucketing materialization operation are the multiple materialized tables corresponding to the first row number sequence. Optionally, when the processor 602 buckets multiple materialized tables obtained by the previous bucketing materialization operation using the target row number sequence as a first keyword and the sequence identifier of the multidimensional row number sequence as a second keyword to obtain multiple bucketed tables corresponding to the target row number sequence, the processor 602 is specifically configured to: use multiple bucketing threads to divide data rows in the multiple materialized tables obtained by the previous materialization operation into different bucketed tables according to the row number ranges to which the row numbers in the target row number sequence belong, to obtain multiple internal bucketed tables corresponding to each of the multiple bucketing threads; the multiple internal bucketed tables of any bucketing thread correspond to different row number ranges; generate, for at least one internal bucketed table corresponding to any row number range, a global bucketed table corresponding to the at least one internal bucketed table; determine the sequence identifiers corresponding to each of the multiple row numbers in the target row number sequence that are divided into the at least one internal bucketed table; and write the data rows where the multiple row numbers in the at least one internal bucketed table are located into the global bucketed table in sequence according to the order represented by the sequence identifiers and the mapping relationship between the sequence identifiers and the row numbers. A bucketed table is obtained after the at least one internal bucketed table is merged.Optionally, when processor 602 uses multiple bucketing threads to divide data rows from multiple materialized tables obtained from the previous materialization operation into different bucketed tables based on the row number range to which the row numbers in the target row number sequence belong, the processor 602 is specifically configured to: when any bucketing thread buckets any materialized table from the multiple materialized tables obtained from the previous materialization operation, determine, for any data row in the materialized table, the row number corresponding to the data row in the target row number sequence; determine, based on the row number range to which the row number belongs, the internal bucket corresponding to the row number; and write the data row into the internal bucketed table corresponding to the row number range. Furthermore, as shown in FIG. 6 , the server also includes other components, such as a power supply component 604. FIG. 6 schematically illustrates only some components and does not imply that the server includes only the components shown in FIG. 6 . The memory 601 may be implemented by any type of volatile or non-volatile memory device, or a combination thereof, such as static random-access memory (SRAM), electrically erasable programmable read-only memory (EEPROM), erasable programmable read-only memory (EPROM), programmable read-only memory (PROM), read-only memory (ROM), magnetic storage, flash memory, magnetic disk, or optical disk. The communication component 603 is configured to facilitate wired or wireless communication between the device in which the communication component is located and other devices.The device where the communication component is located can access a wireless network based on a communication standard, such as Wi-Fi (wireless network communication technology), 2G (such as Global System for Mobile Communications (GSM)), 3G (such as Wideband Code Division Multiple Access (WCDMA), 4G (such as Long Term Evolution (LTE)), 4G+ (such as LTE-Advanced (LTE-A)), or 5G (Fifth Generation Mobile Communication Technology), or a combination thereof. In an exemplary embodiment, the communication component receives broadcast signals or broadcast-related information from an external broadcast management system via a broadcast channel. In an exemplary embodiment, the communication component can be implemented based on Near Field Communication (NFC) technology, Radio Frequency Identification (RFID) technology, Infrared Data Association (IrDA) technology, Ultra Wide Band (UWB) technology, Bluetooth (BT) technology, and other technologies. The power supply component 604 is configured to provide power to various components of the device in which the power supply component resides. The power supply component may include a power management system, one or more power supplies, and other components associated with generating, managing, and distributing power for the device in which the power supply component resides. In this embodiment, by bucketing the input row numbers, the row numbers within the same bucketed table are located within a smaller local range, and the randomness of the row numbers within the bucketed table is low. This ensures that the data reading process for each bucketed table has strict spatial locality. For the execution operator, when performing data reading operations on each bucketed table, the target data table on disk is searched based on the row numbers with lower randomness within the local range. This lower randomness of the row numbers within the local range reduces the randomness of disk access operations for a single bucketed table, thereby improving the data reading performance of the column-based database. Accordingly, the present disclosure also provides a computer-readable storage medium storing a computer program. When executed, the computer program can implement the steps of the above-described method embodiments.Accordingly, embodiments of the present disclosure also provide a computer program product, including a computer program / instructions that, when executed by a processor, can implement each step of the above-described method embodiment. Those skilled in the art will appreciate that embodiments of the present invention can be provided as methods, systems, or computer program products. Therefore, the present invention can take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment combining software and hardware. Furthermore, the present invention can take the form of a computer program product implemented on one or more computer-usable storage media (including but not limited to magnetic disk storage, CD-ROM (Compact Disc Read-Only Memory), optical storage, etc.) containing computer-usable program code. The present invention is described with reference to flowcharts and / or block diagrams of methods, devices (systems), and computer program products according to embodiments of the present invention. It should be understood that each process and / or block in the flowcharts and / or block diagrams, as well as combinations of processes and / or blocks in the flowcharts and / or block diagrams, can be implemented by computer program instructions. These computer program instructions can be provided to a processor of a general-purpose computer, a special-purpose computer, an embedded processor, or other programmable data processing device to produce a machine, such that the instructions executed by the processor of the computer or other programmable data processing device produce means for implementing the functions specified in one or more flow charts and / or one or more blocks in a block diagram. These computer program instructions can also be stored in a computer-readable memory that can direct the computer or other programmable data processing device to operate in a specific manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means that implement the functions specified in one or more flow charts and / or one or more blocks in a block diagram. These computer program instructions can also be loaded onto a computer or other programmable data processing device, such that a series of operational steps are executed on the computer or other programmable device to produce a computer-implemented process, such that the instructions executed on the computer or other programmable device provide steps for implementing the functions specified in one or more flow charts and / or one or more blocks in a block diagram. In a typical configuration, a computing device includes one or more processors (Central Processing Units, CPUs), input / output interfaces, network interfaces, and memory. Memory may include non-permanent storage in a computer-readable medium in the form of random access memory (RAM) and / or non-volatile memory such as read-only memory (ROM) or flash RAM. Memory is an example of a computer-readable medium.Computer-readable media include both permanent and non-permanent, removable and non-removable media that can be used to store information using any method or technology. Information can be computer-readable instructions, data structures, program modules, or other data. Examples of computer storage media include, but are not limited to, Parallel Random Access Machine (PRAM), Static Random Access Memory (SRAM), Dynamic Random Access Memory (DRAM), other types of random access memory (RAM), Read-Only Memory (ROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), flash memory or other memory technologies, Compact Disc Read-Only Memory (CD-ROM), Digital Versatile Disc (DVD) or other optical storage, magnetic cassettes, magnetic disk storage or other magnetic storage devices, or any other non-transmission media that can be used to store information that can be accessed by a computing device. As defined herein, computer-readable media does not include transitory computer-readable media, such as modulated data signals and carrier waves. It should also be noted that the terms "comprise," "include," or any other variations thereof are intended to encompass non-exclusive inclusion, such that a process, method, product, or apparatus comprising a list of elements includes not only those elements but also other elements not explicitly listed, or elements inherent to such process, method, product, or apparatus. Without further limitation, the phrase "comprising a..." does not preclude the presence of additional identical elements in the process, method, product, or apparatus comprising the recited elements. The foregoing description is merely an example of the present disclosure and is not intended to limit the present disclosure. Those skilled in the art will readily appreciate that various modifications and variations of the present disclosure are possible. Any modifications, equivalent substitutions, improvements, and the like made within the spirit and principles of the present disclosure are intended to be encompassed by the claims of the present disclosure.

Claims

Claims 1. A bucketing materialization method for a column-based database, applicable to any execution operator of a column-based database, comprising: Obtain a row number sequence for querying a target data table; divide the row numbers in the row number sequence into a plurality of bucketed tables according to the row number ranges to which the row numbers in the row number sequence belong; wherein the plurality of bucketed tables correspond to different row number ranges, and the row number range of any bucketed table is included in the total row number range of the target data table; and execute data read operations corresponding to the plurality of bucketed tables in the target data table, respectively, to obtain materialized tables corresponding to the plurality of bucketed tables.

2. The method according to claim 1, wherein: Before dividing the row numbers in the row number sequence into multiple bucket tables according to the row number range to which the row numbers in the row number sequence belong, the method further includes: obtaining the total data volume of the target data table; determining the total number of bucket tables corresponding to the target data table according to the set storage length of a single bucket table; the storage length is less than or equal to the length of the memory of the column storage database; the storage length is determined according to the set row number range difference and the length of a single row of data in the target data table; creating a first number of bucket tables in the memory according to the length of the memory of the column storage database, and creating a second number of bucket tables in the disk corresponding to the column storage database; the sum of the first number and the second number is equal to the total number of bucket tables.

3. The method according to claim 2, wherein: In the target data table, respectively executing data reading operations corresponding to the multiple bucketed tables includes: using multiple reading threads to execute data reading operations corresponding to some bucketed tables in the multiple bucketed tables in parallel in the target data table, where the some bucketed tables are located in the memory of the column-stored database; wherein any one of the multiple reading threads is used to determine, from the disk, a second bucketed table in the multiple bucketed tables on which the data reading operation has not been executed after executing the data reading operation corresponding to the first bucketed table in the memory; loading the second bucketed table into the memory, and executing the data reading operation corresponding to the second bucketed table.

4. The method according to claim 1, wherein: Dividing the row numbers in the row number sequence into a plurality of bucket tables according to the row number range to which the row numbers in the row number sequence belong, including: using a plurality of bucketing threads, and dividing the row numbers in the row number sequence into a plurality of internal bucket tables corresponding to each of the plurality of bucketing threads according to the row number range to which the row numbers in the row number sequence belong, wherein the plurality of internal bucket tables of any bucketing thread correspond to different row number ranges; and before respectively executing data reading operations corresponding to the plurality of bucketing tables in the target data table, further including: merging the internal bucket tables with the same row number range among the plurality of internal bucketing tables corresponding to each of the plurality of bucketing threads to obtain the plurality of bucketing tables.

5. The method according to claim 3, wherein: The method further includes: generating a sequence identifier for the row numbers in the row number sequence; merging the internal bucket tables with the same row number range in the multiple internal bucket tables corresponding to the multiple bucket threads; Obtaining the multiple bucketed tables includes: generating, for at least one internal bucketed table corresponding to any row number range, a global bucketed table corresponding to the multiple internal bucketed tables; determining sequence identifiers corresponding to each of the multiple row numbers in the multiple internal bucketed tables; and writing the multiple row numbers into the global bucketed table in sequence according to an order represented by the sequence identifiers and a mapping relationship between the sequence identifiers and the row numbers, to obtain a bucketed table obtained by merging the multiple internal bucketed tables.

6. The method according to claim 5, wherein: In the target data table, respectively executing data reading operations corresponding to the multiple bucketed tables includes: when executing the data reading operation corresponding to any bucketed table among the multiple bucketed tables, sequentially searching the target data table according to multiple row numbers in the bucketed table, and obtaining data reading results corresponding to each of the multiple row numbers; and writing the data reading results corresponding to each of the multiple row numbers into the row where the corresponding sequence identifier is located in the bucketed table according to the correspondence between the row number and the sequence identifier, to obtain a materialized table corresponding to the bucketed table.

7. A bucketing materialization method for a column-based database, applicable to any execution operator of the column-based database, comprising: Get the multidimensional row number sequence used to query the multidimensional data table; Adding a sequence identifier to the multidimensional row number sequence, wherein row numbers in the same row of the multidimensional row number sequence have the same sequence identifier; According to the row number range to which the row numbers in a first row number sequence in the multidimensional row number sequence belong, the rows containing the row numbers in the first row number sequence are divided into a plurality of bucketed tables; wherein the plurality of bucketed tables correspond to different row number ranges, and the row number range of any bucketed table is included in the total row number range of the multidimensional data table; in the data table corresponding to the first row number sequence, data read operations corresponding to the plurality of bucketed tables are respectively performed to obtain a plurality of materialized tables corresponding to the first row number sequence; At least one bucketing materialization operation is performed based on the sequence identifier of the multidimensional row number sequence, multiple materialized tables corresponding to the first row number sequence, and at least one row number sequence other than the first row number sequence in the multidimensional row number sequence to obtain a materialized table corresponding to the multidimensional row number sequence.

8. The method according to claim 7, wherein: Performing at least one bucketing materialization operation based on the multiple materialized tables corresponding to the first row number sequence and at least one row number sequence other than the first row number sequence in the multidimensional row number sequence, including: when performing any bucketing materialization operation, for a target row number sequence in the at least one row number sequence for which the bucketing materialization operation has not been performed, bucketing the multiple materialized tables obtained from the previous bucketing materialization operation using the target row number sequence as a first keyword and the order identifier of the multidimensional row number sequence as a second keyword to obtain multiple bucketed tables corresponding to the target row number sequence; performing a data reading operation on the multiple bucketed tables corresponding to the target row number sequence in a data table in the multidimensional data table corresponding to the target row number sequence to obtain multiple materialized tables corresponding to the target row number sequence; wherein, if the previous bucketing materialization operation is the bucketing materialization operation corresponding to the first row number sequence, the multiple materialized tables obtained from the previous bucketing materialization operation are the multiple materialized tables corresponding to the first row number sequence.

9. The method according to claim 8, wherein: The method includes: using the target row number sequence as a first keyword and the sequence identifier of the multidimensional row number sequence as a second keyword to bucket multiple materialized tables obtained from a previous bucketing materialization operation to obtain multiple bucketed tables corresponding to the target row number sequence, including: using multiple bucketing threads to divide data rows in the multiple materialized tables obtained from the previous materialization operation into different bucketed tables according to row number ranges to which row numbers in the target row number sequence belong, to obtain multiple internal bucketed tables corresponding to each of the multiple bucketing threads; the multiple internal bucketed tables of any bucketing thread correspond to different row number ranges; generating, for at least one internal bucketed table corresponding to any row number range, a global bucketed table corresponding to the at least one internal bucketed table; determining sequence identifiers corresponding to each of the multiple row numbers in the target row number sequence that are divided into the at least one internal bucketed table; and sequentially writing the data rows where the multiple row numbers in the at least one internal bucketed table are located into the global bucketed table according to the order represented by the sequence identifiers and the mapping relationship between the sequence identifiers and the row numbers, to obtain a bucketed table obtained by merging the at least one internal bucketed table.

10. The method according to claim 9, wherein: Multiple bucketing threads are used to divide data rows in multiple materialized tables obtained by the previous materialization operation into different bucketing tables according to the row number range to which the row numbers in the target row number sequence belong, including: when any bucketing thread buckets any materialized table among the multiple materialized tables obtained by the previous materialization operation, determining, for any data row in the materialized table, a row number corresponding to the data row in the target row number sequence; determining, according to the row number range to which the row number belongs, an internal bucket corresponding to the row number; and writing the data row into the internal bucketing table corresponding to the row number range.

11. A server, comprising: memory and processor; The memory is configured to store one or more computer instructions; the processor is configured to execute the one or more computer instructions to perform the steps of the method according to any one of claims 1 to 10.

12. A computer-readable storage medium storing a computer program, wherein when the computer program is executed by a processor, the bucketing materialization method for a column-based database according to any one of claims 1 to 10 can be implemented.

13. A computer program product, comprising a computer program / instruction, wherein when executed by a processor, the computer program / instruction can implement the bucketing materialization method for a column-based database according to any one of claims 1 to 10.

Citation Information

Patent Citations

  • Physic-chemical method and device of column storage database

    CN106354829A

  • A hash index construction method and device for a memory database

    CN109885568A

  • Novel big data storage method

    CN110888861A

  • Data processing method and device, equipment and storage medium

    CN114996266A

  • Data processing method and device, electronic equipment and storage medium

    CN115422205A