Understanding Sliding and Tumbling Windows

This subsection describes how sliding and tumbling windows work. Both types of windows
move across continuous streaming data, splitting the data into finite sets. Finite windows are
helpful for operations such as aggregations, joins, and pattern matching.

Sliding Windows

In a sliding window, tuples are grouped within a window that
slides across the data stream according to a specified interval. A time-based
sliding window with a length of ten seconds and a sliding interval of five seconds
contains tuples that arrive within a ten-second window. The set of tuples within the
window are evaluated every five seconds. Sliding windows can contain overlapping
data; an event can belong to more than one sliding window.

In the following image, the first window (w1, in the box with dashed lines) contains
events that arrived between the zeroth and tenth seconds. The second window (w2, in
the box with solid lines) contains events that arrived between the fifth and
fifteenth seconds. Note that events e3 through e6 are in both windows. When window
w2 is evaluated at time t = 15 seconds, events e1 and e2 are dropped from the event
queue.

An example would be to compute the moving average of a stock price across the last
five minutes, triggered every second.

Tumbling Windows

In a tumbling window, tuples are grouped in a single window
based on time or count. A tuple belongs to only one window.

For example, consider a time-based tumbling window with a length of five seconds. The
first window (w1) contains events that arrived between the zeroth and fifth seconds.
The second window (w2) contains events that arrived between the fifth and tenth
seconds, and the third window (w3) contains events that arrived between tenth and
fifteenth seconds. The tumbling window is evaluated every five seconds, and none of
the windows overlap; each segment represents a distinct time segment.

An example would be to compute the average price of a stock over the last five
minutes, computed every five minutes.