Use cases
Questions that were too expensive to ask.
Three workloads where the GPU changes what is practical. Each one: the question, why it is hard today, and how it looks in RayoDB.
Video & streaming analytics · origin workload
Every play, not a sample.
- The question
- How many viewers were watching at the same time during the match? Where in the funnel do they drop? At which minute of the episode does the audience leave?
- Why it is hard today
- These are session-level questions over billions of events. On CPU engines they are answered from pre-aggregated cubes and samples, which means the question has to be known in advance — and the answer is approximate.
- In RayoDB
- RayoDB was born on this workload. Video-analytics aggregates are first-class SQL functions, computed on the GPU over the raw events and merged exactly across shards.
- Who it is for
- Streaming platforms, broadcasters, video analytics vendors, ad-tech for CTV.
-- peak concurrency, funnel and retention over all events, in SQL
SELECT
CONCURRENT_SESSIONS(ts, event = 'start', event = 'stop') AS concurrency,
FUNNEL(ts, 30000,
event = 'start', event = 'join', event = 'play',
'level') AS funnel,
AUDIENCE_RETENTION(duration, play_time, seek_playhead,
event = 'stop', event = 'seek',
'mode=percent', 'buckets=20', 'unit=uniq') AS retention
FROM view_events
WHERE content_id = 'final-2026'
AND ts BETWEEN '2026-06-14 19:00:00' AND '2026-06-14 23:00:00';Product & event analytics
Any question, interactive.
- The question
- Which feature do users touch before they convert? How does retention differ by acquisition channel, by device, by week? What happened to the users who saw the new onboarding?
- Why it is hard today
- Event tables grow by billions of rows a month. Ad-hoc questions need joins between sessions, users and events, over long ranges, with arbitrary filters. That is exactly the shape that forces CPU engines into pre-computation.
- In RayoDB
- Joins, CTEs and subqueries execute on the GPU with the data resident there. Ask, look, refine, ask again — the loop stays interactive without deciding the questions upfront.
- Who it is for
- Product analytics teams, growth teams, data platforms serving internal dashboards.
WITH first_touch AS (
SELECT user_id, min(ts) AS first_seen, any(channel) AS channel
FROM events
GROUP BY user_id
)
SELECT
f.channel,
toStartOfWeek(f.first_seen) AS cohort,
count(DISTINCT e.user_id) AS active_week_4
FROM events e
JOIN first_touch f ON f.user_id = e.user_id
WHERE e.ts BETWEEN f.first_seen + INTERVAL 28 DAY
AND f.first_seen + INTERVAL 35 DAY
GROUP BY f.channel, cohort
ORDER BY cohort, f.channel;Time series with built-in intelligence
Forecast and detect in the same query.
- The question
- What will tomorrow look like? Which of these ten thousand series is misbehaving right now? Is this a real change or Tuesday?
- Why it is hard today
- Forecasting and anomaly detection usually live in a separate pipeline: export the series, run a model, write the result back. That pipeline is where freshness, ownership and correctness go to die.
- In RayoDB
- AI_FORECAST and AI_DETECT_ANOMALIES are table functions over any series you can select. Built-in baselines work with zero setup; an ONNX model registered with CREATE AI MODEL serves on the same GPUs that aggregate the data.
- Who it is for
- Observability and reliability teams, operations analytics, IoT and telemetry platforms.
-- score the last month of hourly errors and keep what is anomalous
SELECT ts, value, expected, score
FROM AI_DETECT_ANOMALIES(hourly_errors, hour, errors, 3.5)
WHERE is_anomaly
ORDER BY score DESC
LIMIT 20;
-- and the next 48 hours, with 10/50/90 quantile bands
SELECT * FROM AI_FORECAST(hourly_errors, hour, errors, 48, '0.1,0.5,0.9');Have a workload like these?
Tell us about it. Early access is for teams with real data and real questions.