KR101237736B1 - 데이터 스트림에서의 다중 조인 질의 처리 방법 - Google Patents

데이터 스트림에서의 다중 조인 질의 처리 방법 Download PDF

Info

Publication number
KR101237736B1
KR101237736B1 KR1020110037178A KR20110037178A KR101237736B1 KR 101237736 B1 KR101237736 B1 KR 101237736B1 KR 1020110037178 A KR1020110037178 A KR 1020110037178A KR 20110037178 A KR20110037178 A KR 20110037178A KR 101237736 B1 KR101237736 B1 KR 101237736B1
Authority
KR
South Korea
Prior art keywords
join
synopsis
query
array
queries
Prior art date
Application number
KR1020110037178A
Other languages
English (en)
Other versions
KR20120097302A (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 연세대학교 산학협력단
Publication of KR20120097302A publication Critical patent/KR20120097302A/ko
Application granted granted Critical
Publication of KR101237736B1 publication Critical patent/KR101237736B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Operations Research (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명에 따른 다중 조인 질의 처리 방법은, 복수 개의 다중 조인 질의를 해석하여 2 이상의 다중 조인 질의에 공통적으로 나타나는 연속적인 조인 연산자의 집합인 조인 연산자 집합을 생성하는 단계; 상기 생성된 조인 연산자 집합 중에서 특정 조인 연산자 집합을 선택하고, 상기 선택된 조인 연산자 집합과 동시 실행 가능한 조인 연산자 집합을 하나의 그룹으로 묶어, 상기 복수 개의 다중 조인 질의를 그룹화하는 단계; 상기 다중 조인 질의의 각 소스 스트림에 대한 배열 기반 시놉시스의 곱으로 표현되는 질의 방정식을 상기 복수 개의 다중 조인 질의가 그룹화된 결과에 따라 변환하여, 변환된 질의 방정식을 생성하는 단계; 및 상기 변환된 질의 방정식에 따라 배열 기반 시놉시스 연산을 수행하는 단계를 포함하는 것을 특징으로 한다.

Description

데이터 스트림에서의 다중 조인 질의 처리 방법{Method for processing multiple join query over data streams}
본 발명은 다중 조인 질의 처리 방법에 관한 것으로 보다 상세하게는 데이터 스트림에서 다중 연속 조인 질의를 처리하기 위한 방법 및 상기 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체에 관한 것이다.
최근 산업발달과 고도 사회로 접어들면서 과학 기술이나 공학 분야 이외에 경제 사회 등의 다양한 분야에서도 각종 데이터들의 중요성이 강조되고 있으며, 데이터 종류의 다양화, 용량의 대형화, 그리고 연속적인 발생특성으로 인하여 일정한 저장공간에 데이터를 저장한 후 관리·활용하기에 어렵게 되었다. 따라서, 한정된 공간 안에서 데이터를 효율적으로 처리하는 방식으로 점차 변화하고 있다. 이러한 종류의 데이터는 USN(Ubiquitous Sensor network), 주식거래, 금융거래, 전화통화, 교통 관리 및 교통상황 수집자료, 위성통신 등에서 찾아볼 수 있으며, 실시간에 연속적으로 발생되어 빠른 속도로 관리시스템에 입력되어 들어오는 이러한 데이터를 데이터 스트림(Data Stream)이라 한다.
데이터 스트림의 경우 시스템 입력속도가 빠르고 연속적이어서 일반적으로 데이터 처리에 사용되는 DBMS에서 데이터를 저장한 후 처리하는 방식을 적용할 수 없다. 이미 많은 연구자들이 오랜 시간 동안 데이터 스트림의 처리기술을 연구해 Aurora[1], TelegraphCQ(TinyDB)[2], STREAM[3]등과 같은 DSMS(Data Stream management System)이 개발된바 있다. 이런 시스템들은 모두 데이터 스트림 처리를 목적으로 만들어졌으며, 효과적인 질의 처리를 위해서 질의 계획을 최적화하고, 특정 연산들을 통해 연속질의로 입력되는 데이터 스트림에 대한 질의들을 처리하고 있다. 또한 과다한 입력 데이터로 인한 시스템 부하를 방지하기 위해 데이터를 선택적으로 처리할 수 있도록 하는 기능을 제공한다.
그 가운데 STREAM[3]은 데이터 스트림의 관리 및 처리를 위해 개발된 시스템으로서 CQL(Continuous Query Language)이라는 언어를 제안하고, CQL을 통해 관계 연산자 집합을 만들어 입력ㅇ저장되는 데이터에 적용함으로써 연속적으로 질의를 처리하도록 하였다. 그 밖에도 다양한 시스템들이 최근 개발되고 있으며, 대부분 데이터 스트림 처리를 위한 다중 연속질의의 최적화에 상당한 비중을 두고 있다.
데이터 처리의 효율성을 높이기 위한 질의 처리 연구로는 단일 질의에서 연속질의 처리, 질의계획 평가, 그리고 연산 스케줄링 등에 관한 연구가 주로 수행되고 있으며, 최근에는 데이터 스트림의 종합적인 처리와 서비스의 질을 향상시키기 위한 다중 연속 질의 최적화(Multiple continuous Query Optimization)[3, 6, 7, 8]와 관련된 연구가 증가하고 있는 추세이며, 질의 처리에 있어 가장 큰 연산의 비중을 차지하고 있는 다중 조인 연산의 처리에 대한 연구도 활발하게 진행되고 있다.
다중 연속 질의 최적화에서 주요 이슈로 자리 잡고 있는 것은 등록된 질의들 간의 연산 공유의 최적화 방법에 대한 문제이다. 연산 공유의 최적화를 위해서는 다수의 등록된 질의에 공통적으로 나타나는 질의의 하위 표현식(sub expression)들을 찾아 동일한 연산에 대한 불필요한 중복을 최소화 문제에 대한 연구가 진행되고 있다. 또한, 이러한 공유 가능한 연산들을 수행함에 있어 다양한 질의 내의 관계 연산자들의 배치순서를 조정함으로써, 중복된 데이터를 제거하여 이후 전체적인 시스템의 부하를 낮추는 방향으로의 연구 역시 진행되고 있다.
연속질의 처리에는 크게 선택 조건의 처리와 조인 연산의 처리로 나눌 수 있다. 이중에서도 특히 조인 연산은 조인에 참여하는 두 입력 데이터의 모든 투플을 비교해야 하므로 연속질의 처리에 있어서 큰 부하를 차지한다. 조인 연산에서 가장 큰 비용을 차지하는 부분은 새로 입력되어 조인을 해야하는 투플과 비교하는 부분이다. 특히 다중 조인의 경우 여러 개의 조인 연산을 거치면서 결과적으로 조인의 결과를 만들지 않는 중간 결과들이 많이 생성되며 이를 생성하는 비용을 줄이면 전체적인 질의처리에 있어서의 부하도 상당히 줄게 된다.
본 발명에서 제안하는 시놉시스 공유 기반의 다중 조인 질의를 처리 방법에서는 다중 조인의 연산 공유를 위한 정적인 질의 수행 계획 접근 방식을 채택한다.
적응적인 질의 처리 수행계획은 연속질의 처리를 수행함에 있어 다음과 같은 부가적인 오버헤드를 가지고 있다. 첫째, 지속적인 질의 수행계획에 대한 모니터링 작업을 수행함으로써 추가적인 시스템의 연산 자원을 필요로 하게 되며, 둘째, 모든 경우에 있어 최적의 질의 수행 계획을 찾는다는 것은 NP-완전(NP-Complete)[17]문제이기 때문에, 보다 효율적인 질의 수행 계획을 찾는 것은 상당한 시간이 소요된다. 마지막으로, 새로운 적응적인 질의 수행 계획을 적용함에 있어 데이터 스트림 자체가 가진 특성으로 인해 질의 수행에 필요한 소스 데이터 스트림의 특성이 이전과는 달라질 수 있기 때문에 새로운 질의 수행계획이 더이상 효율적이지 않을 경우도 발생할 수 있다. 따라서, 본 발명에서는 정적인 질의 수행 계획을 가진 데이터 스트림에서 시놉시스 공유 기반의 다중 조인 질의 처리 방법을 제공한다.
본 발명은 데이터 스트림 환경에서 다수의 등록된 다중 조인 질의들의 효율적인 처리와 동시에, 다중 질의 최적화 분야의 가장 큰 이슈인 질의 간 연산의 공유를 통한 중복된 데이터와 불필요한 연산의 반복을 최소화하기 위한 목적을 가진다.
상기 기술적 과제를 해결하기 위하여 본 발명에 따른 다중 조인 질의 처리 방법은, (a) 복수 개의 다중 조인 질의를 해석하여 2 이상의 다중 조인 질의에 공통적으로 나타나는 연속적인 조인 연산자의 집합인 조인 연산자 집합을 생성하는 단계; (b) 상기 생성된 조인 연산자 집합 중에서 특정 조인 연산자 집합을 선택하고, 상기 선택된 조인 연산자 집합과 동시 실행 가능한 조인 연산자 집합을 하나의 그룹으로 묶어, 상기 복수 개의 다중 조인 질의를 그룹화하는 단계; (c) 상기 다중 조인 질의의 각 소스 스트림에 대한 배열 기반 시놉시스의 곱으로 표현되는 질의 방정식을 상기 복수 개의 다중 조인 질의가 그룹화된 결과에 따라 변환하여, 변환된 질의 방정식을 생성하는 단계; 및 (d) 상기 변환된 질의 방정식에 따라 배열 기반 시놉시스 연산을 수행하는 단계를 포함하는 것을 특징으로 한다.
일 실시예에서, 상기 (a) 단계는, 상기 다중 조인 질의의 질의 연산에 참여하는 소스 스트림을 노드로 표현하고 상기 소스 스트림의 속성을 에지로 표현하는 질의 그래프를 생성하여 상기 다중 조인 질의를 해석할 수 있다.
일 실시예에서, 상기 (a) 단계는, 조인 연산에 참여하는 두 소스 스트림과 적어도 둘의 조인 속성을 가지는 제1 레벨 조인 연산자 집합을 생성하는 단계; 및 적어도 둘의 상기 제1 레벨 조인 연산자 집합을 연결하여 제2 레벨 조인 연산자 집합을 생성하는 단계를 포함할 수 있다.
일 실시예에서, 상기 생성된 조인 연산자 집합 중에서 특정 조인 연산자 집합의 선택은, 해당 조인 연산자 집합이 속한 질의의 수를 전체 질의의 수로 나눈 값인 절대 공유율 또는 상기 절대 공유율에 해당 조인 연산자 집합이 가진 조인 연산자의 수를 일정 비율로 반영한 값인 상대 공유율을 계산하여, 상기 절대 공유율 또는 상기 상대 공유율이 최대인 조인 연산자 집합을 선택할 수 있다.
일 실시예에서, 상기 (b) 단계는, 상기 하나의 그룹에 속하지 않는 다중 조인 질의를 다른 그룹으로 분류하여 상기 복수 개의 다중 조인 질의를 그룹화할 수 있다.
일 실시예에서, 상기 배열 기반 시놉시스는, 하나의 조인 속성을 가지는 소스 스트림에 대하여 1×m 크기의 배열 기반 구조체-여기서, 상기 소스 스트림의 투플은 조인 속성을 키 값으로 하고 m 개의 버켓을 가지는 해쉬 함수를 이용하여 상기 배열 기반 구조체의 엔트리에 할당됨-로 이루어지고, 두 개의 조인 속성을 가지는 소스 스트림에 대하여 m1×m2 크기의 배열 기반 구조체-여기서, 상기 소스 스트림의 투플은 각각 m1과 m2 크기의 버켓을 가지는 두 해쉬 함수를 이용하여 상기 배열 기반 구조체의 엔트리에 할당됨-로 이루어질 수 있다.
일 실시예에서, 상기 배열 기반 시놉시스는, 소스 스트림에 존재하는 실제 투플 값과 연관된 포인터들을 하나의 노드로 구성하여, 배열 기반 시놉시스의 행 또는 열 별로 연결 리스트(linked-list)로 구성한 리스트인 시놉시스 요약 리스트를 포함할 수 있다.
일 실시예에서, 상기 시놉시스 요약리스트는, 상기 배열 기반 시놉시스에서의 행속성을 인덱스를 가지며 동일한 행속성을 가진 투플 포인터들 중에서 열속성이 같은 투플 포인터들을 하나의 노드로 구성하고 해당 열속성을 노드의 인덱스로 할당하여 인덱스를 기반으로 정렬된 형태의 리스트로 정의되는 행단위 시놉시스 요약리스트와, 상기 배열 기반 시놉시스에서의 열속성을 인덱스를 가지며 동일한 열속성을 가진 투플 포인터들 중에서 행속성이 같은 투플 포인터들을 하나의 노드로 구성하고 해당 행속성을 노드의 인덱스로 할당하여 인덱스를 기반으로 정렬된 형태의 리스트로 정의되는 열단위 시놉시스 요약리스트를 포함할 수 있다.
일 실시예에서, 상기 배열 기반 시놉시스의 곱은 다음과 같이 정의될 수 있다.
i=1 번째 조인 연산에 대하여, m1×m2의 크기를 갖는 소스 스트림 S1에 대한 배열 기반 시놉시스 MBS1과 m2×m3의 크기를 갖는 소스 스트림 S2에 대한 배열 기반 시놉시스 MBS2의 곱이 주어졌을 때, 두 배열 기반 시놉시스 각각의 소스 스트림의 조인 연산(S1.a1
Figure 112011029677917-pat00001
S2.a1)의 결과를 저장하는 시놉시스 요약리스트(SCL_Rj <1,2>)는 다음과 같이 정의되고,
Figure 112011029677917-pat00002
2≤i≤n 번째 조인 연산에 대하여, i-1 번째 조인 연산을 위한 연속적인 시놉시스 곱 연산 후, mi 행 크기만큼의 중간결과를 가지는 시놉시스 요약리스트(SCL_Rj <1,2,...,i>)와 mi×mi+1 크기를 가지는 소스 스트림 Si에 대한 배열 기반 시놉시스 MBSi가 주어졌을 경우, i 번째 조인을 통한 최종 결과를 저장하는 시놉시스 요약리스트(SCL_Rj <1,2,...,i>)는 다음과 같이 정의됨.
Figure 112011029677917-pat00003
상기 기술적 과제를 해결하기 위하여 상기된 본 발명에 따른 다중 조인 질의 처리 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공한다.
본 발명에 따른 조인 질의 처리 방법은 데이터 스트림 환경에서 다수의 등록된 다중 조인 질의들의 효율적인 처리와 동시에, 다중 질의 최적화 분야의 가장 큰 이슈인 질의 간 연산의 공유를 통한 중복된 데이터와 불필요한 연산의 반복을 최소화할 수 있다.
이를 위해 본 발명의 실시예에서는 등록된 질의들 간 조인 연산의 공유를 최적화할 수 있는 방법으로서 등록된 다수의 질의 내의 조인 조건들을 탐색하여 공유 가능한 공통적인 조인 연산자들을 하나의 조인 연산자 집합으로 정의하여 해당 조인 연산자 집합을 포함하는 각 연속질의를 실행함에 있어 개별 질의의 중간 처리 결과를 공유함으로써 다중 질의 최적화를 달성할 수 있다.
또한, 다중 조인 질의 처리를 위한 시놉시스 요약리스트 연산 알고리즘을 통하여 여러 조인 연산에서 불필요한 중간 결과들을 생성하지 않음과 동시에, 최종적으로 조인 연산의 결과를 만들 수 있는 투플들만을 모아 조인 연산을 수행함으로써 전체적인 질의 처리에 있어서의 조인 연산의 부하를 줄일 수 있는 결과를 가져올 수 있다.
또한, 조인 연산자 집합을 구성함에 있어 절대 공유율과 상대 공유율을 정의함으로써 조인 연산자 집합 선택의 방법을 제시하며, 이를 기반으로 공유할 수 있는 조인 연산자를 효과적으로 찾을 수 있다.
또한, 실제 질의를 수행함에 있어, 다수의 소스 스트림 내의 투플 정보를 유지하는 배열 기반 시놉시스 구조체를 시놉시스 요약리스트로 개선하여 효율성을 개선하며, 조인 연산자 집합의 개념을 활용하여 시놉시스 요약리스트를 공유함으로써, 불필요한 조인 연산의 중복을 최소화 할 수 있다.
도 1은 본 발명의 일 실시예에 따른 다중 조인 질의 처리 방법은 전체 흐름도를 나타낸다.
도 2는 질의 파싱 예제를 나타낸다.
도 3은 조인 연산자 집합 연결 과정을 나타낸다.
도 4는 조인 연산자 집합 연결 알고리즘을 나타낸다.
도 5는 상대 공유율을 기반으로 정렬된 조인 연산자 집합을 나타낸다.
도 6은 상대 공유율 기반 조인 연산자 집합 선택 알고리즘을 나타낸다.
도 7은 상대, 절대 공유율 기반 그룹 구성 결과를 나타낸다.
도 8은 배열 기반 시놉시스를 나타낸다.
도 9는 배열 기반 시놉시스 예제를 나타낸다.
도 10은 시놉시스 요약 리스트(SCL)를 나타낸다.
도 11은 치환된 질의 방정식을 나타낸다.
도 12는 배치 시놉시스를 반영한 질의 방정식을 나타낸다.
도 13은 시놉시스 요약리스트 연산 과정을 나타낸다.
도 14는 지연된 투플 연결 과정을 나타낸다.
이하에서는 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다. 이하 설명 및 첨부된 도면들에서 실질적으로 동일한 구성요소들은 각각 동일한 부호들로 나타냄으로써 중복 설명을 생략하기로 한다. 또한 본 발명을 설명함에 있어 관련된 공지기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그에 대한 상세한 설명은 생략하기로 한다.
우선, 본 발명의 이해를 돕기 위하여 데이터 스트림에서 조인 연속 질의에 대한 관련 연구들을 소개한다.
데이터 스트림 처리에 관한 연구는 최근 몇 년 간 집중적으로 수행되어 왔으며, 다양한 연구성과를 거두고 있다. 특히 Aurora[1], TelegraphCQ[2], STREAM[3] 등 주요 프로젝트들이 범용 목적의 DSMS 개발과 함께 스트림 질의어, 로드 쉐딩, 효율적인 질의 처리 기법 등의 많은 이슈들에 대한 연구가 진행되었다. 그리고 최근에는 이러한 연구들과 더불어 대용량 스트림 데이터의 증가에 따라 센서 모니터링 데이터와 같이 상당한 수준의 연속질의가 연속적으로 처리되어야 하는 데이터 처리시스템에서는 응용 프로그램들이 한꺼번에 대량의 데이터 스트림을 처리할 수 있는 능력이 추가적으로 요구 되고 있다.
DSMS는 무한히 들어오는 입력 데이터들을 처리하는 것이 목적이기 때문에 기존의 DBMS에서 사용하는 방법으로는 조인 연산이나 집계(Aggregation)연산 등, 블로킹 연산(blocking operator)들은 처리할 수 없다. 블로킹 연산이란 테이블 전체를 모두 확인해야 결과를 알 수 잇는 연산을 말한다. 이와 같은 문제를 해결하기 위해서 DSMS는 슬라이딩 윈도우(sliding window)[4]를 적용하여 처리하지만 선택질의(Selection)나 항목선택(Projection)과 같은 단일-입력 연산(Single-input Operator)[5]보다 더 복잡하고 더 많은 시간이 필요하다. 이러한 이유로 데이터 스트림 상에서 조인 연산을 효율적으로 처리하기 위한 많은 연구가 진행되고 있다.
CACQ[3][6], PSoup[7]에서는 데이터 스트림을 처리하기 위한 다중 연속질의를 공유할 수 있는 방법을 제안하였는데, 두 가지 모두 가장 큰 윈도우 사이즈를 사용하여 다중 질의에서의 공유 윈도우 조인을 수행한다. 그에 비해 State-Slice[8] 등은 서로 다른 윈도우 크기를 갖는 다수의 질의에 대하여 전체 윈도우를 작은 크기의 윈도우로 나누고 나눠진 윈도우 조인의 체인을 형성하여 파이프라인(Pipe-line) 방법론을 통한 조인 질의를 평가하는 방법을 연구하였다. 다중 연속질의에서 연산 공유의 문제는 더 이상 새로운 연구 대상은 아니다. 이미 전통적인 관계형 데이터베이스분야의 연구에서도 최적화된 공유 질의 계획을 찾는 연구[9]들이 수행된바 있으며, [10]에서는 등록된 질의 간의 불필요한 반복적인 연산의 방지와 데이터 중복 방지를 위한 정적 다중 질의 최적화 기법과 적응적 질의 최적화 기법의 알고리즘을 제안하였다.
다중 질의 최적화에 관한 연구는 크게 두 가지 형태의 접근 방식을 취하게 된다. NiagaraCQ[11], Aurora[1], STREAM[3]과 같은 시스템에서는 등록된 다중질의를 실행하기 위해 투플 데이터에 대한 연산의 흐름이 정적인 형태의 질의 수행 계획(plan)을 가진다. 이와 반대로, CACQ[3][6], PSoup[7], TelegraphCQ[2], distributed eddies[12]과 같은 적응적인(adaptive) 질의 처리 수행 계획[13,14,15,16,17]을 가지는 접근 방법을 가지고 다중 질의 최적화에 관한 연구를 진행하고 있다.
정해진 질의 계획을 빠르게 처리하기 위한 방법 또한 많은 연구가 이루어지고 있으며, 특히 다중 조인 연산(multi way join operation)을 빠르게 처리하기 위해서 [20]에서는 MJoin 방법을 제안한다. MJoin은 중간 결과를 만들지 않고, 각 데이터 소스마다 정해진 조인순서에 따라서 새로 들어온 데이터를 처리한다. 적응적 캐싱(Adaptive Caching)[21]은 같은 조인 연산이 반복되는 MJoin의 단점을 보완하기 위하여 중간 결과들을 적응적으로 캐싱함으로써 메모리를 더 사용하는 대신 보다 빠르게 조인 연산을 수행하는 방법이며, [15]에서는 MJoin의 각 데이터 소스마다 정해진 조인 순서를 결정하는 방법을 제안한다. 반대로 X-Join[21]은 다중조인을 n-1개의 이진 조인 트리로 구성하고, 각 조인들의 중간 결과들을 저장하는 방법이다.
이러한 조인 방법들은 중간 결과의 생성 여부에 따른 알고리즘의 성능 차이를 가져오며, 또한, 최종적인 질의의 결과를 만들지 않는 중간 조인 결과를 생성한다. 이렇게 생성된 중간 조인 결과들은 다음 조인 연산들을 수행하면서 언젠가 버려질 불필요한 중간 결과를 계속해서 만들어 내게 된다. 따라서 조인 연산을 수행하는 데 있어 더욱 많은 투플을 비교해야 하므로 연산 비용을 증가시키게 된다. 본 발명에의 실시예에서는 이러한 불필요한 중간 결과의 생성과 더불어 불필요한 조인 연산 수행을 줄이기 위해, 각 조인 단계 마다 최종 조인 결과 생성이 가능한 투플만을 계산(Enumeration)하여 최종적으로 조인 결과를 생성하는 투플만을 선택하여 지연된 조인 연산(Delayed Concatenation)을 할 수 있도록 한다.
도 1은 본 발명의 일 실시예에 따른 다중 조인 질의 처리 방법은 전체 흐름도를 나타낸다.
도 1을 참조하면, 우선 복수 개의 다중 조인 질의를 해석하여 2 이상의 다중 조인 질의에 공통적으로 나타나는 연속적인 조인 연산자의 집합인 조인 연산자 집합을 생성한다(110단계).
그리고, 상기 110단계에서 생성된 조인 연산자 집합 중에서 특정 조인 연산자 집합을 선택하고, 선택된 조인 연산자 집합과 동시 실행 가능한 조인 연산자 집합을 하나의 그룹으로 묶고, 그 그룹에 속하지 않는 다중 조인 질의가 있으면 이를 다른 그룹으로 분류하여, 다중 조인 질의를 그룹화한다(120단계).
다음으로, 다중 조인 질의의 각 소스 스트림에 대한 배열 기반 시놉시스의 연산으로 표현되는 질의 방정식을 상기 120단계에서 복수 개의 다중 조인 질의가 그룹화된 결과에 따라 변환하여, 변환된 질의 방정식을 생성한다(130단계).
그리고, 상기 130단계에서의 변환된 질의 방정식에 따라 배열 기반 시놉시스 연산을 수행함으로써 질의 결과를 얻는다(140단계).
이하에서는, 1장에서 다수의 다중 조인 질의를 바탕으로 보인 연산자 집합을 찾고 다중 조인 질의를 그룹화하는 방법을 설명하고, 2장 및 3장에서 조인 연산자 집합을 기반으로 실제 다중 조인 질의를 실행함에 있어 필요한 배열 기반 시놉시스 연산에 관하여 설명한다.
1. 조인 연산자 집합
본 발명의 일 실시예에 따른, 공유 기반의 다중 조인 질의 처리 방법에서는 사용자로부터 등록된 다수의 연속질의를 기반으로 개별 연속질의의 조인조건을 탐색하여 하나 이상의 조인 연산자를 포함하는 공유 가능한 연속적인 조인 연산자의 집합(Join Operator Set)을 생성한다.
여기서 공유 가능한 연속적인 조인 연산자(Join Operator)란, 여러 질의에 공통적으로 나타나는 연속적인 조인 조건의 집합을 의미한다. 이러한 연속적인 조인 연산자를 하나의 조인 연산자 집합으로 생성하여 여러 연속 질의간에 공유함으로써, 조인 연산의 중간 결과 데이터의 중복을 줄여 결과적으로 불필요한 조인 연산의 반복을 최소화하게 된다.
1.1절에서는 다수의 등록된 연속질의를 해석하여 조인 연산자 집합을 구성하기 위한 방법을 설명하며, 1.2절에서는 1.1절에서 구성한 조인 연산자 집합을 기반으로 선택 가능한 조인 연산자 집합을 생성하고, 1.3절에서는 조인 연산자 집합의 선택 기준에 따라 최종적인 조인 연산자 집합 선택 방법과 최종적으로 선택된 조인 연산자 집합을 기반으로 질의를 그룹화하는 방법을 설명한다.
1.1 다중 조인 질의 평가
도 2는 질의 파싱 예제를 나타낸다. 도 2와 같이 7개의 소스(Source) 스트림에 대하여 조인 조건을 갖는 4개의 다중 조인(Multi way join) 질의 Q1~Q4가 주어졌을 때, 조인 연산자 집합을 찾기 위한 첫 단계로, 등록된 연속질의들의 조인 조건을 평가(Evaluation)하게 된다.
도 2의 (a)는 입력된 4개의 패스(path) 질의에 대한 예제이다. 4개의 질의는 각각 3개의 연속적인 조인 연산자(Join Operator)를 가지고 있으며, 조인 조건은 이러한 조인에 참여하는 각 소스 스트림의 속성을 나열하고 있다.
도 2의 (b)는 등록된 4개의 연속 질의를 그래프화한 것으로, 각 질의의 조인 연산에 참여하는 소스스트림(Source Stream)을 노드(Node)로 표현하였으며, 각 노드들을 연결하는 모서리(edge)를 조인 연산에 참여하는 소스스트림의 속성(Attribute)으로 표현하였다. 본 발명의 실시예에서는 위와 같은 예제로 입력된 4개의 질의를 기반으로, 조인 연산자 집합을 찾기 위해 각 질의의 최소 구성요소인 조인 연산자(Join Operator)를 기준으로 파싱(parsing)을 수행하게 된다.
하나의 조인 연산자를 구성하기 위해서는 다음 표 1과 같은, 소스 스트림(Source Stream)에 관한 정보와 각 소스 스트림의 조인속성(Join Attribute)에 관한 정보가 필요하다.
조인 연산자 구성요소
타입 구성요소 설명(Description)


소스
스트림
왼편 나머지 소스 스트림(LOS) 동일한 질의 내의 왼편 조인 연산의 오른편 소스 스트림
왼편 소스 스트림(LS) 조인 연산에 참여하는 왼편 소스 스트림
오른편 소스 스트림(RS) 조인 연산에 참여하는 오른편 소스 스트림
오른편 나머지 소스 스트림(ROS) 동일한 질의 내의 오른편 조인 연산의 왼편 소스 스트림


조인
속성


왼편 나머지 조인 속성(LOA) 동일한 질의 내의 왼편 조인 연산의 오른편 소스 스트림의 조인 속성
왼편 조인 속성(LA) 조인 연산에 참여하는 왼편 소스 스트림의 조인 속성
오른편 조인 속성(RA) 조인 연산에 참여하는 오른편 소스 스트림의 조인 속성
오른편 나머지 조인 속성(ROA) 동일한 질의 내의 오르편 조인 연산의 왼편 소스 스트림의 조인 속성
즉, 하나의 조인 연산에 참여하는 4개의 소스 스트림(Left Other source stream, Left source stream, Right source stream, Right Other source stream)에 관한 정보와 조인연산자를 기준으로 왼쪽 소스스트림의 조인 속성(Left Join Attribute), 오른쪽 소스 스트림의 조인속성(Right Join Attribute) 그리고 해당 소스 스트림이 동일한 질의 내에 다른 조인 연산에 참여할 경우, 각각의 소스 스트림에서 다른 조인 연산에 참여하는 조인 속성(Left Other Join Attribute, Right Other Join Attribute)에 관한 정보 이렇게 총 8가지의 정보가 개별 질의를 파싱하면서 하나의 조인 연산자로 구성된다. 이후 구성된 조인 연산자가 다른 질의에도 존재할 경우, 동일한 모든 조인 연산자를 카운트하여 최종적으로 포함되는 질의 수를 입력하게 된다.
도 2의 (c)는 입력된 개별 질의를 파싱하여 구성된 조인 연산자 중 2개 이상의 질의에 나타나는 조인 연산자를 모아 '레벨 1의 조인 연산자 집합(Join Operator Set)'로 구성한 결과이다. 이는 적어도 2개 이상의 질의에 조인 연산자가 존재해야만 서로 다른 질의에서 공유가 가능하기 때문이다. 따라서, 이러한 조인 연산자를 레벨 1 조인 연산자 집합으로 지정함으로써, 이후 연결 가능한 조인 연산자 집합을 찾는 베이스(base)로 활용된다.
1.2 조인 연산자 집합 링킹
레벨 1 조인 연산자 집합을 기반으로 등록된 여러 질의들 중에서 좀더 큰 조인 연산자 집합을 찾기 위한 작업이 진행된다. 더 큰 조인 연산자 집합이란 레벨 1 조인 연산자 집합보다 더 많은 수의 조인 연산자를 가진 조인 연산자 집합을 의미한다. 이러한 더 큰 조인 연산자 집합을 찾는 과정이 조인 연산자 집합 연결(Linking)과정이다. 우선, 하나 이상의 조인 연산자를 가질 수 있는 조인 연산자 집합을 연결하기 위해 다음과 같이 3가지 타입의 조인 연산자 집합을 정의한다.
정의1. 조인 연산자 집합 타입(Join Operator Set Type)
(a) 접두(Prefix) 조인 연산자 집합
접두 조인 연산자 집합은 하나 이상의 조인 연산자를 가진 조인 연산자 집합 중 가장 왼편 조인 연산자가 왼편 나머지 조인속성(Left Other Join Attribute)이 없을 경우, 해당 조인 연산자 집합을 접두 조인 연산자 집합이라 정의한다.
(b) 중개(intermediation) 조인 연산자 집합
접미 조인 연산자 집합은 속한 모든 조인 연산자의 모든 구성요소가 있을 경우, 해당 조인 연산자 집합을 중개 연산자라 정의한다.
(c) 접미(Postfix) 조인 연산자 집합
접미 조인 연산자 집합은 하나 이상의 조인 연산자를 가진 조인 연산자 집합 중 가장 오른편 조인 연산자가 오른편 나머지 조인속성(Left Other Join Attribute)이 없을 경우, 해당 조인 연산자 집합을 접미 조인 연산자 집합이라 정의한다.
도 2의 (c)에서 첫 번째 연산자가 접두 조인 연산자 집합, 두 번째 연산자가 중개 조인 연산자 집합, 세 번째 연산자가 접미 조인 연산자 집합의 예이다.
질의의 파싱 과정 후 생성된 레벨1의 조인 연산자 집합을 기반으로, 각 연산자의 타입에 따라 하위레벨의 조인 연산자 집합을 연결하여 공유 가능한 상위 레벨의 조인 연산자 집합을 생성한다.
레벨 i 의 조인 연산자 집합에서 레벨 i+1 의 조인 연산자 집합이 되기 위해서는 각 조인 연산자 집합의 타입에 따라 i-1 개의 조인 연산자의 각 구성요소를 비교한 후 해당 조인 연산자 집합이 실제 쿼리에 2개 이상 존재할 경우, i+1 레벨의 조인 연산자 집합으로 등록하게 된다. 이때, 레벨 1의 경우 비교해야 할 조인 연산자는 0 이므로, 조인 연산자의 모든 구성요소가 아닌 각 연산자의 타입 별로 일부분의 조인 연산자의 구성요소를 비교하게 된다.
예를 들어, 도 2의 (c)와 같이 레벨 1의 조인 연산자 집합이 주어 졌을 경우, 도 3과 같은 조인 연산자의 비교 과정을 거치게 된다. 도 3은 조인 연산자 집합 연결 과정을 나타내는 도면이다.
도 3의 조인 연산자 집합 연결 과정에서는 레벨 1의 조인 연산자 집합 리스트 중 접두(prefix) 조인 연산자 집합과 중개(intermediation) 조인 연산자 집합을 선택하여 레벨 2의 조인 연산자 집합을 생성하는 과정을 도식화하였다.
레벨 1의 조인 연산자 집합은 비교해야 할 조인 연산자의 수는 0이지만, 일부 조인 연산자의 구성요소는 비교해야 연결할 수 있다. 즉, 도 3과 같이 접두 조인 연산자 집합의 RS(S2)와 ROS(S3)가 각각 중개 조인 연산자 집합의 LOS(S2), LS(S3)와 같아야 하며, 접두 조인 연산자 집합의 RA(a1)과 ROA(a2)가 각각 중개 조인 연산자 집합의 LOA(a1), LA(a2)와 같다면 두 조인 연산자 집합은 연결 가능하다고 판단되어 레벨 2의 조인 연산자 집합으로 생성되는 것이다.
도 4는 좀더 상세한 단계별로 조인 연산자 집합 연결과정에 대한 알고리즘을 나타낸다.
조인 연산자 집합 연결 알고리즘(Find_JOS)에서는 우선, 레벨 1의 조인 연산자 집합 리스트에서 1가지 조인 연산자 집합을 선택(라인 1-4)하여 연결 가능성을 평가하게 된다. 연결 가능성을 평가하는 함수 (Find_LinkableJOS)에서는 선택된 조인 연산자 집합과 이와 겹치지 않는 같은 레벨의 다른 조인 연산자 집합을 선택하여 선택된 조인 연산자 집합의 3가지 타입에 따라 해당 조인 연산자 집합이 가진 조인 연산자의 수대로 비교 연산 후 연결 가능성을 최종 평가한다.
접두 공유 연산자의 링킹을 수행하는 함수(LinkPrefixJOS)는 선택된 연산자의 타입이 접두 연산자의 경우, 상대 연산자의 타입이 중개 연산자일 경우에만 연결 가능성을 평가할 수 있으며, 해당 조인 연산자 집합이 가진 연속적인 조인 연산자 중 최초 조인 연산자를 제외한 나머지 조인 연산자들과 중개 연산자의 마지막 조인 연산자를 제외한 나머지 조인 연산자들을 비교함으로써, 이들 조인 연산자가 모두 일치할 경우, 다음 레벨의 조인 연산자 리스트(SL i+1 )에 두 가지의 조인 연산자 집합을 합친 새로운 조인 연산자 집합을 등록하게 된다. 이 외의 타입에 대한 조인 연산자 집합 생성 함수 역시 동일한 방식으로 동작한다.
1.3 조인 연산자 집합 선택 및 그룹화
공유 레벨 연결(Linking) 과정을 통해 최종적으로 공유 가능한 모든 조인 연산자 집합(Join Operator Set)를 구성한 후, 모든 조인 연산자 집합 중에서 동시에 실행 가능한 조인 연산자 집합을 선택하여 실행 가능한 질의들을 그룹화(Grouping)한다.
우선, 실행 가능한 조인 연산자 집합을 선택하기 위해 조인 연산자 집합의 선택 기준인 공유율(Sharing rate)을 다음과 같이 정의한다.
정의2. 조인 연산자 집합 공유율(Sharing rate)
(a) 절대 공유율(Absolute Sharing Rate) : 조인 연산자 집합(JOSi)의 절대 공유율(ASR)은 해당 조인 연산자 집합이 속한 질의의 수(count)를 전체 질의 수로 나눈 값으로 정의한다. 식은 다음과 같이 정의 된다.
Figure 112011029677917-pat00004
(b) 상대 공유율(Relative Sharing Rate) : 조인 연산자 집합(JOSi)의 상대 공유율(RSR)은 해당 조인 연산자 집합이 속한 질의의 절대 공유율에 해당 조인 연산자 집합이 가진 조인 연산자의 수(JCnt)를 일정 비율(alpha)로 반영한 집계 값을 전체 질의 집계 값으로 나눈 값으로 정의한다. 식은 다음과 같이 정의 된다.
Figure 112011029677917-pat00005
동시에 실행 가능한 조인 연산자 집합을 선택하기 위하여, 위의 정의에 따라 모든 레벨의 조인 연산자 집합의 절대 공유율 혹은 상대 공유율을 기준으로 조인 연산자 집합들을 정렬하게 된다.
도 5는 도 2의 예제로부터 생성 가능한 모든 조인 연산자 집합을 연결(Linking) 후, 상대 공유율을 기반으로 정렬한 결과이다.
정렬된 조인 연산자 집합 중 상대 공유율 또는 절대 공유율이 최대값을 가지는 조인 연산자 집합을 선택하여, 다른 조인 연산자 집합들과 동시 실행가능한지 판별하게 된다. 또한, 선택된 조인 연산자 집합과 동시 실행 가능한 조인 연산자 집합을 하나의 그룹으로 묶어 동시 실행 가능하지 않은 다른 연산자들과 분류하게 된다. 도 6은 상세한 과정의 상대 공유율 기반 조인 연산자 집합 선택 및 그룹화 알고리즘을 나타낸다.
상대 공유율이 최대값을 가진 조인 연산자 집합을 하나의 그룹으로 만들어 다른 조인 연산자 집합을 비교하게 될 경우, 우선 두 조인 연산자 집합이 겹치는지(overlap) 판별하게 된다(라인 4-12). 두 조인 연산자 집합이 겹친다는 의미는 적어도 하나 이상의 동일한 공유연산자는 가지느냐를 판별하는 것이다. 만일 두 조인 연산자 집합이 겹치지 않는다면 하나의 그룹에 할당하게 되지만, 그렇지 않을 경우 세 가지 경우로 나누어 다시 분류하게 된다(라인 15-23).
겹치는 두 연산자에 있어서 두 연산자가 포함관계(즉, 한 조인 연산자 집합의 모든 조인 연산자가 상대방 공유 오페레이터에 포함될 경우)일 경우에는 더 큰 연산자가 작은 연산자를 자식 연산자로 소유하게 된다(라인 16-17).
또 다른 경우로는, 겹치는 두 연산자가 포함되는 질의들이 겹치게 되면(즉, 적어도 하나의 질의에 두 조인 연산자 집합이 동시에 속할 경우) 두 조인 연산자 집합 중 더 큰 상대 공유율을 가지게되는 연산자로 해당 조인 연산자 집합을 대체하게 된다(라인 18-19). 만일, 질의들이 겹치지 않을 경우에는 새로운 조인 연산자 집합 그룹을 만들어 선택된 조인 연산자 집합과 비교했던 연산자를 해당 그룹에 할당하게 된다.(라인 20-23)
절대 공유율 기반 조인 연산자 집합 알고리즘 역시 상대 공유율 기반 조인 연산자 집합 선택 알고리즘과 동일한 방식으로 구성된다.
도 7은 상대, 절대 공유율 기반 그룹 구성 결과를 나타낸다. 도 7의 (a)는 도 2의 예제로부터 상대 공유율 기반 연산자를 선택하여 그룹화한 결과이다. 도 7의 (a)는 소스 스트림 S1, S2, S3 를 포함하는 조인 연산자 집합을 상대 공유율 기반으로 선택하여 해당 조인 연산자 집합에 속한 3개의 질의를 하나의 그룹으로 묶고 공유되지 않는 조인 연산을 하나의 연산자로 구성하여 나머지 질의를 다른 하나의 그룹으로 분류한 결과이다.
도 7의 (b)는 S2, S3를 포함하는 절대 공유율 기반 공유연산자를 선택하여 전체 4개의 질의를 하나의 그룹으로 구성한 결과이다.
상대 혹은 절대 공유율을 기반으로 선택된 조인 연산자 집합을 기반으로 개별 그룹의 조인 연산자 집합을 한번만 실행하여 결과적으로, 여러 질의에 걸쳐 불필요한 조인 연산을 최소화 할 수 있게 된다.
다음 장에서는, 전체 질의에 걸쳐 선택된 조인 연산자 집합을 기반으로 개별 질의의 중간 결과를 공유 및 효율적으로 처리하는 방법과 다중 패스 조인 질의(Multi-way path Join Query)를 처리하는 방법에 관하여 설명한다.
2. 시놉시스 구조체
본 발명의 일 실시예에 따른 다중 조인 질의 처리 방법은 조인 연산자 집합 기반 다중 조인 질의를 처리하기 위해 배치(Batch) 기반의 슬라이딩 윈도우 조인 처리기법과 배열(Matrix) 기반의 시놉시스(Synopsis) 구조체를 사용한다.
배치 처리 방법은 데이터 스트림 소스로부터 입력되는 데이터를 일정기간 동안 모아두었다가 한번에 연속질의를 처리하는 방법이다. 배치 처리 방법은 교통량 분석 등과 같은 주기적인 모니터링이 필요한 응용에서 주로 사용된다. 이 방법은 입력된 데이터를 모았다가 한꺼번에 처리하기 때문에 매번 질의 처리를 수행하는 즉각적인 처리 방법에 비해서 단위 시간당 더 많은 데이터에 대해서 연속 질의를 수행할 수 있다는 장점이 있다.
배열(matrix) 기반의 시놉시스는 다중 연속질의의 선택 조건을 효율적으로 처리하기 위한 벡터 기반의 시놉시스[18]를 확장한 개념이다. 벡터 기반 시놉시스는 다중 연속질의 상에서 선택 조건에 포함된 소스 스트림(Source Stream)의 속성 도메인(Domain)을 겹치지 않는 가변 크기 영역으로 나눈다. 벡터 시놉시스의 각 엔트리는 가변 크기의 영역과 연관되어 해당 영역이 어떠한 질의를 만족하는지에 대한 정보를 유지한다. 이러한 벡터 기반의 시놉시스의 개념을 활용하여 다중 조인 질의를 처리하기 위해 배열기반 시놉시스를 구성하는 방법을 다음 절에서 소개한다.
2.1 관련 용어(Preliminary)
본 명세서에서 사용하는 용어 및 정의는 다음과 같다.
다음과 같이 N개의 소스(Source) 스트림에 대하여 조인 조건 S 1 .a 1 = S 2 .a 1 , S 2 .a 2 = S 3 .a 2 … and S n-1 .a n-1 = S n .a n-1 을 갖는 다중 조인(Multi way join)질의 Q 가 주어졌을 때, 아래와 같은 조건이 만족할 경우에만 소스 스트림 S i 의 투플 t i 는 질의 Q를 만족하는 투플이라고 할 수 있다.
a) 형제 투플(buddy tuple)
2개의 데이터 스트림 RS 에 대해 조인 조건 R.a=S.b 이 주어 졌을 때, R 의 투플 x 와 조인 조건에 상응하는 스트림 S 에 투플 y 가 존재할 경우를 지칭(즉, x.a=y.b 역도 또한 같음)한다.
b) 투플링 조건
N개의 소스(Source) 스트림에 대하여 조인 조건 S 1 .a 1 = S 2 .a 1 , S 2 .a 2 = S 3 .a 2 … and S n-1 .a n-1 = S n .a n-1 을 갖는 다중 조인(Multi way join) 질의 Q 가 주어졌을 때, 2개의 서로 다른 조인 조건 S i-1 .a i-1 = S i .a i-1 and S i .a i = S i+1 .a i 을 갖는 소스 스트림 S i 의 투플에 대하여 적어도 1개 이상의 피연산자 스트림 S i-1 S i+1 에 동시에 형제 투플이 존재할 경우 투플링 조건을 만족한다.
1) 소스 스트림 S i 와 조인되는 모든 스트림에 대하여 적어도 1개의 형제 투플이 존재해야 한다.
2) 투플 t i 는 투플링 조건을 만족해야 한다.
c) 배열 기반 시놉시스(Matrix-based Synopsis)
다중 조인 질의 연산을 처리하기 위해 등록된 모든 연속 질의의 소스 스트림에 대해 배열 기반 구조체가 생성된다. 하나의 조인 속성 a 만을 가지고 있는 소스 스트림 S i 에 해당 소스 스트림으로 들어오는 투플에 대한 형제 투플을 효율적으로 검사하기 위해 1ⅹm 크기의 배열 기반 구조체 M i 가 생성된다. 소스 스트림 S i 의 투플을 해당 스트림의 배열 기반 구조체 M i 의 개별 엔트리에 할당하기 위해서는, 투플의 조인 속성 k 를 키(key) 값으로 하고 m 개의 버켓을 가지는 해쉬(hash) 함수 h(k) 를 사용해야 한다. 즉, S i 의 투플 xM i h(x.a) 번째 엔트리에 할당된다.
위와 동일한 방식으로 소스 스트림 S j 가 두 개의 조인 속성 'a 1 ' 와 'a 2 ' 을 가지게 될 경우, m 1 ⅹm 2 크기를 가지는 배열 기반 시놉시스 M j 가 생성된다. 서로 다른 조인 속성 2개를 가지는 소스 스트림 S j 의 투플을 해당 스트림의 배열 기반 구조체 M j 에 할당하기 위해서는 각각 m 1 m 2 크기의 버켓을 가지는 해쉬 함수 h 1 (k)h 2 (k) 를 사용한다. 즉, 소스 스트림 S j 의 투플 y 가 해당 스트림의 배열 기반 구초제 M j [ h 1 (y.a1), h 2 (y.a2) ] 에 해당하는 엔트리에 할당된다. 여기서 사용된 조인 속성 a 1 을 행 속성, a 2 을 열 속성 시놉시스라고 칭한다. 만일 하나의 소스 스트림에서 3개 혹은 그 이상의 조인 속성이 사용된다면, 다중 키에 의한 해쉬 함수를 사용할 수 있다.
도 8은 다음과 같은 조인 조건 R.a=S.b and S.c=T.d 이 주어졌을 때 배열 기반 시놉시스가 어떻게 구성되는지에 대한 개념적인 내용을 도식화한 것이다.
도 8을 참조하면, 2개의 조인 속성에 대하여 각각 m, n 의 버킷 크기를 갖는 해쉬 함수 h 1 (k), h 2 (k) 를 가지고 1×m, m×n, n×1 크기를 가진 배열 기반 시놉시스가 소스 스트림 R, S, T 별로 생성된다. 따라서, 소스 스트림 S 의 투플 s 1 은 해당하는 스트림의 시놉시스 S의 S[h1(s1.B), h2(s1.C)] 엔트리에 할당이 된다.
d) 질의 방정식(Query Equation)
배열 기반 시놉시스를 바탕으로 다수의 다중 조인 질의를 처리하기 위해서는, 배열 기반 시놉시스의 연산을 통한 소스 스트림 내의 투플들의 모든 조합을 생성하여 조인 질의의 조인 조건을 만족하는지를 검사해야 한다. 이를 위해 배열 기반 시놉시스들의 곱으로 표현되는 질의 방정식(Query Equation)을 사용한다.
N개의 소스(Source) 스트림에 대하여 조인 조건 S 1 .a 1 = S 2 .a 1 , S 2 .a 2 = S 3 .a 2 … and S n-1 .a n-1 =S n .a n-1 을 갖는 다중 조인(Multi way join)질의 Q 가 주어졌을 경우, 각 소스 스트림에 대한 배열 기반 시놉시스를 MBSi 라 표기할 때, 질의 방정식(Query Equation)은 다음과 같이 질의 내의 조인 조건과 동일한 순서로, 연속적인 배열 기반 시놉시스 들의 연산으로 표현한다.
Figure 112011029677917-pat00006
2.2 요약 리스트(Condensation-list)를 포함하는 배열 기반 시놉시스
배열 기반 시놉시스의 개별 엔트리에는 해당 소스 스트림의 투플 자체를 할당하는 것은 비효율적이다. 그 이유는 동일한 투플을 소스 스트림에서 시놉시스로 복사하게 되므로 공간을 낭비하는 비효율을 초래하기 때문이다. 따라서, 실제 배열 기반 시놉시스 엔트리에 할당 되는 것은 해당 스트림의 투플 자체가 아니라 투플에 대한 포인터(pointer)를 할당하게 된다.
또한, 2개의 조인 속성을 가진 배열 기반 시놉시스에서 해당 시놉시스를 구성하는 2개의 해쉬 함수의 버킷 사이즈가 증가함에 따라 시놉시스 구성을 위한 공간 역시 증가하게 된다. 예를 들어, 스트림 S 를 구성하는 해쉬 함수 h 1 (k), h 2 (k) 의 공간이 각각 m, n 에서 m+a, n+b 만큼 증가하게 될 경우 전체 해쉬 버켓을 위한 할당 공간은 m×n 에서 mb×na+ab 만큼의 공간이 증가하게 된다. 즉, 행과 열이 같은 배열기반의 시놉시스라고 가정할 경우, 전체 해쉬 버켓을 위한 할당공간은 지수(exponential)곱으로 증가하게 되는 문제가 발생하며 해당 시놉시스 버킷의 밀도가 희박(sparse)할 경우 불필요한 공간 역시 늘어나는 문제가 발생한다. 이것은 시놉시스 구성을 위한 공간 할당 시에 두 개의 해쉬 함수 결과 값에 대한 모든 조합을 위한 공간을 할당하기 때문이다. 이러한 문제를 해결하기 위해 다음과 같은 시놉시스 요약 리스트(정의3)가 필요하다.
정의 3. 시놉시스 요약 리스트(Synopsis Condensation-list)
배열 기반의 시놉시스에서 모든 속성값의 조합에 대한 버켓을 미리 생성해 놓는 것이 아닌, 소스 스트림에 존재하는 실제 투플 값과 연관된 포인터들을 하나의 노드(Condensation-list Node)로 구성하여, 배열 기반 시놉시스의 행 또는 열 별로 연결 리스트(Linked-list)로 구성한 리스트를 시놉시스 요약 리스트(Synopsis Condensation-list)라 지칭하며, 다음과 같이 2가지 타입의 요약리스트로 정의한다.
(1) 행단위 시놉시스 요약리스트(SCL_Ri) : 행단위 시놉시스 요약리스트는 배열 기반 시놉시스에서의 행속성을 인덱스( index : i )를 가지며 동일한 행속성을 가진 투플 포인터들 중에서 열속성(column)이 같은 투플 포인터들을 하나의 노드(Condensation-list Node)로 구성하고 해당 열속성을 노드의 인덱스로 할당하여 인덱스를 기반으로 정렬된 형태의 리스트로 정의한다.
(2) 열단위 시놉시스 요약리스트(SCL_Cj) :
열단위 시놉시스 요약리스트는 배열 기반 시놉시스에서의 열속성을 인덱스( index : j )를 가지며 동일한 열속성을 가진 투플 포인터들 중에서 행속성(row)이 같은 투플 포인터들을 하나의 노드(Condensation-list Node)로 구성하고 해당 행속성을 노드의 인덱스로 할당하여 인덱스를 기반으로 정렬된 형태의 리스트로 정의한다.
도 9는 배열 기반 시놉시스 예제를 나타낸다. 예를 들어, 도 9의 (a)와 같이 4개의 소스 스트림( Customer Cust, Account Acct, Stock Stock, Branch Bran )에 대한 질의가 주어 졌을 때, 각 소스 스트림의 조인 속성에 대한 도메인(Domain)이 각각 { C01, C02, … C08 }, { S01, S02, … S10 }, { Austin, Downtown, Mesa, Redmond }이며, 해당 도메인이 할당 될 수 있는 버킷의 크기가 각각 4, 5, 3 이라고 가정한다. 도 9의 (b)와 같이 현재 윈도우 내의 소스 스트림 데이터가 나타나 있을 경우( 윈도우 크기는 5 ), 도 9의 (c)의 해쉬 함수를 사용하여 버킷을 할당한 배열 기반 시놉시스는 각각 크기 1×4, 4×5, 5×3, 3×1 로 도 9의 (d)와 같이 구성된다.
배열 기반 시놉시스(MBS)에 삽입되어 있는 r i , s i , t i , u i 는 실제 소스 스스림 데이터에 대한 포인터를 의미한다. 이러한 배열 기반 시놉시스에서는 시놉시스 행과 열 속성에 대한 버켓 값의 모든 조합만큼의 실제 버킷의 공간을 할당하기 때문에 버킷의 낭비가 크게 된다. 따라서, 이러한 공간의 낭비를 줄이고 이후 시놉시스 간의 조인 연산처리를 위한 효율을 높이기 위해, 도 10과 같은 시놉시스 요약 리스트를 구성하게 된다.
정의 3의 시놉시스 요약리스트(SCL)에 따라, 시놉시스 요약리스트는 행단위, 열단위의 2가지 타입이 존재한다. 행단위 시놉시스 요약리스트(SCL_R)은 도 10의 Cust SCL과 같이, 배열 기반 시놉시스(MBS)에서 행(row) 속성이 같은 투플 포인터들을 하나의 연결 리스트로 구성한 리스트이며, 열단위 시놉시스 요약리스트(SCL_C)는 도 10의 Acct, Stock, Bran SCL과 같이 배열 기반 시놉시스에서 열(column) 속성이 같은 투플 포인터들을 하나의 연결리스트로 구성한 리스트이다.
2.3 질의 내 시놉시스 요약리스트 연산(Query Operator Formulation )
2.2 절에서 구성된 시놉시스 요약 리스트를 포함하는 배열 기반 시놉시스를 바탕으로 다수의 다중 조인 질의를 처리하기 위해서, 시놉시스 요약 리스트의 연산으로 이루어진 배열 기반 시놉시스들의 곱으로 표현되는 질의 방정식(Query Equation)에 관하여 설명하면 다음과 같다.
N개의 소스(Source) 스트림에 대하여 조인 조건 S 1 .a 1 = S 2 .a 1 , S 2 .a 2 = S 3 .a 2 … and S n-1 .a n-1 = S n .a n-1 을 갖는 다중 조인(Multi way join)질의 Q 가 주어졌을 경우, 질의 방정식(Query Equation)내의 배열 기반 시놉시스 곱은 다음과 같이 표현될 수 있다.
1) 배열 기반 시놉시스의 곱 '×'
(a) i = 1 : m 1 ×m 2 의 크기를 갖는 소스 스트림 S1에 대한 배열기반 시놉시스 MBS1과 m 2 ×m 3 의 크기를 갖는 소스 스트림 S2에 대한 배열 기반 시놉시스 MBS2의 곱이 주어졌을 때, 두 배열 기반 시놉시스 각각의 소스 스트림의 조인연산(S 1 . a 1 S 2 . a 1 )의 결과를 저장하는 시놉시스 요약 리스트(
Figure 112011029677917-pat00008
)는 다음과 같이 정의 할 수 있다.
Figure 112011029677917-pat00009
(b) 2 ≤ i ≤ n : E(Q)에서 i - 1 번째까지의 조인 연산을 위한 연속적인 시놉시스 곱 연산 후, m 1 행 크기만큼의 중간결과를 가지는 시놉시스 요약리스트(
Figure 112011029677917-pat00010
)와 m i ×m i+1 크기를 가지는 소스 스트림 S i 에 대한 배열기반 시놉시스 MBSi가 주어졌을 경우, i 번째 조인을 통한 최종 결과를 저장하는 시놉시스 요약리스트(
Figure 112011029677917-pat00011
)는 다음과 같이 정의할 수 있다.
Figure 112011029677917-pat00012
2) 시놉시스 요약 리스트 관계 연산자 '
Figure 112011029677917-pat00013
'
배열 기반 시놉시스 곱에서 시놉시스 요약리스트 관계 연산자는 서로 다른 타입의 두 요약 리스트를 비교하여 하나의 새로운 행단위 시놉시스 요약리스트(SCL_R)를 구성하는 연산을 수행하게 된다.
행단위 시놉시스 요약리스트
Figure 112011029677917-pat00014
과 열단위 시놉시스 요약리스트
Figure 112011029677917-pat00015
에서 각각 r 번째, c 번째 투플 포인터 노드(node)를 각각
Figure 112011029677917-pat00016
,
Figure 112011029677917-pat00017
,
Figure 112011029677917-pat00018
,
Figure 112011029677917-pat00019
라 표기하고 두 시놉시스 리스트 내의 노드 인덱스들을 각각 순차적으로 증가시켜가면서 노드의 인덱스를 비교하는 연산을 수행하는 도중 만일, 두 시놉시스 요약리스트 내에 동일한 인덱스를 가진 노드가 존재하게 되면, 두 리스트 노드의 결과로서 하나의 결과 행단위 시놉시스 요략 리스트 노드
Figure 112011029677917-pat00020
가 완성된다. 자세한 요약 리스트 연산자의 수행 과정은 다음 장에서 다루도록 하겠다.
도 11은 질의 방정식을 나타낸다. 도 2 (a)의 질의를 질의 방정식으로 변환하게 되면, 도 11의 (a)와 같은 공유 기반 시놉시스의 곱으로 표현되는 4개의 질의 방정식이 된다. 이러한 질의 방정식을 1.3절에서 소개된 상대 공유율 기반 조인 연산자 집합을 찾는 과정을 통해 생성된 조인 연산자 집합으로 배열 기반 시놉시스를 변환하게 되면 도 11의 (b)와 같은 연산자 관계식이 완성된다.
이러한 질의 방정식은 하나의 조인 연산자 집합 O1의 배열 기반 시놉시스 연산을 수행하고 나머지 동일한 조인 연산자 집합을 소유하는 다른 질의에 대해서는 중복되는 시놉시스 연산을 수행하지 않고, 조인 연산자 집합에 포함되는 배열 기반 시놉시스 연산의 중간 결과를 공유함으로써 결과적으로, 조인 연산의 중복을 제거한 효율적인 다중 조인 질의처리가 가능하게 된다.
3. 시놉시스 기반 다중 조인 질의 처리
하나 이상의 등록된 질의에 대해서 각 질의 내의 3개 이상의 데이터 스트림에 대한 조인이 있을 경우 해당 질의를 다중 조인(Multi way Join) 질의라고 한다. 본 발명에서는 데이터 스트림 상에서의 가장 일반적인 조인 연산을 처리하기 위한 처리 기법인 배치(batch)기반의 슬라이딩 윈도우 조인(sliding window join) [15, 31]처리 기법을 사용한다. 슬라이딩 윈도우 조인은 새로 입력된 데이터 스트림 상의 투플들과 조인 관계에 있는 상대 데이터 스트림의 슬라이딩 윈도우에 속한 투플들 간의 조인을 수행하며, 검사(probe), 삽입(insert), 삭제(invalidation)과정으로 이루어진다.
예를 들어, 데이터 스트림 S1와 S2에 대한 슬라이딩 윈도우 조인 연산이 이루어질 경우, 데이터스트림 S1에 새로운 투플이 t1이 삽입(insert)될 때마다, 조인 연산을 위한 상대 데이터 스트림 S2 의 슬라이딩 윈도우 내의 모든 투플들을 대상으로 조인 조건을 만족하는 투플 t2 가 존재하는지에 대해 검사(probe)하게 된다. 만일, 조인 조건을 만족하는 투플 t2 가 슬라이딩 윈도우 내에 존재할 경우, 조인 연산에 대한 결과로서, 해당 투플 t1과 t2를 내보내게 된다. 이 후, S1에 대한 슬라이딩 윈도우 조건을 검사하여 해당 윈도우 조건을 만족하는 않는 투플을 S1의 윈도우 내에서 삭제(invalidation)하게 된다. 이러한 과정은 대칭적으로 S2에서도 이루어지게 되며, 이러한 슬라이딩 윈도우 조인 처리기법의 수행단위로서 일정크기의 투플들을 모아 처리하는 방식을 배치(batch)기반 처리 방식이라 지칭한다.
이번 장에서는 본 발명의 일 실시예에 따른 시놉시스 공유 기반 다중 조인 질의 처리를 수행하기 위해 2장에서 살펴보았던 조인 연산자 집합을 활용한 개별 질의들의 질의 방정식을 기반으로, 해당 질의 방정식을 수행하는 첫 번째 단계인 시놉시스 계산(enumeration)과 시놉시스 공유에 관한 방법과, 계산된 시놉시스를 기반으로 최종적인 조인 결과를 처리하는 투플 연결(concatenation)에 대한 상세한 방법에 관하여 설명한다.
3.1 시놉시스 계산 및 공유(Synopsis Enumeration and Sharing)
2장에서 살펴보았던 조인 연산자 집합을 활용한 개별 질의 방정식 수행의 가장 기본 단위는 시놉시스 계산(Enumeration) 과정이다. 시놉시스 계산은 질의 방정식의 시놉시스 곱연산을 수행하는 과정이며, 본 발명에서 제안하는 조인 연산의 효율적인 처리 기법중의 하나인 시놉시스 곱연산에서, 배치 기반의 슬라이딩 윈도우 조인 처리 기법을 사용하기 위해서는 서로 다른 2가지 타입의 투플 집합을 우선 고려해야 한다.
서로 다른 2가지 타입의 투플 집합 중 하나는 다중 조인 연산에 참여하는 소스 스트림에 새로 들어오는 투플의 집합인 배치(batch)이며, 다른 하나는 조인 연산에 대해 소스 스트림 내의 유효한 투플 집합인 슬라이딩 윈도우(window)이다. 이러한 2가지 타입의 투플 집합에 대한 정보를 배열 기반 시놉시스에 유지하기 위해 배열 기반 시놉시스 역시 2가지 타입으로 정의될 수 있다. 또한, 이에 더하여 전체 질의 내에서 공유 가능한 시놉시스 연산의 중간 결과정보를 유지하며 개별 단일 시놉시스와 구별되는 공유 시놉시스 타입을 다음 표 2와 같이 정리 할 수 있다.
시놉시스 타입
시놉시스 타입 설명(Description)
단일 배치 시놉시스(B) 투플 배치 정보를 유지하는 단일 배열기반 시놉시스
공유 배치 시놉시스(SB) 2개 이상의 단일 배치 시놉시스를 유지하는 공유 시놉시스
단일 윈도우 시놉시스(W) 투플 윈도우 정보를 유지하는 단일 배열 기반 시놉시스
공유 윈도우 시놉시스(SW) 2개 이상의 단일 윈도우 시놉시스를 유지하는 공유 시놉시스
조인 연산자 집합을 포함하는 도 11 (a)와 같은 질의 방정식들이 주어졌을 경우, 위의 표 2에서 정리된 내용을 바탕으로 개별 질의 방정식 수행을 위한 시놉시스 계산 과정에 대해 살펴보면 다음과 같다.
N개의 소스(Source) 스트림에 대하여 조인 조건 S 1 .a 1 = S 2 .a 1 , S 2 .a 2 = S 3 .a 2 … and S n-1 .a n-1 =S n .a n-1 을 갖는 다중 조인(Multi way join)질의 Q 에 대해서 질의 내의 소스 스트림 S i 에 새로운 배치 단위의 투플
Figure 112011029677917-pat00021
가 들어올 경우, 해당 질의에 대한 방정식은 다음과 같이 표현 된다.
Figure 112011029677917-pat00022
이를 바탕으로 질의 방정식을 수행을 위한 시놉시스 계산 과정은 2가지의 경우로 나눌 수 있다.
1) 새로운 배치가 조인 연산자 집합에 속하는 소스 스트림의 배치일 경우
도 12는 배치 시놉시스를 반영한 질의 방정식을 나타낸다. 도 11 (b)의 질의 방정식에서 새로운 배치가 조인 연산자 집합의 소스 스트림(S2)의 배치일 경우, 도 12의 (a)와 같이 각 시놉시스의 타입에 맞는 형태의 질의 방정식이 수행된다.
조인 연산자 집합 및 공유연산자가 없는 질의 방정식( E(O1),E(Q4) )은 기존의 단일 시놉시스(B,W)를 가지고 질의 방정식이 구성되며, 해당 조인 연산자 집합을 포함하는 질의 방정식( E(Q1),E(Q2),E(Q3) )에서는 공유 시놉시스(SB, SW)를 가지고 질의 방정식이 구성된다.
E(Q1),E(Q2),E(Q3)에서는 공유 배치 시놉시스(SB)의 결과를 공유함으로써, 불필요한 시놉시스 계산의 중복을 최소화한다.
2) 새로운 배치가 조인 연산자 집합에 속하지 않는 소스 스트림의 배치일 경우
도 11 (b)의 질의 방정식에서 새로운 배치가 조인 연산자 집합의 소스 스트림 S4 및 S5 일 경우, 각각의 경우에 해당하는 질의 방정식은 도12 의 (b)와 (c)이다.
새로운 배치를 포함하지 않는 질의 방정식은 수행되지 않으며, 공유 윈도우 시놉시스(SW)가 한번 계산(enumeration)되면, 공유 윈도우에 새로운 배치가 들어오지 않은 이상 공유 윈도우 시놉시스(SW)를 서로 다른 질의 방정식에서 공유함으로써 이 역시 불필요한 시놉시스 계산의 중복을 최소화하게 된다.
이제까지는 본 발명의 일 실시예에서 시놉시스 공유를 통한 조인 연산의 중간결과를 최소화하는 방식에 대해서 살펴보았다. 다음은 실제 각 질의의 질의 방정식을 수행함에 있어 필요한 시놉시스의 곱연산을 실제 시놉시스 내의 요약리스트(SCL) 연산으로 실행하는 방법에 대해서 살펴보도록 하겠다.
예를 들어, 도 9 (a)의 질의를 기반으로 질의 방정식을 구성하면 다음과 같은 질의 방정식이 구성된다.
Figure 112011029677917-pat00023
위의 질의 방정식을 실제 수행함에 있어 배열 기반 시놉시스의 곱을 수행하는 것은 배열 기반 시놉시스 내의 요약리스트이다. 따라서, 질의 방정식을 요약 리스트 연산으로 변환하면 다음과 같다.
Figure 112011029677917-pat00024
위의 시놉시스 요약리스트에 관한 수식을 수행하기위한 과정은 다음과 같다. 도 13은 시놉시스 요약 리스트 연산 과정을 나타낸다.
(1) Cust 스트림의 행단위 요약리스트와 Acct 스트림의 열단위 요약리스트 연산을 수행한다(도 13 ①). 두 시놉시스 요약 리스트 연산은 행단위 시놉시스 요약리스트 노드의 인덱스(열속성)와 열단위 시놉시스 요약리스트 노드의 인덱스(행속성)를 순차적으로 비교해나가게 된다. 만일 일치하는 노드의 인덱스가 존재할 경우, 두 요약 리스트 노드가 가지고 있는 투플 포인터들을 합치게 되며, 이후 투플 연결(Concatenation)과정을 위해 비교해야 할 투플 포인터를 구분하기 위한 구분자(delimiter)를 노드내에 삽입하게 된다. 이 결과로 생성되는 시놉시스 요약리스트는 1행을 가진 행단위 시놉시스 요약리스트가 된다. 왜냐하면 두 배열기반 시놉시스의 결과(result)배열 시놉시스는 1행의 배열 시놉시스가 구성되기 때문이다.
(2)
Figure 112011029677917-pat00025
두 시놉시스 요약리스트 연산의 결과로 생성된 행단위 시놉시스 요약 리스트(
Figure 112011029677917-pat00026
)를 가지고 다음 시놉시스 요약리스트(
Figure 112011029677917-pat00027
)와 동일한 연산을 수행하게 된다(도 13 ②). 과정은 (1)과 마찬가지이며 만일, 시놉시스 요약리스트 비교연산에서 두개 이상의 노드의 인덱스가 동일할 경우에도 해당 노드들의 투플 포인터는 하나의 노드로 합쳐지지만 이후 투플 연결과정에서 투플 포인터 연결을 위한 범위를 구분하기 위해 동일한 인덱스를 가진 노드쌍의 투플 포인터를 결과 시놉시스 요약리스트의 노드로 삽입한 이후에도 역시 구분자를 삽입하게 된다.
(3) 동일한 시놉시스 요약리스트를 반복적으로 수행하여 최종적으로는 하나의 노드를 가진 행단위 시놉시스에 조인 가능한 투플 포인터들이 삽입되게 된다.(도13 ③)
3.2 지연된 투플 연결(Delayed Tuple Concatenation)
3.1 절에서 수행된 시놉시스 계산 및 공유 과정을 통하여 최종적으로 생성된 행단위 시놉시스 요약리스트의 노드 내 투플 포인터들을 대상으로 투플 연결(Concatenation)과정을 수행하게 된다. 투플 연결은 실제 질의의 최종 결과를 만들 수 있는 투플들을 연결하는 과정이기 때문에 지연된 투플 연결이라 칭하게 된다.
도 14는 지연된 투플 연결 과정을 나타내는 도면으로, 투플 연결의 결과로 4개의 투플을 생성하는 과정을 나타내고 있다. 3개의 소스 스트림(R,S,T)를 포함하는 노드에는 각각의 소스 스트림 별 투플 포인터와 해당 투플 포인터의 연결의 범위를 지정하는 구분자(delimiter)로 구성되어 있다. 3개의 소스 스트림에 대한 조인 연산의 결과를 얻기 위해서는 우선 2개의 소스 스트림에 관한 투플 포인터와 구분자들을 이용하여 실제 조인 결과를 생성하는 투플 포인터를 연결하게 된다.
도 14의 1번 과정에서는 소스 스트림 R과 S의 연결을 위한 과정을 나타낸다. 이 과정은 일반적인 조인 연산에서 가장 널리 사용되고 있는 중첩 루프 조인(Nested Loop Join)과 유사한 방식으로 진행된다. 본 발명의 일 실시예에서 투플 연결과정은 조인을 위한 두 스트림 중 왼쪽 스트림의 투플 포인터를 기준으로 오른쪽 스트림 내의 조인 가능한 투플들을 탐색하게 된다. 왼쪽 스트림의 투플 포인터가 오른쪽 스트림의 투플 포인터를 탐색하는 과정은 순차적으로 반복되며 구분자를 만날 때까지 진행된다. 실제로 두 투플 포인터를 이용하여 조인 조건을 만족하는 투플을 찾아내기 위해서는 해당 투플 포인터가 참조하고 있는 투플들의 조인 속성을 찾아내어 비교연산 후 동일한 조인 속성을 가지고 있을 경우 두 투플 포인터를 하나의 투플 포인터로 합치게 된다. 이때, 각 스트림의 투플 포인터를 구분하고 있는 구분자는 1개씩 사라지게 된다. 이와 같은 반복적인 투플 연결 과정을 통해 최종적으로 4개의 투플들이 다중 조인 질의에 대한 아웃풋으로 생성되게 된다.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
<참고 문헌>
[1]Abadi, D. J. Carney,D., Contintemel, U., Cherniack, M., Convey, C., Lee, S., Stonebraker, M., Tatbul, N., Zdonik, s. "Aurora: A New Model and Architecture for Data Stream Managerment", VLDB Journal, 2003
[2]S. Chandrasekaran et al. "TelegraphCQ: Continuous dataflow precessing for an uncertain world", CIDR, 2003
[3]Samuel Madden, Wei Hong, Joseph M. Hellerstein and Michael Franklin, TinyDB web page http://telegraph.cs.berkeley.edu/tinydb, 2007
[4]B. Babcock, B. Babu, S. Datar, M., Motwani, R. "Chain: Operator Scheduling for Memory Minimization in Data Stream Systems", SIGMOD, 2003
[5] Yin Yang, Dimitris Papadias "Just-In Time Processing of Continuous Queries", In Proc. Int. Conf. on Data Enginerring(ICDE), 2008
[6]Babu S. and Widom J.,"Continuous Queries Over Data Streams", SIGMOD Record archive volume 30, Issue 3, 2001
[7]S. Madden, M., A. shah, J. M. Hellerstein, and et al, "Continuously adaptive continuous queries over streams", In Proc. SIGMOD Conf., 2002
[8]S. Wang, E. Rundensteiner, S. ganguly, S.Bhatnagar, "State-Slice: New paradigm of Multi-query Optimization of Window-based Stream Queries", In Proc. Int. Conf. VLDB, 2006
[9] TIMOS K.SELLIS, "Multiple-Query Optimization", ACM Transactions on Database Systems, 1988
[10] S. Krishnamurthy M. J. Franklin, J. M. Hellerstein, and G. Jacobson, "The case for precision sharing", In VLDB, 2004
[11] J. Chen, et al., "NiagaraCQ: a scalable continuous query system. for Internet databases", In Proc. SIGMOD, 2000
[12] F. Tian et al. "Tuple routing strategies for distributed eddies", In VLDB.pp.333-344, 2003
[13] H.K. Park, W.S.Lee, "Adaptive Continuous Query Reoptimization over Data Streams", IEICE Transactions on Information and Systems E92.D(7), 1421-1428, 2009
[14] S. Babu, R. Motwani, K. munagala, "Adaptive Ordering of Pipelined Stream Filters", SIGMOD, 2004
[15] Lukasz Golab and M. Tamer Ozsu, "Processing sliding window multi-joins in continuous queries over data streams", In Proc. Int. Conf. on VLDB, 2003
[16] S.Viglas, Jeffrey F. Naughton, and J.Burger. "Maximizing the output rate of multi-way join queries over streaming information" In Proc. Int. Conf. on VLDB, 2002
[17] M.Stern, K.Bohm, E.Buchmann, "Processing Continuous Join Queries in Sensor Networks: a Filtering Approach", In SIGMOD, 2010.
[18] Hyun-Ho Lee, Eun-Won Yun, Won-Suk Lee "Attribute-based Evaluation of Multiple Continuous Queries for Filtering Incoming Tuples of a Data Stream" , Information Sciences, 2008
[19] Hyo-Sang Lim, Jae-Gil Lee, Min-jae Lee, Kyu-Young Whang "Continuous Query Processing in Data Streams Using Duality of Data and Queries", SIGMOD, 2006.
[20] stratis Viglas, Jeffey F. Naughton, Josef Burger, "Maximizing the output rate of multi-way join queries over streaming information sources", In Proc. Int. conf. on VLDB, 2002.
[21] Shivnath Babu, Kamesh Munagala, Jennifer Widom, and Rajeev Motwani, "Adaptive Caching for continuous Queries", In Proc. Int. conf. on Data Engineering(ICDE), 2005

Claims (10)

  1. 컴퓨터에 의해 수행되는 다중 조인 질의 처리 방법에 있어서,
    (a) 상기 컴퓨터가, 복수 개의 다중 조인 질의를 해석하여 2 이상의 다중 조인 질의에 공통적으로 나타나는 연속적인 조인 연산자의 집합인 조인 연산자 집합을 생성하는 단계;
    (b) 상기 컴퓨터가, 상기 생성된 조인 연산자 집합 중에서 특정 조인 연산자 집합을 선택하고, 상기 선택된 조인 연산자 집합과 동시 실행 가능한 조인 연산자 집합을 하나의 그룹으로 묶어, 상기 복수 개의 다중 조인 질의를 그룹화하는 단계;
    (c) 상기 컴퓨터가, 상기 다중 조인 질의의 각 소스 스트림에 대한 배열 기반 시놉시스의 곱으로 표현되는 질의 방정식을 상기 복수 개의 다중 조인 질의가 그룹화된 결과에 따라 변환하여, 변환된 질의 방정식을 생성하는 단계; 및
    (d) 상기 컴퓨터가, 상기 변환된 질의 방정식에 따라 배열 기반 시놉시스 연산을 수행하는 단계를 포함하고,
    상기 배열 기반 시놉시스는, 소스 스트림에 존재하는 실제 투플 값과 연관된 포인터들을 하나의 노드로 구성하여, 배열 기반 시놉시스의 행 또는 열 별로 연결 리스트(linked-list)로 구성한 리스트인 시놉시스 요약 리스트를 포함하고,
    상기 시놉시스 요약리스트는, 상기 배열 기반 시놉시스에서의 행속성을 인덱스를 가지며 동일한 행속성을 가진 투플 포인터들 중에서 열속성이 같은 투플 포인터들을 하나의 노드로 구성하고 해당 열속성을 노드의 인덱스로 할당하여 인덱스를 기반으로 정렬된 형태의 리스트로 정의되는 행단위 시놉시스 요약리스트와, 상기 배열 기반 시놉시스에서의 열속성을 인덱스를 가지며 동일한 열속성을 가진 투플 포인터들 중에서 행속성이 같은 투플 포인터들을 하나의 노드로 구성하고 해당 행속성을 노드의 인덱스로 할당하여 인덱스를 기반으로 정렬된 형태의 리스트로 정의되는 열단위 시놉시스 요약리스트를 포함하는 것을 특징으로 하는 다중 조인 질의 처리 방법.
  2. 제1항에 있어서,
    상기 (a) 단계는,
    상기 다중 조인 질의의 질의 연산에 참여하는 소스 스트림을 노드로 표현하고 상기 소스 스트림의 속성을 에지로 표현하는 질의 그래프를 생성하여 상기 다중 조인 질의를 해석하는 것을 특징으로 하는 다중 조인 질의 처리 방법.
  3. 제1항에 있어서,
    상기 (a) 단계는,
    조인 연산에 참여하는 두 소스 스트림과 적어도 둘의 조인 속성을 가지는 제1 레벨 조인 연산자 집합을 생성하는 단계; 및
    적어도 둘의 상기 제1 레벨 조인 연산자 집합을 연결하여 제2 레벨 조인 연산자 집합을 생성하는 단계를 포함하는 것을 특징으로 하는 다중 조인 질의 처리 방법.
  4. 제1항에 있어서,
    상기 생성된 조인 연산자 집합 중에서 특정 조인 연산자 집합의 선택은,
    해당 조인 연산자 집합이 속한 질의의 수를 전체 질의의 수로 나눈 값인 절대 공유율 또는 상기 절대 공유율에 해당 조인 연산자 집합이 가진 조인 연산자의 수를 일정 비율로 반영한 값인 상대 공유율을 계산하여, 상기 절대 공유율 또는 상기 상대 공유율이 최대인 조인 연산자 집합을 선택하는 것을 특징으로 하는 다중 조인 질의 처리 방법.
  5. 제1항에 있어서,
    상기 (b) 단계는, 상기 하나의 그룹에 속하지 않는 다중 조인 질의를 다른 그룹으로 분류하여 상기 복수 개의 다중 조인 질의를 그룹화하는 것을 특징으로 하는 다중 조인 질의 처리 방법.
  6. 제1항에 있어서,
    상기 배열 기반 시놉시스는
    하나의 조인 속성을 가지는 소스 스트림에 대하여 1×m 크기의 배열 기반 구조체-여기서, 상기 소스 스트림의 투플은 조인 속성을 키 값으로 하고 m 개의 버켓을 가지는 해쉬 함수를 이용하여 상기 배열 기반 구조체의 엔트리에 할당됨-로 이루어지고,
    두 개의 조인 속성을 가지는 소스 스트림에 대하여 m1×m2 크기의 배열 기반 구조체-여기서, 상기 소스 스트림의 투플은 각각 m1과 m2 크기의 버켓을 가지는 두 해쉬 함수를 이용하여 상기 배열 기반 구조체의 엔트리에 할당됨-로 이루어지는 것을 특징으로 하는 다중 조인 질의 처리 방법.
  7. 삭제
  8. 삭제
  9. 제1항에 있어서,
    상기 배열 기반 시놉시스의 곱은 다음과 같이 정의되는 것을 특징으로 하는 다중 조인 질의 처리 방법.
    i=1 번째 조인 연산에 대하여, m1×m2의 크기를 갖는 소스 스트림 S1에 대한 배열 기반 시놉시스 MBS1과 m2×m3의 크기를 갖는 소스 스트림 S2에 대한 배열 기반 시놉시스 MBS2의 곱이 주어졌을 때, 두 배열 기반 시놉시스 각각의 소스 스트림의 조인 연산(S1.a1
    Figure 112012068650552-pat00028
    S2.a1)의 결과를 저장하는 시놉시스 요약리스트(SCL_Rj <1,2>)는 다음과 같이 정의되고,
    Figure 112012068650552-pat00029

    2≤i≤n 번째 조인 연산에 대하여,
    i-1 번째 조인 연산을 위한 연속적인 시놉시스 곱 연산 후, mi 행 크기만큼의 중간결과를 가지는 시놉시스 요약리스트(SCL_Rj <1,2,...,i>)와 mi×mi+1 크기를 가지는 소스 스트림 Si에 대한 배열 기반 시놉시스 MBSi가 주어졌을 경우, i 번째 조인을 통한 최종 결과를 저장하는 시놉시스 요약리스트(SCL_Rj <1,2,...,i>)는 다음과 같이 정의됨.
    Figure 112012068650552-pat00030
  10. 제1항 내지 제6항, 제9항 중 어느 한 항에 기재된 다중 조인 질의 처리 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
