KR20160092259A - 큐브리드 기반 미들웨어, 및 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법 - Google Patents

큐브리드 기반 미들웨어, 및 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법 Download PDF

Info

Publication number
KR20160092259A
KR20160092259A KR1020150012659A KR20150012659A KR20160092259A KR 20160092259 A KR20160092259 A KR 20160092259A KR 1020150012659 A KR1020150012659 A KR 1020150012659A KR 20150012659 A KR20150012659 A KR 20150012659A KR 20160092259 A KR20160092259 A KR 20160092259A
Authority
KR
South Korea
Prior art keywords
query
data
server
cubrid
result
Prior art date
Application number
KR1020150012659A
Other languages
English (en)
Other versions
KR101648707B1 (ko
Inventor
김형일
윤민
조아라
최문철
김형진
양현식
장재우
김태웅
이규재
Original Assignee
전북대학교산학협력단
네이버 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 전북대학교산학협력단, 네이버 주식회사 filed Critical 전북대학교산학협력단
Priority to KR1020150012659A priority Critical patent/KR101648707B1/ko
Publication of KR20160092259A publication Critical patent/KR20160092259A/ko
Application granted granted Critical
Publication of KR101648707B1 publication Critical patent/KR101648707B1/ko

Links

Images

Classifications

    • G06F17/30445
    • 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/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • G06F17/30545

Landscapes

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

Abstract

테이블 분할 정책에 따라 다수의 큐브리드 서버에 데이터를 분산 저장하고, 저장된 데이터에 대해 병렬 질의 처리하는, 큐브리드 기반 미들웨어, 및 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법을 개시한다.
본 발명에 따른 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법은, 단말로부터 입력된 질의문에 대해 구문을 분석하는 단계, 상기 구문을 분석한 결과에 따라, 식별자를 결정하는 단계, 상기 결정된 식별자를 이용하여, 적어도 하나의 서버접근 정보를 획득하는 단계, 및 상기 서버접근 정보에서 지정하는 분산 서버에 접속하는 단계를 포함하여 구성한다.

Description

큐브리드 기반 미들웨어, 및 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법{MIDDLEWARE BASED CUBRID, AND METHOD OF PROCESSING DISTRIBUTE-PARALLEL QUERY USING MIDDLEWARE}
본 발명은 테이블 분할 정책에 따라 다수의 큐브리드 서버에 데이터를 분산 저장하고, 저장된 데이터에 대해 병렬 질의 처리하는, 큐브리드 기반 미들웨어, 및 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법에 관한 것이다.
최근에는 SNS(Social Network Service)의 발전으로 인해, 정보의 양이 급격히 증가하였으며, 이에 따라 빅데이터에 대한 연구가 활발히 이루어지고 있다.
빅데이터는 기존의 IT 기술로 저장/처리/분석이 어려울 정도로 데이터의 생성 속도가 빠른 데이터를 의미한다. 빅데이터는 분량의 방대함으로 인해 그 자체가 정보로 활용되기 어려우며, 빅데이터를 사용하기 위해서는, 빅데이터에서 의미있는 정보를 추출하기 위한 분석 과정을 필요로 한다.
빅데이터 분석을 수행하기 위해서는, 대규모의 컴퓨팅 자원 및 대용량 데이터에 대한 효율적인 관리를 지원하는 빅데이터 관리 시스템이 요구된다. 이를 위해, 하둡(Hadoop), 몽고DB(MongoDB), 카산드라(Cassandra) 등을 대표로 하는 NoSQL(Not Only SQL)에 대한 연구가 활발히 진행되고 있다.
그러나 NoSQL은 데이터베이스의 ACID(Atomicity(원자성), Consistency (일관성), Isolation (독립성), Durablility (지속성)) 조건을 만족하지 못하는 단점을 보인다. 특히, NoSQL에서 확장성(Partition Tolerance) 및 유효성(Availability)에 초점을 맞추게 될 경우, 데이터의 일관성(Consistency)이 위배된다는 점은, NoSQL의 큰 단점으로 지적되고 있다.
이와 같은 NoSQL의 문제점으로 인해, 최근에는 RDBMS(Relational Data Base Management System)를 기반으로 빅데이터 처리를 하고자 하는 움직임이 활발해지고 있다.
RDBMS 기반의 대표적인 빅데이터 처리 기법으로는, 큐브리드 샤드(CUBRID Shard)가 존재한다. 큐브리드 샤드는 데이터베이스를 샤드 단위로 수평 분할하여 각기 다른 물리 노드에 데이터를 분산 저장함으로써, 데이터의 분산 저장 및 병렬 처리를 지원하고 있다. 그러나 큐브리드 샤드는 각 클라이언트의 질의가 단일 서버에서 실행되는 경우만 병렬 처리가 가능하다는 단점을 보인다. 따라서, 한 클라이언트의 질의가 다수의 서버에서 실행되어야 하는 경우에는, 질의를 처리하지 못할 수 있다. 아울러, 큐브리드 샤드에 의한 빅데이터 처리 기법은 질의 처리 시, SQL 외에 샤드 히트(shard hint)를 요구하기 때문에, 사용자 편의성이 저하되는 단점을 가지고 있다.
따라서, 테이블 분할 정책에 따라 다수의 큐브리드 서버에 데이터를 분산 저장하며, 저장된 데이터에 대해 병렬 질의 처리를 지원하는 큐브리드 기반 분산 미들웨어의 출현이 절실하게 요구되고 있다.
본 발명은 상기와 같은 문제점을 해결하기 위하여 안출된 것으로서, 기존 SQL에 익숙한 사용자들이 분산 저장된 데이터에 대한 병렬 처리 부담을 최소화하여 빅데이터 처리를 수행할 수 있도록 지원 함으로써, 다양한 질의 수행을 가능하게 하는 것을 목적으로 한다.
또한, 본 발명의 목적은, 데이터 분할 정책에 따라 다수의 큐브리드 서버에 데이터를 분산 저장하도록 하는 데에 있다.
또한, 본 발명은 한 클라이언트의 질의가 다수의 서버에서 실행되어야 하는 경우에도, 질의 처리를 지원 가능하게 하는 것으로 목적으로 한다.
또한, 본 발명의 목적은, 분산된 데이터 상에서의 다양한 집계 질의 처리를 지원하는 데에 있다.
상기의 목적을 이루기 위한 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법은, 단말로부터 입력된 질의문에 대해 구문을 분석하는 단계, 상기 구문을 분석한 결과에 따라, 식별자를 결정하는 단계, 상기 결정된 식별자를 이용하여, 적어도 하나의 서버접근 정보를 획득하는 단계, 및 상기 서버접근 정보에서 지정하는 분산 서버에 접속하는 단계를 포함할 수 있다.
또한, 상기 목적을 달성하기 위한 기술적 장치로서, 분산 병렬 질의 처리를 지원하는 큐브리드 기반 미들웨어는, 단말로부터 입력된 질의문에 대해 구문을 분석하는 질의 분석 컴포넌트, 상기 구문을 분석한 결과에 따라, 식별자를 결정하고, 상기 결정된 식별자를 이용하여, 적어도 하나의 서버접근 정보를 획득하는 메타 검색 컴포넌트, 및 상기 서버접근 정보에서 지정하는 분산 서버에 접속하는 통신 컴포넌트를 포함할 수 있다.
본 발명에 따르면, 기존 SQL에 익숙한 사용자들이 분산 저장된 데이터에 대한 병렬 처리 부담을 최소화하여 빅데이터 처리를 수행할 수 있도록 지원 함으로써, 다양한 질의 수행을 가능하게 할 수 있다.
또한, 본 발명에 의해서는, 데이터 분할 정책에 따라 다수의 큐브리드 서버에 데이터를 분산 저장하도록 할 수 있다.
또한, 본 발명에 따르면, 한 클라이언트의 질의가 다수의 서버에서 실행되어야 하는 경우에도, 질의 처리를 지원 가능하게 할 수 있다.
또한, 본 발명에 의해서는, 분산된 데이터 상에서의 다양한 집계 질의 처리를 지원 할 수 있다.
도 1는 본 발명의 일실시예에 따른 큐브리드 기반 미들웨어의 구체적인 구성을 나타내는 도면이다.
도 2는 본 발명에 따른 큐브리드 기반 미들웨어의 전체 시스템 구조를 설명하기 위한 도면이다.
도 3은 메타 테이블의 검색 과정을 설명하기 위한 도면이다.
도 4는 본 발명에 따른 큐브리드 기반 미들웨어에 의한 질의 처리 수행 과정을 설명하기 위한 도면이다.
도 5는 본 발명에 따른 큐브리드 기반 미들웨어에 의한 insert(저장) 수행 과정을 설명하기 위한 도면이다.
도 6은 본 발명에 따른 큐브리드 기반 미들웨어에 의한 select(탐색) 수행 과정을 설명하기 위한 도면이다.
도 7은 본 발명에 따른 Join 질의를 위한 MinMaxTable의 일례를 도시하는 도면이다.
도 8은 본 발명의 일실시예에 따른 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법을 구체적으로 도시한 작업 흐름도이다.
이하에서, 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
본 명세서에서 지속적으로 사용되는 큐브리드(CUBRID)는, 관계형 데이터베이스 관리 시스템(DBMS : DataBase Management System)으로, 오픈 소스 소프트웨어일 수 있다. DBMS 엔진 부분은 GPL v2 라이선스가 적용되고 인터페이스 부분은 BSD 라이선스가 적용되었으며, 국제표준화기구의 표준 구조화 조회 언어를 지원할 수 있다.
본 명세서에서 설명되는 미들웨어, 및 분산 병렬 질의 처리 방법은, 이러한 큐브리드에 기반하여, 테이블 분할 정책에 따라 다수의 큐브리드 서버에 데이터를 분산 저장하고, 저장된 데이터에 대해 병렬 질의 처리를 가능하게 지원할 수 있다.
도 1는 본 발명의 일실시예에 따른 큐브리드 기반 미들웨어의 구체적인 구성을 나타내는 도면이다.
본 발명의 큐브리드 기반 미들웨어(100)는, 통신 컴포넌트(110), 질의 분석 컴포넌트(120), 및 메타 검색 컴포넌트(130)를 포함하여 구성할 수 있다. 또한, 큐브리드 기반 미들웨어(100)는 실시예에 따라 질의 결과 컴포넌트(140)를 추가로 포함하여 구성할 수 있다.
우선, 통신 컴포넌트(110)는 단말(105)로부터 질의문을 입력받는다. 상기 질의문은 수행하고자 하는 처리에 관한 명령어를 포함하는 구문일 수 있고, 본 발명에서는 상기 질의문에 대해, '탐색(select 구문)', '저장(insert 구문)', '조인(join 구문)' 등으로 그 타입을 구분할 수 있다.
질의 분석 컴포넌트(120)는 단말(105)로부터 입력된 질의문에 대해 구문을 분석한다. 즉, 질의 분석 컴포넌트(120)는 단말(105)을 통해 사용자가 입력한 질의문을 파싱하여 명령어를 추출 함으로써, 상기 질의문이 갖는 타입을 분석하는 역할을 한다.
예컨대, SQL 형태의 질의문 「Insert into Student(ID, name) ∼」이 입력되는 경우, 질의 분석 컴포넌트(120)는 질의문 내 구문을 파싱하고, 명령어 'Insert'를 추출 함으로써, 상기 질의문을, 저장과 관련되는 것으로 분석할 수 있다.
또는, 질의 분석 컴포넌트(120)는 다른 질의문에 대한 파싱을 통해 명령어 'select'가 추출되면, 상기 질의문을, 탐색과 관련되는 것으로 분석할 수도 있다.
메타 검색 컴포넌트(130)는 상기 구문을 분석한 결과에 따라, 식별자를 결정한다. 여기서, 식별자는 수행할 처리에 따라 검색해야 하는 메타 테이블(135)을 식별하기 위한 것으로, MinMax 테이블에 할당되는 MinMax 식별자, 서치 테이블에 할당되는 서치 식별자 등을 예시할 수 있다.
또한, 메타 검색 컴포넌트(130)는 상기 결정된 식별자를 이용하여, 적어도 하나의 서버접근 정보를 획득한다. 여기서, 서버접근 정보는 큐브리드 서버에 부여되어 있는 IP 주소와 포트 등일 수 있고, 별도의 IP 테이블 내에 유지될 수 있다. 즉, 메타 검색 컴포넌트(130)는 식별되는 메타 테이블(135)로부터 접속할 큐브리드 서버의 정보를 얻는 역할을 할 수 있다.
예를 들어, 질의 분석 컴포넌트(120)에 의해 상기 질의문이 탐색과 관련되는 것으로 분석되는 경우, 메타 검색 컴포넌트(130)는 서치 식별자를 결정할 수 있다. 또한, 메타 검색 컴포넌트(130)는 상기 서치 식별자에 의해 식별되는 메타 테이블(135) 내 서치 테이블로부터, 탐색할 분산 서버(150)에 대한 파티션 데이터를 수집할 수 있다. 상기 파티션 데이터는 상기 탐색 처리를 수행하는 데에 필요한 정보/데이터를 저장하고 있는 큐브리드 서버를 식별하기 위한 정보일 수 있다.
상기 파티션 데이터를 수집하는 데에 있어, 메타 검색 컴포넌트(130)는 상기 질의문에서, 사용자 항목과 테이블명 항목을 리드하고, 리드된 상기 사용자 항목과 상기 테이블명 항목에 대응하는 파티션 데이터를, 상기 서치 테이블에서 추출하여 수집할 수 있다.
예컨대, user 1이 입력한 질의문이, 탐색과 관련되는 「select * from Sales」일 경우, 메타 검색 컴포넌트(130)는 상기 질의문으로부터 사용자 항목 'user ID(00001)'와, 테이블명 항목 'table name(Sales)'을 리드하고, 상기 'user ID(00001)'와 'table name(Sales)'를 모두 대응하여 저장하는 파티션 데이터 'partition(2, 3)'을 상기 서치 테이블에서 추출하여 수집할 수 있다.
이후, 메타 검색 컴포넌트(130)는 상기 파티션 데이터와 대응하는 IP 주소와 포트를, IP 테이블에서 추출하여, 상기 서버접근 정보로서 획득할 수 있다.
상술의 예에서, 메타 검색 컴포넌트(130)는 상기 수집된 파티션 데이터 'partition(2, 3)' 각각에 대응하는 서버접근 정보 '210.117.181.24:1111'와 '210.117.181.25:1111'를 IP 테이블에서 추출할 수 있다.
즉, 메타 검색 컴포넌트(130)는 구문 분석에 따라 메타 테이블에 대한 검색을 통해, 상기 탐색을 위해 궁극적으로 접속할 특정 큐브리드 서버에 관한 정보를 획득할 수 있다.
다른 예에서, 질의 분석 컴포넌트(120)에 의해 상기 질의문이 저장과 관련되는 것으로 분석되는 경우, 메타 검색 컴포넌트(130)는 MinMax 식별자를 결정할 수 있다. 또한, 메타 검색 컴포넌트(130)는 상기 MinMax 식별자에 의해 식별되는 메타 테이블(135) 내 MinMax 테이블로부터, 저장할 분산 서버(150)에 대한 파티션 데이터를 수집할 수 있다. 상기 파티션 데이터는 상기 저장 처리를 수행되는 큐브리드 서버를 식별하기 위한 정보일 수 있다.
상기 파티션 데이터를 수집하는 데에 있어, 메타 검색 컴포넌트(130)는 상기 질의문에서, ID 항목 및 테이블명 항목을 리드하고, 상기 테이블명 항목에 대응하며, 상기 ID 항목을, 등록된 Min 값과 Max 값 사이로 포함하는 파티션 데이터를, 상기 MinMax 테이블에서 추출하여 수집할 수 있다.
예컨대, user 1이 입력한 질의문이, 저장과 관련되는 「Insert into Student(ID, name) values(20, 'KIM')」일 경우, 메타 검색 컴포넌트(130)는 상기 질의문으로부터 ID 항목 'column(20)'과, 테이블명 항목 'table name(Student)'을 리드하고, 'table name(Student)'에 대응하며, 'column(20)'을 등록된 Min 값(0)과 Max 값(50) 사이로 포함하는 파티션 데이터 'partition(2)'를 상기 MinMax 테이블에서 추출하여 수집할 수 있다.
이후, 메타 검색 컴포넌트(130)는 상기 파티션 데이터와 대응하는 IP 주소와 포트를, IP 테이블에서 추출하여, 상기 서버접근 정보로서 획득할 수 있다.
상술의 예에서, 메타 검색 컴포넌트(130)는 상기 수집된 파티션 데이터 'partition(2)'에 대응하는 서버접근 정보 '123.456.789.002:9002'를 IP 테이블에서 추출할 수 있다.
즉, 메타 검색 컴포넌트(130)는 구문 분석에 따라 메타 테이블에 대한 검색을 통해, 상기 저장을 위해 궁극적으로 접속할 특정 큐브리드 서버에 관한 정보를 획득할 수 있다.
서버접근 정보의 획득 후, 통신 컴포넌트(110)는 상기 서버접근 정보에서 지정하는 분산 서버(150)에 접속한다. 즉, 통신 컴포넌트(110)는 서버접근 정보를 이용하여 특정 큐브리드 서버에 접속할 수 있다.
또한, 통신 컴포넌트(110)는 상기 구문을 분석한 결과, 상기 질의문이 탐색과 관련되는 경우에, 접속한 분산 서버(150)에 상기 질의문을 전송하고, 상기 질의문에 관한 분산 서버(150)에서의 처리에 따른 결과데이터를, 분산 서버(150)로부터 수신할 수 있다.
이와 같이, 분산 서버(150)로부터 수신된 결과데이터를 처리하기 위해, 본 발명의 큐브리드 기반 미들웨어(100)는, 질의 결과 컴포넌트(140)를 더 포함하여 구성할 수 있다.
질의 결과 컴포넌트(140)는 상기 수신된 결과데이터를, 상기 질의문에 대한 응답으로 단말(105)로 제공한다. 즉, 질의 결과 컴포넌트(140)은 각 분산 서버(150)로부터 결과데이터를 취합하여, 단말(105)로 보고하는 역할을 한다. 이때, 수신된 결과가 선 수신된 다른 결과데이터와 동일하게 중복되는 경우, 질의 결과 컴포넌트(140)는 나중에 수신된 결과데이터를 제거함으로써, 같은 결과데이터가 반복하여 응답으로 제공되지 않도록 할 수 있다.
다른 실시예에서, 상기 수신된 결과데이터가 복수일 경우, 메타 검색 컴포넌트(130)는 상기 질의문에서 오더(order) 항목을 리드한다. 이후, 질의 결과 컴포넌트(140)는 상기 오더 항목을 고려하여, 상기 복수의 결과데이터를 정렬하여 단말(105)로 제공한다.
예컨대, 분산 서버(150)로부터 탐색된 나이 21인 학생에 관한 결과데이터가 'michael', 'tom', 'jane'의 3개일 경우, 메타 검색 컴포넌트(130)는 질의문 「Select * from Student where age=21 Order by ID acs」에서 오더 항목 'ID acs'을 리드할 수 있다. 이후, 질의 결과 컴포넌트(140)는 상기 'ID acs'에 따라, 수신된 3개의 결과데이터를 오름차순인 'tom', 'jane', 'michael'로 정렬하여 단말(105)로 제공할 수 있다.
다른 실시예에서, 상기 수신된 결과데이터가 복수일 경우, 메타 검색 컴포넌트(130)는 상기 질의문에서 리미트(limit) 항목을 리드한다. 이후, 질의 결과 컴포넌트(140)는 상기 복수의 결과데이터 중에서, 상기 리미트 항목에서 규정한 수의 결과데이터를 선별하여 단말(105)로 제공한다.
예컨대, 분산 서버(150)로부터 탐색된 나이 21인 학생에 관한 결과데이터가 20개일 경우, 메타 검색 컴포넌트(130)는 질의문 「Select * from Student where age=21 Limit 10」에서 리미트 항목 '10'을 리드할 수 있다. 이후, 질의 결과 컴포넌트(140)는 상기 '10'에 따라, 수신된 20개의 결과데이터 중에서, 수신 순서가 앞선 10개의 결과데이터를 선별하여 단말(105)로 제공할 수 있다.
또한, 통신 컴포넌트(110)는 상기 구문을 분석한 결과, 상기 질의문이 저장과 관련되는 경우에, 접속한 분산 서버(150)에 상기 질의문을 전송하여, 상기 질의문 내 볼륨 항목이 분산 서버(150)에 저장되도록 할 수 있다.
여기서 볼륨 항목은 큐브리드 서버에 저장해야 하는 데이터를 지칭할 수 있고, 예컨대 질의문 「Insert into Student(ID, name) values(20, 'KIM')」에서, 학생에 대한 'ID'와 'name' 각각에 상당하는 20, 'KIM'을 예시할 수 있다. 질의문은 수신한 분산 서버(150)는 ID 20에 대응하여 name 'KIM'을 저장, 유지할 수 있다.
또한, 통신 컴포넌트(110)는 상기 구문을 분석한 결과, 상기 질의문이 조인(join)과 관련되는 경우에, 접속한 분산 서버(150)에, 상기 질의문을 전송하고, 상기 질의문에 관한 분산 서버(150)에서의 처리에 따른 테이블별 결과데이터를, 분산 서버(150)로부터 n(상기 n은 2이상의 자연수)개 수신할 수 있다. 즉, 통신 컴포넌트(110)는 하나의 질의문 전송을 통해, 분산 서버(150)에서의 처리에 따른 임의의 결과데이터와, 상기 임의의 결과데이터와 연관 관계에 있는 다른 결과데이터를 수신할 수 있다. 상기 임의의 결과데이터와 다른 결과데이터는 상기 분산 서버(150) 내에서 테이블로 구분되어 저장되어 있고, 이에 따라 본 명세서에서는 상기 조인과 관련되는 처리에 따른 결과데이터를, 테이블별 결과데이터로 정의한다.
이와 같이, 분산 서버(150)로부터 수신된 테이블별 결과데이터를 처리하기 위해, 본 발명의 큐브리드 기반 미들웨어(100)는, 질의 결과 컴포넌트(140)를 더 포함하여 구성할 수 있다.
질의 결과 컴포넌트(140)는 상기 n개의 테이블별 결과데이터를 합산하여, 상기 질의문에 대한 응답으로 단말(105)로 제공한다. 즉, 질의 결과 컴포넌트(140)은 분산 서버(150)로부터 수신한 복수의 테이블별 결과데이터를 취합하여, 단말(105)로 보고하는 역할을 한다.
또한, 상기 질의문이 조인과 관련되는 경우에는 메타 검색 컴포넌트(130)에 의한 상기 서버접근 정보를 획득하는 절차가 상이하게 변경될 수 있다. 이는 조인의 경우, 하나의 분산 서버(150)에서 복수의 결과데이터(n개의 테이블별 결과데이터)를 수신하기 때문이다.
즉, 메타 검색 컴포넌트(130)는 상기 질의문을 구성하는 항목 중에서, ID 항목 및 복수의 테이블명 항목을 리드하고, 복수의 테이블명 항목에 각각 대응하며, 상기 ID 항목을, 등록된 Min 값과 Max 값 사이로 포함하는 하나의 파티션 데이터를, MinMax 테이블로부터 수집한다. 이후, 메타 검색 컴포넌트(130)는 상기 파티션 데이터와 대응하는 IP 주소와 포트를, IP 테이블에서 추출하여, 상기 서버접근 정보로서 획득할 수 있다.
이를 통해, 본 발명의 큐브리드 기반 미들웨어(100)는 서로 연관되는 n개의 테이블별 결과데이터를 저장하고 있는, 하나의 큐브리드 서버에 관한 정보를 획득하여 해당 큐브리드 서버로부터 테이블별 결과데이터를 취합, 조인하여 단말로 제공함으로써, 단말(105)에서 요구하는 조인 명령을 충실히 이행할 수 있게 한다.
본 발명에 따르면, 기존 SQL에 익숙한 사용자들이 분산 저장된 데이터에 대한 병렬 처리 부담을 최소화하여 빅데이터 처리를 수행할 수 있도록 지원 함으로써, 다양한 질의 수행을 가능하게 할 수 있다.
또한, 본 발명에 의해서는, 데이터 분할 정책에 따라 다수의 큐브리드 서버에 데이터를 분산 저장하도록 할 수 있다.
또한, 본 발명에 따르면, 한 클라이언트의 질의가 다수의 서버에서 실행되어야 하는 경우에도, 질의 처리를 지원 가능하게 할 수 있다.
또한, 본 발명에 의해서는, 분산된 데이터 상에서의 다양한 집계 질의 처리를 지원 할 수 있다.
도 2는 본 발명에 따른 큐브리드 기반 미들웨어의 전체 시스템 구조를 설명하기 위한 도면이다.
도 2에서는, 본 발명에서 고안하는 분산 병렬 질의 지원 미들웨어를 포함하는 큐브리드의 전체 시스템 구조를 설명한다.
도 2에 도시한 바와 같이, 미들웨어의 구조는, 크게 통신 컴포넌트, 질의 분석 컴포넌트, 메타 테이블(Meta Table), Meta 검색 컴포넌트, 질의 결과 병합 컴포넌트로 구성될 수 있다.
먼저, 통신 컴포넌트는 사용자(단말)와 미들웨어, 혹은 미들웨어와 큐브리드 서버(CUBRID Servers)와의 데이터 송수신을 담당할 수 있다. 상기 통신 컴포넌트에서 송수신하는 데이터는 SQL 및 데이터베이스 연결정보 {dbname, ip, port, user ID, password}를 포함할 수 있다.
질의 분석 컴포넌트는 사용자(단말)로부터 전송된 SQL 질의에 대해 파싱(parsing)을 수행할 수 있다. 이를 통해, 질의 분석 컴포넌트는 메타 정보 검색을 위한 from 구문(테이블 명)을 추출할 수 있다.
또한, 질의 분석 컴포넌트는 질의 타입(예, insert, select, join 등)을 판별하고, 해당 질의가 분산 병렬적으로 처리되기 위한 다수의 큐브리드 서버에 전송될 수 있도록 한다.
아울러, 질의 분석 컴포넌트는 집계 질의의 분산 수행을 지원하기 위해, 질의를 재구성할 수 있다. 예를 들어, average 질의의 경우, 각 큐브리드 서버에서 계산된 average를 통해서는 최종 결과를 도출할 수 없다.
따라서, 질의 분석 컴포넌트는 각 큐브리드 서버가 sum 및 count를 반환하도록 질의로 재구성함으로써, 반환된 sum 및 count를 이용하여 최종적인 average 값을 도출할 수 있다.
메타 테이블은 MinMaxTable, SearchTable, ipPortTable의 3개의 테이블로 구성될 수 있다.
MinMaxTable은 {dbName, partition, tableName, column, min, max}의 속성으로 구성되며, 데이터 저장을 위한 메타 정보를 저장할 수 있다. 여기서, column 속성은 tableName 테이블을 수평 분할하는 기준이 되는 column명을 의미하며, min, max는 각 partition이 담당하는 column 값의 범위(min ∼ max)를 나타낼 수 있다.
SearchTable은 {user ID, dbname, tableName, partition}의 속성으로 구성되며, 데이터 탐색을 위한 메타 정보를 저장할 수 있다. SearchTable 내의 정보를 바탕으로, 큐브리드 기반 미들웨어는 사용자(user ID) 질의를 수행하기 위해 필요한 테이블(tableName)이 어느 큐브리드 서버(partition)에 저장되어 있는지를 판단할 수 있다.
한편, MinMaxTable 및 SearchTable의 Partition의 세부 정보는 ipPortTable을 통해 확인 가능하다.
ipPortTable은 {partition, ip, port}의 속성으로 구성되며, 이는 해당 partition의 접속을 위한 통신 정보를 의미할 수 있다.
도 3은 메타 테이블의 검색 과정을 설명하기 위한 도면이다.
도 3에 도시한 바와 같이, 질의 「select * from Sales」가 입력되면, 본 발명의 큐브리드 기반 미들웨어는, user ID(00001)와 dbname(testdb), table name(Sales)을 기반으로, 질의 수행에 필요한 데이터를 보유하고 있는 큐브리드 서버를 확인한다.
이 경우, 큐브리드 기반 미들웨어는 Sales 테이블을 통해, 2, 3번 서버에 필요한 데이터가 분산 저장되어 있음을 확인하고, 이를 바탕으로 각 서버에 접속하기 위한 ip 및 port 목록인 '210.117.181.24:1111'와, '210.1117.181.25:1111'을 탐색할 수 있다.
다시 도 2를 설명하여, 질의 결과 병합 컴포넌트는 각 큐브리드 서버로부터 전송된 질의 결과를 병합할 수 있다. 이 때, 질의 결과 병합 컴포넌트는 각 서버에서 반환되는 질의 결과를 충돌 없이 수신하기 위한 메커니즘을 필요로 할 수 있다. 이를 위해, 질의 결과 병합 컴포넌트는 질의 처리를 수행하는 서버 수를 파악하여, 각 서버와의 통신을 위한 통신 프로세스를 생성할 수 있다. 또한, 질의 결과 병합 컴포넌트는 각 서버에서 반환되는 질의 결과를 저장하기 위한 버퍼를 활성화 할 수 있다.
이를 통해, 질의 결과 병합 컴포넌트는 각 서버에서 병렬적으로 수신되는 질의 결과의 충돌 문제를 방지함으로써, 메시지 전송 효율을 향상시킬 수 있다.
아울러, 질의 결과 병합 컴포넌트는 각 서버에서 전송된 질의 결과를 기반으로 중복 결과 제거 및 집계를 수행하여 최종 질의 결과를 추출하고, 이를 사용자에게 전송할 수 있다.
도 4는 본 발명에 따른 큐브리드 기반 미들웨어에 의한 질의 처리 수행 과정을 설명하기 위한 도면이다.
큐브리드 기반 미들웨어를 통해, 질의를 수행하는 과정은 다음과 같다.
첫째(① 단계)에서, 사용자는 일반적인 SQL 질의를 미들웨어에 전송할 수 있다.
둘째(② 단계)에서, 미들웨어는 질의 분석 컴포넌트를 통해 사용자의 SQL을 분석하여 질의 유형을 파악한다.
SQL 구문의 분석에 있어, 큐브리드 기반 미들웨어는 Insert 구문과 Select 구문에 대한 분석을 지원할 수 있다. 이를 통해, 큐브리드 기반 미들웨어는 데이터의 분산 저장 및 데이터의 분산 병렬 탐색을 수행할 수 있다.
또한, 큐브리드 기반 미들웨어는 Join 구문의 분석을 지원할 수 있다. 이를 기반으로, 큐브리드 기반 미들웨어는 분산 저장된 데이터베이스 상에서의 Equi Join(동일 조인)을 지원할 수 있다.
또한, 큐브리드 기반 미들웨어는 From 구문의 분석을 지원할 수 있다. 이를 통해, 큐브리드 기반 미들웨어에서는 단일 테이블에서의 질의 수행 뿐 아니라, 다수 테이블에서의 질의 수행이 가능하다.
또한, 큐브리드 기반 미들웨어는 From 절을 통해 기술된 Join 연산에 대해서도 처리를 지원할 수 있다.
또한, 큐브리드 기반 미들웨어는 Where 구문의 분석을 지원함으로써, 사용자가 기술한 다양한 조건의 질의를 수행하는 것을 가능하게 한다.
또한, 큐브리드 기반 미들웨어는 Order by 구문의 분석을 지원할 수 있다. 이를 통해, 큐브리드 기반 미들웨어는 단일 정렬 조건 뿐 아니라 다수 정렬 조건에 대해서도 다수의 분산 서버에서 반환된 질의 결과를 재정렬할 수 있다.
마지막으로, 큐브리드 기반 미들웨어는 Limit 구문의 분석을 지원함으로써, 사용자가 요구하는 개수 만큼의 질의 결과 만을 전송하도록 할 수 있다.
셋째(③ 단계)에서, 큐브리드 기반 미들웨어는 분석한 내용을 바탕으로, 각 서버에서의 수행을 위한 SQL 질의를 재구성할 수 있다.
넷째(④ 단계)에서, 큐브리드 기반 미들웨어는 Meta 검색 컴포넌트를 통해 분석된 SQL 중 메타 테이블 검색을 위한 From 구문을 추출할 수 있다.
다섯째(⑤ 단계)에서, Meta 검색 컴포넌트는 질의 수행에 필요한 데이터를 보유하고 있는 큐브리드 서버 목록을 메타 테이블을 기반으로 파악할 수 있다. 아울러, Meta 검색 컴포넌트는 해당 큐브리드 서버들의 파티션 정보(ip, port 정보)를 확인할 수 있다.
여섯째(⑥ 단계)에서, 큐브리드 기반 미들웨어는 메타 테이블을 통해 탐색된 서버 접속 정보 및 재구성된 질의를 바탕으로 각 큐브리드 서버에 전송할 패킷을 생성할 수 있다.
일곱째(⑦ 단계)에서, 큐브리드 기반 미들웨어는 통신 컴포넌트를 통해 질의 처리를 수행할 각 CBURID 서버에 질의를 포함한 패킷을 전송하고, 질의 결과 수신을 위한 임시 버퍼를 설정할 수 있다.
여덟째(⑧ 단계)에서, 질의를 전송받은 각 큐브리드 서버는 자신이 보유하고 있는 데이터베이스 Shard를 기반으로 질의 처리를 수행하고, 질의 결과를 미들웨어의 통신 컴포넌트로 전송할 수 있다.
아홉째(⑨ 단계)에서 큐브리드 기반 미들웨어는 질의 결과 병합 컴포넌트를 통해 질의 타입에 따른 최종 질의 결과를 도출할 수 있다. 이때, 큐브리드 기반 미들웨어는 중복 결과 제거, 질의 결과 정렬, 집계 연산 등의 과정을 포함하여 수행할 수 있다.
마지막(⑩ 단계)에서, 큐브리드 기반 미들웨어는 최종 결과를 client에게 전송함으로써 client의 질의 요청 처리를 완료할 수 있다.
이하, 큐브리드 기반 미들웨어에 포함될 수 있는 요소 기술에 대해 설명한다.
- 메타 테이블
큐브리드 기반 미들웨어를 통해, 질의의 분산 병렬 처리를 수행하기 위해서는, 데이터 및 서버에 대한 정보를 필요로 할 수 있다. 이를 위해, 큐브리드 기반 미들웨어는 MinMaxTable, SearchTable, ipPortTable 등을 유지 및 관리할 수 있다.
ipPortTable은 큐브리드 서버가 분산적으로 배치 및 셋팅되었을 때, 각 서버에 대한 접속 정보(예, ip 및 port)를 저장할 수 있다. 이후, 새로운 큐브리드 서버가 추가된 경우, ipPortTable는 해당 서버에 대한 접속 정보를 추가하여 저장할 수 있다. 또한, ipPortTable은 기존에 배치되었던 큐브리드 서버의 접속 정보가 변경된 경우에, 해당 서버에 대한 정보를 변경할 수 있다.
ipPortTable은 {partition, ip, port}의 속성으로 구성되며, <표 1>에는 ipPortTable에 대해 예시되고 있다.
Figure pat00001
표 1에서, partition 속성은 큐브리드 서버의 id를 의미하며, ip 및 port는 해당 큐브리드 서버에 접속하기 위한 ip 주소 및 port 번호를 나타낼 수 있다.
MinMaxTable은 데이터 저장을 위해 필요한 정보를 저장할 수 있고, 한 테이블에 대한 분산 정책이 결정된 경우에 관리자 혹은 사용자에 의해 정보를 저장할 수 있다. MinMaxTable은 {dbName, partition, tableName, column, min, max}의 속성으로 구성되며, 해당 테이블을 통해 데이터의 분산 저장을 수행할 수 있다. <표 2>에는 MinMaxTable에 대해 예시되고 있다.
Figure pat00002
MinMaxTable에서 dbName은 분할을 수행하고자 하는 테이블이 속하는 데이터베이스를 의미하고, TableName은 분할의 대상이 되는 테이블의 이름을 의미할 수 있다. column은 TableName 테이블을 수평 분할하기 위한 기준이 되는 컬럼을 의미할 수 있다. partition은 ipPortTable의 partition 속성과 관계성이 있으며, TableName 테이블 내에 존재하는 레코드 중에서 min과 max 값을 기준으로 해당 partition과 관련있는 데이터를 저장할 수 있다. 여기서 min과 max는 각각 해당 partition이 저장하게 될 column 값의 범위를 의미하며, min 값 이상 max 값 미만의 값을 갖는 레코드를 저장할 수 있다.
예를 들어, <표 2>에서 첫 번째 레코드는 test(dbName) 데이터베이스의 Student(TableName) 테이블로서, ID 컬럼(column)을 기반으로 데이터베이스의 수평 분할을 수행하며, Student 테이블에 속하는 레코드 중 ID의 값이 0(min)~50(max) 사이인 레코드가 1번 큐브리드 서버(partition)에 저장됨을 의미할 수 있다.
기본적으로 MinMaxTable의 min, max 값은 partition의 수와 테이블에 저장된 레코드 중 column 값의 범위를 고려하여 설정할 수 있다. 예를 들어, 설치된 큐브리드 서버가 2대이고, Student 테이블의 레코드 중 ID 컬럼의 최소값이 0, 최대값이 100인 경우, 각 큐브리드 서버는 50(ID 값 범위/partition 수 = 100/2) 만큼의 ID 값 범위를 할당 받을 수 있다.
이를 통해, <표 2>의 첫 번째 레코드에서 partition=1은 Student 테이블의 레코드 중 ID 값의 범위가 [0, 50]인 레코드를, partition=2는 Student 테이블의 레코드 중 ID 값의 범위가 [50, 100]인 레코드를 저장하도록 설정될 수 있다.
한편, 해당 partition 기법을 사용하여 데이터베이스를 분할할 경우, 데이터의 값이 특정 구간에 집중되어 있는 경우에는 질의 처리 성능이 저하될 수 있다. 이는, 한 CUBIRD 서버가 처리해야 하는 데이터가 다른 큐브리드 서버에 비해 많음으로 인해 발생할 수 있다.
예를 들어, Student 테이블에 총 100만개의 레코드가 저장되어 있고, ID 컬럼 값의 범위가 0~10000 인 경우, 위 partition 방식을 사용할 경우, 각 큐브리드 서버가 담당해야 하는 ID 컬럼 값의 범위는 5000 이다. 그러나 Student 테이블에 저장된 레코드 중 9000 건의 레코드의 ID 값이 5000 미만인 경우, partition 1은 9000건의 데이터를 처리해야 하는 반면, partition 2는 1000건의 데이터를 담당하게 된다. 이러한 데이터 분포의 불균형으로 인해 질의 처리 성능은 저하될 수 있다.
따라서 본 발명에서는, 테이블에 저장된 레코드의 값 분포를 파악하여, 각 partition이 균일한 수의 레코드를 담당하도록 할 수 있다. 이를 위해, 전체 데이터의 수가 n, partition의 수가 p인 경우, 본 발명에서는 데이터 분할을 수행하는 기준인 column의 값을 기준으로 정렬 시, 1n/p, 2n/p, … n 순번에 해당하는 데이터의 값을 파악하여, 해당 값을 기준으로 min, max 값을 설정할 수 있다.
만약, MinMaxTable에 저장된 범위 밖의 데이터가 insert 되려고 할 경우, 큐브리드 기반 미들웨어는 에러를 출력하고 해당 질의의 수행을 종료할 수 있다.
SearchTable은 데이터 탐색을 위해 필요한 정보를 저장하며, MinMaxTable에 저장된 정보를 기반으로 큐브리드 기반 미들웨어에서 자동으로 생성할 수 있다. 이 때, 사용자의 접근 권한을 처리하기 위해서는, 사용자의 id 속성을 함께 저장할 수 있다.
SearchTable은 {id, dbName, TableName, partition}의 속성으로 구성되며, 해당 테이블을 통해 데이터의 분산 탐색을 수행할 수 있다. <표 3>에는 SearchTable에 대해 예시되고 있다.
Figure pat00003
SearchTable에서 id는 사용자의 ID를 의미하고, dbName과 TableName은 각각 해당 사용자가 접근할 수 있는 데이터베이스 및 테이블 명을 의미할 수 있다. MinMaxTable을 통해 TableName 테이블이 어떻게 분산 저장되어 있는지를 판단 가능하며, 이를 바탕으로 SearchTable은 partition 속성을 저장할 수 있다.
이를 통해, SearchTable에 의해서는 사용자(user ID) 질의를 수행하기 위해 필요한 테이블(tableName)이 어느 큐브리드 server(partition)에 저장되어 있는지를 판단할 수 있다. SearchTable의 partition에 대한 접속 정보는 ipPortTable을 통해 확인 가능하다.
한편, SearchTable에 존재하지 않는 데이터에 대해 탐색을 요구하는 질의의 경우에, 본 발명에서는 처리가 불가능하며, 분산 정책에 위배된다는 오류 메시지와 함께 질의를 종료할 수 있다.
이하, 데이터 분산 저장을 위한 기술로서, Insert 구문을 처리하는 기술을 설명한다.
큐브리드 기반 미들웨어를 통한 데이터 분산 저장 방법은 다음과 같다.
데이터의 저장, 즉 Insert 구문의 수행을 위해서는, meta table의 MinMaxTable에 Insert 구문을 수행하고자 하는 테이블에 대한 메타 정보가 저장되어 있어야 한다.
따라서 SQL 구문 분석 결과, Insert 구문임이 확인될 경우, 본 발명에서는 다음의 절차를 따른다.
Insert 구문을 수행하고자 하는 테이블에 대한 정보가 MinMaxTable에 존재하지 않는 경우, 큐브리드 기반 미들웨어는 해당 테이블에 대한 정보를 삽입할 수 있다. 데이터 분할 정책은 column 타입 및 큐브리드 서버 수를 고려하여 관리자가 직접 설정하며, {dbName, partition, tableName, column, min, max}의 정보를 저장할 수 있다.
예를 들어, test 데이터베이스의 Student라는 테이블을 ID 속성을 기준으로 분할하고자 할 경우, 큐브리드 기반 미들웨어는 <표 2>과 같이 MinMaxTable의 정보를 설정할 수 있다. 이를 통해, ID 값이 0~50의 값을 갖는 레코드의 경우에는 1번 partition 서버에 저장되고, ID 값이 51~100의 값을 갖는 레코드의 경우에는 2번 partition 서버에 저장될 수 있다.
한편, Insert 구문을 수행하고자 하는 테이블에 대한 정보가 MinMaxTable에 존재하는 경우, 큐브리드 기반 미들웨어는 해당 정보를 바탕으로 데이터 저장 과정을 수행할 수 있다.
도 5는 본 발명에 따른 큐브리드 기반 미들웨어에 의한 insert(저장) 수행 과정을 설명하기 위한 도면이다.
도 5에 도시한 바와 같이, user1이 「Insert into Student(ID, name) values(20, 'KIM')」이라는 SQL 질의를 요청한 경우, 큐브리드 기반 미들웨어는 SQL 분석을 통해 Student 테이블에 데이터를 저장해야 함을 파악할 수 있다. MinMaxTable 탐색을 통해 Student 테이블은 ID 속성을 기반으로 데이터를 분할하며, ID 값이 20인 레코드의 경우, 1번 partition에 저장됨을 확인할 수 있다.
이후, 큐브리드 기반 미들웨어는 ipPortTable에 접근하여 해당 partition의 접속 정보를 확인할 수 있다. 따라서 큐브리드 기반 미들웨어는 1번 partition의 ip="123.456.789.001"와 port 번호="9000"를 확인하고, 해당 partiton에 해당하는 큐브리드 서버에 해당 insert문을 전송함으로써, 데이터 저장을 수행할 수 있다.
마찬가지로, user2가 「Insert into Student(ID, name) values(70, 'LEE')」이라는 SQL 질의를 요청한 경우, MinMaxTable 탐색을 통해 ID 값이 70인 레코드이면, 큐브리드 기반 미들웨어는 2번 partition에 저장됨을 확인하고, 해당 partition(123.456.789.002:9002)에 해당하는 큐브리드 서버에 해당 insert문을 전송함으로써, 데이터 저장을 수행할 수 있다. 이러한 과정을 통해, 큐브리드 기반 미들웨어는 데이터의 분산 저장을 수행할 수 있다.
- 데이터 분산 탐색을 위한 기술(Select 구문 처리 기술)
큐브리드 기반 미들웨어를 통한 데이터 분산 탐색 방법은 다음과 같다.
데이터의 탐색, 즉 Select 구문의 수행을 위해서는 meta table의 SearchTable 및 ipPortTable을 참조하여 수행할 수 있다.
먼저, 큐브리드 기반 미들웨어는 Select 구문을 수행하고자 하는 테이블에 대한 정보를 SearchTable에서 검색할 수 있다.
예를 들어, user1 사용자가 「Select * from Student where age=21」라는 SQL 질의를 전송한 경우, 큐브리드 기반 미들웨어는 SQL 분석을 통해 Student 테이블에서 데이터를 탐색해야 함을 파악할 수 있다.
<표 3>과 같은 SearchTable이 존재할 경우, 큐브리드 기반 미들웨어는 user1을 위한 Student 테이블이 1번과 2번 partition에 저장되어 있음을 확인할 수 있다. 이후, 큐브리드 기반 미들웨어는 ipPortTable에 접근하여 해당 partition의 접속 정보를 확인할 수 있다.
이를 통해, 큐브리드 기반 미들웨어는 1번 partition의 ip="123.456.789.001"과 port 번호="9000"을 확인하고, 아울러 2번 partition의 ip="123.456.789.002"와 port 번호="9002"를 확인할 수 있다.
이후, 큐브리드 기반 미들웨어는 해당 큐브리드 서버에 user1 사용자가 전송한 select문을 전송함으로써, 데이터 탐색을 병렬적으로 수행하게 된다.
한편, Select 질의의 경우에는 다음의 사항을 고려해야 한다.
각 큐브리드 서버에서 전송된 질의 결과는 키(key) 값에 의해 정렬이 된 상태이지만, 최종 질의 결과를 병합하기 위해서는 각 서버에서 전송된 모든 질의 결과에 대한 재정렬을 수행해야 한다. 이를 위한 수행과정은 다음과 같다.
첫째, 큐브리드 기반 미들웨어는 select 질의를 수행한 테이블의 key column을 확인한다.
둘째, 큐브리드 기반 미들웨어는 key column의 type(예, 숫자, 문자 등)을 확인한다. key column 및 해당 column의 type은 큐브리드 API를 통해 확인 가능하다.
셋째, 큐브리드 기반 미들웨어는 각 큐브리드 서버에서 반환된 질의 결과를 하나씩 추출한다.
넷째, 큐브리드 기반 미들웨어는 key column의 type에 따라 추출한 결과를 비교한 후, 오름차순(asc) 기준 우선순위가 높은 결과를 최종 결과로 작성한다.
다섯째, 큐브리드 기반 미들웨어는 최종 결과로 선택된 데이터가 전송된 큐브리드 서버의 다음 결과를 하나 추출한 후, 비교를 수행한다. 만약, 중복된 데이터가 존재하는 경우, 해당 데이터는 최종 결과로 기록하지 않는다. 이러한 과정은 모든 큐브리드 서버로부터 전송된 질의 결과를 모두 읽을 때가지 반복 수행된다.
모든 질의 결과에 대해 재정렬이 완료되면, 큐브리드 기반 미들웨어는 해당 결과를 Client에게 전송함으로써 질의 수행을 완료한다.
도 6은 본 발명에 따른 큐브리드 기반 미들웨어에 의한 select(탐색) 수행 과정을 설명하기 위한 도면이다.
도 6에 도시한 바와 같이, user1이 「Select name from student where age=21」이라는 SQL 질의를 요청한 경우, 큐브리드 기반 미들웨어는 SQL 분석을 통해 Student 테이블에서 데이터 탐색을 수행해야 함을 파악할 수 있다.
이때, 큐브리드 기반 미들웨어는 SearchTable 탐색을 통해 Student 테이블이 partition 1과 partition 2에 분산 저장되어 확인하고, ipPortTable을 통해 partition 1의 접속 정보(123.456.789.001:9000) 및 partition 2의 접속 정보(123.456.789.001:9002)를 확인한다.
이후, 큐브리드 기반 미들웨어는 해당 partition에 해당하는 큐브리드 서버에 질의를 전송한다. 질의를 전송받은 큐브리드 1과 큐브리드 2 서버는 질의 수행 후, 질의 결과를, 큐브리드 기반 미들웨어의 질의 결과 병합 컴포넌트로 전송한다.
따라서, 큐브리드 1 서버는 'Kim'이라는 질의 결과를, 큐브리드 2 서버는 'Kim', 'Lee'이라는 질의 결과를 질의 결과 병합 컴포넌트로 전송할 수 있다.
큐브리드 기반 미들웨어는 전송받은 질의결과를 정렬하고, 중복 결과가 존재할 경우 이를 삭제한다.
이에 따라, 큐브리드 기반 미들웨어는 'Kim'이라는 질의 결과가 하나 삭제되어, 최종적으로 'Kim'과 'Lee'라는 질의 결과를 작성하게 된다.
마지막으로, 큐브리드 기반 미들웨어는 해당 질의 결과를, 질의 요청자인 user1에게 전송함으로써 select 질의 수행을 종료할 수 있다.
- Join 구문 처리 기술
큐브리드 기반 미들웨어를 통해 Join 질의를 수행하는 방법은 다음과 같다.
첫째, Meta Table의 MinMaxTable에는 Join 질의를 수행하고자 하는 테이블의 속성 정보가 저장되어 있다. MinMaxTable에 저장된 정보는 데이터 저장(insert) 단계 이전에 설정되며, 특정 데이터가 어느 서버에 저장되어야 할지를 나타낸다.
도 7은 본 발명에 따른 Join 질의를 위한 MinMaxTable의 일례를 도시하는 도면이다.
도 7에 도시한 바와 같은 MinMaxTable이 존재할 때, 큐브리드 기반 미들웨어에 의해, '3345'라는 값을 갖는 데이터를 wis2 테이블에 삽입한다고 가정한다.
큐브리드 기반 미들웨어는 MinMaxTable을 검사하여 '3333(min) < 3345 < 6666(max)' 인 것을 확인할 수 있으며, 해당 데이터는 1번 Partition에 저장되게 된다.
이때, Join 질의를 수행하고자 하는 두 테이블은 동일한 데이터 분할 정책을 따라야 한다. 즉, Join을 수행하고자 하는 테이블의 데이터 분할 Key가 동일해야 하며, 해당 Key의 특정 범위 데이터는 동일한 Partition에 저장되어야 한다.
예를 들어, 도 5과 같이, wis2 테이블의 데이터 중 0∼3333 범위의 데이터를 저장하는 파티션과, wis3 테이블의 데이터 중 0∼3333 범위의 데이터를 저장하기 위한 파티션은 0번 노드로 동일해야 한다.
이러한 조건을 기반으로 한 Join 질의 처리 수행 과정은 다음과 같다.
첫째, 사용자가 Join 질의를 미들웨어로 전송할 경우, 큐브리드 기반 미들웨어는 Join 질의의 분산 처리를 수행하기 위해 질의 분석 및 재정의하고, 이를 바탕으로 Join 질의 처리를 수행할 Partition 정보를 파악한다.
둘째, 큐브리드 기반 미들웨어는 재정의된 질의를 바탕으로 각 큐브리드 서버를 통해 Join 질의를 수행한다.
셋째, 큐브리드 기반 미들웨어는 큐브리드로부터 전송 받은 후보 결과를 병합하여 최종 질의 결과를 생성한다.
마지막으로, 큐브리드 기반 미들웨어는 최종 질의 결과를 사용자에게 전송하여 Client의 질의를 종료한다.
- 집계 연산 처리 기술
큐브리드 기반 미들웨어를 통해 집계 질의를 수행하는 방법은 다음과 같다.
큐브리드 기반 미들웨어는 질의 분석을 통해 집계 질의의 종류를 파악할 수 있다. 큐브리드 기반 미들웨어에서 지원하는 집계 질의의 종류는 Min, Max, Count, Sum, Average일 수 있다.
집계 질의의 종류를 파악한 후, 큐브리드 기반 미들웨어는 집계 질의의 종류에 따라 최종 집계 결과를 도출한다.
Min 집계 질의의 경우, 큐브리드 기반 미들웨어는 질의를 큐브리드 서버에 전송하고, 각 서버에서 전송된 질의 결과를 병합한 후 병합된 질의 결과 내에서 가장 작은 값을 최종 Min 값으로 추출할 수 있다.
Max 집계 질의의 경우, 큐브리드 기반 미들웨어는 질의를 큐브리드 서버에 전송하고, 각 서버에서 전송된 질의 결과를 병합한 후 병합된 질의 결과 내에서 가장 큰 값을 최종 Max 값으로 추출할 수 있다.
Count 집계 질의의 경우, 큐브리드 기반 미들웨어는 질의를 큐브리드 서버에 전송하고, 각 서버에서 전송된 질의 결과를 병합한 후 병합된 질의 결과를 모두 합산하여 최종 Count 값을 계산할 수 있다.
Sum 집계 질의의 경우, 큐브리드 기반 미들웨어는 질의를 큐브리드 서버에 전송하고, 각 서버에서 전송된 질의 결과를 병합한 후, 병합된 질의 결과를 모두 합산하여 최종 Sum 값을 계산할 수 있다.
Average 질의의 경우, 각 큐브리드 서버에서 계산된 Average 값을 통해서는 최종 결과를 도출할 수 없다. 따라서, 큐브리드 기반 미들웨어는 각 큐브리드 서버가 Sum 및 Count를 반환하는 질의로 재구성하여 이를 큐브리드 서버에 전송한다. 큐브리드 기반 미들웨어는 각 서버에서 전송된 Sum 및 Count 값을 각각 합산하고, 이를 바탕으로 최종 Average 값을 계산한다.
이후, 질의 타입 별 집계 결과가 도출되면, 큐브리드 기반 미들웨어는 최종 질의 결과를 사용자에게 전송하여 사용자의 질의 요청 처리를 완료할 수 있다.
<표 4>에는 집계 질의 종류 별 최종 질의 결과 추출을 위해, 미들웨어에서 지원하는 질의 유형별 수행 내용이 예시되고 있다.
Figure pat00004
- Order by 구문 처리 기술
큐브리드 기반 미들웨어를 통해 Order by 구문이 포함된 Select 구문을 처리하는 방법은 다음과 같다.
큐브리드 기반 미들웨어는 질의 분석을 통해 추출된 Order by 구문 정보를 활용하여, 각 큐브리드 서버에서 전송된 질의결과로부터 최종 질의결과를 작성할 수 있다.
큐브리드 기반 미들웨어가 참조하는 정보는 order by 조건의 개수, Order by를 수행할 column 및 해당 column의 데이터 type이다. 예를 들어, 「Select * from Student where age=21 Order by ID acs, age desc」라는 SQL 질의가 주어진 경우, 큐브리드 기반 미들웨어는 order by를 수행할 조건이 2개이고, ID column의 경우 오름차순(asc)으로, age column의 경우 내림차순(desc)로 정렬해야 함을 파악할 수 있다.
각 큐브리드 서버에서 전송된 질의 결과는 질의에 포함된 Order by 조건에 의해 정렬이 된 상태이지만, 최종 질의 결과를 병합하기 위해서는 각 서버에서 전송된 모든 질의 결과에 대한 재정렬을 수행해야 한다. 이를 위한 수행과정은 다음과 같다.
첫째, 큐브리드 기반 미들웨어는 질의 분석을 통해 추출한 order by 관련 정보를 확인한다.
둘째, 큐브리드 기반 미들웨어는 Order by를 수행할 column의 type(예, 숫자, 문자 등)을 확인한다. 해당 column의 type은 큐브리드 API를 통해 확인 가능하다.
셋째, 큐브리드 기반 미들웨어는 각 큐브리드 서버에서 반환된 질의 결과를 하나씩 추출한다.
넷째, 큐브리드 기반 미들웨어는 order by를 수행할 column의 type 및 해당 column에 대해 수행해야 하는 정렬 조건(오름차순(asc) 혹은 내림차순(desc))에 따라 레코드들을 비교한 후, 정렬 우선순위가 높은 결과를 최종 결과로 작성한다.
다섯째, 큐브리드 기반 미들웨어는 최종 결과로 선택된 데이터가 전송된 큐브리드 서버의 다음 결과를 하나 추출한 후, 비교를 수행한다. 만약, 중복된 데이터가 존재하는 경우, 큐브리드 기반 미들웨어는 해당 데이터를 최종 결과로 기록하지 않는다.
해당 과정은 모든 큐브리드 서버로부터 전송된 질의 결과를 모두 읽을 때까지 반복 수행된다. 모든 질의 결과에 대해 재정렬이 완료되면, 큐브리드 기반 미들웨어는 해당 결과를 Client에게 전송함으로써 질의 수행을 완료한다.
- Limit 구문 처리 기술
큐브리드 기반 미들웨어를 통해 Limit 구문이 포함된 Select 구문을 처리하는 방법은 다음과 같다.
큐브리드 기반 미들웨어는 질의 분석을 통해 추출된 Limit 구문 정보를 활용하여, 각 큐브리드 서버에서 전송된 질의결과로부터 최종 질의결과를 작성한다.
Limit 구문 분석을 통해서는 사용자에게 반환되어야 하는 레코드의 수(num)를 파악 가능하다. 예를 들어, 「Select * from Student where age=21 Limit 10」라는 SQL 질의가 주어진 경우, 큐브리드 기반 미들웨어는 최종 반환되어야 하는 레코드의 수가 num=10임을 파악할 수 있다.
Limit 구문이 포함된 Select 질의를 처리하기 위해 미들웨어가 수행하는 내용은 일반 Select 질의를 처리하는 과정과 거의 동일하다. 단, 일반 Select 구문의 경우 모든 큐브리드 서버로부터 전송된 질의 결과를 모두 읽을 때까지 반복 수행되는 반면, Limit 구문이 포함된 Select 질의의 경우, 큐브리드 기반 미들웨어는 최종 결과로 num 개의 레코드가 작성되면 질의 결과 병합을 종료할 수 있다. Num개의 질의 결과가 선택되면, 큐브리드 기반 미들웨어는 해당 결과를 Client에게 전송함으로써 질의 수행을 완료한다.
이하, 본 발명의 실시예에 따른 큐브리드 기반 미들웨어(100)의 동작 흐름을 상세히 설명한다.
도 8은 본 발명의 일실시예에 따른 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법을 구체적으로 도시한 작업 흐름도이다.
도 8은 본 발명의 일실시예에 따른 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법을 구체적으로 도시한 작업 흐름도이다.
본 실시예에 따른 분산 병렬 질의 처리 방법은 상술한 큐브리드 기반 미들웨어(100)에 의해 수행될 수 있다.
우선, 큐브리드 기반 미들웨어(100)는, 단말로부터 입력된 질의문에 대해 구문을 분석한다(810). 상기 질의문은 수행하고자 하는 처리에 관한 명령어를 포함하는 구문일 수 있고, '탐색(select 구문)', '저장(insert 구문)', '조인(join 구문)' 등으로 그 타입을 구분할 수 있다. 본 단계(810)는 단말을 통해 사용자가 입력한 질의문을 파싱하여 명령어를 추출 함으로써, 상기 질의문이 갖는 타입을 분석하는 과정일 수 있다.
예컨대, SQL 형태의 질의문 「Insert into Student(ID, name) ∼」이 입력되는 경우, 큐브리드 기반 미들웨어(100)는 질의문 내 구문을 파싱하고, 명령어 'Insert'를 추출 함으로써, 상기 질의문을, 저장과 관련되는 것으로 분석할 수 있다.
또는, 큐브리드 기반 미들웨어(100)는 다른 질의문에 대한 파싱을 통해 명령어 'select'가 추출되면, 상기 질의문을, 탐색과 관련되는 것으로 분석할 수도 있다.
또한, 큐브리드 기반 미들웨어(100)는 상기 구문을 분석한 결과에 따라, 식별자를 결정한다(820). 여기서, 식별자는 수행할 처리에 따라 검색해야 하는 메타 테이블을 식별하기 위한 것으로, MinMax 테이블에 할당되는 MinMax 식별자, 서치 테이블에 할당되는 서치 식별자 등을 예시할 수 있다.
다음으로, 큐브리드 기반 미들웨어(100)는 상기 결정된 식별자를 이용하여, 적어도 하나의 서버접근 정보를 획득한다(830). 여기서, 서버접근 정보는 큐브리드 서버에 부여되어 있는 IP 주소와 포트 등일 수 있고, 별도의 IP 테이블 내에 유지될 수 있다. 본 단계(830)는 식별되는 메타 테이블로부터 접속할 큐브리드 서버의 정보를 얻는 과정일 수 있다.
예를 들어, 상기 질의문이 탐색과 관련되는 것으로 분석되는 경우, 큐브리드 기반 미들웨어(100)는 서치 식별자를 결정할 수 있다. 또한, 큐브리드 기반 미들웨어(100)는 상기 서치 식별자에 의해 식별되는 메타 테이블 내 서치 테이블로부터, 탐색할 분산 서버에 대한 파티션 데이터를 수집할 수 있다. 상기 파티션 데이터는 상기 탐색 처리를 수행하는 데에 필요한 정보/데이터를 저장하고 있는 큐브리드 서버를 식별하기 위한 정보일 수 있다.
상기 파티션 데이터를 수집하는 데에 있어, 메 큐브리드 기반 미들웨어(100)는 상기 질의문에서, 사용자 항목과 테이블명 항목을 리드하고, 리드된 상기 사용자 항목과 상기 테이블명 항목에 대응하는 파티션 데이터를, 상기 서치 테이블에서 추출하여 수집할 수 있다.
예컨대, user 1이 입력한 질의문이, 탐색과 관련되는 「select * from Sales」일 경우, 큐브리드 기반 미들웨어(100)는 상기 질의문으로부터 사용자 항목 'user ID(00001)'와, 테이블명 항목 'table name(Sales)'을 리드하고, 상기 'user ID(00001)'와 'table name(Sales)'를 모두 대응하여 저장하는 파티션 데이터 'partition(2, 3)'을 상기 서치 테이블에서 추출하여 수집할 수 있다.
이후, 큐브리드 기반 미들웨어(100)는 상기 파티션 데이터와 대응하는 IP 주소와 포트를, IP 테이블에서 추출하여, 상기 서버접근 정보로서 획득할 수 있다.
상술의 예에서, 큐브리드 기반 미들웨어(100)는 상기 수집된 파티션 데이터 'partition(2, 3)' 각각에 대응하는 서버접근 정보 '210.117.181.24:1111'와 '210.117.181.25:1111'를 IP 테이블에서 추출할 수 있다.
즉, 큐브리드 기반 미들웨어(100)는 구문 분석에 따라 메타 테이블에 대한 검색을 통해, 상기 탐색을 위해 궁극적으로 접속할 특정 큐브리드 서버에 관한 정보를 획득할 수 있다.
다른 예에서, 상기 질의문이 저장과 관련되는 것으로 분석되는 경우, 큐브리드 기반 미들웨어(100)는 MinMax 식별자를 결정할 수 있다. 또한, 큐브리드 기반 미들웨어(100)는 상기 MinMax 식별자에 의해 식별되는 메타 테이블 내 MinMax 테이블로부터, 저장할 분산 서버에 대한 파티션 데이터를 수집할 수 있다. 상기 파티션 데이터는 상기 저장 처리를 수행되는 큐브리드 서버를 식별하기 위한 정보일 수 있다.
상기 파티션 데이터를 수집하는 데에 있어, 큐브리드 기반 미들웨어(100)는 상기 질의문에서, ID 항목 및 테이블명 항목을 리드하고, 상기 테이블명 항목에 대응하며, 상기 ID 항목을, 등록된 Min 값과 Max 값 사이로 포함하는 파티션 데이터를, 상기 MinMax 테이블에서 추출하여 수집할 수 있다.
예컨대, user 1이 입력한 질의문이, 저장과 관련되는 「Insert into Student(ID, name) values(20, 'KIM')」일 경우, 큐브리드 기반 미들웨어(100)는 상기 질의문으로부터 ID 항목 'column(20)'과, 테이블명 항목 'table name(Student)'을 리드하고, 'table name(Student)'에 대응하며, 'column(20)'을 등록된 Min 값(0)과 Max 값(50) 사이로 포함하는 파티션 데이터 'partition(2)'를 상기 MinMax 테이블에서 추출하여 수집할 수 있다.
이후, 큐브리드 기반 미들웨어(100)는 상기 파티션 데이터와 대응하는 IP 주소와 포트를, IP 테이블에서 추출하여, 상기 서버접근 정보로서 획득할 수 있다.
상술의 예에서, 큐브리드 기반 미들웨어(100)는 상기 수집된 파티션 데이터 'partition(2)'에 대응하는 서버접근 정보 '123.456.789.002:9002'를 IP 테이블에서 추출할 수 있다.
즉, 큐브리드 기반 미들웨어(100)는 구문 분석에 따라 메타 테이블에 대한 검색을 통해, 상기 저장을 위해 궁극적으로 접속할 특정 큐브리드 서버에 관한 정보를 획득할 수 있다.
서버접근 정보의 획득 후, 큐브리드 기반 미들웨어(100)는 상기 서버접근 정보에서 지정하는 분산 서버에 접속한다(840). 본 단계(840)는 서버접근 정보를 이용하여 특정 큐브리드 서버에 접속하는 과정일 수 있다.
또한, 큐브리드 기반 미들웨어(100)는 상기 구문을 분석한 결과, 상기 질의문이 탐색과 관련되는 경우에, 접속한 분산 서버에 상기 질의문을 전송하고, 상기 질의문에 관한 분산 서버에서의 처리에 따른 결과데이터를, 분산 서버로부터 수신할 수 있다.
또한, 큐브리드 기반 미들웨어(100)는 상기 수신된 결과데이터를, 상기 질의문에 대한 응답으로 단말로 제공할 수 있다. 즉, 큐브리드 기반 미들웨어(100)는 각 분산 서버로부터 결과데이터를 취합하여, 단말로 보고할 수 있다. 이때, 수신된 결과가 선 수신된 다른 결과데이터와 동일하게 중복되는 경우, 큐브리드 기반 미들웨어(100)는 나중에 수신된 결과데이터를 제거함으로써, 같은 결과데이터가 반복하여 응답으로 제공되지 않도록 할 수 있다.
다른 실시예에서, 상기 수신된 결과데이터가 복수일 경우, 큐브리드 기반 미들웨어(100)는 상기 질의문에서 오더(order) 항목을 리드한다. 이후, 큐브리드 기반 미들웨어(100)는 상기 오더 항목을 고려하여, 상기 복수의 결과데이터를 정렬하여 단말로 제공할 수 있다.
예컨대, 분산 서버로부터 탐색된 나이 21인 학생에 관한 결과데이터가 'michael', 'tom', 'jane'의 3개일 경우, 큐브리드 기반 미들웨어(100)는 질의문 「Select * from Student where age=21 Order by ID acs」에서 오더 항목 'ID acs'을 리드할 수 있다. 이후, 큐브리드 기반 미들웨어(100)는 상기 'ID acs'에 따라, 수신된 3개의 결과데이터를 오름차순인 'tom', 'jane', 'michael'로 정렬하여 단말로 제공할 수 있다.
다른 실시예에서, 상기 수신된 결과데이터가 복수일 경우, 큐브리드 기반 미들웨어(100)는 상기 질의문에서 리미트(limit) 항목을 리드할 수 있다. 이후, 큐브리드 기반 미들웨어(100)는 상기 복수의 결과데이터 중에서, 상기 리미트 항목에서 규정한 수의 결과데이터를 선별하여 단말로 제공할 수 있다.
예컨대, 분산 서버로부터 탐색된 나이 21인 학생에 관한 결과데이터가 20개일 경우, 큐브리드 기반 미들웨어(100)는 질의문 「Select * from Student where age=21 Limit 10」에서 리미트 항목 '10'을 리드할 수 있다. 이후, 큐브리드 기반 미들웨어(100)는 상기 '10'에 따라, 수신된 20개의 결과데이터 중에서, 수신 순서가 앞선 10개의 결과데이터를 선별하여 단말로 제공할 수 있다.
또한, 큐브리드 기반 미들웨어(100)는 상기 구문을 분석한 결과, 상기 질의문이 저장과 관련되는 경우에, 접속한 분산 서버에 상기 질의문을 전송하여, 상기 질의문 내 볼륨 항목이 분산 서버에 저장되도록 할 수 있다.
여기서 볼륨 항목은 큐브리드 서버에 저장해야 하는 데이터를 지칭할 수 있고, 예컨대 질의문 「Insert into Student(ID, name) values(20, 'KIM')」에서, 학생에 대한 'ID'와 'name' 각각에 상당하는 20, 'KIM'을 예시할 수 있다. 질의문은 수신한 분산 서버는 ID 20에 대응하여 name 'KIM'을 저장, 유지할 수 있다.
또한, 큐브리드 기반 미들웨어(100)는 상기 구문을 분석한 결과, 상기 질의문이 조인(join)과 관련되는 경우에, 접속한 분산 서버에, 상기 질의문을 전송하고, 상기 질의문에 관한 분산 서버에서의 처리에 따른 테이블별 결과데이터를, 분산 서버로부터 n(상기 n은 2이상의 자연수)개 수신할 수 있다. 즉, 큐브리드 기반 미들웨어(100)는 하나의 질의문 전송을 통해, 분산 서버에서의 처리에 따른 임의의 결과데이터와, 상기 임의의 결과데이터와 연관 관계에 있는 다른 결과데이터를 수신할 수 있다. 상기 임의의 결과데이터와 다른 결과데이터는 상기 분산 서버 내에서 테이블로 구분되어 저장되어 있고, 이에 따라 본 명세서에서는 상기 조인과 관련되는 처리에 따른 결과데이터를, 테이블별 결과데이터로 정의한다.
또한, 큐브리드 기반 미들웨어(100)는 상기 n개의 테이블별 결과데이터를 합산하여, 상기 질의문에 대한 응답으로 단말로 제공할 수 있다. 즉, 큐브리드 기반 미들웨어(100)는 분산 서버로부터 수신한 복수의 테이블별 결과데이터를 취합하여, 단말로 보고할 수 있다.
또한, 상기 질의문이 조인과 관련되는 경우에는 상기 서버접근 정보를 획득하는 절차가 상이하게 변경될 수 있다. 이는 조인의 경우, 하나의 분산 서버에서 복수의 결과데이터(n개의 테이블별 결과데이터)를 수신하기 때문이다.
즉, 큐브리드 기반 미들웨어(100)는 상기 질의문을 구성하는 항목 중에서, ID 항목 및 복수의 테이블명 항목을 리드하고, 복수의 테이블명 항목에 각각 대응하며, 상기 ID 항목을, 등록된 Min 값과 Max 값 사이로 포함하는 하나의 파티션 데이터를, MinMax 테이블로부터 수집한다. 이후, 큐브리드 기반 미들웨어(100)는 상기 파티션 데이터와 대응하는 IP 주소와 포트를, IP 테이블에서 추출하여, 상기 서버접근 정보로서 획득할 수 있다.
이를 통해, 본 발명의 큐브리드 기반 미들웨어(100)는 서로 연관되는 n개의 테이블별 결과데이터를 저장하고 있는, 하나의 큐브리드 서버에 관한 정보를 획득하여 해당 큐브리드 서버로부터 테이블별 결과데이터를 취합, 조인하여 단말로 제공함으로써, 단말(105)에서 요구하는 조인 명령을 충실히 이행할 수 있게 한다.
본 발명에 따르면, 기존 SQL에 익숙한 사용자들이 분산 저장된 데이터에 대한 병렬 처리 부담을 최소화하여 빅데이터 처리를 수행할 수 있도록 지원 함으로써, 다양한 질의 수행을 가능하게 할 수 있다.
또한, 본 발명에 의해서는, 데이터 분할 정책에 따라 다수의 큐브리드 서버에 데이터를 분산 저장하도록 할 수 있다.
또한, 본 발명에 따르면, 한 클라이언트의 질의가 다수의 서버에서 실행되어야 하는 경우에도, 질의 처리를 지원 가능하게 할 수 있다.
또한, 본 발명에 의해서는, 분산된 데이터 상에서의 다양한 집계 질의 처리를 지원 할 수 있다.
본 발명의 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
100 : 큐브리드 기반 미들웨어
110 : 통신 컴포넌트 120 : 질의 분석 컴포넌트
130 : 메타 검색 컴포넌트 140 : 질의 결과 컴포넌트
150 : 분산 서버

Claims (17)

  1. 단말로부터 입력된 질의문에 대해 구문을 분석하는 단계;
    상기 구문을 분석한 결과에 따라, 식별자를 결정하는 단계;
    상기 결정된 식별자를 이용하여, 적어도 하나의 서버접근 정보를 획득하는 단계; 및
    상기 서버접근 정보에서 지정하는 분산 서버에 접속하는 단계
    를 포함하는 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법.
  2. 제1항에 있어서,
    상기 구문을 분석한 결과, 상기 질의문이 탐색과 관련되어 서치 식별자를 결정하는 경우,
    상기 서버접근 정보를 획득하는 단계는,
    상기 서치 식별자에 의해 식별되는 서치 테이블로부터, 탐색할 분산 서버에 대한 파티션 데이터를 수집하는 단계; 및
    상기 파티션 데이터와 대응하는 IP 주소와 포트를, IP 테이블에서 추출하여, 상기 서버접근 정보로서 획득하는 단계
    를 포함하는 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법.
  3. 제2항에 있어서,
    상기 파티션 데이터를 수집하는 단계는,
    상기 질의문에서, 사용자 항목과 테이블명 항목을 리드하는 단계; 및
    상기 사용자 항목과 상기 테이블명 항목에 대응하는 파티션 데이터를, 상기 서치 테이블에서 추출하여 수집하는 단계
    를 포함하는 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법.
  4. 제1항에 있어서,
    상기 구문을 분석한 결과, 상기 질의문이 탐색과 관련되는 경우,
    접속한 상기 분산 서버에 상기 질의문을 전송하고, 상기 질의문에 관한 상기 분산 서버에서의 처리에 따른 결과데이터를, 상기 분산 서버로부터 수신하는 단계; 및
    상기 수신된 결과데이터를, 상기 질의문에 대한 응답으로 상기 단말로 제공하되, 수신된 결과데이터가 앞서 수신된 다른 결과데이터와 중복되면 제거한 후 상기 단말로 제공하는 단계
    를 더 포함하는 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법.
  5. 제4항에 있어서,
    상기 수신된 결과데이터가 복수이면,
    상기 질의문에서 오더(order) 항목을 리드하는 단계
    를 더 포함하고,
    상기 단말로 제공하는 단계는,
    상기 오더 항목을 고려하여, 상기 복수의 결과데이터를 정렬하여 상기 단말로 제공하는 단계
    를 포함하는 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법.
  6. 제4항에 있어서,
    상기 수신된 결과데이터가 복수이면,
    상기 질의문에서 리미트(limit) 항목을 리드하는 단계
    를 더 포함하고,
    상기 단말로 제공하는 단계는,
    상기 복수의 결과데이터 중에서, 상기 리미트 항목에서 규정한 수의 결과데이터를 선별하여 상기 단말로 제공하는 단계
    를 포함하는 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법.
  7. 제1항에 있어서,
    상기 구문을 분석한 결과, 상기 질의문이 저장과 관련되어 MinMax 식별자를 결정하는 경우,
    상기 서버접근 정보를 획득하는 단계는,
    상기 MinMax 식별자에 의해 식별되는 MinMax 테이블로부터, 저장할 분산 서버에 대한 파티션 데이터를 수집하는 단계; 및
    상기 파티션 데이터와 대응하는 IP 주소와 포트를, IP 테이블에서 추출하여, 상기 서버접근 정보로서 획득하는 단계
    를 포함하는 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법.
  8. 제7항에 있어서,
    상기 파티션 데이터를 수집하는 단계는,
    상기 질의문에서, ID 항목 및 테이블명 항목을 리드하는 단계; 및
    상기 테이블명 항목에 대응하며, 상기 ID 항목을, 등록된 Min 값과 Max 값 사이로 포함하는 파티션 데이터를, 상기 MinMax 테이블에서 추출하여 수집하는 단계
    를 포함하는 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법.
  9. 제1항에 있어서,
    상기 구문을 분석한 결과, 상기 질의문이 저장과 관련되는 경우,
    접속한 상기 분산 서버에 상기 질의문을 전송하여, 상기 질의문 내 볼륨 항목이 상기 분산 서버에 저장되도록 하는 단계
    를 더 포함하는 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법.
  10. 제1항에 있어서,
    상기 구문을 분석한 결과, 상기 질의문이 조인(join)과 관련되는 경우,
    접속한 상기 분산 서버에, 상기 질의문을 전송하고, 상기 질의문에 관한 상기 분산 서버에서의 처리에 따른 테이블별 결과데이터를, 상기 분산 서버로부터 n(상기 n은 2이상의 자연수)개 수신하는 단계; 및
    상기 n개의 테이블별 결과데이터를 합산하여, 상기 질의문에 대한 응답으로 제공하는 단계
    를 더 포함하는 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법.
  11. 제10항에 있어서,
    상기 서버접근 정보를 획득하는 단계는,
    상기 질의문을 구성하는 항목 중에서, ID 항목 및 복수의 테이블명 항목을 리드하는 단계;
    상기 복수의 테이블명 항목에 각각 대응하며, 상기 ID 항목을, 등록된 Min 값과 Max 값 사이로 포함하는 하나의 파티션 데이터를, MinMax 테이블로부터 수집하는 단계; 및
    상기 파티션 데이터와 대응하는 IP 주소와 포트를, IP 테이블에서 추출하여, 상기 서버접근 정보로서 획득하는 단계
    를 포함하는 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법.
  12. 단말로부터 입력된 질의문에 대해 구문을 분석하는 질의 분석 컴포넌트;
    상기 구문을 분석한 결과에 따라, 식별자를 결정하고, 상기 결정된 식별자를 이용하여, 적어도 하나의 서버접근 정보를 획득하는 메타 검색 컴포넌트; 및
    상기 서버접근 정보에서 지정하는 분산 서버에 접속하는 통신 컴포넌트
    를 포함하는 분산 병렬 질의 처리를 지원하는 큐브리드 기반 미들웨어.
  13. 제12항에 있어서,
    상기 구문을 분석한 결과, 상기 질의문이 탐색과 관련되어 서치 식별자를 결정하는 경우,
    상기 메타 검색 컴포넌트는,
    상기 서치 식별자에 의해 식별되는 서치 테이블로부터, 탐색할 분산 서버에 대한 파티션 데이터를 수집하고, 상기 파티션 데이터와 대응하는 IP 주소와 포트를, IP 테이블에서 추출하여, 상기 서버접근 정보로서 획득하는
    큐브리드 기반 미들웨어.
  14. 제12항에 있어서,
    상기 구문을 분석한 결과, 상기 질의문이 탐색과 관련되는 경우,
    상기 통신 컴포넌트는,
    접속한 상기 분산 서버에 상기 질의문을 전송하고, 상기 질의문에 관한 상기 분산 서버에서의 처리에 따른 결과데이터를, 상기 분산 서버로부터 수신하고,
    상기 큐브리드 기반 미들웨어는,
    상기 수신된 결과데이터를, 상기 질의문에 대한 응답으로 상기 단말로 제공하되, 수신된 결과데이터가 앞서 수신된 다른 결과데이터와 중복되면 제거한 후 상기 단말로 제공하는 질의 결과 컴포넌트
    를 더 포함하는 큐브리드 기반 미들웨어.
  15. 제12항에 있어서,
    상기 구문을 분석한 결과, 상기 질의문이 저장과 관련되어 MinMax 식별자를 결정하는 경우,
    상기 메타 검색 컴포넌트는,
    상기 MinMax 식별자에 의해 식별되는 MinMax 테이블로부터, 저장할 분산 서버에 대한 파티션 데이터를 수집하고, 상기 파티션 데이터와 대응하는 IP 주소와 포트를, IP 테이블에서 추출하여, 상기 서버접근 정보로서 획득하는
    큐브리드 기반 미들웨어.
  16. 제12항에 있어서,
    상기 구문을 분석한 결과, 상기 질의문이 저장과 관련되는 경우,
    상기 통신 컴포넌트는,
    접속한 상기 분산 서버에 상기 질의문을 전송하여, 상기 질의문 내 볼륨 항목이 상기 분산 서버에 저장되도록 하는
    큐브리드 기반 미들웨어.
  17. 제12항에 있어서,
    상기 구문을 분석한 결과, 상기 질의문이 조인(join)과 관련되는 경우,
    상기 통신 컴포넌트는,
    접속한 상기 분산 서버에, 상기 질의문을 전송하고, 상기 질의문에 관한 상기 분산 서버에서의 처리에 따른 테이블별 결과데이터를, 상기 분산 서버로부터 n(상기 n은 2이상의 자연수)개 수신하고,
    상기 큐브리드 기반 미들웨어는,
    상기 n개의 테이블별 결과데이터를 합산하여, 상기 질의문에 대한 응답으로 제공하는 질의 결과 컴포넌트
    를 더 포함하는 큐브리드 기반 미들웨어.
KR1020150012659A 2015-01-27 2015-01-27 큐브리드 기반 미들웨어, 및 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법 KR101648707B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150012659A KR101648707B1 (ko) 2015-01-27 2015-01-27 큐브리드 기반 미들웨어, 및 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150012659A KR101648707B1 (ko) 2015-01-27 2015-01-27 큐브리드 기반 미들웨어, 및 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법

Publications (2)

Publication Number Publication Date
KR20160092259A true KR20160092259A (ko) 2016-08-04
KR101648707B1 KR101648707B1 (ko) 2016-08-18

Family

ID=56709338

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150012659A KR101648707B1 (ko) 2015-01-27 2015-01-27 큐브리드 기반 미들웨어, 및 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법

Country Status (1)

Country Link
KR (1) KR101648707B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019189962A1 (ko) * 2018-03-27 2019-10-03 주식회사 리얼타임테크 분산 데이터베이스에서의 복제본이 존재하는 데이터에 대한 질의 병렬화 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100132752A (ko) * 2009-06-10 2010-12-20 (주)자이네스 데이터베이스 분산을 통한 서비스 성능 향상을 위한 질의 데이터 분산 처리시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100132752A (ko) * 2009-06-10 2010-12-20 (주)자이네스 데이터베이스 분산을 통한 서비스 성능 향상을 위한 질의 데이터 분산 처리시스템

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019189962A1 (ko) * 2018-03-27 2019-10-03 주식회사 리얼타임테크 분산 데이터베이스에서의 복제본이 존재하는 데이터에 대한 질의 병렬화 방법
KR20190113055A (ko) * 2018-03-27 2019-10-08 주식회사 리얼타임테크 분산 데이터베이스에서의 복제본이 존재하는 데이터에 대한 질의 병렬화 방법

Also Published As

Publication number Publication date
KR101648707B1 (ko) 2016-08-18

Similar Documents

Publication Publication Date Title
JP7130600B2 (ja) ファーストクラスデータベース要素としての半構造データの実装
US9703768B1 (en) Object metadata query
US10534771B2 (en) Database access method and apparatus, and database system
JP6338817B2 (ja) データベースミドルウェアを用いたデータ管理システム及びその方法
US8234268B2 (en) System, method, and computer-readable medium for optimizing processing of distinct and aggregation queries on skewed data in a database system
CN111581234B (zh) Rac多节点数据库查询方法、装置及系统
CN110688397B (zh) 一种基于sql的分布式数据统一访问系统及方法
CN104699718A (zh) 用于快速引入业务数据的方法和装置
CN108509437A (zh) 一种ElasticSearch查询加速方法
KR100898465B1 (ko) 웹로그의 시계열 분석을 위한 데이터 저장 및 조회 방법그리고 상기 방법을 수행하는 시스템
KR101339766B1 (ko) 클라우드 서비스 컴포넌트간 매쉬업을 통한 통합 클라우드 서비스 시스템
CN112765117A (zh) 基于微服务架构的工业互联网标识解析系统
CN109213826A (zh) 数据处理方法和设备
JP2001350656A (ja) 異種データソース統合アクセス方法
CN108073641B (zh) 查询数据表的方法和装置
CN112231351A (zh) 一种pb级海量数据的实时查询方法和装置
CN111026709A (zh) 基于集群访问的数据处理方法及装置
CN107729428A (zh) 一种基于Presto和Elasticsearch的SQL查询方法
KR101648707B1 (ko) 큐브리드 기반 미들웨어, 및 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법
KR20100132752A (ko) 데이터베이스 분산을 통한 서비스 성능 향상을 위한 질의 데이터 분산 처리시스템
CN107220363A (zh) 一种支持全局复杂检索的跨地域查询方法及系统
KR20160050930A (ko) 대용량 분산 파일 시스템에서 데이터의 수정을 포함하는 트랜잭션 처리 장치 및 컴퓨터로 읽을 수 있는 기록매체
Serrano et al. From relations to multi-dimensional maps: A SQL-to-hbase transformation methodology
CN107590199A (zh) 一种面向内存的多线程数据库设计方法
Agarwal et al. Data storing in intelligent and distributed data warehouse using unique identification number

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: 20190812

Year of fee payment: 4