KR20180085633A - 질의 처리 장치 및 방법 - Google Patents

질의 처리 장치 및 방법 Download PDF

Info

Publication number
KR20180085633A
KR20180085633A KR1020170009426A KR20170009426A KR20180085633A KR 20180085633 A KR20180085633 A KR 20180085633A KR 1020170009426 A KR1020170009426 A KR 1020170009426A KR 20170009426 A KR20170009426 A KR 20170009426A KR 20180085633 A KR20180085633 A KR 20180085633A
Authority
KR
South Korea
Prior art keywords
partition
query
column set
column
horizontal
Prior art date
Legal status (The legal status 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 status listed.)
Ceased
Application number
KR1020170009426A
Other languages
English (en)
Inventor
정문영
이태휘
김성수
송혜원
원종호
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020170009426A priority Critical patent/KR20180085633A/ko
Priority to US15/800,762 priority patent/US20180203896A1/en
Publication of KR20180085633A publication Critical patent/KR20180085633A/ko
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F17/30386
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F17/30194

Landscapes

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

Abstract

질의 처리 방법 및 장치가 제공된다. 질의가 입력되면 데이터 테이블에 파티션이 있는 경우, 입력된 질의에 대응하는 파티션이 선택되고, 선택된 파티션에 적어도 하나의 파티션 컬럼셋이 있는 경우, 입력된 질의에 대응하는 적어도 하나의 파티션 컬럼셋이 선택되며, 선택된 파티션 컬럼셋에 대해 질의가 처리된다.

Description

질의 처리 장치 및 방법{Method and apparatus for processing query}
본 발명은 질의를 처리하는 방법 및 장치에 관한 것이다.
최근 빅데이터 처리가 중요하게 연구되면서 대규모의 데이터의 병렬 처리를 지원하기 위한 오픈 소스 프로젝트인 하둡(Hadoop)이 많이 연구되고 있다. 하둡은 대규모의 데이터를 분산 저장하고 관리하기 위한 플랫폼인 하둡 파일 시스템(Hadoop Distribute File System: HDFS)과 대규모의 데이터를 분산 병렬 처리하기 위한 프레임워크인 맵리듀스(MapReduce: MR)로 이루어지며, 맵리듀스를 이용한 많은 질의 처리 기법이 연구되고 있다.
SQL(Structured Query Language)-on-Hadoop은, 하둡 분산 파일 시스템(HDFS)에 저장된 데이터에 대한 SQL 질의 처리를 제공하는 시스템이다. 대부분의 SQL-on-Hadoop 시스템들은 기존 하둡에서 제공하는 맵리듀스 아키텍처를 사용하지 않고 새로운 분산처리 모델과 프레임워크를 기반으로 구현된다. 아파치 하이브(Hive), 아파치 타조(Tajo), 클라우데라의 임팔라(Impala), 페이스북의 프레스토(Presto) 등 수많은 SQL-on-Hadoop 시스템들이 있다.
 SQL-on-Hadoop 시스템은 여러 노드에 분산되어 있는 대용량 데이터에 대한 질의를 분산하여 처리할 수 있으나, 질의를 처리하는 노드에 데이터를 이동시키는 단계에서 많은 디스크 I/O(Input/Output) 및 네트워크 전송이 필요하므로 질의 처리 속도가 늦어지게 된다.  HDFS 기반의 분산된 데이터에 대한 느린 처리 속도를 향상시키기 위해서, 실체화 뷰(Materialized view), 질의 컬럼셋 (Query Column Sets), 데이터 파티션 등의 기술들이 활용되고 있다.
