KR20170109119A - 분산 질의 엔진에서의 질의 최적화 방법 및 장치 - Google Patents
분산 질의 엔진에서의 질의 최적화 방법 및 장치 Download PDFInfo
- Publication number
- KR20170109119A KR20170109119A KR1020160032122A KR20160032122A KR20170109119A KR 20170109119 A KR20170109119 A KR 20170109119A KR 1020160032122 A KR1020160032122 A KR 1020160032122A KR 20160032122 A KR20160032122 A KR 20160032122A KR 20170109119 A KR20170109119 A KR 20170109119A
- Authority
- KR
- South Korea
- Prior art keywords
- query
- data
- plan
- operations
- join
- Prior art date
Links
Images
Classifications
-
- 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/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
- G06F16/24545—Selectivity estimation or determination
-
- 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
-
- G06F17/30442—
-
- 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/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- 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/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G06F17/30463—
-
- G06F17/30545—
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Operations Research (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명의 실시 예들은, 분산 질의 엔진에서 질의를 최적화하는 방법 및 장치에 관한 것으로, 본 발명의 일 실시 예에 따른 질의 최적화 방법은, 질의를 기반으로 질의 계획을 수립하는 단계; 상기 수립된 질의 계획을 기반으로, 하위 연산의 결과 데이터 중 상위 연산의 결과 데이터에 포함될 데이터들을, 상기 하위 연산과 상기 상위 연산의 사이에 존재하는 중간 연산들에 이용되는 제 1 데이터와 상기 중간 연산들에 이용되지 않는 제 2 데이터로 분류하는 단계; 및 상기 제 2 데이터가 상기 중간 연산들을 위한 입력 값이 되지 않도록 상기 질의 계획을 수정하는 단계를 포함한다. 본 발명의 실시 예들에 따르면, 질의 처리 과정에서 재분배되는 데이터의 양을 줄일 수 있다.
Description
본 발명의 실시 예들은, 분산 질의 엔진에서 질의를 최적화하는 방법 및 장치에 관한 것이다.
대규모 데이터 분석을 통하여 얻어진 가치 있는 통찰을 적용하여 비즈니스를 개선하는 과정은 오늘날의 산업계에서 중요한 과업이 되었다. 대규모 데이터 분석을 위하여는 다양한 데이터셋(dataset)의 처리가 수반된다. 이러한 대규모 데이터를 합당한 수준의 시간 내에 처리하기 위하여, 맵리듀스(MapReduce), 하둡(Hadoop) 및 스파크(Spark) 등의 다양한 분산 처리 프레임워크들이 등장하였다. 이러한 분산 처리 프레임워크는 대규모 데이터 분석의 핵심 기반 요소로 자리잡았으나, 데이터 분석가들은 익숙하지 않은 프로그래밍에 대한 부담을 안고 있다. 이러한 부담을 덜기 위해 데이터베이스 분야의 표준 언어인 SQL 또는 이와 유사한 선언형 질의 언어(declarative query language)를 지원하는 분산 질의 엔진들이 출현하였다. 분산 질의 엔진의 예로, 하이브(Hive), 임팔라(Impala), 프레스토(Presto), 드릴(Drill), 타조(Tajo) 및 스파크SQL(SparkSQL) 등이 있다.
분산 질의 엔진에서는 클러스터를 구성하는 노드들을 이용해 데이터를 나누어 처리하는데, 질의에 따라 특정 노드에서 산출된 중간 결과가 다른 노드들에게 재분배되어야 할 필요가 있다. 예를 들어, 여러 데이터셋 중에서 특정 필드 값이 같은 레코드들을 연결하는 조인(join) 연산을 처리하려면, 해당 특정 필드 값을 기준으로 중간 결과를 재분배해야 한다. 정렬(sort) 연산의 경우에도 정렬 대상 필드 값의 범위에 따라 중간 결과를 재분배해야 한다.
만약, 최종 질의 결과의 대상이 되는 데이터의 필드가 많거나 필드의 크기가 크다면, 해당 필드들이 중간 결과에 이른 단계부터 포함되어 중간 결과의 크기가 커지고, 이에 따라 중간 결과 재분배에 드는 디스크 및 네트워크 입출력 비용이 증가하여 성능이 저하되는 문제점이 있다.
본 발명의 실시 예들은, 분산 질의 엔진의 질의 처리 과정에서 불필요한 데이터 재분배가 발생하지 않도록 하는 방안을 제공한다.
본 발명의 일 실시 예에 따른 질의 최적화 방법은, 질의를 기반으로 질의 계획을 수립하는 단계; 상기 수립된 질의 계획을 기반으로, 하위 연산의 결과 데이터 중 상위 연산의 결과 데이터에 포함될 데이터들을, 상기 하위 연산과 상기 상위 연산의 사이에 존재하는 중간 연산들에 이용되는 제 1 데이터와 상기 중간 연산들에 이용되지 않는 제 2 데이터로 분류하는 단계; 및 상기 제 2 데이터가 상기 중간 연산들을 위한 입력 값이 되지 않도록 상기 질의 계획을 수정하는 단계를 포함한다.
일 실시 예에서, 상기 질의 계획을 수정하는 단계는, 상기 제 2 데이터의 전송 비용이 임계 값 이상인 경우 상기 질의 계획을 수정하는 단계를 포함할 수 있다.
일 실시 예에서, 상기 하위 연산은, 상기 질의 계획 상에 존재하는 연산들 중 최하위 연산일 수 있다.
일 실시 예에서, 상기 상위 연산은, 상기 질의 계획 상에 존재하는 연산들 중 최상위 연산일 수 있다.
일 실시 예에서, 상기 방법은, 상기 중간 연산들 중 가장 상위에 위치하는 최종 중간 연산에 따른 최종 중간 결과 및 상기 제 2 데이터를 병합하는 조인 연산을 추가하는 단계를 더 포함할 수 있다.
일 실시 예에서, 상기 하위 연산은, 스캔 연산일 수 있다.
일 실시 예에서, 상기 상위 연산 또는 상기 중간 연산들은, 조인 연산 또는 정렬 연산일 수 있다.
일 실시 예에서, 상기 중간 연산들 중 정렬 연산이 존재하는 경우, 상기 조인 연산에 해시 조인 기법 또는 중첩 루프 조인 기법이 적용될 수 있다.
본 발명의 일 실시 예에 따른 질의 최적화 장치는, 프로세서 및 메모리를 포함하고, 상기 메모리에 질의 최적화를 위한 명령어들이 저장되며, 상기 명령어들은 상기 프로세서에 의하여 실행될 때 상기 프로세서로 하여금, 질의를 기반으로 질의 계획을 수립하고, 상기 수립된 질의 계획을 기반으로, 하위 연산의 결과 데이터 중 상위 연산의 결과 데이터에 포함될 데이터들을, 상기 하위 연산과 상기 상위 연산의 사이에 존재하는 중간 연산들에 이용되는 제 1 데이터와 상기 중간 연산들에 이용되지 않는 제 2 데이터로 분류하며, 상기 제 2 데이터가 상기 중간 연산들을 위한 입력 값이 되지 않도록 상기 질의 계획을 수정하도록 하는 명령어들을 포함한다.
일 실시 예에서, 상기 명령어들은, 상기 제 2 데이터의 전송 비용이 임계 값 이상인 경우 상기 질의 계획을 수정하도록 하는 명령어들을 포함할 수 있다.
일 실시 예에서, 상기 하위 연산은, 상기 질의 계획 상에 존재하는 연산들 중 최하위 연산일 수 있다.
일 실시 예에서, 상기 상위 연산은, 상기 질의 계획 상에 존재하는 연산들 중 최상위 연산일 수 있다.
일 실시 예에서, 상기 명령어들은, 상기 중간 연산들 중 가장 상위에 위치하는 최종 중간 연산에 따른 최종 중간 결과 및 상기 제 2 데이터를 병합하는 조인 연산을 추가하도록 하는 명령어들을 포함할 수 있다.
일 실시 예에서, 상기 하위 연산은, 스캔 연산일 수 있다.
일 실시 예에서, 상기 상위 연산 또는 상기 중간 연산들은, 조인 연산 또는 정렬 연산일 수 있다.
일 실시 예에서, 상기 명령어들은, 상기 중간 연산들 중 정렬 연산이 존재하는 경우, 상기 조인 연산에 해시 조인 기법 또는 중첩 루프 조인 기법을 적용하도록 하는 명령어들을 포함할 수 있다.
본 발명의 실시 예들에 따르면, 질의 처리 과정에서 재분배되는 데이터의 양을 줄일 수 있다.
본 발명의 실시 예들에 따른, 질의 처리 과정에서 발생하는 디스크 입출력 비용 및 네트워크 입출력 비용을 감소시킬 수 있다.
도 1은 본 발명의 실시 예들이 적용되는 분산 질의 엔진의 일 예를 설명하기 위한 예시도,
도 2는 분산 질의 엔진에서의 질의 처리 방법을 설명하기 위한 흐름도,
도 3은 <표 1>에 기재된 질의에 따른 질의 계획을 설명하기 위한 예시도,
도 4는 도 3에 도시된 질의 계획을 기반으로 수립된 분산 실행 계획을 설명하기 위한 예시도,
도 5는 도 3에 도시된 질의 계획을 기반으로 질의 최적화를 수행한 예를 설명하기 위한 예시도,
도 6은 도 5에 도시된 최적화된 질의를 기반으로 수립된 분산 실행 계획을 설명하기 위한 예시도,
도 7은 본 발명의 일 실시 예에 따른 질의 최적화 방법을 설명하기 위한 흐름도,
도 8은 본 발명의 일 실시 예에 따른 질의 최적화 장치를 설명하기 위한 블록도.
도 2는 분산 질의 엔진에서의 질의 처리 방법을 설명하기 위한 흐름도,
도 3은 <표 1>에 기재된 질의에 따른 질의 계획을 설명하기 위한 예시도,
도 4는 도 3에 도시된 질의 계획을 기반으로 수립된 분산 실행 계획을 설명하기 위한 예시도,
도 5는 도 3에 도시된 질의 계획을 기반으로 질의 최적화를 수행한 예를 설명하기 위한 예시도,
도 6은 도 5에 도시된 최적화된 질의를 기반으로 수립된 분산 실행 계획을 설명하기 위한 예시도,
도 7은 본 발명의 일 실시 예에 따른 질의 최적화 방법을 설명하기 위한 흐름도,
도 8은 본 발명의 일 실시 예에 따른 질의 최적화 장치를 설명하기 위한 블록도.
이하에서, 본 발명의 실시 예들을 설명함에 있어, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다.
본 발명의 실시 예들은, 질의를 처리하는 과정에서 발생하는 중간 결과들의 재분배로 인한 비용이 감소될 수 있도록 질의 최적화를 수행하는 방안을 제공한다.
본 발명의 실시 예들에 따른 질의 최적화 방안은, 일반적인 형태의 분산 질의 엔진에 널리 적용될 수 있으며, 전통적인 로우 기반(row-based) 파일 시스템을 비롯한 다양한 저장 형태를 갖는 시스템에 적용될 수 있다.
이하, 첨부되는 도면을 참조하여 본 발명의 실시 예들을 설명한다.
도 1은 본 발명의 실시 예들이 적용되는 분산 질의 엔진의 일 예를 설명하기 위한 예시도이다. 실시 예에 따라, 도 1에 도시된 구성 요소들 중 적어도 하나는 생략될 수 있다.
분산 질의 엔진(200)은, 코디네이터 노드(210), 메타데이터 저장소(220) 및 적어도 하나의 수행 노드(230a, 230b, ..., 230n)를 포함한다.
코디네이터 노드(210)는, 질의 계획을 수립하고, 수립된 질의 계획을 기반으로 질의 최적화를 수행할 수 있다. 질의 계획 수립에 이용되는 질의는, 질의 클라이언트(100)로부터 수신될 수 있다.
메타데이터 저장소(220)는, 데이터의 스키마, 질의 최적화를 위한 각종 통계 정보 및 사용자 정보 등의 시스템 운영에 필요한 정보를 저장할 수 있다.
수행 노드(230a, 230b, ..., 230n)는, 코디네이터 노드(210)에서 수립된 질의 계획(질의 최적화가 수행된 질의 계획일 수 있다)에 따른 분산 작업을 수행할 수 있다. 실시 예에 따라, 수행 노드(230a, 230b, ..., 230n) 중 적어도 하나는 코디네이터 노드로서 동작할 수 있다. 수행 노드(230a, 230b, ..., 230n)는, 자신에게 할당된 작업을 수행하기 위하여 분산 데이터 저장소(300)에 접근할 수 있다. 수행 노드(230a, 230b, ..., 230n)는 분산 데이터 저장소(300)에 저장된 데이터를 읽거나, 분산 데이터 저장소(300)에 데이터를 기록할 수 있다.
분산 데이터 저장소(300)는, 적어도 하나의 데이터 노드(330a, 330b, ..., 330n)를 포함한다. 데이터 노드(330a, 330b, ..., 330n)는 데이터를 저장하며, 수행 노드(230a, 230b, ..., 230n)로부터의 접근이 있는 경우 데이터를 수행 노드(230a, 230b, ..., 230n)에게 제공하거나, 기 저장된 데이터를 갱신하거나 또는 새로운 데이터를 저장할 수 있다. 실시 예에 따라, 데이터 노드(330a, 330b, ..., 330n) 중 적어도 하나는 수행 노드로서 동작할 수 있다.
도 2는 분산 질의 엔진에서의 질의 처리 방법을 설명하기 위한 흐름도이다. 실시 예에 따라, 도 2에 도시된 단계들 중 적어도 하나는 생략될 수 있다.
단계(201)에서, 분산 질의 엔진은, 질의를 입력받고, 질의 구문 분석(parsing)을 수행할 수 있다. 예를 들어, 분산 질의 엔진은, 입력된 질의가 구문 상 올바른지 검사하고, 입력된 질의를 질의 처리에 필요한 정보를 담는 표현으로 변환할 수 있다.
단계(203)에서, 분산 질의 엔진은, 질의 계획을 수립할 수 있다. 질의 계획을 수립함에 있어, 분산 질의 엔진은, 메타데이터 저장소를 참조하여 질의 처리에 필요한 정보들을 확인하고, 질의에 의미상 오류가 있는지 여부를 확인할 수 있다.
단계(205)에서, 분산 질의 엔진은, 수립된 질의 계획을 기반으로, 질의 최적화를 수행할 수 있다. 예를 들어, 분산 질의 엔진은, 질의 처리에 소요되는 비용을 추정하거나, 보다 나은 성능을 나타낼 수 있는 질의 계획 변경 규칙을 적용하여 질의 최적화를 수행할 수 있다. 비용의 추정은, 다양한 비용 모델을 기반으로 계산될 수 있다.
단계(207)에서, 분산 질의 엔진은, 분산 실행 계획을 수립할 수 있다. 예를 들어, 분산 질의 엔진은, 최적화된 질의를 구성하는 각 연산을 어떻게 분산 처리할 것인지를 결정할 수 있다.
단계(209)에서, 분산 질의 엔진은, 수립된 분산 실행 계획에 따라 분산 작업을 수행하여 질의를 처리할 수 있다.
본 발명의 실시 예들은, 전술한 질의 최적화 과정과 밀접한 관련이 있다. 예를 들어, 본 발명의 실시 예들은, 분산 실행 계획 수립 및 분산 작업 수행 과정에서 발생하는 디스크 입출력 비용 및 네트워크 입출력 비용이 감소되도록 질의 최적화를 수행할 수 있다.
한편, 분산 작업 수행 과정에서 발생하는 디스크 입출력 비용 및 네트워크 입출력 비용을 감소시키기 위한 종래의 기법들은, 최종 질의 결과에 포함되지 않는 데이터들을 가능한 이른 단계에서 제외시키는데 집중한다. 이러한 기법들의 예로, 조건 푸시다운(predicate pushdown), 프로젝션 푸시다운(projection pushdown), 세미조인(semijoin) 및 블룸조인(bloomjoin) 등이 있다.
그러나, 최종 질의 결과에 포함되는 데이터라 하더라도, 임의의 수행 노드가 수행하는 연산에 직접적으로 이용되지 않는 데이터가 존재할 수 있다. 따라서, 임의의 수행 노드가 수행하는 연산에 직접적으로 이용되지 않는 데이터가 해당 임의의 수행 노드에게 재분배되지 않도록 질의 최적화를 수행한다면, 디스크 입출력 비용 및 네트워크 입출력 비용을 크게 감소시킬 수 있다.
예를 들어, 충분히 큰 세 개의 데이터셋 R, S 및 T가 R(C1, C2, C3, ..., C100), S(C1, D, E), T(C2, F, G)와 같은 테이블 형태를 가진다고 가정하자. 또한, 편의상 데이터 셋 R의 C3 컬럼에 속하는 필드들은 숫자열이고, 그 외의 모든 필드들은 문자열이라고 가정하고, <표 1>에 기재된 질의를 처리하는 경우를 생각해 보자.
SELECT * FROM R, S, T WHERE R.C1 = S.C1 AND R.C2 = T.C2 AND R.C3 > 100 ORDER BY C3 DESC; |
데이터에 대한 통계 정보에 따라 질의 최적화가 다르게 이루어질 수 있으나, 데이터가 충분히 크다는 가정 하에서 일반적인 질의 최적화 방법에 따르면 도 3에 도시된 바와 같은 논리적 질의 실행 계획이 도출될 것이다.
도 3은 <표 1>에 기재된 질의에 따른 질의 계획을 설명하기 위한 예시도이다.
도 3에 도시된 질의 계획은, 조인 키(R.C1, S.C1)를 이용하여 데이터 셋(R, S)을 먼저 조인하고, 조인 키(R.C2, T.C2)를 이용하여 데이터 셋(R, T)을 조인하여 생성된 중간 결과를 C3 필드를 기준으로 정렬함으로써 최종 질의 결과를 도출하는 계획이다. 여기서, 재분배되는 중간 결과의 크기를 줄이기 위하여, 결과 선택 조건(R.C3 > 100)에 따른 연산은 이른 단계에서 수행되도록 되어 있다. 이러한 질의 계획을 기반으로 분산 실행 계획이 수립될 수 있다.
도 4는 도 3에 도시된 질의 계획을 기반으로 수립된 분산 실행 계획을 설명하기 위한 예시도이다.
분산 실행 계획은, 독립적으로 실행 가능한 분산 실행 단위들을 각 수행 노드에 할당하고, 각 수행 노드에서 도출된 중간 결과를 상위 수행 노드에 재분배하는 계획을 포함한다. 도 4에 도시된 분산 질의 실행 계획을 참조하면, 필드를 많이 보유하는 데이터셋 R에 대한 중간 결과가 여러 번 재분배되고 있음을 알 수 있다. 여기서, 데이터셋 R의 모든 필드가 재분배되기 때문에, 디스크 입출력 비용 및 네트워크 입출력 비용이 매우 크다.
도 5는 도 3에 도시된 질의 계획을 기반으로 질의 최적화를 수행한 예를 설명하기 위한 예시도이다.
도 5를 참조하면, 데이터셋 R을 스캔하는 하위 연산(502)에 따른 중간 결과(R.C1, R.C2, R.C3, R.C4, R.C5, ..., R.C100)를 두 세트로 나누고 있음을 알 수 있다. 하나의 세트(R.C1, R.C2, R.C3)는 하위 연산(502)과 상위 연산(506) 사이에 존재하는 중간 연산들(504a, 504b, 504c)에 이용되는 데이터(이하, 제 1 데이터)들을 포함하고, 다른 하나의 세트(R.C3, R.C4, R.C5, ..., R.C100)는 중간 연산들(504a, 504b, 504c)에 이용되지 않는 데이터(이하, 제 2 데이터)들을 포함한다.
즉, 제 2 데이터는, 상위 연산(506)의 결과에 포함되는 데이터이지만, 중간 연산들(504a, 504b, 504c)에 이용되지 않는 데이터이다. 따라서, 제 2 데이터가 중간 연산들(504a, 504b, 504c)을 위한 입력 값이 되지 않도록 하여, 분산 질의 처리 과정에서 재분배되는 데이터의 양을 줄이고 있다.
한편, 하위 연산(502)에 따른 중간 결과 중 제 2 데이터는 중간 연산들(504a, 504b, 504c)을 위한 입력 값으로 이용되지 않았기 때문에, 중간 연산들(504a, 504b, 504c) 중 가장 상위에 위치하는 최종 중간 연산(504c)에 따른 최종 중간 결과와 제 2 데이터의 병합이 필요하다.
이에, 이들을 병합하기 위한 연산(506)이 추가될 수 있다. 연산(506)은, 최종 중간 연산(504c)에 따른 최종 중간 결과와 제 2 데이터를 병합할 수 있다. 연산(506)은, 조인 연산일 수 있다.
한편, 연산(506)을 위하여, 레코드를 유일하게 가리키는 레코드 식별자(record identifier; rid) 필드가 제 1 데이터가 속하는 세트 및 제 2 데이터가 속하는 세트 각각에 포함될 수 있다. 만약, 데이터셋의 필드 내에 레코드마다 유일한 값을 갖는 필드가 존재하면, 해당 필드 값을 레코드 식별자로서 이용할 수도 있다.
한편, 이전 연산의 정렬 결과가 유지되도록 유의 순서(interesting order)를 고려하여 연산(506)이 실행될 수 있다. 이전 연산의 정렬 결과가 유지되도록 하는 기법으로는, 해시 조인(hash join) 기법 및 중첩 루프 조인(nested-loop join) 기법 등이 이용될 수 있다.
도 6은 도 5에 도시된 최적화된 질의를 기반으로 수립된 분산 실행 계획을 설명하기 위한 예시도이다.
도 6을 참조하면, 데이터셋 R의 필드들 중 R.C4, R.C5, ..., R.C100에 속하는 필드들의 재분배 횟수가, 도 4에 도시된 경우에 비하여 크게 감소하였음을 알 수 있다.
도 7은 본 발명의 일 실시 예에 따른 질의 최적화 방법을 설명하기 위한 흐름도이다. 실시 예에 따라, 도 7에 도시된 단계들 중 적어도 하나는 생략될 수 있다. 도 7을 참조하여 설명하는 실시 예에서, 질의 계획이 수립된 상황을 가정한다.
단계(701)에서, 분산 질의 엔진은, 질의 계획을 분석하여 데이터 재분배가 발생하는지 여부를 확인할 수 있다. 데이터 재분배가 발생한다는 것은, 질의 계획에 존재하는 임의의 하위 연산에 따른 결과 데이터(중간 결과) 중 적어도 일부가 상위 연산을 위한 입력 값이 되는 경우를 의미할 수 있다.
일 실시 예에서, 하위 연산은 질의 계획 상에 존재하는 연산들 중 최하위 연산이거나, 최하위 연산과 최상위 연산 사이에 위치하는 연산들 중 어느 하나일 수 있다. 일 실시 예에서, 상위 연산은 질의 계획 상에 존재하는 연산들 중 최상위 연산이거나, 하위 연산과 최상위 연산 사이에 위치하는 연산들 중 어느 하나일 수 있다. 일 실시 예에서, 하위 연산은 스캔 연산일 수 있으며, 상위 연산은, 조인 연산 또는 정렬 연산일 수 있다. 확인 결과 데이터 재분배가 발생하는 경우 단계(703)로 진행한다.
단계(703)에서, 분산 질의 엔진은, 하위 연산에 따른 결과 데이터를 필수 필드와 비필수 필드로 분류하고, 각 데이터셋마다 비필수 필드의 전송 비용을 추정할 수 있다. 여기서, 필수 필드란 하위 연산과 상위 연산 사이에 위치하는 중간 연산들을 위한 입력 값으로 이용되는 데이터를 의미하며, 비필수 필드란 중간 연산들을 위한 입력 값으로 이용되지 않는 데이터를 의미한다. 일 실시 예에서, 중간 연산은, 조인 연산 또는 정렬 연산일 수 있다.
단계(705)에서, 분산 질의 엔진은, 각 데이터셋마다 추정된 비필수 필드의 전송 비용이 임계 값 이상인지 여부를 확인할 수 있다. 추정된 비필수 필드의 전송 비용이 임계 값 이상이라는 것은, 데이터 재분배로 인한 디스크 입출력 비용 및 네트워크 입출력 비용이 크다는 것을 의미한다.
단계(707)에서, 분산 질의 엔진은, 하위 연산에 따른 결과 데이터를 분할할 수 있다. 이러한 분할은, 추정된 비필수 필드의 전송 비용이 임계 값 이상인 데이터셋마다 수행될 수 있다. 분산 질의 엔진은, 하위 연산에 따른 결과 데이터 중 비필수 필드가 중간 연산들을 위한 입력 값으로 이용되지 않도록 질의 계획을 수정할 수 있다. 즉, 분산 질의 엔진은, 하위 연산에 따른 결과 데이터 중 필수 필드만이 중간 연산들을 위한 입력 값으로 이용되도록 질의 계획을 수정할 수 있다.
단계(709)에서, 분산 질의 엔진은, 하위 연산의 결과 데이터 중 비필수 필드와, 최종 중간 연산에 따른 최종 중간 결과를 입력으로 하는 조인 연산을 생성할 수 있다.
전술한 단계들에 따라 질의 최적화가 이루어지고 난 이후에, 분산 실행 계획이 수립되고, 분산 작업 할당이 이루어질 수 있다.
본 발명의 실시 예들은, 컴퓨터 시스템 내에, 예를 들어, 컴퓨터 판독가능 기록 매체로 구현될 수 있다. 도 8에 도시된 바와 같이, 컴퓨터 시스템(800)은 하나 이상의 프로세서(810), 메모리(820), 저장부(830), 사용자 인터페이스 입력부(840) 및 사용자 인터페이스 출력부(850) 중 적어도 하나 이상의 요소를 포함할 수 있으며, 이들은 버스(860)를 통해 서로 통신할 수 있다. 또한, 컴퓨터 시스템(800)은 네트워크에 접속하기 위한 네트워크 인터페이스(870)를 또한 포함할 수 있다. 프로세서(810)는 메모리(820) 및/또는 저장소(830)에 저장된 처리 명령어를 실행시키는 CPU 또는 반도체 소자일 수 있다. 메모리(820) 및 저장부(830)는 다양한 유형의 휘발성/비휘발성 기억 매체를 포함할 수 있다. 예를 들어, 메모리는 ROM(824) 및 RAM(825)을 포함할 수 있다.
이에 따라, 본 발명의 실시 예들은 컴퓨터로 구현되는 방법 또는 컴퓨터 실행 가능 명령어들이 저장된 비휘발성 컴퓨터 기록 매체로 구현될 수 있다. 상기 명령어들은 프로세서에 의해 실행될 때 본 발명의 적어도 일 실시 예에 따른 방법을 수행할 수 있다.
Claims (16)
- 분산 질의 엔진에서 질의 최적화를 수행하는 방법으로서,
질의를 기반으로 질의 계획을 수립하는 단계;
상기 수립된 질의 계획을 기반으로, 하위 연산의 결과 데이터 중 상위 연산의 결과 데이터에 포함될 데이터들을, 상기 하위 연산과 상기 상위 연산의 사이에 존재하는 중간 연산들에 이용되는 제 1 데이터와 상기 중간 연산들에 이용되지 않는 제 2 데이터로 분류하는 단계; 및
상기 제 2 데이터가 상기 중간 연산들을 위한 입력 값이 되지 않도록 상기 질의 계획을 수정하는 단계
를 포함하는 질의 최적화 방법.
- 제 1 항에 있어서, 상기 질의 계획을 수정하는 단계는,
상기 제 2 데이터의 전송 비용이 임계 값 이상인 경우 상기 질의 계획을 수정하는 단계
를 포함하는 질의 최적화 방법.
- 제 1 항에 있어서, 상기 하위 연산은,
상기 질의 계획 상에 존재하는 연산들 중 최하위 연산인
질의 최적화 방법.
- 제 1 항에 있어서, 상기 상위 연산은,
상기 질의 계획 상에 존재하는 연산들 중 최상위 연산인
질의 최적화 방법.
- 제 1 항에 있어서,
상기 중간 연산들 중 가장 상위에 위치하는 최종 중간 연산에 따른 최종 중간 결과 및 상기 제 2 데이터를 병합하는 조인(join) 연산을 추가하는 단계
를 더 포함하는 질의 최적화 방법.
- 제 1 항에 있어서, 상기 하위 연산은,
스캔(scan) 연산인
질의 최적화 방법.
- 제 1 항에 있어서, 상기 상위 연산 또는 상기 중간 연산들은,
조인 연산 또는 정렬 연산인
질의 최적화 방법.
- 제 1 항에 있어서,
상기 중간 연산들 중 정렬 연산이 존재하는 경우, 상기 조인 연산에 해시 조인 기법 또는 중첩 루프 조인 기법이 적용되는
질의 최적화 방법.
- 프로세서 및 메모리를 포함하는 질의 최적화 장치로서,
상기 메모리에 질의 최적화를 위한 명령어들이 저장되며,
상기 명령어들은, 상기 프로세서에 의하여 실행될 때, 상기 프로세서로 하여금,
질의를 기반으로 질의 계획을 수립하고,
상기 수립된 질의 계획을 기반으로, 하위 연산의 결과 데이터 중 상위 연산의 결과 데이터에 포함될 데이터들을, 상기 하위 연산과 상기 상위 연산의 사이에 존재하는 중간 연산들에 이용되는 제 1 데이터와 상기 중간 연산들에 이용되지 않는 제 2 데이터로 분류하며,
상기 제 2 데이터가 상기 중간 연산들을 위한 입력 값이 되지 않도록 상기 질의 계획을 수정하도록 하는 명령어들을 포함하는
질의 최적화 장치.
- 제 9 항에 있어서, 상기 명령어들은,
상기 제 2 데이터의 전송 비용이 임계 값 이상인 경우 상기 질의 계획을 수정하도록 하는 명령어들을 포함하는
질의 최적화 장치.
- 제 9 항에 있어서, 상기 하위 연산은,
상기 질의 계획 상에 존재하는 연산들 중 최하위 연산인
질의 최적화 장치.
- 제 9 항에 있어서, 상기 상위 연산은,
상기 질의 계획 상에 존재하는 연산들 중 최상위 연산인
질의 최적화 장치.
- 제 9 항에 있어서, 상기 명령어들은,
상기 중간 연산들 중 가장 상위에 위치하는 최종 중간 연산에 따른 최종 중간 결과 및 상기 제 2 데이터를 병합하는 조인(join) 연산을 추가하도록 하는 명령어들을 포함하는
질의 최적화 장치.
- 제 9 항에 있어서, 상기 하위 연산은,
스캔(scan) 연산인
질의 최적화 장치.
- 제 9 항에 있어서, 상기 상위 연산 또는 상기 중간 연산들은,
조인 연산 또는 정렬 연산인
질의 최적화 장치.
- 제 9 항에 있어서, 상기 명령어들은,
상기 중간 연산들 중 정렬 연산이 존재하는 경우, 상기 조인 연산에 해시 조인 기법 또는 중첩 루프 조인 기법을 적용하도록 하는 명령어들을 포함하는
질의 최적화 장치.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160032122A KR20170109119A (ko) | 2016-03-17 | 2016-03-17 | 분산 질의 엔진에서의 질의 최적화 방법 및 장치 |
US15/251,167 US20170270162A1 (en) | 2016-03-17 | 2016-08-30 | Query optimization method in distributed query engine and apparatus thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160032122A KR20170109119A (ko) | 2016-03-17 | 2016-03-17 | 분산 질의 엔진에서의 질의 최적화 방법 및 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20170109119A true KR20170109119A (ko) | 2017-09-28 |
Family
ID=59855592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160032122A KR20170109119A (ko) | 2016-03-17 | 2016-03-17 | 분산 질의 엔진에서의 질의 최적화 방법 및 장치 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20170270162A1 (ko) |
KR (1) | KR20170109119A (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210135535A (ko) * | 2019-09-25 | 2021-11-15 | 스노우플레이크 인코포레이티드 | 질의 계획 내의 적응적 집계 연산자 및 속성 배치 |
US11620287B2 (en) | 2020-02-26 | 2023-04-04 | Snowflake Inc. | Framework for providing intermediate aggregation operators in a query plan |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10838958B2 (en) * | 2016-09-22 | 2020-11-17 | Sap Se | Static hierarchy based query execution |
CN107729428A (zh) * | 2017-09-28 | 2018-02-23 | 南威软件股份有限公司 | 一种基于Presto和Elasticsearch的SQL查询方法 |
KR102551277B1 (ko) | 2017-12-13 | 2023-07-04 | 한국전자통신연구원 | 병합 조인 시스템 및 병합 조인 방법 |
CN109710641A (zh) * | 2018-12-17 | 2019-05-03 | 浩云科技股份有限公司 | 一种海量数据的查询处理方法及系统 |
CN110851452B (zh) * | 2020-01-16 | 2020-09-04 | 医渡云(北京)技术有限公司 | 数据表连接处理方法及装置、电子设备和存储介质 |
US11782918B2 (en) * | 2020-12-11 | 2023-10-10 | International Business Machines Corporation | Selecting access flow path in complex queries |
US20230273925A1 (en) * | 2022-02-25 | 2023-08-31 | Huawei Cloud Computing Technologies Co., Ltd. | Method and apparatus for database management system query planning |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7062481B2 (en) * | 2001-09-28 | 2006-06-13 | Ncr Corp. | Eliminating group-by operations in a join plan |
US7383246B2 (en) * | 2003-10-31 | 2008-06-03 | International Business Machines Corporation | System, method, and computer program product for progressive query processing |
US20120117054A1 (en) * | 2010-11-08 | 2012-05-10 | Lakshmikant Shrinivas | Query Analysis in a Database |
US9996574B2 (en) * | 2015-06-30 | 2018-06-12 | International Business Machines Corporation | Enhancements for optimizing query executions |
-
2016
- 2016-03-17 KR KR1020160032122A patent/KR20170109119A/ko unknown
- 2016-08-30 US US15/251,167 patent/US20170270162A1/en not_active Abandoned
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210135535A (ko) * | 2019-09-25 | 2021-11-15 | 스노우플레이크 인코포레이티드 | 질의 계획 내의 적응적 집계 연산자 및 속성 배치 |
US11971888B2 (en) | 2019-09-25 | 2024-04-30 | Snowflake Inc. | Placement of adaptive aggregation operators and properties in a query plan |
US11620287B2 (en) | 2020-02-26 | 2023-04-04 | Snowflake Inc. | Framework for providing intermediate aggregation operators in a query plan |
Also Published As
Publication number | Publication date |
---|---|
US20170270162A1 (en) | 2017-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20170109119A (ko) | 분산 질의 엔진에서의 질의 최적화 방법 및 장치 | |
US10929417B2 (en) | Transforming and loading data utilizing in-memory processing | |
US8935232B2 (en) | Query execution systems and methods | |
JP5298117B2 (ja) | 分散コンピューティングにおけるデータマージング | |
US8682875B2 (en) | Database statistics for optimization of database queries containing user-defined functions | |
US10762087B2 (en) | Database search | |
US10467201B1 (en) | Systems and methods for integration and analysis of data records | |
US8538912B2 (en) | Apparatus and method for an automatic information integration flow optimizer | |
EP3014488B1 (en) | Incremental maintenance of range-partitioned statistics for query optimization | |
US8949222B2 (en) | Changing the compression level of query plans | |
Bruno et al. | Advanced join strategies for large-scale distributed computation | |
US20120117054A1 (en) | Query Analysis in a Database | |
US20180357298A1 (en) | Performance of Distributed Databases and Database-Dependent Software Applications | |
US20150006507A1 (en) | Database Hierarchy-Independent Data Drilling | |
US10877973B2 (en) | Method for efficient one-to-one join | |
US20090112792A1 (en) | Generating Statistics for Optimizing Database Queries Containing User-Defined Functions | |
Sahal et al. | Exploiting coarse-grained reused-based opportunities in Big Data multi-query optimization | |
US8131711B2 (en) | System, method, and computer-readable medium for partial redistribution, partial duplication of rows of parallel join operation on skewed data | |
US20160203409A1 (en) | Framework for calculating grouped optimization algorithms within a distributed data store | |
US11449504B2 (en) | Database partition pruning using dependency graph | |
JP6398632B2 (ja) | 制御装置、分散データベースシステム、方法およびプログラム | |
US10789249B2 (en) | Optimal offset pushdown for multipart sorting | |
US11379485B2 (en) | Inferred predicates for query optimization | |
JP6523823B2 (ja) | 仮想データベースシステム管理装置、管理方法及び管理プログラム | |
US9378229B1 (en) | Index selection based on a compressed workload |