KR101472257B1 - 예측 논리적 데이터 지역성을 이용한 병렬질의 처리 방법 및 장치 - Google Patents

예측 논리적 데이터 지역성을 이용한 병렬질의 처리 방법 및 장치 Download PDF

Info

Publication number
KR101472257B1
KR101472257B1 KR20140092334A KR20140092334A KR101472257B1 KR 101472257 B1 KR101472257 B1 KR 101472257B1 KR 20140092334 A KR20140092334 A KR 20140092334A KR 20140092334 A KR20140092334 A KR 20140092334A KR 101472257 B1 KR101472257 B1 KR 101472257B1
Authority
KR
South Korea
Prior art keywords
query
shared
parallel
shared table
executors
Prior art date
Application number
KR20140092334A
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 KR20140092334A priority Critical patent/KR101472257B1/ko
Application granted granted Critical
Publication of KR101472257B1 publication Critical patent/KR101472257B1/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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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/24558Binary matching operations
    • G06F16/2456Join operations
    • 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/282Hierarchical databases, e.g. IMS, LDAP data stores or Lotus Notes

Landscapes

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

Abstract

본 발명은 전통적인 RDBMS와 NoSQL을 혼합한 하이브리드(Hybrid) 데이터베이스를 기반으로 대용량 데이터를 NoSQL에 저장하여 공유하고, 질의를 RDBMS에서 수행하는 과정에서 공유된 대용량 데이터의 질의를 중첩되지 않는 영역으로 분리하여 병렬로 질의하는 예측 논리적 데이터 지역성(Predictable Logical Data Locality)에 대한 발명을 제안한다. 예측 논리적 데이터 지역성은 병렬질의를 수행하는 과정에서 발생되는 질의 병렬성을 제공하지 못하는 문제와 공유 테이블을 공유함에 따른 네트워크 부하 증가를 감소하기 위한 방법으로, 질의 분석하는 과정에서 공유 테이블의 데이터를 질의 특성에 따라 가변적으로 변하는 논리적 데이터 지역성(Logical Data Locality)을 가지도록 구성한다. 상기 방법을 위해 본 발명은 사용자가 입력한 질의를 분석하여 공유 테이블 단독 질의, 공유 테이블과 복제 테이블의 조인 질의, 그리고 공유 테이블과 분할 테이블의 조인 질의를 분리하여 논리적 데이터 지역성을 결정하고, 공유 테이블의 분리 방법을 병렬 처리 개수에 따라 가변적으로 결정하는 특징을 가진다.

Description

