KR20220041338A - Method for offloading disk scan directly to gpu in write-optimized database system - Google Patents
Method for offloading disk scan directly to gpu in write-optimized database system Download PDFInfo
- Publication number
- KR20220041338A KR20220041338A KR1020200124401A KR20200124401A KR20220041338A KR 20220041338 A KR20220041338 A KR 20220041338A KR 1020200124401 A KR1020200124401 A KR 1020200124401A KR 20200124401 A KR20200124401 A KR 20200124401A KR 20220041338 A KR20220041338 A KR 20220041338A
- Authority
- KR
- South Korea
- Prior art keywords
- processing unit
- database
- data
- gpu
- memory
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 25
- 238000012545 processing Methods 0.000 claims abstract description 66
- 238000012937 correction Methods 0.000 claims description 2
- 230000003111 delayed effect Effects 0.000 claims 1
- 230000006870 function Effects 0.000 abstract description 17
- 230000008569 process Effects 0.000 description 14
- 238000012546 transfer Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 230000003321 amplification Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000003199 nucleic acid amplification method Methods 0.000 description 3
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005056 compaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003334 potential effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/248—Presentation of query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
본 발명이 속하는 기술 분야는 로그 구조 병합 트리 기반의 데이터베이스의 스캔 연산 방법에 관한 것이다.The technical field to which the present invention pertains relates to a database scan operation method based on a log structure merge tree.
이 부분에 기술된 내용은 단순히 본 실시예에 대한 배경 정보를 제공할 뿐 종래기술을 구성하는 것은 아니다.The content described in this section merely provides background information for the present embodiment and does not constitute the prior art.
키-값 기반의 데이터베이스는 센서 데이터, 소셜 네트워크 데이터 등과 같이 비정형 데이터를 다루는데 유용하다. 키-값 기반의 데이터베이스는 로그 구조 병합 트리(Log Structured Merge Tree)를 주로 사용한다.Key-value based databases are useful for handling unstructured data such as sensor data and social network data. A key-value based database mainly uses a log structured merge tree.
로그 구조 병합 트리(Log Structured Merge Tree, LSM-Tree)는 연속적인 쓰기 연산을 수행하는 워크로드를 위해 설계되었다. LSM-트리 구조는 하나의 인메모리 데이터 구조와 여러 개의 블록(ex. 디스크 등)에 저장을 위한 이어쓰기(Append) 방식의 데이터 구조로 이루어져 있다. Log Structured Merge Tree (LSM-Tree) is designed for workloads that perform continuous write operations. The LSM-tree structure consists of one in-memory data structure and an append-type data structure for storage in multiple blocks (eg, disk, etc.).
LSM-트리는 비휘발성 메모리 익스프레스(NVMe) SSD(Solid-State Drive)를 비롯한 하드웨어 플랫폼의 높은 대역폭을 유도하도록 설계되어 다양한 데이터베이스 관리 시스템(DBMS)의 스토리지 엔진에 적용된다. 쓰기 연산에 최적화된 구조체인 LSM-트리는 우수한 쓰기 및 공간 효율성으로 인하여 데이터베이스의 스토리지 엔진으로 널리 활용되고 있다.The LSM-Tree is designed to drive the high bandwidth of hardware platforms, including non-volatile memory express (NVMe) solid-state drives (SSDs), and is applied to the storage engines of various database management systems (DBMSs). LSM-tree, a structure optimized for write operations, is widely used as a storage engine for databases due to its excellent write and space efficiency.
LSM-트리는 키-값 데이터베이스에서 빈번히 발생하는 삽입 및 수정을 효율적으로 수행한다. 데이터를 우선 로그 형식으로 저장하고, 로그 상의 데이터 정렬, 수정 작업의 처리 등의 병합을 미루는 쓰기 친숙형 구조(Write Friendly Structure)이다. LSM-trees efficiently perform inserts and modifications that occur frequently in key-value databases. It is a write friendly structure in which data is first stored in a log format, and merging such as data sorting in the log and processing of correction operations is postponed.
LSM-트리 구조의 구조적 특성 때문에 데이터베이스가 분석 쿼리를 처리할 때마다 중앙 처리 장치(CPU)와 관련된 읽기 증폭이 발생한다. 이 증폭은 대규모 데이터베이스에서 상당한 영향을 준다. 분석 질의를 처리하는데 필요한 테이블 스캔 연산은 데이터 레코드가 LSM-트리의 각 레벨에 분산되어 있어 이를 병합하고 정렬하여 반복적으로 질의 엔진에 반환하는 작업과 해당 레코드 내부 열 값과 필터 조건이 만족하는지 비교하는 연산으로 인하여 CPU 리소스를 과도하게 사용하는 문제가 있다. 이는 NVMe(non-volatile memory express)와 같은 고성능 디바이스의 밴드폭을 충분히 사용하는 것을 방해하며 전체적 질의 처리 성능에 영향을 준다.Because of the structural nature of the LSM-tree structure, read amplification associated with the central processing unit (CPU) occurs whenever the database processes an analytic query. This amplification has a significant impact on large databases. The table scan operation required to process an analytic query consists of merging, sorting, and repeatedly returning data records to the query engine as data records are distributed at each level of the LSM-tree, and comparing the column values in the records and whether the filter conditions are satisfied. There is a problem of excessive use of CPU resources due to calculations. This prevents the full use of the bandwidth of high-performance devices such as non-volatile memory express (NVMe), and affects overall query processing performance.
본 발명의 실시예들은 GPU를 활용하여 LSM-트리의 파일을 읽고 필터 조건 비교 연산을 병렬 처리하며, 질의 처리와 디스크 스캔을 파이프라이닝하고, 직접 메모리 접근(DMA)을 활용하여 LSM-트리 내 파일을 GPU 메모리에 적재하고 GPU 스레드가 파일에 접근하여 필터 연산을 수행하고 결과를 반환하여, 스캔 성능을 향상시키는 데 발명의 주된 목적이 있다.Embodiments of the present invention utilize GPU to read LSM-tree files, parallelize filter condition comparison operations, pipeline query processing and disk scans, and utilize direct memory access (DMA) to access files in LSM-trees. The main purpose of the invention is to improve the scan performance by loading the file into the GPU memory, and the GPU thread accessing the file to perform the filter operation and return the result.
본 발명의 명시되지 않은 또 다른 목적들은 하기의 상세한 설명 및 그 효과로부터 용이하게 추론할 수 있는 범위 내에서 추가적으로 고려될 수 있다.Other objects not specified in the present invention may be additionally considered within the scope that can be easily inferred from the following detailed description and effects thereof.
본 실시예의 일 측면에 의하면, 질의 엔진으로부터 테이블 조건을 수신하는 단계, 데이터베이스 엔진으로부터 데이터 블록에 관한 정보를 수신하는 단계, 및 그래픽 처리 유닛의 커널에 의해 상기 테이블 조건에 따라 상기 데이터 블록을 처리하고 결과를 출력하는 단계를 포함하는 데이터베이스의 스캔 연산 방법을 제공한다.According to an aspect of this embodiment, receiving a table condition from a query engine, receiving information about a data block from a database engine, and processing the data block according to the table condition by a kernel of a graphics processing unit, It provides a database scan operation method including outputting a result.
상기 데이터베이스 엔진은 로그 구조 병합 트리(Log Structured Merge Tree, LSM-Tree)를 이용하는 키-값 데이터베이스에 해당하며, 상기 로그 구조 병합 트리는 데이터를 우선 로그 형식으로 저장하고, 로그 상의 데이터 정렬 및 수정 작업의 병합을 미루는 쓰기 친숙형 구조(Write Friendly Structure)일 수 있다.The database engine corresponds to a key-value database using a log structured merge tree (LSM-Tree), which first stores data in a log format, and It may be a Write Friendly Structure that defers merging.
상기 데이터 블록을 처리하고 결과를 출력하는 단계는, 상기 그래픽 처리 유닛의 커널을 이용하여 질의 처리와 테이블 스캔을 파이프라이닝할 수 있다.In the step of processing the data block and outputting a result, query processing and table scan may be pipelined using a kernel of the graphic processing unit.
상기 데이터 블록을 처리하고 결과를 출력하는 단계는, 직접 메모리 접근(Direct Memory Access)을 이용하여 상기 로그 구조 병합 트리의 파일을 상기 그래픽 처리 유닛의 메모리에 적재할 수 있다.In the step of processing the data block and outputting a result, the file of the log structure merge tree may be loaded into the memory of the graphic processing unit using direct memory access.
상기 데이터 블록을 처리하고 결과를 출력하는 단계에서, 상기 그래픽 처리 유닛의 커널은 상기 그래픽 처리 유닛의 스레드가 상기 데이터베이스 엔진의 메모리 영역에 접근하기 위한 메타 데이터를 상기 데이터베이스 엔진에 요청할 수 있다.In the step of processing the data block and outputting a result, the kernel of the graphic processing unit may request the database engine for metadata for the thread of the graphic processing unit to access the memory area of the database engine.
상기 데이터 블록을 처리하고 결과를 출력하는 단계에서, 상기 그래픽 처리 유닛의 스레드가 상기 그래픽 처리 유닛의 메모리에 적재된 파일에 접근하여 필터 연산을 수행하고 상기 질의 엔진으로 결과를 반환할 수 있다.In the step of processing the data block and outputting the result, the thread of the graphic processing unit may access a file loaded in the memory of the graphic processing unit, perform a filter operation, and return the result to the query engine.
본 실시예의 다른 측면에 의하면, 데이터베이스의 스캔 연산 장치에 있어서, 병렬 연산을 수행하는 그래픽 처리 유닛, 상기 그래픽 처리 유닛으로 테이블 조건을 전송하는 질의 엔진, 및 상기 그래픽 처리 유닛으로 데이터 블록에 관한 정보를 전송하는 데이터베이스 엔진을 포함하며, 상기 그래픽 처리 유닛의 커널에 의해 상기 테이블 조건에 따라 상기 데이터 블록을 처리하고 결과를 출력하는 것을 특징으로 하는 데이터베이스의 스캔 연산 장치를 제공한다.According to another aspect of this embodiment, in the scan operation device of the database, a graphics processing unit that performs parallel operation, a query engine that transmits a table condition to the graphics processing unit, and information about a data block to the graphics processing unit It provides a database scan arithmetic device comprising a database engine for transmitting, processing the data block according to the table condition by a kernel of the graphic processing unit and outputting a result.
상기 데이터베이스 엔진은 로그 구조 병합 트리(Log Structured Merge Tree, LSM-Tree)를 이용하는 키-값 데이터베이스에 해당하며, 상기 로그 구조 병합 트리는 데이터를 우선 로그 형식으로 저장하고, 로그 상의 데이터 정렬 및 수정 작업의 병합을 미루는 쓰기 친숙형 구조(Write Friendly Structure)일 수 있다.The database engine corresponds to a key-value database using a log structured merge tree (LSM-Tree), which first stores data in a log format, and It may be a Write Friendly Structure that defers merging.
상기 데이터베이스의 스캔 연산 장치는 상기 그래픽 처리 유닛의 커널을 이용하여 질의 처리와 테이블 스캔을 파이프라이닝할 수 있다.The database scan arithmetic unit may pipeline the query processing and the table scan by using the kernel of the graphic processing unit.
상기 데이터베이스의 스캔 연산 장치는 직접 메모리 접근(Direct Memory Access)을 이용하여 상기 로그 구조 병합 트리의 파일을 상기 그래픽 처리 유닛의 메모리에 적재할 수 있다.The database scan arithmetic unit may load the file of the log structure merge tree into the memory of the graphic processing unit using direct memory access.
상기 그래픽 처리 유닛의 커널은 상기 그래픽 처리 유닛의 스레드가 상기 데이터베이스 엔진의 메모리 영역에 접근하기 위한 메타 데이터를 상기 데이터베이스 엔진에 요청할 수 있다.The kernel of the graphic processing unit may request the database engine for metadata for the thread of the graphic processing unit to access the memory area of the database engine.
상기 그래픽 처리 유닛의 스레드가 상기 그래픽 처리 유닛의 메모리에 적재된 파일에 접근하여 필터 연산을 수행하고 상기 질의 엔진으로 결과를 반환할 수 있다.A thread of the graphic processing unit may access a file loaded in the memory of the graphic processing unit, perform a filter operation, and return a result to the query engine.
이상에서 설명한 바와 같이 본 발명의 실시예들에 의하면, GPU를 활용하여 LSM-트리의 파일을 읽고 필터 조건 비교 연산을 병렬 처리하며, 질의 처리와 디스크 스캔을 파이프라이닝하고, 직접 메모리 접근(DMA)을 활용하여 LSM-트리 내 파일을 GPU 메모리에 적재하고 GPU 스레드가 파일에 접근하여 필터 연산을 수행하고 결과를 반환하여, 스캔 성능을 향상시킬 수 있는 효과가 있다.As described above, according to the embodiments of the present invention, read the file of the LSM-tree by using the GPU, parallel processing the filter condition comparison operation, pipelining the query processing and the disk scan, and direct memory access (DMA) is used to load the files in the LSM-tree into the GPU memory, and the GPU thread accesses the files, performs filter operations, and returns the results, which has the effect of improving scan performance.
여기에서 명시적으로 언급되지 않은 효과라 하더라도, 본 발명의 기술적 특징에 의해 기대되는 이하의 명세서에서 기재된 효과 및 그 잠정적인 효과는 본 발명의 명세서에 기재된 것과 같이 취급된다.Even if the effects are not explicitly mentioned herein, the effects described in the following specification expected by the technical features of the present invention and their potential effects are treated as if they were described in the specification of the present invention.
도 1은 LST-트리에서 검색 프로세스를 예시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 데이터베이스의 스캔 연산 장치를 예시한 블록도이다.
도 3은 본 발명의 일 실시예에 따른 데이터베이스의 스캔 연산 장치의 질의 검색 동작을 예시한 도면이다.
도 4는 본 발명의 일 실시예에 따른 데이터베이스의 스캔 연산 장치의 GPU 커널 동작을 예시한 도면이다.
도 5는 본 발명의 일 실시예에 따른 데이터베이스의 스캔 연산 장치의 파이프라이닝 동작을 예시한 도면이다.
도 6은 본 발명의 일 실시예에 따른 데이터베이스의 스캔 연산 장치의 DMA 동작을 예시한 도면이다.
도 7은 본 발명의 다른 실시예에 따른 데이터베이스의 스캔 연산 방법을 예시한 흐름도이다.1 is a diagram illustrating a search process in an LST-tree.
2 is a block diagram illustrating an apparatus for calculating a database scan according to an embodiment of the present invention.
3 is a diagram illustrating a query search operation of a database scan operation device according to an embodiment of the present invention.
4 is a diagram illustrating an operation of a GPU kernel of a database scan arithmetic unit according to an embodiment of the present invention.
5 is a diagram illustrating a pipelining operation of a database scan arithmetic device according to an embodiment of the present invention.
6 is a diagram illustrating a DMA operation of a database scan operation device according to an embodiment of the present invention.
7 is a flowchart illustrating a database scan operation method according to another embodiment of the present invention.
이하, 본 발명을 설명함에 있어서 관련된 공지기능에 대하여 이 분야의 기술자에게 자명한 사항으로서 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하고, 본 발명의 일부 실시예들을 예시적인 도면을 통해 상세하게 설명한다.Hereinafter, in the description of the present invention, if it is determined that the subject matter of the present invention may be unnecessarily obscure as it is obvious to those skilled in the art with respect to related known functions, the detailed description thereof will be omitted, and some embodiments of the present invention will be described. It will be described in detail with reference to exemplary drawings.
도 1은 LST-트리에서 검색 프로세스를 예시한 도면이다.1 is a diagram illustrating a search process in an LST-tree.
LSM-트리는 삽입 연산이 수행되면 먼저 메모리 영역에 데이터를 저장한다. 메모리의 일정 용량까지 데이터가 쌓이면 메모리의 내용을 디스크로 플러시(Flush)를 수행한다. 플러시되는 데이터는 디스크에 저장되어 있던 기존 데이터와 병합 정렬을 하여 기록된다. 디스크 영역의 각 레벨이 임계치를 넘으면 병합 정렬을 실행하여 하위 레벨을 생성한다.In the LSM-tree, when an insert operation is performed, data is first stored in the memory area. When data accumulates up to a certain amount of memory, the contents of the memory are flushed to the disk. The data to be flushed is recorded by merge-sorting with the existing data stored on the disk. When each level of disk area crosses a threshold, a merge sort is executed to create a lower level.
LSM-트리 기반의 데이터베이스는 키-값 형태로 데이터를 저장한다. LSM-트리 기반의 데이터베이스에 데이터의 삽입 연산 요청이 들어오면 데이터를 메모리에 기록하기 전에 우선적으로 로그 파일에 로그를 기록한다. 로그를 기록한 다음 메모리 영역에 있는 멤테이블(Memtable)에 데이터를 저장한다. 쓰기 요청이 계속되어 멤테이블(Memtable)에 데이터가 일정 용량까지 기록되면, 멤테이블(Memtable)은 변경이 불가능한 불변 멤테이블(Immutable Memtable, Read-Only Memtable)로 변경된다. 불변 멤테이블이 가득 차게 되면 블록(디스크) 영역으로 플러시가 발생한다. An LSM-tree based database stores data in a key-value format. When a data insertion operation request comes in to the LSM-tree-based database, the log is first written to the log file before data is written to the memory. After writing the log, the data is stored in the memtable in the memory area. If the write request continues and data is recorded in the memtable to a certain capacity, the memtable is changed to an immutable memtable (read-only memtable) that cannot be changed. When the immutable memtable becomes full, a flush occurs to the block (disk) area.
플러시 동작을 수행하면, 멤테이블의 파일은 키 순서에 따라 정렬되어 SST(Storted String Table) 파일로 변경된다. SST 파일은 복수의 블록을 갖는다. 블록의 예시로는 데이터를 저장하는 데이터 블록(Data Block), 데이터 블록의 위치를 인덱싱하는 인덱스 블록(Index Block), 인덱스 블록의 위치를 처리하는 푸터 블록(Footer Block) 등이 있다.When the flush operation is performed, the memtable files are sorted according to the key order and changed to a SST (Stored String Table) file. An SST file has a plurality of blocks. Examples of the block include a data block for storing data, an index block for indexing the position of the data block, and a footer block for processing the position of the index block.
SST 파일은 디스크 영역에서 컴팩션(Compaction)을 통해 업데이트된다. 한 번 생성된 SST 파일은 사라지지 않을 수 있다. 하위 레벨에 상주하는 SST 파일일수록 상위 레벨의 SST 파일보다 오래된 데이터가 위치할 수 있다.The SST file is updated through compaction in the disk area. Once created, the SST file may not disappear. As the SST file residing in the lower level, data older than the SST file in the upper level may be located.
LSM-트리 기반 데이터베이스는 아키텍처에 의한 읽기 증폭과 대역폭이 높은 저장 장치의 제한적인 사용으로 인해 분석 질의를 처리할 때 취약성에 직면한다. 분석 질의를 사용하면 동일하거나 다른 데이터 소스의 여러 질의의 데이터를 하나의 결과 집합으로 결합할 수 있다.LSM-tree-based databases face vulnerabilities when processing analytical queries due to read amplification by the architecture and limited use of high-bandwidth storage devices. Analytical queries allow you to combine data from multiple queries from the same or different data sources into a single result set.
본 실시예에 따른 데이터베이스의 스캔 연산 장치는 트랜잭션 및 분석 워크로드를 유연하게 처리하기 위해 NVMe SSD와 GPU 장치를 최대한 활용하여 검색 성능을 향상시킨다. NVMe SSD는 다중 GB/s I/O 속도를 제공하지만 GPU 프로세싱의 이점을 제한하는 데이터 전송 오버헤드를 해결해야 한다. 본 실시예에 따른 데이터베이스의 스캔 연산 장치는 필터링 조건절(Predicate) 푸시다운을 통해 스캔 작업을 GPU로 오프로드하고 DMA(Direct Memory Access)가 있는 기기 간 데이터 전송으로 인한 병목 현상을 해결한다. The database scan arithmetic unit according to the present embodiment improves search performance by maximizing the NVMe SSD and GPU unit in order to flexibly process transaction and analysis workloads. NVMe SSDs offer multiple GB/s I/O speeds, but they must address data transfer overhead that limits the benefits of GPU processing. The database scan arithmetic unit according to the present embodiment offloads a scan operation to the GPU through a filtering predicate pushdown, and solves a bottleneck caused by data transfer between devices with direct memory access (DMA).
도 2는 본 발명의 일 실시예에 따른 데이터베이스의 스캔 연산 장치를 예시한 블록도이다.2 is a block diagram illustrating an apparatus for calculating a database scan according to an embodiment of the present invention.
데이터베이스의 스캔 연산 장치(10)는 질의 엔진(100), 데이터베이스 엔진(200), 및 그래픽 처리 유닛(GPU, 300)을 포함한다. 데이터베이스의 스캔 연산 장치(10)는 도 2에서 예시적으로 도시한 다양한 구성요소들 중에서 일부 구성요소를 생략하거나 다른 구성요소를 추가로 포함할 수 있다. The database
GPU 매니저 모듈은 GPU 자원을 관리하고 데이터베이스 파일의 데이터를 GPU 메모리로 전송하여 커널 기능을 실행하도록 구현된다. The GPU manager module is implemented to manage GPU resources and execute kernel functions by transferring data from database files to GPU memory.
데이터베이스의 스캔 연산 장치(10)는 필터링 조건절 푸시다운(Filtering Predicate Pushdown, FPP) 접근 방식을 구현하여 LSM-트리 기반 스토리지 엔진의 테이블 스캔 성능을 향상시킨다. 이러한 접근 방식은 필요한 값을 레코드의 물리적 형식에서 해독하고 데이터를 조건절의 피벗 값과 비교하는 계산 오버헤드를 오프로드한다. GPU는 풍부한 가용성의 컴퓨팅 장치에 오버헤드를 분배한다.The database
도 3은 본 발명의 일 실시예에 따른 데이터베이스의 스캔 연산 장치의 질의 검색 동작을 예시한 도면이다.3 is a diagram illustrating a query search operation of a database scan operation device according to an embodiment of the present invention.
도 3을 참조하면, 질의 엔진의 질의 파서 및 플래너 모듈은 필터링 조건절에 대한 정보를 얻고 FFP 접근방식을 통해 검색할 대상 테이블을 결정한다. Referring to FIG. 3 , the query parser and planner module of the query engine obtains information on the filtering conditional clause and determines a target table to be searched through the FFP approach.
데이터베이스 엔진은 테이블의 기본 인덱스에 대한 고유 ID와 파일의 키 범위를 비교하여 LSM-트리를 검색하고 대상 테이블의 레코드가 포함된 SST 파일을 수집한다. The database engine searches the LSM-tree by comparing the file's key range with the unique ID for the table's primary index, and collects the SST file containing the records of the target table.
파일의 데이터 블록은 디스크에서 시스템 메모리로 읽히고, 데이터 블록의 레코드와 레코드 인덱스는 GPU 메모리에 복제될 배열 형태로 구성된다. 레코드 인덱스는 블록에서 레코드의 오프셋을 나타낸다. Data blocks of files are read from disk into system memory, and records and record indexes of data blocks are configured in the form of an array to be copied to GPU memory. The record index indicates the offset of the record in the block.
GPU 스레드는 레코드 인덱스를 참조하여 레코드의 주소에 접근한다. 인덱스는 레코드와 관련하여 드문드문 구성되므로, 단일 스레드는 여러 레코드를 처리할 수 있다. 데이터 파일을 일괄적으로 읽고 GPU 자원을 활용해 테이블에 레코드가 들어 있는지 검증하고 조건에 따라 레코드를 평가하는 작업을 처리한다. 필터링된 결과는 정렬된 순서대로 질의 엔진으로 반환된다.The GPU thread accesses the address of the record by referring to the record index. Since the index is sparsely constructed with respect to records, a single thread can process multiple records. It reads a data file in batches, utilizes GPU resources, verifies that a table contains records, and evaluates records according to conditions. The filtered results are returned to the query engine in sorted order.
도 4는 본 발명의 일 실시예에 따른 데이터베이스의 스캔 연산 장치의 GPU 커널 동작을 예시한 도면이다.4 is a diagram illustrating an operation of a GPU kernel of a database scan arithmetic unit according to an embodiment of the present invention.
도 4를 참조하면, GPU 매니저 모듈은 레코드와 레코드 인덱스 배열을 GPU 메모리로 전송한다. Referring to FIG. 4 , the GPU manager module transmits a record and a record index array to the GPU memory.
GPU 매니저 모듈은 CUDA 스트림을 활용하여 데이터 전송과 커널 실행을 오버랩하여 대량의 데이터를 처리하는 데 상당한 오버헤드를 완화한다. GPU 매니저 모듈은 레코드 데이터의 내용과 레코드 인덱스를 지정된 스트림에 분배한다. 스트림의 데이터와 인덱스도 GPU 블록 크기 단위로 나눈다. GPU 블록 크기는 동일한 GPU 리소스에서 작동하는 실행 단위를 나타낸다. The GPU manager module utilizes CUDA streams to overlap data transfer and kernel execution, alleviating significant overhead for processing large amounts of data. The GPU manager module distributes the contents of the record data and the record index to the specified stream. The data and index of the stream are also divided into units of GPU block size. GPU block size refers to execution units operating on the same GPU resource.
스레드는 레코드 인덱스가 지정한 레코드 배열의 영역을 검색하는 한편 레코드를 디코딩하고 필터 조건을 만족하는지 여부를 점검한다. 조건이 충족되면 레코드의 키와 포인터 및 값의 크기로 구성된 어레이가 CUDA 스트림을 활용하여 호스트 메모리에 비동기적으로 복제된다. GPU 매니저 모듈은 데이터 전송을 위해 저장된 호스트 메모리의 레코드 어레이와 중복된 어레이를 참조하여 논리적 레코드를 형성한다. 질의의 나머지 부분을 실행하도록 레코드의 논리적 포맷의 배치를 질의 엔진에 전파한다.The thread searches the region of the record array specified by the record index while decoding the record and checking whether the filter condition is satisfied. When the condition is met, an array of the size of the record's keys and pointers and values is asynchronously copied to host memory utilizing a CUDA stream. The GPU manager module forms a logical record by referring to the record array in the host memory and the duplicated array for data transfer. Propagates a batch of logical formats of records to the query engine to execute the rest of the query.
도 5는 본 발명의 일 실시예에 따른 데이터베이스의 스캔 연산 장치의 파이프라이닝 동작을 예시한 도면이다.5 is a diagram illustrating a pipelining operation of a database scan arithmetic device according to an embodiment of the present invention.
GPU를 이용하는 애플리케이션에서 호스트 메모리와 GPU 장치 메모리 사이의 데이터 전송에 대한 오버헤드는 전체 시스템 성능에 영향을 준다. 대량의 데이터 전송은 애플리케이션의 다른 작업이 지연될 수 있도록 GPU 복사 엔진의 부담을 악화시킨다.In applications that use GPUs, the overhead of transferring data between host memory and GPU device memory affects overall system performance. Massive data transfers exacerbate the burden on the GPU copy engine, which can delay other tasks in the application.
데이터베이스의 스캔 연산 장치는 다른 질의 실행과 테이블 스캔을 병렬로 수행하는데, 이러한 프로세스를 스캔 파이프라이닝이라고 한다. The database scan operation unit performs other query execution and table scan in parallel, a process called scan pipelining.
데이터베이스의 스캔 연산 장치는 다음 레코드 배치에 대한 테이블 스캔을 수행하는 동안 연결(join) 또는 집계(aggregate) 작업을 실행할 수 있다. 스캔 파이프라이닝은 데이터 전송 지연 시간을 숨기고 전체 처리량을 개선할 수 있다.The database's scan computing unit may execute join or aggregate operations while performing a table scan for the next batch of records. Scan pipelining can hide data transfer latency and improve overall throughput.
도 6은 본 발명의 일 실시예에 따른 데이터베이스의 스캔 연산 장치의 DMA 동작을 예시한 도면이다.6 is a diagram illustrating a DMA operation of a database scan operation device according to an embodiment of the present invention.
파일의 내용은 GPU에서 처리하려면 두 번의 별도 데이터 복사 작업이 필요하다. 먼저 디스크에서 시스템 메모리로 내용을 읽는다. 다음 시스템 메모리의 데이터가 GPU 장치 메모리로 전송된다. 이러한 두 번의 데이터 전송은 GPU에 의한 병렬 처리의 이득을 상쇄할 정도로 심각한 지연을 제공한다. 전송 비용은 대부분의 데이터를 디스크에 저장하기 때문에 데이터베이스의 전체 처리량을 결정하는 데 지배적인 요인이다. The contents of the file require two separate data copy operations to be processed by the GPU. First, the contents are read from disk into system memory. Data from the next system memory is transferred to the GPU device memory. These two data transfers provide significant delays that offset the gains of parallel processing by the GPU. Transfer cost is a dominant factor in determining the overall throughput of a database, since most data is stored on disk.
DMA 전송은 PCIe 디바이스에 지정할 메모리 공간을 공유하여 복사 경로를 단축한다. 이를 통해 NVMe SSD 디바이스의 파일을 호스트 CPU의 개입 없이 PCIe 컨트롤러에 의해 GPU 메모리에 비동기적으로 복사할 수 있다.DMA transfers shorten the copy path by sharing memory space to be assigned to PCIe devices. This allows files from the NVMe SSD device to be asynchronously copied to GPU memory by the PCIe controller without host CPU intervention.
파싱(구문 분석)을 시작하고 연속적인 레이어에 조건절과 테이블 정보를 채운다. 다음 프로세스에 필요한 메모리 공간을 확보한다. 메타데이터 블록의 메모리의 작은 부분과 DMA 전송을 위한 고정된 공간만을 필요로 한다. It starts parsing (parsing) and fills consecutive layers with conditional clauses and table information. Frees up memory space for the next process. It requires only a small portion of the memory of the metadata block and a fixed space for DMA transfers.
읽기 및 쓰기 작업을 포함하는 혼합 워크로드를 지원하기 위해 이러한 메타데이터 블록의 일관성을 유지한다. 새로운 SST 파일은 기존 파일을 수정하지 않고 외부 업데이트를 따름으로써 생성된다. 분리 레벨을 읽기 권한으로 제한하고 SST 파일의 버전을 추적한다. 메타데이터가 참조하는 SST 파일은 업데이트되지 않으며, 파일이 유효하지 않은 것으로 판단될 경우 검색 질의 실행 후 가비지 수집된다.Keep these metadata blocks consistent to support mixed workloads that include read and write operations. New SST files are created by following external updates without modifying existing files. Restrict the isolation level to read permission and keep track of the version of the SST file. The SST file referenced by the metadata is not updated, and if the file is judged to be invalid, it is garbage collected after the search query is executed.
DMA 전송은 고정 메모리를 통해 파일을 비동기식으로 GPU 메모리에 매핑할 수 있게 한다. GPU 장치의 연산 코어는 장치 메모리에 매핑된 파일에 접근할 수 있다. 연산 코어가 파일을 논리적으로 해석하기 위해서 데이터 블록의 크기를 포함한 파일의 물리적 형식에 관한 메타데이터가 필요하다. 파일에서 관련 메타데이터를 읽어 GPU 메모리로 전송한다. 이러한 프로세스는 I/O 비용을 발생시키지만, 파일당 작은 블록만 필요하므로 I/O 비용은 무시할 수 있다.DMA transfers allow files to be mapped to GPU memory asynchronously via fixed memory. The computational core of a GPU device can access files mapped in device memory. In order for the computational core to logically interpret the file, it needs metadata about the file's physical format, including the size of data blocks. Read the relevant metadata from the file and transfer it to GPU memory. This process incurs an I/O cost, but the I/O cost is negligible since it requires only small blocks per file.
사전 작업이 완료된 후 파일의 데이터 블록에 있는 레코드의 정확한 주소에 액세스하는 커널 함수를 실행한다. 파일의 데이터 블록은 GPU 블록이라고 하는 GPU 프로 프로세싱의 블록 단위에 대해 함께 그룹화된다. GPU 블록은 데이터 블록 집합을 포함하고 GPU 블록의 스레드는 데이터 블록에 분산되어 커널 기능을 수행한다. 데이터 블록에 배포된 각 스레드는 처리를 위해 여러 데이터 레코드를 포함하는 자체 장치 메모리를 할당한다. 이러한 메모리는 데이터 블록에 저장된 레코드 인덱스 항목을 기반으로 결정된다.After the pre-operation is complete, it executes a kernel function that accesses the exact address of the record in the file's data block. Data blocks in a file are grouped together into blocks of GPU pro processing called GPU blocks. A GPU block contains a set of data blocks, and the threads of the GPU block are distributed among the data blocks to perform kernel functions. Each thread distributed in a data block allocates its own device memory containing multiple data records for processing. This memory is determined based on the record index entries stored in the data blocks.
표 1을 참조하여 DMAFilterKernel이라 불리는 DMA 전송을 이용하기 위해 사용하는 커널 함수의 세부사항을 설명한다.Referring to Table 1, the details of the kernel function used to use the DMA transfer called DMAFilterKernel are described.
이러한 함수는 DMA 전송에 의해 매핑된 파일의 주소 목록을 포함한 입력 매개변수를 필요로 한다. 커널 함수는 스레드가 접근할 메모리 영역을 지정하기 위해 여러 메타데이터를 필요로 한다. 메타데이터는 메타데이터에 포함된 데이터 블록 수를 나타내는 GPU 블록의 기본 단위가 포함된다. 파일에 할당된 데이터 블록 및 GPU 블록 수가 메타데이터에 포함되어 있다. 스키마 변수에는 조건절 정보와 열 값의 길이가 포함된다. 커널 함수는 스키마를 활용하여 데이터베이스 엔트리의 물리적 형식에서 열 값을 디코딩한다. 매개변수를 갖는 커널 함수는 결과값으로 필터링된 레코드의 키 값 배열을 쿼리 엔진으로 전송한다. These functions require input parameters including a list of addresses of the files mapped by the DMA transfer. Kernel functions require several pieces of metadata to specify which areas of memory a thread will access. Metadata includes a basic unit of GPU block indicating the number of data blocks included in the metadata. The number of data blocks and GPU blocks allocated to the file is included in the metadata. Schema variables include conditional clause information and the length of column values. The kernel function utilizes the schema to decode column values from the physical form of the database entry. A kernel function with parameters sends an array of key values of the records filtered by the result to the query engine.
GPU 스레드는 파일의 GPU 주소, 파일의 데이터 블록 오프셋 및 데이터 블록의 레코드 오프셋을 참조하여 액세스할 메모리 영역을 식별한다. DMAFilterKernel은 모든 파일 주소 목록에서 스레드가 액세스해야 하는 주소를 선택하는 것으로 시작한다. The GPU thread identifies the memory region to access by referencing the file's GPU address, the file's data block offset, and the data block's record offset. DMAFilterKernel starts by choosing from a list of all file addresses the address the thread should access.
파일의 GPU 블록에 ID를 태그하면 함수는 GPU 블록 ID를 기준으로 파일 주소를 결정할 수 있다. 다음으로 데이터 및 GPU 블록 관련 메타데이터를 기반으로 파일 내 데이터 블록의 오프셋을 계산한다. 데이터 블록의 테일은 스레드의 작업을 할당하는 기준이 되는 레코드 인덱스 수를 저장한다. 함수는 블록 크기 정보와 데이터 블록의 오프셋을 보유하므로 레코드 인덱스 수를 저장하는 주소에 접근하여 해당 값을 얻을 수 있다. 인덱스 수는 num_restarts로 표시된다. 스레드의 ID, num_restarts, GPU 블록의 기본 단위를 기반으로 함수는 각 스레드에 해당하는 메모리 영역을 할당한다. 데이터 블록의 레코드 인덱스는 스레드에 분산된다. 스레드의 영역은 데이터 블록에서 레코드의 시작 오프셋과 고려할 레코드 수를 나타내는 인덱스에 의해 결정된다. 마지막으로 장치 함수 DecodeNFilterOnSchema는 데이터 블록 주소, 시작 오프셋, 끝 오프셋 및 스키마를 포함하여 실행된다.By tagging a file's GPU block ID, the function can determine the file address based on the GPU block ID. Next, we calculate the offset of the data block within the file based on the data and the GPU block-related metadata. The tail of the data block stores the number of record indexes, which is the basis for allocating the work of the thread. The function holds the block size information and the offset of the data block, so you can get the value by accessing the address that stores the number of record indexes. The number of indexes is indicated by num_restarts. Based on the thread ID, num_restarts, and the basic unit of GPU block, the function allocates a memory area corresponding to each thread. The record index of a data block is distributed across threads. The area of a thread is determined by the start offset of a record in the data block and an index indicating the number of records to consider. Finally, the device function DecodeNFilterOnSchema is executed including the data block address, start offset, end offset and schema.
표 2를 참조하여 DecodeNFilterOnSchema의 세부사항을 설명한다.Refer to Table 2 to describe the details of DecodeNFilterOnSchema.
DecodeNFilterOnSchema는 하나의 스레드에 의해 실행된다. DMAFilterKernel은 각 스레드에서 전근할 메모리 영역을 지정한다. 데이터 블록의 데이터 블록 주소와 시작 오프셋, 처리할 재귀 횟수로 표시된다. 종료 오프셋은 처리할 레코드 수에 따라 계산할 수 있다. 함수는 각 스레드가 접근할 메모리 영역의 시작점과 끝점을 지정하는데, 이를 서브블록 및 한계치라고 한다. 하위 블록 및 한계치는 데이터 블록에 저장된 레코드 인덱스를 참고하여 계산할 수 있다. DecodeNFilterOnSchema is executed by one thread. DMAFilterKernel specifies the memory area to be transferred in each thread. It is expressed as the data block address of the data block, the starting offset, and the number of recursions to process. The end offset can be calculated according to the number of records to be processed. The function specifies the starting and ending points of the memory area to be accessed by each thread, called subblocks and limits. Sub-blocks and thresholds can be calculated by referring to the record index stored in the data block.
스레드는 메모리를 서브블록에서 한계치로 이동시킨다. 함수는 시작점에서 순차적으로 레코드 입력을 디코딩한다. 각 레코드 엔트리는 해당 키와 값에 대응하는 데이터와 크기의 순서로 구성된다. The thread moves the memory from the subblock to the limit. The function decodes the record input sequentially from the starting point. Each record entry consists of a sequence of data and size corresponding to the corresponding key and value.
데이터베이스 엔진은 예비 부분 저장을 방지하는 접두 키 인코딩으로 키를 저장하기 때문에 스레드는 검색하는 동안 추적을 통해 새로운 부분과 공유된 부분을 결합해 키를 구성한다. 스레드는 기본 키 인덱스의 고유 ID를 나타내는 생성된 키의 처음 소정의 바이트를 확인하여 디코딩할 레코드가 대상 테이블 내에 포함되는지 여부를 확인한다. 만약 레코드가 대상 테이블 내에 포함되도록 결정된다면, 필요한 열의 값은 데이터베이스 엔진의 값 포인터로부터 디코딩된다. 값의 길이가 포함된 스키마 정보를 참조하여 데이터베이스 엔진의 값 포인터를 사용한다. 열의 값을 디코딩한 후 스키마 정보에 존재하는 피벗 및 조건 연산자를 갖는 값을 결합하여 유효성 검사 함수를 실행한다. 레코드의 값이 조건에 유효한 것으로 결정되면 레코드의 키와 값 주소와 크기는 결과 배열에 일일이 삽입된다. 결과 배열을 참고하여 전체 레코드의 배열이 구성되며, 이후 질의 엔진으로 전달된다. 스레드는 지정된 메모리 영역의 끝에 도달할 때까지 동일한 프로세스를 계속 실행한다.Because the database engine stores the key with a prefix key encoding that prevents storing the spare part, the thread composes the key by combining the new part with the shared part through tracking while retrieving it. The thread checks whether the record to be decoded is included in the target table by checking the first predetermined byte of the generated key, which represents the unique ID of the primary key index. If a record is determined to be included in the target table, the value of the required column is decoded from the value pointer of the database engine. Use the value pointer of the database engine by referring to schema information including the length of the value. After decoding the values in the column, the validation function is executed by combining the values with the pivot and condition operators present in the schema information. When the record value is determined to be valid for the condition, the record key and value address and size are inserted one by one into the result array. An array of all records is constructed by referring to the result array, and then passed to the query engine. The thread continues executing the same process until the end of the specified memory area is reached.
도 7은 본 발명의 다른 실시예에 따른 데이터베이스의 스캔 연산 방법을 예시한 흐름도이다. 데이터베이스의 스캔 연산 방법은 데이터베이스의 스캔 연산 장치에 의해 수행될 수 있다.7 is a flowchart illustrating a database scan operation method according to another embodiment of the present invention. The database scan operation method may be performed by a database scan operation device.
단계 S21에서 질의 엔진으로부터 테이블 조건을 수신한다.In step S21, a table condition is received from the query engine.
단계 S22에서 데이터베이스 엔진으로부터 데이터 블록에 관한 정보를 수신한다.In step S22, information about the data block is received from the database engine.
단계 S23에서 그래픽 처리 유닛의 커널에 의해 테이블 조건에 따라 데이터 블록을 처리하고 결과를 출력한다.In step S23, the data block is processed according to the table condition by the kernel of the graphics processing unit and the result is output.
데이터베이스 엔진은 로그 구조 병합 트리(Log Structured Merge Tree, LSM-Tree)를 이용하는 키-값 데이터베이스에 해당하며, 로그 구조 병합 트리는 데이터를 우선 로그 형식으로 저장하고, 로그 상의 데이터 정렬 및 수정 작업의 병합을 미루는 쓰기 친숙형 구조(Write Friendly Structure)일 수 있다.The database engine corresponds to a key-value database using a Log Structured Merge Tree (LSM-Tree), which stores data in log format first, and performs merging of data sorting and modification operations in the log. Procrastination may be a Write Friendly Structure.
데이터 블록을 처리하고 결과를 출력하는 단계(S23)는 그래픽 처리 유닛의 커널을 이용하여 질의 처리와 테이블 스캔을 파이프라이닝할 수 있다.In the step of processing the data block and outputting the result ( S23 ), query processing and table scan may be pipelined using the kernel of the graphic processing unit.
데이터 블록을 처리하고 결과를 출력하는 단계(S23)는 직접 메모리 접근(Direct Memory Access)을 이용하여 로그 구조 병합 트리의 파일을 그래픽 처리 유닛의 메모리에 적재할 수 있다.In the step of processing the data block and outputting the result ( S23 ), the file of the log structure merge tree may be loaded into the memory of the graphic processing unit using direct memory access.
데이터 블록을 처리하고 결과를 출력하는 단계(S23)에서 그래픽 처리 유닛의 커널은 상기 그래픽 처리 유닛의 스레드가 상기 데이터베이스 엔진의 메모리 영역에 접근하기 위한 메타 데이터를 상기 데이터베이스 엔진에 요청할 수 있다.In step S23 of processing the data block and outputting the result, the kernel of the graphic processing unit may request the database engine for meta data for the thread of the graphic processing unit to access the memory area of the database engine.
상기 데이터 블록을 처리하고 결과를 출력하는 단계에서, 상기 그래픽 처리 유닛의 스레드가 상기 그래픽 처리 유닛의 메모리에 적재된 파일에 접근하여 필터 연산을 수행하고 상기 질의 엔진으로 결과를 반환할 수 있다.In the step of processing the data block and outputting the result, the thread of the graphic processing unit may access a file loaded in the memory of the graphic processing unit, perform a filter operation, and return the result to the query engine.
본 발명은 기존 방식과 대비하여 가격 대비 성능비, 에너지 효율성, 분석 질의 처리 실험 결과, 고성능 디바이스의 밴드폭의 활용도 면에서 우수한 결과를 보인다.The present invention shows excellent results in terms of price-performance ratio, energy efficiency, analysis query processing experimental results, and bandwidth utilization of high-performance devices compared to the conventional method.
데이터베이스에 포함된 구성요소들이 도 2에서는 분리되어 도시되어 있으나, 복수의 구성요소들은 상호 결합되어 적어도 하나의 모듈로 구현될 수 있다. 구성요소들은 장치 내부의 소프트웨어적인 모듈 또는 하드웨어적인 모듈을 연결하는 통신 경로에 연결되어 상호 간에 유기적으로 동작한다. 이러한 구성요소들은 하나 이상의 통신 버스 또는 신호선을 이용하여 통신한다.Although the components included in the database are illustrated separately in FIG. 2 , a plurality of components may be combined with each other and implemented as at least one module. The components are connected to a communication path connecting a software module or a hardware module inside the device to operate organically with each other. These components communicate using one or more communication buses or signal lines.
데이터베이스는 하드웨어, 펌웨어, 소프트웨어 또는 이들의 조합에 의해 로직회로 내에서 구현될 수 있고, 범용 또는 특정 목적 컴퓨터를 이용하여 구현될 수도 있다. 장치는 고정배선형(Hardwired) 기기, 필드 프로그램 가능한 게이트 어레이(Field Programmable Gate Array, FPGA), 주문형 반도체(Application Specific Integrated Circuit, ASIC) 등을 이용하여 구현될 수 있다. 또한, 장치는 하나 이상의 프로세서 및 컨트롤러를 포함한 시스템온칩(System on Chip, SoC)으로 구현될 수 있다.The database may be implemented in a logic circuit by hardware, firmware, software, or a combination thereof, or may be implemented using a general-purpose or special-purpose computer. The device may be implemented using a hardwired device, a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), or the like. In addition, the device may be implemented as a system on chip (SoC) including one or more processors and controllers.
데이터베이스는 하드웨어적 요소가 마련된 컴퓨팅 디바이스에 소프트웨어, 하드웨어, 또는 이들의 조합하는 형태로 탑재될 수 있다. 컴퓨팅 디바이스는 각종 기기 또는 유무선 통신망과 통신을 수행하기 위한 통신 모뎀 등의 통신장치, 프로그램을 실행하기 위한 데이터를 저장하는 메모리, 프로그램을 실행하여 연산 및 명령하기 위한 마이크로프로세서 등을 전부 또는 일부 포함한 다양한 장치를 의미할 수 있다.The database may be mounted in the form of software, hardware, or a combination thereof on a computing device provided with hardware elements. A computing device includes all or part of a communication device such as a communication modem for performing communication with various devices or a wired/wireless communication network, a memory for storing data for executing a program, and a microprocessor for executing an operation and command by executing the program. It can mean a device.
도 7에서는 각각의 과정을 순차적으로 실행하는 것으로 기재하고 있으나 이는 예시적으로 설명한 것에 불과하고, 이 분야의 기술자라면 본 발명의 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 도 7에 기재된 순서를 변경하여 실행하거나 또는 하나 이상의 과정을 병렬적으로 실행하거나 다른 과정을 추가하는 것으로 다양하게 수정 및 변형하여 적용 가능할 것이다.Although it is described that each process is sequentially executed in FIG. 7, this is only illustratively described, and those skilled in the art change the order described in FIG. 7 within the range not departing from the essential characteristics of the embodiment of the present invention Alternatively, various modifications and variations may be applied by executing one or more processes in parallel or adding other processes.
본 실시예들에 따른 동작은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능한 매체에 기록될 수 있다. 컴퓨터 판독 가능한 매체는 실행을 위해 프로세서에 명령어를 제공하는 데 참여한 임의의 매체를 나타낸다. 컴퓨터 판독 가능한 매체는 프로그램 명령, 데이터 파일, 데이터 구조 또는 이들의 조합을 포함할 수 있다. 예를 들면, 자기 매체, 광기록 매체, 메모리 등이 있을 수 있다. 컴퓨터 프로그램은 네트워크로 연결된 컴퓨터 시스템 상에 분산되어 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수도 있다. 본 실시예를 구현하기 위한 기능적인(Functional) 프로그램, 코드, 및 코드 세그먼트들은 본 실시예가 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있을 것이다.The operations according to the present embodiments may be implemented in the form of program instructions that can be performed through various computer means and recorded in a computer-readable medium. Computer-readable medium represents any medium that participates in providing instructions to a processor for execution. Computer-readable media may include program instructions, data files, data structures, or a combination thereof. For example, there may be a magnetic medium, an optical recording medium, a memory, and the like. A computer program may be distributed over a networked computer system so that computer readable code is stored and executed in a distributed manner. Functional programs, codes, and code segments for implementing the present embodiment may be easily inferred by programmers in the art to which this embodiment belongs.
본 실시예들은 본 실시예의 기술 사상을 설명하기 위한 것이고, 이러한 실시예에 의하여 본 실시예의 기술 사상의 범위가 한정되는 것은 아니다. 본 실시예의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 실시예의 권리범위에 포함되는 것으로 해석되어야 할 것이다.The present embodiments are for explaining the technical idea of the present embodiment, and the scope of the technical idea of the present embodiment is not limited by these embodiments. The protection scope of this embodiment should be interpreted by the following claims, and all technical ideas within the scope equivalent thereto should be interpreted as being included in the scope of the present embodiment.
Claims (5)
병렬 연산을 수행하는 그래픽 처리 유닛;
상기 그래픽 처리 유닛으로 테이블 조건을 전송하는 질의 엔진; 및
상기 그래픽 처리 유닛으로 데이터 블록에 관한 정보를 전송하는 데이터베이스 엔진을 포함하며,
상기 그래픽 처리 유닛의 커널에 의해 상기 테이블 조건에 따라 상기 데이터 블록을 처리하고 결과를 출력하는 것을 특징으로 하는 데이터베이스의 스캔 연산 장치.In the database scan arithmetic device,
a graphic processing unit that performs parallel operations;
a query engine that transmits table conditions to the graphics processing unit; and
a database engine for transmitting information about data blocks to the graphics processing unit;
and processing the data block according to the table condition by a kernel of the graphic processing unit and outputting a result.
상기 데이터베이스 엔진은 로그 구조 병합 트리(Log Structured Merge Tree, LSM-Tree)를 이용하는 키-값 데이터베이스에 해당하며,
상기 로그 구조 병합 트리는 데이터를 우선 로그 형식으로 저장하고, 로그 상의 데이터 정렬 및 수정 작업의 병합을 미루는 쓰기 친숙형 구조(Write Friendly Structure)인 것을 특징으로 하는 데이터베이스의 스캔 연산 장치.The method of claim 1,
The database engine corresponds to a key-value database using a Log Structured Merge Tree (LSM-Tree),
The log structure merging tree is a write friendly structure in which data is first stored in a log format, and merging of data sorting and correction operations on the log is delayed.
상기 그래픽 처리 유닛의 커널을 이용하여 질의 처리와 테이블 스캔을 파이프라이닝하는 것을 특징으로 하는 데이터베이스의 스캔 연산 장치.3. The method of claim 2,
and pipelining the query processing and the table scan by using the kernel of the graphic processing unit.
직접 메모리 접근(Direct Memory Access)을 이용하여 상기 로그 구조 병합 트리의 파일을 상기 그래픽 처리 유닛의 메모리에 적재하는 것을 특징으로 하는 데이터베이스의 스캔 연산 장치.3. The method of claim 2,
A database scan operation device, characterized in that the file of the log structure merge tree is loaded into the memory of the graphic processing unit by using direct memory access.
상기 그래픽 처리 유닛의 커널은 상기 그래픽 처리 유닛의 스레드가 상기 데이터베이스 엔진의 메모리 영역에 접근하기 위한 메타 데이터를 상기 데이터베이스 엔진에 요청하고,
상기 그래픽 처리 유닛의 스레드가 상기 그래픽 처리 유닛의 메모리에 적재된 파일에 접근하여 필터 연산을 수행하고 상기 질의 엔진으로 결과를 반환하는 것을 특징으로 하는 데이터베이스의 스캔 연산 장치.
5. The method of claim 4,
The kernel of the graphics processing unit requests the database engine for metadata for the thread of the graphics processing unit to access the memory area of the database engine,
and the thread of the graphic processing unit accesses a file loaded in the memory of the graphic processing unit, performs a filter operation, and returns a result to the query engine.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200124401A KR102389609B1 (en) | 2020-09-25 | 2020-09-25 | Method for offloading disk scan directly to gpu in write-optimized database system |
PCT/KR2020/015304 WO2022065577A2 (en) | 2020-09-25 | 2020-11-04 | Method for offloading disk scan operation to gpu in write-optimized database |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200124401A KR102389609B1 (en) | 2020-09-25 | 2020-09-25 | Method for offloading disk scan directly to gpu in write-optimized database system |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220041338A true KR20220041338A (en) | 2022-04-01 |
KR102389609B1 KR102389609B1 (en) | 2022-04-21 |
Family
ID=80845592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200124401A KR102389609B1 (en) | 2020-09-25 | 2020-09-25 | Method for offloading disk scan directly to gpu in write-optimized database system |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR102389609B1 (en) |
WO (1) | WO2022065577A2 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114969034A (en) * | 2022-05-16 | 2022-08-30 | 北京奥星贝斯科技有限公司 | Query method and device for ordered table of LSM-Tree architecture database |
CN118227561A (en) * | 2024-05-23 | 2024-06-21 | 杭州芯晓电子科技有限公司 | Method for asynchronous parallel reading of timing Lib file based on GPU |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101736406B1 (en) | 2016-05-30 | 2017-05-29 | 주식회사 인피니플럭스 | Method and apparatus for replicating data |
WO2019152371A1 (en) * | 2018-01-30 | 2019-08-08 | Salesforce.Com, Inc. | Cache for efficient record lookups in an lsm data structure |
KR20210077467A (en) * | 2019-12-17 | 2021-06-25 | 에스케이하이닉스 주식회사 | Memory system and data processing system including the same |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102034833B1 (en) * | 2018-02-09 | 2019-10-21 | 연세대학교 산학협력단 | Apparatus for Accessing Data Using Internal Parallelism of Flash Storage based on Key-Value and Method thereof |
US10902069B2 (en) * | 2018-12-18 | 2021-01-26 | Runtime Collective Limited | Distributed indexing and aggregation |
-
2020
- 2020-09-25 KR KR1020200124401A patent/KR102389609B1/en active IP Right Grant
- 2020-11-04 WO PCT/KR2020/015304 patent/WO2022065577A2/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101736406B1 (en) | 2016-05-30 | 2017-05-29 | 주식회사 인피니플럭스 | Method and apparatus for replicating data |
WO2019152371A1 (en) * | 2018-01-30 | 2019-08-08 | Salesforce.Com, Inc. | Cache for efficient record lookups in an lsm data structure |
KR20210077467A (en) * | 2019-12-17 | 2021-06-25 | 에스케이하이닉스 주식회사 | Memory system and data processing system including the same |
Non-Patent Citations (2)
Title |
---|
Heeseung Jo et al. Data Encryption on GPU for High-Performance Database Systems. 2013 * |
Saman Ashkiani et al. GPU LSM: A Dynamic Dictionary Data Structure for the GPU. 2018 * |
Also Published As
Publication number | Publication date |
---|---|
WO2022065577A3 (en) | 2022-06-16 |
WO2022065577A2 (en) | 2022-03-31 |
KR102389609B1 (en) | 2022-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Matam et al. | GraphSSD: graph semantics aware SSD | |
Larson et al. | Real-time analytical processing with SQL server | |
US8819335B1 (en) | System and method for executing map-reduce tasks in a storage device | |
US8601474B2 (en) | Resuming execution of an execution plan in a virtual machine | |
JP2755390B2 (en) | Database processing apparatus and database processing method | |
Larson et al. | Enhancements to SQL server column stores | |
US10521117B2 (en) | Unified table delta dictionary memory size and load time optimization | |
KR102389609B1 (en) | Method for offloading disk scan directly to gpu in write-optimized database system | |
US11288275B2 (en) | Technique for fast join processing of dictionary encoded key columns in relational database systems | |
EP4028907B1 (en) | Accelerated building and probing of hash tables using symmetric vector processing | |
Lee et al. | ActiveSort: Efficient external sorting using active SSDs in the MapReduce framework | |
WO2024103599A1 (en) | Data query method, system, apparatus and device, and non-volatile readable storage medium | |
Vincon et al. | nKV: near-data processing with KV-stores on native computational storage | |
Zou et al. | Architecture of a distributed storage that combines file system, memory and computation in a single layer | |
Li et al. | Sinekv: Decoupled secondary indexing for lsm-based key-value stores | |
Wei et al. | A fast algorithm for constructing inverted files on heterogeneous platforms | |
Jibril et al. | Adaptive update handling for graph HTAP | |
Shen et al. | An efficient LSM-tree-based SQLite-like database engine for mobile devices | |
US20240220460A1 (en) | Data storage device and storage control method based on log-structured merge tree | |
Athanassoulis et al. | Online updates on data warehouses via judicious use of solid-state storage | |
US20240220470A1 (en) | Data storage device and storage control method based on log-structured merge tree | |
Choi et al. | OurRocks: offloading disk scan directly to GPU in write-optimized database system | |
Braams | Predicate pushdown in parquet and Apache spark | |
Chilukuri et al. | Analyzing and improving the scalability of in-memory indices for managed search engines | |
Kristo et al. | Parallel External Sorting of ASCII Records Using Learned Models |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |