KR100833540B1 - 다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화를위한 시스템 및 그 방법 - Google Patents

다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화를위한 시스템 및 그 방법 Download PDF

Info

Publication number
KR100833540B1
KR100833540B1 KR1020060119696A KR20060119696A KR100833540B1 KR 100833540 B1 KR100833540 B1 KR 100833540B1 KR 1020060119696 A KR1020060119696 A KR 1020060119696A KR 20060119696 A KR20060119696 A KR 20060119696A KR 100833540 B1 KR100833540 B1 KR 100833540B1
Authority
KR
South Korea
Prior art keywords
fan
query
queries
size
sliding window
Prior art date
Application number
KR1020060119696A
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 KR1020060119696A priority Critical patent/KR100833540B1/ko
Application granted granted Critical
Publication of KR100833540B1 publication Critical patent/KR100833540B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Control Of Multiple Motors (AREA)

Abstract

본 발명은 데이터 베이스의 효율적인 운용 방법에 관한 것으로서, 상세하게는 다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화를 위한 선형 자원공유 방법에 관한 것이다.
본 발명은 다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화를 위한 시스템에 있어서, 스트림 버퍼에 입력되는 스트림에서 질의들이 필요로 하는 집계 정보를 계산해서 팬이라는 선형의 자료구조를 저장하는 스트림 영역과, 팬 버퍼에 저장된 집계 값들을 공유해 여러 개의 집계 질의가 동시 수행되고, 사용이 끝난 팬들을 삭제하는 질의 처리 영역을 포함하는 것을 특징으로 한다.
자원공유, 스트림, 슬라이딩 윈도우, 집계, 질의 최적화

Description

다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화를 위한 시스템 및 그 방법{System and Method for Query Optimization of Sliding Window Aggregates in Multiple Continuous Queries}
도 1은 본 발명의 실시에 따른 전체적인 질의 처리 과정을 나타낸 도면
도 2는 본 발명에 따른 SPQP의 자세한 구조
도 3은 본 발명의 실시에 따라 팬 크기를 결정하는 방법을 나타낸 흐름도
도 4는 레인지와 슬라이드가 ID(서로소인)인 경우 팬 크기를 구하는 일 실시예를 나타낸 도면
도 5는 팬의 그룹화 기법을 도시한 도면
도 6은 팬의 생성과정을 도시한 도면
도 7은 팬 생성과정을 나타낸 흐름도
도 8은 팬 버퍼에서 질의를 수행하는 과정을 나타낸 도면
도 9는 더 이상 사용하지 않는 팬을 타임유닛 단위로 삭제하는 방법을 나타낸 흐름도
도 10 은 본 발명의 일 실시예로써, 도로의 6개 영역에서 속도를 측정하는 도로와 스키마를 나타낸 도면
도 11은 본 발명의 일 실시예로써, 팬 생성 및 처리과정을 나타낸 도면
본 발명은 데이터 베이스의 효율적인 운용 방법에 관한 것으로서, 상세하게는 다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화를 위한 선형 자원공유 방법에 관한 것이다.
최근 센서 네트워크 및 통신기술의 발달에 힘입어 스트림 데이터(Stream Data)에 대한 연구가 활발히 진행되고 있다. 스트림 데이터에 대한 연구 결과로 DSMS(Data Stream Management System)가 등장하였는데, 이는 새로운 형태의 질의인 연속질의(Continuous Query Language)를 사용한다. 연속질의는 시스템에 등록이 되고 조건에 맞는 데이터만 처리하는 점에서 기존의 질의와 차이가 있다. 모든 연속질의는 슬라이딩 윈도우를 포함하고 있고, 집계정보 처리를 요구한다. 그리고 이 연속질의는 슬라이딩 윈도우의 특성에 따라 두 가지로 구분된다. 첫 번째는 시간단위의 슬라이딩 윈도우를 포함하는 시간기반 질의이다. 다음은 튜플단위의 슬라이딩 윈도우를 포함하는 튜플기반 질의가 있다. 특히 이 두 종류의 연속질의 중 하나 이상이 동일한 자원에서 실행되는 경우가 발생할 수 있다.
스트림 데이터는 연속적으로 들어오는 대용량의 데이터이다. 스트림 데이터상의 질의 처리는 디스크에 저장되어 있는 데이터를 처리하는 기존의 방식과 다른 질의처리 방법을 요구한다. 따라서 기존의 질의와 다른 형태인 연속질의가 제안되었는데, 모든 연속질의는 슬라이딩 윈도우를 포함하고 있다. 슬라이딩 윈도우는 일 정시간 또는 지정된 개수의 튜플로 스트림 데이터를 분할하여 질의 처리에 이용한다. 그리고 슬라이딩 윈도우를 이동하면서 질의를 계속적으로 진행한다.
슬라이딩 윈도우는 시간을 기반으로 윈도우 크기를 결정하는 시간 기반 슬라이딩 윈도우와 튜플을 기반으로 윈도우 크기를 결정하는 튜플 기반 슬라이딩 윈도우가 있다. 시간 기반 슬라이딩 윈도우를 이용한 질의를 시간 기반 질의 또는 TS 질의라고 하며, 튜플 기반 슬라이딩 윈도우를 이용한 질의를 튜플 기반 질의 또는 ROW 질의라고 한다. TS 질의와 ROW 질의는 레인지(RANGE)와 슬라이드(SLIDE) 절을 포함한다. 레인지는 슬라이딩 윈도우의 질의 영역의 크기를 명시하는 것이다. 시간 기반에서는 시간의 범위가 나타나며 튜플 기반에서는 튜플의 개수가 나타나게 된다. 슬라이드는 슬라이딩 윈도우의 이동 크기를 명시하는 것이다. 시간 기반에서는 슬라이드의 값만큼 시간이 지난 데이터로 슬라이딩 윈도우를 이동하며, 튜플 기반에서는 슬라이딩 윈도우를 슬라이드의 값만큼 튜플의 개수를 이동한다
슬라이딩 윈도우는 중복된 영역을 포함하면서 이동하기 때문에 동일한 튜플을 질의 처리에 사용하게 되어 연산 비용을 낭비하게 되고, 스트림의 입력 속도가 빨라지면 TS 질의는 레인지와 슬라이드가 커지는데 ROW 질의는 언제나 고정이기 때문에 스트림의 입력 속도가 증가하면 튜플 기반 질의는 질의 횟수가 증가하게 되고 질의 처리 시간이 늘어나며 질의 지연을 가져오게 된다. 이러한 문제점을 해결하기 위해 자원 공유 기법이 필요하다.
스트림 환경에서 자원공유를 이용하여 질의를 처리하는 방법에는 BINT와 LINT라는 공유기법이 있다.
BINT는 자원공유를 위해 계층별로 범위를 생성하여 집계 정보를 저장하므로 메모리 비용이 증가하는 문제점이 있다. 또한, BINT에 질의 요청이 오면 질의에 대한 슬라이딩 윈도우의 범위를 만족하는 계층을 찾고 각 계층별로 저장된 집계 값들을 가지고 전체 질의의 결과를 반환하는데, 이는 계층별로 저장된 포함관계가 없는 범위 중 슬라이딩 윈도우의 영역을 만족하는 최적의 값들을 찾아야 하기 때문에 계층별 탐색 시간이 길어지고 각 범위들의 집계 값으로 결과 값을 얻는 비용도 요구되는 문제점이 있다.
LINT는 질의 범위를 만족하는 범위를 찾는 속도를 향상시켰으나, 두 개의 계층 구조를 사용하기 때문에 계층 구조 구축시간과 공간방비가 BINT보다 크므로, 질의 지연 시 유지해야하는 메모리 공간이 커지게 되고, 데이터가 빠르게 삽입시 계층 구조 구축 시간이 길어지는 문제점이 있다.
슬라이딩 윈도우는 질의 처리를 위해 버퍼를 이동할 때 중복된 영역을 포함할 수 있다. 슬라이딩 윈도우의 레인지의 범위가 슬라이드보다 큰 경우에 발생한다. 이 경우에는 이전의 질의 처리에 사용했던 부분을 다음 질의 처리에 사용하게 된다. 결국 중복된 영역의 질의 처리에 따라 연산 비용이 증가한다. 그래서 중복 영역을 재계산하지 않기 위해 팬(Pane) 구조가 제안되었다. 팬은 질의 영역을 분할하여 집계 값을 계산하고 유지한다.
팬은 슬라이드와 레인지의 최대공약수 만큼 스트림을 분할하고 분할 영역만큼의 집계 값을 튜플 값 대신 저장한다. 질의 요청이 오면 분할 저장된 팬의 집계 값을 이용하여 질의 결과를 반환하기 때문에 튜플에서 집계 값을 구하는 연산은 팬을 생성할 때 한 번만 수행하면 된다. 이는 팬을 사용하지 않는 구조가 같은 튜플에 대해서 여러 번 집계 값을 구하는 것보다 비용이 크게 감소하는 장점이 있다. 그러나 현재까지 연구된 팬 구조는 단일 질의에 대해서만 적용이 가능하였으며, 특히 튜플 기반 질의와 시간기반 질의가 동시에 수행되는 다중 질의 환경에서는 팬의 크기를 결정할 수 없는 문제가 있다. 또한, 슬라이드와 레인지가 서로소인 경우에 팬의 크기를 결정할 수 없다.
본 발명은 상기의 문제점을 해결하기 위하여, 다중 질의 환경에서 질의 처리 속도를 향상시켜 질의의 지연을 줄이고 메모리의 효율성을 높이는 자원 공유 방법을 제공하는 것을 목적으로 한다.
본 발명은 다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화를 위한 시스템에 있어서,
스트림 버퍼에 입력되는 스트림에서 질의들이 필요로 하는 집계 정보를 계산해서 팬이라는 선형의 자료구조를 저장하는 스트림 영역과, 팬 버퍼에 저장된 집계 값들을 공유해 여러 개의 집계 질의가 동시 수행되고, 사용이 끝난 팬들을 삭제하는 질의 처리 영역을 포함하는 것을 특징으로 한다.
또한, 본 발명은 다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화를 위한 방법에 있어서, 모든 튜플 기반 질의 영역을 나타낼 수 있도록 팬의 크기와 상기 팬들의 시간단위 모임인 타임유닛을 결정하는 단계; 상기 결정된 팬과 타임유닛을 기반으로 팬을 생성하는 단계; 상기 생성된 팬으로 질의를 수행하는 단계; 및
질의 수행 후 더 이상 사용되지 않는 팬을 삭제하는 단계;를 포함하는 것을 특징으로 한다.
이하 첨부된 도면을 참조하여 본 발명의 구성에 대해 상세히 살펴본다.
본 발명에서 사용되는 자원공유 방법은 SPQP(Shared 팬 Qurery Processsing)이라 칭한다. SPQP는 팬 자료구조에 집계 정보를 공유하고 질의를 수행하는 질의 처리 시스템이다. 상기 집계 정보를 공유하여 다중 질의 환경에서의 메모리 비용과 질의 비용을 줄일 수 있다.
도 1은 본 발명의 실시에 따른 전체적인 질의 처리 과정을 나타낸 것이다.
우선 등록된 질의의 정보(10)를 가지고 팬(Pane)과 타임유닛(Time Unit, 팬들의 시간 단위 모임이다)의 크기를 구한다. 크기를 구하는 구체적인 방법은 후술하기로 한다. 상기 구해진 값들은 모든 질의들의 정확한 집계 정보를 유지하기 위한 최적의 크기이다.
그 다음에 스트림 영역(100)의 SPC(102)가 팬과 타임유닛의 크기를 가지고 팬을 생성하는 규칙을 생성한다. 그리고 이 규칙에 따라 스트림으로 입력되는 튜플들의 집계 값을 구해서 팬 버퍼에 저장한다. 그리고 일정 시간마다 이 작업을 반복적으로 수행한다. 이와 같이 스트림 영역(100)를 통해 생성된 팬은 팬버퍼(201)상에서 실제 질의가 수행된다. 질의 처리는 질의 실행기(202)에서 등록된 모든 질의를 가지고 팬버퍼(201)에 저장된 집계 값들을 가지고 결과를 빠르게 제공한다.
SPQP의 자세한 구조는 도 2에 도시되어 있다. 먼저 스트림 영역(100)에는 스트림 버퍼와 계산 포인터(Calculate Pointer, 이하 CP로 표기한다)가 있다. 스트림 버퍼는 B로 표기되어 있어 있다. 스트림 버퍼는 메모리를 이미 반환한 디스카드(Discard, 이하 D로 표기한다)상태와 아직 사용 중인 유즈드(Used, 이하 U로 표기한다) 상태를 가진다. CP는 현재 튜플들의 집계 정보를 계산하고 있는 위치를 가리킨다. 그 다음으로 질의 영역에서는 팬(Pi)들이 타임유닛 단위로 저장되어 있다. 그리고 현재 질의의 수행위치를 가리키는 쿼리 포인터 (Query Pointer, QPi)와 가장 느리게 실행되는 질의의 위치를 가리키는 최종 포인터(Last Pointer, LP) 두 가지가 있다. 그리고 각 팬은 타임유닛에 포함관계에 따라서 완전히 포함되는 포화(Complete, C)상태와, 부분적으로만 포함되는 불포화(Incomplete, I) 상태를 가진다.
상기 도 2의 시스템에서는 Q1, Q2 두 개의 질의가 수행 중이다. Q1은 시간기반 질의이고 Q2는 튜플기반 질의이다. 그래서 Q2는 정확한 팬 크기의 배수로 실행하면서 저장된 팬들의 집계 정보를 가지고 질의를 수행한다. 그러나 TS질의인 Q1은 길이가 가변이기 때문에 정확히 팬의 배수가 아니다. 그러므로 타임유닛 단위로 저장된 팬들을 가지고 질의 결과를 반환한다. Q1은 7개의 C상태 팬과 3개의 I상태로 저장된 팬을 가지고 있는 타임유닛을 사용해서 질의 결과를 반환한다.
특별히 도 2의 경우는 질의 Q2가 지연되고 있는 상황을 보여주고 있다. 만약 팬 구조가 아닌 튜플을 공유하는 구조를 사용하면 질의 처리 시마다 튜플들로부터 집계 정보를 계산해야 한다. 그리고 윈도우 이동에 따라 중복되는 영역의 재계산의 추가 비용 때문에 질의가 더욱 지연될 수 있다. 그러나 본 발명의 구조에서는 질의 처리시 집계 값의 중복 계산이 필요 없다. 그리고 선형 구조의 자원 공유를 사용하기 때문에 질의 영역을 위해 저장된 팬들을 검색하는 속도가 매우 빠르다. 그래서 지연된 질의를 보다 빠르게 처리해 비교적 빨리 지연 상태에서 벗어날 수 있다.
SPQP는 팬과 타임유닛 단위로 집계 값을 저장하기 때문에 팬과 타임유닛의 크기에 따라 성능이 크게 차이 날 수 있다. 팬의 크기가 매우 작으면 튜플을 유지하는 비용보다 집계 정보를 유지하는 비용이 더 클 수 있다. 그리고 타임유닛의 크기가 매우 작으면 불포화 상태의 팬이 많아지므로 저장해야 하는 팬의 수가 증가하므로 역시 비효율적이다. 그런데 팬과 타임유닛을 가지고 각각 튜플기반 질의와 시간기반 질의의 질의영역을 정확히 구성할 수 없으면 정확도를 보장할 수 없으므로 팬과 타임유닛의 크기 결정이 매우 중요하다
도 3은 본 발명의 실시에 따라 팬 크기를 결정하는 방법을 나타낸 흐름도이다.
먼저 S1, R1 두 수를 입력받는다(S300). S1은 시간기반 데이터이고 R1은 튜 플기반 데이터이다.
전체 질의 만큼 플로우를 반복하기 위해 i를 2로 설정하고(S301) i가 쿼리들의 숫자와 비교하여(S302), i가 작은 경우에는 si, ri에 대한 최대공약수(gcd)를 구하고(S303), 구해진 최대 공약수를 P에 대입한다. 즉, P,g2의 최대공약수를 P에 대입하고, 그리고 또 P,g3의 최대공약수를 P에 대입하고 또 P,g4의 최대공약수를 P에 대입하고,를 반복해서, g1,g2,...gn의 최대공약수를 구한다(S304).
좀더 자세하게 살펴보면 다음과 같다.
최적의 팬의 크기는 두 가지 조건을 만족해야 한다. 첫 번째는 생성된 팬으로 실행중인 모든 튜플기반 질의의 질의 영역을 나타낼 수 있어야 한다. 이 팬을 가분 팬(Dividable 팬)이라고 부르기로 한다. 두 번째는 팬을 유지하기 위해 필요한 메모리 비용이 튜플을 유지하기 위한 메모리 비용보다 작아야 한다.
그러나 가분 팬의 크기를 찾는 것은 매우 어렵다. 만약 동시에 실행중인 질의들의 각 슬라이드들과 레인지의 길이들의 최대공약수(GCD:Great Common Divisor)를 사용하면 간단히 가분 팬의 크기를 얻을 수 있다. 그러나 만약 하나의 질의라도 슬라이드나 레인지의 크기가 서로소 관계에 있다면 최대공약수는 1이 된다. 이 경우는 튜플을 유지하는 것과 동일하므로 팬을 사용하는 이득이 전혀 없게 된다. 그러므로 좀더 개선된 방법으로 팬의 크기를 구해야 한다.
팬의 크기를 결정하는 방법은 슬라이드와 레인지의 관계에 따라서 3가지 경우로 나눌 수 있다. 우선 Q1,Q2 두 개의 질의에 대해서 본다. Q1질의와 Q2질의는 각각 레인지가 r1, r2이고 SLDIE가 s1, s2라고 가정한다. 그렇다면 첫 번째로 r1, r2, s1, s2가 모두 서로소가 아닌 경우이다. 이 경우를 "완전 나누어진다(AD)" 라고 한다. 두 번째는 단일 질의의 레인지와 슬라이드가 서로소인 경우이다. 이 경우는 "불완전 나누어진다(ID)"라고 한다. 그리고 그 이외의 경우는 "나누어지지 않는다(UD)"라고 한다. 그래서 팬을 구하는 방법은 AD,ID,UD 세 가지로 나눌 수 있다.
그럼 우선 AD의 경우에 대해서 가분 팬의 크기를 결정하는 방법에 대해서 설명한다. 현재 수행중인 n개의 질의를
Figure 112008004797986-pat00035
이라고 할 때, 각 질의의 슬라이드와 레인지를 각각 si와 ri라 하자. a, b의 최대공약수는 g=gcd(a, b)라고 표현하기로 한다.
모든 질의는
Figure 112008004797986-pat00036
의 수열로 표현될 수 있다. 각 질의는
Figure 112008004797986-pat00003
로 표현될 수 있다. 그리고
Figure 112008004797986-pat00004
를 사용한 팬의 수열은
Figure 112008004797986-pat00005
라고 하면,
Figure 112008004797986-pat00006
Figure 112008004797986-pat00007
는 모든 i에 대해 si와 ri의 최대 공약수이므로,
Figure 112008004797986-pat00037
가 성립한다. 그러므로
Figure 112008004797986-pat00009
는 가분 팬의 크기이다.
즉, 모든 튜플 기반 질의의 슬라이드와 레인지의 최대공약수가 가분 팬의 크기가 된다. 그러므로 Psize = gcd(g1...gn)를 팬의 크기로 사용할 수 있다.
그러나 ID의 경우에는 최대공약수만으로 팬 크기를 구할 수 없다. ID의 경우는 슬라이드와 레인지가 각각 서로소이기 때문에 팬 크기가 1이 된다. 그래서 ID의 경우 최대 공약수로 팬의 크기를 결정하면 비 효율적이다. 이때는 하나의 팬의 크기가 아닌 두 개의 팬의 크기를 이용할 수 있다. 이 두 개의 팬크기를 반복적으로 사용하면 가분 팬을 만들 수 있다.
ID의 경우를 설명하기 위해 다음과 같은 상황을 고려한다. 레인지가 30이고 슬라이드가 7인 경우에 가분 팬이 되기 위해서는 팬을 나누는 값들이 윈도우에 이 동에 따라 결정되는 영역의 좌측,우측 값을 모두 포함해야 한다. 즉 팬은 슬라이드의 크기에 비례하는 좌측영역의 값인 7의 배수에서 나누어져야 한다. 그리고 우측 값은 슬라이드와 레인지의 크기에 동시에 영향을 받는다. 이 좌측은 우측과 비교하여 값이 증가하는 크기가 같은 특성이 있다. 그래서 우측영역의 값은 30+7a와 같이 7의 배수에 30을 더한 형태로 표현할 수 있다. 이는 30 = 7×4 + 2이므로 결국 7에 배수에 항상 2를 더한 형태이다. 결국은 두 레인지와 슬라이드는 2의 차이를 유지하면서 계속 이동한다. 그러므로 이 차이인 2와 5=7-2를 사용하여 처음에는 2 다음에는 5로 나누면서 반복적으로 팬을 생성하면 가분 팬이 될 수 있다.
도 4는 상기와 같이 ID인 경우 팬 크기를 구하는 일 실시예를 나타낸 것이다. 도면에 나타난 것과 같이, 2,5와 단위로 연속적으로 팬을 분할하면 가분 팬이 될 수 있다. 상기와 같은 ID의 특성을 일반화하면 다음과 같다. 질의의 슬라이드와 레인지를 각각 s와 r라 하자. 모든 슬라이드들의 GCD를
Figure 112008004797986-pat00010
라하고 레인지들의 GCD는
Figure 112008004797986-pat00011
라고 하고
Figure 112008004797986-pat00012
Figure 112008004797986-pat00038
라고 하자. 이때 가분 팬의 크기는
Figure 112008004797986-pat00014
Figure 112008004797986-pat00015
로 만족시킬 수 있다. 이 두 값의 단위로 번갈아 가면서 연속적으로 팬을 생성하면 가분 팬이 될 수 있다. 상기 식에서 mod는 나머지 값을 되돌려주는 함수이다. 즉, 레인지의 최대공약수를 슬라이드의 최대공약수로 나눈 나머지가 팬의 크기 Pa가 된다. 상기 식에서
Figure 112008004797986-pat00016
Figure 112008004797986-pat00017
은 경우에 따라 적절하게 상호 바뀔수 있다.
이와 같이 AD와 ID가 하나만 존재하는 경우에 팬의 크기를 결정할 수 있다. 그러나 AD와 ID가 동시에 존재하는 경우, 즉 UD의 경우에는 상기와 같은 기법을 바로 적용할 수 없다. UD의 경우에는 질의들을 잘 그룹화해서 AD나 ID형태의 질의끼리 분리할 수 있다. 이 여러 개의 그룹이 생성되는 UD의 팬 생성비용은 중간 집계 값을 계산하면서 여러 개의 그룹에 해당하는 팬의 위치에서만 적용하면 되기 때문에, 집계 값 재계산이 필요 없다.
UD의 경우 그룹화를 이용해도 상당히 효율적이다.
그룹화 기법은 그룹을 나눌 때, 그룹별 팬의 크기가 최대가 되도록 분할해야 한다. 질의 별 슬라이드와 레인지의 최대공약수가 1000, 500, 310, 155 일 때, 1000, 500과 310, 155로 그룹을 생성하는 것이 1000, 310과 500, 155로 그룹을 생성하는 것보다 효율적이다. 그리고 메모리 사용량이 큰 팬의 크기가 작은 그룹부터 먼저 질의를 수행하여 자원 사용률이 높은 그룹의 메모리를 빠르게 반환하는 방법으로 자원 사용률을 높일 수 있다.
도 5는 팬의 그룹화 기법을 도시한 것이다.
도면에 나타난 것과 같이 메인 그룹(Main Group) 하나와 서브 그룹(Sub Group) 두 개로 총 세 개의 그룹이 존재한다. 메인 그룹은 시간 유닛과 팬을 모두 가지고 있는 그룹이다. 시간기반 질의는 메인 그룹에서만 실행된다. 서브 그룹은 오직 팬만 사용하는 그룹이다. 이때는 그룹에 속하는 ROW질의만 자원을 사용하고, 질의의 슬라이딩 윈도우가 이동 시 즉시 자원반환이 가능하다. 그래서 팬의 크기에 따라서 질의를 우선 처리하여 자원효율을 높일 수 있다.
그룹1과 3은 팬 크기가 모두 동일한 AD이다. 각각의 팬 크기는 600과 350이다. 그룹2는 팬의 크기가 두 가지가 필요한 ID이고 평균 팬 크기는 439이다. 여기서 팬의 크기가 가장 작은 그룹3이 동일한 튜플들에 대해서 가장 많은 팬이 필요하므로 메모리가 많이 필요하다. 그러므로 팬의 크기 별로 질의를 우선 실행해서, 빠르게 메모리 반환이 가능하게 할 수 있다. 그림에서는 그룹3,그룹2,그룹1의 순서로 우선순위를 할당한다.
상기와 같이 팬의 크기를 다양한 방법으로 결정할 수 있다.
타임유닛의 크기를 결정하는 방법에 대해서 살펴본다.
타임유닛은 팬을 시간 단위로 그룹화하여 시간기반 질의를 사용하기 위한 자료구조이다. 시간기반 질의는 시간마다 다른 수의 튜플을 가지므로, 특정 개수로 가분가능하게 만들 수 없다. 그렇지만 시간기반 질의 역시 시간 단위로는 고정이기 때문에 팬과 유사하게 시간단위를 이용해서 팬을 그룹화하는 것이 타임유닛이다. 이를 가분 타임유닛(Dividable 타임유닛) 이라고 하기로 한다. 가분 타임유닛의 크기 결정 알고리즘은 시간 단위인 것을 제외하고는 팬의 경우와 동일하므로 생략한다. 그러나 타임유닛은 팬보다 우수한 조건이 있다. 시간기반 질의는 길이가 가변이기 때문에 레인지나 슬라이드가 소수여도 사용이 가능하다. 특히 스트림 환경에서 소수의 최대공약수가 1초면 상당히 많은 양의 데이터가 들어오므로 GCD가 최소 단위인 1초여도 사용이 가능하다. 결론적으로 타임유닛은 팬의 AD와 동일하게 모든 레인지와 슬라이드의 GCD로 타임유닛의 크기에 사용한다.
도 6은 팬의 생성과정을 도시한 것이다.
팬은 두 가지 경우 생성된다. 첫 번째는 스트림으로부터 입력되는 튜플들이 팬의 크기 만큼 계산된 경우이고, 두 번째는 튜플들이 팬의 크기만큼 계산되지 않았지만 타임유닛에 해당하는 시간이 된 경우이다. 두 경우 모두 팬이 임시 메모리에 생성된다. 그리고 첫 번째 경우의 팬은 포화(C) 상태이고 두 번째 경우는 불포화(I) 상태이다. 그리고 이렇게 임시메모리에 모인 팬들의 집합이 하나의 타임유닛으로 이루어져 팬 버퍼에 저장된다.
도 6은 현재 2t부터 3t시점까지 B3버퍼에서 집계 정보를 계산 중인 것을 나타낸 것이다. 버퍼에서 현재 포인터(Current Pointer, CP)가 이동하면서 현재 위치까지의 집계 정보를 임시 메모리에서 계산하고 있다. 현재 P6, P7, P8까지 포화(C) 상태로 팬을 임시메모리에 생성하였고, P9를 생성 중이다. 시간이 지나면 CP가 P9를 생성하고 P10을 수행하다가 타임유닛의 끝을 알리는 타임스탬프(timestamp) 값이 3t인 튜플이 들어오게 될 것이다. 그러면 I 상태인 P10이 생성되고, TU3[P6, P7, P8, P9, P10]와 같이 팬들을 그룹화해서 팬 버퍼에 저장된다. 그리고 이것이 질의 수행에 이용된다.
팬 생성시 고려할 사항이 한가지 더 있다. 팬은 지속적으로 버퍼에서 튜플을 읽어서 집계 값을 저장하고, 최종 팬생성시까지 생성된 집계 값을 팬에 저장한다. MIN, MAX, CNT, SUM, AVG 중에서 MIN,MAX,CNT,SUM은 C와 I 상태의 팬 모두에서 정 확도가 유지된다. 그러나 AVG는 팬의 크기에 따라 정확도가 차이가 날수가 있다. 그러므로 AVG는 직접 값을 저장하지 않고 CNT와 SUM의 두 값으로 나누어 저장하여 정확도를 유지할 수 있다. CNT는 개수를 의미한다.
도 7은 팬 생성과정을 나타낸 흐름도이다.
도 7에 의하면 팬 생성 알고리즘은 팬을 생성하고 정해진 주기에 따라서 팬들의 집합인 타임유닛을 반환하는 알고리즘이다. 우선 Count와 GT를 초기화한다(S700). Count는 튜플의 개수를 세기 위한 변수이다. 이 변수는 팬을 저장하는 기준으로 사용한다. Count는 초기에 prevCnt로 초기화되는데, 이는 이전 타임유닛에서 C혹은 I상태로 저장된 것을 판단하기 위한 값이다. GT는 타임유닛의 다음 위치를 가리킨다. 이 값은 팬들을 생성하여 타임유닛의 집합으로 반환하는 시점을 나타내는 기준으로 사용된다.
상기 초기화 후 현재 팬에 저장된 수(Count)를 설정하고(S701), GT를 갱신한다(S702). 갱신 후, CP를 이동하면서 버퍼의 튜플을 가지고 오고(S703), 현재 포인터를 하나 증가시킨다(S704). 그리고 현재 팬에 튜플들의 집계 값을 계산한다(S705). 카운트가 팬의 크기와 일치하는지 여부를 판단하고(S707), 그리고 Count가 팬 크기와 일치할 때는, 팬의 이전 크기가 0인지를 판단(S708)하고 그렇지 않은 경우에는 팬의 크기에서 카운트 수를 빼서 프리카운터(preCount)에 대입한다(S712).
상기 S708 단계에서 팬의 프리카운터가 0인 경우에는 팬의 설정상태를 포화상태로 설정하고(S709) TU에 저장한다(S710). 그리고 위 과정을 반복적으로 수행하여 튜플의 타임스탬프(timstamp)가 GT에 도달하였는지 여부를 판단하고(S714), 팬이 꽉 찼는지 여부를 판단한다(S715). 상기 판단결과 꽉 찬 경우에는 작업 중이던 팬의 상태를 포화 상태로 설정하고(S716), 그렇지 않은 경우에는 불포화 상태로 설정한다(S717). 상기 설정 후 TU에 저장하고(S718) 최종 TU를 반환한다.
상기 도 7을 알고리즘으로 나타내면 다음과 같이 나타낼 수 있다.
Input T : next of Time Unit, P : size of Pane, CP : Current Pointer Output TU : Time Unit (The group of Pane)
Procedure MakePane() Initialize 01 Init(Pane); 02 Count = prevCnt; // 이전까지 저장된 팬의 개수(C,I 상태를 구분) 03 GT = GT + T; //현재 까지의 Global 타임유닛 Begin 01 While(true) 02 { 03 Tuple = Buffer(CP); //버퍼에서 CP에 가리키는 튜플을 얻어온다 04 CP++; 05 ComputeAggregation(Tuple,Pane); //팬에 집계 값 갱신 06 Count++; 07 if( PaneSizeFull(Count) ) //팬이 꽉 찼는지 확인 08 { 09 if( prevCnt == 0 ) //이전 타임유닛의 C상태이면 10 Pane.state = "C" 11 else //이전 타임유닛의 I 상태이면 12 Pane.state = "I" 13 InsertPane(TU,Pane); //TU에 팬을 추가 14 Init(Pane); 15 } 16 if(tuple.timestamp >= GT) //시간이 꽉 찼는지 확인 17 { 18 if( PaneSizeFull(Count) ) 19 Pane.state = "C" 20 else 21 Pane.state = "I" 22 prevCnt = EmptyPaneCnt(); 23 InsertPane(TU,Pane); 24 Return TU; 25 } 26 } End
상기 알고리즘은 팬을 생성하고 정해진 주기에 따라서 팬들의 집합인 타임유닛을 반환하는 알고리즘이다. 우선 Count와 GT를 초기화 한다. Count는 튜플의 개수를 세기 위한 변수이다. 이 변수는 팬을 저장하는 기준으로 사용한다. Count는 초기에 prevCnt로 초기화 되는데, 이는 이전 타임유닛에서 C혹은 I상태로 저장된 것을 판단하기 위한 값이다. GT는 타임유닛의 다음 위치를 가리킨다. 상기 값은 팬들을 생성하여 타임유닛의 집합으로 반환하는 시점을 나타내는 기준으로 사용된다. 알고리즘의 실행을 보면 03-04줄에서 CP를 이동하면서 버퍼에서 튜플을 가지고 온다. 그리고 05 현재 팬에 튜플들의 집계 값을 계산한다. 그리고 07줄에서 팬SizeFull은 AD와 ID에 따라 팬의 꽉 찼는지 확인하는 함수이다. 그래서 팬이 꽉 찬 경우 팬의 상태를 C로 설정하고 TU에 저장한다. 그러나 팬이 꽉 차지 않은 경우는 시간이 지난 것이므로 I 상태로 설정한다. 그리고 위 과정을 반복적으로 수행하여 튜플의 타임스탬프(timstamp)가 GT에 도달하면, 마지막으로 17줄에서 작업 중이던 팬의 상태를 팬의 저장상태에 따라 I혹은 C로 할당하고 TU에 저장하고(팬을 시간단위로 그롭화하고) 최종 TU를 반환한다.
상기와 같은 절차에 의해 생성된 팬을 기반으로 하여 팬 버퍼에서 질의를 수행한다. 먼저 질의 수행을 위해서 쿼리의 현재 수행 위치를 가리키는 쿼리 포인터(Query Pointer, QP)를 사용한다. 질의 수행은 튜플기반 질의에 대해서 결과를 반환하는 방법과 시간기반 질의에 대해서 결과를 반환하는 두 가지 방법이 있다. 튜플은 팬 버퍼에 저장된 팬들을 기준으로 결과를 반환하고, 시간기반은 타임유닛을 기준으로 결과를 반환한다.
도 8은 팬 버퍼에서 질의를 수행하는 과정을 나타낸 도면이다.
TS질의 Q1은 타임유닛을 단위로 QP를 이동시키면서 질의 결과를 구하고 있다. Q1은 t시점에서 타임유닛 두 개에(레인지 2t) 해당하는 6개의 팬(P4 2, P5, P6 1, P6 2, P7 , P8 1 )에 저장된 집계 값들을 가지고 결과를 반환한다. ROW질의 Q2는 팬 단위로 QP를 이동시키면서 질의 결과를 구하고 있다. Q2는 세 개의 팬 크기(레인지 3P)에 해당하는 4개의 팬(P2, P3, P4 1, P4 2 )에 저장된 집계 값들을 가지고 결과를 반환한다.
상기와 같은 방법에 의해 질의를 수행한 후, 팬 버퍼에서 더 이상 사용되지 않는 팬들은 삭제되어야 한다. 삭제를 위해서 질의의 마지막 수행 위치를 가리키는 마지막 포인터(Last Pointer, LP)를 사용한다. 질의 삭제는 간단한 알고리즘으로 질의가 수행될 때마다, QP를 이동하면서 가장 느린 쿼리 포인터에 해당하는 위치를 마지막 포인터(LP)에 설정한다. 그리고 LP가 이전 타임유닛의 위치에서 다음 타임유닛의 위치로 이동되면 이전 위치의 타임유닛을 삭제하여 팬 버퍼에서 제거한다.
도 9는 더 이상 사용하지 않는 팬을 타임유닛 단위로 삭제하는 알고리즘이다. 동시에 실행중인 모든 질의가 해당 타임유닛을 더 이상 사용하지 않을 때 삭제하는 기법이다. 그래서 현재 질의의 위치를 가리키는 QP와 가장 느린 질의의 위치를 가리키는 LP를 사용한다. 그래서 질의가 이동할 때마다 LP의 위치를 갱신하고, LP의 위치가 이전 타임유닛에서 다음 타임유닛으로 이동하면 이전 타임유닛을 삭제 한다.
도 9에서 우선 현재 LP의 현재 타임유닛을 TU에 설정한다(S900). 그리고 QP가 이동할 때마다 QP의 위치를 갱신하고(S901), 위치가 갱신된 QP가 현재 가장 느린 포인터이면 LP를 QP로 변경한다(S902, S903). 그리고 904 단계에서 TU는 LP가 속해 있던 과거의 값이다. LP가 변경되었으면 변경된 LP의 TU를 얻어서 비교한다. 만약 두 TU가 다르다면 LP는 다음 TU로 이동한 것이다. 그러므로 기존의 TU를 삭제하여 메모리를 반환한다.
이하에서는 도 10 내지 도 11를 참조하여 본 발명의 실시에 따른 SPQP를 이용한 질의 처리 과정에 대해 설명한다.
그림10에는 주어진 도로의 6개 영역에서 속도를 측정하고 있다. 현재 스트림으로 들어오는 데이터의 스키마는 <Area id, Car id, speed, ts>와 같다. Area id는 해당 도로의 지역 id에 해당한다. Car id는 자동차의 고유 id이고, speed는 측정된 시기의 자동차의 속도이고 ts는 측정된 시간이다. 이 상황에서 표1과 같이 Q1,Q2,Q3 세 개의 집계 질의가 동시에 수행 중이다. Q1은 TS질의이고, Q2와 Q3는 ROW질의이다.
Q1 : SELECT min(speed),max(speed),AreaID FROM S [ 레인지 180 seconds 슬라이드 60 seconds WATTER TS GROUP BY AreaID] Q2 : SELECT avg(speed), AreaID FROM S [ 레인지 200 슬라이드 50 WATTER ROW GROUP BY AreaID] Q3 : SELECT max(speed),avg(speed), AreaID FROM S [ 레인지 400 슬라이드 100 WATTER TS GROUP BY AreaID]
SPQP의 실행 순서의 첫 번째로 팬과 타임유닛의 최적의 크기를 결정해서 팬 생성을 위한 규칙을 생성한다. 그리고 지정된 규칙에 따라서 지속적으로 팬을 생성하고, 생성된 팬에서 질의를 수행하는 부분이 동시에 수행된다. 그리고 더 이상 사용하지 않는 팬을 버퍼에서 제거하면서 메모리를 관리한다. 그럼 위의 예를 가지고 SPQP실행순서에 따라 적용한다.
먼저 SPQP의 실행을 위해서 우선 최적의 팬과 타임유닛의 크기를 결정해야 한다. ROW 질의인Q2와 Q3는 AD관계이다. 그리고 Q1은 단일 TS질의이다. 그러므로 팬의 크기는 Q2와 Q3질의를 가지고 구한다. 팬의 크기를 위해 ROW질의인 Q2와 Q3의 슬라이드와 레인지의 GCD를 구한다. 팬의 크기 Psize는 gcd(gcd(200,50), gcd(400,100)) = 50 이므로, 50이다. 그리고 타임유닛의 크기는 Q1의 GCD인 gcd( 180,60 ) = 60 이므로 1분이다. 팬과 타임유닛의 크기를 결정했으므로, 이제는 팬 생성 알고리즘을 이용해서 실제로 팬을 생성한다. 스트림을 통해서 다음과 같이 튜플들이 입력되고 있다.
그림11에는 입력중인 튜플들이 있고 현재 시점은 16:31:00이다. 타임유닛이 1분 이므로 튜플로부터 집계 정보가 임시메모리에 16:32:00까지 계산된다. 그리고 임시메모리에 계산하면서 입력된 튜플 수가 팬의 크기인 50이 되면 임시메모리에 팬을 생성한다. 그림10은 CP가 이동하면서 50인 크기에서 팬을 하나 생성했다. 팬에는 질의가 필요로 하는 집계정보가 저장된다. 현재 질의는 id별로 그룹화 된 min, max, avg 을 필요로 한다. 특별히 avg는 cnt와 sum로 나누어 저장되어야 한다. 그래서 팬에는 <id, min, max, cnt, sum>형태로 id의 개수만큼 저장한다. 그리고 계속해서 집계 정보를 계산하다가 16:32:00의 튜플이 도착하면 계산을 완료한다. 이 시점에 저장된 팬들의 집합인 타임유닛을 팬버퍼의 TU3에 저장한다.
이제 팬이 생성되었고 Q1, Q2, Q3 질의가 수행된다. Q1은 1초씩 이동하면서 3분에 해당하는 만큼을 수행한다. 현재 Q1은 TU3에 위치한다. Q1은 여기서부터 3분의 범위만큼 수행해야 하므로 TU5가 생성될 때까지 질의 수행을 대기한다. Q2는 현재 TU2안에 있다. Q2는 레인지가 200이므로 팬 4개에 저장된 집계 값들을 가져온다. 그래서 각 id별로 4개의 cnt와 sum를 가지고 다시 평균을 내서 결과 값을 반환한다. Q3는 레인지가 400이므로 팬 8개에 대해서 동일한 작업을 수행한다. 그리고 Q3가 수행하면서 TU2의 범위 안에 들어오면 LP가 TU1에서 완전히 빠져나오기 때문에 TU1을 버퍼에서 삭제한다. 위의 과정을 반복적으로 수행하면서 질의 처리를 계속해서 수행한다.
본 발명의 구조에서는 질의 처리시 집계 값의 중복 계산이 필요 없다. 그리고 선형 구조의 자원 공유를 사용하기 때문에 질의 영역을 위해 저장된 팬들을 검색하는 속도가 매우 빠르다. 그래서 지연된 질의를 보다 빠르게 처리해 비교적 빨리 지연 상태에서 벗어날 수 있다.