예측 논리적 데이터 지역성을 이용한 병렬질의 처리 방법 및 장치{Method and device for parallel query processing using predictable logical data locality}
본 발명은 본 발명은 전통적인 RDBMS와 NoSQL을 혼합한 하이브리드(Hybrid) 데이터베이스를 기반으로 대용량 데이터를 NoSQL에 저장하고 질의를 RDBMS에 수행하는 과정에서 대용량 데이터의 질의를 중첩되지 않는 지역으로 분리하여 병렬로 질의하는 예측 논리적 데이터 지역성(Predictable Logical Data Locality)에 대한 방법 및 장치에 관한 것이다.
[문헌 1] Ozsu, M. Tamer, and Patrick Valduriez. Principles of distributed database systems. Springer, 2011.
[문헌 2] Bernstein, Philip A., and Nathan Goodman. "Concurrency control in distributed database systems." ACM Computing Surveys (CSUR) 13.2 (1981): 185-221.
2000년대에 들어서면서 인터넷의 발전과 함께 SNS 서비스가 활성화되면서 SNS 서비스 시스템은 특정 고객이 아닌 전 세계 사람들을 대상으로 하는 형태의 서비스로 발전되었고 이는 기존의 기업 시스템에서 볼 수 없었던 대규모 데이터를 생산해냈다. 또한 이 데이터들은 기존 기업 데이터에 비해 매우 단순한 형태를 띠게 되었다. 즉 데이터의 패러다임이 한정된 규모의 복잡성이 높은 데이터에서 단순한 대량의 데이터로 넘어가기 시작했다. 이는 기존의 데이터 저장 시스템으로는 커버할 수 없는 여러 가지 한계를 야기했고 결국에는 새로운 형태의 데이터 저장 기술을 요구하게 되었다. 이러한 시점에 탄생한 NoSQL(Not Only SQL)은 기존 RDBMS 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미하며, 복합한 관계가 없는 단순한 대량의 데이터를 분산하여 저장하는 기술이다.
RDBMS의 데이터 분산 기술이 없었던 것은 아니다. NoSQL 나타나기 이전인 1990년대에 데이터베이스를 분산하여 저장하고 그것을 하나의 데이터베이스로 인식하여 사용하는 기술인 분산데이터베이스는 아주 난이도가 높은 고급기술로 인식되었다. 2000년도에 클라우드 컴퓨팅, SOA(Service Oriented Architecture)를 인식하듯 분산데이터베이스를 인식하고 연구·도입하려는 기업이 많았었고, DBMS의 기능이 강해지고 네트워크 속도가 빨라지면서 분산 데이터베이스가 초기에 예상한 만큼 확산되지는 않았지만, 여전히 많은 데이터베이스는 네트워크를 통한 데이터베이스 간의 공유체계를 통해 분산데이터베이스로 발전하고 있었다. 하지만, 분산 RDBMS는 RDBMS가 가지는 트랜잭션의 한계로 인해 데이터 분할 방법에 많은 제약이 따라왔다. 이러한 제약은 SNS 서비스로 대변되는 초 대용량 데이터를 처리하기에는 한계에 다다르게 되었고, 결국 새로운 데이터베이스인 NoSQL의 태동을 알리게 된 계기가 되었다.
NoSQL은 초 대용량 데이터를 처리하기 위해 트랜잭션을 배제한 데이터베이스로 분산데이터베이스로 태생 자체가 전통적인 RDBMS와 다르다는 것을 주장한다. 따라서, NoSQL은 RDBMS가 가지는 큰 장점인 트랜잭션과 SQL을 초기에 지원하지 않았었다. 하지만, 개발자들은 관계형 데이터베이스가 지난 40년 동안 압도적으로 인기가 있게 만든 SQL(Structured Query Language)을 쉽게 포기하지 않았다. 이러한 요구는 NoSQL에서 SQL을 지원하게 만들었고, 전통적인 RDBMS와 NoSQL의 장점을 합친 새로운 데이터베이스인 NewSQL의 태동을 알리게 되는 계기가 되었다.
본 발명은 이러한 새로운 데이터베이스의 패러다임인 NewSQL을 구현하기 위한 전통적인 RDBMS와 NoSQL을 혼합한 Hybrid 데이터베이스를 기반으로 대용량 데이터를 NoSQL에 저장하고 질의를 RDBMS에 수행하는 과정에서 대용량 데이터의 질의를 중첩되지 않는 지역으로 분리하여 병렬로 질의하는 예측 논리적 데이터 지역성(Predictable Logical Data Locality)에 대한 발명을 제안한다.
이하에서는 본 발명의 몇 가지 실시예에 대한 기본적인 이해를 돕기 위하여 간단한 요약 및 도면을 참조한 설명을 제공한다. 이 요약은 광범위한 개관이 아니며, 본 발명의 중요/핵심 구성 요소를 식별하거나 특허청구범위를 한정하고자 하는 것이 아니다. 이는 단지, 이하의 보다 상세한 설명에 대한 서설로서, 몇몇 개념들을 단순한 형태로 제공하기 위한 것이다. 도면의 동일한 참조 번호는 동일한 구성요소를 나타낸다.
RDB기반의 분산데이터베이스는 도 1과 같이 사용자로부터 질의를 받아들여 질의를 분석하는 질의 분배기(102)와 테이블을 물리적 저장장치에 저장하고 있는 질의 실행기(104,106)로 구성된다. 질의 분배기(102)는 입력된 질의를 분석하여 해당 질의에 포함된 테이블이 저장된 질의 실행기(104,106)에 질의를 분산시키고, 질의 실행기(104,106)에 분산된 질의 결과를 넘겨 받아 합치는 역할을 담당한다.
도 1의 전통적인 분산데이터베이스(100)는 질의 실행기(104,106)에 테이블을 특정 조건에 의해 중첩되지 않도록 분할한 분할 테이블(114,118)로 저장하거나, 또는 질의 실행기에 동일한 테이블을 중첩하여 저장하는 복제 테이블(112,116)로 저장될 수 있다. 일반적으로 복제된 테이블(112,116)은 레코드 수가 적은 테이블을 저장하고, 분할 테이블(114,118)은 레코드 수가 많은 경우에 사용된다. 질의 분배기(102)는 질의를 분석하여 질의 실행기(104,106)에서 실행된 결과를 취합하여 조인 테이블(110)을 생성하고 조인 테이블(110)을 이용한 정렬, 그룹, 또는 집계/통계 함수 등을 수행한다.
분산데이터베이스에서 임의의 테이블 두 개를 이용한 분할 방법을 논하기 전에, 일반적인 데이터베이스에서 두 개의 테이블을 조인 방법(200)을 도 2와 같이 도시한다. 도 2는 두 개의 테이블 A(210)와 테이블 B(212)를 정의하고, 테이블 A(210)에는 레코드 a와 b가 존재하고 테이블 B(212)에는 레코드 1과 레코드 2가 존재한다. 상기와 같이 정의된 도 2의 두 개의 테이블(210,212)에 대한 질의(202) 'Select * from A, B'를 수행한 결과는 결과 테이블(214)와 같이 총 4개의 레코드가 출력된다.
도 2의 테이블 A(210)와 테이블 B(212)를 도 1과 같은 분산데이터베이스를 이용하여 테이블을 도 3과 같이 분할하였다고 가정하면, 질의 분배기(102)에 의해 분할된 질의가 질의 실행기(104,106)에 전달되어 질의 실행기(104,106)에서 수행한 질의 결과를 질의 분배기(102)에서 합치게 된다. 하지만, 도 3의 분할된 테이블 A(320,330)와 테이블 B(322,332)에 대한 질의 결과는 도 2의 결과 테이블(214)과 다른 결과 테이블(340)이 출력된다. 그 이유는 질의 실행기(310,312)에 각각 저장된 테이블 A(320,330)와 테이블 B(322,332)만으로 테이블 조인이 발생되어, 분할되어 다른 질의 실행기에 저장된 테이블 레코드와 조인이 불가능하기 때문이다.
분산데이터베이스에서는 상기와 같은 문제점을 해결하기 위해, 도 4와 같이 질의를 수행한다. 도 4의 질의 수행 절차를 살펴보면, 도 4의 질의 분배기(410)는 질의 실행기(420,422)에 저장된 테이블 데이터를 모두 넘겨 받아 조인을 분할된 두 개의 테이블 A(430,440)와 테이블 B(432,442)를 질의 실행기(420,422)가 아닌 질의 분배기(410)에서 수행하며, 결과 테이블(450)을 출력한다. 도 4의 분산데이터베이스의 테이블 조인 질의는 마치 한대의 노드에서 수행되는 단일 머신 데이터베이스와 동일하게 동작한다. 하지만, 단일 머신 데이터베이스에 비해 도 4의 분산데이터베이스는 질의 실행기(420,422)에서 질의 분배기(410)로 데이터를 전송하는 부하까지 발생하는 구조이기 때문에 매우 비효율적인 분산 정책을 가진다.
근본적인 분산데이터베이스는 질의를 질의 실행기(420,422)에 분산시켜 질의 속도를 향상시키는 방법이다. 하지만, 도 4와 같은 데이터 분할 정책은 분산데이터베이스의 장점을 살릴 수 없기 때문에, 두 개의 테이블 중 하나는 복제 테이블로 만들어 도 5와 같이 질의를 분산시킨다. 테이블 A(520,530)는 분할 테이블로 구성하고 테이블 B(522,532)는 복제 테이블로 구성한다. 따라서, 분산데이터베이스의 질의 실행기(510,512)에서 각각 독립된 질의를 수행한 결과 테이블(540)은 도 2와 같은 정상적인 조인 결과(214)를 출력한다. 하지만, 도 5의 분할 정책은 테이블 B(522,532)가 대량의 레코드 수를 가지고 있다면, 데이터 중복성이 커지게 되어 보다 많은 물리적 저장공간이 필요한 단점을 가진다. 따라서, 두 개의 테이블 중에서 상대적으로 적은 테이블을 복제시킴으로써 데이터 중복성을 감소시킨다.
만약, 도 5에서 두 개의 테이블이 동일하게 대용량이라면, 데이터 중복성이 두 개의 테이블을 모두 복제 테이블로 만드는 것보다 작다고 하더라도, 데이터 중복성에 의한 물리적 저장장치의 불필요한 공간을 해결하는 방법은 되지 않는다. 따라서, 본 발명은 질의 실행기의 복제 테이블을 도 6과 같이 공유 저장 공간에 복제 테이블 B(620)을 저장하여 데이터 복제에 따른 데이터 중복성을 최소화하도록 제공하고, 질의 생성기(612,614) 관점에서 테이블 B(620)을 마치 복제 테이블로 인식시켜 테이블 A(630,640)와 테이블 B(620)의 조인된 결과 테이블(650)이 도 5의 결과 테이블(540)과 동일하게 출력되도록 만든다. 또한 본 발명은 공유 저장소(610)를 NoSQL을 사용함으로써, 단순한 저장공간에 복제 테이블을 저장하는 것보다, 질의를 통해 보다 다양한 결과를 출력할 수 있도록 구성시키는 특징을 가진다.
공유 테이블을 이용하여 데이터의 중복성을 감소시키고, 분할 질의가 가능하도록 만드는 방법은 매우 효과적인 병렬질의를 수행할 수 있는 방법이다. 하지만, 공유 테이블을 사용할 경우는 공유 테이블 단독 질의에 대한 병렬성 문제, 공유 테이블과 복제 테이블 조인 질의에 대한 병렬성 문제, 그리고 공유 테이블과 분할 테이블과의 조인 질의에서 발생되는 네트워크 부하 문제가 발생한다.
공유 테이블 단독 질의와 복제 테이블과 공유 테이블의 조인 질의에 대한 병렬성 문제는 도 7과 같은 사항으로 고려될 수 있다. 데이터 노드에 저장된 테이블 A(730,740)가 복제 테이블일 경우, 공유 테이블 B(720)와 조인을 병렬질의로 수행할 경우 두 개의 질의 실행기(712,714)가 동시에 질의를 수행하게 되어 동일한 결과를 두 개의 질의 실행기(712,714)에서 질의 분배기(710)로 넘겨 준다. 따라서, 질의 분배기(710)는 동일한 레코드가 두 번씩 나타나게 되어 오류가 발생한 결과를 사용자에게 리턴 한다. 이러한 문제점을 해결하는 방법으로 복제 테이블을 가지고 있는 질의 실행기(712,714)들 중 한 개의 노드를 마스터 질의 실행기(712)로 설정하여 마스터 질의 실행기(712)에만 질의를 수행하도록 구성한다.
상기 도 7과 같이 공유 테이블 단독 질의와 공유 테이블과 복제 테이블간의 조인에서 발생되는 질의 병렬성 문제를 해결하기 위해 본 발명은 공유 테이블의 질의를 수행하는 과정에서 병렬 질의를 수행할 질의 실행기의 개수를 판단하여, 상기 개수만큼 공유 테이블을 분할하여 병렬 질의를 수행할 수 있도록 제공한다. 상기 병렬 질의를 수행할 질의 실행기의 개수는 공유 테이블 단독 질의인 경우는 현재 활성화된 질의 실행기의 전체 개수로 설정하고, 공유 테이블과 복제 데이블 조인 질의인 경우는 복제 테이블을 저장하고 있는 질의 실행기의 개수로 설정된다.
도 8을 참조하면, 도 8은 도 7의 복제 테이블과 공유 테이블간의 조인 질의에 따른 질의 병렬성 문제를 해결한 공유 테이블 분할 방법(800)을 도시한다. 도 8의 질의 실행기(812,814)에서 수행되는 질의는 질의 분배기(810)가 사용자 질의(802)를 입력 받아 질의 질행기(812,814)에 다음과 같이 자동으로 생성하여 전달한다.
select * from A, B where partition_func(B.field, total_nodes, order_no) = true
분할함수 partition_func()는 분할을 수행할 공유 테이블 B(820)의 특정 필드명(B.field), 병렬질의를 수행할 질의 실행기 노드 수(total_nodes), 그리고 병렬 질의를 수행할 질의 실행기 순차 번호(order_no)를 입력 받아, B.field 데이터 값을 모듈러(modulo) 연산, 해시 연산(hash), 그리고 영역(range) 연산 또는 상기 연산 함수들의 조합으로 임의의 한 개의 입력 값에 대해 항상 동일한 출력 값을 출력하여 영역을 구분하는 함수이다. 따라서, 분할함수 partition_func()는 연산 규칙에 의해 서로 중첩되지 않는 분할된 영역으로 공유 테이블을 분할하여 해당 레코드가 세 번째 입력 변수인 order_no 분할 영역에 속할 경우는 true를 리턴 하고, 아닌 경우는 false를 리턴 한다. 예를 들어, 도 8의 질의 실행기(812,814)별 질의는 다음과 같다.
질의 실행기 #1 : select * from A, B where partition_func(B.field, 2, 0) = true
질의 실행기 #2 : select * from A, B where partition_func(B.field, 2, 1) = true
상기와 같이 질의 분배기는 질의 실행기에 병렬질의를 전달할 때, 공유 테이블의 분할을 수행할 수 있는 정보를 추가로 전달한다. 질의 분배기가 전달하는 분할 정보는 공유 테이블 단독 질의는 전체 질의 실행기 노드 수와 병렬 질의 순차 번호로 구성하고, 공유 테이블과 복제 테이블의 조인 질의는 복제 테이블이 저장된 질의 실행기 노드 수와 병렬 질의 순차 번호로 구성된다. 따라서, 도 8에서 질의 실행기 #1(812)에 전달되는 분할 정보는 (2, 0)이고, 질의 실행기 #2(814)에는 (2, 1)이 전달된다.
또한, 질의를 질의 실행기(812,814) 노드에 전달하는 과정에서 분할되는 정보를 함께 전달할 경우, 임의의 질의 실행기(812,814) 노드 장애와 상관 없이 현재 활성화된 질의 실행기 노드를 판단하여 가변적으로 공유 데이터 노드를 분할 할 수 있는 병렬질의를 수행할 수 특징을 가진다. 본 발명에서는 질의 실행기 노드 중 임의의 개수가 장애가 발생한다면, 전체 복제 노드 중에서 장애가 발생한 노드를 제외한 노드 만으로 병렬 질의를 수행한다.
NoSQL에 저장된 공유 테이블을 사용한 질의를 수행할 경우, 도 6과 같은 분할 테이블 A(630,640)와 공유 테이블 B(620)간의 조인에서 테이블 B(620)가 대용량 레코드를 가지고 있다면 질의 실행기(612,614) 노드와 공유 저장소(610)와의 네트워크 부하가 공유 테이블 크기에 따라 선형적으로 증가하는 문제를 가진다. 만약, 질의 실행기 노드에서 수행되는 병렬 질의가 필요한 공유 테이블의 일부분만을 필요로 한다면, 공유 테이블의 전체 레코드를 질의 실행기에 전송하는 것보다 필요한 부분만을 추출하여 질의 실행기에 전달하는 것이 네트워크 부하를 감소시킬 수 있다.
도 9를 참조하면, 도 9는 질의 실행기(912,914) 노드의 분할 테이블 A(930,940)와 공유 저장소(910)의 공유 테이블 B(920)의 특정 필드 조건을 수반하는 질의(902)를 수행할 경우, 질의 실행기(912,914)에 저장된 분할 테이블 A(930,940)의 분할 정책을 이용하여 공유 테이블 B(920)를 분할하는 방법(900)을 도시한다. 본 발명에서는 공유 테이블을 저장하는 공유 저장소로 NoSQL을 사용한다. RDB와 NoSQL은 서로 호환되지 않는 데이터 저장 구조를 가지는 데이터베이스로 RDB에 저장된 테이블과 NoSQL에 저장된 테이블간의 외부 키와 같은 동일한 제약조건 관계를 설정할 수 없기 때문에, 본 발명에서는 NoSQL에 저장된 공유 테이블에 제약조건을 명시적으로 표현할 수 있는 정보를 질의 실행기에 저장한다. 질의 실행기에 저장된 공유 테이블 제약조건은 제약조건 후보 필드와 분할 모드로 구성된다.
상기 공유 테이블 제약조건의 분할 모드는 분할 테이블의 분할 정책을 이용하며, 분할 개수에 따라 공유 저장소에 저장된 공유 테이블을 선택하는 영역을 최소화하기 때문에, 질의 실행기의 저장공간과 네트워크 부하를 감소시켜 고속 병렬질의가 가능하게 된다. 또한 본 발명은 공유 저장소를 NoSQL로 사용하기 때문에 단순 물리 저장공간 보다 유연한 질의를 통한 선별적 데이터 취득이 가능하며, 공유 저장소의 수평적 확장이 유연한 특징을 가진다.
다시 도 9를 참조하면, 도 9의 질의 실행기(912,914)는 질의 분배기가 전달한 질의(902)를 전달 받아 공유 테이블 제약조건을 이용한 질의를 다음과 같이 변환한다.
select * from A, B where A.f1 = B.f1 and policy_func(policy_of_A, B.f1, total_nodes, order_no) = true
도 9의 질의 실행기(912,914)는 공유 테이블 B(920)를 질의 실행기에 저장된 분할 테이블 A(930,940)의 분할 정책에 따라 분할된 테이블로 검색하기 때문에 동일한 레코드가 두 번 참조되지 않는다. 만약, 질의 실행기의 분할 테이블이 두 개 이상 존재한다면, 분할 정책을 AND 연산으로 나열한 질의로 구성한다. 상기 예문의 함수 policy_func()는 테이블 A(930,940)의 분할 정책에 따라 공유 테이블을 분할하는 함수로 첫 번째 입력변수로 분할테이블의 분할 정책(policy_of_A), 두 번째 입력변수로 공유테이블의 제약조건 필드명(B.f1), 세 번째 입력변수로 분할 테이블을 저장하고 있는 전체 질의 실행기 개수(total_nodes), 그리고 네 번째 입력변수로 병렬질의를 수행할 질의 실행기 순차 번호(order_no)를 입력 받아, 공유 테이블을 분할 테이블의 분할 정책과 동일하게 분할하는 함수이다.
상기와 같이 질의 분배기는 질의 실행기에 병렬질의를 전달할 때, 공유 테이블과 분할 테이블의 조인에서 공유 테이블의 분할을 수행할 수 있는 정보를 추가로 전달한다. 질의 분배기가 전달하는 분할 정보는 분할 테이블이 저장되어 있는 질의 실행기의 개수와 병렬 질의 순차 번호로 구성된다.
본 발명에서 제안하는 공유 테이블 제약조건을 저장하는 방법은 위상적으로 질의 분배기와 질의 실행기에 저장할 수 있다. 질의 분배기에 공유 테이블 제약 조건을 저장한 경우를 고려해 보자. 질의 분배기에 공유 테이블 제약 조건을 저장하고 있다면, 질의 분배기를 장애 허용 정책을 위해 고가용성으로 시스템을 구축할 경우, 임의의 질의 분배기에서 설정한 공유 테이블의 제약 조건을 다른 질의 분배기에서 동일한 정보로 갱신하는 데이터 동기화를 수반한다. 또는 공유 저장 공간에 해당 정보를 저장하여 모든 질의 분배기가 동일한 정보를 취득할 수 있도록 시스템을 구성한다.
반면, 질의 실행기에 공유 테이블 제약조건을 저장하는 경우는, 질의 분배기가 모든 질의 실행기와 연결되어 있기 때문에, 임의의 질의 분배기에서 설정한 공유 테이블 제약조건을 다른 질의 분배기에 동기화를 위한 통보를 수반하지 않는다. 질의 분배기는 병렬질의를 질의 실행기에 전달하고 질의 실행기는 공유 테이블 제약조건을 이용한 논리적 데이터 지역성을 결정하면 되기 때문이다.
본 발명은 공유 저장 공간에 저장된 공유 테이블을 NoSQL을 이용하여 저장하고 병렬 질의를 수행함에 있어 발생되는 공유 테이블 단독 질의와 공유 테이블과 복제 테이블의 조인 질의의 질의 병렬성 문제와, 공유 테이블과 분할 테이블의 조인 질의에서 발생되는 네트워크 부하 문제를 해결하기 위해 질의를 분석하는 과정에서 공유 테이블의 데이터를 질의 특성에 따라 논리적 데이터 지역성(Logical Data Locality)으로 결정하는 예측 논리적 데이터 지역성(Predictable Logical Data Locality)을 제안한다.
데이터 지역성은 비슷한 성격을 가지는 데이터 유형을 같은 지역에 배치시킴으로써 데이터 처리를 위한 읽기/쓰기 속도를 개선하는 방법이다. 본 발명의 데이터 지역성은 물리적 데이터 지역성 보다는 논리적 데이터 지역성을 질의 유형에 따라 결정하는 방식으로, 공유 저장 공간에 저장된 공유 테이블을 질의에 따라 데이터를 분리한다. 공유 테이블 단독 질의와 공유 테이블과 복제 테이블의 조인에서 발생되는 공유 테이블의 논리적 데이터 지역성과, 공유 테이블과 분할 테이블의 조인에서 발생되는 논리적 데이터 지역성을 구분하여 병렬 질의의 조건절에 첨가함으로써 공유 테이블의 분리 방법을 가변적으로 결정하고, 시스템 장애와 상관없이 병렬 질의가 가능하도록 분할 방법을 가변적으로 결정하는 예측 논리적 데이터 지역성을 기반으로 한 병렬 질의 처리 방법이다.
도 10을 참조하면, 도 10은 본 발명의 시스템 구성도(1000)를 도시한다. 시스템(1000)은 사용자의 질의를 입력 받아 질의를 병렬질의로 변환하기 위해 질의를 분할하는 질의 분배기(1002)와 분할된 병렬질의를 수행하는 질의 실행기(1010,1012)와 공유 테이블을 저장하는 NoSQL(1020)으로 구성된다. 질의 분배기(1002)의 예측 논리적 데이터 지역성(1070)은 공유 테이블 단독 질의와 공유 테이블과 복제 테이블의 병렬질의를 처리하고, 질의 실행기(1010,1012)의 예측 논리적 데이터 지역성(1080,1082)는 공유 테이블과 분할 테이블의 병렬 질의를 처리하기 위해 공유 테이블 제약조건을 이용한 병렬질의를 수행한다.
시스템(1000)의 NoSQL(1020)은 질의 실행기(1010,1012) 관점에서 가상적인 한 개의 데이터베이스로 인식되지만, NoSQL의 특성상 NoSQL에 저장된 공유 테이블은 복수개의 물리적 노드(1050,1052,1054)에 분할되어 저장된다. 상기와 같이 NoSQL에 저장된 분할 테이블을 공유 분할 테이블(1060,1062,1064)라고 정의하며, 질의 실행기(1010,1012)의 예측 논리적 데이터 지역성(1080,1082)은 NoSQL의 물리적 노드(1050,1052,1054)에 동일한 질의를 수행한다. 따라서, 본 발명은 NoSQL 물리적 노드 증설에 따라 질의 실행기의 정보를 갱신할 필요가 없으며, 질의 실행기의 물리적 증설에 따른 정보를 NoSQL에 갱신할 필요가 없는 무공유 시스템인 특징을 가진다.
전술한 바 및 그와 관련된 목적들을 달성하기 위하여, 이하의 설명 및 첨부된 도면과 관련하여 특정한 예시적인 양태들이 설명된다. 하지만, 이러한 양태들은 본 발명의 원리가 사용될 수 있는 다양한 방법 중에 오직 일부만을 설명하는 것일 뿐이며, 본 발명에서는 이러한 모든 양태 및 그 균등물들을 포함하고자 한다. 그 밖의 유리하고 새로운 특징들은, 첨부된 도면과 함께 이하의 상세한 설명을 참조하면 명백해질 것이다.
본 발명의 예측 논리적 데이터 지역성은 NoSQL에 저장된 공유 테이블의 단독 질의와 분산데이터베이스가 가지는 복제 테이블과 공유 테이블간의 조인에서 병렬 질의를 수행하지 못하는 문제 및 분할 테이블와 공유 테이블간의 조인에서 발생되는 병렬 질의 수행과정에서 발생되는 네트워크 부하 문제를 해결하는 방법으로 병렬 처리를 위한 질의 실행기 노드 증가에 따른 질의 처리 속도의 선형적 증가를 보장한다.
질의 처리 속도의 선형적 증가는 분산 시스템의 수평적 확장을 보장하기 때문에, 수평적 확장에 따른 네트워크 시설 투자 비용을 절감할 수 있으며, 일반(commodity) 서버를 사용한 분산 병렬 처리를 수행함으로써 물리적 노드 증가에 따른 시스템 투자 비용을 절감시킬 수 있다. 또한, 공유 테이블의 저장소를 NoSQL을 사용함으로써, RDB와 다른 유연한 수평적 확장성 보장 및 NoSQL을 이용한 빅데이터 저장이 가능하다. 뿐만 아니라, NoSQL이 지원하지 않는 표준 SQL 언어를 이용한 질의가 가능함으로써, 신기술 습득에 필요한 개발자들의 기술 재투자 비용을 절감하는 효과를 가진다.
도 1은 전통적인 분산데이터베이스 처리도
도 2는 전통적인 관계형데이터베이스의 조인 절차도
도 3은 분할 테이블에 대한 질의 처리도
도 4는 분산데이터베이스의 분할 테이블의 질의 처리도
도 5는 분할 테이블과 복제 테이블의 질의 처리도
도 6은 분할 테이블과 공유 테이블의 질의 처리도
도 7은 복제 테이블과 공유 테이블의 질의 처리도
도 8은 예측 논리적 데이터 지역성을 이용한 공유 테이블과 복제 테이블의 질의 처리도
도 9는 예측 논리적 데이터 지역성을 이용한 공유 테이블과 분할 테이블의 질의 처리도
도 10은 예측 논리적 데이터 지역성을 이용한 병렬질의를 지원하는 시스템 구조도
도 11은 시스템 계층도
도 12는 질의 분배기 구조도
도 13은 질의 실행기 구조도
도 14는 공유 테이블 정의 순서 처리도
도 15는 공유 테이블 제약조건 구조도
도 16은 질의 분배기 순서 처리도
도 17은 병렬질의 생성 순서 처리도
도 18은 질의 실행기 순서 처리도
이제 도면을 참조하여 본 발명을 설명하고자 한다. 도면에서 동일한 참조 번호는 동일한 구성요소를 나타낸다. 이하의 설명에서는 설명을 목적으로, 본 발명에 대한 보다 충분한 이해를 돕기 위하여 여러 가지 구체적인 세부 사항을 설명하였다. 하지만, 이러한 구체적인 세부 사항 없이도 실시될 수 있다는 점이 명백할 것이다. 한편 본 발명에 대한 설명을 보다 용이하게 하기 위하여, 잘 알려진 구조 및 장치들은 블록도의 형태로 도시하였다. 본 출원에 있어서, 개시된 발명을 구현하기 위하여, 본 발명은 컴퓨터를 제어하기 위한 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 임의의 조합을 생성하기 위하여 표준 프로그래밍 및/또는 엔지니어링 기법을 사용하여 메소드(method), 장치, 또는 제품으로 구현될 수 있다.
도 11을 참조하면, 도 11은 본 발명의 예측 논리적 데이터 지역성을 이용한 병렬질의 방법을 위한 시스템(1100)을 도시한다. 도 11의 시스템(1100)은 사용자의 질의를 입력 받아 질의를 분할하여 질의를 병렬질의를 변환 시키고 병렬질의된 결과를 취합하는 질의 분배기 계층(1102)과 질의 분배기(1102)에서 생성된 병렬질의를 수행하는 질의 실행기 계층(1104), 그리고 공유 테이블을 저장하는 NoSQL 계층(1106)으로 총 3 계층으로 구성된다. 각 계층은 모두 한 개 이상의 복수 개로 구성되어, 장애 발생에 따른 시스템 안정성을 보장하는 장애 허용이 보장된다. .
도 11의 질의 분배기 계층(1102)과 질의 실행기 계층(1104)은 RDB 기반의 분산데이터베이스 시스템이고, NoSQL 계층(1106)과 혼합된 이기종 데이터베이스 시스템 구성을 가진다. 질의 실행기 계층(1104)은 질의 분배기 계층(1102)에서 전달 받은 SQL 구문을 해석하여 NoSQL 질의로 변환하여 질의를 수행한다.
도 12을 참조하면, 도 12는 도 11의 질의 분배기의 시스템 구성도(1200)을 도시한다. 도 12의 질의 분배기(1200)는 사용자가 입력한 SQL 질의를 최적의 수행 절차를 찾기 위해 구문을 해석하는 질의 최적화(1210) 모듈과 상기 모듈에서 생성된 최적화된 질의를 수행하는 질의 실행(1212) 모듈로 구성된다. 질의 최적화(1210) 모듈은 사용자가 입력한 SQL 구문을 분석하여 테이블, 관계, 조건을 해석하는 질의 구문 분석(1220) 모듈과 상기 모듈에서 해석된 관계를 바탕으로 질의 조건을 최적화된 수행 절차를 정의한 질의 계획 수립(1222) 모듈, 그리고 상기 최적화된 질의 계획을 테이블의 분할 정보를 기반으로 동시 질의 수행을 결정하는 병렬질의 생성(1224) 모듈로 구성된다.
도 12의 질의 최적화(1210) 모듈에서 사용자 질의를 입력 받아, 병렬질의를 포함한 최적화된 질의 계획은 질의 실행(1212) 모듈로 전달되어 계획 순서에 따른 질의를 수행한다. 질의 실행(1212) 모듈은 질의 실행기에서 수행할 병렬질의를 우선 실행한다. 병렬질의 실행(1230) 모듈은 질의 최적화(1210) 모듈의 질의 계획에서 NoSQL에 저장된 공유 테이블의 존재 유무를 판단하여 병렬질의가 공유 테이블 단독 질의인 경우와 공유 테이블과 복제 테이블의 조인인 경우, 병렬질의를 수행하기 위해 질의 실행기 노드 관리(1234) 모듈에서 활성화된 질의 실행기 후보군을 추출하고, 추출된 질의 실행기 후보군 개수만큼 질의를 분할하여 질의 실행기에 질의를 전달하는 예측 논리적 데이터 지역성(1232) 모듈로 구성된다.
도 13을 참조하면, 도 13은 도 11의 질의 실행기의 시스템 구성도(1300)을 도시한다. 질의 실행기(1300)은 도 12의 질의 분배기(1200)과 유사하게 질의 최적화(1310) 모듈과 질의 실행(1312) 모듈로 구성된다. 질의 분배기(1200)의 질의 최적화(1210) 모듈은 병렬질의를 생성하기 위한 질의 계획을 수립하는 반면, 질의 실행기(1300)의 질의 최적화(1310) 모듈은 질의 분배기(1200)에서 전달받은 병렬질의에 대한 최적화된 질의 계획을 수립한다. 또한 질의 실행기(1300)의 질의 최적화(1310) 모듈은 질의 구문 분석(1320) 모듈에서 병렬질의 구문을 분석하여 테이블, 관계, 조건을 해석하는 기능을 수행하며, 분석한 테이블을 NoSQL에 저장된 공유 테이블과 질의 실행기(1300)와 동일한 물리적 노드에 존재하는 RDB 테이블을 분리한다. 상기 RDB 테이블은 복제 테이블과 분할 테이블로 구분된다. 따라서, 질의 구분 분석(1320) 모듈은 분리한 테이블의 특성에 따라 RDB 테이블은 RDB 질의 계획 수립(1322) 모듈에서 최적화를 수행하고 NoSQL 테이블은 NoSQL 질의 계획 수립(1324) 모듈에서 최적화를 수행한다.
질의 실행기(1300)의 질의 실행(1312) 모듈은 질의 최적화(1310) 모듈에서 생성된 최적화된 질의 계획을 기반으로 RDB 테이블로만 구성된 관계 질의 계획을 RDB 질의 실행(1320) 모듈에서 실행하고 NoSQL 테이블로만 구성된 관계 질의 계획은 NoSQL 질의 실행(1332) 모듈에서 실행한다. 만약, NoSQL에 저장된 공유 테이블이 RDB 테이블의 분할 테이블과 조인 관계를 가지고 있다면, 예측 논리적 데이터 지역성(1334) 모듈에서 공유 테이블 제약 조건에 해당하는 질의 조건이 존재하는지 판단한다. 만약 공유 테이블 제약 조건에 해당하는 질의 조건이 존재한다면, 예측 논리적 데이터 지역성(1334) 모듈은 NoSQL 질의에 공유 테이블의 제약 조건에 해당하는 필드의 분할 정책을 NoSQL 질의에 첨가하여 질의를 수행한다. RDB 테이블과 NoSQL 테이블에서 취득한 레코드 데이터는 질의 실행(1312) 모듈에서 조인 연산을 수행하고, 해당 결과를 질의 분배기(1200)에 전달한다. 질의 분배기(1200)는 질의 실행기(1300)에서 수행된 결과를 취합하여 정렬, 그룹, 집합 함수 연산 등을 수행하여 최종 결과를 출력한다.
이제 도 14 내지 도 18을 참조하면, 본 발명과 관련된 방법들이 일련의 행위로서 설명된다. 몇몇 행위들은 본 명세서에 도시되고 설명된 순서와 다른 순서로 일어날 수 있고 및/또는 다른 행위와 동시에 일어날 수도 있는바, 본 발명은 행위의 순서에 의하여 한정되지 않는다는 점을 이해할 것이다. 예를 들어, 당업자라면, 상태도와 같이 상호 관련된 일련의 상태 또는 이벤트로 방법이 표현될 수 있다는 것을 이해할 것이다. 또한 도시된 행위 모두가 본 발명에 따른 방법을 구현하는데 필요한 것은 아닐 수 있다. 또한, 본 명세서를 통해 개시된 방법들은, 이러한 방법들을 운반 및 전송 가능하게 하는 제품에 저장될 수 있다는 것을 이해할 것이다. 본 명세서에서 제품이란. 임의의 컴퓨터 판독기능 장치, 반송파, 또는 매체로부터 액세스 가능한 컴퓨터 프로그램을 포함하는 것이다.
도 14를 참고하면, 도 14는 NoSQL에 저장된 공유 테이블을 정의하는 방법(1400)이 도시된다. 방법(1400)은 단계(1402)에서 시작되고, 단계(1404)에서 NoSQL 테이블을 정의한다. 단계(1406)에서 단계(1404)에서 정의된 NoSQL 테이블에 예측 논리적 데이터 지역성을 정의하기 위한 NoSQL 테이블의 공유 테이블 제약조건을 정의하고, 단계(1408)에서 종료한다.
도 15를 참고하면, 도 15는 도 14에서 NoSQL에 저장한 공유 테이블의 공유 테이블 제약조건 구조(1500)가 도시된다. 구조(1500)의 첫 번째 필드는 NoSQL 테이블명(1502)를 저장하고, 두 번째 필드는 공유 테이블 제약조건 개수(1504)를 저장한다. 상기 필드(1504) 이후는 필드(1504)에 정의된 개수만큼 반복한 구조체 블록 리스트(1506)를 저장한다. 구조체 블록 리스트(1506)의 구조체 블록은 공유 테이블의 논리적 데이터 지역성을 결정하기 위한 제약조건 분할 필드명(1510)과 상기 필드의 분할 속성을 정의하는 제약조건 분할모드(1512)로 구성된다. 제약조건 분할모드(1512)는 모듈로(modulo) 연산, 해시(hash) 연산, 영역(range) 연산 함수 또는 상기 함수들의 조합으로 구성된 분할함수로 정의된다. 상기 분할함수는 임의의 한 개의 입력 값에 대하여 항상 동일한 출력 값만을 가지는 함수로 임의의 입력 값에 대해 두 개 이상의 출력 값이 가지지 않는다.
도 16을 참고하면, 도 16은 질의 분배기에서 병렬질의를 생성하여 질의 실행기에 전달하는 방법(1600)이 도시된다. 방법(1600)은 단계(1602)에서 시작되고, 단계(1604)에서 사용자가 입력한 SQL 구문을 분석하여 테이블, 관계, 조건을 해석한다. 단계(1606)은 단계(1604)에서 분석한 질에 대한 테이블, 관계, 조건을 이용하여 질의를 효율적으로 수행할 수 있는 질의 수행 계획을 수립하고, 단계(1608)에서 병렬질의를 생성한다. 단계(1608)은 도 17에 자세히 도시된다. 단계(1608)에서 생성된 병렬질의는 단계(1610)에서 테이블의 개수를 취득하고, 단계(1612)로 진행하여 테이블 개수가 한 개이고 한 개의 테이블이 NoSQL 테이블일 경우는 단계(1616)으로 진행한다. 단계(1612)에서 테이블의 개수가 두 개 이상 또는 NoSQL 테이블 이외의 것이 존재할 경우는 단계(1614)로 진행한다. 단계(1614)는 단계(1608)에서 생성한 병렬질의가 복제 테이블과 공유 테이블과의 조인으로 구성된다면 단계(1616)으로 진행하고, 복제 테이블과 공유 테이블과의 조인이 아닌 경우는 단계(1618)로 진행한다.
단계(1616)은 단계(1612)에서 병렬질의의 테이블 개수가 한 개이고 NoSQL로만 구성된 경우와 단계(1614)에서 복제 테이블과 공유 테이블의 조인인 경우에 진행되고, 시스템에서 정의된 전체 질의 실행기 개수만큼 병렬질의를 실행하고, 단계(1620)에서 종료된다. 상기 병렬질의는 전체 질의 수행기 개수 정보와 질의 수행 순차 번호 정보를 포함한다. 단계(1618)은 병렬질의가 수행할 질의 실행기에 병렬 질의를 전달하고 단계(1620)에 종료된다.
도 17을 참고하면, 도 17은 질의 분배기에서 사용자가 입력한 SQL 질의를 분석하여 질의에 포함된 분할 테이블과 공유 테이블의 특성에 따른 병렬질의를 생성하는 방법(1700)이 도시된다. 방법(1700)은 단계(1702)에서 시작되고, 단계(1704)에서 NoSQL 테이블의 개수만큼 단계(1706)와 단계(1708)을 반복한다. 단계(1706)에서 단계(1704)가 반복한 순서에 따라 NoSQL 테이블을 취득하고, 단계(1708)에서 단계(1704)에서 취득한 NoSQL 테이블과 RDB 테이블의 개수만큼, 단계(1710) 내지 단계(1716)까지 반복한다. 단계(1710)에서 단계(1708)가 반복한 순서에 따라 RDB 테이블을 취득하고 단계(1712)에서 단계(1706)에서 취득한 NoSQL 테이블과 단계(1710)에서 취득한 RDB 테이블과의 조인 관계를 판단하여, 조인 관계일 경우는 단계(1714)로 진행하고, 조인 관계가 아닌 경우는 단계(1716)으로 진행한다. 단계(1714)는 단계(1712)에서 NoSQL 테이블과 RDB 테이블과의 조인 관계일 경우에 진행되며, NoSQL 테이블을 복제 테이블의 성격을 가지도록 설정한 후 단계(1716)으로 진행한다. 단계(1716)에서는 조인 관계가 병렬질의가 가능한 조건을 검색하여 병렬질의를 구성한다. 상기 병렬질의가 가능한 조건은 동일한 분할 조건을 가지는 두 개 이상의 분할 테이블 또는 관계를 구성하는 두 개의 테이블 중 한 개의 테이블이 복제 테이블인 경우에 병렬질의를 생성한다. 따라서, 단계(1714)에서 설정된 NoSQL 테이블을 복제 테이블의 성격이 가지도록 설정하였기 때문에, 단계(1716)에서 병렬질의로 구성된다. 단계(1704)와 단계(1708)의 반복 조건만큼 반복이 완료된 후, 단계(1718)로 진행하여 종료된다.
도 18을 참고하면, 도 18은 질의 생성기가 질의 분배기에서 생성한 병렬질의를 입력 받아 RDB 테이블과 NoSQL 테이블을 분리하여 질의를 수행하는 방법(1800)이 도시된다. 방법(1800)은 단계(1802)에서 시작되고, 단계(1804)에서 질의 분배기에서 생성한 병렬질의를 입력 받아 병렬질의 구문 분석을 수행하여 테이블, 관계, 조건을 해석한다. 단계(1806)은 질의 분배기에서 넘겨준 질의 수행 전체 개수 정보와 질의 수행 순차 번호 정보를 추출한다. 단계(1808)에서 병렬질의를 수행하는 테이블이 NoSQL 테이블에서만 수행되는 전용 질의인 경우는 단계(1810)으로 진행하고, 아닌 경우는 단계(1812)로 진행한다. 단계(1810)는 단계(1806)에서 추출한 질의 수행 전체 개수와 질의 수행 순차 번호를 이용하여 논리적 데이터 지역성을 보장하기 위한 NoSQL 영역 분할 조건절을 추가하고, 단계(1818)에서 NoSQL 영역 분할 조건절이 추가한 새로운 질의를 재생성 한다.
단계(1812)는 RDB 테이블과 NoSQL 테이블과의 조인이 있는지 판단하여, RDB 테이블과 NoSQL 테이블과의 조인이 있다면 단계(1814)로 진행하고, 아닌 경우는 단계(1820)으로 진행한다. 상기 조인에서 공유 테이블의 제약조건이 존재하는지 판단하여 제약조건이 존재할 경우는 단계(1816)으로 진행하고, 제약조건이 존재하지 않을 경우는 단계(1820)으로 진행한다. 단계(1816)는 단계(1814)에서 공유 테이블의 제약조건이 존재할 경우에 진행되고, 상기 공유 테이블 제약조건의 분할 모드를 추출하여 논리적 데이터 지역성을 보장하기 위한 NoSQL 영역 분할 조건절을 추가하고, 단계(1818)로 진행하여 제약조건 분할 모드를 추가한 새로운 질의를 재생성 한다. 단계(1820)은 논리적 데이터 지역성을 보장한 새로운 질의 또는 변경되지 않은 관계 질의를 수행하고, 단계(1822)에서 종료된다.
전술한 내용은 본 발명의 예들을 포함한다. 본 발명을 설명하기 위하여 방법 또는 구성 요소의 가능한 모든 조합을 설명하는 것은 불가능하지만, 당업자라면 보다 더 많은 다양한 조합 및 치환이 가능하다는 것을 이해할 것이다. 따라서, 본 발명은 특허청구범위의 사상 및 범위에 포함되는 이러한 모든 교체, 변경, 변화를 포괄하는 것이다.

Claims (13)

  1. 예측 논리적 데이터 지역성을 이용한 병렬질의를 제공하기 위해 질의 분배기와 질의 실행기와 NoSQL로 구성되는 장치를 실행하는 방법에 있어서,
    데이터를 저장하는 테이블을 한 개 이상의 질의 실행기에 동일하게 복제한 복제 테이블과 중첩된 레코드 없이 분할하여 한 개 이상의 질의 실행기에 나누어 저장한 분할 테이블과 NoSQL에 데이터를 저장한 공유 테이블로 구분하고, 질의 실행기에 저장된 복제 테이블과 분할 테이블을 관계형 테이블로 구성하는 단계;
    공유 테이블 단독 질의를 한 개 이상의 질의 실행기에서 분할함수에 의해 공유 테이블을 중첩되지 않는 영역으로 분할한 논리적 데이터 지역성을 보장하는 병렬질의를 수행하는 단계;
    공유 테이블과 복제 테이블과의 조인 질의를 한 개 이상의 질의 실행기에서 공유 테이블을 분할함수에 의해 중첩되지 않은 영역으로 분할하여 논리적 데이터 지역성을 보장하는 병렬질의를 수행하는 단계;
    공유 테이블과 분할 테이블과의 조인 질의를 한 개 이상의 질의 실행기에서 공유 테이블을 공유 테이블 제약조건으로 중첩되지 않은 영역으로 분할하여 논리적 데이터 지역성을 보장하는 병렬질의를 수행하는 단계를 포함하는 상기 방법.
  2. 제1항에 있어서,
    상기 질의 실행기는 질의 분배기에서 전달 받은 병렬질의를 해석하여 공유 테이블로 구성된 질의를 추출하는 단계와 상기 추출된 질의를 NoSQL 질의로 변환하고 실행하는 단계를 포함하는 것을 특징으로 하는 상기 방법.
  3. 제1항에 있어서,
    상기 공유 테이블 단독 질의와 공유 테이블과 복제 테이블의 조인 질의에서 NoSQL에 저장된 공유 테이블을 중첩되지 않는 영역으로 분할하기 위한 분할함수를 모듈로 연산 함수, 해시 연산 함수, 영역 연산 함수 또는 상기 연산 함수들의 조합으로 구성하는 것을 특징으로 하는 상기 방법.
  4. 제1항에 있어서,
    상기 공유 테이블과 분할 테이블의 조인 질의에서 공유 테이블 제약조건으로, 공유 테이블로 정의된 NoSQL 테이블명과 한 개 이상의 제약조건 분할 필드명과 제약조건 분할 모드를 리스트 구조로 저장하는 것을 특징으로 하는 상기 방법.
  5. 제1항에 있어서,
    상기 공유 테이블과 분할 테이블의 조인 질의에서 공유 테이블 제약조건으로 두 개 이상의 제약조건을 AND 연산으로 나열하여 논리적 데이터 지역성을 보장하는 병렬질의를 수행하는 단계를 포함하는 것을 특징으로 하는 상기 방법
  6. 제1항에 있어서,
    상기 질의 실행기 장애에 따라 논리적 데이터 지역성을 가변적으로 분할하기 위해,
    공유 테이블 단독 질의는 질의 분배기에서 활성화된 질의 실행기 개수와 병렬질의를 수행하는 순차번호를 병렬질의에 포함하는 단계;
    공유 테이블과 복제 테이블의 조인 질의는 질의 분배기에서 복제 테이블이 존재하는 질의 실행기 개수와 병렬질의를 수행하는 순차번호를 병렬질의에 포함하는 단계;
    공유 테이블과 분할 테이블의 조인 질의는 질의 분배기에서 분할 테이블이 존재하는 질의 실행기 개수와 병렬질의를 수행하는 순차번호를 병렬질의에 포함하는 단계를 포함하는 것을 특징으로는 하는 상기 방법.
  7. 예측 논리적 데이터 지역성을 이용한 병렬질의를 제공하기 위한 장치에 있어서,
    사용자 질의를 입력 받아 질의를 병렬질의로 변환하고 병렬질의를 수행한 결과를 취합하는 한 개 이상의 질의 분배기를 가지는 질의 분배기 계층과 상기 질의 분배기 계층에서 생성된 병렬질의를 수행하는 한 개 이상의 질의 실행기를 가지는 질의 실행기 계층과 대용량 데이터를 공유 저장소에 저장하고 질의를 수행하는 한 개 이상의 NoSQL을 가지는 NoSQL 계층을 포함하고,
    질의 실행기 계층에서 테이블을 한 개 이상의 질의 실행기에 동일하게 복제한 복제 테이블과 중첩된 레코드 없이 분할하여 한 개 이상의 질의 실행기에 나누어 저장한 분할 테이블을 저장하고 NoSQL 계층에 공유 테이블을 저장하고,
    질의 분배기 계층에서 공유 테이블 단독 질의를 한 개 이상의 질의 실행기에서 분할함수에 의해 공유 테이블을 중첩되지 않는 영역으로 분할한 논리적 데이터 지역성을 보장하는 병렬질의로 변환하여 질의 실행기 계층으로 전달하고,
    질의 분배기 계층에서 공유 테이블과 복제 테이블과의 조인 질의를 한 개 이상의 질의 실행기에서 공유 테이블을 분할함수에 의해 중첩되지 않은 영역으로 분할하여 논리적 데이터 지역성을 보장하는 병렬질의로 변환하여 질의 실행기 계층으로 전달하고,
    질의 분배기 계층에서 공유 테이블과 분할 테이블과의 조인 질의를 한 개 이상의 질의 실행기에서 공유 테이블을 공유 테이블 제약조건으로 중첩되지 않은 영역으로 분할하여 논리적 데이터 지역성을 보장하는 병렬질의로 변환하여 질의 실행기 계층으로 전달하는 것을 포함하는 상기 장치.
  8. 제7항에 있어서,
    상기 질의 분배기 계층과 질의 실행기 계층과 NoSQL 계층은 장애 허용을 제공하기 위해 한 개 이상의 물리적 노드로 구성하는 것을 특징으로 하는 상기 장치
  9. 제7항에 있어서,
    상기 질의 분배기 계층과 질의 생성기 계층을 관계형데이터베이스 기반의 분산데이터베이스 시스템으로 구성하고 질의 실행기 계층은 질의 분배기 계층에서 전달 받은 병렬질의 구문을 해석하여 NoSQL 질의로 변환하여 질의를 수행하는 것을 특징으로 하는 상기 장치.
  10. 제7항에 있어서,
    상기 공유 테이블 단독 질의와 공유 테이블과 복제 테이블의 조인 질의에서 NoSQL에 저장된 공유 테이블을 중첩되지 않는 영역으로 분할하기 위한 분할함수로 모듈로 연산 함수, 해시 연산 함수, 영역 연산 함수 또는 상기 연산 함수들의 조합으로 구성하는 것을 특징으로 하는 상기 장치.
  11. 제7항에 있어서,
    상기 공유 테이블과 분할 테이블의 조인 질의에서 공유 테이블 제약조건으로, 공유 테이블로 정의된 NoSQL 테이블명과 한 개 이상의 제약조건 분할 필드명과 제약조건 분할 모드를 리스트 구조로 저장하고, 공유 테이블 제약조건을 무공유 저장 구조를 가지는 것을 특징으로 하는 상기 장치.
  12. 제7항에 있어서,
    상기 공유 테이블과 분할 테이블의 조인 질의에서 공유 테이블 제약조건으로 두 개 이상의 제약조건을 AND 연산으로 나열하여 논리적 데이터 지역성을 보장하는 병렬질의를 수행하는 것을 특징하는 상기 장치.
  13. 제7항에 있어서,
    상기 질의 실행기 장애에 따라 논리적 데이터 지역성을 가변적으로 분할하기 위해,
    공유 테이블 단독 질의는 질의 분배기 계층에서 활성화된 질의 실행기 개수와 병렬질의를 수행하는 순차번호를 병렬질의에 포함하고, 공유 테이블과 복제 테이블의 조인 질의는 질의 분배기 계층에서 복제 테이블이 존재하는 질의 실행기 개수와 병렬질의를 수행하는 순차번호를 병렬질의에 포함하고, 공유 테이블과 분할 테이블의 조인 질의는 질의 분배기 계층에서 분할 테이블이 존재하는 질의 실행기 개수와 병렬질의를 수행하는 순차번호를 병렬질의에 포함하는 것을 특징하는 상기 장치.
KR20140092334A 2014-07-22 2014-07-22 예측 논리적 데이터 지역성을 이용한 병렬질의 처리 방법 및 장치 KR101472257B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR20140092334A KR101472257B1 (ko) 2014-07-22 2014-07-22 예측 논리적 데이터 지역성을 이용한 병렬질의 처리 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20140092334A KR101472257B1 (ko) 2014-07-22 2014-07-22 예측 논리적 데이터 지역성을 이용한 병렬질의 처리 방법 및 장치

Publications (1)

Publication Number Publication Date
KR101472257B1 true KR101472257B1 (ko) 2014-12-11

Family

ID=52678716

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20140092334A KR101472257B1 (ko) 2014-07-22 2014-07-22 예측 논리적 데이터 지역성을 이용한 병렬질의 처리 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101472257B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101714985B1 (ko) * 2016-08-29 2017-03-15 (주)카디날정보기술 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 방법 및 장치
KR101772333B1 (ko) * 2016-03-22 2017-08-29 한양대학교 에리카산학협력단 이종 NoSQL 데이터베이스들간의 지능적 조인 전략 제공 방법 및 시스템
CN108241627A (zh) * 2016-12-23 2018-07-03 北京神州泰岳软件股份有限公司 一种异构数据存储查询方法和系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070026421A (ko) * 2004-02-21 2007-03-08 데이탈레그로, 인코포레이티드 초 무공유 병렬 데이터베이스
KR20140076010A (ko) * 2012-12-12 2014-06-20 한국과학기술원 대용량 xml 데이터에 대한 다수의 가지 패턴 질의의 동시 병렬처리시스템 및 그 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070026421A (ko) * 2004-02-21 2007-03-08 데이탈레그로, 인코포레이티드 초 무공유 병렬 데이터베이스
KR20140076010A (ko) * 2012-12-12 2014-06-20 한국과학기술원 대용량 xml 데이터에 대한 다수의 가지 패턴 질의의 동시 병렬처리시스템 및 그 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
P. Amirian et al. Efficient Online Sharing of Geospatial Big Data Using NoSQL XML Databases, 2013 Fourth International Conference on Computing for Geospatial Research and Application, 2013. *
강순종외 2인, "통합 XQuery 질의의 병렬처리와 순차처리 성능분석", 정보과학회 추계학술발표논문집, 2006 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101772333B1 (ko) * 2016-03-22 2017-08-29 한양대학교 에리카산학협력단 이종 NoSQL 데이터베이스들간의 지능적 조인 전략 제공 방법 및 시스템
KR101714985B1 (ko) * 2016-08-29 2017-03-15 (주)카디날정보기술 분산 병렬 데이터베이스의 중첩 질의 병렬성 검사 방법 및 장치
CN108241627A (zh) * 2016-12-23 2018-07-03 北京神州泰岳软件股份有限公司 一种异构数据存储查询方法和系统

Similar Documents

Publication Publication Date Title
Liao et al. Data adapter for querying and transformation between SQL and NoSQL database
Bajaber et al. Big data 2.0 processing systems: Taxonomy and open challenges
Borkar et al. Hyracks: A flexible and extensible foundation for data-intensive computing
US9639575B2 (en) Method and system for processing data queries
US8935232B2 (en) Query execution systems and methods
US8538985B2 (en) Efficient processing of queries in federated database systems
Bruno et al. Advanced join strategies for large-scale distributed computation
Hubail et al. Couchbase analytics: NoETL for scalable NoSQL data analysis
CN104484472A (zh) 一种混合多种异构数据源的数据库集群及实现方法
Chen et al. Optimization of sub-query processing in distributed data integration systems
Cheng et al. Scale-out processing of large RDF datasets
KR101472257B1 (ko) 예측 논리적 데이터 지역성을 이용한 병렬질의 처리 방법 및 장치
Wang et al. Efficient query processing framework for big data warehouse: an almost join-free approach
Chandramouli et al. Quill: Efficient, transferable, and rich analytics at scale
Naacke et al. SPARQL query processing with Apache Spark
Chawla et al. Storage, partitioning, indexing and retrieval in Big RDF frameworks: A survey
Chen et al. Providing scalable database services on the cloud
Saleem Storage, indexing, query processing, and benchmarking in centralized and distributed RDF engines: a survey
Kim et al. Scan-sharing for optimizing rdf graph pattern matching on mapreduce
Anyanwu et al. Algebraic optimization for processing graph pattern queries in the cloud
Khafagy Indexed map-reduce join algorithm
Kaitoua et al. Muses: distributed data migration system for polystores
Giannousis et al. Distributed execution of spatial SQL queries
JP2011216029A (ja) 分散メモリデータベースシステム、データベースサーバ、データ処理方法およびそのプログラム
Zhu et al. Efficient star join for column-oriented data store in the mapreduce environment

Legal Events

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

Payment date: 20170925

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20181017

Year of fee payment: 5