WO2017154065A1 - 計算機及びデータベース管理方法 - Google Patents

計算機及びデータベース管理方法 Download PDF

Info

Publication number
WO2017154065A1
WO2017154065A1 PCT/JP2016/056934 JP2016056934W WO2017154065A1 WO 2017154065 A1 WO2017154065 A1 WO 2017154065A1 JP 2016056934 W JP2016056934 W JP 2016056934W WO 2017154065 A1 WO2017154065 A1 WO 2017154065A1
Authority
WO
WIPO (PCT)
Prior art keywords
size
memory
column
records
store database
Prior art date
Application number
PCT/JP2016/056934
Other languages
English (en)
French (fr)
Inventor
渡辺 聡
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2016/056934 priority Critical patent/WO2017154065A1/ja
Priority to JP2018503859A priority patent/JP6530553B2/ja
Priority to US15/552,820 priority patent/US10866941B2/en
Publication of WO2017154065A1 publication Critical patent/WO2017154065A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof

Definitions

  • the present invention generally relates to data management techniques.
  • Patent Document 1 describes a system that performs database processing using an FPGA (Field-Programmable Gate Array).
  • Patent Document 2 describes a method for controlling a column store database.
  • column store database One advantage of the column store database is that the same value (column value) appears in one column more frequently than the row store database (row store type database), so that the compression effect is high.
  • the capacity of the internal memory (eg SRAM) of the FPGA is usually small.
  • a compression dictionary that is a dictionary for decompressing each column is used, but the compression dictionary does not fit in the internal memory of the FPGA.
  • a part of the compression dictionary is stored in an external memory (for example, DRAM) of the FPGA or a non-volatile storage device that can communicate with the FPGA. For this reason, it is necessary for the FPGA to access the external memory or the nonvolatile storage device for referring to the compression dictionary, and as a result, the processing performance decreases.
  • a similar problem may occur when a hardware circuit other than the FPGA is employed.
  • the computer stores a column store database composed of a plurality of records and a plurality of columns into a plurality of data segments. Divide into One or more columns of the plurality of columns are each one or more compression target columns.
  • Each of the plurality of data segments is a dictionary for decompressing a column store database portion composed of one or more records of the plurality of records and one or more compression target column portions of the column store database portions. Compression dictionary.
  • the size of the compression dictionary is equal to or smaller than the size of the memory.
  • computer may be one or more physical computers, and may include at least one virtual computer.
  • the structural example of the computer system which concerns on embodiment is shown.
  • An example of the correspondence between a DB table (column store database) and a data segment is shown.
  • the structural example of a DB table definition management table is shown.
  • the structural example of a data segment is shown.
  • the structural example of segment structure management information is shown.
  • the structural example of a sub compression dictionary is shown.
  • An example of a query is shown.
  • the structural example of the command produced by the command creation part is shown. It is a flowchart which shows an example of the flow of a query process. It is a flowchart which shows an example of the flow of a data load process.
  • the structural example of the input file input into a data load part is shown.
  • the “interface part” includes one or more interfaces.
  • the one or more interfaces may be one or more similar interface devices (for example, one or more NIC (Network Interface Card)) or two or more different interface devices (for example, NIC and HBA (Host Bus Adapter)). There may be.
  • NIC Network Interface Card
  • HBA Home Bus Adapter
  • “storage resource” includes one or more memories.
  • the at least one memory may be a volatile memory or a non-volatile memory.
  • a storage resource may include one or more PDEVs in addition to one or more memories.
  • “PDEV” means a physical storage device and may typically be a non-volatile storage device (eg, an auxiliary storage device).
  • the PDEV may be, for example, an HDD (Hard Disk Drive) or an SSD (Solid State Drive).
  • the “processor unit” includes one or more processors.
  • the at least one processor is typically a CPU (Central Processing Unit).
  • the processor may include a hardware circuit that performs part or all of the processing.
  • the processing unit (function) may be described using the expression “kkk unit”, but the processing unit may be realized by a computer program being executed by the processor unit. It may be realized by a hardware circuit (for example, FPGA or ASIC (Application Specific Integrated Circuit)).
  • the processing unit is realized by the processor unit, the processing unit is performed by using a storage resource (for example, a memory) and / or a communication interface device (for example, a communication port) as appropriate. It may be at least part of the part.
  • the processing described with the processing unit as the subject may be processing performed by the processor unit or a device having the processor unit.
  • the processor unit may include a hardware circuit that performs part or all of the processing.
  • the program may be installed on the processor from a program source.
  • the program source may be, for example, a program distribution computer or a computer-readable recording medium (for example, a non-transitory recording medium).
  • the description of each processing unit is an example, and a plurality of processing units may be combined into one processing unit, or one processing unit may be divided into a plurality of processing units.
  • information may be described using an expression such as “xxx management table”, but the information may be expressed in any data structure. That is, in order to indicate that the information does not depend on the data structure, the “xxx management table” can be referred to as “xxx management information”.
  • the configuration of each table is an example, and one table may be divided into two or more tables, or all or part of the two or more tables may be a single table. Good.
  • DB database
  • DB table A table as a DB is referred to as a “DB table”.
  • FIG. 1 shows a configuration example of a computer system according to the embodiment.
  • Each SSD 140 is an example of a nonvolatile storage device.
  • Each DB processing board 150 is an example of a hardware circuit.
  • Each DB processing board 150 includes an FPGA 160 including an SRAM (Static Random Access Memory) 164 and a DRAM (Dynamic Random Access Memory) 170.
  • the SRAM 164 is an example of an internal memory.
  • the internal memory is an example of a first memory.
  • the DRAM 170 is an example of an external memory.
  • the external memory is an example of a second memory (a memory that is slower than the first memory).
  • the high / low speed of the memory depends on at least one of whether the memory is in the FPGA 160 and the type of memory.
  • the server 100 is an example of a computer.
  • the server 100 includes an I / F 180, a memory 120, and a CPU 110 connected to them.
  • the I / F 180 is an example of an interface unit.
  • the memory 120 is an example of a storage resource.
  • the CPU 110 is an example of a processor unit.
  • the memory 120 stores a DBMS (database management system) 130 executed by the CPU 110.
  • the DBMS 130 includes a command creation unit 131, a query processing unit 132, and a data load unit 133, and manages the segment management table 134 and the DB table definition management table 135.
  • the data load unit 133 divides a DB table (column store database) composed of M records and N columns into a plurality of data segments, and stores the plurality of data segments in the plurality of SSDs 140.
  • M and N are each an integer of 2 or more. M and N may be the same value or different values.
  • One or more columns of the N columns are each one or more compression target columns.
  • Each of the plurality of data segments includes a DB table portion and a compression dictionary that is a dictionary for expanding one or more compression target column portions of the DB table portion.
  • the size of the compression dictionary is equal to or smaller than the size of the SRAM 164. Therefore, in the FPGA 160, when performing DB processing on a data segment, the entire compression dictionary in the data segment always fits in the SRAM 164 in the FPGA 160. Therefore, a decrease in processing performance can be avoided.
  • the DB table is divided as follows.
  • the data load unit 133 determines the dictionary size of the compression dictionary based on the number of unique column values in each of the one or more compression target column parts of the DB table part constituting m records (m is a natural number and less than M). calculate.
  • the data load unit 133 creates a compression dictionary corresponding to the DB table part composed of (mx) records (x is a natural number and less than m) ).
  • the dictionary size of the created compression dictionary is equal to or smaller than the size of the SRAM 164.
  • the query processing unit 132 calls the command creation unit 131 when a query is received from a query source (not shown).
  • the command creation unit 131 creates a command for each of one or more data segments corresponding to the query based on the query. That is, one command is a command for DB processing for one data segment. Therefore, the DB process is performed on the data segment, and the entire compression dictionary in the data segment fits in the SRAM 164 in the FPGA 160 that executes the DB process as described above. For this reason, it is possible to avoid a decrease in processing performance.
  • the query processing unit 132 transmits one or more commands respectively corresponding to the one or more data segments to one or more FPGAs 160 (one or more DB processing boards 150).
  • the query processing unit 132 receives one or more DB processing results respectively corresponding to the one or more commands from the one or more FPGAs 160.
  • the query processing unit 132 creates a query execution result by aggregating the received one or more DB processing results.
  • the query processing unit 132 returns the created execution result to the query source.
  • a plurality of DB processes can be executed in parallel by the plurality of FPGAs 160. Therefore, it can be expected to process the query at high speed, and a plurality of FPGAs 160 can be used efficiently.
  • the query source may be an application program (not shown) executed on the server 100 or a client (not shown) connected to the server 100.
  • N 6, that is, the number of columns included in the DB table is 6.
  • Each of the plurality of SSDs 140 is an example of a nonvolatile storage device as described above. Instead of at least one of the plurality of SSDs 140, other types of nonvolatile storage devices such as HDD (Hard Disk Disk Drive) can be adopted.
  • HDD Hard Disk Disk Drive
  • a plurality of data segments based on a DB table are stored in the plurality of SSDs 140.
  • the DB processing board 150 is a kind of accelerator. As described above, the DB processing board 150 includes the FPGA 160 and the DRAM 170.
  • the FPGA 160 includes an SRAM 164.
  • the SRAM 164 in the FPGA 160 is faster for the FPGA 160 than the DRAM 170 outside the FPGA 160.
  • the FPGA 160 includes a data reading unit 161, a data decompression unit 162, and a DB processing unit 163.
  • the data reading unit 161 reads the data segment from the SSD 140 and stores the compression dictionary in the data segment in the SRAM 164.
  • the data decompression unit 162 refers to the compression dictionary in the SRAM 164 and decompresses the compressed column part (compressed column part) in the data segment.
  • the DB processing unit 163 executes DB processing using the expanded column part.
  • the DBMS 130 is executed by the CPU 110 of the server 100.
  • the DBMS 130 is an example of a computer program.
  • the DBMS 130 includes the command creation unit 131, the query processing unit 132, and the data load unit 133, and manages the segment management table 134 and the DB table definition management table 135.
  • the command creation unit 131 creates one command for one data segment.
  • the query processing unit 132 processes a query from a query source.
  • the data load unit 133 stores a plurality of data segments including a DB table (column store database) in a plurality of SSDs 140.
  • the segment management table 134 holds information on each of a plurality of data segments based on the DB table (for example, storage location information for each data segment (for example, the ID and logical address of the SSD 140)).
  • the DB table definition management table 135 holds information related to the DB table definition.
  • FIG. 2 shows an example of the correspondence between a DB table (column store database) and a data segment.
  • the DB table is divided into a plurality of data segments 210.
  • Each data segment 210 includes a DB table portion 220 and a compression dictionary (not shown in FIG. 2).
  • the first DB table portion 220 includes six column portions composed of records 1 to 32.
  • the six column portions include at least one compressed column portion.
  • the “compressed column part” is a compressed column part.
  • the column part to be compressed is compressed and included in the data segment 210.
  • a “column part” is a part of a column.
  • the number of records constituting six column parts depends on the number of unique column values in each of the six column parts. This is because at least one column portion is to be compressed.
  • the “unique column value” is a unique column value in the column part.
  • FIG. 3 shows a configuration example of the DB table definition management table 135.
  • the DB table definition management table 135 has an entry for each column of the DB table. Each entry holds information such as a column ID 401, a column name 402, and a data type 403.
  • a column ID 401 indicates a column ID.
  • a column name 402 indicates the name of the column.
  • a data type 403 indicates the data type of the column.
  • FIG. 4 shows a configuration example of the data segment 210.
  • the “column part n” means a column part of the column n (n is an integer from 1 to 6).
  • “Column n” is a column with column ID “n”.
  • the data segment 210 includes segment configuration management information 410, a compression dictionary 420, and six column portions 430.
  • the six column portions 430 include one or more compressed column portions 430.
  • the compression dictionary 420 is composed of one or more sub-compression dictionaries 421 respectively corresponding to one or more compression column portions 430.
  • the compressed column parts are the column parts 1, 2, 4, and 5, so Includes four sub-compression dictionaries 421 corresponding respectively.
  • FIG. 5 shows a configuration example of the segment configuration management information 410.
  • the segment configuration management information 410 is a table that holds information regarding the configuration of the data segment 210 including this information.
  • the segment configuration management information 410 has an entry for each column part 430. Each entry holds information such as a column ID 601, a column offset 602, and a dictionary offset 603.
  • Column ID 601 indicates the ID of the column including the column part 430.
  • the column offset represents the offset of the column portion 430 (difference from the beginning of the data segment 210 to the beginning of the column portion 430), that is, the position of the column portion 430 in the data segment 210.
  • the dictionary offset represents the offset of the sub compression dictionary 421 corresponding to the column portion 430 (difference from the top of the data segment 210 to the top of the sub compression dictionary 421), that is, the position of the sub compression dictionary 421 in the data segment 210. .
  • the column part 430 in which the dictionary offset is a valid value (for example, a value other than “NULL”) is the compressed column part 430.
  • the column part 430 whose dictionary offset is an invalid value for example, “NULL” is an uncompressed column part 430.
  • FIG. 6 shows a configuration example of the sub compression dictionary 421.
  • the sub compression dictionary 421 represents the relationship between the compression value 701 and the decompression value 702 for the compression column portion 430 corresponding to the sub compression dictionary 421.
  • the compression value 701 is a column value after compression.
  • the extension value 702 is a column value after extension.
  • FIG. 7 shows an example of a query.
  • the query is described by, for example, a structured query language (SQL, Structured Query Language).
  • SQL Structured Query Language
  • SELECT statement is described in the query.
  • FIG. 8 shows a configuration example of a command created by the command creation unit 131.
  • the command includes SSD_ID 801, start logical address 802, end logical address 803, result storage server memory address 804, and DB processing contents.
  • SSD_ID 801 indicates the ID of the SSD 140 in which the target data segment 210 (data segment 210 corresponding to this command) is stored.
  • the start logical address 802 indicates the head logical address (logical address in the SSD 140) of the target data segment 210.
  • the end logical address 803 indicates the end logical address of the target data segment 210 (logical address in the SSD 140).
  • the result storage server memory address 804 indicates a storage destination address (area address in the memory 120) of the DB processing result.
  • DB processing content 805 indicates the content of DB processing performed on the DB table portion in the target data segment 210.
  • the DB processing content 805 includes, for example, at least one of a data search condition, a search condition combination method, and a data extraction condition.
  • FIG. 9 is a flowchart showing an example of the flow of query processing.
  • the query processing is started when the query processing unit 132 receives a query from a query source.
  • the query is a search query.
  • the DB process is executed on the DB table portion in each of all the data segments 210 according to the search query.
  • the query processing unit 132 calls the command creation unit 131, and the command creation unit 131 creates a command for each of the plurality of data segments 210 corresponding to the query based on the query (S901). That is, one command is a command for DB processing for one data segment 210.
  • the query processing unit 132 transmits the plurality of created commands to the plurality of FPGAs 160 (the plurality of DB processing boards 150) (S902).
  • the FPGA 160 that has received the command performs, for example, the following processing.
  • the data reading unit 161 reads the data segment 210 according to the command from the SSD 140 (the reading source indicated by the SSD_ID 801, the start logical address 802, and the end logical address 803 described in the command).
  • the data reading unit 161 stores the compression dictionary 420 in the data segment 210 in the SRAM 164.
  • the data decompression unit 162 refers to the compression dictionary 420 in the SRAM 164, decompresses the compressed column portion 430 in the DB table portion in the data segment 210, and stores the DB table portion in the data segment 210 in the DRAM 170. For the reason described later, the entire DB table portion (including the expanded column portion) fits in the DRAM 170 (or the DRAM 170 and a part of the SRAM 164).
  • the DB processing unit 163 executes DB processing for the DB table portion in the DB processing board 150 according to the DB processing content 805 in the command.
  • the DB processing unit 163 returns the DB processing result.
  • the DB processing unit 163 stores the DB processing result in an area indicated by the result storage server memory address 804 (an area in the memory 120 of the server 100) by DMA (Direct Memory Access).
  • the server 100 receives the DB processing result from the FPGA 160 for each of the plurality of commands transmitted in S902 (S903). Specifically, for each command, the DB processing result is stored in the area indicated by the result storage server memory address 804 in the command.
  • the query processing unit 132 creates a query execution result by aggregating a plurality of DB processing results respectively corresponding to a plurality of commands (S905). To do. The query processing unit 132 returns the created execution result to the query source (S906).
  • a plurality of DB processes can be executed in parallel by the plurality of FPGAs 160. Therefore, it can be expected to process the query at high speed, and a plurality of FPGAs 160 can be used efficiently. Further, as described above, since the entire DB table portion obtained from the data segment 210 can be accommodated in the DRAM 170 (or a part of the DRAM 170 and the SRAM 164), high-speed processing can be further expected.
  • FIG. 10 is a flowchart showing an example of the flow of data loading processing.
  • the data load unit 133 receives the input file (S1001).
  • the input file is a DB table file.
  • a configuration example of the input file is shown in FIG.
  • the data load unit 133 extracts one record (row) from unextracted records among the M records represented by the input file (S1002).
  • the records extracted in S1002 and not yet included in the data segment 210 are referred to as “candidate records”.
  • the data load unit 133 calculates m candidate records based on the number of unique column values in each compression target column portion of the six column portions 430 formed by m candidate records (m is a natural number and less than or equal to M).
  • the size of the compression dictionary 420 corresponding to the DB table portion constituted by is calculated (S1003). Specifically, for example, the data load unit 133 calculates the size of the sub compression dictionary 421 based on the number of unique column values for each compression target column portion 430.
  • the data load unit 133 calculates the size of the compression dictionary 420 by calculating the total size of all the sub compression dictionaries 421.
  • the data load unit 133 determines whether or not the calculated size exceeds the size of the SRAM 164 (S1004).
  • the size of the SRAM 164 may be notified from the FPGA 160 to the DBMS 130 in response to an inquiry from the DBMS 130 in the data loading process, or the DBMS 130 may know the size in advance.
  • the data load unit 133 determines that the DB table portion is composed of (mx) candidate records (x is a natural number and less than m) and the corresponding compression dictionary.
  • the data segment 210 including 420 is created, and the created data segment 210 is stored in any SSD 140 (S1005). That is, in S1005, the segment configuration management information 410, the compression dictionary 420, and the compression column portion 430 included in the data segment 210 are created.
  • the reason why x is subtracted is to make the dictionary size equal to or smaller than the SRAM size.
  • the value of x may be a variable value, and may be determined based on the number of unique column values in each compression target column portion 430.
  • the data load unit 133 determines that the size of the data segment 210 including the DB table part composed of m candidate records and the corresponding compression dictionary 420 is a threshold value. It is determined whether (predetermined segment size) has been exceeded (S1006).
  • the threshold value is a value for the size of the DB table portion to be a predetermined size or less in each of the plurality of data segments 210.
  • the predetermined size is (p) the sum of the difference between the SRAM size and the compression dictionary size and the DRAM size, or (q) the DRAM size. That is, a threshold value (predetermined segment size) is determined so that the entire DB table portion obtained from the data segment 210 can be stored in the storage area of the DB processing board 150.
  • the data load unit 133 creates a data segment 210 including a DB table portion composed of m candidate records and a compression dictionary 420 corresponding thereto,
  • the data segment 210 is stored in any SSD 140 (S1005). That is, even if the compression dictionary size is smaller than the SRAM size (in other words, even if candidate records increase, the compression dictionary size can be equal to or smaller than the SRAM size), the data segment 210 is created and stored in the SSD 140.
  • the data load unit 133 determines whether or not the record read in S1002 is the last record among the M records represented by the input file (S1007). If the determination result in S1007 is false (S1007: NO), the process returns to S1002.
  • the data load unit 133 creates a data segment 210 including a DB table portion composed of all candidate records and the compression dictionary 420 corresponding to the DB table portion.
  • the data segment 210 is stored in any SSD 140.
  • the size of the DB table portion may exceed the size of the DRAM 170.
  • a part of the DB table portion may be stored in the SSD 140.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