KR1020110037178A 2011-02-24 2011-04-21 데이터 스트림에서의 다중 조인 질의 처리 방법 KR101237736B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20110016545 2011-02-24
KR1020110016545 2011-02-24

Publications (2)

Publication Number Publication Date
KR20120097302A KR20120097302A (ko) 2012-09-03
KR101237736B1 true KR101237736B1 (ko) 2013-02-26

Family

ID=47108685

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110037178A KR101237736B1 (ko) 2011-02-24 2011-04-21 데이터 스트림에서의 다중 조인 질의 처리 방법

Country Status (1)

Country Link
KR (1) KR101237736B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101394038B1 (ko) 2012-09-03 2014-05-12 현대자동차 주식회사 차량용 자동변속기의 유압공급시스템
KR101712727B1 (ko) * 2015-04-28 2017-03-07 한국과학기술원 무선 센서 네트워크 데이터베이스 시스템에서 공간쿼리를 위한 연산자 및 에너지 효율적인 쿼리 처리
KR101928819B1 (ko) * 2017-03-28 2019-03-12 주식회사 리얼타임테크 관계형 데이터베이스의 조인 방법
KR102254951B1 (ko) * 2019-10-28 2021-05-24 주식회사 티맥스티베로 조인 트리를 생성하는 컴퓨터 프로그램 및 서버

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6912524B2 (en) * 1998-05-20 2005-06-28 Lucent Technologies, Inc. Join synopsis-based approximate query answering

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6912524B2 (en) * 1998-05-20 2005-06-28 Lucent Technologies, Inc. Join synopsis-based approximate query answering

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
한국IT서비스학회 2008년도 추계학술발표자료(2008. 제목: 공통 조인 작업 공유를 통한 다중 연속 질의 처리) *

