KR101714985B1 - 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 방법 및 장치 - Google Patents

분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 방법 및 장치 Download PDF

Info

Publication number
KR101714985B1
KR101714985B1 KR1020160109876A KR20160109876A KR101714985B1 KR 101714985 B1 KR101714985 B1 KR 101714985B1 KR 1020160109876 A KR1020160109876 A KR 1020160109876A KR 20160109876 A KR20160109876 A KR 20160109876A KR 101714985 B1 KR101714985 B1 KR 101714985B1
Authority
KR
South Korea
Prior art keywords
query
graph
subquery
query graph
parallelism
Prior art date
Application number
KR1020160109876A
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 KR1020160109876A priority Critical patent/KR101714985B1/ko
Application granted granted Critical
Publication of KR101714985B1 publication Critical patent/KR101714985B1/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/242Query formulation
    • G06F17/30389
    • 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/248Presentation of query results
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F17/30554
    • G06F17/30595

Landscapes

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

Abstract

본 발명은 분산데이터베이스에서 서브 질의를 포함하고 있는 중첩 질의의 병렬 가능성을 판단하기 위해 테이블을 정점으로 선택 연산을 간선으로 구성한 질의 그래프를 생성하고, 상기 질의 그래프를 탐색한 결과, 상기 질의 그래프의 모든 정점이 연결되었다면 병렬 질의가 가능한 병별 질의로 판단하고, 상기 질의 그래프가 두 개 이상의 서브 그래프로 구성되어 상기 질의 그래프의 모든 정점이 연결되지 않았다면 비병렬 질의로 판단하는 방법과 장치가 개시된다.

Description

