KR101660860B1 - 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법 및 장치 - Google Patents

분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법 및 장치 Download PDF

Info

Publication number
KR101660860B1
KR101660860B1 KR1020150050710A KR20150050710A KR101660860B1 KR 101660860 B1 KR101660860 B1 KR 101660860B1 KR 1020150050710 A KR1020150050710 A KR 1020150050710A KR 20150050710 A KR20150050710 A KR 20150050710A KR 101660860 B1 KR101660860 B1 KR 101660860B1
Authority
KR
South Korea
Prior art keywords
node
logical
data
physical
processing
Prior art date
Application number
KR1020150050710A
Other languages
English (en)
Other versions
KR20150118046A (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 KR20150118046A publication Critical patent/KR20150118046A/ko
Application granted granted Critical
Publication of KR101660860B1 publication Critical patent/KR101660860B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0631Management of faults, events, alarms or notifications using root cause analysis; using analysis of correlation between notifications, alarms or events based on decision criteria, e.g. hierarchy, tree or time analysis
    • H04L41/064Management of faults, events, alarms or notifications using root cause analysis; using analysis of correlation between notifications, alarms or events based on decision criteria, e.g. hierarchy, tree or time analysis involving time analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0631Management of faults, events, alarms or notifications using root cause analysis; using analysis of correlation between notifications, alarms or events based on decision criteria, e.g. hierarchy, tree or time analysis
    • H04L41/065Management of faults, events, alarms or notifications using root cause analysis; using analysis of correlation between notifications, alarms or events based on decision criteria, e.g. hierarchy, tree or time analysis involving logical or physical relationship, e.g. grouping and hierarchies

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 실시예는 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법 및 장치를 제공한다. 상기 방법은, 처리 노드가, 마스터 노드에 의해 전송된 물리 노드 다이어그램을 수신하는 단계 - 상기 처리 노드는 상기 물리 노드 다이어그램 내의 제1 논리 노드의 임의의 제1 물리 노드이고, 상기 물리 노드 다이어그램은 하나 이상의 제1 논리 노드와 하나 이상의 제2 논리 노드를 포함하고, 상기 제1 논리 노드는 하나 이상의 제1 물리 노드를 포함하고, 상기 제2 논리 노드는 하나 이상의 제2 물리 노드를 포함하고, 상기 제1 논리 노드와 상기 제2 논리 노드는 연결되어 있음 -; 상기 처리 노드가 상기 물리 노드 다이어그램에 따라 상기 처리 노드의 계산될 데이터 큐브의 구조를 결정하는 단계; 상기 처리 노드가 상기 마스터 노드에 의해 전송된 질의 커맨드를 수신하면, 상기 처리 노드의 계산될 데이터 큐브의 구조에 따라, 상기 처리 노드에 의해 수신된 데이터 스트림에 대해 집성 작업을 수행하여 데이터 큐브를 생성하는 단계를 포함한다. 본 발명의 실시예에서 제공된 방법에 따르면, 컴퓨터에 의한 데이터 큐브의 계산 및 질의 속도가 증대된다.

Description

분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법 및 장치 {METHOD AND APPARATUS FOR CREATING DATA CUBE IN STREAMING MANNER BASED ON DISTRIBUTED SYSTEM}
본 발명은 컴퓨터 기술에 관한 것으로, 특히 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법 및 장치에 관한 것이다.
최근, 네트워크 기술이 급속도로 발전함에 따라, 네트워크 보안이 특히 중요하게 되었다. 일반적으로, 현재의 네트워크 보안 상태를 알고 현재 네트워크의 보안 상황을 동적으로 평가하기 위해, 의사 결정자는 실시간으로 현재의 네트워크 보안 이벤트를 분석한다. 모니터링 네트워크 보안의 실시간 품질에 관한 요건에 대해, 의사 결정자는 보통 최근 전체 네트워크 실행 상황에 유의하고, 과거 데이터에 관해서는 상관하지 않는다. 또, 네트워크 보안 이벤트는 데이터 스트림의 형태로 연속적으로 빠르게 나타나고, 실시간 품질, 대량의 데이터, 급격한 변화 등을 특징으로 하며; 데이터의 중요성은 시간이 지남에 따라 점차 감소한다. 따라서, 나타나는 이벤트 스트림을 제때 처리하기 위해서는, 낮은 지연의 빅데이터 분석 엔진(low-delay big data analysis engine)이 요구된다. 이에 기초하여, 스트림 데이터 다차원 분석(스트림 온라인 분석 처리: Stream On-Line Analytical Processing, 이하, 스트림 OLAP) 기술이 개발되었고, 스트림 데이터 다국적 분석 기술(stream data multinational analysis technology)은, 다차원 분석의 목적을 달성하기 위해, 일반적으로 시간 윈도(time window) 내의 모든 이벤트 스트림에 대한 스트림 데이터 큐브(스트림 큐브: Stream Cube)를 생성하고, 스트림 큐브에 대해, 상이한 차원 및 레벨의 기본 데이터를 고차원 데이터로 집성하는 데 사용된다. 도 1에 도시된 다차원 모델에서, 각 차원은 다수의 레벨을 포함할 수 있으며, 예를 들어, 근원지 인터넷 프로토콜(source Internet Protocol, 이하 근원지 IP) 차원은 근원지 IP 레벨, 근원지 도시(source city) 레벨, 근원지 주(source province) 레벨, 및 근원지 국가(source country) 레벨을 포함한다. 도 1에는, IP가 S1인 1000개의 E1 타입 데이터가 있고, IP가 S2인 2000개의 E1 타입 데이터가 있으며, S1 및 S2는 C1 도시의 IP이어서, C1 시 내의 E1 타입의 데이터의 수는 3000개이다. 그 후, IP가 C1 시에 속하는 모든 데이터는 데이터 큐브를 생성하기 위해 집성된다, 즉, E1 타입 네트워크 이벤트의 수는 IP 레벨에서 시 레벨로 카운팅된다.
종래 기술에서는, 단일 머신(하나의 물리 머신)이 수신된 데이터 스트림에 대해 집성 작업(aggregation operation)을 수행하여 데이터 스트림을 상이한 레벨의 데이터 큐브(즉, 상이한 구조의 데이터 큐브)로 집성한다. 예를 들어, IP 레벨의 데이터가 시 레벨로 집성되어 데이터 큐브 1을 생성할 수 있거나, IP 레벨의 데이터가 주 레벨로 집성되어 데이터 큐브 2를 생성할 수 있다.
그러나, 종래 기술에서는, 동일한 데이터 스트림이 상이한 데이터 구조의 데이터 큐브로 집성될 때, 계산 시간이 지나치게 길다.
본 발명의 실시예는, 컴퓨터에 의한 데이터 큐브(data cube) 컴퓨팅 속도가 느리고 긴 시간을 소비하는 종래 기술의 기술적 문제를 해결하기 위해 사용되는, 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법 및 장치를 제공한다.
제1 측면에 따르면, 본 발명은 마스터 노드, 하나 이상의 제1 물리 노드, 및 하나 이상의 제2 물리 노드를 포함하는 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법을 제공하며, 상기 방법은,
처리 노드가, 상기 마스터 노드에 의해 전송된 물리 노드 다이어그램을 수신하는 단계 - 상기 물리 노드 다이어그램은 미리 설정된 스키마(preset schema) 및 클러스터 자원(cluster resource)에 따라 상기 마스터 노드에 의해 생성되고, 상기 처리 노드는 상기 물리 노드 다이어그램 내의 제1 논리 노드의 임의의 제1 물리 노드이고, 상기 물리 노드 다이어그램은 하나 이상의 제1 논리 노드와 하나 이상의 제2 논리 노드를 포함하고, 상기 제1 논리 노드는 하나 이상의 제1 물리 노드를 포함하고, 상기 제2 논리 노드는 하나 이상의 제2 물리 노드를 포함하고, 상기 제1 논리 노드와 상기 제2 논리 노드는 연결되어 있음 -;
상기 처리 노드가, 상기 물리 노드 다이어그램에 따라 상기 처리 노드의 계산될 데이터 큐브의 구조(structure)를 결정하는 단계;
상기 처리 노드가 상기 마스터 노드에 의해 전송된 질의 커맨드(query command)를 수신하면, 상기 처리 노드가, 상기 처리 노드의 계산될 데이터 큐브의 구조에 따라, 상기 처리 노드에 의해 수신된 데이터 스트림에 대해 집성 작업을 수행하여 데이터 큐브를 생성하는 단계 - 상기 데이터 스트림은 상기 제2 물리 노드에 의해 상기 데이터 스트림에 추가된 시간스탬프(timestamp)를 싣고 있고(carry), 상기 시간스탬프는 상기 데이터 스트림이 상기 제2 논리 노드로 유입하는 순간을 나타냄 -; 및
상기 처리 노드가, 상기 마스터 노드에 상기 데이터 큐브를 전송하는 단계를 포함한다.
제1 측면을 참조하여, 제1 측면의 제1 가능한 구현 방식에서, 상기 처리 노드가, 상기 처리 노드의 계산될 데이터 큐브의 구조에 따라, 상기 처리 노드에 의해 수신된 데이터 스트림에 대해 집성 작업을 수행하여 데이터 큐브를 생성하는 단계는,
상기 처리 노드가, 상기 처리 노드의 시간 윈도(time window) 내의 제1 윈도 유닛(window unit)에서의 데이터 스트림에 대해 집성 작업을 수행하여, 제1 서브데이터 큐브(sub-data cube)를 생성하는 단계 - 상기 시간 윈도는 하나 이상의 윈도 유닛을 포함하고, 상기 시간 윈도의 길이는 고정되어 있음 -;
상기 처리 노드가 상기 시간 윈도 내의 마지막 윈도 유닛 내의 데이터 스트림에 대해 집성 작업을 수행하여, 제2 서브데이터 큐브를 생성하는 단계 ; 및
상기 처리 노드가, 상기 제1 서브데이터 큐브, 상기 제2 서브데이터 큐브, 및 상기 처리 노드에 의한 사전 집성(aggregation in advance)으로 취득되고 상기 시간 윈도 내의 하나 이상의 다른 완전히 점유된 윈도 유닛에 대응하는 서브데이터 큐브를 결합하여, 상기 데이터 큐브를 생성하는 단계를 포함한다.
제1 측면의 제1 가능한 구현 방식을 참조하여, 제1 측면의 제2 가능한 구현 방식에서, 상기 처리 노드가 상기 처리 노드의 시간 윈도 내의 제1 윈도 유닛 내의 데이터 스트림에 대해 집성 작업을 수행하여 제1 서브데이터 큐브를 생성하는 단계 전에,
상기 처리 노드가, 상기 처리 노드에 의해 수신된 데이터 스트림을 상기 데이터 스트림 내의 상기 시간스탬프에 따라 상기 시간 윈도 내의 대응하는 윈도 유닛에 버퍼링하는 단계;
상기 처리 노드가, 상기 시간 윈도 내의 완전히 점유된 윈도에서의 데이터 스트림에 대해 집성 작업을 수행하여 서브데이터 큐브를 생성하고, 상기 완전히 점유된 윈도 유닛을 표시하는 단계;
상기 처리 노드가, 상기 시간 윈도 내의 모든 윈도 유닛이 완전히 점유되어 있고, 새로운 데이터 스트림이 상기 시간 윈도로 유입하는 것으로 판단하면, 상기 처리 노드가 새로운 윈도 유닛을 상기 시간 윈도의 상기 제1 윈도 유닛으로서 생성하는 단계; 및
상기 처리 노드가, 상기 제1 윈도 유닛에 상기 새로운 데이터 스트림을 버퍼링하고, 상기 시간 윈도의 마지막 윈도 유닛 내에 있고 시간스탬프가 상기 시간 윈도의 길이를 초과하는 데이터 스트림을 제어하여 유출하는 단계를 더 포함한다.
제1 측면의 제1 가능한 구현 방식 또는 제1 측면의 제2 가능한 구현 방식을 팜조하여, 제1 측면의 제3 구현 방식에서, 상기 물리 노드 다이어그램은, 최소 집성 비용의 원리에 따라 상기 마스터 노드에 의해 상기 제1 논리 노드 간에 확립되어 있는 집성 관계(aggregation relationship)를 더 포함하고,
상기 처리 노드에 의해 수신된 데이터 스트림은, 상기 처리 노드의 상위 레벨 처리 노드에 의해 전송된 기본 데이터 스트림; 또는 상기 처리 노드의 상위 레벨 처리 노드에 의해 전송된 서브데이터 큐브를 더 포함하고, 상기 기본 데이터 스트림은 집성 작업이 수행되지 않은 데이터 스트림이고, 상기 상위 레벨 처리 노드는 상기 처리 노드가 위치하는 제1 논리 노드의 부모 논리 노드의 물리 노드이고, 상기 서브데이터 큐브는 집성 작업이 수행된 데이터 스트림이다.
제2 측면에 따르면, 본 발명은 마스터 노드, 하나 이상의 제1 물리 노드, 및 하나 이상의 제2 물리 노드를 포함하는 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법을 제공하며, 상기 방법은,
상기 마스터 노드가 미리 설정된 스키마 및 클러스터 자원에 따라 물리 노드 다이어그램을 생성하는 단계 - 상기 물리 노드 다이어그램은 하나 이상의 제1 논리 노드와 하나 이상의 제2 논리 노드를 포함하고, 상기 제1 논리 노드는 하나 이상의 제1 물리 노드를 포함하고, 상기 제2 논리 노드는 하나 이상의 제2 물리 노드를 포함하고, 상기 제1 논리 노드와 상기 제2 논리 노드는 연결되어 있음 -;
상기 마스터 노드가 처리 노드에 상기 물리 노드 다이어그램을 전송하여, 상기 처리 노드가 상기 물리 노드 다이어그램에 따라 상기 처리 노드의 계산될 데이터 큐브의 구조를 결정하도록 하는 단계 - 상기 처리 노드는 상기 물리 노드 다이어그램 내의 상기 제1 논리 노드의 임의의 제1 물리 노드임 -;
상기 마스터 노드가 상기 처리 노드에 질의 커맨드를 전송하여, 상기 처리 노드가, 상기 처리 노드의 계산될 데이터 큐브의 구조에 따라, 상기 처리 노드에 의해 수신된 데이터 스트림에 대해 집성 작업을 수행하여 데이터 큐브를 생성하도록 하는 단계 - 상기 데이터 스트림은 상기 제2 물리 노드에 의해 상기 데이터 스트림에 추가된 시간스탬프를 싣고 있고, 상기 시간스탬프는 상기 데이터 스트림이 상기 제2 논리 노드로 유입하는 순간을 나타냄 -;
상기 마스터 노드가 상기 처리 노드에 의해 전송된 데이터 큐브를 수신하는 단계를 포함한다.
제2 측면을 참조하여, 제2 측면의 제1 가능한 구현 방식에서, 상기 마스터 노드가 미리 설정된 스키마 및 클러스터 자원에 따라 물리 노드 다이어그램을 생성하는 단계는,
상기 마스터 노드가 상기 미리 설정된 스키마에 따라 노드 레벨 다이어그램을 생성하는 단계 - 상기 노드 레벨 다이어그램은 상이한 데이터 큐브 간의 레벨 관계를 보여 주는 데 사용되고, 상기 노드 레벨 다이어그램 내의 각 노드는 하나의 구조의 데이터 큐브를 나타냄 -;
상기 마스터 노드가, 최소 집성 비용의 원리에 따라 상기 제1 논리 노드 간의 집성 관계를 확립하고; 상기 집성 관계, 상기 노드 레벨 다이어그램, 및 상기 스키마에 정의된 모든 논리 노드에 따라 논리 노드 다이어그램을 생성하는 단계; 및
상기 마스터 노드가, 상기 논리 노드 다이어그램, 상기 스키마에 정의된 모든 논리 노드의 병렬도(parallelism degree), 및 상기 클러스터 자원에 따라, 상기 물리 노드 다이어그램을 생성하는 단계를 포함한다.
제2 측면을 참조하여, 제2 측면의 제2 가능한 구현 방식에서, 상기 마스터 노드가 상기 처리 노드에 질의 커맨드를 전송하기 전에,
상기 마스터 노드가 클라이언트에 의해 전송된 질의문(query statement)을 수신하는 단계; 및
상기 마스터 노드가 상기 질의문에 따라 질의될(to-be-queried) 논리 노드를 결정하는 단계를 더 포함한다.
제2 측면의 제2 가능한 구현 방식을 참조하여, 제2 측면의 제3 가능한 구현 방식에서, 상기 질의될 논리 노드가 상기 처리 노드가 위치하는 제1 논리 노드이면, 상기 마스터 노드는 상기 클라이언트에 상기 데이터 큐브를 전송한다.
제2 측면의 제2 가능한 구현 방식을 참조하여, 제2 측면의 제4 가능한 구현 방식에서, 상기 질의될 논리 노드가 제3 논리 노드이고 상기 제3 논리 노드가 상기 물리 노드 다이어그램에 없는 노드이면, 상기 마스터 노드가, 노드 레벨 다이어그램 및 최소 집성 비용의 원리에 따라, 상기 처리 노드가 위치하는 제1 논리 노드가 최소 비용으로 상기 제3 논리 노드에 대해 집성이 수행되는 논리 노드인 것으로 결정한다.
마스터 노드, 하나 이상의 제1 물리 노드, 및 하나 이상의 제2 물리 노드를 포함하는 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 장치를 제공하며, 상기 장치는,
상기 마스터 노드에 의해 전송된 물리 노드 다이어그램을 수신하도록 구성된 수신 모듈 - 상기 물리 노드 다이어그램은 미리 설정된 스키마 및 클러스터 자원에 따라 상기 마스터 노드에 의해 생성되고, 상기 장치는 상기 물리 노드 다이어그램 내의 제1 논리 노드의 임의의 제1 물리 노드이고, 상기 물리 노드 다이어그램은 하나 이상의 제1 논리 노드와 하나 이상의 제2 논리 노드를 포함하고, 상기 제1 논리 노드는 하나 이상의 제1 물리 노드를 포함하고, 상기 제2 논리 노드는 하나 이상의 제2 물리 노드를 포함하고, 상기 제1 논리 노드와 상기 제2 논리 노드는 연결되어 있음 -;
상기 물리 노드 다이어그램에 따라 처리 모듈의 계산될 데이터 큐브의 구조를 결정하도록 구성된 상기 처리 모듈;
상기 수신 모듈이 상기 마스터 노드에 의해 전송된 질의 커맨드를 수신하는 경우, 상기 처리 모듈의 계산될 데이터 큐브의 구조에 따라, 상기 처리 모듈에 의해 수신된 데이터 스트림에 대해 집성 작업을 수행하여, 데이터 큐브를 생성하도록 구성된 생성 모듈 - 상기 데이터 스트림은 상기 제2 물리 노드에 의해 상기 데이터 스트림에 추가된 시간스탬프를 싣고 있고, 상기 시간스탬프는 상기 데이터 스트림이 상기 제2 논리 노드로 유입하는 순간을 나타냄 -; 및
상기 마스터 노드에 상기 데이터 큐브를 전송하도록 구성된 전송 모듈을 포함한다.
제3 측면을 참조하여, 제3 측면의 제1 가능한 구현 방식에서, 상기 생성 모듈은,
상기 장치의 시간 윈도 내의 제1 윈도 유닛 내의 데이터 스트림에 대해 집성 작업을 수행하여, 제1 서브데이터 큐브를 생성하도록 구성된 제1 생성 서브유닛 - 상기 시간 윈도는 하나 이상의 윈도 유닛을 포함하고, 상기 시간 윈도의 길이는 고정되어 있음 - ;
상기 시간 윈도 내의 마지막 윈도 유닛 내의 데이터 스트림에 대해 집성 작업을 수행하여, 제2 서브데이터 큐브를 생성하도록 구성된 제2 생성 서브유닛; 및
상기 제1 서브데이터 큐브, 상기 제2 서브데이터 큐브, 및 처리 노드에 의한 사전 집성으로 취득되고 상기 시간 윈도 내의 하나 이상의 다른 완전히 점유된 윈도 유닛에 대응하는 서브데이터 큐브를 결합하여, 상기 데이터 큐브를 생성하도록 구성된 결합 서브유닛을 포함한다.
제3 측면의 제1 가능한 구현 방식을 참조하여, 제3 측면의 제2 가능한 구현 ㅂt식에서, 상기 생성 모듈은,
상기 제1 생성 서브유닛이 상기 제1 서브데이터 큐브를 생성하기 전에, 버퍼 서브유닛에 의해 수신된 데이터 스트림을 상기 데이터 스트림 내의 시간스탬프에 따라 상기 시간 윈도 내의 대응하는 윈도 유닛에 버퍼링하도록 구성된 상기 버퍼 서브유닛;
상기 시간 윈도 내의 완전히 점유된 윈도 유닛 내의 데이터 스트림에 대해 집성 작업을 수행하여 서브데이터 큐브를 생성하고, 상기 완전히 점유된 윈도 유닛을 표시하도록 구성된 제3 생성 서브유닛; 및
상기 장치가, 상기 시간 윈도 내의 모든 윈도 유닛이 완전히 점유되어 있고, 새로운 데이터 스트림이 상기 시간 윈도로 유입하는 것으로 판단하면, 새로운 윈도 유닛을 상기 시간 윈도의 상기 제1 윈도 유닛으로서 생성하도록 구성된 제4 생성 서브유닛을 더 포함하고,
상기 버퍼 서브유닛은, 상기 새로운 데이터 스트림을 상기 제1 윈도 유닛에 버퍼링하고, 상기 시간 윈도의 마지막 윈도 유닛에 있고 시간스탬프가 상기 시간 윈도의 길이를 초과하는 데이터 스트림을 제어하여 유출하도록 더 구성되어 있다.
제3 측면의 제1 가능한 구현 방식 또는 제3 측면의 제2 가능한 구현 방식을 팜조하여, 제3 측면의 제3 가능한 구현 방식에서, 상기 물리 노드 다이어그램은, 최소 집성 비용의 원리에 따라 상기 마스터 노드에 의해 상기 제1 논리 노드 간에 확립되어 있는 집성 관계를 더 포함하고,
상기 버퍼 서브유닛에 의해 수신된 데이터 스트림은, 상기 장치의 상위 레벨 장치에 의해 전송된 기본 데이터 스트림; 또는 상기 장치의 상위 레벨 장치에 의해 전송된 서브데이터 큐브를 포함하고, 상기 기본 데이터 스트림은 집성 작업이 수행되지 않은 데이터 스트림이고, 상기 상위 레벨 장치는 상기 장치가 위치하는 제1 논리 노드의 부모 논리 노드의 물리 노드이고, 상기 서브데이터 큐브는 집성 작업이 수행된 데이터 스트림이다.
제4 측면에 따르면, 본 발명은 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 장치로서, 상기 분산 시스템은 상기 장치, 하나 이상의 제1 물리 노드, 및 하나 이상의 제2 물리 노드를 포함하고, 상기 장치는,
미리 설정된 스키마 및 클러스터 자원에 따라 물리 노드 다이어그램을 생성하도록 구성된 제1 생성 모듈 - 상기 물리 노드 다이어그램은 하나 이상의 제1 논리 노드 및 하나 이상의 제2 논리 노드를 포함하고, 상기 제1 논리 노드는 하나 이상의 제1 물리 노드를 포함하고, 상기 제2 논리 노드는 하나 이상의 제2 물리 노드를 포함하고, 상기 제1 논리 노드와 상기 제2 논리 노드는 연결되어 있음 -;
처리 노드에 상기 물리 노드 다이어그램을 전송하도록 구성되어, 상기 처리 노드가 상기 물리 노드 다이어그램에 따라 상기 처리 노드의 계산될 데이터 큐브의 구조를 결정하도록 하는, 제1 전송 모듈 - 상기 처리 노드는 상기 물리 노드 다이어그램 내의 상기 제1 논리 노드의 임의의 제1 물리 노드임 -;
상기 처리 노드에 질의 커맨드를 전송하도록 구성되어, 상기 처리 노드가, 상기 처리 노드의 계산될 데이터 큐브의 구조에 따라, 상기 처리 노드에 의해 수신된 데이터 스트림에 대해 집성 작업을 수행하여 데이터 큐브를 생성하도록 하는 제2 전송 모듈 - 상기 데이터 스트림은 상기 제2 물리 노드에 의해 상기 데이터 스트림에 추가된 시간스탬프를 싣고 있고, 상기 시간스탬프는 상기 데이터 스트림이 상기 제2 논리 노드로 유입하는 순간을 나타냄 -; 및
상기 처리 노드에 의해 전송된 데이터 큐브를 수신하도록 구성된 제1 수신 모듈을 포함한다.
제4 측면을 참조하여, 제4 측면의 제1 가능한 구현 방식에서, 상기 제1 생성 모듈은 구체적으로,
상기 미리 설정된 스키마에 따라 노드 레벨 다이어그램을 생성하도록 구성된 제1 생성 서브유닛 - 상기 노드 레벨 다이어그램은 상이한 데이터 큐브 간의 레벨 관계를 보여 주는 데 사용되고, 상기 노드 레벨 다이어그램 내의 각 노드는 하나의 구조의 데이터 큐브를 나타냄 -;
최소 집성 비용의 원리에 따라 상기 제1 논리 노드 간의 집성 관계를 확립하고; 상기 집성 관계, 상기 노드 레벨 다이어그램, 및 상기 스키마에 정의된 모든 논리 노드에 따라 논리 노드 다이어그램을 생성하도록 구성된 제2 생성 서브유닛; 및
상기 논리 노드 다이어그램, 상기 스키마에 정의된 모든 논리 노드의 병렬도, 및 상기 클러스터 자원에 따라 상기 물리 노드 다이어그램을 생성하도록 구성된 제3 생성 서브유닛을 포함한다.
제4 측면을 참조하여, 제4 측면의 제2 가능한 구현 방식에서, 상기 장치는,
상기 제2 전송 모듈이 상기 처리 노드에 상기 질의 커맨드를 전송하기 전에, 클라이언트에 의해 전송된 질의문을 수신하도록 구성된 제2 수신 모듈; 및
상기 질의문에 따라 질의될 논리 노드를 결정하도록 구성된 결정 모듈을 더 포함한다.
제4 측면의 제2 가능한 구현 방식을 참조하여, 제4 측면의 제3 가능한 구현 방식에서, 상기 장치는,
제3 전송 모듈을 더 포함하고, 상기 제3 전송 모듈은 상기 질의될 논리 노드가 상기 처리 노드가 위치하는 제1 논리 노드이면, 상기 클라이언트에 상기 데이터 큐브를 전송하도록 구성되어 있다.
제4 측면의 제2 가능한 구현 방식을 참조하여, 제4 측면의 제4 가능한 구현 방식에서, 상기 장치는 제2 생성 모듈을 더 포함하고, 상기 질의될 논리 노드가 제3 논리 노드이고 상기 제3 논리 노드가 상기 물리 노드 다이어그램에 없는 노드이면, 상기 결정 모듈은, 노드 레벨 다이어그램 및 최소 집성 비용의 원리에 따라, 상기 처리 노드가 위치하는 제1 논리 노드가 최소 비용으로 상기 제3 논리 노드에 대해 집성이 수행되는 논리 노드인 것으로 결정하도록 더 구성되어 있고;
상기 제2 생성 모듈은, 상기 제3 논리 노드에 대한 데이터 큐브의 구조에 따라, 상기 처리 노드에 의해 전송된 상기 데이터 큐브에 대해 집성 작업을 수행하여, 새로운 데이터 큐브를 생성도록 구성되어 있고;
상기 제3 전송 모듈은 상기 클라이언트에 상기 새로운 데이터 큐브를 전송하도록 더 구성되어 있다.
본 발명의 실시예에서 제공되는 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법 및 장치에 따르면, 처리 노드가, 마스터 노드에 의해 전송된 물리 노드 다이어그램을 수신하고; 물리 노드 다이어그램에 따라 처리 노드의 계산될 데이터 큐브의 구조를 결정하고; 마스터 노드에 의해 전송된 질의 커맨드를 수신하는 경우, 처리 노드에 의해 수신된 데이터 스트림에 대해 집성 작업을 수행하여 데이터 큐브를 생성하고; 그 데이터 큐브를 마스터 노드에 전송한다. 실시예에 제공된 방법에 따르면, 집성 작업은 다수의 처리 노드를 사용하여 데이터 스트림에 대해 개별적으로 수행되어 상이한 구조의 데이터 큐브를 생성할 수 있고; 분산 시스템이 다수의 물리 머신(physical machine)(즉, 각 처리 노드가 하나의 물리 머신에 대응함)를 포함하는 경우, 데이터 스트림이 다수의 물리 머신을 사용하여 상이한 구조의 데이터 큐브로 집성될 수 있어, 데이터 큐브 계산을 가속화하고, 클라이언트에 의한 데이터 큐브의 질의 효율을 향상시킬 수 있다.
본 발명의 실시예에서의 기술적 방안을 더욱 명확하게 설명하기 위해, 이하에 실시예의 설명에 필요한 첨부도면을 간단하게 소개한다. 명백히, 이하의 설명에서의 첨부도면은 단지 본 발명의 일부 실시예를 보여줄 뿐이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진자(이하, 당업자라고 함)라면 창의적인 노력 없이 이들 첨부도면으로부터 다른 도면을 도출할 수 있을 것이다.
도 1은 본 발명에 따른 다차원 모델의 개략도이다.
도 2는 본 발명에 따른 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법의 실시예 1의 개략 흐름도이다.
도 3은 본 발명에 따른 스키마의 개략도이다.
도 4는 본 발명에 따른 노드 레벨 다이어그램이다.
도 5는 본 발명에 따른 논리 노드 다이어그램이다.
도 6은 본 발명에 따른 물리 노드 다이어그램이다.
도 7은 본 발명에 따른 집성 작업의 개략도이다.
도 8은 본 발명에 따른 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법의 실시예 2의 개략 흐름도이다.
도 9는 본 발명에 따른 시간 윈도의 개략도이다.
도 10은 본 발명에 따른 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법의 실시예 3의 개략 흐름도이다.
도 11은 본 발명에 따른 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법의 실시예 4의 개략 흐름도이다.
도 12는 본 발명에 따른 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법의 실시예 5의 개략 흐름도이다.
도 13은 본 발명에 따른 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 장치의 제1 실시예의 개략적 구성도이다.
도 14는 본 발명에 따른 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 장치의 실시예 2의 개략 구성도이다.
도 15는 본 발명에 따른 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 장치의 실시예 3의 개략 구성도이다.
도 16은 본 발명에 따른 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 장치의 실시예 4의 개략 구성도이다.
도 17은 본 발명에 따른 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 장치의 실시예 5의 개략 구성도이다.
본 발명의 실시예의 목적, 기술적 방안, 및 이점을 더 명확하게 하기 위해, 이하에 본 발명의 실시예에서의 첨부도면을 참조하여 본 발명의 실시예의 기술적 방안을 명확하게 설명한다. 명백히, 설명하는 실시예는 본 발명의 실시예의 전부가 아니라 일부일 뿐이다. 당업자가 본 발명의 실시예에 기초하여 창의적인 노력 없이 얻은 모든 다른 실시예는 본 발명의 보호 범위에 속한다.
도 2는 본 발명에 따른 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법의 실시예 1의 개략 흐름도이다.
분산 시스템은 마스터 노드, 하나 이상의 제1 물리 노드, 및 하나 이상의 제2 물리 노드를 포함한다. 여기서 언급되는 마스터 노드, 제1 물리 노드, 및 제2 물리 노드는 하나의 물리 머신(예를 들어, 컴퓨터)에 각각 대응할 수 있다, 즉, 여기서 분산 시스템은 다수의 물리 머신을 포함할 수 있거나; 또는 마스터 노드, 제1 물리 노드, 및 제2 물리 노드는 하나의 물리 머신에 모두 배치될 수 있으며, 여기서 마스터 노드는 물리 머신 상의 모든 물리 노드를 관리하고 제어하는 제어기에 상응할 수 있고, 제1 물리 노드 또는 제2 물리 노드는 물리 머신 상의 처리 유닛 또는 처리 모듈일 수 있다. 즉, 분산 시스템은 하나의 물리 머신을 포함할 수도 있다. 도 2에 도시된 바와 같이, 상기 방법은 이하의 단계를 포함한다:
S101: 처리 노드가 마스터 노드에 의해 전송된 물리 노드 다이어그램을 수신하며, 물리 노드 다이어그램은 미리 설정된 스키마 및 클러스터 자원에 따라 마스터 노드에 의해 생성되고, 처리 노드는 물리 노드 다이어그램 내의 제1 논리 노드의 임의의 제1 물리 노드이고, 물리 노드 다이어그램은 하나 이상의 제1 논리 노드와 하나 이상의 제2 논리 노드를 포함하고, 제1 논리 노드는 하나 이상의 제1 물리 노드를 포함하고, 제2 논리 노드는 하나 이상의 제2 물리 노드를 포함하고, 제1 논리 노드와 제2 논리 노드는 연결되어 있다.
구체적으로, 마스터 노드가 미리 설정된 스키마 및 클러스터 자원에 따라 물리 노드 다이어그램을 생성하며, 여기서 미리 설정된 스키마는 관리자(administrator)에 의해 업로드(upload)될 수 있거나, 마스터 노드에 의해 웹사이트 또는 데이터베이스와 같은 유효한 자원을 사용하여 취득될 수 있으며; 여기서 클러스터 자원은 하나 이상의 물리 머신일 수 있다. 마스터 노드는 스키마 내의 레벨 의존성(level dependence)에 따라 스키마를 파싱(parsing)하여 노드 레벨 다이어그램을 생성한다. 노드 레벨 다이어 그램은 상이한 데이터 큐브 간의 레벨 관계(즉, 노드 레벨 다이어그램 내의 상이한 레벨 간의 레벨 의존성)를 보여 주는 데 사용되며, 노드 레벨 다이어그램 내의 각 노드는 하나의 구조의 데이터 큐브를 나타낸다. 스키마의 모델에 대해서는 도 3을 참조할 수 있고, 노드 레벨 다이어그램에 대해서는 도 4를 참조할 수 있다.
도 3에는, 일부 논리 노드가 스키마 모델에 정의되어 있지만, 이들 논리 노드의 기능은 동일하지 않다. 예를 들어, 노드0은 노드0으로 유입하는 데이터에 시간스탬프를 추가하는 작업의 수행을 필요로 하며, 노드0은 본 실시예에서 제2 논리 노드이고; 병렬도(parallel)=2는 제2 논리 노드(노드0)에 시간스탬프(Timestamp)를 추가하기 위한 두 개의 제2 물리 노드가 배치되어 있다는 것을 나타낸다. 노드1은 근원지 IP 레벨의 데이터를 근원지 시 레벨로 집성하는 작업의 수행을 필요로 하며, 노드1은 본 실시예에서 제1 논리 노드이고, 제1 논리 노드에는 집성 작업을 수행하기 위한 두 개의 제1 물리 노드가 배치되어 있다. 노드2는 근원지 IP 레벨의 데이터를 근원지 시 레벨로 집성하는 작업의 수행을 필요로 하며, 노드2도 또한 본 실시예에서 제1 논리 노드이고, 제1 논리 노드에는 집성 작업을 수행하기 위한 하나의 제1 물리 노드가 배치되어 있다. 노드3은 목적지 IP 레벨의 데이터를 목적지 시 레벨로 집성하는 작업의 수행을 필요로 하며, 노드3도 또한 본 실시예에서 제1 논리 노드이고, 이 제1 논리 노드에는 집성 작업을 수행하기 위한 하나의 제1 물리 노드가 배치되어 있다. 다시 말해, 본 실시예에서, 제1 논리 노드 및 제1 물리 노드는 집성 작업을 수행하기 위한 노드이고, 제2 논리 노드 및 제2 물리 노드는 데이터 스트림에 시간스탬프를 추가하기 위한 노드이다. 또, 도 3은 또한 상이한 차원에 포함된 레벨을 보여주며, 예를 들면: 근원지 IP 차원은 근원지 국가(Country) 레벨, 근원지 주(Province) 레벨, 근원지 시(City) 레벨, 및 근원지 IP 레벨을 포함하고; 목적지 IP 차원은 목적지 시 레벨 및 목적지 IP 레벨을 포함한다.
도 4는 마스터 노드에 의해 생성된 노드 레벨 다이어그램이다. 노드 레벨 다이어그램 내의 각 노드는 하나의 구조의 데이터 큐브를 나타내고, 노드 레벨 다이어그램은 상이한 데이터 큐브 간의 레벨 관계(즉, 노드 레벨 다이어그램 내의 상이한 노드 간의 레벨 의존성)을 보여주는 데 사용된다. 마스터 노드는 스키마에 정의된 모든 논리 노드 및 최소 집성 비용의 원칙에 따라 제1 논리 노드 간의 집성 관계를 확립하고; 집성 관계, 노드 레벨 다이어그램, 및 스키마에 정의된 모든 논리 노드에 따라, 도 5에 도시된 논리 노드 다이어그램을 생성한다. 예를 들어, 도 5에 도시된 노드0은 데이터 큐브 0을 나타내고, 데이터 큐브 0의 구조는 데이터 큐브 0(근원지 IP, 목적지 IP, 이벤트 타입(Event-type) Id, ...)이며, 근원지 IP는 근원지 IP 차원에서의 근원지 IP 레벨을 나타내고, 목적지 시는 목저지 IP 차원에서의 목적지 시 레벨을 나타낸다, 즉, 데이터 큐브는 실제로 상이한 차원에서의 상이한 레벨의 데이터를 가리킨다. 도 5에 도시된 논리 노드 다이어그램에서, 데이터 큐브 1은 데이터 큐브 0의 근원지 IP 레벨에서의 데이터를 근원지 시 레벨로 집성함으로써 생성되며, 데이터 큐브 1의 구조는 데이터 큐브 1(근원지 시, 목적지 IP, 이벤트 타입 Id, ...)이고; 데이터 큐브 3은 데이터 큐브 0의 목적지 IP 레벨에서의 데이터를 목적지 시 레벨로 집성함으로써 생성되며, 데이터 큐브 3의 구조는 데이터 큐브 3(근원지 IP, 목적지 시, 이벤트 타입 Id, ...)이다. 여기서 최소 집성 비용의 원리는, 상위 레벨(higher-level) 데이터 큐브는 다수의 하위 레벨(lower-level) 데이터 큐브로부터 집성에 의해 취득될 수 있다는 것을 의미하며, 상위 레벨 데이터 큐브를 형성하기 위한 하위 레벨 데이터 큐브로부터의 집성에 대한 집성 비용의 관점에서, 논리 노드 다이어그램을 생성하기 위해, 최소 집성 비용을 갖는 하위 레벨 데이터 큐브가 선택된다. 예를 들어, 도 5에 도시된 논리 노드 다이어그램에서, 데이터 큐브 2는 데이터 큐브 1로부터의 집성에 의해 취득될 수 있거나, 데이터 큐브 3으로부터의 집성에 의해 취득될 수 있지만, 데이터 큐브 1과 데이터 큐브 3의 집성 비용을 비교한 후, 마스터 노드는 최소 집성 비용을 갖는 데이터 큐브를 선택하여, 데이터 큐브 2를 형성한다. 도 5에 도시된 논리 노드 다이어그램은 실제로 데이터 큐브로부터의 집성 동안의 데이터 큐브 간의 의존성을 나타낸다.
그 후, 마스터 노드는, 논리 노드 다이어그램 및 클러스터 자원에 따라, 도 6에 도시된 물리 노드 다이어그램을 생성한다, 즉, 마스터 노드는 각 논리 노드의 병렬도에 따라 대응하는 논리 노드에 물리 노드를 배치한다. 도 6에서, 노드0은 도 5에 도시된 노드0(제2 논리 노드)에 대응하고, 마스터 노드는 노드0의 병렬도에 따라 노드0에 대해 두 개의 물리 노드를 배치하고; 노드1은 도 5에 도시된 노드1(제1 논리 노드)에 대응하고, 마스터 노드는 노드1의 병렬도에 따라 노드1에 대해 두 개의 물리 노드를 배치하고; 노드3은 도 5에 도시된 노드3(제1 논리 노드)에 대응하고, 마스터 노드는 노드3의 병렬도에 따라 노드3에 대해 하나의 물리 노드를 배치하고; 노드2는 도 5에 도시된 노드2(제1 논리 노드)에 대응하고, 마스터 노드는 노드2의 병렬도에 따라 노드2에 대해 하나의 물리 노드를 배치한다.
최종적으로, 마스터 노드는 물리 노드 다이어그램 내의 일부 물리 노드에 명령을 전달하고, 명령을 수신하는 물리 노드는 처리 노드의 역할을 하며, 마스터 노드는 이들 처리 노드에 물리 노드 다이어그램을 전달한다.
S102: 처리 노드가 물리 노드 다이어그램에 따라 처리 노드의 계산될 데이터 큐브의 구조를 결정한다.
구체적으로는, 전술한 S101에 기재된 내용에 따르면, 처리 노드는 물리 노드 다이어그램에 따라 처리 노드의 계산될 데이터 큐브의 레벨 구조를 취득할 수 있고, 각각의 처리 노드는 하나 이상의 구조의 데이터 큐브에 대응한다. 여기서, 하나의 처리 노드가 존재할 수 있거나 다수의 처리 노드가 존재할 수 있다. 즉, 각각의 처리 노드는 마스터 노드에 의해 전송된 물리 노드 다이어그램을 수신할 수 있고, 그 물리 노드 다이어그램에 따라 각 처리 노드의 데이터 큐브의 구조를 알게 된다. 도 6에 도시된 물리 노드 다이어그램에서, 데이터 큐브 1, 데이터 큐브 2, 데이터 큐브 3, 및 데이터 큐브 4는 모두 상이한 구조의 데이터 큐브를 가리킨다. 즉, 본 실시예에서, 데이터 스트림은 OLAP 분석을 수행하기 위해, 다수의 처리 노드를 사용하여 상이한 구조의 데이터 큐브로 집성될 수 있다. 분산 시스템이 다수의 물리 머신을 포함하는 경우, 이들 처리 노드는 물리 머신에 각각 대응할 수 있다. 즉, 본 실시예에서, 데이터 스트림은 OLAP 분석을 수행하기 위해, 다수의 물리 머신을 사용하여 상이한 구조의 데이터 큐브로 집성될 수 있으므로, 고속 처리가 달성된다. 또, 본 발명의 본 실시예에서, 모든 기본 데이터 스트림은 다수의 물리 머신의 메모리에 저장될 수 있으므로, 단일 기계의 한계로 인해 기본 데이터 스트림이 메모리와 외부 저장장치에 저장되기 때문에, 질의가 느려지는 종래기술의 기술적인 문제가 회피된다. 즉, 본 발명의 본 실시예에서 제공된 방법에 따르면, 데이터 큐브를 질의하는 속도를 증가시킬 수 있고, 또한, 본 발명의 실시예에서 제공된 방법에 따르면, 시스템 처리량(system throughput)도 향상시킬 수 있다. 물론, 본 실시예에서의 방법은 또한 분산 시스템이 단 하나의 물리 머신만을 포함하는 시나리오에도 적용 가능하다.
그러나, 종래기술에서는, 데이터 스트림이 단 하나의 물리 머신을 사용하여 다수의 구조의 데이터 큐브로 집성되므로; 계산이 느리고, 물리 머신의 오버헤드가 비교적 높다.
S103: 처리 노드가 마스터 노드에 의해 전송된 질의 커맨드를 수신하면, 처리 노드는, 처리 노드의 계산될 데이터 큐브의 구조에 따라, 처리 노드에 의해 수신된 데이터 스트림에 대해 집성 작업을 수행하여 데이터 큐브를 생성하며, 데이터 스트림은 제2 물리 노드에 의해 데이터 스트림에 추가된 시간스탬프를 싣고 있고, 시간스탬프는 데이터 스트림이 제2 논리 노드로 유입하는 순간을 나타낸다.
구체적으로, 처리 노드는 마스터 노드에 의해 전송된 질의 커맨드를 수신한 후, 시간스탬프가 제2 논리 노드(노드0)의 제2 물리 노드에서 데이터 스트림 S1에 추가되어, 스트림 S1'을 생성하고, 시간스탬프는 데이터 스트림 S1이 제2 로컬 노드로 유입하는 순간을 나타내며; 스트림 S1'는 다음 레벨의 모든 제1 논리 노드(노드1, 노드3)으로 유입할 필요가 있고; 노드1에서, 스트림 S1'는 단 하나의 제1 물리 노드로 진입할 수 있으며; 스트림 S1'가 제1 물리 노드로 진입할 때, 데이터 큐브를 생성하기 위해 집성 작업이 수행된다.
선택적으로, 마스터 노드에 의해 전송된 질의 커맨드는 데이터 큐브를 질의하기 위한 진술문(statement for querying, 질의문)일 수 있으며, 데이터 큐브 를 질의하기 위한 진술문은 클라이언트에 의해 마스터 노드로 전송되고; 그 질의문을 파싱한 후, 마스터 노드는 클라이언트가 질의하고자 하는 데이터 큐브의 구조를 알게 되고; 그 후, 마스터 노드는 그 데이터 큐브 구조에 대응하는 처리 노드에 질의 커맨드를 전송하여, 처리 노드가 도 7에 도시된 집성 작성을 수행하여, 데이터 큐브를 생성할 수 있도록 한다. 도 7에서, 투블(tuple)이 기본 데이터 스트림이며, 데이터 스트림의 타입은 투블(s1, d1, e1, 1000)이다, 즉, 근원지 IP 차원에서 근원지 IP 레벨의 데이터 스트림의 값은 s1이다, 즉, 데이터 스트림의 근원지 IP는 s1이고; 이 타입의 데이터가 1000개 있다(도면에서 s1 및 s2가 모두 c1 시에 속하는 IP이다). 데이터 스트림이 처리 노드로 유입할 때, (처리 노드상의 데이터 큐브의 구조일 수도 있는) 처리 노드의 데이터 스트림의 타입은 투플 (c1, d1, e1, 5000)이며, c1은 근원지 시를 나타낸다, 즉, 처리 노드는 s1에서 c1 시로의 데이터 스트림을 집성하는 작업을 수행한다. 집성 후에, 처리 노드에서 생성된 데이터 큐브는 투플 (c1, d1, e1, 5700)이고, 처리 노드는 s2가 c1 시에 속하는 데이터를 유출되게 한다.
S104: 처리 노드가 마스터 노드에 데이터 큐브를 전송한다
구체적으로, 처리 노드는 마스터 노드에 생성된 데이터 큐브를 전송하여, 마스터 노드가 그 데이터 큐브를 클라이언트에 전송하도록 한다.
본 발명의 본 실시예에서 제공되는 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법에 따르면, 처리 노드는 마스터 노드에 의해 전송된 물리 노드 다이어그램을 수신하고; 물리 노드 다이어그램에 따라 계산될 데이터 큐브의 구조를 결정하고; 마스터 노드에 의해 전송된 질의 커맨드를 수신하는 경우, 처리 노드에 의해 수신된 데이터 스트림에 대해 집성 작업을 수행하여 데이터 큐브를 생성하고; 그 데이터 큐브를 마스터 노드에 전송한다. 본 실시예에서 제공되는 방법에 따르면, 집성 작업은 다수의 처리 노드를 사용하여 데이터 스트림에 대해 개별적으로 수행되어 상이한 구조의 데이터 큐브를 생성할 수 있고; 분산 시스템이 다수의 물리 머신(즉, 각 처리 노드가 하나의 물리 머신에 대응함)를 포함하는 경우, 데이터 스트림은 다수의 물리 머신을 사용하여 상이한 구조의 데이터 큐브로 집성될 수 있으므로, 데이터 큐브 계산을 가속화하고, 클라이언트에 의한 데이터 큐브의 질의 효율을 향상시킬 수 있다.
도 8은 본 발명에 따른 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법의 실시예 2의 개략 흐름도이다.
본 실시예에 관련된 방법은 처리 노드가 데이터 큐브를 생성하는 구체적인 절차를 설명하며, 그 절차는 구체적으로 이하의 단계를 포함한다:
S201: 처리 노드가 데이터 스트림 내의 시간스탬프에 따라 시간 윈도 내의 대응하는 윈도 유닛에 처리 노드에 의해 수신된 데이터 스트림을 버퍼링한다.
구체적으로, 도 6에 도시된 바와 같이, 제2 논리 노드의 제2 물리 노드(노드0)에서 데이터 스트림 S1에 시간스탬프를 추가하여 스트림 S1'를 생성하며, 시간스탬프는 데이터 스트림 S1이 제2 논리 노드로 유입하는 순간을 나타내고; 스트림 S1'는 다음 레벨의 모든 제1 논리 노드(노드1, 노드3)에 유입할 필요가 있으며; 노드1에는, 스트림 S1'이 제1 물리 노드 중 하나에만 진입할 수 있으며, 그 제1 물리 노드는 처리 노드이고; 처리 노드는 스트림 S1' 내의 시간스탬프에 따라 시간 윈도 내의 대응하는 윈도 유닛에 스트림 S1'을 저장한다. 처리 노드의 시간 윈도는 하나 이상의 윈도 유닛을 포함하고, 각 윈도 유닛은 투플을 저장하기 위한 하나 이상의 버퍼 유닛을 포함한다. 도 9를 참조하면, 시간 윈도는 8개의 윈도 유닛(유닛1∼유닛8)을 포함한다. 데이터 스트림은 스트리밍 방식으로 하나씩 처리 노드에 유입하기 때문에, 즉, 데이터 스트림은 실제로 처리 노드의 시간 윈도 내의 시간 유닛에 하나씩 저장된다. 일반적으로 데이터 스트림 내의 시간스탬프에 따라, 가장 먼저 처리 노드로 유입하는 데이터 스트림은 마지막 윈도 유닛에 저장되고, 그 후 처리 노드로 유입하는 데이터 스트림은 큐와 같은 형태로 그보다 앞선(former) 윈도 유닛에 저장되며, 마지막으로 처리 노드로 유입하는 데이터 스트림은 시간 윈도의 첫(제1) 윈도 유닛에 저장된다.
S202: 처리 노드는 시간 윈도 내의 완전히 점유된 윈도 유닛 내의 데이터 스트림에 대해 집성 작업을 수행하여 서브데이터 큐브를 생성하고, 완전히 점유된 윈도 유닛을 표시한다.
시간 윈도 내의 임의의 윈도 유닛이 데이터 스트림으로 완전히 점유되어 있는 경우, 처리 노드는, 도 7에 도시된 바와 같이, 완전히 점유된 윈도 유닛 내의 데이터 스트림에 대해 집성 작업을 수행하여 서브데이터 큐브를 생성하고, 완전히 점유된 윈도 유닛을 계산된 유닛으로 표시한다.
S203: 처리 노드가, 시간 윈도 내의 모든 윈도 유닛이 완전히 점유되어 있고, 새로운 데이터 스트림이 그 시간 윈도로 유입하는 것으로 판단하면, 처리 노드가, 새로운 윈도 유닛을 시간 윈도의 제1 윈도 유닛으로서 생성한다.
S204: 처리 노드가, 제1 윈도 유닛에 새로운 데이터 스트림을 버퍼링하고, 시간 윈도의 마지막 윈도 유닛에 있고 시간스탬프가 시간 윈도의 길이를 초과하는 데이터 스트림을 제어하여 유출한다.
구체적으로, 처리 노드는, 도 7에 도시된 바와 같이, 각각의 완전히 점유된 윈도 유닛에 대해 집성 작업을 수행하고, 그 완전히 점유된 윈도 유닛을 표시한다. 처리 노드는 시간 윈도 내의 모든 윈도 유닛이 완전히 점유되어 있고, 새로운 데이터 스트림이 그 시간 윈도로 유입하는 것으로 판단하면, 처리 노드는 새로운 윈도 유닛(도 9에 도시된 유닛1' 참조)을 시간 윈도의 제1 윈도 유닛으로서 생성하여, 새로운 데이터 스트림을 저장한다. 또, 새로운 데이터 스트림이 제1 윈도 유닛으로 유입하는 경우, 시간 윈도의 시간 길이는 고정되어 있기 때문에, 처리 노드는, 데이터 스트림의 시간스탬프가 나타내는 시간이 시간 윈도의 길이를 초과하는, 시간 윈도의 마지막 윈도 유닛에 있는 데이터 스트림을 제어하여 유출하지만; 시간 윈도의 중앙의 시간 유닛(원래의 유닛1∼유닛7)에 생성된 서브데이터 큐브는 변경되지 않는다.
S205: 처리 노드가 처리 노드의 시간 윈도 내의 제1 윈도 유닛 내의 데이터 스트림에 대해 집성 작업을 수행하여, 제1 서브데이터 큐브를 생성하며, 시간 윈도는 하나 이상의 윈도 유닛을 포함하고, 시간 윈도의 길이는 고정되어 있다.
S206: 처리 노드가 시간 윈도 내의 마지막 윈도 유닛 내의 데이터 스트림에 대해 집성 작업을 수행하여, 제2 서브데이터 큐브를 생성한다.
구체적으로, 새로운 데이터 스트림은 시간 윈도 내의 제1 윈도 유닛으로 계속하여 유입하고, 데이터 스트림은 마지막 윈도 유닛에서 계속하여 유출한다. 처리 노드가 마스터 노드에 의해 전송된 질의 커맨드를 수신하는 경우, 처리 노드는 제1 윈도 유닛(이때, 제1 윈도 유닛은 데이터 스트림으로 완전히 점유되어 있지 않음) 내의 데이터 스트림에 대해 집성 작업을 수행하여 제1 서브데이터 큐브를 생성하고; 마지막 윈도 유닛 내의 나머지 데이터 스트림에 대해 집성 작업을 수행하여, 제2 서브데이터 큐브를 생성한다.
S207: 처리 노드가 제1 서브데이터 큐브, 제2 서브데이터 큐브, 및 처리 노드에 의한 사전 집성으로 취득되고 시간 윈도 내의 하나 이상의 다른 완전히 점유된 윈도 유닛에 대응하는 서브데이터 큐브를 결합하여, 데이터 큐브를 생성한다.
구체적으로, 시간 유닛의 중앙의 완전히 점유된 윈도는 영향을 받지않기 때문에, 윈도 유닛 내의 미리 생성된 서브데이터 큐브도 또한 원래 상태를 유지하고; 따라서, 처리 노드는 오직 제1 서브데이터 큐브, 제2 서브데이터 큐브, 및 시간 윈도 내의 다른 완전히 점유된 윈도 유닛(원래의 유닛1∼유닛7)에 대응하는 서브데이터 큐브를 결합하여, 처리 노드의 데이터 큐브를 생성해야 한다.
종래기술에서는, 처리 노드가 마스터 노드에 의해 전송된 질의 커맨드를 수신하는 경우, 처리 노드는 직접, 하위 레벨에서부터, 처리 모드로 유입하는 데이터 스트림에 대한 집성 작업을 수행하여, 데이터 큐브를 생성하고; 처리 노드가 연속적으로 질의 커맨드를 수신하는 경우, 처리 노드는, 하위 레벨에서부터, 처리 노드에 의해 저장된 모든 데이터 스트림에 대한 집성 작업을 반복하여 수행하는 데, 이것이 컴퓨터 질의를 느리게 만든다. 그러나, 본 발명에서는, 시간 윈도 및 윈도 유닛의 설계로 인해, 집성 작업이 일부의 완전히 점유된 윈도 유닛에 대해 미리 수행된다. 따라서, 질의 커맨드를 수신하는 경우, 처리 노드는 제1 윈도 유닛 및 마지막 윈도 유닛 내의 데이터 스트림만 계산한 다음에 집성 작업을 수행할 필요가 있어, 컴퓨터의 질의 시간을 효과적으로 단출할 수 있다.
선택적으로, 물리 노드 다이어그램은, 최소 집성 비용의 원리에 따라 마스터 노드에 의해 제1 논리 노드 간에 확립되어 있는 집성 관계를 더 포함하고, 처리 노드에 의해 수신된 데이터 스트림은, 처리 노드의 상위 레벨 처리 노드에 의해 전송된 기본 데이터 스트림; 또는 처리 노드의 상위 레벨 처리 노드에 의해 전송된 서브데이터 큐브를 포함하며, 상기 기본 데이터 스트림은 집성 작업이 수행되지 않은 데이터 스트림이고, 상위 레벨 처리 노드는 처리 노드가 위치하는 제1 논리 노드의 부모 논리 노드의 물리 노드이며, 상기 서브데이터 큐브는 집성 작업이 수행된 데이터 스트림이다.
구체적으로, 도 6에 도시된 바와 같이, 처리 노드가 노드2 내의 제1 물리 노드이고, 처리 노드의 상위 레벨 처리 노드가 노드1 내의 제1 물리 노드이고, 노드2에서 수신된 데이터 스트림이 노드1 내의 제1 물리 노드에서 흘러나온 데이터 스트림이라고 가정하면, 데이터 스트림은 노드1에서 흘러나온 기본 데이터 스트림일 수 있거나, 노드1의 제1 물리 노드가 기본 데이터 스트림에 대해 집성 작업을 수행한 후에 취득된 서브데이터 큐브일 수 있다. 데이터 스트림이 노드1의 제1 물리 노드가 집성 작업을 수행한 후에 취득된 서브데이터 큐브이면, 노드2가 데이터 큐브를 생성할 필요가 있는 경우, 노드2는, 서브데이터 큐브를 사용하여, 노드2가 필요로 하는 데이터 큐브를 생성할 수 있어, 노드2는 하위 레벨에서부터 데이터를 집성하는 것이 방지되고, 이렇게 하여, 데이터 큐브 계산 시간을 절약할 수 있다.
본 발명의 본 실시예에서 제공되는 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법에 따르면, 처리 노드의 시간 윈도는 하나 이상의 윈도 유닛으로 분할되고, 집성 작업은 완전히 점유된 윈도 유닛 내의 데이터 스트림에 대해 미리 수행되어, 서브데이터 큐브를 생성하고; 시간 윈도가 완전히 점유되고 새로운 데이터 스트림이 시간 윈도로 유입하는 경우, 새로운 윈도 유닛이 시간 윈도의 제1 윈도 유닛으로서 생성되고; 집성 작업은 제1 윈도 유닛 내의 데이터 스트림과 마지막 윈도 유닛 내의 데이터 스트림에 대해 개별적으로 수행되어, 제1 서브데이터 큐브과 제2 서브데이터 큐브를 생성하며; 최종적으로, 제1 서브데이터 큐브, 제2 서브데이터 큐브, 및 시간 윈도 내의 하나 이상의 다른 완전히 점유된 윈도 유닛에 대응하는 서브데이터 큐브를 결합하여, 처리 노드에 대응하는 데이터 큐브를 생성한다. 본 발명의 본 실시예에서 제공되는 방법에 따르면, 컴퓨터의 질의 시간은 효과적으로 감소되고 질의 속도는 증대된다.
도 10은 본 발명에 따른 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법의 실시예 3의 개략 흐름도이다. 분산 시스템은 마스터 노드, 하나 이상의 제1 물리 노드, 및 하나 이상의 제2 물리 노드를 포함한다. 여기서 언급되는 마스터 노드, 하나 이상의 제1 물리 노드, 및 하나 이상의 제2 물리 노드는 하나의 물리 머신(예를 들어, 컴퓨터)에 각각 대응할 수 있다, 즉, 여기서 분산 시스템은 다수의 물리 머신을 포함할 수 있거나; 또는 마스터 노드, 제1 물리 노드, 및 제2 물리 노드는 하나의 물리 머신에 모두 배치될 수 있으며, 여기서 마스터 노드는 물리 머신에서 모든 물리 노드를 관리하고 제어하는 제어기에 상응할 수 있고, 제1 물리 노드 또는 제2 물리 노드는 물리 머신상의 처리 유닛 또는 처리 모듈일 수 있다. 즉, 분산 시스템도 또한 하나의 물리 머신을 포함할 수 있다. 도 3에 도시된 바와 같이, 상기 방법은 이하의 단계를 포함한다:
S301: 마스터 노드가 미리 설정된 스키마 및 클러스터 자원에 따라 물리 노드 다이어그램을 생성하며, 물리 노드 다이어그램은 하나 이상의 제1 논리 노드 및 하나 이상의 제2 논리 노드를 포함하고, 제1 논리 노드는 하나 이상의 제1 물리 노드를 포함하고, 제2 논리 노드는 하나 이상의 제2 물리 노드를 포함하고, 제1 논리 노드와 제2 논리 노드는 연결되어 있다.
구체적으로, 마스터 노드는 미리 설정된 스키마 및 클러스터 자원에 따라 물리 노드 다이어그램을 생성하며, 여기서 미리 설정된 스키마는 관리자에 의해 업로드될 수 있거나, 마스터 노드에 의해 웹사이트 또는 데이터베이스와 같은 유효한 자원을 사용하여 취득될 수 있고; 여기서 클러스터 자원은 하나 이상의 물리 머신일 수 있다. 물리 노드 다이어그램에 포함되어 있는 제1 논리 노드 및 제1 물리 노드는 데이터 스트림에 대해 집성 작업을 수행하기 위한 노드이고, 물리 노드 다이어그램에 포함되어 있는 제2 논리 노드와 제2 물리 노드는 데이터 스트림에 시간스탬프를 추가하기 위한 노드이다.
S302: 마스터 노드가 처리 노드에 물리 노드 다이어그램을 전송하여, 처리 노드가 물리 노드 다이어그램에 따라 처리 노드의 계산될 데이터 큐브의 구조를 결정하도록 하며, 처리 노드는 물리 노드 다이어그램 내의 제1 논리 노드의 임의의 제1 물리 노드이다.
구체적으로, 마스터 노드는 물리 노드 다이어그램 내의 일부 물리 노드에 명령을 전달하고, 명령을 수신하는 물리 노드는 처리 노드의 역할을 하며, 마스터 노드는 이들 처리 노드에 물리 노드 다이어그램을 전달한다. 처리 노드는 물리 노드 다이어그램에 따라 처리 노드의 계산될 데이터 큐브의 레벨 구조를 취득할 수 있고, 각각의 처리 노드는 하나 이상의 구조의 데이터 큐브에 대응한다. 여기서, 하나의 처리 노드가 존재할 수 있거나 다수의 처리 노드가 존재할 수 있다. 즉, 각각의 처리 노드는 마스터 노드에 의해 전송된 물리 노드 다이어그램을 수신할 수 있고, 그 물리 노드 다이어그램에 따라 각 처리 노드의 데이터 큐브의 구조를 알게 된다. 즉, 본 실시예에서, 데이터 스트림은 OLAP 분석을 수행하기 위해, 다수의 처리 노드를 사용하여 상이한 구조의 데이터 큐브로 집성될 수 있다. 분산 시스템이 다수의 물리 머신을 포함하는 경우, 이들 처리 노드는 물리 머신에 각각 대응할 수 있다. 즉, 본 실시예에서, 데이터 스트림은 OLAP 분석을 수행하기 위해, 다수의 물리 머신을 사용하여 상이한 구조의 데이터 큐브로 집성될 수 있으므로, 고속 처리가 달성된다. 물론, 본 실시예에서의 방법은 또한 분산 시스템이 단 하나의 물리 머신을 포함하는 시나리오에도 적용 가능하다.
그러나, 종래기술에서는, 데이터 스트림이 하나의 물리 머신을 사용하여 다수의 구조의 데이터 큐브로 집성되므로; 계산이 느리고, 물리 머신의 오버헤드가 비교적 높다.
S303: 마스터 노드가 처리 노드에 질의 커맨드를 전송하여, 처리 노드가, 처리 노드의 계산될 데이터 큐브의 구조에 따라, 처리 노드에 의해 수신된 데이터 스트림에 대해 집성 작업을 수행하여 데이터 큐브를 생성하도록 하며, 데이터 스트림은 제2 물리 노드에 의해 데이터 스트림에 추가된 시간스탬프를 싣고 있고, 시간스탬프는 데이터 스트림이 제2 논리 노드로 유입하는 순간을 나타낸다.
구체적으로, 클라이언트는 마스터 노드에 데이터 큐브를 질의하기 위한 진술문(질의문)을 전송하고; 그 질의문을 파싱한 후, 마스터 노드는 클라이언트가 질의하고자 하는 데이터 큐브의 구조를 알게 되고; 그 후, 마스터 노드는 그 데이터 큐브 구조에 대응하는 처리 노드에 질의 커맨드를 전송한다. 처리 노드가 마스터 노드에 의해 전송된 질의 커맨드를 수신한 후, 제2 논리 노드의 제2 물리 노드에서 데이터 스트림 S1에 시간스탬프를 추가하여 스트림 S1'를 생성하며, 시간스탬프는 데이터 스트림 S1이 제2 논리 노드로 유입하는 순간을 나타내고; 스트림 S1'는 다음 레벨의 모든 제1 논리 노드로 유입할 필요가 있으며, 제1 논리 노드에서는, 스트림 S1'이 제1 물리 노드 중 하나에만 진입할 수 있으며; 스트림 S1'가 제1 물리 노드에 진입하면, 처리 노드는 처리 노드의 데이터 큐브 구조에 따라 데이터 스트림에 대해 집성 작업을 수행하여, 데이터 큐브를 생성하며; 최종적으로 처리 노드는 마스터 노드에 그 데이터 큐브를 전송한다.
S304: 마스터 노드가 처리 노드에 의해 전송된 데이터 큐브를 수신한다.
본 발명의 본 실시예에서 제공되는 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법에 따르면, 마스터 노드는 미리 설정된 스키마 및 클러스터 자원에 따라 물리 노드 다이어그램을 생성하고, 처리 노드에 물리 노드 다이어그램을 전송하여, 처리 노드가, 물리 노드 다이어그램에 따라 처리 노드의 계산될 데이터 큐브의 구조를 결정하도록 하고, 마스터 노드에 의해 전달된 질의 커맨드를 수신하는 경우, 처리 노드에 의해 수신된 데이터 스트림에 대해 집성 작업을 수행하여 데이터 큐브를 생성하도록 하고, 마스터 노드에 데이터 큐브를 전송하도록 한다. 본 실시예에서 제공되는 방법에 따르면, 집성 작업은 다수의 처리 노드를 사용하여 데이터 스트림에 대해 개별적으로 수행되어, 상이한 구조의 데이터 큐브를 생성할 수 있고; 분산 시스템이 다수의 물리 머신을 포함하는 경우, 데이터 스트림은 다수의 물리 머신을 사용하여 상이한 구조의 데이터 큐브로 집성될 수 있으므로, 데이터 큐브 계산을 가속화하고, 클라이언트에 의한 데이터 큐브의 질의 효율을 향상시킨다.
도 11은 본 발명에 따른 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법의 실시예 4의 개략 흐름도이다. 본 실시예에 관련된 방법은 마스터 노드가 물리 노드 다이어그램을 생성하는 구체적인 절차를 설명하다. 도 11에 도시된 바와 같이, 전술한 S301은 구체적으로 이하의 단계를 포함한다:
S401: 마스터 노드가 미리 설정된 스키마에 따라 노드 레벨 다이어그램을 생성하며, 노드 레벨 다이어그램은 상이한 데이터 큐브 간의 레벨 관계를 보여 주는 데 사용되고, 노드 레벨 다이어그램 내의 각 노드는 하나의 구조의 데이터 큐브를 나타낸다.
구체적으로, 마스터 노드는 미리 설정된 스키마 및 클러스터 자원에 따라 노드 레벨 다이어그램을 생성하며, 여기서 미리 설정된 스키마는 관리자에 의해 업로드될 수 있거나, 마스터 노드에 의해 웹사이트 또는 데이터베이스와 같은 유효한 자원을 사용하여 취득될 수 있고; 여기서 클러스터 자원은 하나 이상의 물리 머신일 수 있다. 마스터 노드는 스키마 내의 레벨 의존성에 따라 스키마를 파싱하여 노드 레벨 다이어그램을 생성한다. 노드 레벨 다이어 그램은 상이한 데이터 큐브 간의 레벨 관계(즉, 노드 레벨 다이어그램 내의 상이한 레벨 간의 레벨 의존성)를 보여 주는 데 사용되며, 노드 레벨 다이어그램 내의 각 노드는 하나의 구조의 데이터 큐브를 나타낸다. 스키마의 모델에 대해서는 도 3을 참조할 수 있고, 노드 레벨 다이어그램에 대해서는 도 4를 참조할 수 있다.
도 3에는, 일부 논리 노드가 스키마에 정의되어 있지만, 이들 논리 노드의 기능은 동일하지 않다. 예를 들어, 노드0은 노드0으로 유입하는 데이터에 시간스탬프를 추가하는 작업의 수행을 필요로 하며, 노드0은 본 실시예에서 제2 논리 노드이고; 병렬도(parallel)=2는 시간스탬프를 추가하기 위한 두 개의 제2 물리 노드가 제2 논리 노드(노드0)에 배치되어 있다는 것을 나타낸다. 노드1은 근원지 IP 레벨의 데이터를 근원지 시 레벨로 집성하는 작업의 수행을 필요로 하며, 노드1은 본 실시예에서 제1 논리 노드이고, 제1 논리 노드에는 집성 작업을 수행하기 위한 두 개의 제1 물리 노드가 배치되어 있다. 노드2는 근원지 IP 레벨의 데이터를 근원지 시 레벨로 집성하는 작업의 수행을 필요로 하며, 노드2도 또한 본 실시예에서 제1 논리 노드이고, 제1 논리 노드에는 집성 작업을 수행하기 위한 두 개의 제1 물리 노드가 배치되어 있다. 노드3은 목적지 IP 레벨의 데이터를 목적지 시 레벨로 집성하는 작업의 수행을 필요로 하며, 노드3도 또한 본 실시예에서 제1 논리 노드이고, 이 제1 논리 노드에는 집성 작업을 수행하기 위한 하나의 제1 물리 노드가 배치되어 있다. 다시 말해, 본 실시예에서, 제1 논리 노드와 제1 물리 노드는 집성 작업을 수행하기 위한 노드이고, 제2 논리 노드와 제2 물리 노드는 데이터 스트림에 시간스탬프를 추가하기 위한 노드이다. 또, 도 3은 또한 상이한 차원에 포함된 레벨을 보여주며, 예를 들면: 근원지 IP 차원은 근원지 국가(Country) 레벨, 근원지 주(Province) 레벨, 근원지 시(City) 레벨, 및 근원지 IP 레벨을 포함하고; 목적지 IP 차원은 목적지 시 레벨 및 목적지 IP 레벨을 포함한다.
도 4는 마스터 노드에 의해 생성된 노드 레벨 다이어그램이다. 노드 레벨 다이어그램 내의 각 노드는 하나의 구조의 데이터 큐브를 나타내고, 노드 레벨 다이어그램은 상이한 데이터 큐브 간의 레벨 관계(즉, 노드 레벨 다이어그램 내의 상이한 노드 간의 레벨 의존성)을 보여주는 데 사용된다.
S402: 마스터 노드가, 최소 집성 비용의 원리에 따라 제1 논리 노드 간의 집성 관계를 확립하고, 집성 관계, 노드 레벨 다이어그램, 및 스키마에 정의된 모든 논리 노드에 따라 논리 노드 다이어그램을 생성한다.
구체적으로, 마스터 노드는 스키마에 정의된 모든 논리 노드 및 최소 집성 비용의 원칙에 따라 제1 논리 노드 간의 집성 관계를 확립하고; 집성 관계, 노드 레벨 다이어그램, 및 스키마에 정의된 모든 논리 노드에 따라, 도 5에 도시된 논리 노드 다이어그램을 생성한다. 예를 들어, 도 5에 도시된 노드0은 데이터 큐브 0을 나타내고, 데이터 큐브 0의 구조는 데이터 큐브 0(근원지 IP, 목적지 IP, 이벤트 타입 Id, ...)이며, 근원지 IP는 근원지 IP 차원에서의 근원지 IP 레벨을 나타내고, 목적지 시는 목저지 IP 차원에서의 목적지 시 레벨을 나타낸다, 즉, 데이터 큐브는 실제로 상이한 차원에서의 상이한 레벨의 데이터를 가리킨다. 도 5에 도시된 논리 노드 다이어그램에서, 데이터 큐브 1은 데이터 큐브 0으로부터의 집성에 의해 취득될 수 있다, 즉 데이터 큐브 1은 데이터 큐브 0의 근원지 IP 레벨에서의 데이터를 근원지 시 레벨로 집성함으로써 생성되며, 데이터 큐브 1의 구조는 데이터 큐브 1(근원지 시, 목적지 IP, 이벤트 타입 Id, ...)이고; 데이터 큐브 3은 데이터 큐브 0의 목적지 IP 레벨에서의 데이터를 목적지 시 레벨로 집성함으로써 생성되며, 데이터 큐브 3의 구조는 데이터 큐브 3(근원지 IP, 목적지 시, 이벤트 타입 Id, ...)이다. 여기서 최소 집성 비용의 원리는, 상위 레벨 데이터 큐브는 다수의 하위 레벨 데이터 큐브로부터 집성에 의해 취득될 수 있다는 것을 의미하며, 상위 레벨 데이터 큐브를 형성하기 위한 하위 레벨 데이터 큐브로부터의 집성에 대한 집성 비용의 관점에서, 논리 노드 다이어그램을 생성하기 위해, 최소 집성 비용을 갖는 하위 레벨 데이터 큐브가 선택된다. 예를 들어, 도 5에 도시된 논리 노드 다이어그램에서, 데이터 큐브 2는 데이터 큐브 1로부터의 집성에 의해 취득될 수 있거나, 데이터 큐브 3으로부터의 집성에 의해 취득될 수 있지만, 데이터 큐브 1과 데이터 큐브 3의 집성 비용을 비교한 후, 마스터 노드는 최소 집성 비용을 갖는 데이터 큐브를 선택하여, 데이터 큐브 2를 형성한다. 도 5에 도시된 논리 노드 다이어그램은 실제로 데이터 큐브로부터의 집성 동안의 데이터 큐브 간의 의존성을 나타낸다.
S403: 마스터 노드가, 논리 노드 다이어그램, 스키마에 정의된 모든 논리 노드의 병렬도, 및 클러스터 자원에 따라, 물리 노드 다이어그램을 생성한다.
구체적으로, 마스터 노드는, 논리 노드 다이어그램 및 클러스터 자원에 따라, 도 6에 도시된 물리 노드 다이어그램을 생성한다, 즉, 마스터 노드는 각 논리 노드의 병렬도에 따라 대응하는 논리 노드에 물리 노드를 배치한다. 도 6에서, 노드0은 도 5에 도시된 노드0(제2 논리 노드)에 대응하고, 마스터 노드는 노드0의 병렬도에 따라 노드0에 대해 두 개의 물리 노드를 배치하고; 노드1은 도 5에 도시된 노드1(제1 논리 노드)에 대응하고, 마스터 노드는 노드1의 병렬도에 따라 노드1에 대해 두 개의 물리 노드를 배치하고; 노드3은 도 5에 도시된 노드3(제1 논리 노드)에 대응하고, 마스터 노드는 노드3의 병렬도에 따라 노드3에 대해 하나의 물리 노드를 배치하고; 노드2는 도 5에 도시된 노드2(제1 논리 노드)에 대응하고, 마스터 노드는 노드2의 병렬도에 따라 노드2에 대해 하나의 물리 노드를 배치한다.
최종적으로, 마스터 노드는 물리 노드 다이어그램 내의 일부 물리 노드에 명령을 전달하고, 명령을 수신하는 물리 노드는 처리 노드의 역할을 하며, 마스터 노드는 이들 처리 노드에 물리 노드 다이어그램을 전달한다. 처리 노드는 물리 노드 다이어그램에 따라 처리 노드의 계산될 데이터 큐브의 레벨 구조를 취득할 수 있고, 각각의 처리 노드는 하나 이상의 구조의 데이터 큐브에 대응한다. 여기서, 하나의 처리 노드가 존재할 수 있거나 다수의 처리 노드가 존재할 수 있다. 즉, 각각의 처리 노드는 마스터 노드에 의해 전송된 물리 노드 다이어그램을 수신할 수 있고, 그 물리 노드 다이어그램에 따라 각 처리 노드의 데이터 큐브의 구조를 알게 된다. 도 6에 도시된 물리 노드 다이어그램에서, 데이터 큐브 1, 데이터 큐브 2, 데이터 큐브 3, 및 데이터 큐브 4는 모두 상이한 구조의 데이터 큐브를 가리킨다. 즉, 본 실시예에서, 데이터 스트림은 OLAP 분석을 수행하기 위해, 다수의 처리 노드를 사용하여 상이한 구조의 데이터 큐브로 집성될 수 있다. 분산 시스템이 다수의 물리 머신을 포함하는 경우, 이들 처리 노드는 물리 머신에 각각 대응할 수 있다. 즉, 본 실시예에서, 데이터 스트림은 OLAP 분석을 수행하기 위해, 다수의 물리 머신을 사용하여 상이한 구조의 데이터 큐브로 집성될 수 있으므로, 고속 처리가 달성된다. 물론, 본 실시예에서의 방법은 또한 분산 시스템이 단 하나의 물리 머신만을 포함하는 시나리오에도 적용 가능하다.
처리 노드가 마스터 노드에 의해 전송된 질의 커맨드를 수신한 후, 제2 논리 노드의 제2 물리 노드에서 데이터 스트림 S1에 시간스탬프를 추가하여 스트림 S1'를 생성하며, 시간스탬프는 데이터 스트림 S1이 제2 논리 노드로 유입하는 순간을 나타내고; 스트림 S1'는 다음 레벨의 모든 제1 논리 노드(노드1, 노드3)로 유입할 필요가 있으며; 노드1에서는, 스트림 S1'이 제1 물리 노드 중 하나에만 진입할 수 있으며; 스트림 S1'가 제1 물리 노드에 진입하는 경우, 도 7에 도시된 집성 작업이 수행되어 데이터 큐브를 생성한다. 도 7에 도시된 집성 작업에 대해서는 실시예 1을 참조할 수 있으므로, 상세한 것은 여기서 다시 설명하지 않는다.
선택적으로, 마스터 노드에 의해 전송된 질의 커맨드는 데이터 큐브를 질의하기 위한 진술문(질의문)일 수 있으며, 데이터 큐브를 질의하기 위한 진술문은 클라이언트에 의해 마스터 노드로 전송되고; 그 질의문을 파싱한 후, 마스터 노드는 질의될 논리 노드를 결정한다, 즉, 클라이언트가 질의하고자 하는 데이터 큐브의 구조에 대응하는 논리 노드를 알게 된 다음, 처리 노드에 질의 커맨드를 전송한다.
선택적으로, 질의될 논리 노드가, 처리 노드가 위치하는 제1 논리 노드이면, 마스터 노드는 클라이언트에, 생성된 데이터 큐브를 직접 전송한다.
선택적으로, 마스터 노드에 의해 결정된 질의될 논리 노드가 제3 논리 노드이고 제3 논리 노드가 물리 노드 다이어그램에 도시되어 있지 않은 노드이면, 마스터 노드는, 노드 레벨 다이어그램 및 최소 집성 비용의 원리에 따라, 물리 노드 다이어그램 내에 있고 최소 비용으로 제3 논리 노드에 대해 집성을 수행하는 제1 논리 노드를 결정하고; 결정된 제1 논리 노드상의 각각의 제1 물리 노드를 처리 노드로서 사용한다. 그 후, 마스터 노드는 제1 논리 노드상의 모둔 제1 물리 노드(즉, 제1 논리 노드상의 모든 처리 노드)에 질의 커맨드를 전달하여, 제1 논리 노드상의 모든 제1 물리 노드가 모든 제1 물리 노드의 데이터 큐브 구조에 따라 데이터 스트림에 대해 집성 작업을 수행하여 그들 각각의 데이터 큐브를 생성하도록 하고; 마스터 노드에 데이터 큐브를 전송하도록 한다. 최종적으로, 마스터 노드는 다시, 제3 논리 노드에 대한 데이터 큐브 구조에 따라, 이들 처리 노드에 의해 전송된 데이터 큐브에 대해 집성 작업을 수행하여, 새로운 데이터 큐브를 생성하고; 그 새로운 데이터 큐브를 클라이언트에 전송한다.
본 발명의 본 실시예에서 제공되는 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법에 따르면, 마스터 노드는 미리 설정된 스키마를 파싱하여 노드 레벨 다이어그램을 생성하고, 논리 노드 다이어그램을 생성하기 위해 스키마에 정의된 논리 노드 및 최소 집성 비용의 원리에 따라 제1 논리 노드 간의 집성 관계를 확립하고, 최종적으로, 논리 노드 다이어그램 및 클러스터 자원에 따라 물리 노드 다이어그램을 생성한다. 또, 마스터 노드는 처리 노드에 물리 노드 다이어그램을 전달하여, 처리 노드가 물리 노드 다이어그램에 따라 처리 노드의 계산될 데이터 큐브의 구조를 결정하도록 하고, 마스터 노드에 의해 전달된 질의 커맨드를 수신하는 경우, 처리 노드에 의해 수신된 데이터 스트림에 대해 집성 작업을 수행하여 데이터 큐브를 생성하도록 하고, 마스터 노드에 데이터 큐브를 전송하도록 한다. 본 실시예에서 제공되는 방법에 따르면, 집성 작업은 다수의 처리 노드를 사용하여 데이터 스트림에 대해 개별적으로 수행되어, 상이한 구조의 데이터 큐브를 생성할 수 있고; 분산 시스템이 다수의 물리 머신을 포함하는 경우, 데이터 스트림은 다수의 물리 머신을 사용하여 상이한 구조의 데이터 큐브로 집성될 수 있으므로, 데이터 큐브 계산을 가속화하고, 클라이언트에 의한 데이터 큐브의 질의 효율을 향상시킨다.
도 12는 본 발명에 따른 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법의 실시예 5의 개략 흐름도이다. 본 실시예에 관련된 방법은 마스터 노드가 물리 노드 다이어그램을 생성하여, 처리 노드에 물리 노드 다이어그램을 전달하고, 처리 노드가 물리 노드 다이어그램에 따라 데이터 큐브를 생성하는 전체 절차를 설명한다. 도 12에 도시된 바와 같이, 상기 방법은 이하의 단계를 포함한다:
S501: 마스터 노드가 미리 설정된 스키마 및 클러스터 자원에 따라 물리 노드 다이어그램을 생성하며, 물리 노드 다이어그램은 하나 이상의 제1 논리 노드 및 하나 이상의 제2 논리 노드를 포함하고, 제1 논리 노드는 하나 이상의 제1 물리 노드를 포함하고, 제2 논리 노드는 하나 이상의 제2 물리 노드를 포함하고, 제1 논리 노드와 제2 논리 노드는 연결되어 있다.
구체적으로, 마스터 노드가 미리 설정된 스키마 및 클러스터 자원에 따라 물리 노드 다이어그램을 생성하며, 여기서 미리 설정된 스키마는 관리자에 의해 마스터 노드에 업로드될 수 있거나, 마스터 노드에 의해 웹사이트 또는 데이터베이스와 같은 유효한 자원을 사용하여 취득될 수 있으며; 여기서 클러스터 자원은 하나 이상의 물리 머신일 수 있다. 마스터 노드는 스키마 내의 레벨 의존성에 따라 스키마를 파싱하여 노드 레벨 다이어그램을 생성한다. 노드 레벨 다이어 그램은 상이한 데이터 큐브 간의 레벨 관계(즉, 노드 레벨 다이어그램 내의 상이한 레벨 간의 레벨 의존성)를 보여 주는 데 사용되며, 노드 레벨 다이어그램 내의 각 노드는 하나의 구조의 데이터 큐브를 나타낸다. 스키마의 모델에 대해서는 도 3을 참조할 수 있고, 노드 레벨 다이어그램에 대해서는 도 4를 참조할 수 있다. 도 3 및 도 4에 관한 구체적인 설명은 실시예 1 또는 실시예 4를 참조할 수 있으므로 상세한 것은 여기서 설명하지 않는다.
마스터 노드는 스키마에 정의된 모든 논리 노드 및 최소 집성 비용의 원칙에 따라 제1 논리 노드 간의 집성 관계를 확립하고; 집성 관계, 노드 레벨 다이어그램, 및 스키마에 정의된 모든 논리 노드에 따라, 도 5에 도시된 논리 노드 다이어그램을 생성한다. 도 5에 관한 구체적인 설명은 실시예 1 또는 실시예 4를 참조할 수 있으므로, 상세한 것은 여기서 설명하지 않는다.
이어서, 마스터 노드는, 논리 노드 다이어그램 및 클러스터 자원에 따라, 도 6에 도시된 물리 노드 다이어그램을 생성한다, 즉, 마스터 노드는 각 논리 노드의 병렬도에 따라 대응하는 논리 노드에 물리 노드를 배치한다. 물리 노드 다이어그램은 하나 이상의 제1 논리 노드와 하나 이상의 제2 논리 노드를 포함하고, 제1 논리 노드는 하나 이상의 제1 물리 노드를 포함하고, 제2 논리 노드는 하나 이상의 제2 물리 노드를 포함한다. 도 6에 관한 구체적인 설명은 실시예 1 또는 실시예 4를 참조할 수 있으므로, 상세한 것은 여기서 설명하지 않는다.
최종적으로, 마스터 노드는 물리 노드 다이어그램 내의 일부 물리 노드에 명령을 전달하고, 명령을 수신하는 물리 노드는 처리 노드의 역할을 하며, 마스터 노드는 이들 처리 노드에 물리 노드 다이어그램을 전달한다.
S502: 마스터 노드가 처리 노드에 물리 노드 다이어그램을 전송한다.
S503: 처리 노드가 물리 노드 다이어그램에 따라 처리 노드의 계산될 데이터 큐브의 구조를 결정한다.
구체적으로는, 처리 노드는 물리 노드 다이어그램에 따라 처리 노드의 계산될 데이터 큐브의 레벨 구조를 취득할 수 있고, 각각의 처리 노드는 하나 이상의 구조의 데이터 큐브에 대응한다, 즉, 데이터 스트림이 상이한 데이터 큐브로 집성 될 수 있다. 여기서, 하나의 처리 노드가 존재할 수 있거나 다수의 처리 노드가 존재할 수 있다. 즉, 각각의 처리 노드는 마스터 노드에 의해 전송된 물리 노드 다이어그램을 수신할 수 있고, 그 물리 노드 다이어그램에 따라 각 처리 노드의 데이터 큐브의 구조를 알게 된다. 도 6에 도시된 물리 노드 다이어그램에서, 데이터 큐브 1, 데이터 큐브 2, 데이터 큐브 3, 및 데이터 큐브 4는 모두 상이한 구조의 데이터 큐브를 가리킨다. 즉, 본 실시예에서, 데이터 스트림은, OLAP 분석을 수행하기 위해, 다수의 처리 노드를 사용하여 상이한 구조의 데이터 큐브로 집성될 수 있다. 분산 시스템이 다수의 물리 머신을 포함하는 경우, 이들 처리 노드는 물리 머신에 각각 대응할 수 있다. 즉, 본 실시예에서, 데이터 스트림은, OLAP 분석을 수행하기 위해, 다수의 물리 머신을 사용하여 상이한 구조의 데이터 큐브로 집성될 수 있으므로, 고속 처리가 달성된다. 물론, 본 실시예에서의 방법은 또한 분산 시스템이 단 하나의 물리 머신만을 포함하는 시나리오에도 적용 가능하다.
그러나, 종래기술에서는, 데이터 스트림이 하나의 물리 머신을 사용하여 다수의 구조의 데이터 큐브로 집성되므로; 계산이 느리고, 물리 머신의 오버헤드가 비교적 높다.
S504: 처리 노드가 처리 노드에 의해 수신된 데이터 스트림을 데이터 스트림 내의 시간스탬프에 따라 시간 윈도 내의 대응하는 윈도 유닛에 버퍼링한다.
구체적으로, 도 6에 도시된 바와 같이, 제2 논리 노드(노드0)의 제2 물리 노드에서 데이터 스트림 S1에 시간스탬프를 추가하여 스트림 S1'를 생성하며, 시간스탬프는 데이터 스트림 S1이 제2 논리 노드로 유입하는 순간을 나타내고; 스트림 S1'는 다음 레벨의 모든 제1 논리 노드(노드1, 노드3)에 유입할 필요가 있으며; 노드1에는, 스트림 S1'이 제1 물리 노드 중 하나에만 진입할 수 있으며, 그 제1 물리 노드가 처리 노드이고; 처리 노드는 스트림 S1' 내의 시간스탬프에 따라 시간 윈도 내의 대응하는 윈도 유닛에 스트림 S1'을 저장한다. 처리 노드의 시간 윈도는 하나 이상의 윈도 유닛을 포함하고, 각 윈도 유닛은 투플을 저장하기 위한 하나 이상의 버퍼 유닛을 포함한다. 도 9를 참조하면, 시간 윈도는 8개의 윈도 유닛(유닛1∼유닛8)을 포함한다. 데이터 스트림은 스트리밍 방식으로 하나씩 처리 노드에 유입하기 때문에, 즉, 데이터 스트림은 실제로 처리 노드의 시간 윈도 내의 시간 유닛에 하나씩 저장된다. 일반적으로 데이터 스트림 내의 시간스탬프에 따라, 가장 먼저 처리 노드로 유입하는 데이터 스트림은 마지막 윈도 유닛에 저장되고, 그 후 처리 노드로 유입하는 데이터 스트림은 큐와 같은 형태로 그보다 앞선(former) 윈도 유닛에 저장되며, 마지막으로 처리 노드로 유입하는 데이터 스트림은 시간 윈도의 첫(제1) 윈도 유닛에 저장된다.
S505: 처리 노드가 시간 윈도 내의 완전히 점유된 윈도 유닛 내의 데이터 스트림에 대해 집성 작업을 수행하여 서브데이터 큐브를 생성하고, 완전히 점유된 시간 유닛을 표시한다.
시간 윈도 내의 임의의 윈도 유닛이 데이터 스트림으로 완전히 점유되어 있는 경우, 처리 노드는, 도 7에 도시된 바와 같이, 완전히 점유된 윈도 유닛 내의 데이터 스트림에 대해 집성 작업을 수행하여 서브데이터 큐브를 생성하고, 완전히 점유된 윈도 유닛을 계산된 유닛으로 표시한다.
S506: 처리 노드가 시간 윈도 내의 모든 윈도 유닛이 완전히 점유되어 있고, 새로운 데이터 스트림이 시간 윈도로 유입하는 것으로 판단하면, 처리 노드가 새로운 윈도 유닛을 시간 윈도의 제1 윈도 유닛으로서 생성한다.
S507: 처리 노드가 제1 윈도 유닛에 새로운 데이터 스트림을 버퍼링하고, 시간 윈도의 마지막 윈도 유닛에 있고 시간스탬프가 시간 윈도의 길이를 초과하는 데이터 스트림을 제어하여 유출한다.
구체적으로, 처리 노드는, 도 7에 도시된 바와 같이, 각각의 완전히 점유된 윈도 유닛에 대해 집성 작업을 수행하고, 그 완전히 점유된 윈도 유닛을 표시한다. 처리 노드는 시간 윈도 내의 모든 윈도 유닛이 완전히 점유되어 있고, 새로운 데이터 스트림이 시간 윈도로 유입하는 것으로 판단하면, 처리 노드는 새로운 윈도 유닛(도 9에 도시된 유닛1' 참조)을 시간 윈도의 제1 윈도 유닛으로서 생성하여, 새로운 데이터 스트림을 저장한다. 또, 새로운 데이터 스트림이 제1 윈도 유닛으로 유입하는 경우, 시간 윈도의 시간 길이는 고정되어 있기 때문에, 처리 노드는, 데이터 스트림의 시간스탬프가 나타내는 시간이 시간 윈도의 길이를 초과하는, 시간 윈도의 마지막 윈도 유닛에 있는 데이터 스트림을 제어하여 유출하지만; 시간 윈도의 중앙의 시간 유닛들(원래의 유닛1∼유닛7)의 생성된 서브데이터 큐브는 변경되지 않는다.
S508: 마스터 노드가 처리 노드에 질의 커맨드를 전송한다.
구체적으로, 마스터 노드에 의해 전송된 질의 커맨드는 데이터 큐브를 질의하기 위한 진술문(질의문)일 수 있으며; 질의문을 파싱한 후, 마스터노드는 질의될 논리 노드를 결정한다, 즉 마스터 노드는 클라이언트가 질의하고자 하는 데이터 큐브의 구조를 알게 된다. 그 후, 마스터 노드,대응하는 데이터 큐브를 취득하기 위해 처리 노드에 질의 커맨드를 전송한다.
S509: 처리 노드가, 처리 노드의 시간 윈도 내의 제1 윈도 유닛 내의 데이터 스트림에 대해 집성 작업을 수행하여 제1 서브데이터 큐브를 생성하며, 시간 윈도는 하나 이상의 윈도 유닛을 포함하고, 시간 윈도의 길이는 고정되어 있다.
S510: 처리 노드가 시간 윈도 내의 마지막 윈도 유닛 내의 데이터 스트림에 대해 집성 작업을 수행하여 제2 서브데이터 큐브를 생성한다.
구체적으로, 새로운 데이터 스트림은 시간 윈도 내의 제1 윈도 유닛으로 계속하여 유입하고, 데이터 스트림은 마지막 윈도 유닛에서 계속하여 유출한다. 처리 노드가 마스터 노드에 의해 전송된 질의 커맨드를 수신하는 경우, 처리 노드는 제1 윈도 유닛(이때, 제1 윈도 유닛은 데이터 스트림으로 완전히 점유되어 있지 않음) 내의 데이터 스트림에 대해 집성 작업을 수행하여 제1 서브데이터 큐브를 생성하고; 마지막 윈도 유닛 내의 나머지 데이터 스트림에 대해 집성 작업을 수행하여, 제2 서브데이터 큐브를 생성한다.
S511: 처리 노드가 제1 서브데이터 큐브, 제2 서브데이터 큐브, 및 처리 노드에 의한 사전 집성으로 취득되고 시간 윈도 내의 하나 이상의 다른 완전히 점유된 윈도 유닛에 대응하는 서브데이터 큐브를 결합하여 데이터 큐브를 생성한다.
구체적으로, 시간 유닛의 중앙의 완전히 점유된 윈도는 영향을 받지 않기 때문에, 윈도 유닛의 미리 생성된 서브데이터 큐브도 또한 원래 상태를 유지하므로; 처리 노드는 오직 제1 서브데이터 큐브, 제2 서브데이터 큐브, 및 시간 윈도 내의 다른 완전히 점유된 윈도 유닛(원래의 유닛1∼유닛7)에 대응하는 서브데이터 큐브를 결합하여, 처리 노드의 데이터 큐브를 생성할 필요가 있다.
본 발명에서 제공되는 분산 시스템에 기반한 스트리밍 방식에서의 데이터 큐브를 생성하는 방법에 따르면, 처리 노드의 시간 윈도는 하나 이상의 윈도 유닛으로 분할되고, 집성 작업은 완전히 점유된 윈도 유닛 내의 데이터 스트림에 대해 미리 수행되어, 서브데이터 큐브를 생성하고; 시간 윈도가 완전히 점유되고 새로운 데이터 스트림이 시간 윈도로 유입하는 경우, 새로운 윈도 유닛이 시간 윈도의 제1 윈도 유닛으로서 생성되고; 집성 작업은 제1 윈도 유닛 내의 데이터 스트림과 마지막 윈도 유닛 내의 데이터 스트림에 대해 개별적으로 수행되어, 제1 서브데이터 큐브와 제2 서브데이터 큐브를 생성하며; 최종적으로, 제1 서브데이터 큐브, 제2 서브데이터 큐브, 및 시간 윈도 내의 하나 이상의 다른 완전히 점유된 윈도 유닛에 대응하는 서브데이터 큐브를 결합하여, 처리 노드에 대응하는 데이터 큐브를 생성한다. 본 발명의 본 실시예에서 제공되는 방법에 따르면, 컴퓨터의 질의 시간은 효과적으로 감소되고 질의 속도는 증대된다.
당업자는 방법 실시예의 단계 중 일부 또는 전부를 관련 하드웨어에 명령하는 프로그램으로 구현할 수 있다는 것을 이해할 것이다. 상기 프로그램은 컴퓨터로 판독 가능한 저장 매체에 저장될 수 있다. 상기 프로그램을 실행하는 경우, 방법 실시예의 단계들이 수행된다. 전술한 저장 매체로는, ROM, RAM, 자기 디스크, 또는 광 디스크와 같은, 프로그램 코드를 저장할 수 있는 임의의 매체를 포함한다.
도 13은 본 발명에 따른 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 장치의 제1 실시예의 개략적 구성도이다.
분산 시스템은 마스터 노드, 하나 이상의 제1 물리 노드, 및 하나 이상의 제2 물리 노드를 포함한다. 상기 장치는 처리 노드일 수 있거나, 처리 노드에 통합될 수 있다. 도 13에 도시된 바와 같이, 상기 장치는 수신 모듈(10), 처리 모듈(11), 생성 모듈(12), 및 전송 모듈(13)을 포함한다. 수신 모듈(10)은 마스터 노드에 의해 전송된 물리 노드 다이어그램을 수신하도록 구성되어 있으며, 물리 노드 다이어그램은 미리 설정된 스키마 및 클러스터 자원에 따라 마스터 노드에 의해 생성되고, 상기 장치는 물리 노드 다이어그램 내의 제1 논리 노드의 임의의 제1 물리 노드이고, 물리 노드 다이어그램은 하나 이상의 제1 논리 노드와 하나 이상의 제2 논리 노드를 포함하고, 제1 논리 노드는 하나 이상의 제1 물리 노드를 포함하고, 제2 논리 노드는 하나 이상의 제2 물리 노드를 포함하고, 제1 논리 노드와 상기 제2 논리 노드는 연결되어 있다. 처리 모듈(11)은 물리 노드 다이어그램에 따라 처리 모듈(11)의 계산될 데이터 큐브의 구조를 결정하도록 구성되어 있다. 생성 모듈(12)은, 수신 모듈(10)이 마스터 노드에 의해 전송된 질의 커맨드를 수신하는 경우, 처리 모듈(11)의 계산될 데이터 큐브의 구조에 따라, 처리 모듈(11)에 의해 수신된 데이터 스트림에 대해 집성 작업을 수행하여, 데이터 큐브를 생성하도록 구성되어 있으며, 데이터 스트림은 제2 물리 노드에 의해 데이터 스트림에 추가된 시간스탬프를 싣고 있고 시간스탬프는 데이터 스트림이 제2 논리 노드로 유입하는 순간을 나타낸다. 전송 모듈(13)은 마스터 노드에 데이터 큐브를 전송하도록 구성되어 있다.
본 발명의 본 실시예에 제공되는 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 장치는 전술한 방법의 실시예 1을 실행할 수 있으며, 그 구현 원리 및 기술적 효과는 유사하므로 여기서 다시 설명하지 않는다.
도 14는 본 발명에 따른 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 장치의 실시예 2의 개략 구성도이다. 도 13에 도시된 실시예에 기초하여, 생성 모듈(12)은, 상기 장치의 시간 윈도 내의 제1 윈도 유닛 내의 데이터 스트림에 대해 집성 작업을 수행하여, 제1 서브데이터 큐브를 생성하도록 구성된 제1 생성 서브유닛(121) - 시간 윈도는 하나 이상의 윈도 유닛을 포함하고, 시간 윈도의 길이는 고정되어 있음 -; 시간 윈도 내의 마지막 윈도 유닛 내의 데이터 스트림에 대해 집성 작업을 수행하여, 제2 서브데이터 큐브를 생성하도록 구성된 제2 생성 서브유닛(122); 및 제1 서브데이터 큐브, 제2 서브데이터 큐브, 및 처리 장치에 의한 사전 집성으로 취득되고 시간 윈도 내의 하나 이상의 다른 완전히 점유된 윈도 유닛에 대응하는 서브데이터 큐브를 결합하여, 데이터 큐브를 생성하도록 구성된 결합 서브유닛(123)을 포함한다.
또한, 생성 모듈(12)은 제1 생성 서브유닛(121)이 제1 서브데이터 큐브를 생성하기 전에, 버퍼 서브유닛(124)에 의해 수신된 데이터 스트림을, 데이터 스트림 내의 시간스탬프에 따라 시간 윈도 내의 대응하는 윈도 유닛에 버퍼링하도록 구성된 상기 버퍼 서브유닛(124); 시간 윈도 내의 완전히 점유된 윈도 유닛 내의 데이터 스트림에 대해 집성 작업을 수행하여, 서브데이터 큐브를 생성하고, 완전히 점유된 윈도 유닛을 표시하도록 구성된 제3 생성 서브유닛(125); 및 상기 장치가, 시간 윈도 내의 모든 윈도 유닛이 완전히 점유되어 있고, 새로운 데이터 스트림이 시간 윈도로 유입하는 것으로 판단하면, 새로운 윈도 유닛을 시간 윈도의 제1 윈도 유닛으로서 생성하도록 구성된 제4 생성 서브유닛(126)을 더 포함하고, 버퍼 서브유닛(124)은, 제1 윈도 유닛에 새로운 데이터 스트림을 버퍼링하고, 시간 윈도의 마지막 윈도 유닛에 있고 시간스탬프가 시간 윈도의 길이를 초과하는 데이터 스트림을 제어하여 유출하도록 더 구성되어 있다.
또한, 물리 노드 다이어그램은, 최소 집성 비용의 원리에 따라 마스터 노드에 의해 제1 논리 노드 간에 확립되어 있는 집성 관계를 더 포함하고, 버퍼 서브유닛(124)에 의해 수신된 데이터 스트림은, 상기 장치의 상위 레벨 장치에 의해 전송된 기본 데이터 스트림; 또는 상기 장치의 상위 레벨 장치에 의해 전송된 서브데이터 큐브를 포함하고, 기본 데이터 스트림은 집성 작업이 수행되지 않은 데이터 스트림이고, 상위 레벨 장치는 상기 장치가 위치하는 제1 논리 노드의 부모 논리 노드의 물리 노드이고, 서브데이터 큐브는 집성 작업이 수행된 데이터 스트림이다.
본 발명의 본 실시예에 제공되는 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 장치는 전술한 방법의 실시예 2을 실행할 수 있으며, 그 구현 원리 및 기술적 효과는 유사하므로 여기서 다시 설명하지 않는다.
도 15는 본 발명에 따른 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 장치의 실시예 3의 개략 구성도이다. 분산 시스템은 상기 장치, 하나 이상의 제1 물리 노드, 및 하나 이상의 제2 물리 노드를 포함한다. 상기 장치는 마스터 노드일 수 있거나, 마스터 노드에 통합될 수 있다. 도 15에 도시된 바와 같이, 상기 장치는 제1 생성 모듈(20), 제1 전송 모듈(21), 제2 선송 모듈(22), 및 제1 수신 모듈(23)을 포함한다. 제1 생성 모듈(20)은 미리 설정된 스키마 및 클러스터 자원에 따라 물리 노드 다이어그램을 생성하도록 구성되어 있으며, 물리 노드 다이어그램은 하나 이상의 제1 논리 노드 및 하나 이상의 제2 논리 노드를 포함하고, 제1 논리 노드는 하나 이상의 제1 물리 노드를 포함하고, 제2 논리 노드는 하나 이상의 제2 물리 노드를 포함하고, 제1 논리 노드와 상기 제2 논리 노드는 연결되어 있다. 제1 전송 모듈(21)은 처리 노드에 물리 노드 다이어그램을 전송하도록 구성되어, 처리 노드이 물리 노드 다이어그램에 따라 처리 노드의 계산될 데이터 큐브의 구조를 결정하도록 하며, 처리 노드는 물리 노드 다이어그램 내의 제1 논리 노드의 임의의 제1 물리 노드이다. 제2 선송 모듈(22)은 처리 노드에 질의 커맨드를 전송하도록 구성되어, 처리 노드가, 처리 노드의 계산될 데이터 큐브의 구조에 따라, 처리 노드에 의해 수신된 데이터 스트림에 대해 집성 작업을 수행하여 데이터 큐브를 생성하도록 하며, 데이터 스트림은 제2 물리 노드에 의해 데이터 스트림에 추가된 시간스탬프를 싣고 있고, 시간스탬프는 데이터 스트림이 제2 논리 노드로 유입하는 순간을 나타낸다. 제1 수신 모듈(23)은 처리 노드에 의해 전송된 데이터 큐브를 수신하도록 구성되어 있다.
본 발명의 본 실시예에 제공되는 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 장치는 전술한 방법의 실시예 3을 실행할 수 있으며, 그 구현 원리 및 기술적 효과는 유사하므로 여기서 다시 설명하지 않는다.
도 16은 본 발명에 따른 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 장치의 실시예 4의 개략 구성도이다. 도 15에 도시된 실시예에 기초하여, 제1 생성 모듈(20)은 구체적으로, 미리 설정된 스키마에 따라 노드 레벨 다이어그램을 생성하도록 구성된 제1 생성 서브유닛(201) - 노드 레벨 다이어그램은 상이한 데이터 큐브 간의 레벨 관계를 보여 주는 데 사용되고, 노드 레벨 다이어그램 내의 각 노드는 하나의 구조의 데이터 큐브를 나타냄 -; 최소 집성 비용의 원리에 따라 제1 논리 노드 간의 집성 관계를 확립하고, 집성 관계, 노드 레벨 다이어그램, 및 스키마에 정의된 모든 논리 노드에 따라 논리 노드 다이어그램을 생성하도록 구성된 제2 생성 서브유닛(202); 그리고 논리 노드 다이어그램, 스키마에 정의된 모든 논리 노드의 병렬도, 및 클러스터 자원에 따라 물리 노드 다이어그램을 생성하도록 구성된 제3 생성 서브유닛(203)을 더 포함한다.
본 발명의 본 실시예에 제공되는 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 장치는 전술한 방법의 실시예 4을 실행할 수 있으며, 그 구현 원리 및 기술적 효과는 유사하므로 여기서 다시 설명하지 않는다.
도 17은 본 발명에 따른 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 장치의 실시예 5의 개략 구성도이다. 도 16에 도시된 실시예에 기초하여, 상기 장치는, 제2 전송 모듈이 처리 노드에 질의 커맨드를 전송하기 전에, 클라이언트에 의해 전송된 질의문을 수신하도록 구성된 제2 수신 모듈(24); 및 질의문에 따라 질의될 논리 노드를 결정하도록 구성된 결정 모듈(25)을 더 포함한다.
또한, 상기 장치는, 제3 전송 모듈(26)을 더 포함하고, 제3 전송 모듈(26)은, 질의될 논리 노드가 처리 노드가 위치하는 제1 논리 노드이면, 클라이언트에 데이터 큐브를 전송하도록 구성되어 있다.
상기 장치는 제2 생성 모듈(27)을 더 포함할 수 있다. 질의될 논리 노드가 제3 논리 노드이고 제3 논리 노드가 물리 노드 다이어그램에 없는 노드이면, 결정 모듈(25)은 또한 노드 레벨 다이어그램 및 최소 집성 비용의 원리에 따라, 처리 노드가 위치하는 제1 논리 노드가 최소 비용으로 제3 논리 노드에 대해 집성이 수행되는 논리 노드인 것으로 결정하도록 더 구성되어 있다. 제2 생성 모듈(27)은, 제3 논리 노드에 대한 데이터 큐브의 구조에 따라, 처리 노드에 의해 전송된 데이터 큐브에 대해 집성 작업을 수행하여, 새로운 데이터 큐브를 생성도록 구성되어 있다. 제3 전송 모듈(26)은 클라이언트에 새로운 데이터 큐브를 전송하도록 더 구성되어 있다.
본 발명의 본 실시예에 제공되는 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 장치는 전술한 방법의 실시예 4를 실행할 수 있으며, 그 구현 원리 및 기술적 효과는 유사하므로 여기서 다시 설명하지 않는다.
끝으로, 상기 실시예는 본 발명의 기술적 방안을 설명하기 위한 것일 뿐이고, 본 발명을 한정하기 위한 것이 아님에 유의하여야 한다. 상기 실시예를 참조하여 본 발명을 상세하게 설명하였지만, 당업자는 상기 실시예에서 설명한 기술적 방안을 수정하거나 그 기술적 특징의 일부 또는 전부를 등가물로 교체할 수 있다는 것을 이해해야 하지만, 이러한 수정 또는 교체는 본 발명의 실시예에서의 기술적 방안의 범위를 벗어나서 해당 기술적 방안의 본질을 구성하는 것은 아니다.

Claims (18)

  1. 마스터 노드, 하나 이상의 제1 물리 노드, 및 하나 이상의 제2 물리 노드를 포함하는 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법으로서,
    처리 노드가 상기 마스터 노드에 의해 전송된 물리 노드 다이어그램을 수신하는 단계 - 상기 물리 노드 다이어그램은 미리 설정된 스키마(preset schema) 및 클러스터 자원(cluster resource)에 따라 상기 마스터 노드에 의해 생성되고, 상기 처리 노드는 상기 물리 노드 다이어그램 내의 제1 논리 노드의 임의의 제1 물리 노드이고, 상기 물리 노드 다이어그램은 하나 이상의 제1 논리 노드와 하나 이상의 제2 논리 노드를 포함하고, 상기 제1 논리 노드는 하나 이상의 제1 물리 노드를 포함하고, 상기 제2 논리 노드는 하나 이상의 제2 물리 노드를 포함하고, 상기 제1 논리 노드와 상기 제2 논리 노드는 연결되어 있음 -;
    상기 처리 노드가 상기 물리 노드 다이어그램에 따라 상기 처리 노드의 계산될 데이터 큐브의 구조를 결정하는 단계;
    상기 처리 노드가 상기 마스터 노드에 의해 전송된 질의 커맨드(query command)를 수신하면, 상기 처리 노드가, 상기 처리 노드의 계산될 데이터 큐브의 구조에 따라, 상기 처리 노드에 의해 수신된 데이터 스트림에 대해 집성 작업을 수행하여 데이터 큐브를 생성하는 단계 - 상기 데이터 스트림은 상기 제2 물리 노드에 의해 상기 데이터 스트림에 추가된 시간스탬프(timestamp)를 싣고 있고, 상기 시간스탬프는 상기 데이터 스트림이 상기 제2 논리 노드로 유입하는 순간을 나타냄 -; 및
    상기 처리 노드가 상기 마스터 노드에 상기 데이터 큐브를 전송하는 단계
    를 포함하는 데이터 큐브를 생성하는 방법.
  2. 제1항에 있어서,
    상기 처리 노드가, 상기 처리 노드의 계산될 데이터 큐브의 구조에 따라, 상기 처리 노드에 의해 수신된 데이터 스트림에 대해 집성 작업을 수행하여 데이터 큐브를 생성하는 단계는,
    상기 처리 노드가 상기 처리 노드의 시간 윈도(time window) 내의 제1 윈도 유닛(window unit) 내의 데이터 스트림에 대해 집성 작업을 수행하여 제1 서브데이터 큐브(sub-data cube)를 생성하는 단계 - 상기 시간 윈도는 하나 이상의 윈도 유닛을 포함하고, 상기 시간 윈도의 길이는 고정되어 있음 - ;
    상기 처리 노드가 상기 시간 윈도 내의 마지막 윈도 유닛 내의 데이터 스트림에 대해 집성 작업을 수행하여 제2 서브데이터 큐브를 생성하는 단계 ; 및
    상기 처리 노드가, 상기 제1 서브데이터 큐브, 상기 제2 서브데이터 큐브, 및 상기 처리 노드에 의한 사전 집성(aggregation in advance)으로 취득되고 상기 시간 윈도 내의 하나 이상의 다른 완전히 점유된 윈도 유닛에 대응하는 서브데이터 큐브를 결합하여, 상기 데이터 큐브를 생성하는 단계를 포함하는, 데이터 큐브를 생성하는 방법.
  3. 제2항에 있어서,
    상기 처리 노드가, 상기 처리 노드의 시간 윈도 내의 제1 윈도 유닛 내의 데이터 스트림에 대해 집성 작업을 수행하여 제1 서브데이터 큐브를 생성하는 단계 전에,
    상기 처리 노드가, 상기 처리 노드에 의해 수신된 데이터 스트림을 상기 데이터 스트림 내의 상기 시간스탬프에 따라 상기 시간 윈도 내의 대응하는 윈도 유닛에 버퍼링하는 단계;
    상기 처리 노드가 ,상기 시간 윈도 내의 완전히 점유된 윈도 유닛 내의 데이터 스트림에 대해 집성 작업을 수행하여 서브데이터 큐브를 생성하고, 상기 완전히 점유된 윈도 유닛을 표시하는 단계;
    상기 처리 노드가, 상기 시간 윈도 내의 모든 윈도 유닛이 완전히 점유되어 있고, 새로운 데이터 스트림이 상기 시간 윈도로 유입하는 것으로 판단하면, 상기 처리 노드가 새로운 윈도 유닛을 상기 시간 윈도의 제1 윈도 유닛으로서 생성하는 단계; 및
    상기 처리 노드가, 상기 제1 윈도 유닛에 상기 새로운 데이터 스트림을 버퍼링하고, 상기 시간 윈도의 상기 마지막 윈도 유닛 내에 있고 시간스탬프가 상기 시간 윈도의 길이를 초과하는 데이터 스트림을 제어하여 유출하는 단계를 더 포함하는 데이터 큐브를 생성하는 방법.
  4. 제2항 또는 제3항에 있어서,
    상기 물리 노드 다이어그램은, 최소 집성 비용의 원리에 따라 상기 마스터 노드에 의해 상기 제1 논리 노드 간에 확립되어 있는 집성 관계(aggregation relationship)를 더 포함하고,
    상기 처리 노드에 의해 수신된 데이터 스트림은, 상기 처리 노드의 상위 레벨 처리 노드에 의해 전송된 기본 데이터 스트림; 또는 상기 처리 노드의 상위 레벨 처리 노드에 의해 전송된 서브데이터 큐브를 더 포함하고, 상기 기본 데이터 스트림은 집성 작업이 수행되지 않은 데이터 스트림이고, 상기 상위 레벨 처리 노드는 상기 처리 노드가 위치하는 제1 논리 노드의 부모 논리 노드의 물리 노드이고, 상기 서브데이터 큐브는 집성 작업이 수행된 데이터 스트림인, 데이터 큐브를 생성하는 방법.
  5. 마스터 노드, 하나 이상의 제1 물리 노드, 및 하나 이상의 제2 물리 노드를 포함하는 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법으로서,
    상기 마스터 노드가 미리 설정된 스키마 및 클러스터 자원에 따라 물리 노드 다이어그램을 생성하는 단계 - 상기 물리 노드 다이어그램은 하나 이상의 제1 논리 노드와 하나 이상의 제2 논리 노드를 포함하고, 상기 제1 논리 노드는 하나 이상의 제1 물리 노드를 포함하고, 상기 제2 논리 노드는 하나 이상의 제2 물리 노드를 포함하고, 상기 제1 논리 노드와 상기 제2 논리 노드는 연결되어 있음 -;
    상기 마스터 노드가 처리 노드에 상기 물리 노드 다이어그램을 전송하여, 상기 처리 노드가 상기 물리 노드 다이어그램에 따라 상기 처리 노드의 계산될 데이터 큐브의 구조를 결정하도록 하는 단계 - 상기 처리 노드는 상기 물리 노드 다이어그램 내의 상기 제1 논리 노드의 임의의 제1 물리 노드임 -;
    상기 마스터 노드가 상기 처리 노드에 질의 커맨드를 전송하여, 상기 처리 노드가, 상기 처리 노드의 계산될 데이터 큐브의 구조에 따라, 상기 처리 노드에 의해 수신된 데이터 스트림에 대해 집성 작업을 수행하여 데이터 큐브를 생성하도록 하는 단계 - 상기 데이터 스트림은 상기 제2 물리 노드에 의해 상기 데이터 스트림에 추가된 시간스탬프를 싣고 있고, 상기 시간스탬프는 상기 데이터 스트림이 상기 제2 논리 노드로 유입하는 순간을 나타냄 -;
    상기 마스터 노드가 상기 처리 노드에 의해 전송된 데이터 큐브를 수신하는 단계
    를 포함하는 데이터 큐브를 생성하는 방법.
  6. 제5항에 있어서,
    상기 마스터 노드가 미리 설정된 스키마 및 클러스터 자원에 따라 물리 노드 다이어그램을 생성하는 단계는,
    상기 마스터 노드가 상기 미리 설정된 스키마에 따라 노드 레벨 다이어그램을 생성하는 단계 - 상기 노드 레벨 다이어그램은 상이한 데이터 큐브 간의 레벨 관계를 보여 주는 데 사용되고, 상기 노드 레벨 다이어그램 내의 각 노드는 하나의 구조의 데이터 큐브를 나타냄 -;
    상기 마스터 노드가, 최소 집성 비용의 원리에 따라 상기 제1 논리 노드 간의 집성 관계를 확립하고; 상기 집성 관계, 상기 노드 레벨 다이어그램, 및 상기 스키마에 정의된 모든 논리 노드에 따라 논리 노드 다이어그램을 생성하는 단계; 및
    상기 마스터 노드가, 상기 논리 노드 다이어그램, 상기 스키마에 정의된 모든 논리 노드의 병렬도(parallelism degree), 및 상기 클러스터 자원에 따라 상기 물리 노드 다이어그램을 생성하는 단계를 포함하는, 데이터 큐브를 생성하는 방법.
  7. 제5항에 있어서,
    상기 마스터 노드가 상기 처리 노드에 질의 커맨드를 전송하기 전에,
    상기 마스터 노드가 클라이언트에 의해 전송된 질의문(query statement)을 수신하는 단계; 및
    상기 마스터 노드가 상기 질의문에 따라 질의될(to-be-queried) 논리 노드를 결정하는 단계를 더 포함하는 데이터 큐브를 생성하는 방법.
  8. 제7항에 있어서,
    상기 질의될 논리 노드가 상기 처리 노드가 위치하는 제1 논리 노드이면, 상기 마스터 노드가 상기 클라이언트에 상기 데이터 큐브를 전송하는, 데이터 큐브를 생성하는 방법.
  9. 제7항에 있어서,
    상기 질의될 논리 노드가 제3 논리 노드이고 상기 제3 논리 노드가 상기 물리 노드 다이어그램에 없는 노드이면, 상기 마스터 노드가, 노드 레벨 다이어그램 및 최소 집성 비용의 원리에 따라, 상기 처리 노드가 위치하는 제1 논리 노드가, 최소 비용으로 상기 제3 논리 노드에 대해 집성이 수행되는 논리 노드인 것으로 결정하는, 데이터 큐브를 생성하는 방법.
  10. 마스터 노드, 하나 이상의 제1 물리 노드, 및 하나 이상의 제2 물리 노드를 포함하는 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 장치로서,
    상기 마스터 노드에 의해 전송된 물리 노드 다이어그램을 수신하도록 구성된 수신 모듈 - 상기 물리 노드 다이어그램은 미리 설정된 스키마 및 클러스터 자원에 따라 상기 마스터 노드에 의해 생성되고, 상기 장치는 상기 물리 노드 다이어그램 내의 제1 논리 노드의 임의의 제1 물리 노드이고, 상기 물리 노드 다이어그램은 하나 이상의 제1 논리 노드와 하나 이상의 제2 논리 노드를 포함하고, 상기 제1 논리 노드는 하나 이상의 제1 물리 노드를 포함하고, 상기 제2 논리 노드는 하나 이상의 제2 물리 노드를 포함하고, 상기 제1 논리 노드와 상기 제2 논리 노드는 연결되어 있음 -;
    상기 물리 노드 다이어그램에 따라 처리 모듈의 계산될 데이터 큐브의 구조를 결정하도록 구성된 상기 처리 모듈;
    상기 수신 모듈이 상기 마스터 노드에 의해 전송된 질의 커맨드를 수신하는 경우, 상기 처리 모듈의 계산될 데이터 큐브의 구조에 따라, 상기 처리 모듈에 의해 수신된 데이터 스트림에 대해 집성 작업을 수행하여 데이터 큐브를 생성하도록 구성된 생성 모듈 - 상기 데이터 스트림은 상기 제2 물리 노드에 의해 상기 데이터 스트림에 추가된 시간스탬프를 싣고 있고, 상기 시간스탬프는 상기 데이터 스트림이 상기 제2 논리 노드로 유입하는 순간을 나타냄 -; 및
    상기 마스터 노드에 상기 데이터 큐브를 전송하도록 구성된 전송 모듈
    을 포함하는 데이터 큐브를 생성하는 장치.
  11. 제10항에 있어서,
    상기 생성 모듈은,
    상기 장치의 시간 윈도 내의 제1 윈도 유닛 내의 데이터 스트림에 대해 집성 작업을 수행하여 제1 서브데이터 큐브를 생성하도록 구성된 제1 생성 서브유닛 - 상기 시간 윈도는 하나 이상의 윈도 유닛을 포함하고, 상기 시간 윈도의 길이는 고정되어 있음 -;
    상기 시간 윈도 내의 마지막 윈도 유닛 내의 데이터 스트림에 대해 집성 작업을 수행하여 제2 서브데이터 큐브를 생성하도록 구성된 제2 생성 서브유닛; 및
    상기 제1 서브데이터 큐브, 상기 제2 서브데이터 큐브, 및 처리 노드에 의한 사전 집성으로 취득되고 상기 시간 윈도 내의 하나 이상의 다른 완전히 점유된 윈도 유닛에 대응하는 서브데이터 큐브를 결합하여, 상기 데이터 큐브를 생성하도록 구성된 결합 서브유닛을 포함하는, 데이터 큐브를 생성하는 장치.
  12. 제11항에 있어서,
    상기 생성 모듈은,
    상기 제1 생성 서브유닛이 상기 제1 서브데이터 큐브를 생성하기 전에, 버퍼 서브유닛에 의해 수신된 데이터 스트림을 상기 데이터 스트림 내의 시간스탬프에 따라 상기 시간 윈도 내의 대응하는 윈도 유닛에 버퍼링하도록 구성된 상기 버퍼 서브유닛;
    상기 시간 윈도 내의 완전히 점유된 윈도 유닛 내의 데이터 스트림에 대해 집성 작업을 수행하여 서브데이터 큐브를 생성하고, 상기 완전히 점유된 윈도 유닛을 표시하도록 구성된 제3 생성 서브유닛; 및
    상기 장치가, 상기 시간 윈도 내의 모든 윈도 유닛이 완전히 점유되어 있고, 새로운 데이터 스트림이 상기 시간 윈도로 유입하는 것으로 판단하면, 새로운 윈도 유닛을 상기 시간 윈도의 제1 윈도 유닛으로서 생성하도록 구성된 제4 생성 서브유닛을 더 포함하고,
    상기 버퍼 서브유닛은, 상기 새로운 데이터 스트림을 상기 제1 윈도 유닛에 버퍼링하고, 상기 시간 윈도의 상기 마지막 윈도 유닛에 있고 시간스탬프가 상기 시간 윈도의 길이를 초과하는 데이터 스트림을 제어하여 유출하도록 더 구성되어 있는, 데이터 큐브를 생성하는 장치.
  13. 제12항에 있어서,
    상기 물리 노드 다이어그램은, 최소 집성 비용의 원리에 따라 상기 마스터 노드에 의해 상기 제1 논리 노드 간에 확립되어 있는 집성 관계를 더 포함하고,
    상기 버퍼 서브유닛에 의해 수신된 데이터 스트림은, 상기 장치의 상위 레벨 장치에 의해 전송된 기본 데이터 스트림; 또는 상기 장치의 상위 레벨 장치에 의해 전송된 서브데이터 큐브를 포함하고, 상기 기본 데이터 스트림은 집성 작업이 수행되지 않은 데이터 스트림이고, 상기 상위 레벨 장치는 상기 장치가 위치하는 제1 논리 노드의 부모 논리 노드의 물리 노드이고, 상기 서브데이터 큐브는 집성 작업이 수행된 데이터 스트림인, 데이터 큐브를 생성하는 장치.
  14. 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 장치로서,
    상기 분산 시스템은 상기 장치, 하나 이상의 제1 물리 노드, 및 하나 이상의 제2 물리 노드를 포함하고,
    상기 장치는,
    미리 설정된 스키마 및 클러스터 자원에 따라 물리 노드 다이어그램을 생성하도록 구성된 제1 생성 모듈 - 상기 물리 노드 다이어그램은 하나 이상의 제1 논리 노드 및 하나 이상의 제2 논리 노드를 포함하고, 상기 제1 논리 노드는 하나 이상의 제1 물리 노드를 포함하고, 상기 제2 논리 노드는 하나 이상의 제2 물리 노드를 포함하고, 상기 제1 논리 노드와 상기 제2 논리 노드는 연결되어 있음 -;
    처리 노드에 상기 물리 노드 다이어그램을 전송하도록 구성되어, 상기 처리 노드가 상기 물리 노드 다이어그램에 따라 상기 처리 노드의 계산될 데이터 큐브의 구조를 결정하도록 하는 제1 전송 모듈 - 상기 처리 노드는 상기 물리 노드 다이어그램 내의 상기 제1 논리 노드의 임의의 제1 물리 노드임 -;
    상기 처리 노드에 질의 커맨드를 전송하도록 구성되어, 상기 처리 노드가, 상기 처리 노드의 계산될 데이터 큐브의 구조에 따라, 상기 처리 노드에 의해 수신된 데이터 스트림에 대해 집성 작업을 수행하여 데이터 큐브를 생성하도록 하는 제2 전송 모듈 - 상기 데이터 스트림은 상기 제2 물리 노드에 의해 상기 데이터 스트림에 추가된 시간스탬프를 싣고 있고, 상기 시간스탬프는 상기 데이터 스트림이 상기 제2 논리 노드로 유입하는 순간을 나타냄 -; 및
    상기 처리 노드에 의해 전송된 데이터 큐브를 수신하도록 구성된 제1 수신 모듈
    을 포함하는 데이터 큐브를 생성하는 장치.
  15. 제14항에 있어서,
    상기 제1 생성 모듈은,
    상기 미리 설정된 스키마에 따라 노드 레벨 다이어그램을 생성하도록 구성된 제1 생성 서브유닛 - 상기 노드 레벨 다이어그램은 상이한 데이터 큐브 간의 레벨 관계를 보여 주는 데 사용되고, 상기 노드 레벨 다이어그램 내의 각 노드는 하나의 구조의 데이터 큐브를 나타냄 -;
    최소 집성 비용의 원리에 따라 상기 제1 논리 노드 간의 집성 관계를 확립하고; 상기 집성 관계, 상기 노드 레벨 다이어그램, 및 상기 스키마에 정의된 모든 논리 노드에 따라 논리 노드 다이어그램을 생성하도록 구성된 제2 생성 서브유닛; 및
    상기 논리 노드 다이어그램, 상기 스키마에 정의된 모든 논리 노드의 병렬도, 및 상기 클러스터 자원에 따라 상기 물리 노드 다이어그램을 생성하도록 구성된 제3 생성 서브유닛을 포함하는, 데이터 큐브를 생성하는 장치.
  16. 제14항에 있어서,
    상기 제2 전송 모듈이 상기 처리 노드에 상기 질의 커맨드를 전송하기 전에, 클라이언트에 의해 전송된 질의문을 수신하도록 구성된 제2 수신 모듈; 및
    상기 질의문에 따라 질의될 논리 노드를 결정하도록 구성된 결정 모듈을 더 포함하는 데이터 큐브를 생성하는 장치.
  17. 제16항에 있어서,
    제3 전송 모듈을 더 포함하고,
    상기 제3 전송 모듈은, 상기 질의될 논리 노드가 상기 처리 노드가 위치하는 제1 논리 노드이면, 상기 클라이언트에 상기 데이터 큐브를 전송하도록 구성되어 있는, 데이터 큐브를 생성하는 장치.
  18. 제17항에 있어서,
    제2 생성 모듈을 더 포함하고,
    상기 질의될 논리 노드가 제3 논리 노드이고 상기 제3 논리 노드가 상기 물리 노드 다이어그램에 없는 노드이면, 상기 결정 모듈은, 노드 레벨 다이어그램 및 최소 집성 비용의 원리에 따라, 상기 처리 노드가 위치하는 제1 논리 노드가 최소 비용으로 상기 제3 논리 노드에 대해 집성이 수행되는 논리 노드인 것으로 결정하도록 더 구성되어 있고;
    상기 제2 생성 모듈은, 상기 제3 논리 노드에 대한 데이터 큐브의 구조에 따라, 상기 처리 노드에 의해 전송된 상기 데이터 큐브에 대해 집성 작업을 수행하여 새로운 데이터 큐브를 생성하도록 구성되어 있고;
    상기 제3 전송 모듈은 상기 클라이언트에 상기 새로운 데이터 큐브를 전송하도록 더 구성되어 있는, 데이터 큐브를 생성하는 장치.
KR1020150050710A 2014-04-11 2015-04-10 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법 및 장치 KR101660860B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201410145878.4A CN103916478B (zh) 2014-04-11 2014-04-11 基于分布式系统的流式构建数据方的方法和装置
CN201410145878.4 2014-04-11

Publications (2)

Publication Number Publication Date
KR20150118046A KR20150118046A (ko) 2015-10-21
KR101660860B1 true KR101660860B1 (ko) 2016-09-28

Family

ID=51041876

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150050710A KR101660860B1 (ko) 2014-04-11 2015-04-10 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법 및 장치

Country Status (4)

Country Link
US (1) US10019505B2 (ko)
KR (1) KR101660860B1 (ko)
CN (1) CN103916478B (ko)
TW (1) TWI552543B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106302621B (zh) * 2015-06-12 2019-11-08 阿里巴巴集团控股有限公司 一种消息通知方法和设备
CN108140047B (zh) * 2016-01-05 2021-06-29 华为技术有限公司 数据处理装置和方法以及数据容器结构
KR102588688B1 (ko) 2016-05-12 2023-10-12 한국전자통신연구원 데이터 분석 방법 및 시스템
CN108241525A (zh) * 2016-12-23 2018-07-03 航天星图科技(北京)有限公司 一种多节点任务动态控制方法
US11023485B2 (en) 2018-09-18 2021-06-01 International Business Machines Corporation Cube construction for an OLAP system
CN110110165B (zh) * 2019-04-01 2021-04-02 跬云(上海)信息科技有限公司 用于预计算系统中查询引擎的动态路由方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080168375A1 (en) 2007-01-07 2008-07-10 International Business Machines Corporation Systems and methods for simultaneous summarization of data cube streams

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7007020B1 (en) * 2000-03-10 2006-02-28 Hewlett-Packard Development Company, L.P. Distributed OLAP-based association rule generation method and system
US7761407B1 (en) * 2006-10-10 2010-07-20 Medallia, Inc. Use of primary and secondary indexes to facilitate aggregation of records of an OLAP data cube
US8024287B2 (en) 2008-06-27 2011-09-20 SAP France S.A. Apparatus and method for dynamically materializing a multi-dimensional data stream cube
US9189535B2 (en) 2009-12-01 2015-11-17 International Business Machines Corporation Compensating for unbalanced hierarchies when generating OLAP queries from report specifications
CN102158531A (zh) * 2010-02-01 2011-08-17 北京大学 一种分布式查询数据流传输方法
WO2012068557A1 (en) * 2010-11-18 2012-05-24 Wal-Mart Stores, Inc. Real-time analytics of streaming data
US9501550B2 (en) * 2012-04-18 2016-11-22 Renmin University Of China OLAP query processing method oriented to database and HADOOP hybrid platform
US8738649B2 (en) * 2012-05-22 2014-05-27 Guavus, Inc. Distributed processing of streaming data records

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080168375A1 (en) 2007-01-07 2008-07-10 International Business Machines Corporation Systems and methods for simultaneous summarization of data cube streams

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
'계층적 시각화 기법을 활용한 데이터 큐브의 탐색 방안', 한국컴퓨터정보학회논문지 제16권 제2호 통권 제83호(2011.02)
'분산환경에서 데이터 큐브와 신경망을 이용한 데이터마이닝기법', 한국해양정보통신학회 2003 추계종합학술대회지 제7권 제2호(2003)
'큐브 생성 기법에 대한 비교 평가 : 네트워크 트래픽 로그 분석 시스템 사례 중심', 2012 한국컴퓨터종합학술대회 논문집 Vol.39, No.1(2012)

Also Published As

Publication number Publication date
TWI552543B (zh) 2016-10-01
TW201540016A (zh) 2015-10-16
US20150294001A1 (en) 2015-10-15
KR20150118046A (ko) 2015-10-21
CN103916478B (zh) 2017-06-06
CN103916478A (zh) 2014-07-09
US10019505B2 (en) 2018-07-10

Similar Documents

Publication Publication Date Title
KR101660860B1 (ko) 분산 시스템에 기반한 스트리밍 방식으로 데이터 큐브를 생성하는 방법 및 장치
CN106648904B (zh) 一种流式数据处理自适应速率控制方法
US8572274B2 (en) Estimating load shed data in streaming database applications
US20130290966A1 (en) Operator graph changes in response to dynamic connections in stream computing applications
US8639809B2 (en) Predictive removal of runtime data using attribute characterizing
US8954713B2 (en) Using predictive determinism within a streaming environment
US8730819B2 (en) Flexible network measurement
US8943120B2 (en) Enhanced barrier operator within a streaming environment
WO2017181587A1 (zh) Cdn网络中的节点管理方法和电子设备
CA2951618A1 (en) Data pipeline architecture for cloud processing of structured and unstructured data
US20150295970A1 (en) Method and device for augmenting and releasing capacity of computing resources in real-time stream computing system
US20160188376A1 (en) Push/Pull Parallelization for Elasticity and Load Balance in Distributed Stream Processing Engines
US9930081B2 (en) Streams optional execution paths depending upon data rates
Xie et al. Cutting long-tail latency of routing response in software defined networks
WO2013030684A1 (en) Stream application performance monitoring metrics
CN107729138B (zh) 一种高性能分布式矢量空间数据的分析方法和装置
US20120311172A1 (en) Overloading processing units in a distributed environment
US20110302196A1 (en) Visualizing query results in stream processing systems
US11704158B2 (en) Managing processing system efficiency
CN114372084A (zh) 面向传感流数据的实时处理系统
JP5520369B2 (ja) コンピュータ・システム、方法及びプログラム
Sax et al. Aeolus: An optimizer for distributed intra-node-parallel streaming systems
CN109379163A (zh) 一种报文转发速率控制方法及装置
CN109508433B (zh) 基于匹配算法性能调整的负载波动应对方法和系统
US9509749B2 (en) Providing transaction identifiers for application performance management in distributed computer systems

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

Year of fee payment: 4