KR101757251B1 - 집계질의를 처리하기 위한 장치 및 그 방법 - Google Patents

집계질의를 처리하기 위한 장치 및 그 방법 Download PDF

Info

Publication number
KR101757251B1
KR101757251B1 KR1020160168574A KR20160168574A KR101757251B1 KR 101757251 B1 KR101757251 B1 KR 101757251B1 KR 1020160168574 A KR1020160168574 A KR 1020160168574A KR 20160168574 A KR20160168574 A KR 20160168574A KR 101757251 B1 KR101757251 B1 KR 101757251B1
Authority
KR
South Korea
Prior art keywords
attribute
aggregation
value
row
query
Prior art date
Application number
KR1020160168574A
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 KR1020160168574A priority Critical patent/KR101757251B1/ko
Application granted granted Critical
Publication of KR101757251B1 publication Critical patent/KR101757251B1/ko
Priority to PCT/KR2017/014367 priority patent/WO2018110908A1/ko

Links

Images

Classifications

    • G06F17/30327
    • 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/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • 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/2228Indexing structures
    • G06F16/2255Hash tables
    • 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/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • G06F17/3033
    • G06F17/30592

Abstract

본 발명은 해시트리(Hash-tree) 인덱스 기법을 기반으로 다차원 데이터의 속성에 대한 집계질의 처리과정을 효율적으로 수행함으로써, 기존과 다른 다차원 데이터베이스 기반의 새로운 집계질의 처리 방안이 실현되도록 하는 집계질의를 처리하기 위한 장치 및 그 방법을 제안한다.

Description