Claims (9)

  1. 다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화를 위한 시스템에 있어서,
    스트림 버퍼에 입력되는 스트림에서 질의들이 필요로 하는 집계 정보를 계산해서 팬 자료구조를 저장하는 스트림 영역과, 팬 버퍼에 저장된 집계 값들을 공유해 여러 개의 집계 질의가 동시 수행되고, 사용이 끝난 팬들을 삭제하는 질의 처리 영역을 포함하는 것을 특징으로 하는 다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화를 위한 시스템.
  2. 제 1항에 있어서, 상기 스트림 버퍼는 스트림 데이터를 입력받고 팬의 크기와 생성 알고리즘을 저장하고, 상기 팬 버퍼는 상기 스트림 영역에서 구해진 팬을 크기별로 저장하는 것을 특징으로 하는 다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화를 위한 시스템.
  3. 다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화를 위한 방법에 있어서,
    스트림 영역(100)이 모든 튜플 기반 질의 영역을 나타낼 수 있도록 팬의 크기와 상기 팬들의 시간단위 모임인 타임유닛을 결정하는 단계;
    상기 스트림 영역(100)이 상기 결정된 팬과 타임유닛을 기반으로 팬을 생성하는 단계;
    질의 영역(200)이 상기 생성된 팬으로 질의를 수행하는 단계; 및
    상기 질의 영역(200)이 질의 수행 후 더 이상 사용되지 않는 팬을 삭제하는 단계;를 포함하는 것을 특징으로 하는 다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화 방법.
  4. 제 3항에 있어서, 상기 팬의 크기는 생성된 팬으로 실행중인 모든 튜플기반 질의 영역을 나타낼 수 있도록 결정하는 것을 특징으로 하는 다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화 방법.
  5. 제 3항에 있어서, 상기 팬의 크기를 결정하는 단계는 시스템에 등록되어 있는 모든 연속 질의가 가지고 있는 슬라이드와 레인지의 각각의 길이를 구하고, 상기 슬라이드와 레인지가 모두 서로소가 아닌 경우, 길이들의 최대공약수를 팬의 크기로 하는 것을 특징으로 하는 다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화 방법.
  6. 제 5항에 있어서, 상기 슬라이드와 레인지가 서로소의 관계에 있는 경우,
    상기 팬의 크기는
    Figure 112008004797986-pat00018
    Figure 112008004797986-pat00019
    (질의의 슬라이드와 레인지를 각각 s와 r라 할때,
    Figure 112008004797986-pat00020
    는 모든 슬라이드들의 GCD를,
    Figure 112008004797986-pat00021
    는 레인지들의 GCD라고 하고
    Figure 112008004797986-pat00022
    Figure 112008004797986-pat00039
    로 정의한다)인 것을 특징으로 하는 다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화 방법.
  7. 제 3항에 있어서, 상기 팬을 생성하는 단계는, 팬의 크기를 기준으로 입력된 튜플로부터 집계값을 저장하는 팬을 생성하면서, 처리된 튜플들의 시간이 지정된 시간인 타임유닛만큼이 되면, 해당 기간 동안 생성된 모든 팬을 반환하는 것을 특징으로 하는 다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화 방법.
  8. 제 3항에 있어서, 상기 팬을 생성하는 단계는,
    (a) 이전까지 저장된 팬을 포화상태와 불포화 상태로 구분하는 단계;
    (b) 버퍼에서 현재 포인터를 이동하면서 버퍼의 튜플을 얻어오는 단계;
    (c) 현재 팬에 튜플들의 집계 값을 계산하여 갱신하는 단계;
    (d) 현재 팬의 포화 여부를 판단하여 포화의 경우에는 팬을 포화상태로 설정하고, 그렇지 않은 경우에는 불포화 상태로 설정하는 단계; 및
    (e) 상기 (a) 단계 내지 (d) 단계를 반복적으로 수행하여 타임스탬프가 전체 타임유닛에 도달하면, 작업중이던 팬의 상태에 따라 포화 또는 불포화를 할당하고, 타임유닛에 저장하고 최종 타임유닛을 반환하는 단계;를 포함하는 것을 특징으로 하는 다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화 방법.
  9. 제 3항에 있어서, 상기 팬을 삭제하는 단계는 타임유닛 단위로 삭제하고, 실행중인 질의 중 가장 느린 질의의 실행 위치가 특정 타임유닛의 시간을 지나서 수 행될 때, 해당 타임유닛을 삭제하는 것을 특징으로 하는 다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화 방법.
KR1020060119696A 2006-11-30 2006-11-30 다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화를위한 시스템 및 그 방법 KR100833540B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060119696A KR100833540B1 (ko) 2006-11-30 2006-11-30 다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화를위한 시스템 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060119696A KR100833540B1 (ko) 2006-11-30 2006-11-30 다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화를위한 시스템 및 그 방법

Publications (1)

Publication Number Publication Date
KR100833540B1 true KR100833540B1 (ko) 2008-05-29

Family

ID=39665605

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060119696A KR100833540B1 (ko) 2006-11-30 2006-11-30 다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화를위한 시스템 및 그 방법

Country Status (1)

Country Link
KR (1) KR100833540B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140006321A (ko) * 2012-07-03 2014-01-16 삼성전자주식회사 데이터 스트림에서 효율적인 다중 연속 집계 질의 처리 장치 및 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020003381A (ko) * 1999-04-15 2002-01-12 샌제이브 사이두 자원의 할당을 최적화하는 시스템 및 방법
KR20020031390A (ko) * 1999-07-20 2002-05-01 엘그레시 도론 질의 최적화 계획에 대한 색인 변화의 효과를 보기 위한데이터베이스 시스템

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020003381A (ko) * 1999-04-15 2002-01-12 샌제이브 사이두 자원의 할당을 최적화하는 시스템 및 방법
KR20020031390A (ko) * 1999-07-20 2002-05-01 엘그레시 도론 질의 최적화 계획에 대한 색인 변화의 효과를 보기 위한데이터베이스 시스템

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140006321A (ko) * 2012-07-03 2014-01-16 삼성전자주식회사 데이터 스트림에서 효율적인 다중 연속 집계 질의 처리 장치 및 방법
US9355149B2 (en) 2012-07-03 2016-05-31 Samsung Electronics Co., Ltd. Apparatus and method for efficiently processing multiple continuous aggregate queries in data streams
KR101959562B1 (ko) * 2012-07-03 2019-03-18 삼성전자 주식회사 데이터 스트림에서 효율적인 다중 연속 집계 질의 처리 장치 및 방법