본 발명이 해결하고자 하는 과제는 질의 처리 속도를 보다 향상시킬 수 있는 방법 및 장치를 제공하는 것이다.
본 발명의 특징에 따른 질의 처리 방법은, 질의 처리 장치가, 질의를 처리하는 방법으로서, 질의가 입력되면 데이터 테이블에 파티션이 있는 경우, 상기 입력된 질의에 대응하는 파티션을 선택하는 단계; 상기 선택된 파티션에 적어도 하나의 파티션 컬럼셋이 있는 경우, 상기 입력된 질의에 대응하는 적어도 하나의 파티션 컬럼셋을 선택하는 단계; 및 상기 선택된 파티션 컬럼셋에 대해 상기 질의를 처리하는 단계를 포함한다.
상기 파티션 컬럼셋은 상기 데이터 테이블이 적어도 하나의 수평 파티션으로 분할되어 있는 경우, 상기 수평 파티션 각각에 대하여 상기 데이터 테이블을 구성하는 적어도 하나의 컬럼을 묶은 컬럼셋을 캐시 테이블로 저장한 데이터 구조일 수 있다.
상기 데이터 테이블의 파티션 각각에 대하여 적어도 하나의 파티션 컬럼셋이 선택적으로 형성되어 있으며, 상기 파티션별로 형성된 파티션 컬럼셋의 수와 파티션 컬럼셋을 형성하는 컬럼의 종류가 다를 수 있다.
상기 파티션 컬럼셋을 선택하는 단계는 상기 입력된 질의의 조건절을 분석하고, 상기 선택된 파티션에 대하여 형성된 적어도 하나의 파티션 컬럼셋이 형성되어 있는 경우, 상기 분석 결과를 토대로 상기 적어도 하나의 파티션 컬럼셋 중에서 하나의 파티션 컬럼셋을 선택할 수 있다.
한편, 상기 질의 처리 방법은, 상기 데이터 테이블에 파티션이 없는 경우, 상기 데이터 테이블에 대하여 상기 질의를 처리하는 단계; 및 상기 선택된 파티션에 파티션 컬럼셋이 없는 경우, 상기 선택된 파티션에 대하여 상기 질의를 처리하는 단계를 더 포함할 수 있다.
상기 질의 처리 장치는 분산 질의 처리 엔진일 수 있다.
본 발명의 다른 특징에 따른 구성 방법은, 질의 처리를 위한 컬럼셋을 구성하는 방법으로서, 질의의 워크로드를 분석하여 데이터 테이블을 복수의 수평 파티션으로 나누는 단계; 및 각 수평 파티션에 대하여 상기 질의의 워크로드의 분석 결과를 토대로, 상기 데이터 테이블을 구성하는 적어도 하나의 컬럼을 묶은 파티션 컬럼셋을 선택적으로 적어도 하나 구성하는 단계를 포함한다.
상기 수평 파티션별로 형성된 파티션 컬럼셋의 수가 다를 수 있다.
상기 수평 파티션별로 파티션 컬럼셋을 구성하는 컬럼의 종류가 다를 수 있다.
상기 구성하는 단계는, 상기 파티션 컬럼셋을 캐시 테이블로 저장하는 단계를 포함할 수 있다.
상기 구성하는 단계는, 각 수평 파티션에 대하여 복수의 파티션 컬럼셋들이 형성되어 있는 경우, 적어도 하나의 수평 파티션에 대하여 상기 복수의 파티션 컬럼셋들 중 적어도 2개의 파티션 컬럼셋을 하나로 통합하는 단계를 더 포함할 수 있다.
본 발명의 또 다른 특징에 따른 질의 처리 장치는, 질의를 입력받도록 구성되는 입출력부; 그리고 상기 입출력부와 연결되고, 질의 처리를 수행하는 프로세서를 포함하며, 상기 프로세서는, 상기 입출력부를 통해 질의가 입력되면 데이터 테이블의 수평 파티션들 중에서 상기 입력된 질의에 대응하는 수평 파티션을 선택하고, 상기 선택된 수평 파티션에 적어도 하나의 파티션 컬럼셋이 있는 경우, 상기 입력된 질의에 대응하는 적어도 하나의 파티션 컬럼셋을 선택하고, 상기 선택된 파티션 컬럼셋에 대해 상기 질의를 처리하도록 구성된다.
상기 파티션 컬럼셋은 상기 데이터 테이블이 적어도 하나의 수평 파티션으로 분할되어 있는 경우, 상기 수평 파티션 각각에 대하여 상기 데이터 테이블을 구성하는 적어도 하나의 컬럼을 묶은 컬럼셋을 캐시 테이블로 저장한 데이터 구조일 수 있다.
상기 데이터 테이블의 파티션 각각에 대하여 적어도 하나의 파티션 컬럼셋이 선택적으로 형성되어 있으며, 상기 파티션별로 형성된 파티션 컬럼셋의 수와 파티션 컬럼셋을 형성하는 컬럼의 종류가 다를 수 있다.
상기 프로세서는, 상기 입력된 질의의 조건절을 분석하고, 상기 선택된 파티션에 대하여 적어도 하나의 파티션 컬럼셋이 형성되어 있는 경우에, 상기 분석 결과를 토대로 상기 적어도 하나의 파티션 컬럼셋 중에서 하나의 파티션 컬럼셋을 선택하도록 구성될 수 있다.
상기 수평 파티션에 대응하는 데이터 블록과 상기 파티션 컬럼셋에 대응하는 데이터 블록이 분산 파일 시스템의 여러 노드에 분산 저장되어 있으며, 상기 질의 처리 장치는 상기 입력된 질의에 대응하는 수평 파티션의 파티션 컬럼셋에 대응하는 데이터 블록을 읽어와 질의를 처리할 수 있다.
본 발명의 실시 예에 따르면, 파티션과 질의 컬럼셋을 통합적으로 이용한 파티션 컬럼셋을 이용하여 질의를 처리함으로써, 질의 처리 속도를 향상시킬 수 있다. 또한, 분산 데이터의 테이블에 대해 수평 파티션을 구축하고, 각 수평 파티션마다 질의 워크로드를 분석하여 파티션 컬럼셋을 구축함으로서, 질의에서 처리하는 데이터를 미리 필터링하여 질의 처리 성능을 높일 수 있다.
특히, OLAP(OnLine Analytical Processing) 연산이 많은 분산 질의 처리 시스템에서, 질의에 대응하는 파티션 컬럼셋만을 읽고 이를 해당 노드로 전송하면 되므로, 질의 처리 속도를 높일 수 있다.
도 1은 본 발명의 실시 예에 따른 파티션 컬럼셋을 나타낸 예시도이다.
도 2는 본 발명의 실시 예에 따른 파티션 컬럼셋을 구성하는 과정의 흐름도이다.
도 3은 본 발명의 실시 예에 따른 질의 처리 방법의 흐름도이다.
도 4는 본 발명의 실시 예에 따른 질의 처리 과정을 나타낸 예시도이다.
도 5는 본 발명의 실시 예에 따른 질의 처리 장치의 구조도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하, 도면을 참조하여 본 발명의 실시 예에 따른 질의 처리 방법 및 장치에 대하여 설명한다.
본 발명의 실시 예에서는 데이터베이스 파티션(partition)과 질의 컬럼셋(column set)을 통합한 파티션 컬럼셋(partition column set)을 이용하여 질의를 처리한다.
데이터베이스의 파티셔닝(partitioning)이란 테이블을 파티션이라 부르는 작은 파트로 물리적으로 나누는 것이다. 수평 파티션은 테이블의 데이터 즉, 레코드를 특정 키 컬럼(Key Column)의 값을 기준으로 여러 개의 서브 테이블로 나누는 방법으로, 레코드를 나누는 기준에 따라 범위 파티션이나 해쉬(hash) 파티션 등의 방법들이 주로 사용된다. 수직 파티션은 테이블의 데이터를 여러 개의 서브 테이블로 나누는데, 각 서브 테이블이 서로 겹치지 않는, 서로소(disjoint sets)인 컬럼들을 가진 서브 테이블이 되도록 나누는 방법이다. 이때, 원래 테이블의 키 컬럼들은 모든 서브 테이블에 중복된다. 데이터베이스 파티션을 이용하면, 질의가 들어왔을 때 테이블 전체의 데이터를 처리하지 않고 질의에 필요한 데이터베이스 파티션만 이용하여 처리하면 되므로 질의 성능을 높일 수 있다.  특히, 분산된 데이터를 처리할 때는 질의 트리(AST(Abstract syntax tree) Tree 등)의 중간 과정에서 생성되는 데이터를 노드 사이에 전송하기 위한 비용이 매우 높으므로, 데이터베이스 파티션을 이용하면 필요 없는 데이터를 초기에 필터링 하여 처리속도를 향상시킬 수 있다.
질의 컬럼셋은, 질의 워크로드(workload)를 분석하여 질의의 WHERE, GROUP BY, HAVING 절 등에 자주 사용되는 컬럼들만을 물리적으로 실체화 한 것으로, 추후 질의가 들어왔을 때 질의 컬럼셋을 이용하여 질의 처리 속도를 높일 수 있다. 질의 컬럼셋은 SQL(Structured Query Language)-on-Hadoop 시스템과 같이 주로 OLAP(OnLine Analytical Processing) 연산이 많은 시스템에서 질의 처리 속도를 높이는 데 효과가 있다. 질의 컬럼셋은 원래 테이블의 모든 컬럼을 저장하지는 않는다는 점에서 수평 파티션과는 구별된다.
본 발명의 실시 예에서는 데이터베이스 파티션과 질의 컬럼셋을 통합하여 질의를 처리하며, 구체적으로, 수평파티션과 질의 컬럼셋을 통합한 파티션 컬럼셋 구조를 제공한다. 데이터베이스의 테이블(데이터 테이블이라고도 명명됨)을 수평 파티션으로 나누어 물리적으로 저장하고, 나누어진 수평 파티션에 대해서 컬럼셋을 생성하여 물리적으로 저장하는 데이터 구조를 제공한다. 여기서, 테이블의 수평 파티션에 대한 컬럼셋을 파티션 컬럼셋이라 명명한다.
도 1은 본 발명의 실시 예에 따른 파티션 컬럼셋을 나타낸 예시도이다.
첨부한 도 1에서와 같이, 데이터 테이블(100)(도 1의 (a))에 대하여 파티션 컬럼셋(121, 122, 131, 141, 142)을 형성한다.
데이터 테이블(100)을 기준(예를 들어, 범위나 해쉬값)에 따라 중복되지 않고 모든 데이터를 포함하도록 나눈 수평 파티션으로 나눈다. 예를 들어, 도 1에서와 같이, SHIPDATE의 값에 따라 데이터 테이블(100)을 세 개의 수평 파티션(120, 130, 140)으로 나눌 수 있다(도 1의 (b)). 즉, SHIPDATE의 값이 "1994-01-01" 보다 작은 데이터를 포함하는 수평 파티션1(120), SHIPDATE의 값이 "1994-01-01"보다 크거나 같고, "1997-01-01" 보다 작은 데이터를 포함하는 수평 파티션2(130), 그리고 SHIPDATE의 값이 "1997-01-01"보다 큰 데이터를 포함하는 수평 파티션3(140)으로 나눌 수 있다.
또한, 데이터 테이블(100)에 대하여 질의 컬럼셋(110, 111)을 구성할 수 있다.  질의 컬럼셋은 데이터 테이블에 대해서 자주 사용되는 컬럼셋을 캐시 테이블로 저장한 데이터 구조이다. 질의 컬럼셋은 데이터 테이블에서 질의에서 WHERE, HAVING, GROUPBY와 같은 절에서 자주 같이 사용되는 컬럼들을 묶어서 저장한 것으로, 질의 컬럼셋은 테이블에 따라 0개 이상 생성될 수 있다. 예를 들어, 데이터 테이블(100)에 대하여, {ORDERKEY, PARTKEY, LINENUMBER, SUPPKEY}에 대한 질의 컬럼셋(110)과, {ORDERKEY, TAX, QUANTITY, SHIPDATE}에 대한 컬럼셋(111)인 총 두 개의 컬럼셋을 구성할 수 있다(도 1의 (b)).
이와 같이, 데이터 테이블(100)에 대하여 구성될 수 있는 수평 파티션(120, 130, 140) 그리고 질의 컬럼셋(110, 111)의 개념을 토대로, 본 발명의 실시 예에서는 데이터 테이블에 대하여 파티션 컬럼셋을 구성한다. 파티션 컬럼셋은 데이터 테이블의 수평 파티션 각각에 대해서 자주 사용되는 질의 컬럼셋들을 캐시 테이블로 저장한 데이터이다. 예를 들어, 데이터 테이블(100)에 대하여 구성된 수평 파티션(120, 130, 140) 각각에 대하여 자주 같이 사용되는 컬럼들을 묶어서 파티션 컬럼셋(121, 122, 131, 141, 42)을 구성할 수 있다(도 1의 (d)). 이러한 파티션 컬럼셋 구성시, 파티션 컬럼셋의 수와 컬럼셋을 이루는 컬럼의 종류는 파티션에 따라 다를 수 있다.
이와 같이, 파티션 컬럼셋을 구성하면, 전체 데이터 테이블에서 질의에 따라 많은 불필요한 데이터를 미리 필터링하여 처리할 수 있으므로 질의 처리속도를 높일 수 있다.
도 2는 본 발명의 실시 예에 따른 파티션 컬럼셋을 구성하는 과정의 흐름도이다.
여기서는 분산 질의 처리 엔진에서 파티션 컬럼셋을 구성하는 것을 예로 들어 설명하나, 본 발명은 이에 한정되는 것은 아니다.
분산 질의 처리 엔진에서는 질의 처리에 따른 질의 워크로드를 저장해 놓는다. 파티션 컬럼셋을 구성하기 위하여, 첨부한 도 2에서와 같이, 우선 질의 워크로드를 분석하여(S100) 후보 수평 파티션을 선택한다(S110). 질의 워크로드 분석 결과를 토대로 어떠한 기준에 따라 수평 파티션을 나눌지를 결정하여 데이터 테이블에 대하여 수평 파티션을 구성하고, 구성된 수평 파티션 중에서 적어도 하나를 후보 수평 파티션으로 선택할 수 있다. 또는 데이터 테이블에 대하여 이미 수평 파티션들이 구성되어 있는 경우, 질의 워크로드 분석 결과를 토대로 이미 구성된 수평 파티션 중에서 적어도 하나를 후보 수평 파티션으로 선택할 수 있다.
이후, 선택된 적어도 하나의 후보 수평 파티션 각각에 대하여, 후보 파티션 컬럼셋을 구성한다(S120). 후보 수평 파티션 각각에 대하여 질의 워크로드 분석 결과를 토대로 자주 사용되는 컬럼들을 묶어서 후보 파티션 컬럼셋을 구성한다. 예를 들어, 과거에 자주 사용된 컬럼셋들이 이후에도 사용될 거라는 가정하에, 해당 컬럼셋에 대응하는 컬럼들을 묶어서 후보 파티션 컬럼셋을 구성할 수 있다.
이와 같이 생성된 후보 파티션 컬럼셋들은 질의 워크로드에 너무 잘 맞아서, 특정 질의를 실행할 때는 빠르게 처리하지만, 전체 질의 성능은 오히려 나빠질 수 있다. 몇 개의 후보 파티션 컬럼셋 후보를 통합하면 특정 질의 처리는 덜 빠르게 수행될 수 있지만, 전체 질의 성능을 높일 수 있다. 따라서, 전체 질의 성능을 높이기 위해, 몇 개의 후보 파티션 컬럼셋 후보를 통합한다(S130). 이러한 통합 처리를 통하여 최종적으로 파티션 컬럼셋을 구성한다(S140). 한편, 단계(S130)는 선택적으로 수행될 수 있다.
한편, 본 발명의 실시 예에 따른 파티션 컬럼셋은 수평 파티션에 대하여 0개 이상 형성될 수 있다. 즉, 임의 수평 파티션에 대하여 적어도 하나의 파티션 컬럼셋이 형성될 수 있으며, 다른 수평 파티션에 대해서는 파티션 컬럼셋이 형성되지 않을 수 있다. 이는 수평 파티션 각각에 대하여 파티션 컬럼셋이 적어도 하나 선택적으로 형성될 수 있음을 나타낼 수 있다.
다음에는 위에 기술된 바와 같이 구성된 파티션 컬럼셋을 이용하여 질의를 처리하는 방법에 대하여 설명한다.
도 3은 본 발명의 실시 예에 따른 질의 처리 방법의 흐름도이다.
질의 처리 장치는, 단말로부터 질의가 입력되면(S300), 먼저 질의에 해당되는 데이터 테이블들에 파티션이 있는지를 판단한다(S310). 질의에 해당하는 데이터 테이블에 파티션(수평 파티션 등)이 있는 경우, 질의를 분석하여 필요한 파티션을 선택한다(S320). 예를 들어, 질의의 WHERE, GROUPBY, HAVING 등의 조건절을 분석하여 복수의 파티션 중에서 질의에 필요한 데이터들이 있는 파티션을 선택한다.
이후, 선택된 파티션에 대해서 컬럼셋(예: 파티션 컬럼셋)이 있는지를 판단한다(S330). 선택된 파티션에 컬럼셋 예를 들어, 파티션 컬럼셋이 있는 경우, 질의를 분석하여 필요한 파티션 컬럼셋을 선택한다(S340). 즉, 질의의 WHRE, GROUPBY, HAVING, SELECT 등의 절을 분석하여 필요한 파티션 컬럼셋을 선택한다. 이와 같이, 파티션이 선택되고 해당 파티션에 대하여 파티션 컬럼섹이 선택된 다음에, 질의 처리 장치는 선택된 파티션 컬럼셋에 대해 질의를 처리하고(S350), 그 결과를 반환한다(S380).
한편, 선택된 파티션에 파티션 컬럼셋이 없는 경우, 질의 처리 장치는 선택된 파티션에 대해 질의를 처리하고(S360), 그 결과를 반환한다(S380).
한편, 위의 단계(S310)에서, 데이터 테이블들에 파티션이 없는 경우, 질의 처리 장치는 데이터 테이블에 대해 질의를 처리하고(S390), 그 결과를 반환한다(S380).
하둡과 같은 분산 파일 시스템에서는 사용자가 지정한 범위 등에 의해 원래 테이블이 논리적 파티션으로 나뉘어지고, 논리적 파티션은 여러 노드에 물리적으로 중복 분산되어 저장된다. 질의가 들어오면 질의 처리에 필요한 데이터가 들어 있는 파티션에 대해서만 스캔이나 조인과 같은 연산을 수행하면 된다. 따라서, 데이터를 처리하는 노드로 필요한 데이터 파티션만 이동시키면 되므로 불필요한 디스크 I/O나 네트워크 전송을 줄일 수 있다.
이러한 본 발명의 실시 예에 따른 질의 처리 방법을 토대로, 파티션 컬럼셋을 분산 파일 시스템에 적용하여 질의를 처리하는 과정을 살펴보면 다음과 같다.
도 4는 본 발명의 실시 예에 따른 질의 처리 과정을 나타낸 예시도이다.
여기서는 분산 파일 시스템의 여러 노드에 수평 파티션과 파티션 컬럼셋이 분산 저장되어 있는 것으로 가정한다.
데이터 테이블(410)을 기준(범위 혹은 해시값, 여기서는 예를 들어, SHIPDATE)에 따라 논리적인 수평 파티션으로 나누고, 수평 파티션(411, 412, 413)들은 시스템의 설정에 따라 정해진 크기의 데이터 블록(431, 433, 435)으로 나뉘어 여러 데이터 노드(N1~N4)에 분산 저장된다. 여기서 데이터 노드는 하둡의 데이터 노드를 지칭한다. 각 수평 파티션에 대하여 파티션 컬럼셋(421~423)이 구성되고, 파티션 컬럼셋(421~423)도 정해진 크기의 데이터 블록(432, 434, 436)으로 나뉘어져 분산 저장된다.
이와 같이, 데이터 테이블의 수평 파티션들과, 수평 파티션 각각에 해당하는 파티션 컬럼셋에 대응하는 데이터 블록들이 데이터 노드(N1~N4)에 분산 저장되어 있는 상태에서, 질의(401)가 들어오면, 질의에 따라 수평 파티션이 선택된다. 예를 들어, 질의(401)의 WHERE 절의 SHIPDATE(1993-09-02) 값에 따라 파티션들 중에서 수평 파티션(411)이 선택되고, 선택된 수평 파티션(411)에 파티션 컬럼셋(421)이 존재하고, 파티션 컬럼셋(421)이 질의에 필요한 컬럼을 모두 포함하므로 파티션 컬럼셋(421)에 대해서 질의를 처리한다.
이때, 질의를 처리하는 데이터 노드(N1)에서는 질의를 처리하기 위한 데이터 블록(432)을 읽고 가져온다. 따라서, 전체 데이터 테이블을 읽고 이를 해당 노드로 전송하거나 해당 수평 파티션을 읽고 해당 노드로 전송하는 비용에 비하여, 본 발명의 실시 예에서는 파티션 컬럼셋만을 읽고 이를 해당 노드로 전송하면 되므로, 질의 처리 속도를 높일 수 있다. 다시 말하면, 데이터를 읽는 I/O 비용과 질의를 처리하는 노드에 데이터를 전송하는 비용을 모두 절약할 수 있으므로, 질의 처리 속도를 향상시킬 수 있다. 이와 같이 파티션 컬럼셋 구조를 사용하면 질의에서 필요로 하지 않는 데이터는 초기 단계에서 필터링되므로써, 불필요한 디스크 I/O나 네트워크 전송을 줄일 수 있다.
도 5는 본 발명의 실시 예에 따른 질의 처리 장치의 구조도이다.
첨부한 도 5에 도시되어 있듯이, 본 발명의 실시 예에 따른 질의 처리 장치(1)는, 프로세서(10), 메모리(20) 및 입출력부(30)를 포함한다. 프로세서(10)는 위의 도 1 내지 도 4를 토대로 설명한 방법들을 구현하도록 구성될 수 있다.
메모리(20)는 프로세서(10)와 연결되고 프로세서(10)의 동작과 관련한 다양한 정보를 저장한다. 메모리(20)는 프로세서(10)에서 수행하기 위한 동작을 위한 명령어(instructions)를 저장하고 있거나 저장 장치(도시하지 않음)로부터 명령어를 로드하여 일시 저장할 수 있다.
프로세서(10)는 메모리(20)에 저장되어 있거나 로드된 명령어를 실행할 수 있다. 프로세서(10)와 메모리(20)는 버스(도시하지 않음)를 통해 서로 연결되어 있으며, 버스에는 입출력 인터페이스(도시하지 않음)도 연결되어 있을 수 있다.
입출력부(30)는 프로세서(10)의 처리 결과를 출력하거나 질의를 입력받아 프로세서(10)로 제공하도록 구성된다.
본 발명의 실시 예는 이상에서 설명한 장치 및/또는 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하기 위한 프로그램, 그 프로그램이 기록된 기록 매체 등을 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시예의 기재로부터 본 발명이 속하는 기술분야의 전문가라면 쉽게 구현할 수 있는 것이다.
이상에서 본 발명의 실시 예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (16)

  1. 질의 처리 장치가, 질의를 처리하는 방법으로서,
    질의가 입력되면 데이터 테이블에 파티션이 있는 경우, 상기 입력된 질의에 대응하는 파티션을 선택하는 단계;
    상기 선택된 파티션에 적어도 하나의 파티션 컬럼셋이 있는 경우, 상기 입력된 질의에 대응하는 적어도 하나의 파티션 컬럼셋을 선택하는 단계; 및
    상기 선택된 파티션 컬럼셋에 대해 상기 질의를 처리하는 단계
    를 포함하는, 질의 처리 방법.
  2. 제1항에 있어서,
    상기 파티션 컬럼셋은 상기 데이터 테이블이 적어도 하나의 수평 파티션으로 분할되어 있는 경우, 상기 수평 파티션 각각에 대하여 상기 데이터 테이블을 구성하는 적어도 하나의 컬럼을 묶은 컬럼셋을 캐시 테이블로 저장한 데이터 구조인, 질의 처리 방법.
  3. 제1항에 있어서,
    상기 데이터 테이블의 파티션 각각에 대하여 적어도 하나의 파티션 컬럼셋이 선택적으로 형성되어 있으며, 상기 파티션별로 형성된 파티션 컬럼셋의 수와 파티션 컬럼셋을 형성하는 컬럼의 종류가 다른, 질의 처리 방법.
  4. 제3항에 있어서,
    상기 파티션 컬럼셋을 선택하는 단계는 상기 입력된 질의의 조건절을 분석하고, 상기 선택된 파티션에 대하여 형성된 적어도 하나의 파티션 컬럼셋이 형성되어 있는 경우, 상기 분석 결과를 토대로 상기 적어도 하나의 파티션 컬럼셋 중에서 하나의 파티션 컬럼셋을 선택하는, 질의 처리 방법.
  5. 제1항에 있어서,
    상기 데이터 테이블에 파티션이 없는 경우, 상기 데이터 테이블에 대하여 상기 질의를 처리하는 단계; 및
    상기 선택된 파티션에 파티션 컬럼셋이 없는 경우, 상기 선택된 파티션에 대하여 상기 질의를 처리하는 단계
    를 더 포함하는, 질의 처리 방법.
  6. 제1항에 있어서,
    상기 질의 처리 장치는 분산 질의 처리 엔진인, 질의 처리 방법.
  7. 질의 처리를 위한 컬럼셋을 구성하는 방법으로서,
    질의의 워크로드를 분석하여 데이터 테이블을 복수의 수평 파티션으로 나누는 단계; 및
    각 수평 파티션에 대하여 상기 질의의 워크로드의 분석 결과를 토대로, 상기 데이터 테이블을 구성하는 적어도 하나의 컬럼을 묶은 파티션 컬럼셋을 선택적으로 적어도 하나 구성하는 단계
    를 포함하는, 구성 방법.
  8. 제7항에 있어서,
    상기 수평 파티션별로 형성된 파티션 컬럼셋의 수가 다른, 구성 방법.
  9. 제7항에 있어서,
    상기 수평 파티션별로 파티션 컬럼셋을 구성하는 컬럼의 종류가 다른, 구성 방법.
  10. 제7항에 있어서,
    상기 구성하는 단계는 상기 파티션 컬럼셋을 캐시 테이블로 저장하는 단계를 포함하는, 구성 방법.
  11. 제7항에 있어서,
    상기 구성하는 단계는
    각 수평 파티션에 대하여 복수의 파티션 컬럼셋들이 형성되어 있는 경우, 적어도 하나의 수평 파티션에 대하여 상기 복수의 파티션 컬럼셋들 중 적어도 2개의 파티션 컬럼셋을 하나로 통합하는 단계
    를 더 포함하는, 구성 방법.
  12. 질의를 입력받도록 구성되는 입출력부; 그리고
    상기 입출력부와 연결되고, 질의 처리를 수행하는 프로세서를 포함하며,
    상기 프로세서는,
    상기 입출력부를 통해 질의가 입력되면 데이터 테이블의 수평 파티션들 중에서 상기 입력된 질의에 대응하는 수평 파티션을 선택하고, 상기 선택된 수평 파티션에 적어도 하나의 파티션 컬럼셋이 있는 경우, 상기 입력된 질의에 대응하는 적어도 하나의 파티션 컬럼셋을 선택하고, 상기 선택된 파티션 컬럼셋에 대해 상기 질의를 처리하도록 구성되는, 질의 처리 장치.
  13. 제12항에 있어서,
    상기 파티션 컬럼셋은 상기 데이터 테이블이 적어도 하나의 수평 파티션으로 분할되어 있는 경우, 상기 수평 파티션 각각에 대하여 상기 데이터 테이블을 구성하는 적어도 하나의 컬럼을 묶은 컬럼셋을 캐시 테이블로 저장한 데이터 구조인, 질의 처리 장치.
  14. 제12항에 있어서,
    상기 데이터 테이블의 파티션 각각에 대하여 적어도 하나의 파티션 컬럼셋이 선택적으로 형성되어 있으며, 상기 파티션별로 형성된 파티션 컬럼셋의 수와 파티션 컬럼셋을 형성하는 컬럼의 종류가 다른, 질의 처리 장치.
  15. 제14항에 있어서,
    상기 프로세서는, 상기 입력된 질의의 조건절을 분석하고, 상기 선택된 파티션에 대하여 적어도 하나의 파티션 컬럼셋이 형성되어 있는 경우에, 상기 분석 결과를 토대로 상기 적어도 하나의 파티션 컬럼셋 중에서 하나의 파티션 컬럼셋을 선택하도록 구성되는, 질의 처리 장치.
  16. 제12항에 있어서,
    상기 수평 파티션에 대응하는 데이터 블록과 상기 파티션 컬럼셋에 대응하는 데이터 블록이 분산 파일 시스템의 여러 노드에 분산 저장되어 있으며,
    상기 질의 처리 장치는 상기 입력된 질의에 대응하는 수평 파티션의 파티션 컬럼셋에 대응하는 데이터 블록을 읽어와 질의를 처리하는, 질의 처리 장치.
KR1020170009426A 2017-01-19 2017-01-19 질의 처리 장치 및 방법 Ceased KR20180085633A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020170009426A KR20180085633A (ko) 2017-01-19 2017-01-19 질의 처리 장치 및 방법
US15/800,762 US20180203896A1 (en) 2017-01-19 2017-11-01 Method and apparatus for processing query

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170009426A KR20180085633A (ko) 2017-01-19 2017-01-19 질의 처리 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20180085633A true KR20180085633A (ko) 2018-07-27

Family

ID=62840884

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170009426A Ceased KR20180085633A (ko) 2017-01-19 2017-01-19 질의 처리 장치 및 방법

Country Status (2)

Country Link
US (1) US20180203896A1 (ko)
KR (1) KR20180085633A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102774660B1 (ko) * 2023-11-29 2025-03-05 주식회사 리얼타임테크 점진적 질의 처리를 수행하는 방법 및 그 시스템

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111538713B (zh) * 2020-04-02 2023-10-17 咪咕文化科技有限公司 面向Hive的多模式数据处理方法、装置及电子设备
CN112347097B (zh) * 2020-09-23 2022-07-29 中国科学院信息工程研究所 支持多版本Hive表分区的数据加载、查询方法及电子装置
US11983182B2 (en) * 2020-10-27 2024-05-14 Dell Products L.P. System and method to enable a data analytics in a smart data accelerator interface device
CN119166679A (zh) * 2024-09-06 2024-12-20 北京奥星贝斯科技有限公司 应用于分区分裂过程中的数据查询方法及装置、电子设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8838598B2 (en) * 2007-11-30 2014-09-16 International Business Machines Corporation System and computer program product for automated design of range partitioned tables for relational databases

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102774660B1 (ko) * 2023-11-29 2025-03-05 주식회사 리얼타임테크 점진적 질의 처리를 수행하는 방법 및 그 시스템
WO2025116066A1 (ko) * 2023-11-29 2025-06-05 주식회사 리얼타임테크 점진적 질의 처리를 수행하는 방법 및 그 시스템

Also Published As

Publication number Publication date
US20180203896A1 (en) 2018-07-19

Similar Documents

Publication Publication Date Title
US10915528B2 (en) Pluggable storage system for parallel query engines
US10963428B2 (en) Multi-range and runtime pruning
US11429609B2 (en) Geo-scale analytics with bandwidth and regulatory constraints
US11226963B2 (en) Method and system for executing queries on indexed views
US11030196B2 (en) Method and apparatus for processing join query
EP2743845B1 (en) Graph traversal operator inside a column store
US9195701B2 (en) System and method for flexible distributed massively parallel processing (MPP) database
WO2019109732A1 (zh) 一种基因变异数据分布式存储方法及架构
US11068504B2 (en) Relational database storage system and method for supporting fast query processing with low data redundancy, and method for query processing based on the relational database storage method
KR20180085633A (ko) 질의 처리 장치 및 방법
JP6479186B2 (ja) 計算機システム及びデータベース管理方法
GB2507094A (en) Selecting and loading a subset of data from a database backup
US20150120758A1 (en) Distributed processing of data records
US11934927B2 (en) Handling system-characteristics drift in machine learning applications
KR101955376B1 (ko) 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치
Awada et al. Cost Estimation Across Heterogeneous SQL-Based Big Data Infrastructures in Teradata IntelliSphere.
CN106682047A (zh) 一种数据导入方法以及相关装置
CN106716400A (zh) 一种数据表的分区管理方法及装置
KR101772333B1 (ko) 이종 NoSQL 데이터베이스들간의 지능적 조인 전략 제공 방법 및 시스템
Khafagy Indexed map-reduce join algorithm
Qu et al. Distributed snapshot maintenance in wide-column NoSQL databases using partitioned incremental ETL pipelines
Singh NoSQL: A new horizon in big data
Munir et al. ATUN-HL: Auto tuning of hybrid layouts using workload and data characteristics
Kaplanis et al. HB+ tree: use hadoop and HBase even your data isn't that big
KR20140098529A (ko) 데이터에 대한 접근 패턴이 서로 상이한 olap 응용 및 oltp 응용을 동시에 효과적으로 지원하는 장치 및 방법

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20170119

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20211006

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20170119

Comment text: Patent Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20230418

Patent event code: PE09021S01D

E601 Decision to refuse application
PE0601 Decision on rejection of patent

Patent event date: 20230701

Comment text: Decision to Refuse Application

Patent event code: PE06012S01D

Patent event date: 20230418

Comment text: Notification of reason for refusal

Patent event code: PE06011S01I