KR20200019734A - 데이터베이스 가속기로의 병렬 컴퓨트 오프로드 - Google Patents

데이터베이스 가속기로의 병렬 컴퓨트 오프로드 Download PDF

Info

Publication number
KR20200019734A
KR20200019734A KR1020207002082A KR20207002082A KR20200019734A KR 20200019734 A KR20200019734 A KR 20200019734A KR 1020207002082 A KR1020207002082 A KR 1020207002082A KR 20207002082 A KR20207002082 A KR 20207002082A KR 20200019734 A KR20200019734 A KR 20200019734A
Authority
KR
South Korea
Prior art keywords
database
data
dbms
accelerator
pus
Prior art date
Application number
KR1020207002082A
Other languages
English (en)
Other versions
KR102610636B1 (ko
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 자일링크스 인코포레이티드
Publication of KR20200019734A publication Critical patent/KR20200019734A/ko
Application granted granted Critical
Publication of KR102610636B1 publication Critical patent/KR102610636B1/ko

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/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24557Efficient disk access during query execution
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/24569Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

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

Abstract

본 명세서의 실시예들은, 데이터베이스 가속기(145)에서 데이터베이스 질의에 관련된 태스크들을 준비 및 실행하기 위한 기법들을 설명한다. 일 실시예에서, 데이터베이스 가속기(145)는 호스트 CPU(115)와 별개이다. 데이터베이스 관리 시스템(DBMS)(120)는 데이터베이스 질의에 대응하는 태스크들을 데이터베이스 가속기(145)로 오프로딩시킬 수 있다. DBMS(120)는 질의에 관련된 데이터를 데이터베이스로부터 요청하고, 이어서, 데이터베이스 가속기(145)에 의한 프로세싱에 적합한 하나 이상의 데이터 블록들(340)로 그 데이터를 변환할 수 있다. 일 실시예에서, 데이터베이스 가속기(145)는 데이터를 병렬로 또는 동시에 프로세싱할 수 있는 개별 하드웨어 프로세싱 유닛(PU)들(150)을 포함한다. 데이터를 동시에 프로세싱하기 위해, 데이터 블록(340)은 데이터베이스 가속기(145) 내의 개개의 PU(150)에 대해 각각 의도되는 개별 PU 데이터 블록들(420)을 포함한다.

Description

데이터베이스 가속기로의 병렬 컴퓨트 오프로드
본 개시내용의 예들은 일반적으로 데이터베이스 가속기에 관한 것으로, 더 상세하게는 데이터베이스 가속기에서 데이터베이스 질의에 관련된 데이터 블록들을 준비 및 실행하는 것에 관한 것이다.
분석될 데이터의 양이 증가함에 따라, 실시간 분석들이 점차 컴퓨트 집약적이 되고 있다. 이것은, 값비싸고 때때로 실현불가능한 거대한 컴퓨트 노드 스케일링을 초래한다. 데이터베이스의 사이즈가 증가함에 따라, 데이터베이스에 저장된 데이터를 질의 및 분석하는 것은 더 복잡해지고 시간 소모적이 된다. 통상적으로, 데이터베이스 관리 시스템(DBMS)은 데이터베이스 상에서 클라이언트 질의를 수행하기 위해 하나 이상의 CPU들을 사용한다. 그러나, CPU들에 의해 병렬로 프로세싱될 수 있는 데이터의 양은 제한되어 있다.
데이터베이스 가속기를 동작시키기 위한 기법들이 설명된다. 하나의 예는, 호스트 중앙 프로세싱 유닛(CPU)과 별개인 데이터베이스 관리 시스템(DBMS) 및 데이터베이스 가속기를 실행하도록 구성된 호스트 CPU을 포함하는 질의 프로세싱 시스템이며, 여기서 데이터베이스 가속기는 복수의 프로세싱 유닛(PU)들을 포함한다. DBMS는, 데이터베이스 상에서 실행될 질의를 수신하고, 질의에 대응하는 데이터베이스 테이블을 데이터베이스로부터 리트리브(retrieve)하고, 데이터베이스 테이블을 데이터 블록으로 리포맷팅하며 ― 데이터 블록은 복수의 PU 데이터 블록들(복수의 PU들 중 하나에 각각 대응함)을 포함함 ―, 그리고 데이터 블록을 데이터베이스 가속기에 송신하도록 구성된다. 데이터베이스 가속기는 복수의 PU들을 사용하여 복수의 PU 데이터 블록들을 병렬로 프로세싱하고, PU들로부터 DBMS로 결과들을 포워딩하도록 구성된다.
일부 실시예들에서, 복수의 PU 데이터 블록들 각각은 복수의 PU 데이터 블록들 각각 내의 데이터의 양을 표시하는 헤더를 포함할 수 있다.
일부 실시예들에서, 데이터베이스 가속기는, 복수의 PU들 각각으로부터 개별 결과들을 수신하고, DBMS에 포워딩되는 결합된 결과로 개별 결과들을 결합시키도록 구성된 결합기를 포함할 수 있다.
일부 실시예들에서, 질의는 구조화 질의 언어(SQL) 질의를 포함할 수 있다.
일부 실시예들에서, 데이터베이스 가속기는 하나 이상의 프로그래밍가능 집적 회로들 상에 호스팅될 수 있다.
일부 실시예들에서, DBMS는 DBMS와 하나 이상의 프로그래밍가능 집적 회로들 사이의 인터페이스로서 기능하는 프로그래밍가능 집적 회로 프레임워크를 포함할 수 있다. 프로그래밍가능 집적 회로 프레임워크는 하나 이상의 프로그래밍가능 집적 회로들에 의해 해석될 수 있는 커맨드들로, DBMS에 의해 이슈된 명령들을 변환하도록 구성될 수 있다.
일부 실시예들에서, 하나 이상의 프로그래밍가능 집적 회로들은 필드-프로그래밍가능 게이트 어레이(FPGA)를 형성할 수 있다.
일부 실시예들에서, 데이터베이스 가속기는 하나 이상의 주문형 집적 회로(ASIC)들 상에 호스팅될 수 있다.
다른 예는 하나 이상의 집적 회로들 상에서 구현되는 복수의 PU들을 포함하는 데이터베이스 가속기이며, 여기서 데이터베이스 가속기는 별개의 호스트 CPU 상에서 실행되는 DBMS로부터 데이터 블록을 수신하도록 구성되고, 데이터 블록은 데이터베이스로부터 리트리브된 데이터베이스 테이블에 기반하고, 복수의 PU들 중 하나에 각각 대응하는 복수의 PU 데이터 블록들을 포함한다. 게다가, 복수의 PU들은 복수의 PU 데이터 블록들을 병렬로 프로세싱하도록 구성된다. 데이터베이스 가속기는 또한, 복수의 PU들 각각으로부터 개별 결과들을 수신하고, DBMS에 포워딩되는 결합된 결과로 개별 결과들을 결합시키도록 구성된 결합기를 포함한다.
일부 실시예들에서, 복수의 PU 데이터 블록들 각각은 복수의 PU 데이터 블록들 각각 내의 데이터의 양을 표시하는 헤더를 포함할 수 있다.
일부 실시예들에서, 데이터베이스 테이블은 SQL 질의를 사용하여 데이터베이스로부터 리트리브될 수 있다.
일부 실시예들에서, 하나 이상의 집적 회로들은 하나 이상의 프로그래밍가능 집적 회로들을 포함할 수 있다.
일부 실시예들에서, 데이터베이스 가속기는 DBMS와 하나 이상의 프로그래밍가능 집적 회로들 사이의 인터페이스로서 기능하는, DBMS 내의 프로그래밍가능 집적 회로 프레임워크와 통신하도록 구성될 수 있다. 프로그래밍가능 집적 회로 프레임워크는 하나 이상의 프로그래밍가능 집적 회로들에 의해 해석될 수 있는 커맨드들로, DBMS에 의해 이슈된 명령들을 변환하도록 구성될 수 있다.
일부 실시예들에서, 하나 이상의 프로그래밍가능 집적 회로들은 필드-프로그래밍가능 게이트 어레이(FPGA)를 형성할 수 있다.
다른 예는, 하나 이상의 프로세싱 디바이스들 상에서 실행될 경우, DBMS에 대한 동작을 수행하는 명령들을 저장한 비-일시적인 컴퓨터-판독가능 저장 매체이다. 동작은, 데이터베이스 상에서 실행될 질의를 수신하는 것, 질의에 대응하는 데이터베이스 테이블을 데이터베이스로부터 리트리버하는 것, 데이터베이스 테이블을 데이터 블록으로 리포맷팅하는 것 ― 데이터 블록은 복수의 PU 데이터 블록들(데이터베이스 가속기 내의 복수의 PU들 중 하나에 각각 대응함)을 포함하고, 데이터베이스 가속기는 DBMS를 호스팅하는 CPU와 별개임 ―, 데이터 블록을 데이터베이스 가속기에 송신하는 것, 및 데이터 블록을 병렬로 프로세싱하는 복수의 PU들로부터 생성된 결과들을 수신하는 것을 포함한다.
일부 실시예들에서, 복수의 PU 데이터 블록들 각각은 복수의 PU 데이터 블록들 각각 내의 데이터의 양을 표시하는 헤더를 포함할 수 있다.
일부 실시예들에서, 질의는 SQL 질의를 포함할 수 있다.
일부 실시예들에서, 데이터 블록을 데이터베이스 가속기에 송신하는 것은, 프로그래밍가능 집적 회로 프레임워크를 사용하여 데이터베이스 가속기에 의해 해석될 수 있는 커맨드로, DBMS에 의해 이슈된 명령들을 변환하는 것을 포함할 수 있다. 프로그래밍가능 집적 회로 프레임워크는 데이터베이스 가속기를 구현하는 하나 이상의 프로그래밍가능 집적 회로들과 DBMS 사이의 인터페이스로서 기능할 수 있다.
일부 실시예들에서, 하나 이상의 프로그래밍가능 집적 회로들은 필드-프로그래밍가능 게이트 어레이(FPGA)를 형성할 수 있다.
일부 실시예들에서, DBMS는 CPU와 하나 이상의 프로그래밍가능 집적 회로들 사이에서 데이터 블록을 이동시키기 위한 기능들을 포함하는 라이브러리를 포함할 수 있다.
위에서 언급된 특징들이 상세히 이해될 수 있는 방식으로, 위에서 간략하게 요약된 더 구체적인 설명이 예시적인 구현들을 참조하여 이루어질 수 있으며, 그 예시적인 구현들 중 일부는 첨부된 도면들에 예시되어 있다. 그러나, 첨부된 도면들이 통상적인 예시적인 구현들만을 예시하는 것이므로, 그 구현들의 범위를 제한하는 것으로 간주되지 않아야 한다는 것이 주목되어야 한다.
도 1은 일 예에 따른, 데이터베이스 가속기를 포함하는 데이터 센터를 예시한다.
도 2는 일 예에 따른, 데이터베이스 가속기를 사용하여 질의를 실행하기 위한 흐름도이다.
도 3은 일 예에 따른, 질의들을 데이터베이스 가속기로 오프로딩(offload)하기 위한 DBMS를 예시한다.
도 4는 일 예에 따른, 병렬 컴퓨테이션을 위해 맞춤화된 데이터 블록으로 데이터베이스 테이블을 변환하는 것을 예시한다.
도 5는 일 예에 따른, 데이터베이스 가속기에서 병렬 태스크들을 수행하는 것을 예시한다.
이해를 용이하게 하기 위하여, 도면들에 공통적인 동일한 엘리먼트들을 지정하기 위해 가능한 경우 동일한 참조 번호들이 사용되었다. 일 예의 엘리먼트들이 다른 예들에 유리하게 통합될 수 있다는 것이 고려된다.
다양한 특징들이 도면들을 참조하여 아래에서 설명된다. 도면들이 실척대로 도시될 수 있거나 또는 도시되지 않을 수 있으며, 유사한 구조들 또는 기능들의 엘리먼트들이 도면들 전반에 걸쳐 유사한 참조 번호들에 의해 표현됨을 유의해야 한다. 도면들이 특징들의 설명을 용이하게 하기 위해서만 의도되는 것임을 유의해야 한다. 그들은 상세한 설명의 포괄적인 설명으로서 또는 청구항들의 범위에 대한 제한으로 의도되지 않는다. 부가적으로, 예시된 예는 도시된 모든 양상들 또는 이점들을 가질 필요는 없다. 특정한 예와 함께 설명된 양상 또는 이점은 반드시 그 예로 제한되지는 않으며, 그렇게 예시되지 않거나 또는 그렇게 명시적으로 설명되지 않더라도 임의의 다른 예들로 실시될 수 있다.
본 명세서의 실시예들은, 데이터베이스 가속기에서 데이터베이스 질의에 관련된 태스크들을 준비 및 실행하기 위한 기법들을 설명한다. 일 실시예에서, 데이터베이스 가속기는 호스트 CPU와 별개이다. 예컨대, 데이터베이스 가속기는 프로그래밍가능 집적 회로(예컨대, 필드-프로그래밍가능 게이트 어레이(FPGA)) 또는 비-프로그래밍가능 집적 회로(예컨대, 주문형 집적 회로(ASIC))를 사용하여 구현될 수 있다. 임의의 경우에서, 데이터베이스 가속기는 데이터베이스 관리 시스템(DBMS)을 실행하는 호스트 CPU에 통신가능하게 커플링된다.
DBMS는 데이터베이스 질의에 대응하는 태스크들을 데이터베이스 가속기로 오프로딩시킬 수 있다. DBMS는 질의에 관련된 데이터를 데이터베이스로부터 요청하고, 이어서, 데이터베이스 가속기에 의한 프로세싱에 적합한 데이터 블록으로 그 데이터를 변환할 수 있다. 일 실시예에서, 데이터베이스 가속기는 데이터를 병렬로 또는 동시에 프로세싱할 수 있는 개별 하드웨어 프로세싱 유닛(PU)들을 포함한다. 그러나, 데이터를 동시에 프로세싱하기 위해, DBMS는, 데이터베이스 가속기 내의 개개의 PU에 대해 각각 의도되는 개별 PU 데이터 블록들을 포함하는 데이터 블록으로, 데이터베이스로부터 리트리브된 데이터베이스 테이블들을 변환할 수 있다.
데이터베이스 가속기 내의 PU들은 PU 데이터 블록들을 병렬로 실행한다. 예컨대, PU들은 클라이언트 질의(예컨대, 구조화 질의 언어(SQL) 질의)에 의해 지시된 바와 같이 데이터를 분석하고, 이어서 개별 결과들을 리턴할 수 있다. 데이터베이스 가속기는 개별 결과들을 결합시키고, 결합된 결과들을 DBMS로 리턴한다. 결국, DBMS는 질의 결과들을 클라이언트에 송신하기 전에, 데이터베이스 가속기로부터 수신된 결과들을 다른 데이터와 병합할 수 있다. 이러한 방식으로, DBMS는 데이터베이스 질의를 실행하도록 데이터베이스 가속기 내의 PU들에 의해 수행되는 병렬화를 이용할 수 있다.
도 1은 일 예에 따른, 데이터베이스 가속기(145)를 포함하는 데이터 센터(100)(예컨대, 질의 프로세싱 시스템)를 예시한다. 데이터 센터(100)는 데이터베이스들(105A 및 105B) 및 컴퓨트 노드(110)를 포함한다. 일 실시예에서, 데이터베이스들(105)은, 데이터베이스들(105)에 저장된 데이터가 SQL 질의들에 의해 액세스될 수 있는 관계형 데이터베이스들이다. 그러나, 본 명세서의 실시예들은 관계형 데이터베이스들로 제한되지 않는다.
컴퓨트 노드(110)는, PCIe 연결(130)을 통해 통신가능하게 커플링되는, 호스트 CPU(115) 및 FPGA(140)를 포함한다. 호스트 CPU(115)는, 클라이언트 질의를 수행 및 분석하는 것에 관련된 태스크들을 데이터베이스 가속기(145)로 오프로딩시킬 수 있는 DBMS(120)(예컨대, 호스트 CPU(115) 상에서 실행되는 소프트웨어 애플리케이션)를 실행한다. 일 실시예에서, DBMS(120)는 관계형 DBMS(RDBMS)이다. 도시되지 않았지만, DBMS(120)는 데이터베이스들(105) 상에서 실행될 질의들(예컨대, 클라이언트 질의들)을 수신한다. 예컨대, 질의들은, 데이터베이스들(105)로부터 데이터를 리트리브하고, 데이터를 프로세싱하며, 이어서 질의를 송신했던 클라이언트로 결과를 리턴하도록 DBMS(120)에게 명령하는 검색, 분류, 워드 카운트, 또는 질의 6일 수 있다. 게다가, DBMS(120)는 업데이트된 데이터를 생성할 수 있고, 이어서 그 데이터는 데이터베이스들(105)에 저장된다.
질의를 실행하도록 호스트 CPU(115)를 사용하는 대신, DBMS(120)는 질의에 대응하는 태스크(또는 작업로드)의 적어도 일부를 FPGA(140) 내의 데이터베이스 가속기(145)로 오프로딩시킨다. 일 실시예에서, 데이터베이스 가속기(145)는 질의와 연관된 태스크들 중 일부를 수행할 수 있는 반면, 호스트 CPU(115)는 나머지 태스크들을 수행한다. DBMS(120)는 데이터베이스 가속기(145)로부터 획득된 결과들을 호스트 CPU(115)에 의해 생성된 결과들과 병합할 수 있다.
FPGA(140)는, 데이터베이스 가속기(145)를 구현하도록 구성된 프로그래밍가능 로직을 하나 이상의 프로그래밍가능 집적 회로들(도시되지 않음)에 포함한다. FPGA를 사용하는 하나의 장점은, 그의 프로그래밍가능 로직이, 병렬로 동작될 수 있는 PU들(150) 내에 하드웨어 설명 언어를 사용하여 구성될 수 있다는 것이다. 즉, FPGA(140)는 많은 수의 태스크들(또는 스레드들)을 병렬로 수행하는 데 보다 더 적합할 수 있다. FPGA(140)가 도시되지만, 다른 실시예에서, 데이터베이스 가속기(145)가 ASIC와 같은 비-프로그래밍가능 집적 회로 상에서 구현될 수 있다. ASIC가 사용되면, ASIC는 태스크들을 병렬로 수행하기 위한 PU들(150)을 포함하도록 설계될 수 있다. 그러므로, 본 명세서에 설명된 실시예들은 프로그래밍가능 집적 회로들에서 구현된 데이터베이스 가속기(145)로 제한되지 않는다.
데이터를 FPGA(140)와 공유하기 위해, DBMS(120)는 호스트 CPU(115)와 FPGA(140) 사이에서 데이터를 이동시키기 위한 기능들을 포함하는 가속기 라이브러리(125)를 포함한다. 일 실시예에서, 가속기 라이브러리(125)는, 데이터베이스 가속기(145)에 의해 병렬로 프로세싱될 수 있는 포맷으로, 데이터베이스들(105)로부터 수신된 데이터를 변환하는 변환 기능(본 명세서에서 인큐 컴퓨트(enqueue compute)로 지칭됨)을 포함한다. 예컨대, 데이터베이스들(105)로부터 수신된 데이터는 데이터베이스 테이블들 또는 데이터베이스 페이지들에서 정리(organize)될 수 있으며, 여기서 데이터는 행(row)들 및 열(column)들로 배열된다. 인큐 컴퓨트 기능을 사용하여, DBMS(120)는, 데이터베이스 가속기(145) 내의 다양한 PU들(150)에 할당될 수 있는 포맷으로 데이터베이스 테이블들을 변환할 수 있다. 인큐 컴퓨트 기능에 부가하여, 가속기 라이브러리(125)는 데이터베이스 가속기(145)로 송신되고 데이터베이스 가속기(145)로부터 수신된 데이터를 기입, 판독, 및 병합하기 위한 다른 커맨드들을 포함할 수 있다.
PCIe 연결(130)은 호스트 CPU(115) 및 FPGA(140)가 데이터를 공유하게 허용하지만, 임의의 고속 연결이 사용될 수 있다. 일 실시예에서, DBMS(120)는 데이터베이스 가속기(145)로 데이터를 송신하고 데이터베이스 가속기(145)로부터 데이터를 송신하기 위해 다이렉트 메모리 액세스(DMA)를 수행할 수 있다.
일 실시예에서, 컴퓨트 노드(110)는 서버와 같은 컴퓨팅 디바이스이다. 다른 실시예에서, 컴퓨트 노드(110)는 블래이드 서버(blade server)이다. 대안적으로, 컴퓨트 노드(110)는 컴퓨팅 디바이스 내의 별개의 컴포넌트일 수 있다. 예컨대, 컴퓨트 노드(110)는, 호스트 CPU(115) 및 FPGA(140)가 장착되는 공통 기판, 예컨대 마더보드 또는 FRU(field replaceable unit)일 수 있다. 다른 어레인지먼트(arrangement)에서, 호스트 CPU(115)는 마더보드 상에 배치될 수 있는 반면, FPGA(140)는 마더보드 내의 확장 슬롯으로 플러깅될 수 있다. 따라서, FPGA(140)는 데이터베이스 질의들을 실행하기 위한 호스트 CPU(115)의 능력을 증가시키기 위해 컴퓨트 노드(110)에 부가될 수 있다. 다른 예에서, 호스트 CPU(115) 및 FPGA(140)는 함께 패키징될 수 있다.
일 실시예에서, 클라이언트 질의가 데이터 센터(100)에 제출되고 DBMS(120)에 할당된다. 예컨대, 데이터 센터(100)는 클라이언트 데이터를 데이터베이스들(105)에 저장하는 클라우드 컴퓨팅 환경의 일부일 수 있다. 아래에서 더 상세히 설명되는 바와 같이, DBMS(120)는 (존재한다면) 얼마나 많은 클라이언트 질의가 데이터베이스 가속기(145)로 오프로딩되어야 하는지를 결정한다. DBMS(120)는 데이터베이스들(105)로부터 관련 데이터를 리트리브하고, 데이터베이스 가속기(145)의 도움으로 데이터를 분석하며, 결과들을 다시 클라이언트로 송신한다. 데이터베이스들(105) 및 컴퓨트 노드(110)가 데이터 센터(100)에 코-로케이팅되는 것으로 도시되지만, 다른 실시예들에서, 데이터베이스들(105)은 컴퓨트 노드(110)와 상이한 지리적 위치에 배치될 수 있다.
도 2는 일 예에 따른, 데이터베이스 가속기를 사용하여 질의를 실행하기 위한 방법(200)의 흐름도이다. 명확화를 위해, 방법(200) 내의 블록들은, DBMS(120) 및 데이터베이스 가속기(145)의 기능들 및 컴포넌트들의 더 상세한 예시를 제공하는 도 3과 병행하여 설명된다.
블록(205)에서, DBMS(120)는 데이터베이스에 저장된 데이터를 판독, 분석, 또는 업데이트하기 위한 클라이언트 질의를 수신한다. 클라이언트 질의는 사람(예컨대, 급여대장(payroll)을 수행하는 회계사, 또는 공통 속성을 갖는 종업원들을 식별하기를 원하는 인력 자원 관리자)으로부터 또는 소프트웨어 애플리케이션으로부터 발신될 수 있다. 일 실시예에서, 클라이언트 질의는 SQL 질의이다.
DBMS(120)는 데이터베이스 질의를 데이터베이스(105)에 송신하기 위해 클라이언트 질의를 사용한다. 도 3에 도시된 바와 같이, DBMS(120)는, DBMS(120)가 데이터에 대한 요청을 데이터베이스(105)에 송신하게 허용하는 데이터베이스 인터페이스(310)를 포함한다. 예컨대, DBMS(120)는, 데이터가 데이터베이스(105)의 어느 곳에 저장되어 있는지 및 어떤 데이터가 데이터베이스(105)에 저장되어 있는지를 표시하는, 데이터베이스(105)에 대응하는 인덱스를 포함할 수 있다. DBMS(120)는, 어떤 데이터가 클라이언트 질의에 관련있는지를 식별하고, 이어서 그 데이터를 데이터베이스(105)로부터 요청하기 위해 인덱스를 사용할 수 있다. 요청 또는 질의에 대한 응답으로, 데이터베이스(105)는 데이터베이스 인터페이스(310)를 통해 데이터베이스 테이블들(305) 또는 데이터베이스 페이지들을 DBMS(120)로 리턴한다. 일 실시예에서, 데이터베이스 테이블들(305)은 행들 및 열들로 데이터를 배열한다.
블록(215)에서, DBMS(120)는, 데이터베이스 가속기(145) 내의 PU들(365)에 대응하는 다수의 PU 데이터 블록들을 각각 갖는 데이터 블록들(340)로 데이터베이스 테이블들(305)을 리포맷팅한다. 일 실시예에서, 데이터 블록들(340)은 데이터베이스 테이블들(305)에 의해 사용된 포맷보다 병렬 프로세싱에 더 적합한 포맷을 갖는다. 데이터 블록들(340)의 특정 포맷이 본 개시내용에서 나중에 설명된다.
도 3에 도시된 바와 같이, DBMS(120)는 데이터 블록들(340)을 리포맷팅하고 큐잉하기 위해 가속기 라이브러리로부터의 인큐 컴퓨트 기능(325)을 사용한다. 이러한 예에서, 인큐 컴퓨트 기능(325)은 데이터 블록들(340)을 생성하기 위해 (데이터베이스 인터페이스(310) 내의 버퍼(315)에 저장될 수 있는) 데이터베이스 테이블들(305)을 사용한다. DBMS(120)는, 도 3에 도시된 상이한 수직 큐들에 의해 표현된 상이한 질의들에 대하여 데이터 블록들(340)을 생성하기 위해 상이한 인큐 컴퓨트 기능들(325)을 사용할 수 있다. 일 실시예에서, 상이한 수직 큐들은 상이한 스레드들을 표현한다. DBMS(120)에서 상이한 스레드들을 실행하는 것은 호스트 CPU를 오버로딩하는 것을 피할 수 있다.
일 실시예에서, 다수의 데이터 블록들(340)은 동일한 질의에 대응한다. 예컨대, 질의 6를 수행하기 위해, DBMS(120)는 데이터베이스 가속기(145)에 의해 프로세싱되는 다수의 데이터 블록들(340)을 생성하기 위해 인큐 컴퓨트 기능(325)을 다수회 콜(call)할 수 있다.
데이터 블록들(340)은 하나 이상의 데이터베이스 테이블들(305)을 포함할 수 있다. 예컨대, 데이터 블록(340)은 단일 데이터베이스 테이블(305)에 데이터의 전부 또는 서브세트를 포함할 수 있거나 또는 데이터 블록(340)은 다수의 데이터베이스 테이블들(305)로부터의 데이터를 포함할 수 있다. 다른 예에서, 단일 데이터베이스 테이블(305)은 다수의 데이터 블록들(340)로 분할될 수 있으며, 그 경우, 데이터 블록들(340)은 도 3에 도시된 바와 같이 DBMS(120)에서 질의되어, 데이터베이스 가속기(145)에 의한 프로세싱을 대기한다. 일 실시예에서, 질의된 데이터 블록들(340)은 하나씩 데이터베이스 가속기(145)에 전송된다.
데이터 블록들(340)을 데이터베이스 가속기(145)에 송신하기 전에, DBMS는 데이터 블록들(340)에 대해 기입 콜백(callback) 기능(330)을 수행할 수 있다. 기입 콜백 기능(330)은 가속기 라이브러리의 일부일 수 있으며, 데이터 블록들(340)을 데이터베이스 가속기(145)에 전달하기 위해 DMA를 사용하기 전에 수행될 수 있다. 기입 콜백 기능(330)은, 블록들(340)이 데이터베이스 가속기(145)에 의해 프로세싱되기 전에 데이터를 데이터 블록들(340)에 기입하는 데 사용된다. 예컨대, DBMS(120)는 질의의 일부로서 클라이언트로부터 업데이트된 데이터를 수신했을 수 있으며, 그러므로, 블록들이 데이터베이스 가속기(145) 내의 PU들(365)에 의해 분석되기 전에 먼저 그 업데이트된 데이터를 데이터 블록들(340)에 기입한다.
블록(220)에서, DBMS(120)는 데이터베이스 가속기(145)에 데이터 블록(340)을 송신한다. DBMS(120)는 DBMS(120)와 FPGA(140) 사이의 인터페이스로서 기능하는 FPGA 프레임워크(345)를 포함한다. 일 실시예에서, FPGA 프레임워크(345)는 FPGA(140)에 의해 해석될 수 있는 커맨드들로, DBMS(120)에 의해 이슈된 커맨드들 및 명령들을 변환한다. FPGA 프레임워크(345)(예컨대, 프로그래밍가능 집적 회로 프레임워크)는 호스트 CPU(예컨대, x86 기반 플랫폼)가 FPGA(140)와 통신할 수 있게 하기 위해 애플리케이션 코드(예컨대, OpenCL, C, C++ 등)를 사용하는 개발 환경을 사용하여 구성될 수 있다. 예컨대, FPGA 프레임워크(345)는 FPGA가 가속기, 예컨대 데이터베이스 가속기(145)로서 사용되게 허용한다. FPGA 프레임워크(345)를 생성하기 위한 개발 환경의 하나의 비-제한적인 예는 OpenCL, C, 및 C++ 커널들을 지원하는 자일링스의 SDx 개발 환경이다. FPGA 프레임워크(345) 뿐만 아니라 도 1의 가속기 라이브러리(125)는, 호스트 CPU가 태스크들을 다른 가속기들, 이를테면 그래픽 가속기 또는 암호화 가속기로 오프로딩시키는 것과 유사하게, DBMS(120)가 태스크들을 FPGA(140) 및 데이터베이스 가속기(145)로 오프로딩시킬 수 있게 한다.
블록(225)에서, 데이터베이스 가속기(145)는 질의에 따라 PU들(365)을 사용하여 병렬로 데이터 블록(340) 내의 개개의 PU 데이터 블록들을 프로세싱한다. 데이터 블록들(340)은 데이터베이스 가속기(145) 내의 파서(parser)(360)에서 수신된다. 파서(360)는 데이터 블록(340)을 별개의 PU 데이터 블록들로 분할할 수 있으며, 이어서, 그 별개의 PU 데이터 블록들은 PU들(365)의 개개의 PU에 포워딩된다. 도시된 바와 같이, PU들(365)은 PU 데이터 블록들 뿐만 아니라 데이터 블록들을 프로세싱한 결과들을 저장하기 위한 개개의 메모리 엘리먼트, 예컨대 BRAM(370)을 포함할 수 있다.
데이터 블록들(340)을 송신하는 것에 부가하여, DBMS(120)는 또한, PU들(365)이 수신된 클라이언트 질의에 따라 데이터 블록들(340)을 어떻게 프로세싱해야 하는지를 표시하는 명령들을 데이터베이스 가속기(145)에 송신할 수 있다. 예컨대, 질의가 워드 카운트 질의이면, DBMS(120)는 카운팅될, 클라이언트에 의해 특정된 특정 워드를 데이터베이스 가속기(145)에 송신한다. 이어서, 워드는 PU들(365)에 전송되며, 그 PU들(365)은 그들 개개의 PU 데이터 블록들을 가로질러, 그 워드의 임의의 발생들을 식별한다. 다른 예에서, 질의가 분류이면, DBMS(120)는 데이터 블록들(340)을 분류하기 위한 파라미터들을 제공하며, 이어서, PU들(365은 데이터 블록들(340)을 재배열하기 위해 그 파라미터들을 사용한다. 이러한 방식으로, DBMS(120)는 분석될 데이터 뿐만 아니라 데이터를 분석하기 위한 명령들 또는 파라미터들 둘 모두를 데이터베이스 가속기(145)에 제공할 수 있다.
DBMS(120)는, FPGA 프레임워크(345)를 사용하여 데이터를 FPGA(140)에 송신할 때를 결정하는 이벤트 관리자(320)를 포함한다. 예컨대, 이벤트 관리자(320)는, 데이터 블록들(340)을 포함하는 큐들을 모니터링하고, 데이터 블록(340)(또는 블록들)이 데이터베이스 가속기(145)에 송신되어야 할 때를 결정할 수 있다.
PU들(365)은 질의 및/또는 DBMS(120)에 의해 정의된 파라미터들에 따라 그들 개개의 블록들을 분석한다. 위에서 언급된 바와 같이, PU들(365)은 별개의 하드웨어 엘리먼트들이며, 따라서 병렬로 실행될 수 있다. 예컨대, PU(365A)는 그의 대응하는 PU 데이터 블록을 분석할 수 있고, 동시에 PU(365B)는 그의 PU 데이터 블록을 분석한다. 단지 몇몇 PU들(365)만이 도 3에 도시되지만, FPGA(140)는 데이터베이스 가속기(145)가 수십 또는 수백개의 PU들(365)을 갖도록 구성될 수 있으며, 그 PU들(365) 각각은, 데이터 블록(340)이 병렬로 프로세싱될 수 있도록 다른 PU들(365)과 독립적으로 동작될 수 있다.
PU들(365)은 PU 데이터 블록들을 분석 또는 프로세싱한 결과들을 결합기(375)에 포워딩한다. 블록(230)에서, 결합기(375)는 PU들에 의해 출력된 결과들을 결합시킨다. 예컨대, 분류 질의의 경우, 각각의 PU(365)는 그의 개별 PU 데이터 블록들을 분류하고, 이어서 결합기(375)는 분류된 데이터 블록을 데이터의 인접한 블록으로 결합시킬 수 있다. 워드 카운트 또는 검색 질의의 경우, 결합기(375)는 총 워드 카운트를 식별하거나 또는 검색 결과들을 결합시켜, 검색 용어가 발견되었던 데이터 블록(340) 내의 모든 위치들을 식별할 수 있다.
데이터베이스 가속기(145)가 수신된 데이터 블록(340)을 프로세싱하는 것을 완료할 경우, FPGA(140)는, 데이터베이스 가속기(145)에 의해 획득된 결과들을 송신하도록 FPGA(140)에게 명령하기 위해 FPGA 프레임워크(345)를 사용하는 판독 콜백 기능(335)을 실행하는 이벤트 관리자(320)에게 통지한다. 블록(235)에서, FPGA(140)는 판독 콜백 기능(335)에 대한 응답으로, 결합된 결과들을 호스트 CPU 및 DBMS(120)에 송신한다.
일 실시예에서, 도시되지 않았지만, DBMS(120)는 데이터베이스 가속기(145)로부터 수신된 결합된 결과들을 리포맷팅하도록 다른 기능들을 콜할 수 있다. 예컨대, 데이터가 데이터베이스(105)에 저장될 것이라면(예컨대, 데이터베이스 가속기(145)가 데이터를 변화시켰거나 재배열했다면), DBMS(120)는 데이터베이스 테이블들(305)에 의해 사용되는 포맷으로 데이터를 포맷팅할 수 있다.
블록(240)에서, DBMS(120)는 데이터베이스 가속기(145)로부터 수신된 결과들을 병합한다. 예컨대, DBMS(120)는, 데이터베이스 가속기(145)에 의해 순차적으로 프로세싱되었던 다수의 데이터 블록들(340)로 데이터베이스 테이블(305)을 분할했을 수 있다. 데이터 블록들(340)을 프로세싱한 것으로부터의 결과들이 데이터베이스 가속기(145)로부터 수신됨에 따라, DBMS(120) 내의 병합기(355)는 단지 개별 데이터 블록들(340)보다는 데이터베이스 테이블(305)에 대응하는 결합된 결과 세트로, 개별 데이터 블록들(340)을 순차적으로 프로세싱한 것으로부터의 결과들을 병합할 수 있다. 게다가, 병합기(355)는 또한, 데이터베이스 가속기(145)로부터 리턴된 결과들을 로컬 질의 관리자(350)에 의해 제공된 결과와 병합할 수 있다. 예컨대, DBMS(120)는 로컬 질의 관리자(350)를 사용하여 질의에 관련된 일부 태스크를 수행하고, 데이터베이스 가속기(145)를 사용하여 그 동일한 질의에 대해 다른 태스크들을 수행할 수 있다. 병합기(355)는 질의 관리자(350)를 사용하여 호스트 CPU 상에서 로컬로 생성된 결과들과 데이터베이스 가속기(145)에 의해 생성된 결과들을 병합할 수 있다. 그러나, 다른 실시예들에서, 질의와 연관된 모든 태스크들은 데이터베이스 가속기(145)에 의해 수행될 수 있다. 그 경우에서, 병합기(355)는 데이터베이스 가속기(145)에 의해 제공된 결과들을 로컬 결과들과 병합할 필요가 없을 것이다.
블록(245)에서, DBMS(120)는 클라이언트에 질의 결과들(380)을 포워딩한다. 질의 결과들(380)은 워드 카운트, 검색 결과들, 특정 방식으로 데이터를 분류한 결과 등을 포함할 수 있다. 일 실시예에서, DBMS(120)는 또한, 질의에 대한 응답으로 데이터베이스(105)에 저장된 데이터를 업데이트할 수 있다. 예컨대, 도 3에 도시되지 않았지만, DBMS(120)는, 업데이트된 데이터베이스 테이블들(305)을 데이터베이스(105)에 송신하기 위해 데이터베이스 인터페이스(310)를 사용할 수 있다. 다른 예에서, DBMS(120)는, 질의에 대한 응답으로 데이터베이스(105)에 저장된 데이터를 삭제하거나 이동시킬 수 있다. 다른 실시예에서, DBMS(120)는 임의의 결과들을 클라이언트로 리턴하지 않으면서 클라이언트 질의에 대한 응답으로 데이터베이스(105)에 데이터를 저장하거나, 데이터베이스(105) 내의 데이터를 삭제하거나 이동시킬 수 있다. 예컨대, 클라이언트 질의는, 결과들이 클라이언트로 리턴되도록 요구하지 않는, 데이터베이스(105) 내의 저장된 데이터를 변화시키거나 업데이트하기 위한 명령일 수 있다. 그럼에도 불구하고, DBMS(120)는, 데이터베이스 가속기(145)에 의해 제공된 결과가 클라이언트에 전달되기보다는 데이터베이스(105)에 저장되더라도, 예컨대 데이터베이스(105)에 저장된 데이터를 업데이트하기 위해 데이터베이스 가속기(145)를 사용할 수 있다.
방법(200)이 PU들(365)을 사용하여 병렬로 단일 데이터 블록(340)을 프로세싱하는 것을 예시하지만, 다른 실시예들에서, 데이터베이스 가속기(145)는 다수의 데이터 블록들(340)을 병렬로 프로세싱할 수 있다. 예컨대, PU들(365)의 절반이 하나의 데이터 블록(340)을 프로세싱할 수 있는 반면, 다른 절반은 상이한 데이터 블록(340)을 프로세싱한다. 게다가, 일 실시예에서, FPGA(140)는 독립적으로 동작될 수 있는 다수의 데이터베이스 가속기들(145)을 포함할 수 있다. 따라서, 가속기들 중 하나는 도 3에 도시된 수직 큐들(또는 스레드들) 중 하나에 대해 데이터 블록들 중 하나를 프로세싱하는 반면, 다른 가속기는 수직 큐들 중 다른 큐로부터의 데이터 블록을 병렬로 프로세싱할 수 있다.
도 4는 일 예에 따른, 병렬 컴퓨테이션을 위해 맞춤화된 다수의 데이터 블록들(340)로 데이터베이스 테이블(305)을 변환하는 것을 예시한다. 예컨대, 데이터베이스 가속기를 구현하는 FPGA 내의 메모리는 데이터베이스 테이블들(305)의 사이즈에 대응할 수 있는 DBMS를 호스팅하는 CPU의 메모리보다 훨씬 더 작을 수 있다. 예컨대, 데이터베이스 테이블들(305)은 256 내지 512GB의 사이즈를 가질 수 있는 반면, FPGA의 메모리는 2 내지 8GB로 제한된다. 따라서, 데이터베이스 테이블(305)을 데이터 블록들(340)로 분할하는 것은 FPGA가 테이블들(305) 내의 데이터를 더 효율적으로 프로세싱하게 허용할 수 있다.
일 실시예에서, 데이터베이스 테이블(305)은 관계형 데이터베이스에 저장된 데이터를 표현한다. 데이터베이스에 질의할 경우, DBMS는 그것이 데이터베이스로부터 리트리브하기를 원하는 행들, 열들, 또는 테이블들의 리스트를 제공할 수 있다. 도 4는, 데이터베이스에 의해 DBMS에 제공될 수 있는 열들(405) 및 행들(410)로 데이터가 배열되는 데이터베이스 테이블(305)의 단지 일 예를 예시한다. 일 실시예에서, 데이터 블록(340)은 적절한 행들을 결합시키고 선택함으로써 다수의 데이터베이스 테이블들(305)로부터의 데이터의 일부들을 포함할 수 있다. 다수의 데이터베이스 테이블들(305)로부터의 데이터의 선택된 부분들을 사용하여 데이터 블록(340)을 생성하는 것은, 조인(join)과 같은 다른 데이터베이스 동작들에서 다수의 테이블들을 참조할 경우 유용할 수 있다.
위에서 언급된 바와 같이, 데이터베이스에 데이터를 저장하거나 데이터베이스 내의 데이터를 배열하는 데 사용되는 포맷은, 병렬로 동작되는 데이터베이스 가속기 내의 PU들을 사용하여 데이터를 분석하는 데 이상적이지 않을 수 있다. 그러므로, 도 4는 테이블(305) 내의 데이터가 데이터 블록(340)으로 리포맷팅되는 변환(400)을 수행하는 것을 예시한다. 일 실시예에서, 변환(400)은 가속기 라이브러리에서 기능(예컨대, 인큐 컴퓨팅 기능)을 사용하여 DBMS에 의해 수행된다. 그러나, 다른 실시예에서, 변환(400)은 데이터베이스 가속기 내의, 예컨대 FPGA의 하드웨어 내의 로직에 의해 수행될 수 있다.
도 4에서, 데이터 블록(340)은, 위에서 언급된 바와 같이 데이터베이스 가속기 내의 PU들의 개개의 PU들에 의해 프로세싱될 수 있는 개개의 PU 데이터 블록들(420)을 포함한다. 일 실시예에서, 데이터 블록(340)은 데이터베이스 가속기 내의 각각의 PU에 대한 개개의 PU 데이터 블록(420)을 포함할 수 있지만, 이것이 요건은 아니다. 예컨대, PU들 중 일부는 데이터 블록(340)이 데이터베이스 가속기에 의해 프로세싱될 경우 유휴일 수 있거나, 또는 대응하는 PU 데이터 블록(420)을 갖지 않는 PU들은 질의에 관련된 다른 태스크들을 수행하는 데 사용될 수 있다.
각각의 PU 데이터 블록(420)은 헤더(425) 및 데이터(435)를 포함한다. 일 실시예에서, 헤더(425)는 특정 PU 데이터 블록(420)에 있는 데이터(435)의 행들의 수를 표시한다. 예컨대, PU 데이터 블록들(420)은 동일한 양의 데이터(435)를 갖지 않을 수 있으며, 그 경우, DBMS(120)는 헤더들(425) 내의 행 표시자들(430)을 업데이트함으로써 얼마나 많은 데이터가 PU 데이터 블록(420)에 있는지를 표시할 수 있다.
데이터(435)는 데이터베이스 테이블(305)에 배열되었던 데이터를 포함한다. 달리 말하면, 데이터(435)는 테이블(305) 내의 열들(405) 및 행들(410)에 저장되었던 데이터이다. 그러나, DBMS(120)는 PU 데이터 블록(420)에 데이터(435)를 상이하게 저장할 수 있다. 예컨대, 데이터(435)는 PU 데이터 블록들(420) 내의 행들 및 열들로 배열되지 않고 일부 다른 수단에 의해 배열될 수 있다.
개개의 PU 데이터 블록들(420)을 포함하는 데이터 블록(340)으로 데이터베이스 테이블(305)을 리포맷팅함으로써, 데이터(435)는 데이터베이스 가속기 내의 PU들에 의해 분석될 수 있다. 게다가, 데이터베이스 테이블(305)의 데이터를 분할함으로써, PU들은 병렬로 분석될 수 있는 데이터의 개개의 청크(chunk)들(예컨대, PU 데이터 블록들(420))을 수신할 수 있다. 일 실시예에서, PU들은 다른 PU들로부터의 결과들을 대기하지 않으면서 PU 데이터 블록들(420)을 프로세싱할 수 있다. 달리 말하면, PU 데이터 블록들(420)을 분석하는 것은 독립적인 동작들일 수 있어서, PU들은 다른 PU로부터의 결과들을 대기하지 않으면서 병렬로 동작될 수 있다.
도 4에 도시되지 않았지만, DBMS는, 데이터베이스 가속기 내의 PU들에 의해 생성된 결과들을 클라이언트 또는 데이터베이스 중 어느 하나에 포워딩할 경우 다른 변환을 수행할 수 있다. 예컨대, 클라이언트 질의가 데이터베이스에 저장된 데이터를 업데이트하도록 DBMS에게 명령하면(그리고 데이터베이스 가속기가 데이터를 업데이트하는 데 사용되면), DBMS는, 데이터가 관계형 데이터베이스에 저장될 수 있도록 데이터베이스 테이블(305)과 유사한 포맷으로, 데이터베이스 가속기로부터 리턴된 데이터를 포맷팅할 수 있다.
도 5는 일 예에 따른, 데이터베이스 가속기(145)에서 병렬 태스크들을 수행하기 위한 시스템(500)을 예시한다. 시스템(500)은 데이터베이스 가속기(145)에 통신가능하게 커플링된 더블 데이터 레이트(DDR) 메모리(505)를 포함한다. DDR 메모리(505)는 DBMS에 의해 준비되는 데이터 블록들(340)을 포함한다. 일 실시예에서, DDR 메모리(505)는, 이벤트 관리자 또는 DBMS로부터의 커맨드에 대한 응답으로 데이터베이스 가속기(145) 내의 판독 버퍼(570)에 데이터 블록들(340)을 송신한다. 이어서, 데이터 블록(340)(또는 블록들)은, 데이터베이스 가속기(145) 내의 PU들의 개개의 PU(도시되지 않음)에 대응하는 개개의 PU 스트림들(515)로 분리된다. 데이터 블록(340)을 PU 스트림들(515)로 분리시키는 것은 데이터베이스 가속기(145) 내의 PU들의 병렬화를 이용한다. PU는, 다른 PU들이 그들의 PU 스트림들(515)을 프로세싱하는 것과 독립적으로, 그의 개개의 PU 스트림(515)을 프로세싱 또는 분석할 수 있다. 따라서, PU 스트림들(515)은 데이터베이스 가속기(145)에 의해 병렬로 프로세싱될 수 있다.
일단 프로세싱되면, 데이터베이스 가속기는 PU 스트림들(515)을 프로세싱한 것으로부터 결과들을 리트리브하기 위해 GET_PU_RESULT 기능들(520)을 콜할 수 있다. 예컨대, 질의가 워드 카운트 질의이면, PU들은 카운팅될, 클라이언트에 의해 특정된 특정 워드를 식별하기 위해 PU 스트림들(515)을 가로지른다. GET_PU_RESULT 기능들(520)을 콜함으로써, 데이터베이스 가속기는 PU들 각각에 의해 식별된 워드의 발생들의 수를 결정할 수 있다.
결합기(375)는 GET_PU_RESULT 기능들(520)을 콜링한 것으로부터의 결과들을 수신하고 결과들을 결합시킨다. 이러한 방식으로, PU들로부터의 결과들은 데이터베이스 가속기(145)의 결합된 결과들(530)로 병합될 수 있으며, 이러한 결과들은 출력 버퍼(525)에 저장된다. 일 실시예에서, 출력 버퍼(525)는 이벤트 관리자로부터의 명령에 대한 응답으로, 결합된 결과들을 DBMS(120)에 포워딩한다. 예컨대, 이벤트 관리자는 PU들 전부가 특정 데이터 블록(340)(또는 블록들)을 프로세싱하는 것을 종료한 때를 결정하기 위해 데이터베이스 가속기(145)를 모니터링할 수 있다. 일단 완료되면, 이벤트 관리자는 결합된 결과(530)를 DBMS(120)에 포워딩하도록 데이터베이스 가속기(145)에게 명령한다.
일 실시예에서, 데이터베이스 가속기(145) 내에서 데이터를 프로세싱 및 전달하는 데 사용되는 기능들은, 하드웨어 설명 언어(HDL) 또는 레지스터 전달 레벨(RTL) 코드로부터 직접 기능들을 생성하기보다는 C, C++, Open CL 등과 같은 소프트웨어 코드로부터 시뮬레이팅될 수 있다. 예컨대, HLS(high-level synthesis) 애플리케이션은, 프로그래머가 RTL 코드를 수동으로 생성할 필요 없이 소프트웨어 코드를 사용하여 프로그래밍가능 회로(예컨대, FPGA)를 구성할 수 있다. 게다가, HLS 애플리케이션은, 상이한 데이터 타입들(예컨대, 정수들, 부동 소수점들 등), 스트리밍 데이터 구조들, 고급 수학 공식들(예컨대, 사인, 코사인, 제곱근 등), 또는 디지털 신호 프로세싱(예컨대, 콘볼루션, 진폭 변조, 디코더들 등)과 같은 추상적 개념들을 핸들링하기 위한 라이브러리들을 포함할 수 있다.
일 실시예에서, HLS 애플리케이션은 도 5에 도시된 스트리밍 환경을 생성하는 데 사용된다. 예컨대, 데이터 블록(340)의 일부는, 각각의 PU가 최대 효율로 병렬로 동작하게 유지하도록 설계될 수 있는 상이한 판독 및 기입 데이터 폭들을 갖는 PU 스트림들(515)로 공급될 수 있다. 게다가, DDR 버스트 길이는, DDR 메모리(505)로부터 판독 버퍼(510)로 데이터 블록들(340)을 송신할 경우, DDR 비효율을 감소시킬 만큼 충분히 길 수 있다. 넓은 DDR 폭은 최적의 PU 리소스 사용 및 프로세싱 사이클들의 수로 효율을 최대화시킨다. 일 실시예에서, 판독 버퍼(510) 및 출력 버퍼(525)로서의 블록 RAM들의 사용은 스트립핑(strip)된 판독 버퍼에 의해 감소될 수 있다.
일 실시예에서, SQL 질의의 경우, 병렬로 실행되는 PU들로부터의 결과들은 FPGA 상의 단일 커널 또는 컴퓨트 유닛에 대해 결합될 수 있다. 예컨대, 2MB의 데이터 블록 사이즈 및 32KB의 PU 블록 사이즈를 갖는 하나의 질의 6 프로세싱 유닛은, 호스트 CPU 상에서 질의 6 동작을 수행하는 것과 비교할 때, 25배 초과의 실행 시간 개선으로 수행될 수 있다. PU들의 수가 데이터베이스 가속기(145)에서 증가함에 따라, 실행 시간이 추가로 개선될 수 있다.
본 발명의 다양한 실시예들의 설명들은 예시의 목적들을 위해 제시되었지만, 포괄적인 것으로 의도되지 않거나 개시된 실시예들로 제한되지 않는다. 많은 수정들 및 변경들은 설명된 실시예들의 범위 및 사상을 벗어나지 않으면서 당업자들에게 자명할 것이다. 본 명세서에서 사용된 용어는 실시예들의 원리들, 시장에서 발견되는 기술들에 대한 실제적인 애플리케이션 또는 기술적 개선을 가장 잘 설명하거나 또는 당업자들이 본 명세서에 개시된 실시예들을 이해할 수 있도록 선정되었다.
전술한 것에서, 본 개시내용에 제시된 실시예들에 대한 참조가 이루어진다. 그러나, 본 개시내용의 범위는 특정한 설명된 실시예들로 제한되지 않는다. 대신, 본 명세서에 설명된 특징들 및 엘리먼트들의 임의의 조합은, 상이한 실시예들에 관련되는지 여부에 관계없이, 고려된 실시예들을 구현 및 실시하는 것으로 고려된다. 더욱이, 본 명세서에 개시된 실시예들이 다른 가능한 솔루션들에 비해 또는 종래 기술에 비해 장점들을 달성할 수 있지만, 특정 장점이 주어진 실시예에 의해 달성되는지 여부는 본 개시내용의 범위를 제한하지 않는다. 따라서, 본 명세서에 설명된 양상들, 특징들, 실시예들 및 장점들은 단지 예시일 뿐이며, 청구항(들)에서 명시적으로 언급된 경우를 제외하고, 첨부된 청구항들의 엘리먼트들 또는 제한들로 고려되지 않는다. 유사하게, "본 발명"에 대한 참조는 본 명세서에 개시된 임의의 발명의 요지의 일반화로서 해석되지 않아야 하며, 청구항(들)에서 명시적으로 언급된 경우를 제외하고, 첨부된 청구항들의 엘리먼트 또는 제한인 것으로 고려되지 않아야 한다.
본 명세서에 설명된 양상들은 전체적으로 하드웨어 실시예, 전체적으로 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로-코드 등을 포함함) 또는 소프트웨어 및 하드웨어 양상들을 조합한 실시예의 형태를 취할 수 있으며, 이들 실시예들 모두는 일반적으로 본 명세서에서 "모듈" 또는 "시스템"으로 지칭될 수 있다.
본 발명은 시스템, 방법, 및/또는 컴퓨터 프로그램 제품일 수 있다. 컴퓨터 프로그램 제품은, 프로세서로 하여금, 본 발명의 양상들을 수행하게 하기 위한 컴퓨터 판독가능 프로그램 명령들을 그 상에 갖고 있는 컴퓨터 판독가능 저장 매체(또는 매체들)를 포함할 수 있다.
컴퓨터 판독가능 저장 매체는 명령 실행 디바이스에 의한 사용을 위한 명령들을 유지 및 저장할 수 있는 유형의 디바이스일 수 있다. 컴퓨터 판독가능 저장 매체는, 예컨대 전자 저장 디바이스, 자기 저장 디바이스, 광학 저장 디바이스, 전자기 저장 디바이스, 반도체 저장 디바이스, 또는 전술한 것들의 임의의 적합한 조합일 수 있다(그러나 이에 제한되지 않음). 컴퓨터 판독가능 저장 매체의 더 특정한 예들의 비-포괄적인 리스트는 다음을 포함한다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 소거가능한 프로그래밍가능 판독-전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 판독-전용 메모리(CD-ROM), 디지털 다목적 디스크(DVD), 메모리 스틱, 플로피 디스크, 기계적으로 인코딩된 디바이스, 이를 테면 명령들이 레코딩된 펀치-카드들 또는 홈의 상승 구조들, 및 전술한 것들의 임의의 적합한 조합. 본 명세서에서 사용된 바와 같이, 컴퓨터 판독가능 저장 매체는, 라디오 파들 또는 다른 자유롭게 전파되는 전자기파들, 도파관 또는 다른 송신 매체들을 통해 전파되는 전자기파들(예컨대, 광섬유 케이블을 통과하는 광 펄스들), 또는 와이어를 통해 송신되는 전기 신호들과 같은 일시적인 신호들 그 자체로 해석되지 않을 것이다.
본 명세서에 설명된 컴퓨터 판독가능 프로그램 명령들은 컴퓨터 판독가능 저장 매체로부터 개개의 컴퓨팅/프로세싱 디바이스들로 다운로딩되거나, 또는 네트워크, 예컨대 인터넷, 로컬 영역 네트워크, 광역 네트워크 및/또는 무선 네트워크를 통해 외부 컴퓨터 또는 외부 저장 디바이스로 다운로딩될 수 있다. 네트워크는 구리 송신 케이블들, 송신 광섬유들, 무선 송신, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및/또는 에지 서버들을 포함할 수 있다. 각각의 컴퓨팅/프로세싱 디바이스 내의 네트워크 어댑터 카드 또는 네트워크 인터페이스는, 네트워크로부터 컴퓨터 판독가능 프로그램 명령들을 수신하고, 개개의 컴퓨팅/프로세싱 디바이스 내의 컴퓨터 판독가능 저장 매체로의 저장을 위해 컴퓨터 판독가능 프로그램 명령들을 포워딩한다.
본 발명의 동작들을 수행하기 위한 컴퓨터 판독가능 프로그램 명령들은, 어셈블러 명령들, ISA(instruction-set-architecture) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-세팅 데이터, 또는 오브젝트 지향 프로그래밍 언어, 이를테면 Smalltalk, C++ 등 및 종래의 절차적 프로그래밍 언어들, 이를테면 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어들을 포함하는 하나 이상의 프로그래밍 언어들의 임의의 조합으로 기입된 소스 코드 또는 오브젝트 코드 중 어느 하나의 코드일 수 있다. 컴퓨터 판독가능 프로그램 명령들은, 사용자의 컴퓨터 상에서 전체적으로, 사용자의 컴퓨터 상에서 부분적으로, 독립형 소프트웨어 패키지로서, 사용자의 컴퓨터 상에서 부분적으로 그리고 원격 컴퓨터 상에서 부분적으로 또는 원격 컴퓨터 또는 서버 상에서 전체적으로 실행될 수 있다. 후자의 시나리오에서, 원격 컴퓨터는, 로컬 영역 네트워크(LAN) 또는 광역 네트워크(WAN)를 포함하는 임의의 타입의 네트워크를 통해 사용자의 컴퓨터에 연결될 수 있거나, 또는 연결은 (예컨대, 인터넷 서비스 제공자를 사용하여 인터넷을 통해) 외부 컴퓨터에 대해 이루어질 수 있다. 일부 실시예들에서, 예컨대 프로그래밍가능 로직 회로망, 필드-프로그래밍가능 게이트 어레이들(FPGA), 또는 프로그래밍가능 로직 어레이들(PLA)을 포함하는 전자 회로망은, 본 발명의 양상들을 수행하기 위해 전자 회로망을 개인화(personalize)하도록 컴퓨터 판독가능 프로그램 명령들의 상태 정보를 이용함으로써 컴퓨터 판독가능 프로그램 명령들을 실행할 수 있다.
본 발명의 양상들은, 본 발명의 실시예들에 따른 방법들, 장치(시스템들), 및 컴퓨터 프로그램 제품들의 흐름도들 및/또는 블록 다이어그램들을 참조하여 본 명세서에서 설명된다. 흐름도들 및/또는 블록 다이어그램들의 각각의 블록, 및 흐름도들 및/또는 블록 다이어그램들 내의 블록들의 조합들이 컴퓨터 판독가능 프로그램 명령들에 의해 구현될 수 있음을 이해할 것이다.
이들 컴퓨터 판독가능 프로그램 명령들은 머신을 생성하기 위해 범용 컴퓨터, 특수 목적 컴퓨터, 또는 다른 프로그래밍가능 데이터 프로세싱 장치의 프로세서에 제공될 수 있어서, 컴퓨터 또는 다른 프로그래밍가능 데이터 프로세싱 장치의 프로세서를 통해 실행되는 명령들은 흐름도 및/또는 블록 다이어그램 블록 또는 블록들에서 특정된 기능들/동작들을 구현하기 위한 수단을 생성한다. 특정한 방식으로 기능하도록 컴퓨터, 프로그래밍가능 데이터 프로세싱 장치, 및/또는 다른 디바이스들에게 지시할 수 있는 이들 컴퓨터 판독가능 프로그램 명령들은 또한 컴퓨터 판독가능 저장 매체에 저장될 수 있어서, 명령들이 저장된 컴퓨터 판독가능 저장 매체는 흐름도 및/또는 블록 다이어그램 블록 또는 블록들에서 특정된 기능/동작의 양상들을 구현하는 명령들을 포함한 제조 물품을 포함한다.
컴퓨터 판독가능 프로그램 명령들은 또한, 일련의 동작 단계들로 하여금, 컴퓨터로 구현되는 프로세스를 생성하도록 컴퓨터, 다른 프로그래밍가능 장치 또는 다른 디바이스 상에서 수행되게 하기 위해 컴퓨터, 다른 프로그래밍가능 데이터 프로세싱 장치, 또는 다른 디바이스 상에 로딩될 수 있어서, 컴퓨터, 다른 프로그래밍가능 장치, 또는 다른 디바이스 상에서 실행되는 명령들은 흐름도 및/또는 블록 다이어그램 블록 또는 블록들에서 특정된 기능들/동작들을 구현한다.
도면들 내의 흐름도 및 블록 다이어그램들은 본 발명의 다양한 실시예들에 따른, 시스템들, 방법들, 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능, 및 동작을 예시한다. 이와 관련하여, 흐름도 또는 블록 다이어그램들 내의 각각의 블록은, 특정된 로직 기능(들)을 구현하기 위한 하나 이상의 실행가능한 명령들을 포함하는 모듈, 세그먼트, 또는 명령들의 일부를 표현할 수 있다. 일부 대안적인 구현들에서, 블록에서 언급된 기능들은 도면들에서 언급된 순서를 벗어나 발생될 수 있다. 예컨대, 수반된 기능에 의존하여, 연속적으로 도시된 2개의 블록들은 사실상, 실질적으로 동시에 실행될 수 있거나 또는 블록들은 때때로 역순으로 실행될 수 있다. 블록 다이어그램들 및/또는 흐름도의 각각의 블록 및 블록 다이어그램들 및/또는 흐름도의 블록들의 조합들이 특정된 기능들 또는 동작들을 수행하거나 또는 특수 목적 하드웨어 및 컴퓨터 명령들의 조합들을 수행하는 특수 목적 하드웨어-기반 시스템들에 의해 구현될 수 있음을 또한 유의할 것이다.
전술한 것이 특정한 예들에 관한 것이지만, 다른 및 추가적인 예들이 본 개시내용의 기본적인 범위를 벗어나지 않으면서 고안될 수 있으며, 본 개시내용의 범위는 후속하는 청구항들에 의해 결정된다.

Claims (14)

  1. 데이터베이스 관리 시스템(DBMS)을 실행하도록 구성된 호스트 중앙 프로세싱 유닛(CPU); 및
    상기 호스트 CPU와 별개인 데이터베이스 가속기를 포함하며,
    상기 데이터베이스 가속기는 복수의 프로세싱 유닛(PU)들을 포함하고,
    상기 DBMS는,
    데이터베이스 상에서 실행될 질의를 수신하고;
    상기 질의에 대응하는 데이터베이스 테이블을 상기 데이터베이스로부터 리트리브(retrieve)하고;
    상기 데이터베이스 테이블을 데이터 블록으로 리포맷팅하며 - 상기 데이터 블록은, 상기 복수의 PU들 중 하나에 각각 대응하는 복수의 PU 데이터 블록들을 포함함 -; 그리고
    상기 데이터 블록을 상기 데이터베이스 가속기에 송신하도록
    구성되고,
    상기 데이터베이스 가속기는,
    상기 복수의 PU들을 사용하여 상기 복수의 PU 데이터 블록들을 병렬로 프로세싱하고; 그리고
    상기 복수의 PU들로부터의 결과들을 상기 DBMS에 포워딩하도록
    구성되는, 질의 프로세싱 시스템.
  2. 제1항에 있어서,
    상기 복수의 PU 데이터 블록들 각각은 상기 복수의 PU 데이터 블록들 각각 내의 데이터의 양을 표시하는 헤더를 포함하는, 질의 프로세싱 시스템.
  3. 제1항에 있어서,
    상기 데이터베이스 가속기는, 상기 복수의 PU들 각각으로부터 개별 결과들을 수신하고, 상기 DBMS에 포워딩되는 결합된 결과로 상기 개별 결과들을 결합시키도록 구성된 결합기를 포함하는, 질의 프로세싱 시스템.
  4. 제1항에 있어서,
    상기 질의는 구조화 질의 언어(SQL) 질의를 포함하는, 질의 프로세싱 시스템.
  5. 제1항에 있어서,
    상기 데이터베이스 가속기는 하나 이상의 프로그래밍가능 집적 회로들 상에 호스팅되는, 질의 프로세싱 시스템.
  6. 제5항에 있어서,
    상기 DBMS는 상기 DBMS와 상기 하나 이상의 프로그래밍가능 집적 회로들 사이의 인터페이스로서 기능하는 프로그래밍가능 집적 회로 프레임워크를 포함하며,
    상기 프로그래밍가능 집적 회로 프레임워크는 상기 하나 이상의 프로그래밍가능 집적 회로들에 의해 해석될 수 있는 커맨드들로, 상기 DBMS에 의해 이슈된 명령들을 변환하도록 구성되는, 질의 프로세싱 시스템.
  7. 제5항에 있어서,
    상기 하나 이상의 프로그래밍가능 집적 회로들은 필드-프로그래밍가능 게이트 어레이(FPGA)를 형성하는, 질의 프로세싱 시스템.
  8. 제1항에 있어서,
    상기 데이터베이스 가속기는 하나 이상의 주문형 집적 회로(ASIC)들 상에 호스팅되는, 질의 프로세싱 시스템.
  9. 데이터베이스 가속기로서,
    하나 이상의 집적 회로들 상에서 구현되는 복수의 PU들 ― 상기 데이터베이스 가속기는 별개의 호스트 CPU 상에서 실행되는 DBMS로부터 데이터 블록을 수신하도록 구성되고, 상기 데이터 블록은 데이터베이스로부터 리트리브된 데이터베이스 테이블에 기반하고, 상기 복수의 PU들 중 하나에 각각 대응하는 복수의 PU 데이터 블록들을 포함하며, 상기 복수의 PU들은 상기 복수의 PU 데이터 블록들을 병렬로 프로세싱하도록 구성됨 ―; 및
    상기 복수의 PU들 각각으로부터 개별 결과들을 수신하고, 상기 DBMS에 포워딩되는 결합된 결과로 상기 개별 결과들을 결합시키도록 구성된 결합기를 포함하는, 데이터 베이스 가속기.
  10. 제9항에 있어서,
    상기 복수의 PU 데이터 블록들 각각은 상기 복수의 PU 데이터 블록들 각각 내의 데이터의 양을 표시하는 헤더를 포함하는, 데이터베이스 가속기.
  11. 제9항에 있어서,
    상기 데이터베이스 테이블은 SQL 질의를 사용하여 상기 데이터베이스로부터 리트리브되는, 데이터베이스 가속기.
  12. 제9항에 있어서,
    상기 하나 이상의 집적 회로들은 하나 이상의 프로그래밍가능 집적 회로들을 포함하는, 데이터베이스 가속기.
  13. 제12항에 있어서,
    상기 데이터베이스 가속기는 상기 DBMS와 상기 하나 이상의 프로그래밍가능 집적 회로들 사이의 인터페이스로서 기능하는, 상기 DBMS 내의 프로그래밍가능 집적 회로 프레임워크와 통신하도록 구성되며,
    상기 프로그래밍가능 집적 회로 프레임워크는 상기 하나 이상의 프로그래밍가능 집적 회로들에 의해 해석될 수 있는 커맨드들로, 상기 DBMS에 의해 이슈된 명령들을 변환하도록 구성되는, 데이터베이스 가속기.
  14. 제12항에 있어서,
    상기 하나 이상의 프로그래밍가능 집적 회로들은 필드-프로그래밍가능 게이트 어레이(FPGA)를 형성하는, 데이터베이스 가속기.
KR1020207002082A 2017-06-23 2018-06-14 데이터베이스 가속기로의 병렬 컴퓨트 오프로드 KR102610636B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/632,082 US20180373760A1 (en) 2017-06-23 2017-06-23 Parallel compute offload to database accelerator
US15/632,082 2017-06-23
PCT/US2018/037627 WO2018236672A1 (en) 2017-06-23 2018-06-14 CALCULATION DELIVERY PARALLEL TO DATABASE ACCELERATOR

Publications (2)

Publication Number Publication Date
KR20200019734A true KR20200019734A (ko) 2020-02-24
KR102610636B1 KR102610636B1 (ko) 2023-12-05

Family

ID=62842251

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207002082A KR102610636B1 (ko) 2017-06-23 2018-06-14 데이터베이스 가속기로의 병렬 컴퓨트 오프로드

Country Status (6)

Country Link
US (1) US20180373760A1 (ko)
EP (1) EP3642736B1 (ko)
JP (1) JP7382233B2 (ko)
KR (1) KR102610636B1 (ko)
CN (1) CN110959156A (ko)
WO (1) WO2018236672A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111176725B (zh) * 2019-12-27 2022-05-06 北京市商汤科技开发有限公司 数据处理方法、装置、设备和存储介质
US11403102B2 (en) 2020-06-27 2022-08-02 Intel Corporation Technology to learn and offload common patterns of memory access and computation
CN113468220A (zh) * 2021-09-03 2021-10-01 苏州浪潮智能科技有限公司 一种数据查询方法、装置、设备及介质
KR20230037333A (ko) * 2021-09-09 2023-03-16 삼성전자주식회사 스토리지 장치 및 메모리 시스템
US11927634B2 (en) 2022-04-01 2024-03-12 Samsung Electronics Co., Ltd Systems and methods for database scan acceleration
CN116302178B (zh) * 2023-02-23 2023-10-20 合肥申威睿思信息科技有限公司 一种列存数据的加速处理方法和装置
CN116627892B (zh) * 2023-05-31 2024-05-07 中国人民解放军国防科技大学 一种数据近存储计算方法、装置和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005004243A (ja) * 2003-06-09 2005-01-06 Tkc Corp データベースバックアップ方法、およびその方法をコンピュータに実行させるプログラム、データベースバックアップシステム、データサーバ、管理サーバ
JP2015535999A (ja) * 2012-10-02 2015-12-17 オラクル・インターナショナル・コーポレイション テーブルスキャンを加速するためのハードウェア

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5553280A (en) * 1994-08-17 1996-09-03 The United States Of America As Represented By The Secretary Of The Navy Method for providing critical time reactive management of database transactions for systems process
JP2005129173A (ja) * 2003-10-24 2005-05-19 Matsushita Electric Ind Co Ltd ファイル管理方法
US9141670B2 (en) * 2007-08-27 2015-09-22 Teradata Us, Inc. Methods and systems for hardware acceleration of streamed database operations and queries based on multiple hardware accelerators
WO2012025915A1 (en) * 2010-07-21 2012-03-01 Sqream Technologies Ltd A system and method for the parallel execution of database queries over cpus and multi core processors
JP5500552B2 (ja) * 2010-10-15 2014-05-21 独立行政法人産業技術総合研究所 表データのデータ処理方法、データ処理システムおよびそのコンピュータプログラム
US20120259843A1 (en) * 2011-04-11 2012-10-11 Timothy Child Database acceleration using gpu and multicore cpu systems and methods
CN102253919A (zh) * 2011-05-25 2011-11-23 中国石油集团川庆钻探工程有限公司 基于gpu和cpu协同运算的并行数值模拟方法和系统
US10289632B1 (en) * 2013-03-15 2019-05-14 Teradata Us, Inc. Dynamic array type in a data store system
GB2516493A (en) * 2013-07-25 2015-01-28 Ibm Parallel tree based prediction
US9830354B2 (en) * 2013-08-07 2017-11-28 International Business Machines Corporation Accelerating multiple query processing operations
US9355038B2 (en) * 2014-09-11 2016-05-31 Qualcomm Incorporated Cache bank spreading for compression algorithms
JP2016095606A (ja) * 2014-11-13 2016-05-26 国立大学法人電気通信大学 データ処理装置およびデータ処理方法、並びにプログラム
US10474648B2 (en) * 2014-11-25 2019-11-12 Sap Se Migration of unified table metadata graph nodes
JP2016130929A (ja) 2015-01-14 2016-07-21 日本電気株式会社 集約装置、集約システム、集約方法、および、プログラム
EP3248115A1 (en) * 2015-01-25 2017-11-29 Iguazio Systems Ltd. Application-centric object storage
CN104731729B (zh) * 2015-03-23 2018-07-13 华为技术有限公司 一种基于异构系统的表连接优化方法、cpu和加速器
WO2016185542A1 (ja) * 2015-05-18 2016-11-24 株式会社日立製作所 計算機システム、アクセラレータ及びデータベースの処理方法
WO2017002157A1 (ja) * 2015-06-29 2017-01-05 株式会社日立製作所 計算機システム及び計算機システムの制御方法
US20170212942A1 (en) * 2016-01-22 2017-07-27 Solufy Information Technologies Inc. Database grid search methods and systems
US20170228422A1 (en) * 2016-02-10 2017-08-10 Futurewei Technologies, Inc. Flexible task scheduler for multiple parallel processing of database data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005004243A (ja) * 2003-06-09 2005-01-06 Tkc Corp データベースバックアップ方法、およびその方法をコンピュータに実行させるプログラム、データベースバックアップシステム、データサーバ、管理サーバ
JP2015535999A (ja) * 2012-10-02 2015-12-17 オラクル・インターナショナル・コーポレイション テーブルスキャンを加速するためのハードウェア

Also Published As

Publication number Publication date
JP7382233B2 (ja) 2023-11-16
KR102610636B1 (ko) 2023-12-05
JP2020524853A (ja) 2020-08-20
WO2018236672A1 (en) 2018-12-27
EP3642736B1 (en) 2024-01-10
US20180373760A1 (en) 2018-12-27
EP3642736A1 (en) 2020-04-29
CN110959156A (zh) 2020-04-03

Similar Documents

Publication Publication Date Title
KR102610636B1 (ko) 데이터베이스 가속기로의 병렬 컴퓨트 오프로드
US9582541B2 (en) Systems, methods, and computer program products to ingest, process, and output large data
TWI603211B (zh) Construction of inverted index system based on Lucene, data processing method and device
US9256633B2 (en) Partitioning data for parallel processing
US10242061B2 (en) Distributed execution of expressions in a query
US20170337229A1 (en) Spatial indexing for distributed storage using local indexes
JP2017188137A (ja) 異種データソース混在環境におけるフィールド間の関係性の自動的発見のための方法、プログラム、および、システム
US9600559B2 (en) Data processing for database aggregation operation
CA2795525A1 (en) Columnar storage representations of records
US10810174B2 (en) Database management system, database server, and database management method
JP6159908B6 (ja) 異種データソース混在環境におけるフィールド間の関係性の自動的発見のための方法、プログラム、および、システム
US20150149437A1 (en) Method and System for Optimizing Reduce-Side Join Operation in a Map-Reduce Framework
US10776401B2 (en) Efficient database query aggregation of variable length data
JPWO2017170459A6 (ja) 異種データソース混在環境におけるフィールド間の関係性の自動的発見のための方法、プログラム、および、システム
US20200089776A1 (en) Method for migrating data records from a source database to a target database
JP6642435B2 (ja) データ処理装置、データ処理方法、及び、プログラム
JP6316503B2 (ja) 計算機システム、アクセラレータ及びデータベースの処理方法
US20170139931A1 (en) Query processing for xml data using big data technology
US10997175B2 (en) Method for predicate evaluation in relational database systems
KR101772333B1 (ko) 이종 NoSQL 데이터베이스들간의 지능적 조인 전략 제공 방법 및 시스템
US9129001B2 (en) Character data compression for reducing storage requirements in a database system
CN113608724B (zh) 一种基于模型缓存实现的离线仓库实时交互方法与系统
US9705833B2 (en) Event driven dynamic multi-purpose internet mail extensions (MIME) parser
KR20170076541A (ko) 대용량 과학 데이터 즉시 분석 방법 및 장치
JP7508725B2 (ja) 分散データソースに存在するデータストリームの連続処理のためのコンピュータによる処理方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant