Setup
1. Ingest events from Kafka
2. Define features as a materialized view
RisingWave maintains this view incrementally as events arrive. The result is always current — no recomputation on read.3. Query features at inference time
Point queries against the MV return in milliseconds — the work is already done.4. Chain a UDF for live inference (optional)
Key points
- The MV is maintained incrementally — a new event triggers an incremental update, not a full recompute
WHERE event_time >= NOW() - INTERVAL '1 day'creates a rolling window: old data falls out automatically- For multi-entity features, add more columns to
GROUP BY; for cross-entity features, use a JOIN between two sources
Next steps
- Use cases overview — where feature stores fit in the broader picture
- Kafka to MV recipe — simpler pipeline without inference