A Continuous Query is a query designed to operate perpetually over one or more unbounded, continuously arriving data streams. Unlike traditional database queries that execute once against a static, finite dataset and produce a fixed result set, a continuous query runs indefinitely, processing new data as it arrives and producing results that dynamically update over time.
Continuous queries are the core abstraction used in many stream processing systems, including Streaming Databases like RisingWave, to define ongoing computations on data in motion.
Feature | Traditional Query (e.g., Standard SQL on DB) | Continuous Query (e.g., Streaming SQL) |
---|---|---|
Input Data | Finite, static dataset (at query time) | Unbounded, dynamic data stream(s) |
Execution | Runs once, terminates | Runs perpetually until explicitly stopped |
Output | Single, fixed result set | Dynamically updating result set over time |
State | Typically stateless (operates on data-at-rest) | Often stateful (needs to remember past data) |
Time Semantics | Implicitly 'now' (snapshot of data) | Explicit time handling (Event/Processing Time) |
Executing a continuous query involves:
RisingWave uses a PostgreSQL-compatible dialect of Streaming SQL as the primary way to define continuous queries. Key constructs include:
By using 'CREATE MATERIALIZED VIEW', users define continuous queries whose results are immediately queryable with low latency, without needing to re-execute the query logic on demand. The underlying continuous query runs in the background, managed by RisingWave's stream processing engine.