분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 방법 및 장치{The method and device of inspection of nested query parallelism in a distributed parallel database}
본 발명은 동일한 분산 정책을 가지는 중첩 질의의 병렬성을 검사하는 방법으로, 중첩 질의의 테이블을 그래프의 정점으로 저장하고 중첩 질의의 선택 연산을 그래프 간선으로 저장한 질의 그래프를 구성하고, 상기 질의 그래프를 탐색한 결과, 모든 정점이 연결되었다면 병렬 질의로 판단하고, 상기 질의 그래프를 탐색한 결과, 질의 그래프가 두 개 이상의 서브 그래프로 구성되어 모든 정점이 연결되지 않는 그래프인 경우는 비병렬질의로 판단하는 방법에 관한 것이다.
분산데이터베이스의 병렬화는 질의 간 병렬화(interquery parallelism)와 질의 내 병렬화(intraquery parallelism)로 제공된다. 질의 간 병렬화는 서로 다른 질의나 트랜잭션들이 상호 병렬적으로 실행되는 것으로, 트랜잭션 처리량을 향상시킬 수 있지만 개별 트랜잭션의 응답 시간이 더 빨라지는 것은 아니다. 질의 간 병렬화는 초당 더 많은 트랜잭션이 실행되도록 트랜잭션 처리 시스템의 규모를 증대시키는 반면, 질의 내 병렬화는 하나의 질의의 실행을 여러 프로세서와 디스크들을 이용해서 병렬로 처리하는 것으로, 장시간 실행해야 하는 질의는 속도 향상을 얻을 수 있다.
일반적으로 분산데이터베이스의 질의 내 병렬화는 중첩 질의의 복잡도 및 서브 질의 깊이에 따라 병렬성 검사 방법이 난해하기 때문에, 서브 질의를 포함하지 않는 단순 질의에 대해서만 병렬화를 수행한다. 또는 중첩 질의를 병렬 질의로 처리하는 분산데이터베이스는 간혹 잘못된 질의 계획으로 인해 병렬성이 보장 안 된 질의를 병렬로 처리하는 경우도 발생한다. 본 발명은 분산데이터베이스 상에서 서브 질의를 포함하고 있는 중첩 질의를 테이블과 선택 연산을 이용하여 질의 그래프로 구성하고 그래프 탐색 알고리즘을 통해 연산 내 병렬화(intraoperation parallelism) 가능성을 판단하는 것으로, 병렬 처리 가능한 중첩 질의를 효과적이면서 정확성이 보장된 병렬 질의 계획을 수립할 수 있다.
이하에서는 본 발명의 몇 가지 실시 예에 대한 기본적인 이해를 돕기 위하여 간단한 요약을 제공한다. 이 요약은 광범위한 개관이 아니며, 본 발명의 중요/핵심 구성 요소를 식별하거나 특허청구범위를 한정하고자 하는 것이 아니다. 이는 단지, 이하의 더욱 상세한 설명에 대한 서설로서, 몇몇 개념들을 단순한 형태로 제공하기 위한 것이다.
RDB 기반의 분산데이터베이스는 도 1과 같이 사용자로부터 질의를 받아들여 질의를 분석하는 질의 분배기(102)와 테이블을 물리적 저장장치에 저장하고 있는 질의 실행기(104, 106)로 구성된다. 질의 분배기(102)는 입력된 질의를 분석하여 해당 질의에 포함된 테이블이 저장된 질의 실행기(104, 106)에 질의를 분산시키고, 질의 실행기(104, 106)에 분산된 질의 결과를 넘겨받아 합치는 역할을 담당한다.
도 1의 전통적인 분산데이터베이스(100)는 질의 실행기(104,106)에 테이블을 특정 조건에 의해 중첩되지 않도록 분할한 분할 테이블로 저장하거나, 또는 질의 실행기에 동일한 테이블을 중첩하여 저장하는 복제 테이블로 저장될 수 있다. 일반적으로 복제된 테이블은 레코드 수가 적은 테이블을 저장하고, 분할 테이블은 레코드 수가 많은 경우에 사용된다. 질의 분배기(102)는 질의를 분석하여 질의 실행기(104,106)에서 실행된 결과를 취합하여, 인메모리(In-Memory) 또는 로컬 저장장치에 조인 테이블을 생성하고 조인 테이블을 이용한 정렬, 그룹, 또는 집계/통계 함수 등을 수행한다.
본 발명을 설명하기 위해 도 2와 같이 테이블 T1(202)과 T2(204)가 3개의 레코드를 가지며, 개별 레코드는 3개의 디스크 DISK1(206), DISK2(208), DISK3(210)에 나누어 분산 저장되어 있다고 가정하자(200). 그리고 프로세스 P1(212), P2(214), P3(216)는 개별 디스크 상에서 독립적으로 수행되는 질의 실행 프로세스라고 가정한다. 사용자가 입력한 질의(218)를 프로세스 P1(212), P2(214), P3(216)가 넘겨받아 동일한 질의를 병렬로 처리한다. 이때, 프로세스 P1(212)은 DISK1(206)에 저장된 데이터, 프로세스 P2(214)는 DISK2(208)에 저장된 데이터, 그리고 프로세스 P3(216)는 DISK3(210)에 저장된 데이터만을 읽어들여 질의를 수행한다. 따라서, 사용자가 입력한 질의 결과는 다음과 같다.
Figure 112016083714419-pat00001
함수 f는 질의를 수행하는 프로세스가 사용자 질의(218)와 테이블 T1(202), T2(204)를 입력받아 결과를 반환하는 함수로, 사용자 질의가 독립적으로 병렬로 처리되었음을 나타내는 수식이다.
본 발명은 도 2와 같이 분산데이터베이스 시스템이 데이터 지역성이 균등하게 배포되어 있는 상태에서 질의를 병렬로 처리할 경우, 동일한 조건으로 분할된 2개 이상의 테이블을 조인하여 질의를 수행하는 과정에서 부정확한 결과를 내는 질의를 찾아내는 방법에 대한 것으로, 더욱 효율적인 질의 수행 계획을 수립할 수 있도록 도와준다.
본 발명의 병렬 질의 검사 방법을 설명하기 위해 도 2의 분산데이터베이스에서 사용자 질의를 병렬로 처리할 때 잘못된 결과를 가져오는 경우를 살펴보자.
질의 1)
select t1.f1 from t1 where t1.f1 = (select t2.f1 from t2 where t2.f1 = t1.f1)
도 2의 분산데이터베이스 시스템에서 사용자 질의를 질의 1을 병렬로 수행하였다고 가정하면 결과 [1, 2, 3]을 반환한다. 상기 결과는 분산데이터베이스가 아닌 전통적인 RDBMS에서 수행한 결과와 동일한 결과를 가진다. 즉, 질의 1은 동일한 디스크에 동일한 데이터가 있는 필드 t1.f1과 t2.f1의 필드가 선택 연산을 수행함으로써 개별 질의 프로세스는 자신이 참조하지 않는 다른 디스크에 저장된 데이터를 필요로 하지 않는다. 따라서, 자신의 디스크에 저장된 데이터만으로 질의를 수행하여도 같은 결과를 반환한다.
질의 2)
select t1.f1 from t1, t2 where t1.f1 = (select t2.f1 from t2 where t2.f1 = t1.f1)
질의 2를 도 2와 함께 살펴보면 질의 1과 같이 동일한 디스크에 동일한 데이터가 있는 필드 t1.f1과 t2.f1 필드로 선택 연산을 수행한다. 따라서, 선택 연산의 특성상 같은 데이터가 있는 필드의 비교에서는 자신이 참조하고 있는 디스크 이외의 데이터가 필요하지 않는다. 따라서, 질의 1과 질의 2는 동일한 방법으로 질의 수행 프로세스 P1(212), P2(214), P3(216)이 병렬로 수행하고 해당 결과를 취합한 동일한 결과를 가진다고 가정할 수 있다.
하지만, 질의 2의 정확한 결과는 [1, 1, 1, 2, 2, 2, 3, 3, 3] 의 결과를 반환하여야 하는 것으로 질의 1과 다른 결과를 가진다. 질의 2를 자세히 살펴보면 질의 1과는 다르게 서브 질의와 부모 질의에 동일한 t2 테이블이 참조되고 있다. 중첩된 질의에서 동일한 질의가 부모와 자식 질의에 사용되었더라도 이는 서로 다른 2개의 테이블, 즉 인스턴스가 다른 2개의 테이블로 인식된다. 따라서, 자식 질의에서 사용된 결과를 부모 질의에서 테이블 T1(202), T2(204)가 교차조인(Cross Join)하는 것이기 때문에 프로세스 P1(212), P2(214), P3(216)은 자신이 바라고 있는 디스크 이외의 영역에 저장된 테이블 T2(204)의 레코드를 참조하게 된다.
따라서, 본 발명은 질의 2와 같이 중첩 질의에 사용된 테이블이 모두 동일한 조건으로 분산된 테이블이라고 하여도, 중첩된 성질에 의해 병렬이 보장되지 않는 질의가 발생할 수 있는 상황을 검사하는 방법으로, 중첩 질의를 병렬 질의에서 무조건 제외하는 것보다, 중첩 질의에 병렬성을 선 처리하여 병렬성이 가능한 중첩 질의를 병렬 질의를 수행시킴으로써 더욱 효율적인 질의 계획을 수립할 수 있도록 도와 준다.
본 발명의 중첩 질의의 병렬성을 검사하는 알고리즘에 자세히 알아보자. 본 발명은 중첩 질의가 테이블 간의 동일한 조건으로 분산된 테이블로만 구성되었을 경우, 병렬 질의할 수 있는 후보 질의로 판단한다. 그리고 병렬 후보 질의를 분석하여 질의에 사용된 테이블을 중첩 깊이 정보와 함께 분리한 후, 상기 중첩 깊이를 가진 테이블간 선택 연산이 있을 경우, 연결 체인을 구성시킨다. 만약 후보 병렬 질의의 모든 테이블이 연결 체인을 통해 서로 연결되어 있다면 해당 후보 질의는 병렬성을 보장하는 질의로 선택한다.
본 발명은 중첩 질의의 테이블 연결 체인을 위해 무방향 그래프 구조를 사용한다. 연결 체인의 테이블은 그래프 이론의 정점(vertex node)으로 정의하고, 선택 연산은 그래프 이론의 변(edge)으로 정의한다. 사용자 질의를 입력받아 해석하는 질의 분석기는 서브 질의를 포함하고 있는 중첩 질의를 부모 질의부터 시작해서 마지막 자식 질의까지 추적하면서, 테이블을 자식 질의 깊이와 함께 그래프 정점 정보로 저장하고, 선택 연산을 분석하여 선택 연산의 항을 구성하는 테이블을 그래프의 변으로 저장한다.
상기와 같이 중첩 질의의 모든 테이블과 선택 연산을 이용하여 구성된 그래프는 무방향 그래프로 구현되며, 모든 그래프 정점이 서로 연결되어 있는지 그래프 검색 알고리즘을 통해 확인한다. 만약 상기 무방향 그래프를 구성하고 있는 모든 정점이 변으로 연결되어 있다면, 상기 중첩 질의는 병렬성을 가지고, 만약 독립된 두 개 이상의 서브 그래프가 존재한다면, 상기 중첩 질의는 병렬성을 가질 수 없음을 의미한다.
질의 3)
select (select (select t3.f2 from t3 where t3.f1 = t2.f1) from t2 where t2.f1 = t1.f1) from t1;
조금 더 복잡한 질의 3을 예제로 들어보자. 질의 3은 서브 질의 깊이 3을 가지고 있으며, 테이블 t1, t2, t3가 사용되고 있다. 이를 그래프로 표현하면 도 3과 같다. 도 3에서 서브 질의 깊이 1에서 정의된 테이블 t1(302), 서브 질의 깊이 2에서 정의된 t2(304), 그리고 서브 질의 깊이 3에서 정의된 테이블 t3(306)가 각각 그래프 정점으로 저장된다. 그리고 서브 질의 깊이 2에서 선택 연산 t2.f1 = t1.f1(308)이 정점 t1(302)과 t2(304)를 연결하고, 서브 질의 깊이 3에서 선택 연산 t2.f1 = f3.f1(310)이 정점 t2(304)와 t3(306)를 연결한다. 따라서, 질의 3에 존재하는 모든 테이블은 도 3과 같이 서로 연결되어 있으므로(300), 해당 질의는 병렬 질의가 가능하다.
질의 2를 본 발명의 그래프로 나타내 보면 도 4와 같다. 질의 2는 상기에서 논한 바와 같이 병렬성이 보장되지 않는 중첩 질의이다. 질의 2는 서브 질의 깊이 1에서 정의된 테이블 t1(402)과 t2(404)가 그래프 정점으로 저장된다. 그리고 서브 질의 깊이 2에 정의된 테이블 t2(406)가 깊이 2를 가지는 정점으로 저장된다. 상기 서브 질의 깊이 1에서 저장된 테이블 t2(404)는 깊이 1을 가지고 있는 반면, 서브 질의 깊이 2에서 저장된 테이블 t2(406)는 깊이 2를 가지는 노드로 이 2개의 노드는 서로 다른 정점이 된다. 서브 질의 깊이 2에서 선택 연산 t2.f1 = t1.f1(408)을 만나 그래프 정점을 연결하는 변으로 저장된다. 상기 선택 연산의 t2는 서브 질의 깊이 2를 가지는 정점 t2(406)를 의미하고 t1은 서브 질의 깊이 1을 가지는 정점 t1(402)을 의미한다. 따라서, 도 4와 같이 질의 2의 그래프는 두 개의 서브 그래프가 존재하므로, 그래프를 구성하고 있는 전체 정점이 모두 연결되지 않았다. 따라서 해당 질의는 병렬 질의로 수행할 수 없다.
단순 질의에 대해서만 병렬성을 검사하여 질의 내 병렬화를 수행하는 분산데이터베이스에 중첩 질의에 대한 병렬성 검사를 부여함으로써 사용자들이 사용하는 질의의 유연성을 제공할 수 있으며, 또한 서브 질의 깊이가 깊고 복잡도가 높은 중첩 질의의 병렬성을 빠르게 판단하여 보다 효과적이면서 정확성이 보장된 질의 계획을 수립함으로써 대용량 데이터를 빠른 속도로 처리할 수 있는 장점이 있다..
도 1은 전통적인 분산데이터베이스 구조도이다.
도 2는 2개의 테이블 T1, T2가 개별 레코드 3개를 분할하여 저장하고 있는 분산데이터베이스 예제 구성도이다.
도 3은 질의 3의 질의 그래프 구성도이다.
도 4는 질의 2의 질의 그래프 구성도이다.
도 5는 중첩 질의 병렬성 검사 장치 구성도이다.
도 6은 중첩 질의 병렬성 검사 처리 방법도이다.
도 7은 질의 그래프 생성 처리 방법도이다.
도 8은 질의 그래프를 이용한 질의 병렬성 검사 처리 방법도이다.
이제 도면을 참조하여 본 발명을 설명하고자 한다. 도면에서 동일한 참조 번호는 동일한 구성요소를 나타낸다. 이하의 설명에서는 설명을 목적으로, 본 발명에 대한 더욱 충분한 이해를 돕기 위하여 여러 가지 구체적인 세부 사항을 설명하였다. 하지만, 이러한 구체적인 세부 사항 없이도 실시될 수 있다는 점이 명백할 것이다. 한편 본 발명에 대해 설명을 보다 용이하게 하기 위하여, 잘 알려진 구조 및 장치들은 블록 도의 형태로 도시하였다. 본 출원에서, 개시된 발명을 구현하기 위하여, 본 발명은 컴퓨터를 제어하기 위한 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 임의의 조합을 생성하기 위하여 표준 프로그래밍 및/또는 엔지니어링 기법을 사용하여 메소드(method), 장치, 또는 제품으로 구현될 수 있다.
도 5를 참조하면, 도 5는 중첩 질의 병렬성 검사 장치 구성도(500)을 도시한다. 도 5의 질의 분배기(502)는 단말기로부터 입력받은 질의를 해석하는 질의 구문 분석기(504)와 구문 분석된 사용자 질의를 최적의 수행 절차를 찾아 질의를 수행 가능한 형태로 변환하는 질의 계획 수립 엔진(506)과 상기 수립된 질의 계획에 따라 질의를 수행하는 질의 실행기(510)로 구성된다.
도 5의 질의 계획 수립 엔진(506)은 질의 구문 분석기(504)를 통해 구문 분석된 결과를 입력받아, 상기 분석된 질의 내 테이블이 동일 분산 정책에 의한 분할 테이블이고, 상기 분할 테이블의 분할 정책에 사용된 필드가 선택 연산에 사용되고, 및 상기 입력받은 질의가 서브 질의를 포함하는 경우, 상기 질의를 병렬 질의가 가능한 중첩 질의 후보로 설정한 다음, 질의 병렬성을 판단하기 위한 질의 그래프를 생성하는 질의 그래프 생성기(508)에 후보 질의를 전달하고, 상기 생성된 질의 그래프를 질의 병렬성을 판단하는 질의 그래프 탐색기(516)에 전달한다.
질의 그래프 생성기(508)는 입력받은 질의를 분석하여, 상기 분석된 질의 내 테이블을 수집하고, 상기 수집된 테이블의 서브 질의 깊이와 함께 상기 테이블을 그래프 정점으로 저장하는 질의 그래프 정점 생성기(512)와, 상기 분석된 질의 내 선택 연산의 피 연산자를 무방향 그래프 간선으로 구성하는 질의 그래프 간선 생성기(514)로 구성된다.
질의 그래프 정점 생성기(512)는 질의 그래프 내 서브 질의 깊이가 다른 동일한 테이블이 존재한다면, 서로 다른 두 개의 테이블이 존재하고 있는 것으로 판단한다. 따라서, 상기 질의 그래프의 동일한 정점은 동일한 서브 질의 깊이를 가지는 동일한 테이블인 경우로 한정된다. 질의 그래프 정점 생성기(512)는 구문 분석된 질의 내 테이블이 서브 질의인 경우, 상기 서브 질의를 수집하여 서브 질의 리스트에 저장하고, 상기 서브 질의 리스트에 저장된 서브 질의를 획득하여, 상기 획득한 서브 질의를 재귀적 방법으로 질의 그래프 생성기(508)에 전달한다.
질의 그래프 간선 생성기(514)는 구문 분석된 질의 내 선택 연산의 피 연산자인 테이블 필드를 수집하고, 상기 수집된 테이블 필드의 테이블 정보를 획득하기 위해, 앞선 생성된 질의 그래프에서 정점이 저장된 최근 순으로 상기 획득한 테이블 정보의 테이블명과 일치하는 질의 그래프 정점을 검색한 다음, 상기 검색된 그래프 정점과 상기 테이블 필드를 질의 그래프 간선으로 저장한다. 질의 그래프 간선 생성기(514)는 구문 분석된 질의 내 선택 연산의 피 연산자인 테이블 필드가 서브 질의인 경우, 상기 서브 질의를 수집하여 서브 질의 리스트에 저장하고, 상기 서브 질의 리스트에 저장된 서브 질의를 획득하여, 상기 획득한 서브 질의를 재귀적 방법으로 질의 그래프 생성기(508)에 전달한다.
질의 그래프 탐색기(516)는 질의 그래프 생성기(508)를 통해 더 이상의 질의 그래프의 정점과 간선을 생성할 서브 질의가 없다면, 상기 질의 그래프를 그래프 탐색 알고리즘인 깊이 우선 탐색 알고리즘 및 너비 우선 탐색 알고리즘을 통해 질의 그래프를 탐색한다. 질의 그래프 탐색기(516)는, 질의 그래프를 탐색한 결과, 상기 질의 그래프의 모든 정점이 연결되었다면, 상기 질의 그래프를 구성시킨 질의를 병렬 질의로 판단하고, 상기 질의 그래프가 두 개 이상의 서브 그래프로 구성되어 모든 정점이 연결되지 않았다면, 상기 질의 그래프를 구성시킨 질의를 비병렬질의로 판단한다.
이제 도 6과 도 7을 참조하면, 본 발명과 관련된 방법들이 일련의 행위로서 설명된다. 몇몇 행위들은 본 명세서에 도시되고 설명된 순서와 다른 순서로 일어날 수 있고 및/또는 다른 행위와 동시에 일어날 수도 있는바, 본 발명은 행위의 순서에 의하여 한정되지 않는다는 점을 이해할 것이다. 예를 들어, 당업자라면, 상태도와 같이 상호 관련된 일련의 상태 또는 이벤트로 방법이 표현될 수 있다는 것을 이해할 것이다. 또한, 도시된 행위 모두가 본 발명에 따른 방법을 구현하는데 필요한 것은 아닐 수 있다. 또한, 본 명세서를 통해 개시된 방법들은, 이러한 방법들을 운반 및 전송 가능하게 하는 제품에 저장될 수 있다는 것을 이해할 것이다. 본 명세서에서 제품이란. 임의의 컴퓨터 판독기능 장치, 반송파, 또는 매체로부터 액세스 가능한 컴퓨터 프로그램을 포함하는 것이다.
도 6을 참고하면, 도 6은 도 5의 중첩 질의 병렬성 검사 장치(500)의 처리 방법(600)을 도시한다. 방법(600)은 단계(602)에서 시작되고, 단계(604)에서 단말기로부터 입력받은 SQL 구문을 테이블, 관계, 조건을 해석하는 질의 분석을 수행한다. 단계(606)는 단계(604)에서 분석한 질의에서 정의된 두 개 이상의 테이블이 동일 조건의 분할 정책을 가지고 있는 분할 테이블인지 검사하여 동일 조건 분할 테이블인 경우는 단계(608)로 진행하고, 동일 조건의 분할 테이블이 아닌 경우는 단계(620)로 진행하여 비병렬질의를 실행하고 단계(622)에서 종료된다. 단계(608)는 동일 조건의 분할 정책을 가지는 분할 테이블이 병렬 질의 조건에 부합되는지 판단하기 위해, 분할 테이블의 분할 정책에 사용된 필드가 선택 연산에 사용되었는지 검사한다. 만약 상기 모든 분할 테이블의 분할 정책 필드가 선택 연산에 적어도 한번 이상 사용되었다면, 상기 질의는 병렬 가능 질의 후보로 판단하여 단계(610)로 진행하고, 만약 상기 임의의 분할 테이블의 분할 정책 필드가 선택 연산에 한 번도 사용되지 않았다면, 해당 질의는 병렬 질의가 불가능한 것으로 판단하여 단계(620)로 진행한다. 단계(610)는 단계(608)에서 전달받은 병렬 가능 질의 후보가 서브 질의를 포함하는 중첩 질의인지 검사하여 만약 중첩 질의라면 단계(612)로 진행하고, 만약 중첩 질의가 아니라면, 상기 후보 질의가 서브 질의를 가지지 않은 단순 질의를 병렬로 수행하기 위해 단계(618)로 진행하여, 병렬 질의를 수행하고 단계(622)에서 종료된다. 단계(612)는 단계(610)에서 전달받은 병렬 가능한 중첩 질의 후보의 질의 그래프를 생성하는 단계(612)로 진행하고, 단계(612)에서 생성된 질의 그래프에 대해 질의 병렬성을 검사하는 단계(614)로 진행하여, 상기 검사한 결과를 단계(616)에 전달한다. 단계(616)는 단계(614)에서 전달받은 병렬성 검사 결과를 취득하여 병렬 질의가 가능한 경우는 단계(618)로 진행하고, 병렬 질의가 불가능한 경우는 단계(620)로 진행한다.
도 7을 참고하면, 도 7은 도 6의 단계(612)의 질의 그래프 저장 방법(700)이 도시 된다. 방법(700)은 단계(702)에서 질의 그래프를 구성할 질의를 입력받아 시작되고, 단계(704)는 단계(702)에서 입력받은 질의 내 테이블 개수만큼 반복 수행한다. 단계(706)는 단계(704)가 입력받은 질의 내 테이블을 수집하고, 단계(708)로 진행하여 단계(706)에서 수집한 테이블이 서브 질의인지 판단하여, 만약 서브 질의인 경우는 단계(710)로 진행하고, 서브 질의가 아닌 경우는 단계(712)로 진행한다. 단계(710)는 단계(706)에서 판단한 서브 질의를 서브 질의 리스트에 등록하고, 단계(704)로 진행하여 다음 테이블을 검사한다. 단계(712)는 단계(708)에서 판단한 테이블의 서브 질의 깊이를 취득하고, 단계(714)로 이동하여 상기 서브 질의 깊이를 포함한 테이블을 질의 그래프 정점으로 저장한 다음, 단계(704)로 진행한다. 단계(704)는 더 반복 처리할 테이블이 없는 경우, 단계(716)로 진행한다.
단계(716)는 단계(702)에서 입력받은 질의 내 선택 연산의 개수만큼 반복 수행한다. 단계(718)는 단계(716)에서 입력받은 질의 내 선택 연산의 피 연산자를 수집하고, 단계(720)로 진행하여 단계(706)에서 수집한 피 연산자가 서브 질의인지 판단하여, 만약 서브 질의인 경우는 단계(722)로 진행하고, 서브 질의가 아닌 경우는 단계(724)로 전달한다. 단계(722)는 단계(720)에서 판단한 서브 질의를 서브 질의 리스트에 등록하고, 단계(716)로 진행하여 다음 선택 연산을 검사한다. 단계(724)는 단계(720)에서 판단한 피 연산자인 테이블 필드의 테이블 정보를 취득하고 단계(726)으로 진행한다. 단계(726)는 질의 그래프의 간선을 저장하기 위해 필요한 그래프 정점을 취득하기 위해, 앞선 저장된 질의 그래프에서 정점이 저장된 최근 순으로 단계(724)에서 취득한 테이블 정보의 테이블명과 일치하는 질의 그래프 정점을 검색하여. 상기 검색된 그래프 정점과 상기 테이블 필드를 질의 그래프 간선으로 저장한다.
단계(728)는 단계(704)와 단계(716)에서 등록한 서브 질의 리스트의 서브 질의 개수만큼 반복한다. 단계(730)는 서브 질의 리스트의 서브 질의를 획득하여 방법(700)을 재귀적 방법으로 호출한다. 단계(728)는 더 이상의 서브 지의 리스트에 서브 질의가 존재하지 않다면 단계(732)로 진행하여 종료된다.
도 8은 도 6의 단계(614)인 질의 병렬성 검사하는 방법(800)을 도시한다. 방법(800)은 도 7의 방법(700)에 의한 생성된 질의 그래프를 단계(802)에서 입력받아 시작하고, 단계(804)는 단계(802)에 입력받은 질의 그래프를 그래프 탐색 알고리즘인 깊이 우선 알고리즘 또는 너비 우선 알고리즘을 통해 그래프 탐색을 수행한다. 단계(806)는 단계(804)의 질의 그래프를 탐색한 결과, 상기 질의 그래프의 모든 정점이 연결되었다면, 병렬질의로 선택하는 단계(808)로 진행하고, 단계(812)로 진행되어 종료된다. 단계(806)는 단계(804)의 질의 그래프를 탐색한 결과, 상기 질의 그래프가 두 개 이상의 서브 그래프를 가지는 모든 정점이 연결되지 않았다면, 비병렬질의를 선택하는 단계(810)로 진행하고, 단계(812)에서 종료된다.
전술한 내용은 본 발명의 예들을 포함한다. 본 발명을 설명하기 위하여 방법 또는 구성 요소의 가능한 모든 조합을 설명하는 것은 불가능하지만, 당업자라면 보다 더 많은 다양한 조합 및 치환할 수 있다는 것을 이해할 것이다. 따라서, 본 발명은 특허청구범위의 사상 및 범위에 포함되는 이러한 모든 교체, 변경, 변화를 포괄하는 것이다.

