스트림 데이터를 일련의 윈도우 또는 시간 범위로 나누는 작업을 의미한다. Windowing은 데이터가 어떻게 전달되고, 어떻게 그룹화하거나 배열하여 필요한 뷰를 얻는지 결정하는 데 도움이 된다.
윈도우는 스트림 데이터에서 정의된 시간 또는 개수에 따라 분할된 작은 데이터 세트를 말한다. 일련의 연속적인 이벤트를 포함하며, 이벤트의 집합으로 작업을 수행하기 위해 사용된다.
Windowing은 시간 기반 또는 개수 기반으로 수행될 수 있다.
이벤트 시간 윈도윙 (빅데이터를 지탱하는 기술 p.218)
스트림 처리에서는 종종 시간을 일정 간격으로 나누어 윈도우를 만들고 그 안에서 데이터 집계를 한다. 이벤트 시간에 의해 윈도우를 나누는 것을 이벤트 시간 윈도윙이라고 말한다.
이벤트 시간으로 보면, 메시지가 배송된 데이터는 무작위 순으로 나열된, 즉 '아웃 오브 오더' 상태이므로 적절히 순서를 바꿔 집계 결과를 업데이트 해야 한다.
그 때문에 과거 이벤트의 상태를 보관하면서, 데이터가 도달할 때마다 해당하는 윈도우를 재집계할 피요가 있다. 데이터를 무한히 계속 보관할 수는 없으므로 일정 이상 늦게 온 데이터는 무시할 필요도 있다. 이벤트 시간 윈도윙에서는 이런 것을 고려하면서 *DAG를 기술하게 된다.
*DAG (directed acyclic graph, 방향성 비순환 그래프) : DAG 그 자체는 어떤 새로운 기술이 아니라 수학과 컴퓨터 알고리즘에서 사용되는 데이터 모델의 하나다. DAG은 바향성과 비순환이라는 성질을 갖고 있다. 데이터 플로우에서는 실행해야 할 일련의 태스크를 DAG에 의한 데이터 구조로 표현한다.
Azure Stream Analytics에서는 세 가지 유형의 Windowing이 제공된다. 이러한 윈도우 유형은 스트림 데이터를 분석하고 집계하는 데 사용된다.
Sliding
윈도우는 겹쳐질 수 있으며, 새로운 이벤트가 도착할 때마다 윈도우가 업데이트된다.
Tumbling
윈도우는 이전 윈도우와 겹치지 않고, 정해진 시간 또는 개수 후에 새로운 윈도우가 생성된다.
Hopping
윈도우는 이전 윈도우와 겹치며, 일정한 간격으로 새로운 윈도우가 생성된다.