Also Published As

Publication number Publication date
KR20120097302A (ko) 2012-09-03

Similar Documents

Publication Publication Date Title
Simitsis et al. Optimizing ETL processes in data warehouses
US10642831B2 (en) Static data caching for queries with a clause that requires multiple iterations to execute
Chandrasekaran et al. PSoup: a system for streaming queries over streaming data
Simitsis et al. State-space optimization of ETL workflows
EP2350868B1 (en) Efficient large-scale filtering and/or sorting for querying of column based data encoded structures
Golab et al. Data stream management
CN103246749B (zh) 面向分布式计算的矩阵数据库系统及其查询方法
EP1403788A2 (en) Eliminating group-by operation in a join plan
JPH06214843A (ja) データベース管理システムおよび問合せの処理方法
Bugiotti et al. RDF data management in the Amazon cloud
Liao et al. MRPrePost—A parallel algorithm adapted for mining big data
KR101237736B1 (ko) 데이터 스트림에서의 다중 조인 질의 처리 방법
Shahvarani et al. Parallel index-based stream join on a multicore cpu
Deng et al. Lcjoin: Set containment join via list crosscutting
Singh et al. SWST: A disk based index for sliding window spatio-temporal data
KR101955376B1 (ko) 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치
Theeten et al. Chive: Bandwidth optimized continuous querying in distributed clouds
Wang et al. Rencoder: A space-time efficient range filter with local encoder
Rochd et al. An Efficient Distributed Frequent Itemset Mining Algorithm Based on Spark for Big Data.
Gopal et al. The query clustering problem: A set partitioning approach
Zhu et al. Optimization of monotonic linear progressive queries based on dynamic materialized views
Luo et al. O2ijoin: an efficient index-based algorithm for overlap interval join
Jinlong et al. Survey of the study on frequent pattern mining in data streams
JP3538322B2 (ja) データベース管理システムおよび問合せの処理方法
Loekito et al. Are zero-suppressed binary decision diagrams good for mining frequent patterns in high dimensional datasets?

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160202

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170221

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180205

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190218

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20200122

Year of fee payment: 8