Claims (18)

  1. 데이터베이스 장치에서 실행되는 중첩 질의 병렬성 검사 방법으로써,
    단말로부터 입력받은 질의문에 대해 분석하는 단계;
    상기 분석 결과에 따라, 병렬 질의가 가능한 중첩 질의 후보를 결정하는 단계;
    상기 결정된 질의 후보를 입력받아 무방향 질의 그래프를 생성하는 단계; 및
    상기 생성된 질의 그래프를 입력받아 질의 병렬성을 판단하는 단계를 포함하는 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 방법.
  2. 제1항에 있어서,
    상기 병렬 질의가 가능한 중첩 질의 후보를 결정하는 단계는,
    상기 분석 결과에 따라, 두 개 이상의 테이블이 동일 조건의 분할 정책을 가지고 있는 분할 테이블이고, 상기 분할 테이블의 분할 정책 필드가 선택 연산에 사용되었고, 및 상기 입력받은 질의문이 서브 질의를 가지고 있다면 병렬 질의가 가능한 중첩 질의 후보로 결정하는 단계를 포함하는 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 방법.
  3. 제1항에 있어서,
    상기 질의 그래프를 생성하는 단계는,
    입력받은 질의를 분석한 결과에 따라, 질의 내 테이블을 질의 그래프 정점으로 저장하는 단계; 및
    입력받은 질의를 분석한 결과에 따라, 질의 내 선택 연산의 피 연산자인 테이블 필드를 질의 그래프 간선으로 저장하는 단계를 포함하는 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 방법.
  4. 제3항에 있어서,
    상기 질의 그래프 정점을 저장하는 단계는,
    상기 질의 내 테이블을 수집하는 단계;
    상기 수집된 테이블의 서브 질의 깊이를 획득하는 단계; 및
    상기 획득한 서브 질의 깊이와 상기 질의 내 테이블을 질의 그래프 정점으로 저장하는 단계를 포함하는 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 방법.
  5. 제4항에 있어서,
    상기 질의 내 테이블을 수집하는 단계는,
    상기 질의 내 테이블이 서브 질의인 경우, 상기 서브 질의를 서브 질의 리스트에 저장하는 단계를 더 포함하는 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 방법.
  6. 제3항에 있어서,
    상기 질의 그래프 간선을 저장하는 단계는,
    상기 질의 내 선택 연산의 피 연산자인 테이블 필드를 수집하는 단계;
    상기 수집된 테이블 필드의 테이블 정보에서 테이블명을 획득하는 단계;
    상기 질의 그래프에서 정점이 저장된 최근 순으로 상기 획득한 테이블명과 일치하는 질의 그래프 정점을 검색하는 단계; 및
    상기 검색된 그래프 정점과 상기 수집된 테이블 필드를 질의 그래프 간선으로 저장하는 단계를 포함하는 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 방법.
  7. 제6항에 있어서,
    상기 테이블 필드를 수집하는 단계는,
    상기 질의 내 선택 연산의 피 연산자가 서브 질의인 경우, 상기 서브 질의를 서브 질의 리스트에 저장하는 단계를 더 포함하는 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 방법.
  8. 제5항 또는 제7항에 있어서,
    상기 서브 질의 리스트에 한 개 이상의 서브 질의가 저장된 경우,
    상기 서브 질의 리스트에서 서브 질의를 획득하는 단계;
    상기 획득한 서브 질의를 상기 무방향 질의 그래프로 생성하는 단계로 재귀 호출하는 단계를 더 포함하는 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 방법.
  9. 제1항에 있어서
    상기 질의 그래프의 병렬성을 판단하는 단계는,
    입력받은 질의 그래프를 탐색하는 단계;
    상기 탐색한 결과, 상기 질의 그래프의 모든 정점이 연결된 경우, 상기 단말로부터 입력받은 질의문을 병렬 질의로 판단하는 단계; 및
    상기 탐색한 결과, 상기 질의 그래프가 두 개 이상의 서브 그래프로 구성된 경우, 상기 단말로부터 입력받은 질의문을 비병렬질의로 판단하는 단계를 포함하는 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 방법.
  10. 단말로부터 입력받은 질의문을 분석하여 병렬 질의가 가능한 중첩 질의 후보로 결정하는 질의 구문 분석기;
    상기 결정된 중첩 질의 후보 질의를 입력받아 무방향 질의 그래프로 생성하는 질의 그래프 생성기; 및
    상기 생성된 질의 그래프를 입력받아 질의 병렬성을 판단하는 질의 그래프 탐색기를 포함하는 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 장치.
  11. 제10항에 있어서,
    상기 질의 구문 분석기는,
    상기 질의문의 분석 결과에 따라, 두 개 이상의 테이블이 동일 조건의 분할 정책을 가지고 있는 분할 테이블이고, 상기 분할 테이블의 분할 정책 필드가 선택 연산에 사용되고, 및 상기 입력받은 질의가 서브 질의를 가지고 있다면 병렬 질의가 가능한 중첩 질의 후보로 결정하는 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 장치.
  12. 제10항에 있어서,
    상기 질의 그래프 생성기는,
    입력받은 질의를 분석한 결과에 따라, 질의 내 테이블을 질의 그래프 정점으로 저장하는 질의 그래프 정점 생성기; 및
    입력받은 질의를 분석한 결과에 따라, 질의 내 선택 연산의 피 연산자인 테이블 필드를 질의 그래프 간선으로 저장하는 질의 그래프 간선 생성기를 포함하는 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 장치.
  13. 제12항에 있어서,
    상기 질의 그래프 정점 생성기는,
    상기 질의 내 테이블을 수집하고, 상기 수집된 테이블의 서브 질의 깊이를 획득하고, 상기 획득한 서브 질의 깊이와 상기 질의 내 테이블을 질의 그래프 정점으로 저장하는 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 장치.
  14. 제13항에 있어서,
    상기 질의 그래프 정점 생성기는,
    상기 질의 내 테이블이 서브 질의인 경우, 상기 서브 질의를 서브 질의 리스트에 저장하는 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 장치.
  15. 제12항에 있어서,
    상기 질의 그래프 간선 생성기는,
    상기 질의 내 선택 연산의 피 연산자인 테이블 필드를 수집하고, 상기 수집된 테이블 필드의 테이블 정보에서 테이블명을 획득하고, 상기 질의 그래프에서 정점이 저장된 최근 순으로 상기 획득한 테이블명과 일치하는 질의 그래프 정점을 검색하고, 및 상기 검색된 그래프 정점과 상기 테이블 필드를 질의 그래프 간선으로 저장하는 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 장치.
  16. 제15항에 있어서,
    상기 질의 그래프 간선 생성기는,
    상기 질의 내 선택 연산의 피 연산자가 서브 질의인 경우, 상기 서브 질의를 서브 질의 리스트에 저장하는 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 장치.
  17. 제14항 또는 제16항에 있어서,
    상기 서브 질의 리스트에 한 개 이상의 서브 질의가 저장된 경우, 상기 서브 질의 리스트에서 서브 질의를 획득하고, 상기 획득한 서브 질의를 상기 무방향 질의 그래프로 생성하는 질의 그래프 생성기를 재귀 호출하는 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 장치.
  18. 제10항에 있어서
    상기 질의 그래프 탐색기는,
    입력받은 질의 그래프를 탐색한 결과, 상기 질의 그래프의 모든 정점이 연결된 경우, 상기 단말로부터 입력받은 질의문을 병렬 질의로 판단하고, 상기 질의 그래프를 탐색한 결과, 상기 질의 그래프가 두 개 이상의 서브 그래프로 구성된 경우, 상기 단말로부터 입력받은 질의를 비병렬질의로 판단하는 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 장치.