집계질의를 처리하기 위한 장치 및 그 방법{METHOD AND APPARATUS FOR PROCESSING AGGREGATION QUERY}
본 발명은 다차원 데이터베이스(Multi-dimensional database) 기반의 집계질의 처리 기술에 관한 것으로, 더욱 상세하게는, 다차원 데이터의 애트리뷰트(Attribute)에 대한 새로운 집계질의 처리 방안에 관한 것이다.
다차원 데이터베이스는 과학정보, 의료정보 등과 같은 대용량의 다차원 데이터를 모델링하고, 질의 처리 및 연산을 지원하기 위해 다수의 애트리뷰트(Attribute, 이하 속성) 항목을 가지고 있는 자료를 관리하는 데이터베이스이다.
이러한 다차원 데이터베이스는, 여러 개의 속성항목을 점차로 교체해서 다차원 데이터를 검색 및 집계처리 하게 된다.
하지만, 관계형 데이터베이스에 익숙해져 있는 일반적인 사용자는, 다차원 데이터베이스임에도 불구하고 다차원 데이터로 데이터를 모델링 하기 보다는, 관계형 데이터베이스와 같이 여러 속성을 가지는 1차원의 데이터로 모델링하고 데이터를 표현하는 경우가 발생하게 된다.
즉, 관계형 데이터베이스에서 1차원의 데이터의 여러 속성을 조작하여 집계 연산을 수행하던 것과 같이 다차원 데이터베이스에서도 동일하게 여러 속성을 조작하여 데이터를 모델링하고, 질의 처리 및 연산을 수행하기를 원한다.
하지만, 기존의 다차원 데이터베이스에서는 차원(Dimension)에 대해서만 집계 연산을 지원하기 때문에 전술과 같은 사용자의 니즈(needs)를 만족시키지 못하는 문제가 발생하게 된다.
이에, 본 발명에서는 기존 다차원 데이터베이스에서 제공되지 못하던 다차원 데이터의 속성에 대한 새로운 집계질의 처리 기술이 요구된다.
본 발명은 상기한 사정을 감안하여 창출된 것으로서, 본 발명에서 도달하고자 하는 목적은, 해시트리(Hash-tree) 인덱스 기법을 기반으로 다차원 데이터의 속성에 대한 집계질의 처리과정을 효율적으로 수행함으로써, 기존과 다른 다차원 데이터베이스 기반의 새로운 집계질의 처리 방안이 실현되도록 하는데 있다.
상기 목적을 달성하기 위한 본 발명에 따른 집계질의처리장치는, 사용자단말로부터 집계질의(Aggregation query)를 수신하는 수신부; 상기 집계질의를 분석한 결과에 기초하여 상기 집계질의와 관련되는 집계관련정보를 확인하는 확인부; 및 상기 집계관련정보를 기반으로 생성되는 해시트리(Hash-tree)를 이용하여 상기 집계질의에 대한 질의처리결과를 생성하는 생성부를 포함하는 것을 특징으로 한다.
상기 확인부는, 상기 집계질의를 파싱(Parsing)하여 상기 집계질의에 해당하는 질의문법을 분석하고, 상기 질의문법으로부터 집계연산(Aggregate function)을 수행하기 위한 어레이(Array), 집계연산함수 및 속성 중 적어도 하나를 포함하는 상기 집계관련정보를 확인하는 것을 특징으로 한다.
상기 생성부는, 상기 집계관련정보를 기반으로 상기 집계연산함수에 의해 연산에 이용되는 제1 속성과, 상기 집계연산함수에 의한 연산에 이용되지 않으나 상기 질의처리결과에 포함되어야 하는 제2 속성을 확인한 결과에 기초하여 적어도 하나의 트리가지를 포함하는 상기 해시트리를 생성하는 것을 특징으로 한다.
상기 생성부는, 상기 어레이의 제1행이 입력되는 경우, 상기 제1행에 포함되는 제2 속성의 값을 기반으로 제1 부모노드를 형성하며, 상기 제1행에 포함되는 제1 속성의 값을 기반으로 제1 리프노드를 형성하여 제1 트리가지를 생성하는 것을 특징으로 한다.
상기 생성부는, 상기 어레이의 제2행이 입력되는 경우, 상기 제2행에 포함되는 제2 속성의 값과 상기 제1 부모노드의 제2 속성의 값을 비교한 결과에 기초하여 트리가지의 신규생성 여부를 결정하는 것을 특징으로 한다.
상기 생성부는, 상기 제2행에 포함되는 제2 속성의 값과 상기 제1 부모노드의 제2 속성의 값이 모두 상이하면, 상기 제2행에 포함되는 제2 속성의 값을 기반으로 제2 부모노드를 형성하며, 상기 제2행에 포함되는 제1 속성의 값을 기반으로 제2 리프노드를 형성하여 제2 트리가지를 생성하는 것을 특징으로 한다.
상기 생성부는, 상기 제2행에 포함되는 제2 속성의 값과 상기 제1 부모노드의 제2 속성의 값 중 일부가 동일하면, 상기 동일한 값을 제외한 나머지 제2 속성의 값을 기반으로 상기 제1 트리가지에 연결되는 서브트리가지를 생성하는 것을 특징으로 한다.
상기 서브트리가지는, 상기 나머지 제2 속성의 값을 기반으로 형성되어 상기 제1 부모노드의 일부에 연결되는 제3 부모노드 및 상기 제2행에 포함되는 제1 속성의 값을 기반으로 형성되는 제3 리프노드를 포함하는 것을 특징으로 한다.
상기 생성부는, 상기 제2행에 포함되는 제2 속성의 값과 상기 제1 부모노드의 제2 속성의 값이 모두 동일하면, 상기 집계연산함수를 기반으로 상기 제2행에 포함되는 제1 속성의 값과 상기 제1 리프노드의 제1 속성의 값을 연산하여 상기 제1 리프노드의 값을 갱신하는 것을 특징으로 한다.
상기 생성부는, 상기 해시트리의 생성이 완료되면, 상기 트리가지 별로 포함되는 해당 리프노드에 대응하는 해당 부모노드를 역탐색(back-tracking)하여 상기 질의처리결과를 생성하는 것을 특징으로 한다.
상기 생성부는, 상기 해시트리에 상기 서브트리가지가 포함된 경우, 상기 제3 리프노드에 대응하는 상기 제3 부모노드와 상기 제1 부모노드의 일부를 역탐색하여 상기 질의처리결과를 생성하는 것을 특징으로 한다.
상기 목적을 달성하기 위한 본 발명에 따른 집계질의처리장치의 동작방법은, 사용자단말로부터 집계질의(Aggregation query)를 수신하는 수신단계; 상기 집계질의를 분석한 결과에 기초하여 상기 집계질의와 관련되는 집계관련정보를 확인하는 확인단계; 및 상기 집계관련정보를 기반으로 생성되는 해시트리(Hash-tree)를 이용하여 상기 집계질의에 대한 질의처리결과를 생성하는 생성단계를 포함하는 것을 특징으로 한다.
상기 확인단계는, 상기 집계질의를 파싱(Parsing)하여 상기 집계질의에 해당하는 질의문법을 분석하고, 상기 질의문법으로부터 집계연산(Aggregate function)을 수행하기 위한 어레이(Array), 집계연산함수 및 속성 중 적어도 하나를 포함하는 상기 집계관련정보를 확인하는 것을 특징으로 한다.
상기 생성단계는, 상기 집계관련정보를 기반으로 상기 집계연산함수에 의해 연산에 이용되는 제1 속성과, 상기 집계연산함수에 의한 연산에 이용되지 않으나 상기 질의처리결과에 포함되어야 하는 제2 속성을 확인한 결과에 기초하여 적어도 하나의 트리가지를 포함하는 상기 해시트리를 생성하는 것을 특징으로 한다.
상기 생성단계는, 상기 어레이의 제1행이 입력되는 경우, 상기 제1행에 포함되는 제2 속성의 값을 기반으로 제1 부모노드를 형성하며, 상기 제1행에 포함되는 제1 속성의 값을 기반으로 제1 리프노드를 형성하여 제1 트리가지를 생성하는 단계; 및 상기 어레이의 제2행이 입력되는 경우, 상기 제2행에 포함되는 제2 속성의 값과 상기 제1 부모노드의 제2 속성의 값을 비교한 결과에 기초하여 트리가지의 신규생성 여부를 결정하는 단계를 포함하는 것을 특징으로 한다.
상기 결정하는 단계는, 상기 제2행에 포함되는 제2 속성의 값과 상기 제1 부모노드의 제2 속성의 값이 모두 상이하면, 상기 제2행에 포함되는 제2 속성의 값을 기반으로 제2 부모노드를 형성하며, 상기 제2행에 포함되는 제1 속성의 값을 기반으로 제2 리프노드를 형성하여 제2 트리가지를 생성하는 단계; 상기 제2행에 포함되는 제2 속성의 값과 상기 제1 부모노드의 제2 속성의 값 중 일부가 동일하면, 상기 동일한 값을 제외한 나머지 제2 속성의 값을 기반으로 상기 제1 트리가지에 연결되는 서브트리가지를 생성하는 단계; 및 상기 제2행에 포함되는 제2 속성의 값과 상기 제1 부모노드의 제2 속성의 값이 모두 동일하면, 상기 집계연산함수를 기반으로 상기 제2행에 포함되는 제1 속성의 값과 상기 제1 리프노드의 제1 속성의 값을 연산하여 상기 제1 리프노드의 값을 갱신하는 단계를 포함하는 것을 특징으로 한다.
상기 서브트리가지는, 상기 나머지 제2 속성의 값을 기반으로 형성되어 상기 제1 부모노드의 일부에 연결되는 제3 부모노드 및 상기 제2행에 포함되는 제1 속성의 값을 기반으로 형성되는 제3 리프노드를 포함하는 것을 특징으로 한다.
상기 생성단계는, 상기 해시트리의 생성이 완료되면, 상기 트리가지 별로 포함되는 해당 리프노드에 대응하는 해당 부모노드를 역탐색(back-tracking)하여 상기 질의처리결과를 생성하는 것을 특징으로 한다.
이에, 본 발명의 집계질의를 처리하기 위한 장치 및 그 방법에 의하면, 해시트리(Hash-tree) 인덱스 기법을 기반으로 다차원 데이터의 속성에 대한 집계질의 처리과정을 효율적으로 수행함으로써, 기존과 다른 다차원 데이터베이스 기반의 새로운 집계질의 처리 방안을 제공할 수 있다.
도 1은 본 발명의 실시예에 따른 집계질의처리장치가 적용될 통신 환경을 나타내는 도면이다.
도 2는 본 발명의 실시예에 따른 집계질의처리장치의 개략적인 구성도를 나타내는 도면이다.
도 3은 본 발명의 실시예에 따른 해시트리(Hash-tree)를 생성하는 일례를 나타내는 도면이다.
도 4는 본 발명의 실시예에 따른 해시트리(Hash-tree)를 탐색하는 일례를 나타내는 도면이다.
도 5는 본 발명의 실시예에 따른 해시트리 기반 집계질의 처리 서비스를 제공하는 흐름을 나타내는 도면이다.
본 명세서에서 사용되는 기술적 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아님을 유의해야 한다. 또한, 본 명세서에서 사용되는 기술적 용어는 본 명세서에서 특별히 다른 의미로 정의되지 않는 한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 의미로 해석되어야 하며, 과도하게 포괄적인 의미로 해석되거나, 과도하게 축소된 의미로 해석되지 않아야 한다. 또한, 본 명세서에서 사용되는 기술적인 용어가 본 발명의 사상을 정확하게 표현하지 못하는 잘못된 기술적 용어일 때에는, 당업자가 올바르게 이해할 수 있는 기술적 용어로 대체되어 이해되어야 할 것이다. 또한, 본 발명에서 사용되는 일반적인 용어는 사전에 정의되어 있는 바에 따라, 또는 전후 문맥상에 따라 해석되어야 하며, 과도하게 축소된 의미로 해석되지 않아야 한다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 또한, 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 발명의 사상을 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 발명의 사상이 제한되는 것으로 해석되어서는 아니됨을 유의해야 한다. 본 발명의 사상은 첨부된 도면 외에 모든 변경, 균등물 내지 대체물에 까지도 확장되는 것으로 해석되어야 한다.
이하, 첨부된 도면을 참조하여 본 발명의 일 실시예에 대하여 설명한다.
먼저, 도 1을 참조하여 본 발명의 다차원 데이터베이스(Multi-dimensional database) 기반의 집계질의를 처리하기 위한 장치(이하, 집계질의처리장치)가 적용될 통신 환경을 설명하도록 하겠다.
도 1에 도시된 바와 같이, 본 발명이 적용될 통신 환경은, 집계질의처리장치(100), 사용자단말(200) 및 다차원 데이터베이스(Multi-dimensional database)(300)를 포함하는 구성을 가질 수 있다.
집계질의처리장치(100)는, 다차원 데이터베이스(300)와의 연동을 통해 다차원 데이터의 애트리뷰트(Attribute, 이하 속성)에 대한 집계질의(Aggregation query) 처리가 수행되도록 하기 위한 장치로서, 특히 본 발명에서 제공하고자 하는 서비스 즉, 다차원 데이터의 다수의 속성이 조작되어 집계질의가 요청되는 경우에도 집계질의 처리과정이 수행될 수 있도록, 해시트리(Hash-tree) 인덱스 기법을 기반으로 집계질의 처리과정을 수행하여 질의처리결과를 제공하는 서비스(이하, 해시트리 기반 집계질의 처리 서비스)를 제공하기 위한 장치이다.
이러한, 집계질의처리장치(100)는, 다차원 데이터베이스(300) 내에 구현되거나, 또는 별도의 장치로 분리되어 구현될 수 있다. 본 발명의 실시예에서는 집계질의처리장치(100)가 다차원 데이터베이스(300)와 별도로 분리되어 독립적으로 존재하는 것으로 언급하여 설명하도록 하겠다.
즉, 집계질의처리장치(100)는, 다차원 데이터베이스(300)와의 연동을 통해 집계질의 처리 알고리즘을 수행하여 질의처리결과를 생성하고, 이를 사용자단말(200)로 제공한다.
사용자단말(200)은, 해시트리 기반 집계질의 처리 서비스를 제공받기 위해 사용자가 이용하는 단말일 수 있으며, 사용자로부터 입력되는 집계질의를 집계질의처리장치(100)로 전송하여 질의처리결과의 생성을 요청할 수 있다.
이러한, 사용자단말(200)은, 해시트리 기반 집계질의 처리 서비스를 제공받기 원하는 기관/조직의 단말이거나, 또는 일반개인이 이용하는 단말일 수 있다.
다차원 데이터베이스(300)는, 대용량의 다차원 데이터(예: 과학정보, 의료정보 등)를 모델링하고, 질의 처리 및 연산을 지원하기 위해 다수의 속성 항목을 가지고 있는 자료를 관리하는 데이터베이스이다.
이러한, 다차원 데이터베이스(300)는, 해시트리 기반 집계질의 처리 서비스가 제공될 수 있도록 집계질의처리장치(100)와의 연동을 통해 집계질의 처리 알고리즘을 수행하게 된다.
본 발명의 실시예에서는 집계질의처리장치(100)와 다차원 데이터베이스(300)가 연동하여 집계질의 처리 알고리즘이 수행되는 것으로 언급하였으나, 이에 한정되지 않으며, 다차원 데이터베이스(300) 내에서 집계질의처리장치(100)의 기능이 구현되는 경우에는 다차원 데이터베이스(300) 단독으로도 집계질의 처리 알고리즘을 수행하여 서비스를 제공할 수도 있다.
이하에서는, 도 2를 참조하여 본 발명의 일 실시예에 따른 집계질의처리장치의 구성을 구체적으로 설명하겠다.
도 2에 도시된 바와 같이, 본 발명에 따른 집계질의처리장치(100)는, 사용자단말(200)로부터 집계질의(Aggregation query)를 수신하는 수신부(110), 집계질의를 분석한 결과에 기초하여 집계질의와 관련되는 집계관련정보를 확인하는 확인부(120) 및 집계관련정보를 기반으로 생성되는 해시트리(Hash-tree)를 이용하여 집계질의에 대한 질의처리결과를 생성하는 생성부(130)를 포함하는 구성을 가질 수 있다.
또한, 본 발명에 따른 집계질의처리장치(100)는, 해시트리 기반 집계질의 처리 서비스를 제공하기 위해 생성 및 송수신되는 모든 정보(예: 집계질의, 해시트리, 질의처리결과 등)을 저장하고, 요청에 따라 제공하는 저장부(140)를 더 포함하는 구성을 가질 수 있다.
또한, 본 발명에 따른 집계질의처리장치(100)는, 사용자가 관심 있어하는 집계질의가 입력될 수 있도록 질의화면을 제공하며, 사용자단말(200)을 통해 입력되는 집계질의를 분석한 결과를 기반으로 질의처리결과가 제공되기까지의 모든 인터페이스를 처리하게 되는 인터페이스부(150)를 더 포함하는 구성을 가질 수 있다.
이상의 수신부(110), 확인부(120), 생성부(130), 저장부(140) 및 인터페이스부(150)를 포함하는 집계질의처리장치(100)의 구성 전체 내지는 적어도 일부는, 프로세서에 의해 실행되는 소프트웨어 모듈 형태 또는 하드웨어 모듈 형태로 구현되거나, 소프트웨어 모듈과 하드웨어 모듈이 조합된 형태로도 구현될 수 있다.
결국, 본 발명의 실시예에 따른 집계질의처리장치(100)는, 해시트리(Hash-tree) 인덱스 기법을 기반으로 다차원 데이터의 속성에 대한 집계질의 처리과정을 효율적으로 수행함으로써, 기존과 다른 다차원 데이터베이스 기반의 새로운 집계질의 처리 방안을 제공하게 되는 데, 이하에서는 이를 위한 집계질의처리장치(100) 내 각 구성에 대해 구체적으로 설명하기로 한다.
수신부(110)는, 사용자단말(200)로부터 집계질의를 수신한다.
보다 구체적으로, 수신부(110)는, 해시트리 기반 집계질의 처리 서비스를 이용하기 원하는 사용자가 접속하는 경우, 집계질의가 입력될 수 있도록 인터페이스부(150)를 통해 질의화면을 사용자단말(200)로 제공한다.
이후, 사용자가 질의화면을 통해 집계질의를 입력하게 되면, 수신부(110)는, 인터페이스부(150)를 통해 사용자단말(200)로부터 집계질의를 수신하게 된다.
이어서, 수신부(110)는, 사용자단말(200)로부터 집계질의가 수신되었음을 알리기 위해 집계질의를 확인부(120)로 전송한다.
확인부(120)는, 집계질의를 분석한 결과에 기초하여 집계질의와 관련되는 집계관련정보를 확인한다.
보다 구체적으로, 확인부(120)는, 수신부(110)로부터 집계질의가 수신되면, 집계질의를 파싱(Parsing)하여 집계질의에 해당하는 질의문법으로부터 집계관련정보를 검출한다.
여기서, 집계질의는, 속성집계(Attribute Aggregation) 알고리즘 형태로 입력되며, 이러한 속성집계(Attribute Aggregation) 알고리즘은 해시트리 기반 집계질의 처리 서비스를 제공하기 위해 질의문법을 다음과 같이 정의하게 된다.
??질의문법: Aggregate(ARRAY, [aggregate_function_1, ... aggregate_function_n], [attribute_1, .... attribute_n])
여기서, 어레이(ARRAY)는, 집계연산(Aggregate function)을 수행하기 위한 어레이정보를 나타내며, Aggregate_function(attribute_Name)은, 집계연산을 위한 집계연산함수의 호출형태를 나타낸다.
즉, 질의문법은, 집계연산을 수행하기 위한 어레이(Array), 적어도 하나의 집계연산함수 및 적어도 하나의 속성을 포함한다. 이러한, 질의문법은, 집계연산을 위해 연속으로 집계연산함수를 호출하는 리스트 형태를 가질 수도 있다.
본 발명의 집계연산에 활용되는 집계연산함수는, 평균(average), 최대/최소, 합계, 표준편차 등과 같이 해시트리 기반 집계질의 처리 서비스에서 제공 가능한 모든 연산 함수를 대상으로 하며, 미리 정의되어 있는 것이 바람직할 것이다.
한편, 집계연산함수의 파라미터인 속성(attribute_Name)의 경우, 다수 개의 속성([attribute_1,... attribute_n])이 연속으로 호출될 수 있으며, 이때 다수 개의 속성([attribute_1,... attribute_n]) 중 해당 집계연산함수에 의한 연산에 이용되지 않으나 질의처리결과에 포함되어야 하는 속성들을 미리 지정할 수 있다.
예를 들어, 질의문법이 Aggregate(Array1, avg(attr1), sum(attr2), attr3, attr4) 형태이면, 확인부(120)는, Array1에 포함되는 다차원 데이터에 대한 집계연산을 위해 집계연산함수인 avg(attr1), sum(attr2)가 호출되며, 집계연산함수인 avg(attr1), sum(attr2)에 의한 연산에 이용되는 속성들(attr1, attr2)과 연산에 이용되지 않으나 질의처리결과에 포함되어야 하는 속성들(attr3, attr4)을 확인하여 집계관련정보를 생성하게 된다.
즉, 확인부(120)는, 전술에서 언급한 바와 같이, 사용자단말(200)로부터 집계질의가 수신되면 다양한 파서(parser)를 활용하여 집계질의에 해당하는 질의문법을 분석하고, 질의문법으로부터 집계연산을 수행하기 위한 어레이(Array), 집계연산함수 및 속성 중 적어도 하나를 포함하는 집계관련정보를 확인할 수 있게 된다.
생성부(130)는, 집계관련정보를 기반으로 질의처리결과를 생성한다.
보다 구체적으로, 생성부(130)는, 집계관련정보를 기반으로 생성되는 해시트리(Hash-tree)를 이용하여 집계질의에 대한 질의처리결과를 생성한다.
즉, 생성부(130)는, 확인부(120)로부터 집계관련정보가 수신되면, 집계관련정보로부터 집계연산을 수행하기 위한 해당 어레이(Array), 집계연산함수 및 속성을 확인한다.
이후, 생성부(130)는, 집계관련정보로부터 검출된 속성 중 집계연산함수에 의해 연산에 이용되는 제1 속성과, 집계연산함수에 의한 연산에 이용되지 않으나 질의처리결과에 포함되어야 하는 제2 속성을 확인한 결과에 기초하여 해시트리(Hash-tree)를 생성한다.
즉, 본 발명의 집계연산의 경우, 질의처리결과의 생성을 위해 집계연산함수에 의해 호출되는 제1 속성을 대상으로 연산이 이루어지는 한편, 집계연산함수에 의해 호출되지 않는 제2 속성들 중에서 동일한 속성값을 갖는 어레이(Array)의 행(line)들에 대해서도 집계가 이루어지는 알고리즘을 따르게 된다.
이에, 생성부(130)는, 이러한 집계연산 과정에서 서로 집계되는 속성들을 효율적으로 관리하기 위하여 해시트리(Hash-tree)를 생성하고, 이를 기반으로 비-집계 속성인 제2 속성에 대한 색인 및 중복 제거를 수행하게 되는 것이다.
이와 관련하여, 도 3에는 해시트리(Hash-tree)를 생성하는 일례가 도시되어 있다.
도 3에서는 집계질의로부터 확인된 질의문법이 Aggregate(1, Sum(attr4), count(attr5), attr1, attr2, attr3)이며, 어레이(Array1)가 7개의 행(L1-L7)과 5개의 속성(attr1, attr2, attr3, attr4, attr5)으로 표현되는 다차원 데이터를 포함하는 경우, 어레이(Array1)에 포함되는 다차원 데이터에 대한 집계연산을 위해 집계연산함수인 Sum(attr4), count(attr5)가 호출되며, 집계연산함수 Sum(attr4), count(attr5)의 연산에 이용되는 제1 속성(attr4, attr5)과, 집계연산함수 Sum(attr4), count(attr5)의 연산에 이용되지 않으나 질의처리결과에 포함되어야 하는 제2 속성(attr1, attr2, attr3)을 확인한 결과를 기반으로 집계관련정보가 생성되게 된다.
이처럼 집계관련정보의 확인이 완료된 후 어레이(Array1)의 1행(L1)이 입력되면, 생성부(130)는, 1행(L1)의 입력에 따른 과정(Step1)을 수행한다. 즉, 생성부(130)는, 1행(L1)에 포함되는 제2 속성(attr1, attr2, attr3)의 값(1, 0, 2)을 기반으로 부모노드(PN1)를 형성하며, 1행(L1)에 포함되는 제1 속성(attr4, attr5)을 값(4, 5)을 해당 집계연산함수 Sum(attr4), count(attr5)에 각각 적용하여 리프노드(LN1)를 생성한다. 이에, 과정(Step1)의 수행에 따라 부모노드(PN1)의 값(1, 0, 2)과 리프노드(LN1)의 값(4, 1)을 포함하는 트리가지(T11)이 생성되게 된다.
이후, 생성부(130)는, 어레이(Array1)의 2행(L2)이 입력되면, 2행(L2)의 입력에 따른 과정(Step2)을 수행한다. 즉, 생성부(130)는, 2행(L2)에 포함되는 제2 속성(attr1, attr2, attr3)의 값(3, 2, 3)을 기반으로 부모노드(PN2)를 형성하며, 2행(L2)에 포함되는 제1 속성(attr4, attr5)을 값(1, 3)을 해당 집계연산함수 Sum(attr4), count(attr5)에 각각 적용하여 리프노드(LN2)를 생성한다. 이에, 과정(Step2)의 수행에 따라 부모노드(PN2)의 값(3, 2, 3)과 리프노드(LN2)의 값(1, 1)을 포함하는 트리가지(T12)가 생성되게 된다.
즉, 어레이(Array1)의 2행(L2)에 포함되는 제2 속성(attr1, attr2, attr3)의 값(3, 2, 3)이 1행(L1)에 포함되는 제2 속성(attr1, attr2, attr3)의 값(1, 0, 2)과 모두 상이하기 때문에, 생성부(130)는, 트리가지(T11)과 다른 새로운 트리가지(T12)를 생성하게 된다.
이후, 생성부(130)는, 어레이(Array1)의 3행(L3)이 입력되면, 3행(L3)의 입력에 따른 과정(Step3)을 수행한다. 즉, 생성부(130)는, 3행(L3)에 포함되는 제2 속성(attr1, attr2, attr3)의 값(3, 2, 3)이 트리가지(T12)의 부모노드(PN2)의 값(3, 2, 3)과 모두 동일하기 때문에 새로운 트리가지를 생성하는 대신, 3행(L3)에 포함되는 제1 속성(attr4, attr5)을 값(2, 8)을 해당 집계연산함수 Sum(attr4), count(attr5)에 각각 적용하여 트리가지(T12)의 리프노드(LN2)의 값(1, 1)을 (3, 2)로 갱신하게 된다.
즉, 트리가지(T12)의 리프노드(LN2)의 값(1, 1), 즉 attr4의 경우 "1"이 3행(L3)의 "2"와 합계연산이 이루어지게 되어 "1"에서 "3"으로 업데이트가 되며, attr5의 경우 "1"이 3행(L3)의 "8"에 의해 count가 하나 증가하게 되어 "2"로 업데이트 되게 된다. 이에, 과정(Step3)의 수행에 따라 이전 과정(Step2)에서 생성된 트리가지(T12)의 리프노드(LN2)의 값(1, 1)이 (3, 2)로 갱신되게 된다.
이후, 생성부(130)는, 어레이(Array1)의 4행(L4)이 입력되면, 4행(L4)의 입력에 따른 과정(Step4)을 수행한다. 즉, 생성부(130)는, 4행(L4)에 포함되는 제2 속성(attr1, attr2, attr3)의 값(1, 1, 2)이 이전 과정(Step1)에서 생성된 트리가지(T11)의 부모노드(PN1)의 값(1, 0, 2) 중 일부, 즉 attr1의 "1"이 동일하기 때문에, 동일한 제2 속성(attr1)의 값을 제외한 나머지 제2 속성(attr2, attr3)의 값을 기반으로 트리가지(T11)에 연결되는 서브트리가지(T11a)를 생성한다.
즉, 트리가지(T11)의 부모노드(PN1)의 제2 속성(attr1)에 4행(L4)의 나머지 제2 속성(attr2, attr3)을 새롭게 연결하여 부모노드(PN1a)를 생성하고, 4행(L4)에 포함되는 제1 속성(attr4, attr5)의 값(4, 3)을 해당 집계연산함수 Sum(attr4), count(attr5)에 각각 적용하여 리프노드(LN1a)를 생성한다. 이에, 과정(Step4)의 수행에 따라 부모노드(PN1a)의 값(1, 1, 2)과 리프노드(LN1a)의 값(4, 1)을 포함하는 서브트리가지(T11a)가 생성되어 트리가지(T11)에 연결되게 된다.
이후, 생성부(130)는, 어레이(Array1)의 5행(L5)이 입력되면, 5행(L5)의 입력에 따른 과정(Step5)을 수행한다. 즉, 생성부(130)는, 5행(L5)에 포함되는 제2 속성(attr1, attr2, attr3)의 값(3, 2, 3)이 이전 과정(Step3)에서 갱신된 트리가지(T12)의 부모노드(PN2)의 값(3, 2, 3)과 모두 동일하기 때문에 새로운 트리가지를 생성하는 대신, 5행(L5)에 포함되는 제1 속성(attr4, attr5)을 값(1, 3)을 해당 집계연산함수 Sum(attr4), count(attr5)에 각각 적용하여 트리가지(T12)의 리프노드(LN2)의 값(3, 2)을 (4, 3)으로 갱신하게 된다.
즉, 과정(Step3)에서 갱신된 트리가지(T12)의 리프노드(LN2)의 값(3, 2), 즉 attr4의 경우 "3"이 5행(L5)의 "1"와 합계연산이 이루어지게 되어 "3"에서 "4"으로 업데이트가 되며, attr5의 경우 "2"가 5행(L5)의 "3"에 의해 count가 하나 증가하게 되어 "3"로 업데이트 되게 된다. 이에, 과정(Step5)의 수행에 따라 이전 과정(Step3)에서 갱신된 트리가지(T12)의 리프노드(LN2)의 값(3, 2)이 (4, 3)으로 업데이트 되게 된다.
이후, 생성부(130)는, 어레이(Array1)의 6행(L6)이 입력되면, 6행(L6)의 입력에 따른 과정(Step6)을 수행한다. 즉, 생성부(130)는, 6행(L6)에 포함되는 제2 속성(attr1, attr2, attr3)의 값(1, 1, 3)이 이전 과정(Step5)에서 생성된 서브트리가지(T11a)의 부모노드(PN1a)의 값(1, 1, 2) 중 일부, 즉 attr1, attr2의 "1, 1"이 동일하기 때문에, 동일한 제2 속성(attr1, attr2)의 값을 제외한 나머지 제2 속성(attr3)의 값을 기반으로 서브트리가지(T11a)에 연결되는 서브트리가지(T11b)를 생성한다.
즉, 서브트리가지(T11a)의 부모노드(PN1a)의 제2 속성(attr1, attr2)에 6행(L4)의 나머지 제2 속성(attr3)을 새롭게 연결하여 부모노드(PN1b)를 생성하고, 6행(L6)에 포함되는 제1 속성(attr4, attr5)의 값(4, 3)을 해당 집계연산함수 Sum(attr4), count(attr5)에 각각 적용하여 리프노드(LN1b)를 생성한다. 이에, 과정(Step6)의 수행에 따라 부모노드(PN1b)의 값(1, 1, 3)과 리프노드(LN1b)의 값(4, 1)을 포함하는 서브트리가지(T11b)가 생성되어, 서브트리가지(T11a)에 연결되게 된다.
이후, 생성부(130)는, 어레이(Array1)의 7행(L7)이 입력되면, 7행(L7)의 입력에 따른 과정(Step7)을 수행한다. 즉, 생성부(130)는, 7행(L7)에 포함되는 제2 속성(attr1, attr2, attr3)의 값(3, 2, 4)이 이전 과정(Step5)에서 갱신된 트리가지(T12)의 부모노드(PN2)의 값(3, 2, 3) 중 일부, 즉 attr1, attr2의 "3, 2"이 동일하기 때문에, 동일한 제2 속성(attr1, attr2)의 값을 제외한 나머지 제2 속성(attr3)의 값을 기반으로 트리가지(T12)에 연결되는 서브트리가지(T12a)를 생성한다.
즉, 트리가지(T12)의 부모노드(PN2)의 제2 속성(attr1, attr2)에 7행(L7)의 나머지 제2 속성(attr3)을 새롭게 연결하여 부모노드(PN2a)를 생성하고, 7행(L7)에 포함되는 제1 속성(attr4, attr5)의 값(6, 7)을 해당 집계연산함수 Sum(attr4), count(attr5)에 각각 적용하여 리프노드(LN2a)를 생성한다. 이에, 과정(Step7)의 수행에 따라 부모노드(PN2a)의 값(3, 2, 4)과 리프노드(LN2a)의 값(6, 1)을 포함하는 서브트리가지(T12a)가 생성되어 트리가지(T12)에 연결되게 된다.
전술한 해시트리(Hash-tree)를 생성하는 과정(Step1-Step7)에서도 확인할 수 있듯이, 생성부(130)는, 어레이의 제1행이 입력되는 경우, 먼저 과정(Step1)에서와 같이 집계연산함수에 의해 호출되지 않는 제1행의 제2 속성의 값을 기반으로 제1 부모노드를 형성하며, 집계연산함수에 의해 호출되는 제1행의 제1 속성의 값을 기반으로 제1 리프노드를 형성하여 제1 트리가지를 생성하게 된다.
이후, 어레이의 제2행이 입력되게 되면, 생성부(130)는, 제2행에 포함되는 제2 속성의 값과 제1 부모노드의 제2 속성의 값을 비교한 결과에 기초하여 트리가지의 신규생성 여부를 결정하게 된다.
즉, 생성부(130)는, 제2행에 포함되는 제2 속성의 값과 제1 부모노드의 제2 속성의 값이 모두 상이하면, 과정(Step2)에서와 같이 제2행에 포함되는 제2 속성의 값을 기반으로 제2 부모노드를 형성하고, 제2행에 포함되는 제1 속성의 값을 기반으로 제2 리프노드를 형성하여 제2 트리가지를 신규로 생성한다.
한편, 제2행에 포함되는 제2 속성의 값과 제1 부모노드의 제2 속성의 값이 모두 동일하면, 생성부(130)는, 과정(Step3, Step5)에서와 같이 트리가지를 신규로 생성하는 대신, 집계연산함수를 기반으로 제2행에 포함되는 제1 속성의 값과 제1 트리가지의 제1 리프노드의 속성의 값을 연산하여 제1 트리가지의 제1 리프노드의 값을 갱신하게 된다.
한편, 제2행에 포함되는 제2 속성의 값과 제1 부모노드의 제2 속성의 값 중 일부가 동일하면, 생성부(130)는, 과정(Step4, Step6, Step7)에서와 같이 제2행에 포함되는 제2 속성 중 제1 부모노드의 제2 속성과 동일한 값을 제외한 나머지 제2 속성의 값을 기반으로 제1 트리가지에 연결되는 서브트리가지를 생성하게 된다.
이러한 서브트리가지에는, 제1 부모노드의 제2 속성의 값과 상이한 나머지 제2 속성의 값을 기반으로 형성되어 제1 부모노드의 일부에 연결되는 제3 부모노드와, 제2행에 포함되는 제1 속성의 값을 기반으로 형성되는 제3 리프노드가 포함된다.
결국, 해시트리(Hash-tree)의 트리가지 별로 포함되는 해당 리프노드에는 집계질의를 수행한 결과값이 저장되며, 해당 리프노드에 대응하는 부모노드에는 비-집계 속성인 제2 속성이 저장되게 된다.
이처럼 해시트리(Hash-tree)의 생성이 완료되면, 생성부(130)는, 해시트리(Hash-tree)의 트리가지 별로 포함되는 해당 리프노드에 대응하는 해당 부모노드를 역탐색(back-tracking)하여 질의처리결과를 생성한다.
이와 관련하여, 도 4에는 해시트리(Hash-tree)를 탐색하는 일례가 도시되어 있다. 도 4에서는 설명의 편의를 위해, 도 3에 도시된 과정(Step1-Step7)을 함께 참고하여 설명하도록 하겠다.
도 4에 도시된 바와 같이, 해시트리(Hash-tree)의 생성이 완료되면, 생성부(130)는, 해시트리(Hash-tree)의 트리가지(T11)부터 역탐색을 수행한다. 즉, 트리가지(T11)에는 부모노드(PN1)의 값(1, 0, 2)과 리프노드(LN1)의 값(4, 1)이 포함되어 있으므로, 생성부(130)는, 집계질의를 수행한 결과값이 저장된 리프노드(LN1)를 시작으로 리프노드(LN1)에 대응하는 해당 부모노드(PN1)를 역으로 탐색하는 과정(TR1)을 수행하여, 탐색결과(1, 0, 2, 4, 1)을 출력하게 된다.
이후, 생성부(130)는, 트리가지(T11)에 연결되는 서브트리가지(T11a)의 역탐색을 수행한다. 즉, 서브트리가지(T11a)에는 부모노드(PN1a)의 값(1, 1, 2)과 리프노드(LN1a)의 값(4, 1)이 포함되어 있으므로, 생성부(130)는, 집계질의를 수행한 결과값이 저장된 리프노드(LN1a)를 시작으로 리프노드(LN1a)에 대응하는 해당 부모노드(PN1a), 즉 리프노드(LN1a)에 연결되는 제2 속성(attr2, attr3)과 부모노드(PN1)의 일부 속성(attr1)을 역으로 탐색하는 과정(TR2)을 수행하여, 탐색결과(1, 1, 2, 4, 1)을 출력하게 된다.
이후, 생성부(130)는, 서브트리가지(T11a)에 연결되는 서브트리가지(T11b)의 역탐색을 수행한다. 즉, 서브트리가지(T11b)에는 부모노드(PN1b)의 값(1, 1, 3)과 리프노드(LN1b)의 값(4, 1)이 포함되어 있으므로, 생성부(130)는, 집계질의를 수행한 결과값이 저장된 리프노드(LN1b)를 시작으로 리프노드(LN1b)에 대응하는 해당 부모노드(PN1b), 즉 리프노드(LN1b)에 연결되는 제2 속성(attr3)과, 서브트리가지(T11a)의 일부 속성(attr2)과, 부모노드(PN1)의 일부 속성(attr1)을 역으로 탐색하는 과정(TR3)을 수행하여, 탐색결과(1, 1, 3, 4, 1)을 출력하게 된다.
동일한 방식으로, 생성부(130)는, 트리가지(T12)과, 트리가지(T12)에 연결되는 서브트리가지(T12a)에 대해서도 순차적으로 역으로 탐색하는 과정(TR4, TR5)을 각각 수행하여, 트리가지(T12)에 해당하는 탐색결과(3, 2, 3, 4, 3)과 서브트리가지(T12a)에 해당하는 탐색결과(3, 2, 4, 6, 1)를 출력하게 된다.
전술과 같이, 해시트리(Hash-tree)의 트리가지 별로 역탐색을 수행하여 탐색결과의 출력이 완료되면, 생성부(130)는, 모든 탐색결과를 포함하는 질의처리결과를 생성하고, 이를 인터페이스부(150)를 통해 사용자단말(200)로 제공하게 된다.
이하에서는, 도 5를 참조하여 본 발명의 실시예에 따른 해시트리 기반 집계질의 처리 서비스를 제공하는 흐름을 구체적으로 설명하도록 한다. 이하에서는 설명의 편의를 위해, 전술의 도 1 내지 도 4에서 언급한 참조번호를 언급하여 설명하도록 하겠다.
집계질의처리장치(100), 사용자단말(200)로부터 집계질의가 수신되면, 집계질의를 분석한 결과에 기초하여 집계질의와 관련되는 집계관련정보를 확인한다(S101, S102).
보다 구체적으로, 집계질의처리장치(100)는, 집계질의를 파싱(Parsing)하여 집계질의에 해당하는 질의문법으로부터 집계관련정보를 검출한다.
여기서, 집계질의는, 속성집계(Attribute Aggregation) 알고리즘 형태로 입력되며, 이러한 속성집계(Attribute Aggregation) 알고리즘은 해시트리 기반 집계질의 처리 서비스를 제공하기 위해 질의문법을 다음과 같이 정의하게 된다.
??질의문법: Aggregate(ARRAY, [aggregate_function_1, ... aggregate_function_n], [attribute_1, .... attribute_n])
여기서, 어레이(ARRAY)는, 집계연산(Aggregate function)을 수행하기 위한 어레이정보를 나타내며, Aggregate_function(attribute_Name)은, 집계연산을 위한 집계연산함수의 호출형태를 나타낸다.
즉, 질의문법은, 집계연산을 수행하기 위한 어레이(Array), 적어도 하나의 집계연산함수 및 적어도 하나의 속성을 포함한다. 이러한, 질의문법은, 집계연산을 위해 연속으로 집계연산함수를 호출하는 리스트 형태를 가질 수도 있다.
이후, 집계질의처리장치(100)는, 집계관련정보를 기반으로 생성되는 해시트리(Hash-tree)를 이용하여 집계질의에 대한 질의처리결과를 생성한다.
보다 구체적으로, 집계질의처리장치(100)는, 집계관련정보로부터 집계연산을 수행하기 위한 해당 어레이(Array), 집계연산함수 및 속성을 확인한다.
이후, 집계질의처리장치(100)는, 집계관련정보로부터 검출된 속성 중 집계연산함수에 의해 연산에 이용되는 제1 속성과, 집계연산함수에 의한 연산에 이용되지 않으나 질의처리결과에 포함되어야 하는 제2 속성을 확인한다.
즉, 본 발명의 집계연산의 경우, 질의처리결과의 생성을 위해 집계연산함수에 의해 호출되는 제1 속성을 대상으로 연산이 이루어지는 한편, 집계연산함수에 의해 호출되지 않는 제2 속성들 중에서 동일한 속성값을 갖는 어레이(Array)의 행(line)들에 대해서도 집계가 이루어지는 알고리즘을 따르게 된다.
이에, 집계질의처리장치(100)는, 이러한 집계연산 과정에서 서로 집계되는 속성들을 효율적으로 관리하기 위하여 해시트리(Hash-tree)를 생성하고, 이를 기반으로 비-집계 속성인 제2 속성에 대한 색인 및 중복 제거를 수행하게 되는 것이다.
예를 들어 설명하면, 집계질의로부터 확인된 질의문법이 Aggregate(1, Sum(attr4), count(attr5), attr1, attr2, attr3)이며, 어레이(Array1)가 7개의 행(L1-L7)과 5개의 속성(attr1, attr2, attr3, attr4, attr5)으로 표현되는 다차원 데이터를 포함하는 경우, 어레이(Array1)에 포함되는 다차원 데이터에 대한 집계연산을 위해 집계연산함수인 Sum(attr4), count(attr5)가 호출되며, 집계연산함수 Sum(attr4), count(attr5)의 연산에 이용되는 제1 속성(attr4, attr5)과, 집계연산함수 Sum(attr4), count(attr5)의 연산에 이용되지 않으나 질의처리결과에 포함되어야 하는 제2 속성(attr1, attr2, attr3)을 확인한 결과를 기반으로 집계관련정보가 생성되게 된다.
이처럼 집계관련정보가 확인된 후, 도 3에 도시된 바와 같이, 어레이의 제1행이 입력되는 경우, 집계질의처리장치(100)는, 과정(Step1)에서와 같이 집계연산함수에 의해 호출되지 않는 제1행의 제2 속성의 값을 기반으로 제1 부모노드를 형성하며, 집계연산함수에 의해 호출되는 제1행의 제1 속성의 값을 기반으로 제1 리프노드를 형성하여 제1 트리가지를 생성하게 된다(S103).
이후, 어레이의 제2행이 입력되게 되면(S104), 집계질의처리장치(100)는, 제2행에 포함되는 제2 속성의 값과 제1 부모노드의 제2 속성의 값을 비교한 결과에 기초하여 트리가지의 신규생성 여부를 결정하게 된다(S105).
즉, 제2행에 포함되는 제2 속성의 값과 제1 부모노드의 제2 속성의 값이 모두 상이하면(S105의 NO), 집계질의처리장치(100)는, 과정(Step2)에서와 같이 제2행에 포함되는 제2 속성의 값을 기반으로 제2 부모노드를 형성하고, 제2행에 포함되는 제1 속성의 값을 기반으로 제2 리프노드를 형성하여 제2 트리가지를 신규로 생성한다(S106).
한편, 제2행에 포함되는 제2 속성의 값과 제1 부모노드의 제2 속성의 값이 모두 동일하면(S105의 YES1), 집계질의처리장치(100)는, 과정(Step3, Step5)에서와 같이 트리가지를 신규로 생성하는 대신, 집계연산함수를 기반으로 제2행에 포함되는 제1 속성의 값과 제1 트리가지의 제1 리프노드의 속성의 값을 연산하여 제1 트리가지의 제1 리프노드의 값을 갱신하게 된다(S107).
한편, 제2행에 포함되는 제2 속성의 값과 제1 부모노드의 제2 속성의 값 중 일부가 동일하면(S105의 YES2), 집계질의처리장치(100)는, 과정(Step4, Step6, Step7)에서와 같이 제2행에 포함되는 제2 속성 중 제1 부모노드의 제2 속성과 동일한 값을 제외한 나머지 제2 속성의 값을 기반으로 제1 트리가지에 연결되는 서브트리가지를 생성하게 된다(S108).
이러한 서브트리가지에는, 제1 부모노드의 제2 속성의 값과 상이한 나머지 제2 속성의 값을 기반으로 형성되어 제1 부모노드의 일부에 연결되는 제3 부모노드와, 제2행에 포함되는 제1 속성의 값을 기반으로 형성되는 제3 리프노드가 포함된다.
결국, 해시트리(Hash-tree)의 트리가지 별로 포함되는 해당 리프노드에는 집계질의를 수행한 결과값이 저장되며, 해당 리프노드에 대응하는 부모노드에는 비-집계 속성인 제2 속성이 저장되게 된다.
이처럼 해시트리(Hash-tree)의 생성이 완료되면(S109), 집계질의처리장치(100)는, 해시트리(Hash-tree)의 트리가지 별로 포함되는 해당 리프노드에 대응하는 해당 부모노드를 역탐색(back-tracking)한다(S110).
보다 구체적으로, 도 4에 도시된 바와 같이, 해시트리(Hash-tree)의 생성이 완료되면, 생성부(130)는, 해시트리(Hash-tree)의 트리가지(T11)부터 역탐색을 수행한다. 즉, 트리가지(T11)에는 부모노드(PN1)의 값(1, 0, 2)과 리프노드(LN1)의 값(4, 1)이 포함되어 있으므로, 생성부(130)는, 집계질의를 수행한 결과값이 저장된 리프노드(LN1)를 시작으로 리프노드(LN1)에 대응하는 해당 부모노드(PN1)를 역으로 탐색하는 과정(TR1)을 수행하여, 탐색결과(1, 0, 2, 4, 1)을 출력하게 된다.
이후, 생성부(130)는, 트리가지(T11)에 연결되는 서브트리가지(T11a)의 역탐색을 수행한다. 즉, 서브트리가지(T11a)에는 부모노드(PN1a)의 값(1, 1, 2)과 리프노드(LN1a)의 값(4, 1)이 포함되어 있으므로, 생성부(130)는, 집계질의를 수행한 결과값이 저장된 리프노드(LN1a)를 시작으로 리프노드(LN1a)에 대응하는 해당 부모노드(PN1a), 즉 리프노드(LN1a)에 연결되는 제2 속성(attr2, attr3)과 부모노드(PN1)의 일부 속성(attr1)을 역으로 탐색하는 과정(TR2)을 수행하여, 탐색결과(1, 1, 2, 4, 1)을 출력하게 된다.
이후, 생성부(130)는, 서브트리가지(T11a)에 연결되는 서브트리가지(T11b)의 역탐색을 수행한다. 즉, 서브트리가지(T11b)에는 부모노드(PN1b)의 값(1, 1, 3)과 리프노드(LN1b)의 값(4, 1)이 포함되어 있으므로, 생성부(130)는, 집계질의를 수행한 결과값이 저장된 리프노드(LN1b)를 시작으로 리프노드(LN1b)에 대응하는 해당 부모노드(PN1b), 즉 리프노드(LN1b)에 연결되는 제2 속성(attr3)과, 서브트리가지(T11a)의 일부 속성(attr2)과, 부모노드(PN1)의 일부 속성(attr1)을 역으로 탐색하는 과정(TR3)을 수행하여, 탐색결과(1, 1, 3, 4, 1)을 출력하게 된다.
동일한 방식으로, 생성부(130)는, 트리가지(T12)과, 트리가지(T12)에 연결되는 서브트리가지(T12a)에 대해서도 순차적으로 역으로 탐색하는 과정(TR4, TR5)을 각각 수행하여, 트리가지(T12)에 해당하는 탐색결과(3, 2, 3, 4, 3)과 서브트리가지(T12a)에 해당하는 탐색결과(3, 2, 4, 6, 1)를 출력하게 된다.
전술과 같이, 해시트리(Hash-tree)의 트리가지 별로 역탐색을 수행하여 탐색결과의 출력이 완료되면, 집계질의처리장치(100)는, 모든 탐색결과를 포함하는 질의처리결과를 생성하고, 이를 인터페이스부(150)를 통해 사용자단말(200)로 제공하게 된다(S111).
이상에서 설명한 바와 같이, 본 발명에 따르면, 해시트리(Hash-tree) 인덱스 기법을 기반으로 다차원 데이터의 속성에 대한 집계질의 처리과정을 효율적으로 수행함으로써, 기존과 다른 다차원 데이터베이스 기반의 새로운 집계질의 처리 방안을 제공할 수 있는 효과가 성취된다.
본 발명의 실시예들은, 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
지금까지 본 발명을 바람직한 실시 예를 참조하여 상세히 설명하였지만, 본 발명이 상기한 실시 예에 한정되는 것은 아니며, 이하의 특허청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 또는 수정이 가능한 범위까지 본 발명의 기술적 사상이 미친다 할 것이다.
본 발명의 집계질의를 처리하기 위한 장치 및 그 방법에 따르면, 해시트리(Hash-tree) 인덱스 기법을 기반으로 다차원 데이터의 속성에 대한 집계질의 처리과정을 효율적으로 수행함으로써, 기존과 다른 다차원 데이터베이스 기반의 새로운 집계질의 처리 방안을 제공할 수 있다는 점에서, 기존 기술의 한계를 뛰어 넘음에 따라 관련 기술에 대한 이용만이 아닌 적용되는 장치의 시판 또는 영업의 가능성이 충분할 뿐만 아니라 현실적으로 명백하게 실시할 수 있는 정도이므로 산업상 이용가능성이 있는 발명이다.
100: 집계질의처리장치
110: 수신부 120: 확인부
130: 생성부 140: 저장부
150: 인터페이스부
200: 사용자단말
300: 다차원 데이터베이스

Claims (18)

  1. 사용자단말로부터 수신된 집계질의(Aggregation query)를 분석한 결과에 기초하여 상기 집계질의와 관련되는 집계관련정보를 확인하는 확인부; 및
    상기 집계관련정보를 기반으로 생성되는 해시트리(Hash-tree)를 이용하여 상기 집계질의에 대한 질의처리결과를 생성하는 생성부를 포함하며,
    상기 확인부는,
    상기 집계질의에 해당하는 질의문법을 분석하고, 상기 질의문법으로부터 집계연산(Aggregate function)을 수행하기 위한 어레이(Array), 집계연산함수 및 속성 중 적어도 하나를 포함하는 상기 집계관련정보를 확인하는 것을 특징으로 하는 집계질의처리장치.
  2. 제 1 항에 있어서,
    상기 사용자단말로부터 상기 집계질의를 수신하는 수신부를 더 포함하는 것을 특징으로 하는 집계질의처리장치.
  3. 제 1 항에 있어서,
    상기 생성부는,
    상기 집계관련정보를 기반으로 상기 집계연산함수에 의해 연산에 이용되는 제1 속성과, 상기 집계연산함수에 의한 연산에 이용되지 않으나 상기 질의처리결과에 포함되어야 하는 제2 속성을 확인한 결과에 기초하여 적어도 하나의 트리가지를 포함하는 상기 해시트리를 생성하는 것을 특징으로 하는 집계질의처리장치.
  4. 제 3 항에 있어서,
    상기 생성부는,
    상기 어레이의 제1행이 입력되는 경우, 상기 제1행에 포함되는 제2 속성의 값을 기반으로 제1 부모노드를 형성하며, 상기 제1행에 포함되는 제1 속성의 값을 기반으로 제1 리프노드를 형성하여 제1 트리가지를 생성하는 것을 특징으로 하는 집계질의처리장치.
  5. 제 4 항에 있어서,
    상기 생성부는,
    상기 어레이의 제2행이 입력되는 경우, 상기 제2행에 포함되는 제2 속성의 값과 상기 제1 부모노드의 제2 속성의 값을 비교한 결과에 기초하여 트리가지의 신규생성 여부를 결정하는 것을 특징으로 하는 집계질의처리장치.
  6. 제 5 항에 있어서,
    상기 생성부는,
    상기 제2행에 포함되는 제2 속성의 값과 상기 제1 부모노드의 제2 속성의 값이 모두 상이하면, 상기 제2행에 포함되는 제2 속성의 값을 기반으로 제2 부모노드를 형성하며, 상기 제2행에 포함되는 제1 속성의 값을 기반으로 제2 리프노드를 형성하여 제2 트리가지를 생성하는 것을 특징으로 하는 집계질의처리장치.
  7. 제 6 항에 있어서,
    상기 생성부는,
    상기 제2행에 포함되는 제2 속성의 값과 상기 제1 부모노드의 제2 속성의 값 중 일부가 동일하면, 상기 동일한 값을 제외한 나머지 제2 속성의 값을 기반으로 상기 제1 트리가지에 연결되는 서브트리가지를 생성하는 것을 특징으로 하는 집계질의처리장치.
  8. 제 7 항에 있어서,
    상기 서브트리가지는,
    상기 나머지 제2 속성의 값을 기반으로 형성되어 상기 제1 부모노드의 일부에 연결되는 제3 부모노드 및 상기 제2행에 포함되는 제1 속성의 값을 기반으로 형성되는 제3 리프노드를 포함하는 것을 특징으로 하는 집계질의처리장치.
  9. 제 8 항에 있어서,
    상기 생성부는,
    상기 제2행에 포함되는 제2 속성의 값과 상기 제1 부모노드의 제2 속성의 값이 모두 동일하면, 상기 집계연산함수를 기반으로 상기 제2행에 포함되는 제1 속성의 값과 상기 제1 리프노드의 제1 속성의 값을 연산하여 상기 제1 리프노드의 값을 갱신하는 것을 특징으로 하는 집계질의처리장치.
  10. 제 9 항에 있어서,
    상기 생성부는,
    상기 해시트리의 생성이 완료되면, 상기 트리가지 별로 포함되는 해당 리프노드에 대응하는 해당 부모노드를 역탐색(back-tracking)하여 상기 질의처리결과를 생성하는 것을 특징으로 하는 집계질의처리장치.
  11. 제 10 항에 있어서,
    상기 생성부는,
    상기 해시트리에 상기 서브트리가지가 포함된 경우, 상기 제3 리프노드에 대응하는 상기 제3 부모노드와 상기 제1 부모노드의 일부를 역탐색하여 상기 질의처리결과를 생성하는 것을 특징으로 하는 집계질의처리장치.
  12. 사용자단말로부터 수신된 집계질의(Aggregation query)를 분석한 결과에 기초하여 상기 집계질의와 관련되는 집계관련정보를 확인하는 확인단계; 및
    상기 집계관련정보를 기반으로 생성되는 해시트리(Hash-tree)를 이용하여 상기 집계질의에 대한 질의처리결과를 생성하는 생성단계를 포함하며,
    상기 확인단계는,
    상기 집계질의에 해당하는 질의문법을 분석하고, 상기 질의문법으로부터 집계연산(Aggregate function)을 수행하기 위한 어레이(Array), 집계연산함수 및 속성 중 적어도 하나를 포함하는 상기 집계관련정보를 확인하는 것을 특징으로 하는 집계질의처리장치의 동작방법.
  13. 제 12 항에 있어서,
    상기 사용자단말로부터 상기 집계질의를 수신하는 수신단계를 더 포함하는 것을 특징으로 하는 집계질의처리장치의 동작방법.
  14. 제 12 항에 있어서,
    상기 생성단계는,
    상기 집계관련정보를 기반으로 상기 집계연산함수에 의해 연산에 이용되는 제1 속성과, 상기 집계연산함수에 의한 연산에 이용되지 않으나 상기 질의처리결과에 포함되어야 하는 제2 속성을 확인한 결과에 기초하여 적어도 하나의 트리가지를 포함하는 상기 해시트리를 생성하는 것을 특징으로 하는 집계질의처리장치의 동작방법.
  15. 제 14 항에 있어서,
    상기 생성단계는,
    상기 어레이의 제1행이 입력되는 경우, 상기 제1행에 포함되는 제2 속성의 값을 기반으로 제1 부모노드를 형성하며, 상기 제1행에 포함되는 제1 속성의 값을 기반으로 제1 리프노드를 형성하여 제1 트리가지를 생성하는 단계; 및
    상기 어레이의 제2행이 입력되는 경우, 상기 제2행에 포함되는 제2 속성의 값과 상기 제1 부모노드의 제2 속성의 값을 비교한 결과에 기초하여 트리가지의 신규생성 여부를 결정하는 단계를 포함하는 것을 특징으로 하는 집계질의처리장치의 동작방법.
  16. 제 15 항에 있어서,
    상기 결정하는 단계는,
    상기 제2행에 포함되는 제2 속성의 값과 상기 제1 부모노드의 제2 속성의 값이 모두 상이하면, 상기 제2행에 포함되는 제2 속성의 값을 기반으로 제2 부모노드를 형성하며, 상기 제2행에 포함되는 제1 속성의 값을 기반으로 제2 리프노드를 형성하여 제2 트리가지를 생성하는 단계;
    상기 제2행에 포함되는 제2 속성의 값과 상기 제1 부모노드의 제2 속성의 값 중 일부가 동일하면, 상기 동일한 값을 제외한 나머지 제2 속성의 값을 기반으로 상기 제1 트리가지에 연결되는 서브트리가지를 생성하는 단계; 및
    상기 제2행에 포함되는 제2 속성의 값과 상기 제1 부모노드의 제2 속성의 값이 모두 동일하면, 상기 집계연산함수를 기반으로 상기 제2행에 포함되는 제1 속성의 값과 상기 제1 리프노드의 제1 속성의 값을 연산하여 상기 제1 리프노드의 값을 갱신하는 단계를 포함하는 것을 특징으로 하는 집계질의처리장치의 동작방법.
  17. 제 16 항에 있어서,
    상기 서브트리가지는,
    상기 나머지 제2 속성의 값을 기반으로 형성되어 상기 제1 부모노드의 일부에 연결되는 제3 부모노드 및 상기 제2행에 포함되는 제1 속성의 값을 기반으로 형성되는 제3 리프노드를 포함하는 것을 특징으로 하는 집계질의처리장치의 동작방법.
  18. 제 17 항에 있어서,
    상기 생성단계는,
    상기 해시트리의 생성이 완료되면, 상기 트리가지 별로 포함되는 해당 리프노드에 대응하는 해당 부모노드를 역탐색(back-tracking)하여 상기 질의처리결과를 생성하는 것을 특징으로 하는 집계질의처리장치의 동작방법.
KR1020160168574A 2016-12-12 2016-12-12 집계질의를 처리하기 위한 장치 및 그 방법 KR101757251B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160168574A KR101757251B1 (ko) 2016-12-12 2016-12-12 집계질의를 처리하기 위한 장치 및 그 방법
PCT/KR2017/014367 WO2018110908A1 (ko) 2016-12-12 2017-12-08 집계질의를 처리하기 위한 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160168574A KR101757251B1 (ko) 2016-12-12 2016-12-12 집계질의를 처리하기 위한 장치 및 그 방법

Publications (1)

Publication Number Publication Date
KR101757251B1 true KR101757251B1 (ko) 2017-07-14

Family

ID=59358748

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160168574A KR101757251B1 (ko) 2016-12-12 2016-12-12 집계질의를 처리하기 위한 장치 및 그 방법

Country Status (2)

Country Link
KR (1) KR101757251B1 (ko)
WO (1) WO2018110908A1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050192988A1 (en) * 2004-02-26 2005-09-01 International Business Machines Corporation Method and system for managing aggregation data structures
US20120109878A1 (en) * 2010-10-27 2012-05-03 Crazy Development Debugging system for multidimensional database query expressions on a processing server

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100424144B1 (ko) * 2001-01-30 2004-03-24 (주)우리랑월드 웹 기반 다차원 정보 분석 서비스 방법 및 시스템
KR100743927B1 (ko) * 2005-07-29 2007-08-01 인하대학교 산학협력단 공간 데이터 웨어하우스에서 시공간 데이터의 집계정보관리방법
KR101047592B1 (ko) * 2008-06-16 2011-07-07 연세대학교 산학협력단 다차원 데이터 처리 방법 및 분석 방법과 다차원 데이터처리 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050192988A1 (en) * 2004-02-26 2005-09-01 International Business Machines Corporation Method and system for managing aggregation data structures
US20120109878A1 (en) * 2010-10-27 2012-05-03 Crazy Development Debugging system for multidimensional database query expressions on a processing server

Also Published As

Publication number Publication date
WO2018110908A1 (ko) 2018-06-21

Similar Documents

Publication Publication Date Title
US11681702B2 (en) Conversion of model views into relational models
US10133778B2 (en) Query optimization using join cardinality
US10606834B2 (en) Methods and apparatus of shared expression evaluation across RDBMS and storage layer
US10733055B1 (en) Methods and apparatus related to graph transformation and synchronization
CN104123374B (zh) 分布式数据库中聚合查询的方法及装置
US9996592B2 (en) Query relationship management
US9870382B2 (en) Data encoding and corresponding data structure
US8533182B1 (en) Apparatuses, systems, and methods for efficient graph pattern matching and querying
US9558239B2 (en) Relational query planning for non-relational data sources
US8417690B2 (en) Automatically avoiding unconstrained cartesian product joins
US9135367B2 (en) XPath evaluation in an XML repository
CN109614413B (zh) 一种内存流式计算平台系统
JP5791149B2 (ja) データベース・クエリ最適化のためのコンピュータで実装される方法、コンピュータ・プログラム、およびデータ処理システム
KR102138627B1 (ko) 데이터 쿼리 방법 및 장치, 및 데이터베이스 시스템
JP6198845B2 (ja) アクティブデータベースクエリのメンテナンス
US7945560B2 (en) Technique for removing subquery in group by—having clauses using window functions
US20100005203A1 (en) Method of Merging and Incremantal Construction of Minimal Finite State Machines
KR20230129555A (ko) 클라우드 리소스의 자바스크립트 객체 표기(json) 쿼리조인
US10235100B2 (en) Optimizing column based database table compression
US10635646B2 (en) Generating a view for a schema including information on indication to transform recursive types to non-recursive structure in the schema
KR101757251B1 (ko) 집계질의를 처리하기 위한 장치 및 그 방법
US11288261B2 (en) Data ingestion into a polystore
US20190108237A1 (en) Method and System for Content Agnostic File Indexing
US20160117350A1 (en) Column group selection method and apparatus for efficiently storing data in mixed olap/oltp workload environment
US8862611B2 (en) Bottom-up query processing scheme for XML twigs with arbitrary boolean predicates

Legal Events

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