それぞれがメモリを有する1以上のハードウェア回路に計算機の処理のうちのデータベース処理がオフロードされるシステムにおいて、計算機が、複数のレコード及び複数のカラムで構成されたカラムストアデータベースを複数のデータセグメントに分割する。複数のカラムのうちの1以上のカラムが、それぞれ、1以上の圧縮対象カラムである。複数のデータセグメントの各々は、複数のレコードのうちの1以上のレコードで構成されたカラムストアデータベース部分と、そのカラムストアデータベース部分のうちの1以上の圧縮対象カラム部分を伸長するため辞書である圧縮辞書とを含む。複数のデータセグメントの各々において、圧縮辞書のサイズは、メモリのサイズ以下である。

Description

計算機及びデータベース管理方法
 本発明は、概して、データ管理技術に関する。
 計算機の処理の一部をハードウェア回路にオフロードする技術が知られている。例えば、特許文献1には、FPGA(Field-Programmable Gate Array)を活用してデータベースの処理を行うシステムが記載されている。
 また、カラムストアデータベース(カラムストア型のデータベース)も知られている。例えば、特許文献2には、カラムストアデータベースの制御方法が記載されている。
特表2007-524923号公報 米国特許公開第8,631,000明細書
 カラムストアデータベースの1つの利点は、ローストアデータベース(ローストア型のデータベース)よりも、1つのカラムにおいて同一の値(カラム値)が出現する頻度が高いため、圧縮効果が高いことが考えられる。
 特許文献1及び2に開示の技術によれば、カラムストアデータベースに関する処理の一部をFPGAにオフロードすることが考えられる。
 しかし、通常、FPGAの内部メモリ(例えばSRAM)の容量は小さい。カラムストアデータベースの処理(典型的には検索処理)では、各カラムの伸長のための辞書である圧縮辞書が使用されるが、圧縮辞書が、FPGAの内部メモリには収まらない。圧縮辞書の一部が、FPGAの外部メモリ(例えばDRAM)、又は、FPGAと通信可能な不揮発記憶デバイスに格納される。このため、FPGAが、圧縮辞書の参照のために、外部メモリ又は不揮発記憶デバイスにアクセスする必要があり、その結果、処理性能が低下する。
 同様の問題は、FPGA以外のハードウェア回路が採用される場合にもあり得る。
 それぞれがメモリを有する1以上のハードウェア回路に計算機の処理のうちのデータベース処理がオフロードされるシステムにおいて、計算機が、複数のレコード及び複数のカラムで構成されたカラムストアデータベースを複数のデータセグメントに分割する。複数のカラムのうちの1以上のカラムが、それぞれ、1以上の圧縮対象カラムである。複数のデータセグメントの各々は、複数のレコードのうちの1以上のレコードで構成されたカラムストアデータベース部分と、そのカラムストアデータベース部分のうちの1以上の圧縮対象カラム部分を伸長するため辞書である圧縮辞書とを含む。複数のデータセグメントの各々において、圧縮辞書のサイズは、メモリのサイズ以下である。
 なお、「計算機」は、1以上の物理計算機であってよく、少なくとも1つの仮想計算機を含んでもよい。
 データセグメントについてのデータベース処理において、そのデータセグメント内の圧縮辞書全体が、そのデータベース処理を行うハードウェア回路のメモリに収まる。このため、カラムストアデータベースの処理の性能低下を回避できる。