KR1020160109876A 2016-08-29 2016-08-29 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 방법 및 장치 KR101714985B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160109876A KR101714985B1 (ko) 2016-08-29 2016-08-29 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160109876A KR101714985B1 (ko) 2016-08-29 2016-08-29 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 방법 및 장치

Publications (1)

Publication Number Publication Date
KR101714985B1 true KR101714985B1 (ko) 2017-03-15

Family

ID=58403150

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160109876A KR101714985B1 (ko) 2016-08-29 2016-08-29 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101714985B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110309334A (zh) * 2018-04-20 2019-10-08 腾讯科技(深圳)有限公司 图数据库的查询方法、系统、计算机设备和可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040034289A (ko) * 2002-10-17 2004-04-28 주식회사 지앤 참조 무결성 제약 조건을 이용하여 데이터 웨어하우스내의실체뷰에 대한 일관성 관리를 병렬 처리하는 기법
US20100121839A1 (en) * 2007-03-15 2010-05-13 Scott Meyer Query optimization
KR101472257B1 (ko) * 2014-07-22 2014-12-11 (주)카디날정보기술 예측 논리적 데이터 지역성을 이용한 병렬질의 처리 방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040034289A (ko) * 2002-10-17 2004-04-28 주식회사 지앤 참조 무결성 제약 조건을 이용하여 데이터 웨어하우스내의실체뷰에 대한 일관성 관리를 병렬 처리하는 기법
US20100121839A1 (en) * 2007-03-15 2010-05-13 Scott Meyer Query optimization
KR101472257B1 (ko) * 2014-07-22 2014-12-11 (주)카디날정보기술 예측 논리적 데이터 지역성을 이용한 병렬질의 처리 방법 및 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110309334A (zh) * 2018-04-20 2019-10-08 腾讯科技(深圳)有限公司 图数据库的查询方法、系统、计算机设备和可读存储介质

Similar Documents

Publication Publication Date Title
Fernandez et al. Aurum: A data discovery system
Khayyat et al. Bigdansing: A system for big data cleansing
JP6207619B2 (ja) ソース追跡によるデータのプロファイリング
US9870401B2 (en) Database system with highly denormalized database structure
US7840555B2 (en) System and a method for identifying a selection of index candidates for a database
US20120117054A1 (en) Query Analysis in a Database
US10565201B2 (en) Query processing management in a database management system
Xirogiannopoulos et al. Extracting and analyzing hidden graphs from relational databases
Zou et al. Lachesis: automatic partitioning for UDF-centric analytics
Ragkhitwetsagul Measuring code similarity in large-scaled code Corpora
Dinari A survey on graph queries processing: techniques and methods
Papamichalopoulos et al. Three-dimensional geospatial interlinking with jedai-spatial
Sidney et al. Performance prediction for set similarity joins
KR101714985B1 (ko) 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 방법 및 장치
Xirogiannopoulos et al. Memory-efficient group-by aggregates over multi-way joins
Guo et al. Distributed processing of regular path queries in RDF graphs
Al-Amin et al. Big data analytics: Exploring graphs with optimized SQL queries
CN110580170A (zh) 软件性能风险的识别方法及装置
Moussa Tpc-h benchmarking of pig latin on a hadoop cluster
Muzammal Mining sequential patterns from probabilistic databases by pattern-growth
Zhu et al. High-performance row pattern recognition using joins
Mihaylov et al. Scalable learning to troubleshoot query performance problems
Malviya et al. An FP Tree based Approach for Extracting Frequent Pattern from Large Database by Applying Parallel and Partition Projection
Ehrlich et al. Holistic Data Profiling: Simultaneous Discovery of Various Metadata.
Sidló et al. Shaping SQL-based frequent pattern mining algorithms

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant