KR101955376B1 - 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치 - Google Patents

비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치 Download PDF

Info

Publication number
KR101955376B1
KR101955376B1 KR1020160182576A KR20160182576A KR101955376B1 KR 101955376 B1 KR101955376 B1 KR 101955376B1 KR 1020160182576 A KR1020160182576 A KR 1020160182576A KR 20160182576 A KR20160182576 A KR 20160182576A KR 101955376 B1 KR101955376 B1 KR 101955376B1
Authority
KR
South Korea
Prior art keywords
operator
distributed
data
operators
query
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020160182576A
Other languages
English (en)
Other versions
KR20180077830A (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 KR1020160182576A priority Critical patent/KR101955376B1/ko
Publication of KR20180077830A publication Critical patent/KR20180077830A/ko
Application granted granted Critical
Publication of KR101955376B1 publication Critical patent/KR101955376B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query 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/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • 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/24554Unary operations; Data partitioning operations
    • G06F16/24556Aggregation; Duplicate elimination
    • 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

Landscapes

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

Abstract

비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법은, 데이터베이스 시스템에 입력되는 스트림 데이터에 대한 관계형 질의 언어(Relational Query Language)를 분석하여, 스트림 처리와 관련이 없는 구문을 제외한 다수의 연산자를 포함하는 관계형 질의 계획을 생성하는 단계; 시간 범위 데이터를 포함하는 윈도우(WINDOW) 연산자를 상기 다수의 연산자 간에 후속 연산자로 전달하는 단계; 상기 관계형 질의 계획이 포함하는 다수의 연산자를 분산시켜 PE(Processing Element)에서 처리할 수 있는 형태로 변환하는 단계; 및 변환된 연산자를 연결하여 분산 스트림 처리 엔진에서 실행할 수 있는 데이터 플로우 그래프(Data-Flow Graph)를 생성하는 단계를 포함한다. 이에 따라, 고수준 분석 질의 언어를 지원하여 직관적인 데이터 분석이 가능하다.

Description

비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치{PROCESSING METHOD FOR A RELATIONAL QUERY IN DISTRIBUTED STREAM PROCESSING ENGINE BASED ON SHARED-NOTHING ARCHITECTURE, RECORDING MEDIUM AND DEVICE FOR PERFORMING THE METHOD}
본 발명은 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치에 관한 것으로서, 더욱 상세하게는 비공유 아키텍처(shared-nothing architecture) 기반의 분산 스트림 처리 엔진(distributed stream processing engine)에서 입력되는 대규모 스트림 데이터에 대한 관계형 질의(relational query)의 지원과 이를 효율적으로 처리하기 위한 방법에 관한 방법, 이를 수행하기 위한 기록 매체 및 장치에 관한 것이다.
[국가지원 연구개발에 대한 설명 ]
본 연구는 전북대학교 산학협력단의 주관 하에 미래창조과학부 대학ICT연구센터육성지원사업(연구관리전문기관: 정보통신기술진흥센터, 연구과제명: 사물인터넷/빅데이터 기반 차세대공공안전서비스 기술개발, 과제고유번호: 1711035204 (R0992-16-1023))의 지원에 의하여 이루어진 것이다.
SQL(Structured Query Language, 구조화 질의어)은 관계형 데이터베이스 관리 시스템에서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안된 컴퓨터 언어이다. SQL은 데이터베이스로부터 정보를 얻거나 갱신하기 위한 표준 대화식 프로그래밍 언어이다. 많은 수의 데이터베이스 관련 프로그램들은 SQL을 표준으로 채택하고 있다.
최근의 인터넷 환경에서는 스트리밍 데이터 처리 기능을 필요로 하는 응용 프로그램들이 늘어나고 있으며, 이들에 대한 관심 또한 증가되고 있다. 일반적으로 스트리밍 데이터는 연속하여 끊임 없이 발생하며, 시간별로 데이터의 양이 변하면서 고속으로 발생한다. 그러한 스트리밍 데이터의 예로는 네트워크 트래픽, 센서, RFID, 통화기록, 금융, 웹로그, 온라인 게임 등의 데이터를 들 수 있다.
스트리밍 데이터 처리를 위한 공통적인 요구사항들에는 스트리밍 데이터에 대한 필터링 연산, 집합 연산, (디)멀티플렉싱, 발생빈도 연산, 조인 연산, 윈도우 연산 등이 있으며, 기존 스트리밍 데이터 처리 애플리케이션들의 대부분은 독자적으로 위의 요구사항들을 만족시키기 위한 기능들을 개발해왔다.
하지만, 최근 들어 데이터 생산 주체가 다양화되고, 데이터 생산량과 속도 또한 증가 되면서, 기존의 개발방식으로는 급변하는 개발환경에 대한 요구사항들을 만족시키기 어렵다는 것이 인식되었다. 그리고, 최근의 이러한 인식과 더불어 학계와 산업계에서 이들 문제를 해결하기 위한 연구들을 활발히 진행하고 있다.
표준화된 방법으로 스트리밍 데이터를 처리하는 시스템 연구들 중에는 STREAM [참고문헌: A. Arasu, S. Babu, J. Widom. CQL: A Language for Continuous Queries over Streams and Relations. LNCS2921], TelegraphCQ [참고문헌: Samuel Madden et al. Continuously Adaptive Continuous Queries over Streams, ACM SIGMOD 2002] 등이 있다. 이들은 공통적으로 스트리밍 데이터에 대한 질의를 관계형 데이터 베이스 질의언어인 SQL로 하고 있는 특징이 있다.
SQL 질의언어는 관계형 데이터 베이스 질의를 위한 대표적인 표준 질의언어이며, 사용자들과 시스템들이 이를 사용하고 있다. 표준이며 대중화된 SQL 질의언어를 이용하여 스트리밍 데이터에 대한 연속질의 기능을 제공하는 것은 사용자에게는 익숙한 질의방법을, 시스템에는 호환성을 제공한다는 점에서 큰 장점이 있다. 앞에서 예를 든 시스템들은 기본적으로 SQL 질의언어의 문법을 기반으로 한다는 장점을 제공한다.
하지만, 예를 든 시스템들 모두는 SQL 문법을 연속질의 언어로 확장하기 위해 SQL의 문법구조를 변경, 확장, 제한하는 방법을 사용하고 있다. SQL 질의언어의 문법구조 변화는 사용자에게 새로운 문법을 익혀야 하는 부담을 주며, 기존의 질의언어 처리 시스템에는 호환되지 않는 문제를 발생하게 된다. 그러므로, 가능하다면 관계형 데이터 모델 기반의 스트리밍 데이터에 대한 연속질의는 표준 질의언어인 SQL 문법의 기본구조를 변경하지 않으면서 제공할 수 있어야 한다.
연속질의(Continuous Query)란 연속되어 끊임없이 입력되는 스트리밍 데이터에 대한 질의처리 방법의 하나로써, 전통적인 관계형 데이터 베이스의 질의처리 방식과 연속질의 시스템의 질의처리 방식 차이를 기준으로 비교 설명할 수 있다.
질의처리 방식의 가장 특징적인 차이점은 전통적인 관계형 데이터 베이스 질의 처리기가 하나(1)의 질의요청에 대해 일(1)회만 질의처리를 실행한 후 그 질의결과를 반환하는 것에 비해, 연속질의 처리기는 하나(1)의 질의요청에 대해 질의요청을 취소하지 않는 한 연속적으로 질의처리를 실행하며 그에 대한 결과도 연속적으로 생산한다는 것에 있다.
또한, 전통적인 관계형 데이터 베이스 질의 처리기의 질의대상 데이터 집합은 질의처리 실행 시 한정된 집합이 되는 것에 비해, 연속질의 처리기의 질의처리 대상 데이터 집합은 질의실행 중에도 끊임 없이 변화한다. 또한, 질의결과의 반환방법에 있어서도 전통적인 관계형 데이터베이스의 질의 처리기는 질의결과에 대한 요청이 있을 경우에만 수동적으로 결과를 반환하는데 비해, 연속질의 처리기는 질의결과가 생산될 때 마다 자동으로 그 결과를 반환한다.
현재의 표준 SQL 질의언어에는 스트리밍 데이터에 대한 연속질의를 정의할 수 있는 기능이 없다. 따라서, 관계형 데이터 모델 기반의 스트리밍 데이터에 대해 연속질의를 이용한 검색기능을 제공하기 위해서는 표준 SQL 질의언어의 기본문법 구조에 영향을 주지 않으면서도 연속질의 기능을 제공할 수 있는 문법구조의 확장이 필요하다.
KR 10-2010-0107757 A KR 10-2007-0060992 A
A. Arasu, S. Babu, and J. Widom. The cql continuous query language: Semantic foundations and query execution. The VLDB Journal, 15(2):121{142, June 2006
이에, 본 발명의 기술적 과제는 이러한 점에서 착안된 것으로 본 발명의 목적은 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법을 제공하는 것이다.
본 발명의 다른 목적은 상기 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법을 수행하기 위한 컴퓨터 프로그램이 기록된 기록 매체를 제공하는 것이다.
본 발명의 또 다른 목적은 상기 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법을 수행하기 위한 장치를 제공하는 것이다.
상기한 본 발명의 목적을 실현하기 위한 일 실시예에 따른 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법은, 데이터베이스 시스템에 입력되는 스트림 데이터에 대한 관계형 질의 언어(Relational Query Language)를 분석하여, 스트림 처리와 관련이 없는 구문을 제외한 다수의 연산자를 포함하는 관계형 질의 계획을 생성하는 단계; 시간 범위 데이터를 포함하는 윈도우(WINDOW) 연산자를 상기 다수의 연산자 간에 후속 연산자로 전달하는 단계; 상기 관계형 질의 계획이 포함하는 다수의 연산자를 분산시켜 PE(Processing Element)에서 처리할 수 있는 형태로 변환하는 단계; 및 변환된 연산자를 연결하여 분산 스트림 처리 엔진에서 실행할 수 있는 데이터 플로우 그래프(Data-Flow Graph)를 생성하는 단계를 포함한다.
본 발명의 실시예에서, 상기 관계형 질의 계획이 포함하는 다수의 연산자를 분산시켜 PE(Processing Element)에서 처리할 수 있는 형태로 변환하는 단계는, 블로킹(blocking) 연산자인 경우, 각 연산자에 대해 미리 정해진 파티셔닝 방법과 결합 연산자를 적용할 수 있다.
본 발명의 실시예에서, 상기 각 연산자에 대해 미리 정해진 파티셔닝 방법은, 랜덤 파티셔닝(random partitioning) 방법과 해시 기반 파티셔닝(hash-based partitioning) 방법 중 하나일 수 있다.
본 발명의 실시예에서, 윈도우(WINDOW) 연산자인 경우, 랜덤 파티셔닝 방법으로 분산하고, 상기 윈도우(WINDOW) 연산자가 포함하는 시간 범위 데이터의 변화에 따라 + 기호 및 - 기호 중 하나의 기호를 추가하여 출력할 수 있다.
본 발명의 실시예에서, 상기 윈도우(WINDOW) 연산자가 포함하는 시간 범위 데이터는, 윈도우(WINDOW) 연산자의 길이를 나타내는 RANGE 파라미터 및 윈도우(WINDOW) 연산자의 갱신 주기를 나타내는 SLIDE 파라미터 중 적어도 하나를 포함할 수 있다.
본 발명의 실시예에서, 조인(JOIN) 연산자인 경우, 해시 기반 파티셔닝 방법으로 분산하고, UNION ALL 을 결합 연산자로 사용할 수 있다.
본 발명의 실시예에서, 집합 연산자인 UNION, EXCEPT, INTERSECT 중 하나인 연산자인 경우, 해시 기반 파티셔닝 방법으로 분산하고, UNION ALL 을 결합 연산자로 사용할 수 있다.
본 발명의 실시예에서, 중복 제거(Duplicate-elimination) 연산자인 경우, 해시 기반 파티셔닝 방법으로 분산하고, UNION ALL 을 결합 연산자로 사용할 수 있다.
본 발명의 실시예에서, 집계(AGGREGATE) 연산자인 경우, 해시 기반 파티셔닝 방법으로 분산하고, GROUP BY 구문이 있는 경우 UNION ALL 을 결합 연산자로 사용하고, GROUP BY 구문이 없는 경우 SUM을 결합 연산자로 사용할 수 있다.
본 발명의 실시예에서, 정렬(Sort) 연산자인 경우, 랜덤 파티셔닝 방법으로 분산하고, 병합 정렬(merge sort)을 결합 연산자로 사용할 수 있다.
본 발명의 실시예에서, 상기 관계형 질의 계획이 포함하는 다수의 연산자를 분산시켜 PE(Processing Element)에서 처리할 수 있는 형태로 변환하는 단계는, 논블로킹(non-blocking) 연산자인 경우, 분할하여 처리한 결과를 UNION 연산자로 합칠 수 있다.
본 발명의 실시예에서, 상기 논블로킹(non-blocking) 연산자는 SELECT, PROJECT, COMPUTE 중 하나의 연산자일 수 있다.
본 발명의 실시예에서, 상기 변환된 연산자를 연결하여 분산 스트림 처리 엔진에서 실행할 수 있는 데이터 플로우 그래프(Data-Flow Graph)를 생성하는 단계는, 윈도우(WINDOW) 연산자가 논블로킹 연산자와 직접 연결된 경우, 두 연산자의 순서를 바꾸는 단계를 포함할 수 있다.
본 발명의 실시예에서, 상기 변환된 연산자를 연결하여 분산 스트림 처리 엔진에서 실행할 수 있는 데이터 플로우 그래프(Data-Flow Graph)를 생성하는 단계는, 랜덤 파티셔닝 방법을 해시 기반 파티셔닝 방법으로 변환하는 단계를 포함할 수 있다.
본 발명의 실시예에서, 상기 변환된 연산자를 연결하여 분산 스트림 처리 엔진에서 실행할 수 있는 데이터 플로우 그래프(Data-Flow Graph)를 생성하는 단계는, 동일한 파티셔닝 방법으로 연결되어 있는 다수의 연산자를 동일한 PE에서 실행하도록 상기 데이터 플로우 그래프를 최적화하는 단계를 포함할 수 있다.
본 발명의 실시예에서, 상기 변환된 연산자를 연결하여 분산 스트림 처리 엔진에서 실행할 수 있는 데이터 플로우 그래프(Data-Flow Graph)를 생성하는 단계는, 셀렉트(SELECT) 연산자를 상기 데이터 플로우 그래프의 최대한 선행 부분에서 처리할 수 있다.
본 발명의 실시예에서, 상기 변환된 연산자를 연결하여 분산 스트림 처리 엔진에서 실행할 수 있는 데이터 플로우 그래프(Data-Flow Graph)를 생성하는 단계는, 해시 기반 파티셔닝 방법보다 우선적으로 랜덤 파티셔닝 방법을 적용할 수 있다.
본 발명의 실시예에서, 상기 변환된 연산자를 연결하여 분산 스트림 처리 엔진에서 실행할 수 있는 데이터 플로우 그래프(Data-Flow Graph)를 생성하는 단계는, 블로킹 연산자를 상기 데이터 플로우 그래프의 최대한 후위에서 처리할 수 있다.
상기한 본 발명의 다른 목적을 실현하기 위한 일 실시예에 따른 컴퓨터로 판독 가능한 저장 매체에는, 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법을 수행하기 위한 컴퓨터 프로그램이 기록되어 있다.
상기한 본 발명의 또 다른 목적을 실현하기 위한 일 실시예에 따른 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 장치는, 데이터베이스 시스템에 입력되는 스트림 데이터에 대한 관계형 질의 언어(Relational Query Language)를 분석하여, 스트림 처리와 관련이 없는 구문을 제외한 다수의 연산자를 포함하는 관계형 질의 계획을 생성하는 쿼리 플래너(query planner); 시간 범위 데이터를 포함하는 윈도우(WINDOW) 연산자를 상기 다수의 연산자 간에 후속 연산자로 전달하는 전달부; 상기 관계형 질의 계획이 포함하는 다수의 연산자를 분산시켜 PE(Processing Element)에서 처리할 수 있는 형태로 변환하는 관계형 질의 변환부; 및 변환된 연산자를 연결하여 분산 스트림 처리 엔진에서 실행할 수 있는 데이터 플로우 그래프(Data-Flow Graph)를 생성하는 DFG 생성부를 포함한다.
이와 같은 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법에 따르면, 기존의 저수준 프로그래밍 언어로 스트림 데이터를 처리하는 방법에 비해, 고수준 분석 질의 언어를 지원하여 직관적인 데이터 분석이 가능하다. 또한, 비공유 아키텍처를 기반으로 하고 있으므로 공유되는 자원이 없기 때문에 계산 노드를 수평적으로 확장하는 스케일 아웃(scale out)을 통해 대규모로 확장 가능하다.
더욱이, 본 발명은 입력된 관계형 질의를 효율적으로 처리하기 위해 규칙 기반 최적화 기법과 PE 공유 기법을 제안하므로, 동일한 자원으로 보다 큰 데이터를 처리할 수 있게 된다. 이를 통해, 저비용으로 보다 효과적으로 데이터 스트림의 분석을 수행할 수 있다.
도 1은 기본적인 분산 스트림 처리 엔진 시스템의 개념도이다.
도 2는 관계형 질의에 사용되는 연산자들을 나타낸 표이다.
도 3은 본 발명의 일 실시예에 따른 윈도우 연산자의 입력과 출력을 보여주는 예시 도면이다.
도 4는 본 발명의 일 실시예에 따른 집계(AGGREGATE) 연산자의 변환을 보여주는 예시 도면이다.
도 5는 본 발명의 일 실시예에 따른 정렬(Sort) 연산자의 변환을 보여주는 예시 도면이다.
도 6은 본 발명의 일 실시예에 따른 각 연산자의 변환의 요약을 나타내는 표이다.
도 7은 본 발명의 일 실시예에 따른 데이터 플로우 그래프(Data-Flow Graph) 생성을 보여주는 도면이다.
도 8은 본 발명의 일 실시예에 따른 최적화 기법을 데이터 플로우 그래프(Data-Flow Graph)에 적용한 경우의 예를 보여주는 도면이다.
도 9는 본 발명의 일 실시예에 따른 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 장치의 블록도이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예에 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
이하, 도면들을 참조하여 본 발명의 바람직한 실시예들을 보다 상세하게 설명하기로 한다.
본 발명은 비공유 아키텍처(shared-nothing architecture) 기반의 분산 스트림 처리 엔진(distributed stream processing engine)에서 입력되는 대규모 스트림 데이터에 대한 관계형 질의(relational query)의 지원과 이를 효율적으로 처리하기 위한 방법에 관한 것이다.
구체적으로, 1) 관계형 질의가 포함하는 다수의 연산자를 분산시켜 처리할 수 있는 형태로 변환하는 방법; 2) 변환된 연산자를 연결하여 분산 스트림 처리 엔진에서 실행 할 수 있는 데이터 플로우 그래프(Data-Flow Graph)로 생성하는 방법; 3) 데이터 플로우 그래프의 처리 시간을 감소하기 위한 최적화 방법을 포함한다.
먼저, 관계형 질의 언어(Relational Query Language)와 분산 스트림 처리 엔진(Distributed Stream Processing Engine)의 개념을 설명한다.
스트림 데이터는 무한히 지속적으로 시스템에 입력되는 튜플(tuple)의 시퀀스로 정의된다. 이는 다음과 같은 수식으로 표현되며, siS 는 튜플을, tiT는 해당 튜플이 시스템에 도달한 타임스탬프(timestamp)를 의미한다.
Figure 112016129181474-pat00001
SQL(Structured Query Language)는 관계형 데이터베이스에서 데이터를 관리하기 위해 설계된 언어로 데이터의 읽기, 추가, 삭제, 수정 등의 기능을 지원한다. 이를 스트림 데이터에 대해 적용하기 위해서는 질의문에 시간 정보를 윈도우(WINDOW) 연산자를 통해 추가적으로 기술하는 것이 필요하다. 다음은 이러한 정보가 반영되어 있는 질의문의 예시이다.
Figure 112016129181474-pat00002
상기 질의문은 검색 기록에서 최근 1시간 동안의 데이터에 대해 가장 많이 입력된 10개의 검색어와 그 수를 출력하며, 이때 결과는 10분마다 갱신된다. WINDOW 연산자는 [RANGE 1 HOUR, SLIDE 10 MINS] 부분이며, RANGE 파라미터는 윈도우의 크기를, SLIDE 파라미터는 갱신되는 주기를 나타낸다.
관계형 데이터베이스에서는 고정된 대상의 데이터에 대해서 처리 후 결과를 한번만 출력하지만, 스트림 데이터의 경우는 지속적으로 입력되는 데이터에 대해서 실시간으로 결과값을 변경하여 계속 출력해야 한다.
WINDOW 연산자는 시간뿐만 아니라 튜플도 연산 단위로 삼을 수 있으며, [RANGE 1000 TUPLES, SLIDE 1 TUPLE]와 같은 경우는 최근 1000개의 튜플로 결과값을 생성하고, 데이터가 입력될 때마다 결과값을 갱신하도록 정의하는 것이다.
이러한 질의문을 분산 스트림 처리 엔진에서 수행하기 위해서는 각각의 연산자를 적절한 형태로 변환하는 것이 필요하다.
분산 스트림 처리 엔진(Distributed Stream Processing Engine)은 대규모의 스트림 데이터에 대한 처리를 위해 다수의 연산 노드를 연결한 시스템이다. 입력된 데이터는 저장하지 않고 그대로 연산 노드로 전달되어 처리되며, 그 결과값 또한 지속적으로 생성하게 된다.
기본적인 시스템의 구조는 도 1에 도시한 바와 같으며, 연산을 각각 처리하기 위한 PE(Processing Element)와 이들간의 데이터 흐름을 나타낸 DFG(Data-Flow Graph)로 이루어진다.
PE는 연산자를 실행하기 위한 기본 계산 단위이다. 비공유 아키텍쳐(shared-nothing architecture)에서는 각각의 PE간에 공유하는 자원이 없으므로 분산이 상대적으로 수월하여 노드의 규모를 크게 늘릴 수 있는 장점이 있지만, 데이터를 처리하기 위한 과정이 복잡해는 단점도 있다.
PE는 데이터를 입력받아 필터링이나 카운팅 같은 작은 단위의 태스크를 수행할 수 있고, 이 결과를 스트림의 형태로 다시 생성한다. DFG에서 연결 정보가 있는 PE들 간에 데이터 전달이 이루어지며, PE는 하나의 노드에 여러 개가 있을 수도 있고, 다수의 연산 노드에 같은 역할을 하는 PE를 분산시킬 수도 있다.
입력되는 데이터가 하나의 PE에서 처리할 수 없을 경우에 다수의 PE를 그룹을 이루게 하여 처리하는데, 이때 입력 데이터는 정해진 파티셔닝 방법(partitioning scheme)에 따라 나뉘어져 각각의 PE로 전달된다.
파티셔닝 방법은 크게 랜덤 파티셔닝(random partitioning)과 해시 기반 파티셔닝(hash-based partitioning)을 사용한다. 랜덤 파티셔닝은 튜플을 그 내용에 관계 없이 그룹내의 모든 PE들에 무작위로 할당한다. 랜덤 파티셔닝은 각각의 PE가 동일한 수의 튜플을 받도록 보장하기 때문에 균형 있게 부하를 분산시킨다.
해시 기반 파티셔닝은 튜플의 값에 해시 함수를 적용하여 생성된 해시키를 생성하고, 이를 기반으로 같은 해시키를 가진 튜플은 같은 PE에서 처리되도록 한다. 해시 기반 파티셔닝 방법은 관계 있는 데이터를 모아서 처리할 필요가 있는 집계(aggregation) 연산자와 같은 경우에 사용된다. 이 방법은 PE들 사이에 동일한 부하가 분산되도록 보장하지 않는다.
종래의 분산 스트림 처리 엔진은 대규모의 스트림 데이터에 대응할 수 있도록 설계되었지만, 관계형 질의와 같은 고수준 언어는 지원하지 않는다. 그렇기 때문에 사용자는 데이터 흐름을 제어하고, PE에서 처리되는 연산자를 직접 지정하는 등의 저수준 프로그램을 작성하여 데이터를 처리해야 한다. 이는 분산 스트림 처리 엔진을 사용하고 관리하는데 높은 비용을 초래한다.
구체적으로, 기존의 분산 스트림 처리 시스템은 공유 아키텍처(shared architecture)를 기반으로 하고 있으며, 공유되는 자원들 간의 동시성(concurrency)을 제어해야 하기 때문에 매우 대규모의 규모로 확장하는데 어려움이 있다.
비공유 아키텍처를 기반으로 하는 경우에는 공유되는 자원이 없기 때문에 계산 노드를 수평적으로 계속 추가하는 스케일 아웃(scale out)을 통해 대규모로 확장이 가능하다. 비공유 아키텍처 기반 분산 스트림 처리 시스템에서 관계형 질의를 지원하는 것으로 데이터 처리 규모의 확장성을 확보할 수 있다.
그러나, 비공유 아키텍처 기반 분산 스트림 처리 시스템은 단일 컴퓨터에서 사용하는 방법을 그대로 확장시켜 데이터를 처리할 수 없고, 맵리듀스(MapReduce)와 같은 특수한 프로그래밍 모델을 저수준 프로그래밍 언어로 구현하여 사용해야 한다.
기존의 저수준 프로그래밍 언어로 데이터를 처리하는 경우 PE에서 각 개별 연산자가 실행할 작업에 대한 프로그램, 다른 PE와의 데이터 연결 정보, 사용할 파티셔닝 방법 등을 모두 작성해야 한다. 이는 스트림 데이터의 분석 질의를 만들거나 수정할 때 많은 노력이 들게 하며, 분석의 주기가 길어지는 단점을 지니고 있다.
이에 본 발명에 따라 관계형 질의를 통해 분석을 수행하는 경우, 질의 작성과 그 결과의 확인의 주기를 단축시킬 수 있어 보다 직관적인 분석을 가능하게 한다.
또한, 분산된 형태로 데이터를 처리하는 경우 연산자의 순서, 파티셔닝 방법에 따라 같은 양의 데이터를 처리하는데 필요한 계산 노드의 수가 달라진다. 본 발명은 입력된 관계형 질의를 효율적으로 처리하기 위해 규칙 기반 최적화 기법과 PE공유 기법을 제안한다. 이를 통해 시스템은 동일한 자원으로 보다 큰 데이터를 처리할 수 있다.
이하에서는 본 발명에서 제안하는 관계형 질의 변환을 상세히 설명한다.
SQL(Structured Query Language)로 대표되는 관계형 질의는 다양한 연산자를 포함하는데, 데이터 분석에 사용되는 필수적인 연산자들은 다음과 같다.
도 2를 참조하면, 연산자들은 크게 논블로킹(non-blocking) 연산자와 블로킹(blocking) 연산자로 나눌 수 있다.
논블로킹 연산자는 대상이 되는 데이터를 분할하여 처리할 수 있는 연산자로, 분할하여 처리한 결과를 UNION 연산자로 단순히 합치는 것으로 올바른 전체 결과를 만들 수 있다. 논블로킹 연산자에는 SELECT, PROJECT, COMPUTE 연산자가 포함될 수 있다.
SELECT 연산자는 특정 조건을 만족하는 튜플을 후속 연산자로 전달하고, PROJECT 연산자는 튜플의 특정 컬럼을 필터링하고, COMPUTE 연산자는 튜플 값에 덧셈, 뺄셈과 같은 수학 연산을 수행한 결과를 생성한다. 이를 수식으로 나타내면 다음과 같다.
[수학식 1]
Figure 112016129181474-pat00003
전체 입력에 대한 결과인 O(R)은 분할된 입력의 결과인 O(Si)의 합집합으로 이루어진다.
블로킹 연산자는 이와 반대로 분할된 데이터에 연산자를 적용해 생성된 결과들을 UNION 한 것이 전체 데이터로 연산자를 적용한 결과와 같지 않은 연산자를 의미한다. 따라서, 정확한 결과를 얻기 위해서는 분할하여 생성된 결과에 대해 연산자 마다 개별적으로 결합 연산자를 적용하여 합쳐야 한다. 이를 수식으로 나타내면 다음과 같다.
[수학식 2]
Figure 112016129181474-pat00004
즉, 분할된 결과들을 모아 다시 결합 연산자 C 를 적용해야만 전체 입력 데이터에 대해 연산자를 적용한 결과와 같아진다.
예를 들어, {1, 2} {3, 4} {5, 6} 형태로 나뉘어진 입력에 대해서 AGGREGATE 연산 중 SUM 의 결과를 구한다고 가정한다. 이때, 각각 나뉘어진 입력에 대해서 SUM 을 적용하면 {3} {7} {11} 이 되고, 이에 대해서 다시 결합 연산자 C 로 SUM을 적용해야 옳은 결과인 {21}을 얻을 수 있다. MAX의 경우에도 {2} {4} {6}을 생성 한 후에, 이에 대해 결합 연산자 C 로 MAX를 선택해 적용해야 옳은 결과인 {6}을 얻을 수 있다.
각각의 블로킹 연산자에 대한 설명은 다음과 같다.
WINDOW 연산자는 주어진 시간 범위를 만족하는 입력 데이터를 유지한다. RANGE 파라미터는 윈도우의 길이를, SLIDE 파라미터는 윈도우의 갱신 주기를 명시한다. WINDOW 연산자는 특별한 결합 연산자를 필요로 하지 않고 랜덤 파티셔닝 방법을 사용하여 분산시킬 수 있다.
도 3을 참조하면, 입력되는 데이터는 스트림이고, 출력되는 데이터 역시 스트림 형태이기 때문에, 윈도우 연산자는 주어진 시간 범위의 데이터가 변화하는 것을 +, - 기호를 추가하여 출력으로 내보낸다. 후속되는 연산자들은 +, - 기호에 따라 적절한 연산을 변화하여 적용한다.
JOIN 연산자는 다수의 스트림을 입력 받아 연관된 튜플을 결합하는 연산자로, 입력 튜플들의 특정 속성을 조인키(join key)로 하여 결합된 스트림 데이터를 생성한다. JOIN 연산자를 분산시켜 수행하기 위해서는, 동일한 조인키를 가지는 튜플이 같은 PE에 할당되어야 한다.
따라서, 키 속성값을 기준으로 하는 해시 기반 파티셔닝 방법을 사용한다. 분산되어 처리된 데이터들은 중복을 제거하지 않으며, 합치는 UNION ALL 을 결합 연산자로 사용한다.
집합 연산자로는 UNION, EXCEPT, INTERSECT 등을 포함할 수 있다.
UNION 연산자는 다수의 입력된 튜플을 병합하고, 중복을 제거한 결과를 출력한다. WINDOW 연산자가 없다면 UNION은 중복을 제거하기 위해 입력 튜플을 무한히 저장해야 한다.
따라서, 일반적으로 WINDOW 연산자를 사용하는 질의에서 UNION을 수행하게 되며, 이때는 JOIN 연산자와 같이 해시 기반 파티셔닝 방법으로 연산자를 분산 시킬 수 있다. 단, JOIN 과는 다르게 중복을 제거해야 하기 때문에, 튜플의 모든 속성으로 생성한 해시값을 사용하여 분산을 수행한다. UNION에 대한 결합 연산자는 UNION ALL 이다.
EXCEPT 연산자는 R1-R2 과 같이 표현되며, 두번째 입력의 R2의 튜플을 첫번째 입력의 R1에서 제외한 결과를 생성한다. UNION과 동일한 이유로 WINDOW 연산자가 보통 함께 사용되며, R1의 데이터를 유지하고 있다가 R2에 동일한 튜플이 나타나면 데이터가 제거되었다는 표시(-)를 한 스트림을 결과로 생성한다. EXCEPT 연산자는 해시 기반 파티셔닝 방법과 결합 연산자로 UNION ALL 이 사용된다.
INTERSECT 연산자는 R1nR2로 표현하며, 두 입력에 동시에 존재하는 튜플을 결과로 생성한다. EXCEPT와 마찬가지로 해시 기반 파티셔닝으로 분산시킬 수 있으며, UNION ALL 을 결합 연산자로 사용한다. 동일한 튜플이 두 입력에 동시에 나타난다면 튜플이 추가되었다는 표시(+)를 한 스트림을 결과로 생성한다.
중복 제거(Duplicate-elimination) 연산자는 SQL의 DISTINCT와 같이 이전에 수신되고 전달한 튜플이 다시 입력 된다면, 이를 보내는 것을 차단한다. 이 연산자 역시 튜플의 전체 값을 해시값으로 하는 해시 기반 파티셔닝 방법으로 분산시킬 수 있으며, 결과값은 UNION ALL로 결합한다.
COUNT, SUM 및 AVERAGE와 같은 집계(AGGREGATE) 연산자는 입력 튜플에 대해 계산을 수행하고 단일한 값을 결과로 생성한다. AGGREGATE 연산자는 GROUP BY 구문과 함께 사용할 수 있으며 이때는 같은 속성값으로 묶어 속성값 별로 집계를 구하게 된다. GROUP BY 구문이 있는 집계 연산자는 해시 기반 파티셔닝으로 분산시킬 수 있으며, 결합 연산자는 UNION ALL이 된다.
GROUP BY 구문이 없는 경우는 각 집계 연산자 별로 다른 결합 연산자가 사용된다. 도 4를 참조하면, COUNT는 해시 기반 파티셔닝을 사용하여 중간 결과를 생성하고, 최종 결과값을 생성하기 위해서는 SUM 연산자를 사용한다.
정렬(Sort) 연산자는 SQL 문에서 ORDER BY 구문으로 표현되며, 기준값에 따라 튜플들을 정렬한다. Sort 연산자는 TOP 또는 LIMIT 구문으로 높은 순위의 튜플만 결과로 생성하는 기능을 지원한다. SORT 연산자는 병합 정렬 알고리즘을 기반으로 수행된다.
SORT 연산자는 랜덤 파티셔닝으로 튜플을 나누고, 그룹별로 각각 정렬된 중간 결과물을 생성한다. 중간 정렬된 튜플들은 결합 연산자로 전달되는데, 이때의 결합 연산자는 병합 정렬(merge sort)이다. 도 5를 참조하면, 상위 2개의 정렬된 튜플을 얻기 위한 처리를 보여준다. 이런 방법의 이점은 입력 튜플의 크기가 매우 클 경우 중간 결과값을 적절히 줄이면 성능이 향상된다는 것이다.
도 6의 표는 앞서 설명한 각각의 연산자의 변환의 요약을 보여준다. 여기서 Synopsis 는 결과값을 생성하기 위해서 별도의 저장 공간을 유지해야 하는지의 여부이다.
또한, 본 발명은 상기 변환된 연산자를 연결하여 분산 스트림 처리 엔진에서 실행할 수 있는 데이터 플로우 그래프(Data-Flow Graph)로 생성하는 방법을 제안한다.
입력된 질의에 대한 데이터 플로우 그래프를 생성하는 방법은 크게 3단계로 이루어진다. 첫번째 단계로, 데이터베이스 시스템의 쿼리 플래너(query planner)에 의해 입력된 관계형 질의를 분석하고, 스트림 처리와 관련이 없는 구문을 제외한 질의 계획을 생성한다. 아래 질의를 변환하면 RANGE, SLIDE를 제외한 SELECT - COUNT - SORT 로 이루어진 질의 계획이 생성된다.
Figure 112016129181474-pat00005
두번째 단계로, WINDOW 연산자가 입력 스트림의 후속에 추가되어 RANGE, SLIDE 에 따른 데이터의 변화를 후속 연산자에 전달한다. 세번째 단계로, 앞서 설명한 관계형 질의 변환 방법을 통해 적절한 파티셔닝 방법과 결합 연산자를 적용하여 데이터 플로우 그래프를 생성한다. 이를 도면으로 나타내면 도 7과 같다.
이때, 2가지의 추가적인 변환 규칙을 적용할 수 있다.
규칙1: WINDOW 연산자가 논블로킹 연산자에 직접 연결된 경우, 두 연산자의 순서를 바꿀 수 있다.
규칙2: 랜덤 파티셔닝은 해시 기반 파티셔닝으로 변환 될 수 있다.
규칙1은 [논블로킹 연산자 - WINDOW 연산자]와 같은 형태로 생성된 결과가 [WINDOW 연산자 - 논블로킹 연산자]에 의해 생성된 결과가 동일함을 의미한다. 규칙2는 연산자가 랜덤 파티셔닝을 받아들일 수 있다는 것은, 어떠한 파티셔닝 방법도 받아들 수 있기 때문에 성립한다.
또한, 본 발명은 데이터 플로우 그래프의 처리 시간을 감소하기 위한 최적화 방법을 제안한다.
DFG를 계산하는데 필요한 비용은, 1) 연산자 계산 비용과 2) 연산자 간의 데이터 전송을 위한 네트워크 비용으로 구성되며, 총 비용은 모든 연산자에서 처리된 튜플의 크기의 합으로 표시할 수 있다. 즉, 전체 비용은 튜플의 양에 비례하여 증가한다. 최적화는 DFG를 변환하여 이들 비용을 감소시키는 것을 목표로 한다.
일 실시예로서, 최적화 기법으로 PE-공유(PE-sharing) 기법을 적용할 수 있다. DFG 내의 각 연산자는 여러 개의 PE에서 실행될 수 있으며, 각 PE는 분산된 환경에서 네트워크로 연결된다.
PE-공유는 네트워크 비용을 줄이기 위해 여러 개의 연산자가 동일한 파티셔닝 방법으로 연결되어 있는 경우, 한 PE 안에서 다수의 연산자를 실행하도록 하는 기법이다. PE간의 데이터 전송은 실제 네트워크 장비를 거치기 때문에 이로 인한 속도 저하가 매우 크기 때문에, 이러한 방법으로 큰 성능 향상을 얻을 수 있다.
상기 예제의 DFG에서 [COUNT - SORT] 부분은 실제로 [Hash(keyword) - COUNT - Hash(keyword) - SORT] 같은 형태이고, 두 연산자 모두 keyword 속성의 해시값을 사용하므로 동일한 PE에서 실행하도록 할 수 있다.
다른 실시예로서, 최적화 기법으로 규칙 기반 최적화(Rule-based Optimization)을 적용할 수 있다.
다음과 같은 3개의 규칙에 기반하여 DFG를 변환하여 전체 비용을 감소시킬 수 있다.
규칙1: SELECT 연산자를 가능한 한 그래프의 선행 부분에서 처리
규칙2: 해시 기반 파티셔닝 보다 랜덤 파티셔닝을 사용
규칙3: 블로킹 연산자를 가능한 한 후위에서 처리
규칙1은 SELECT 연산자는 조건에 따라 튜플 연산자를 줄이는 효과가 있기 때문에 후위 연산자의 전체적인 계산 비용을 낮추는데 도움을 준다.
규칙2는 PE들 간의 계산량을 균등하게 배분하여 전체적인 처리 속도를 감소시킨다. 해시 기반 파티셔닝의 경우 데이터의 분포에 따라 특정 PE가 다른 PE들보다 더 많은 데이터를 처리하게 되는 경우가 발생한다.
즉, 일부 PE가 다른 PE들보다 작업 완료가 늦어지게 되고, 느린 PE의 작업이 완료 될 때까지 처리가 끝난 PE가 대기해야 하는 비효율성이 발생한다. 규칙2는 데이터를 균등하게 나누는 것으로 전체 PE간의 작업 완료 시점을 비슷하게 만들어 유휴 자원을 최소화한다.
규칙3은 앞서 설명한대로 네트워크 비용을 감소시키는 효과가 있다. 규칙4는 블로킹 연산자의 처리 비용을 감소시킨다. 블로킹 연산자의 경우 메모리 내에 데이터를 유지시켜야 하기 때문에 이를 저장하고 접근하는데 추가비용이 발생하고, 데이터 양이 많다면 필요한 메모리의 크기가 증가되는 점이 있다. 따라서, 가능한 한 후위에 블로킹 연산자를 두어 입력 크기를 최소화하여 이러한 비용을 감소시킨다.
도 8은 본 발명의 일 실시예에 따른 최적화 기법을 적용하였을 때, DFG의 A 부분이 B로 변화되는 것을 보여준다.
본 발명에서 제안하는 분산 스트림 처리 엔진의 관계형 질의 처리 방법은, 기존의 저수준 프로그래밍 언어로 스트림 데이터를 처리하는 방법에 비해, 고수준 분석 질의 언어를 지원하여 직관적인 데이터 분석이 가능한 점, 비공유 아키텍처를 기반으로 하고 있어 수평적 확장인 스케일 아웃(scale out)을 지원하는 점, 최적화를 통해 동일한 자원으로 보다 큰 데이터를 처리할 수 있는 점을 장점으로 보여주며, 이를 통해 보다 효과적인 데이터 스트림의 분석을 수행할 수 있다.
이와 같은, 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법은 애플리케이션으로 구현되거나 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다.
상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거니와 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다.
컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다.
프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
도 9는 본 발명의 일 실시예에 따른 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 장치의 블록도이다.
본 발명은 대규모 스트림 데이터에 대한 빠르고 효과적인 분석을 위해, 비공유 아키텍처 기반 분산 스트림 처리 엔진에서 관계형 질의의 지원과 이를 효과적으로 처리하기 위한 장치를 제안한다.
구체적으로, 1) 관계형 질의가 포함하는 다수의 연산자를 분산시켜 처리할 수 있는 형태로 변환, 2) 변환된 연산자를 연결하여 분산 스트림 처리 엔진에서 실행 할 수 있는 데이터 플로우 그래프(Data-Flow Graph)로 생성, 3) 데이터 플로우 그래프의 처리 시간을 감소하기 위한 최적화를 제공한다.
도 9를 참조하면, 본 발명에 따른 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 장치(10, 이하 장치)는 쿼리 플래너(100), 전달부(300), 관계형 질의 변환부(500) 및 DFG 생성부(700)를 포함한다.
본 발명의 상기 장치(10)는 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법을 수행하기 위한 소프트웨어(애플리케이션)가 설치되어 실행될 수 있으며, 상기 쿼리 플래너(100), 상기 전달부(300), 상기 관계형 질의 변환부(500) 및 상기 DFG 생성부(700)의 구성은 상기 장치(10)에서 실행되는 상기 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 위한 방법을 수행하기 위한 소프트웨어에 의해 제어될 수 있다.
상기 장치(10)는 별도의 단말이거나 또는 단말의 일부 모듈일 수 있다. 또한, 상기 쿼리 플래너(100), 상기 전달부(300), 상기 관계형 질의 변환부(500) 및 상기 DFG 생성부(700)의 구성은 통합 모듈로 형성되거나, 하나 이상의 모듈로 이루어 질 수 있다. 그러나, 이와 반대로 각 구성은 별도의 모듈로 이루어질 수도 있다.
상기 장치(10)는 이동성을 갖거나 고정될 수 있다. 상기 장치(10)는, 서버(server) 또는 엔진(engine) 형태일 수 있으며, 디바이스(device), 기구(apparatus), 단말(terminal), UE(user equipment), MS(mobile station), 무선기기(wireless device), 휴대기기(handheld device) 등 다른 용어로 불릴 수 있다.
상기 장치(10)는 운영체제(Operation System; OS), 즉 시스템을 기반으로 다양한 소프트웨어를 실행하거나 제작할 수 있다. 상기 운영체제는 소프트웨어가 장치의 하드웨어를 사용할 수 있도록 하기 위한 시스템 프로그램으로서, 안드로이드 OS, iOS, 윈도우 모바일 OS, 바다 OS, 심비안 OS, 블랙베리 OS 등 모바일 컴퓨터 운영체제 및 윈도우 계열, 리눅스 계열, 유닉스 계열, MAC, AIX, HP-UX 등 컴퓨터 운영체제를 모두 포함할 수 있다.
상기 쿼리 플래너(100)는 데이터베이스 시스템에 입력되는 스트림 데이터에 대한 관계형 질의 언어(Relational Query Language)를 분석하여, 스트림 처리와 관련이 없는 구문을 제외한 다수의 연산자를 포함하는 관계형 질의 계획을 생성한다.
상기 전달부(300)는 상기 관계형 질의 계획에 대해 시간 범위 데이터를 포함하는 윈도우(WINDOW) 연산자를 상기 다수의 연산자 간에 후속 연산자로 전달한다.
상기 관계형 질의 변환부(500)는 상기 관계형 질의 계획이 포함하는 다수의 연산자를 분산시켜 PE(Processing Element)에서 처리할 수 있는 형태로 변환한다. 즉, 각 연산자에 대해 적절한 파티셔닝 방법과 결합 연산자를 적용한다. 본 발명에 따른 관계형 질의 변환 방법은 각 연산자에 따라 구체적으로 앞서 설명한 바 있다.
상기 DFG 생성부(700)는 변환된 연산자를 연결하여 분산 스트림 처리 엔진에서 실행할 수 있는 데이터 플로우 그래프(Data-Flow Graph)를 생성한다.
본 발명은 추가적인 변환 규칙과 PE-공유(PE-sharing) 기법 및 규칙 기반 최적화(Rule-based Optimization) 등의 최적화 기법을 적용하여 동일한 자원으로 보다 큰 데이터를 효율적으로 처리할 수 있다.
본 발명은 지속적으로 입력되는 데이터인 스트림 데이터의 처리 방법에 대한 것으로 검색 기록, 네트워크 모니터링, 주식 거래, 센서 네트워크, 소셜 미디어 등의 빅데이터를 분석 분야에 다양하게 적용될 수 있다.
10: 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 장치
100: 쿼리 플래너
300: 전달부
500: 관계형 질의 변환부
700: DFG 생성부

Claims (14)

  1. 데이터베이스 시스템에 입력되는 스트림 데이터에 대한 관계형 질의 언어(Relational Query Language)를 분석하여, 스트림 처리와 관련이 없는 구문을 제외한 다수의 연산자를 포함하는 관계형 질의 계획을 생성하는 단계 - 상기 다수의 연산자는 블로킹 연산자 및 논블로킹 연산자로 분류되며, 상기 블로킹 연산자는 윈도우(WINDOW) 연산자, 조인(JOIN) 연산자, 집합 연산자, 중복 제거(Duplicate-elimination) 연산자, 집계(AGGREGATE) 연산자, 및 정렬(Sort) 연산자 중 하나 이상을 포함함;
    시간 범위 데이터를 포함하는 윈도우(WINDOW) 연산자가 입력 스트림의 후속에 추가되어 스트림 데이터의 변화를 상기 다수의 연산자들의 후속 연산자로 전달하는 단계;
    상기 관계형 질의 계획이 포함하는 다수의 연산자를 분산시켜 PE(Processing Element)에서 처리할 수 있는 형태로 변환하는 단계; 및
    변환된 연산자를 연결하여 분산 스트림 처리 엔진에서 실행할 수 있는 데이터 플로우 그래프(Data-Flow Graph)를 생성하는 단계를 포함하되,
    상기 관계형 질의 계획이 포함하는 다수의 연산자에 기초하여 PE(Processing Element)에서 처리할 수 있는 형태로 변환하는 단계는,
    블로킹(blocking) 연산자인 경우, 각 연산자에 대해 미리 정해진 파티셔닝 방법으로 상기 다수의 연산자를 분산시켜 각 연산자에 대해 미리 정해진 결합 연산자를 적용하는 단계를 포함하며,
    조인(JOIN) 연산자인 경우, 해시 기반 파티셔닝 방법으로 분산하고, UNION ALL 을 결합 연산자로 사용하여 PE(Processing Element)에서 처리할 수 있는 형태로 변환하고,
    집합 연산자인 경우, 해시 기반 파티셔닝 방법으로 분산하고, UNION ALL 을 결합 연산자로 사용하여 PE(Processing Element)에서 처리할 수 있는 형태로 변환하고,
    중복 제거(Duplicate-elimination) 연산자인 경우, 해시 기반 파티셔닝 방법으로 분산하고, UNION ALL 을 결합 연산자로 사용하여 PE(Processing Element)에서 처리할 수 있는 형태로 변환하고
    집계(AGGREGATE) 연산자인 경우, 해시 기반 파티셔닝 방법으로 분산하고, GROUP BY 구문이 있는 경우 UNION ALL 을 결합 연산자로 사용하고 GROUP BY 구문이 없는 경우 SUM을 결합 연산자로 사용하여 PE(Processing Element)에서 처리할 수 있는 형태로 변환하고,
    정렬(Sort) 연산자인 경우, 랜덤 파티셔닝 방법으로 분산하고, 병합 정렬(merge sort)을 결합 연산자로 사용하여 PE(Processing Element)에서 처리할 수 있는 형태로 변환하는, 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법.
  2. 삭제
  3. 제1항에 있어서,
    윈도우(WINDOW) 연산자인 경우, 랜덤 파티셔닝 방법으로 분산하고, 상기 윈도우(WINDOW) 연산자가 포함하는 시간 범위 데이터의 변화에 따라 + 기호 및 - 기호 중 하나의 기호를 추가하여 출력하는, 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법.
  4. 제3항에 있어서,
    상기 윈도우(WINDOW) 연산자가 포함하는 시간 범위 데이터는, 윈도우(WINDOW) 연산자의 길이를 나타내는 RANGE 파라미터 및 윈도우(WINDOW) 연산자의 갱신 주기를 나타내는 SLIDE 파라미터 중 적어도 하나를 포함하는, 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법.
  5. 삭제
  6. 제1항에 있어서,
    상기 관계형 질의 계획이 포함하는 다수의 연산자를 분산시켜 PE(Processing Element)에서 처리할 수 있는 형태로 변환하는 단계는,
    논블로킹(non-blocking) 연산자인 경우, 분할하여 처리한 결과를 UNION 연산자로 합치고, 상기 논블로킹(non-blocking) 연산자는 SELECT, PROJECT, COMPUTE 중 하나의 연산자인, 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법.
  7. 제1항에 있어서, 상기 변환된 연산자를 연결하여 분산 스트림 처리 엔진에서 실행할 수 있는 데이터 플로우 그래프(Data-Flow Graph)를 생성하는 단계는,
    윈도우(WINDOW) 연산자가 논블로킹 연산자와 직접 연결된 경우, 두 연산자의 순서를 바꾸는 단계를 포함하는, 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법.
  8. 제1항에 있어서, 상기 변환된 연산자를 연결하여 분산 스트림 처리 엔진에서 실행할 수 있는 데이터 플로우 그래프(Data-Flow Graph)를 생성하는 단계는,
    랜덤 파티셔닝 방법을 해시 기반 파티셔닝 방법으로 변환하는 단계를 포함하는, 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법.
  9. 제1항에 있어서, 상기 변환된 연산자를 연결하여 분산 스트림 처리 엔진에서 실행할 수 있는 데이터 플로우 그래프(Data-Flow Graph)를 생성하는 단계는,
    동일한 파티셔닝 방법으로 연결되어 있는 다수의 연산자를 동일한 PE에서 실행하도록 상기 데이터 플로우 그래프를 최적화하는 단계를 포함하는, 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법.
  10. 제1항에 있어서, 상기 변환된 연산자를 연결하여 분산 스트림 처리 엔진에서 실행할 수 있는 데이터 플로우 그래프(Data-Flow Graph)를 생성하는 단계는,
    셀렉트(SELECT) 연산자를 상기 데이터 플로우 그래프의 최대한 선행 부분에서 처리하는, 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법.
  11. 제1항에 있어서, 상기 변환된 연산자를 연결하여 분산 스트림 처리 엔진에서 실행할 수 있는 데이터 플로우 그래프(Data-Flow Graph)를 생성하는 단계는,
    해시 기반 파티셔닝 방법보다 우선적으로 랜덤 파티셔닝 방법을 적용하는, 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법.
  12. 제1항에 있어서, 상기 변환된 연산자를 연결하여 분산 스트림 처리 엔진에서 실행할 수 있는 데이터 플로우 그래프(Data-Flow Graph)를 생성하는 단계는,
    블로킹 연산자를 상기 데이터 플로우 그래프의 최대한 후위에서 처리하는, 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법.
  13. 제1항, 제3항, 제4항 및 제6항 내지 제12항 중 어느 하나의 항에 따른 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법을 수행하기 위한, 컴퓨터 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체.
  14. 데이터베이스 시스템에 입력되는 스트림 데이터에 대한 관계형 질의 언어(Relational Query Language)를 분석하여, 스트림 처리와 관련이 없는 구문을 제외한 다수의 연산자를 포함하는 관계형 질의 계획을 생성하는 쿼리 플래너(query planner);
    시간 범위 데이터를 포함하는 윈도우(WINDOW) 연산자를 상기 다수의 연산자 간에 후속 연산자로 전달하는 전달부;
    상기 관계형 질의 계획이 포함하는 다수의 연산자를 분산시켜 PE(Processing Element)에서 처리할 수 있는 형태로 변환하는 관계형 질의 변환부; 및
    변환된 연산자를 연결하여 분산 스트림 처리 엔진에서 실행할 수 있는 데이터 플로우 그래프(Data-Flow Graph)를 생성하는 DFG 생성부를 포함하는, 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 장치.
KR1020160182576A 2016-12-29 2016-12-29 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치 Active KR101955376B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160182576A KR101955376B1 (ko) 2016-12-29 2016-12-29 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160182576A KR101955376B1 (ko) 2016-12-29 2016-12-29 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치

Publications (2)

Publication Number Publication Date
KR20180077830A KR20180077830A (ko) 2018-07-09
KR101955376B1 true KR101955376B1 (ko) 2019-03-08

Family

ID=62919053

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160182576A Active KR101955376B1 (ko) 2016-12-29 2016-12-29 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치

Country Status (1)

Country Link
KR (1) KR101955376B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11409746B2 (en) 2019-11-18 2022-08-09 Daegu Gyeongbuk Institute Of Science And Technology Method and apparatus for processing query using N-ary join operators

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111026749B (zh) * 2019-11-11 2023-06-30 支付宝(杭州)信息技术有限公司 业务告警方法及装置
CN113806429B (zh) * 2020-06-11 2024-10-11 深信服科技股份有限公司 基于大数据流处理框架的画布式日志分析方法
US11775529B2 (en) 2020-07-06 2023-10-03 Ocient Holdings LLC Recursive functionality in relational database systems

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101525529B1 (ko) 2014-09-30 2015-06-05 주식회사 비트나인 데이터 처리장치 및 그 데이터 매핑방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100789771B1 (ko) 2005-12-08 2007-12-28 한국전자통신연구원 트리거를 이용한 입력 데이터 스트림과 저장 데이터의 통합질의 처리 시스템 및 그 방법
KR101014492B1 (ko) 2009-03-26 2011-02-14 박재홍 관계형 데이터 모델 기반 스트리밍 데이터 처리를 위한 연속질의 언어 기반 연속질의 처리기 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101525529B1 (ko) 2014-09-30 2015-06-05 주식회사 비트나인 데이터 처리장치 및 그 데이터 매핑방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11409746B2 (en) 2019-11-18 2022-08-09 Daegu Gyeongbuk Institute Of Science And Technology Method and apparatus for processing query using N-ary join operators

Also Published As

Publication number Publication date
KR20180077830A (ko) 2018-07-09

Similar Documents

Publication Publication Date Title
CN107402995B (zh) 一种分布式newSQL数据库系统及方法
US10642831B2 (en) Static data caching for queries with a clause that requires multiple iterations to execute
CN106934014B (zh) 一种基于Hadoop的网络数据挖掘与分析平台及其方法
CN103020204B (zh) 一种对分布式顺序表进行多维区间查询的方法及其系统
Bao et al. Managing massive trajectories on the cloud
JP6964384B2 (ja) 異種データソース混在環境におけるフィールド間の関係性の自動的発見のための方法、プログラム、および、システム
JP2017157229A (ja) 半構造データのためのスケーラブルな分析プラットフォーム
Xiao et al. SWEclat: a frequent itemset mining algorithm over streaming data using Spark Streaming
CN106294695A (zh) 一种面向实时大数据搜索引擎的实现方法
CN104111958B (zh) 一种数据查询方法及装置
US20150006509A1 (en) Incremental maintenance of range-partitioned statistics for query optimization
CN104239377A (zh) 跨平台的数据检索方法及装置
KR101955376B1 (ko) 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치
CN105164673A (zh) 跨数据库和文件系统的查询一体化
CN107784030A (zh) 一种处理连接查询的方法及装置
US11675769B2 (en) On-demand, dynamic and optimized indexing in natural language processing
CN106897374A (zh) 一种基于轨迹大数据最近邻查询的个性化推荐方法
CN107330098A (zh) 一种自定义报表的查询方法、计算节点及查询系统
CN106570145A (zh) 一种基于分层映射的分布式数据库结果缓存方法
CN107818181A (zh) 基于Plcient交互式引擎的索引方法及其系统
WO2024239782A1 (zh) 查询计划构建方法、装置、电子设备和存储介质
Abdel Azez et al. Optimizing join in HIVE star schema using key/facts indexing
Theeten et al. Chive: Bandwidth optimized continuous querying in distributed clouds
US9229969B2 (en) Management of searches in a database system
US20150293971A1 (en) Distributed queries over geometric objects

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20161229

PA0201 Request for examination
PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20180720

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20190114

PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20190228

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20190304

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20220114

Start annual number: 4

End annual number: 4

PR1001 Payment of annual fee

Payment date: 20221229

Start annual number: 5

End annual number: 5

PR1001 Payment of annual fee

Payment date: 20240125

Start annual number: 6

End annual number: 6

PR1001 Payment of annual fee

Payment date: 20250124

Start annual number: 7

End annual number: 7