実施形態に係る計算機システムの構成例を示す。 DB表(カラムストアデータベース)とデータセグメントとの対応関係の一例を示す。 DB表定義管理テーブルの構成例を示す。 データセグメントの構成例を示す。 セグメント構成管理情報の構成例を示す。 サブ圧縮辞書の構成例を示す。 クエリの一例を示す。 コマンド作成部により作成されるコマンドの構成例を示す。 クエリ処理の流れの一例を示すフローチャートである。 データロード処理の流れの一例を示すフローチャートである。 データロード部に入力される入力ファイルの構成例を示す。
 以下、図面を参照して、本発明の一実施形態を説明する。但し、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではない。
 以下の説明では、「インターフェース部」は、1以上のインターフェースを含む。1以上のインターフェースは、1以上の同種のインターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種のインターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
 また、以下の説明では、「記憶資源」は、1以上のメモリを含む。少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。記憶資源は、1以上のメモリに加えて、1以上のPDEVを含んでもよい。「PDEV」は、物理的な記憶デバイスを意味し、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよい。PDEVは、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)でよい。
 また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)である。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
 また、以下の説明では、「kkk部」の表現にて処理部(機能)を説明することがあるが、処理部は、コンピュータプログラムがプロセッサ部によって実行されることで実現されてもよいし、ハードウェア回路(例えばFPGA又はASIC(Application Specific Integrated Circuit))によって実現されてもよい。プログラムがプロセッサ部によって処理部が実現される場合、定められた処理が、適宜に記憶資源(例えばメモリ)及び/又は通信インターフェイスデバイス(例えば通信ポート)等を用いながら行われるため、処理部はプロセッサ部の少なくとも一部とされてもよい。処理部を主語として説明された処理は、プロセッサ部あるいはそのプロセッサ部を有する装置が行う処理としてもよい。また、プロセッサ部は、処理の一部または全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースからプロセッサにインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機または計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。各処理部の説明は一例であり、複数の処理部が1つの処理部にまとめられたり、1つの処理部が複数の処理部に分割されたりしてもよい。
 また、以下の説明では、「xxx管理テーブル」といった表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxx管理テーブル」を「xxx管理情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
 また、以下の説明では、「データベース」を「DB」と略記する。また、DBとしての表を「DB表」と言う。
 図1は、実施形態に係る計算機システムの構成例を示す。
 複数(又は1つ)のSSD140(Solid State Drive)と、複数(又は1つ)のDB処理ボード150と、サーバ100とを有する。各SSD140は、不揮発記憶デバイスの一例である。各DB処理ボード150は、ハードウェア回路の一例である。各DB処理ボード150は、SRAM(Static Random Access Memory)164を含んだFPGA160と、DRAM(Dynamic Random Access Memory)170とを有する。SRAM164は、内部メモリの一例である。内部メモリは、第1メモリの一例である。DRAM170は、外部メモリの一例である。外部メモリは、第2メモリ(第1メモリより低速のメモリ)の一例である。メモリの高速/低速は、メモリがFPGA160内にあるか否かと、メモリの種類とのうちの少なくとも1つに依存する。サーバ100は、計算機の一例である。サーバ100は、I/F180と、メモリ120と、それらに接続されたCPU110とを有する。I/F180は、インターフェース部の一例である。メモリ120は、記憶資源の一例である。CPU110は、プロセッサ部の一例である。メモリ120に、CPU110に実行されるDBMS(Database management system)130が格納される。DBMS130は、コマンド作成部131、クエリ処理部132及びデータロード部133を有し、セグメント管理テーブル134及びDB表定義管理テーブル135を管理する。
 本実施形態の概要は、以下の通りである。
 データロード部133が、M個のレコード及びN個のカラムで構成されたDB表(カラムストアデータベース)を複数のデータセグメントに分割し、複数のデータセグメントを複数のSSD140に格納する。M及びNは、それぞれ、2以上の整数である。MとNは、同じ値でもよいし異なる値であってもよい。N個のカラムのうちの1以上のカラムが、それぞれ、1以上の圧縮対象カラムである。複数のデータセグメントの各々は、DB表部分と、そのDB表部分のうちの1以上の圧縮対象カラム部分を伸長するため辞書である圧縮辞書とを含む。複数のデータセグメントの各々において、圧縮辞書のサイズは、SRAM164のサイズ以下である。このため、FPGA160において、データセグメントについてのDB処理の際、そのデータセグメント内の圧縮辞書全体が、必ず、FPGA160内のSRAM164に収まる。故に、処理性能の低下を回避できる。
 DB表の分割は、次のように行われる。データロード部133は、m個のレコード(mは自然数且つM未満)を構成するDB表部分の1以上の圧縮対象カラム部分の各々においてのユニークカラム値の数に基づき、圧縮辞書の辞書サイズを算出する。算出された辞書サイズがSRAM164のサイズを超えた場合、データロード部133は、(m-x)個のレコードで構成されたDB表部分に対応した圧縮辞書を作成する(xは自然数且つm未満)。結果として、作成された圧縮辞書の辞書サイズがSRAM164のサイズ以下となる。
 クエリ処理部132は、クエリソース(図示せず)からクエリを受信した場合に、コマンド作成部131を呼び出す。コマンド作成部131が、そのクエリを基に、そのクエリに対応した1以上のデータセグメントの各々についてのコマンドを作成する。つまり、1つのコマンドは、1つのデータセグメントに対するDB処理のためのコマンドである。故に、DB処理はデータセグメントについて行われ、データセグメント内の圧縮辞書全体は、上述したように、そのDB処理を実行するFPGA160内のSRAM164に収まる。このため、処理性能の低下を回避できる。クエリ処理部132が、その1以上のデータセグメントにそれぞれ対応した1以上のコマンドを1以上のFPGA160(1以上のDB処理ボード150)に送信する。クエリ処理部132は、その1以上のコマンドにそれぞれ対応した1以上のDB処理結果を1以上のFPGA160から受信する。クエリ処理部132は、受信した1以上のDB処理結果を集約することにより、クエリの実行結果を作成する。クエリ処理部132は、その作成された実行結果を、クエリソースに返す。1つのクエリに基づく複数のコマンドを複数のFPGA160に送信することにより、複数のFPGA160で並列に複数のDB処理が実行することができる。故に、クエリを高速に処理することが期待でき、また、複数のFPGA160を効率的に使用できる。なお、クエリソースは、サーバ100で実行されるアプリケーションプログラム(図示せず)でもよいし、サーバ100に接続されたクライアント(図示せず)であってもよい。
 以下、本実施形態を詳細に説明する。なお、以下の説明では、N=6、すなわち、DB表が有するカラムの数は6であるとする。
 複数のSSD140の各々は、上述したように、不揮発記憶デバイスの一例である。複数のSSD140の少なくとも1つに代えて、他種の不揮発記憶デバイス、例えばHDD(Hard Disk Drive)を採用することができる。複数のSSD140に、DB表(カラムストアデータベース)に基づく複数のデータセグメントが格納される。
 DB処理ボード150は、一種のアクセラレータである。DB処理ボード150は、上述したように、FPGA160とDRAM170とを有する。FPGA160は、SRAM164を含む。FPGA160内のSRAM164は、FPGA160にとって、FPGA160外のDRAM170よりも高速である。FPGA160は、データ読出し部161、データ伸長部162及びDB処理部163を有する。データ読出し部161は、SSD140からデータセグメントを読み出し、データセグメント内の圧縮辞書を、SRAM164に格納する。データ伸長部162は、SRAM164内の圧縮辞書を参照し、データセグメント内の圧縮カラム部分(圧縮されているカラム部分)を伸長する。DB処理部163は、伸長されたカラム部分を用いたDB処理を実行する。
 上述したように、サーバ100のCPU110によりDBMS130が実行される。DBMS130は、コンピュータプログラムの一例である。DBMS130は、上述したように、コマンド作成部131、クエリ処理部132及びデータロード部133を有し、セグメント管理テーブル134及びDB表定義管理テーブル135を管理する。コマンド作成部131は、1つのデータセグメントにつき1つのコマンドを作成する。クエリ処理部132は、クエリソースからのクエリを処理する。データロード部133は、DB表(カラムストアデータベース)を含んだ複数のデータセグメントを複数のSSD140に格納する。セグメント管理テーブル134は、DB表に基づく複数のデータセグメントの各々に関する情報(例えば、データセグメント毎の格納先情報(例えば、SSD140のID及び論理アドレス))を保持する。DB表定義管理テーブル135は、DB表定義に関する情報を保持する。
 図2は、DB表(カラムストアデータベース)とデータセグメントとの対応関係の一例を示す。
 DB表が複数のデータセグメント210に分割されるが、各データセグメント210は、DB表部分220と、圧縮辞書(図2では不図示)とを含む。例えば、図2に例示のように、DB表が4000個以上のレコードで構成されている場合、1番目のDB表部分220は、レコード1~32で構成された6個のカラム部分を含む。各データセグメント210において、6個のカラム部分は、少なくとも1つの圧縮カラム部分を含む。「圧縮カラム部分」は、圧縮されたカラム部分である。圧縮対象のカラム部分が圧縮されてデータセグメント210に含まれる。「カラム部分」は、カラムの一部分である。
 1つのデータセグメント210において、6個のカラム部分を構成するレコードの数は、6個のカラム部分の各々におけるユニークカラム値の数に依存する。少なくとも1つのカラム部分が圧縮対象のためである。1つのカラム部分において、「ユニークカラム値」とは、そのカラム部分においてユニークなカラム値である。
 図3は、DB表定義管理テーブル135の構成例を示す。
 DB表定義管理テーブル135は、DB表が有するカラム毎にエントリを有する。各エントリは、カラムID401、カラム名402及びデータ型403といった情報を保持する。カラムID401は、カラムのIDを示す。カラム名402は、カラムの名前を示す。データ型403は、カラムのデータ型を示す。
 図4は、データセグメント210の構成例を示す。なお、「カラム部分n」は、カラムn(nは1~6のうちのいずれかの整数)のカラム部分を意味する。「カラムn」は、カラムID“n”のカラムである。
 データセグメント210は、セグメント構成管理情報410と、圧縮辞書420と、6個のカラム部分430とを含む。6個のカラム部分430は、1以上の圧縮カラム部分430を含む。圧縮辞書420は、1以上の圧縮カラム部分430にそれぞれ対応した1以上のサブ圧縮辞書421で構成される。
 図4の例示によれば、カラム部分1~6のうち、圧縮されているカラム部分は、カラム部分1、2、4及び5のため、圧縮辞書420は、カラム部分1、2、4及び5にそれぞれ対応した4個のサブ圧縮辞書421を含む。
 図5は、セグメント構成管理情報410の構成例を示す。
 セグメント構成管理情報410は、この情報を含んだデータセグメント210の構成に関する情報を保持するテーブルである。セグメント構成管理情報410は、カラム部分430毎に、エントリを有する。各エントリは、カラムID601、カラムオフセット602、及び辞書オフセット603といった情報を保持する。
 カラムID601は、カラム部分430を含んだカラムのIDを示す。カラムオフセットは、カラム部分430のオフセット(データセグメント210の先頭からカラム部分430の先頭までの差分)、つまり、データセグメント210における、カラム部分430の位置、を表す。辞書オフセットは、カラム部分430に対応したサブ圧縮辞書421のオフセット(データセグメント210の先頭からサブ圧縮辞書421の先頭までの差分)、つまり、データセグメント210における、サブ圧縮辞書421の位置、を表す。辞書オフセットが有効な値(例えば“NULL”以外の値)であるカラム部分430が、圧縮されているカラム部分430である。辞書オフセットが無効な値(例えば“NULL”)であるカラム部分430は、非圧縮のカラム部分430である。
 図6は、サブ圧縮辞書421の構成例を示す。
 サブ圧縮辞書421は、このサブ圧縮辞書421に対応する圧縮カラム部分430について、圧縮値701と伸長値702との関係を表す。圧縮値701は、圧縮後のカラム値である。伸長値702は、伸長後のカラム値である。
 以上のようなデータセグメント2101つにつき、上述したように、クエリに基づき1つのコマンドが作成される。
 図7は、クエリの一例を示す。
 クエリは、例えば、構造化問合せ言語(SQL、Structured Query Language)によって記述される。クエリには、例えば、SELECT文が記述されている。
 図8は、コマンド作成部131により作成されるコマンドの構成例を示す。
 コマンドは、SSD_ID801、開始論理アドレス802、終了論理アドレス803、結果格納サーバメモリアドレス804及びDB処理内容を含む。
 SSD_ID801は、対象データセグメント210(このコマンドに対応したデータセグメント210)が格納されているSSD140のIDを示す。開始論理アドレス802は、対象データセグメント210の先頭論理アドレス(SSD140における論理アドレス)を示す。終了論理アドレス803は、対象データセグメント210の終了論理アドレス(SSD140における論理アドレス)を示す。結果格納サーバメモリアドレス804は、DB処理結果の格納先アドレス(メモリ120における領域のアドレス)を示す。DB処理内容805は、対象データセグメント210内のDB表部分に対して行うDB処理の内容を示す。DB処理内容805は、例えば、データ検索条件、検索条件結合方法及びデータ抽出条件のうちの少なくとも1つを含む。
 図9は、クエリ処理の流れの一例を示すフローチャートである。クエリ処理は、クエリ処理部132がクエリソースからクエリを受信した場合に開始される。以下、クエリは、検索クエリであるとする。そして、検索クエリに従い全てのデータセグメント210の各々におけるDB表部分に対してDB処理が実行されるとする。
 クエリ処理部132は、コマンド作成部131を呼び出し、コマンド作成部131が、そのクエリを基に、そのクエリに対応した複数のデータセグメント210の各々についてのコマンドを作成する(S901)。つまり、1つのコマンドは、1つのデータセグメント210に対するDB処理のためのコマンドである。
 クエリ処理部132が、作成された複数のコマンドを複数のFPGA160(複数のDB処理ボード150)に送信する(S902)。コマンドを受信したFPGA160は、例えば次の処理を行う。データ読出し部161が、コマンドに従うデータセグメント210をSSD140(コマンドに記載のSSD_ID801、開始論理アドレス802及び終了論理アドレス803が示す読出し元)から読み出す。データ読出し部161が、そのデータセグメント210内の圧縮辞書420をSRAM164に格納する。データ伸長部162が、SRAM164内の圧縮辞書420を参照して、そのデータセグメント210内のDB表部分における圧縮カラム部分430を伸長し、そのデータセグメント210内のDB表部分をDRAM170に格納する。後述の理由から、DB表部分全体(伸長されたカラム部分を含む)が、DRAM170(又は、DRAM170と、SRAM164の一部)に収まる。DB処理部163が、コマンド内のDB処理内容805に従い、DB処理ボード150におけるDB表部分に対するDB処理を実行する。DB処理部163が、DB処理結果を返す。具体的には、DB処理部163が、DMA(Direct Memory Access)により、結果格納サーバメモリアドレス804が示す領域(サーバ100のメモリ120における領域)にDB処理結果を格納する。
 サーバ100が、S902で送信した複数のコマンドの各々について、DB処理結果をFPGA160から受信する(S903)。具体的には、各コマンドについて、DB処理結果が、そのコマンド内の結果格納サーバメモリアドレス804が示す領域に格納される。全てのコマンドについてDB処理結果を受信した場合(S904:YES)、クエリ処理部132は、複数のコマンドにそれぞれ対応した複数のDB処理結果を集約することにより(S905)、クエリの実行結果を作成する。クエリ処理部132は、その作成された実行結果を、クエリソースに返す(S906)。
 1つのクエリに基づく複数のコマンドを複数のFPGA160に送信することにより、複数のFPGA160で並列に複数のDB処理が実行することができる。故に、クエリを高速に処理することが期待でき、また、複数のFPGA160を効率的に使用できる。また、上述したように、データセグメント210から得られたDB表部分全体が、DRAM170(又は、DRAM170と、SRAM164の一部)に収まるので、高速な処理が一層期待できる。
 図10は、データロード処理の流れの一例を示すフローチャートである。
 データロード部133は、入力ファイルを受信する(S1001)。入力ファイルは、DB表のファイルである。入力ファイルの構成例を図11に示す。
 データロード部133は、入力ファイルが表すM個のレコードのうち未抽出のレコードから1レコード(行)を抽出する(S1002)。S1002で抽出され未だデータセグメント210に含められていないレコードを、「候補レコード」と言う。
 データロード部133は、m個の候補レコード(mは自然数且つM以下)が構成する6個のカラム部分430のうちの各圧縮対象カラム部分におけるユニークカラム値の数に基づき、m個の候補レコードで構成されたDB表部分に対応した圧縮辞書420のサイズを算出する(S1003)。具体的には、例えば、データロード部133は、各圧縮対象カラム部分430について、ユニークカラム値の数に基づきサブ圧縮辞書421のサイズを算出する。データロード部133は、全てのサブ圧縮辞書421のサイズの合計を算出することで、圧縮辞書420のサイズを算出する。
 データロード部133は、算出されたサイズがSRAM164のサイズを超えたか否かを判断する(S1004)。SRAM164のサイズは、データロード処理において、DBMS130からの問合せに応答してFPGA160からDBMS130に通知されてもよいし、DBMS130が予め把握していてもよい。
 S1004の判断結果が真の場合(S1004:YES)、データロード部133は、(m-x)個の候補レコード(xは自然数且つm未満)で構成されたDB表部分とそれに対応した圧縮辞書420とを含んだデータセグメント210を作成し、作成したデータセグメント210をいずれかのSSD140に格納する(S1005)。つまり、S1005では、データセグメント210に含まれるセグメント構成管理情報410、圧縮辞書420及び圧縮カラム部分430が作成される。なお、xを減算する理由は、辞書サイズをSRAMサイズ以下とするためである。xの値は、可変値でよく、各圧縮対象カラム部分430におけるユニークカラム値の数に基づいて決定されてよい。S1005の後、S1005でデータセグメント210に含まれなかったx個の候補レコードについて、S1003が実行される。
 S1004の判断結果が偽の場合(S1004:NO)、データロード部133は、m個の候補レコードで構成されたDB表部分とそれに対応した圧縮辞書420とを含んだデータセグメント210のサイズが閾値(所定のセグメントサイズ)を超えたか否かを判断する(S1006)。閾値は、複数のデータセグメント210の各々において、DB表部分のサイズが、所定サイズ以下となるための値である。所定サイズは、(p)SRAMサイズと圧縮辞書サイズとの差分と、DRAMサイズとの合計値、又は、(q)DRAMサイズ、である。つまり、データセグメント210から得られたDB表部分全体がDB処理ボード150の記憶領域に収まるような閾値(所定のセグメントサイズ)が決定されている。
 S1006の判断結果が真の場合(S1006:YES)、データロード部133は、m個の候補レコードで構成されたDB表部分とそれに対応した圧縮辞書420とを含んだデータセグメント210を作成し、そのデータセグメント210をいずれかのSSD140に格納する(S1005)。つまり、圧縮辞書サイズがSRAMサイズより小さくても(言い換えれば、候補レコードが増えても圧縮辞書サイズがSRAMサイズ以下となり得ても)、データセグメント210が作成されSSD140に格納される。
 データロード部133は、S1002で読み出されたレコードが、入力ファイルが表すM個のレコードのうちの最終レコードであるか否かを判断する(S1007)。S1007の判断結果が偽の場合(S1007:NO)、S1002に戻る。
 S1007の判断結果が真の場合(S1007:YES)、データロード部133は、全ての候補レコードで構成されるDB表部分とそれに対応した圧縮辞書420とを含んだデータセグメント210を作成し、そのデータセグメント210をいずれかのSSD140に格納する。
 以上、一実施形態を説明したが、本発明は上述した実施形態に限られず、他の様々な態様に適用可能である。例えば、DB表部分のサイズがDRAM170のサイズを超えることがあってもよい。その場合、DB表部分の一部がSSD140に格納されてよい。
100…サーバ

 

Claims (12)

  1.  それぞれが第1メモリを有する1以上のハードウェア回路に接続された1以上のインターフェースであるインターフェース部と、
     前記インターフェース部に接続された1以上のプロセッサであるプロセッサ部と
    を有し、
     前記プロセッサ部は、複数のレコード及び複数のカラムで構成されたカラムストアデータベースを複数のデータセグメントに分割し、
     前記1以上のハードウェア回路の各々は、前記プロセッサ部からのコマンドに応じたデータベース処理を実行する回路であり、
     前記複数のカラムのうちの1以上のカラムが、それぞれ、1以上の圧縮対象カラムであり、
     前記複数のデータセグメントの各々は、
      前記複数のレコードのうちの1以上のレコードで構成されたカラムストアデータベース部分と、
      そのカラムストアデータベース部分のうちの1以上の圧縮対象カラム部分を伸長するため辞書である圧縮辞書と
    を含み、
     前記複数のデータセグメントの各々において、前記圧縮辞書のサイズは、前記第1メモリのサイズ以下である、
    計算機。
  2.  前記プロセッサ部は、前記複数のデータセグメントの各々を、下記(A)及び(B)の繰り返しにより作成する、
      (A)前記カラムストアデータベースのうちのm個のレコード(mは自然数)を構成するカラムストアデータベース部分の1以上の圧縮対象カラム部分の各々においてのユニークカラム値の数に基づき、前記m個のレコードで構成されたカラムストアデータベース部分に対応した圧縮辞書のサイズを算出する、
      (B)前記算出されたサイズと前記第1メモリのサイズとの比較の結果に基づいて、データセグメントを作成するか否かを決定する、
    請求項1記載の計算機。
  3.  前記プロセッサ部は、(B)において、
      (b1)前記m個のレコードについて前記算出されたサイズが、前記第1メモリのサイズを超えたか否かを判断し、
      (b2)(b1)の判断結果が真の場合、(m-x)個のレコード(xは自然数且つm未満)で構成されたカラムストアデータベース部分とそれに対応した圧縮辞書とを含んだデータセグメントを作成する、
    請求項2記載の計算機。
  4.  前記プロセッサ部は、
      (b3)(b1)の判断結果が偽の場合、前記m個のレコードで構成されたカラムストアデータベース部分とそれに対応した圧縮辞書とを含んだデータセグメントのサイズが所定のセグメントサイズを超えたか否かを判断し、
      (b4)(b3)の判断結果が真の場合、前記m個のレコードで構成されたカラムストアデータベース部分とそれに対応した圧縮辞書とを含んだデータセグメントを作成する、
    請求項3記載の計算機。
  5.  前記1以上のハードウェア回路の各々が、更に、前記第1メモリより低速の第2メモリを有し、
     前記所定のセグメントサイズは、前記複数のデータセグメントの各々において、前記カラムストアデータベース部分のサイズが、所定サイズ以下となるためのサイズであり、
     前記所定サイズは、
      前記第1メモリのサイズと前記圧縮辞書のサイズとの差分と、前記第2メモリのサイズとの合計値以下、又は、
      前記第2メモリのサイズ以下、
    である、
    請求項4記載の計算機。
  6.  前記1以上のハードウェア回路の各々は、内部メモリを含んだFPGA(Field-Programmable Gate Array)と、外部メモリとを含んだ回路であり、
     前記内部メモリが、前記第1メモリであり、
     前記外部メモリが、前記第2メモリである、
    請求項5記載の計算機。
  7.  前記プロセッサ部は、
      クエリソースからクエリに対応した1以上のデータセグメントの各々について前記クエリを基にコマンドを作成し、
      前記1以上のデータセグメントにそれぞれ対応した1以上のコマンドを前記1以上のハードウェア回路に送信し、
      前記1以上のコマンドにそれぞれ対応した1以上のデータベース処理結果を前記1以上のハードウェア回路から受信し、
      前記受信した1以上のデータベース処理結果に基づく結果を前記クエリに対する応答として前記クエリソースに返す、
    請求項1記載の計算機。
  8.  前記クエリは、検索クエリであり、
     前記1以上のコマンドは、前記複数のデータセグメントにそれぞれ対応した複数のコマンドであり、
     前記1以上のハードウェア回路は、複数のハードウェア回路であり、
    請求項7記載の計算機。
  9.  前記1以上のハードウェア回路の各々が、更に、前記第1メモリより低速の第2メモリを有し、
     前記複数のデータセグメントの少なくとも1つにおいて、前記カラムストアデータベース部分のサイズは、所定サイズ以下であり、
     前記所定サイズは、
      前記第1メモリのサイズと前記圧縮辞書のサイズとの差分と、前記第2メモリのサイズとの合計値、又は、
      前記第2メモリのサイズ、
    である、
    請求項1記載の計算機。
  10.  前記1以上のハードウェア回路の各々は、内部メモリを含んだFPGA(Field-Programmable Gate Array)と、外部メモリとを含んだ回路であり、
     前記内部メモリが、前記第1メモリである、
    請求項1記載の計算機。
  11.  それぞれが第1メモリを有する1以上のハードウェア回路に計算機の処理のうちのデータベース処理がオフロードされるシステムでのデータベース管理方法であって、
     複数のレコード及び複数のカラムで構成されたカラムストアデータベースを入力し、
     前記入力されたカラムストアデータベースを複数のデータセグメントに分割し、
     前記複数のカラムのうちの1以上のカラムが、それぞれ、1以上の圧縮対象カラムであり、
     前記複数のデータセグメントの各々は、
      前記複数のレコードのうちの1以上のレコードで構成されたカラムストアデータベース部分と、
      そのカラムストアデータベース部分のうちの1以上の圧縮対象カラム部分を伸長するため辞書である圧縮辞書と
    を含み、
     前記複数のデータセグメントの各々において、前記圧縮辞書のサイズは、前記第1メモリのサイズ以下である、
    データベース管理方法。
  12.  それぞれが第1メモリを有する1以上のハードウェア回路に計算機の処理のうちのデータベース処理がオフロードされるシステムにおける前記計算機に、
     複数のレコード及び複数のカラムで構成されたカラムストアデータベースを入力し、
     前記入力されたカラムストアデータベースを複数のデータセグメントに分割する
    ことを実行させるコンピュータプログラムを記録した計算機読取り可能な非一時的な記録媒体であって、
     前記複数のカラムのうちの1以上のカラムが、それぞれ、1以上の圧縮対象カラムであり、
      前記複数のデータセグメントの各々は、
      前記複数のレコードのうちの1以上のレコードで構成されたカラムストアデータベース部分と、
      そのカラムストアデータベース部分のうちの1以上の圧縮対象カラム部分を伸長するため辞書である圧縮辞書と
    を含み、
     前記複数のデータセグメントの各々において、前記圧縮辞書のサイズは、前記第1メモリのサイズ以下である、
    記録媒体。
PCT/JP2016/056934 2016-03-07 2016-03-07 計算機及びデータベース管理方法 WO2017154065A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2016/056934 WO2017154065A1 (ja) 2016-03-07 2016-03-07 計算機及びデータベース管理方法
JP2018503859A JP6530553B2 (ja) 2016-03-07 2016-03-07 計算機及びデータベース管理方法
US15/552,820 US10866941B2 (en) 2016-03-07 2016-03-07 Computer and database management method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/056934 WO2017154065A1 (ja) 2016-03-07 2016-03-07 計算機及びデータベース管理方法

Publications (1)

Publication Number Publication Date
WO2017154065A1 true WO2017154065A1 (ja) 2017-09-14

Family

ID=59790180

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/056934 WO2017154065A1 (ja) 2016-03-07 2016-03-07 計算機及びデータベース管理方法

Country Status (3)

Country Link
US (1) US10866941B2 (ja)
JP (1) JP6530553B2 (ja)
WO (1) WO2017154065A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11093493B1 (en) * 2018-09-28 2021-08-17 Amazon Technologies, Inc. Dynamically switching between query and scan for optimizing table reads
US11360669B2 (en) 2020-04-01 2022-06-14 Hitachi, Ltd. Storage device accelerator providing aggregation of divided plaintext data

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000305822A (ja) * 1999-04-26 2000-11-02 Denso Corp データベース管理装置,データベースレコード抽出装置,データベース管理方法及びデータベースレコード抽出方法
JP2005352561A (ja) * 2004-06-08 2005-12-22 Mitsubishi Electric Corp データベースサーバ及びデータベースクライアント
JP2010026884A (ja) * 2008-07-23 2010-02-04 Hitachi Ltd データ圧縮処理を伴うデータ管理方法
WO2015145647A1 (ja) * 2014-03-27 2015-10-01 株式会社日立製作所 ストレージ装置とデータ処理方法及びストレージシステム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2004290281A1 (en) 2003-05-23 2005-05-26 Washington University Intelligent data storage and processing using FPGA devices
US8279096B2 (en) * 2010-05-19 2012-10-02 Red Hat, Inc. Parallel compression for dictionary-based sequential coders
US8631000B2 (en) 2010-09-30 2014-01-14 International Business Machines Corporation Scan sharing for query predicate evaluations in column-based in-memory database systems
US10235377B2 (en) * 2013-12-23 2019-03-19 Sap Se Adaptive dictionary compression/decompression for column-store databases

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000305822A (ja) * 1999-04-26 2000-11-02 Denso Corp データベース管理装置,データベースレコード抽出装置,データベース管理方法及びデータベースレコード抽出方法
JP2005352561A (ja) * 2004-06-08 2005-12-22 Mitsubishi Electric Corp データベースサーバ及びデータベースクライアント
JP2010026884A (ja) * 2008-07-23 2010-02-04 Hitachi Ltd データ圧縮処理を伴うデータ管理方法
WO2015145647A1 (ja) * 2014-03-27 2015-10-01 株式会社日立製作所 ストレージ装置とデータ処理方法及びストレージシステム

Also Published As

Publication number Publication date
US20180173736A1 (en) 2018-06-21
JP6530553B2 (ja) 2019-06-12
US10866941B2 (en) 2020-12-15
JPWO2017154065A1 (ja) 2018-11-22

Similar Documents

Publication Publication Date Title
US9569357B1 (en) Managing compressed data in a storage system
US10585856B1 (en) Utilizing data access patterns to determine compression block size in data storage systems
US10824599B2 (en) Information processing apparatus, information processing method, and recording medium
US9973210B1 (en) Reduction of execution stalls of LZ4 decompression via parallelization
JP2008217209A (ja) 差分スナップショット管理方法、計算機システム及びnas計算機
US20160147800A1 (en) Data Processing Method and System and Client
US20190347209A1 (en) Storage of database column data in non-volatile memory
US10713221B2 (en) Dual layer deduplication for a file system running over a deduplicated block storage
US20150227540A1 (en) System and method for content-aware data compression
WO2017042978A1 (ja) 計算機システム、ストレージ装置、及びデータの管理方法
WO2017154065A1 (ja) 計算機及びデータベース管理方法
US20200218461A1 (en) Managing Data Reduction in Storage Systems Using Machine Learning
US11226769B2 (en) Large-scale storage system and data placement method in large-scale storage system
US11593312B2 (en) File layer to block layer communication for selective data reduction
JP6262878B2 (ja) ストレージ装置
US10803035B2 (en) Storage device, computer system, and control method for storage device
US10083121B2 (en) Storage system and storage method
US11615063B2 (en) Similarity deduplication
US11068208B2 (en) Capacity reduction in a storage system
US10664442B1 (en) Method and system for data consistency verification in a storage system
JP2017146918A (ja) 制御装置、ストレージ装置、ストレージシステム、制御方法及びプログラム
JP6695973B2 (ja) 計算機システム及びデータベース管理方法
US11099756B2 (en) Managing data block compression in a storage system
US11150827B2 (en) Storage system and duplicate data management method
US20220236870A1 (en) Method and system for compression in block-based storage systems

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 15552820

Country of ref document: US

ENP Entry into the national phase

Ref document number: 2018503859

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16893397

Country of ref document: EP

Kind code of ref document: A1

122 Ep: pct application non-entry in european phase

Ref document number: 16893397

Country of ref document: EP

Kind code of ref document: A1