Similar Documents

Publication Publication Date Title
US10171284B2 (en) Reachability-based coordination for cyclic dataflow
US7505960B2 (en) Scalable retrieval of data entries using an array index or a secondary key
CN110383261B (zh) 用于多流存储装置的流选择
US7774336B2 (en) Adaptively reordering joins during query execution
Shein et al. Flatfit: Accelerated incremental sliding-window aggregation for real-time analytics
US20110022581A1 (en) Derived statistics for query optimization
US20130138679A1 (en) Database query optimization and cost estimation
CN105590321A (zh) 一种基于块的子图构建及分布式图处理方法
CN101650730B (zh) 数据流中带权值频繁项挖掘方法和系统
WO2022241813A1 (zh) 一种基于图压缩的图数据库构建方法、装置及相关组件
Ardakani et al. Decremental algorithm for adaptive routing incorporating traveler information
CN111382320A (zh) 一种面向知识图谱的大规模数据增量处理方法
Gandhi et al. Space-efficient online approximation of time series data: Streams, amnesia, and out-of-order
KR100833540B1 (ko) 다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화를위한 시스템 및 그 방법
CN105574076B (zh) 一种基于Bloom Filter的键值对存储结构及方法
CN107656980B (zh) 应用于分布式数据库系统中的方法及分布式数据库系统
WO2012114402A1 (ja) データベース管理装置及びデータベース管理方法
WO2017113865A1 (zh) 一种大数据增量计算方法和装置
CN116910061A (zh) 一种数据库的分库分表方法、装置、设备及可读存储介质
CN104731889B (zh) 一种估算查询结果大小的方法
JPWO2015049734A1 (ja) 検索システム及び検索方法
CN105786931B (zh) 一种树结构资源存储、查询的方法和装置
Mo et al. Single-source personalized pageranks with workload robustness
Winter et al. Communication-Optimal Parallel Reservoir Sampling
CN109710610B (zh) 数据处理方法、装置及计算设备

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

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140303

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee