Always-current rollups
Query summaries that include the latest rows, even before the next refresh.
Read the docsTime series, built into your Postgres. Automatic partitions, compressed history, and fresh rollups in SnoutData Cloud.

Turn rollups into a dashboard in one click.
Read the docs
Explore live and compressed partitions alongside your rollups.
Read the docs
See when a query scans every partition, and which time column to filter.
Read the docsNew data lands in regular Postgres partitions, ready for queries.
Older partitions become a compressed column store. Late writes still work.
Retention removes old partitions automatically, on your schedule.
Query summaries that include the latest rows, even before the next refresh.
Read the docsBucket readings, fill gaps, and calculate rates with built-in time functions.
Read the docsKeep your SQL, joins, drivers, and ORM. A series table is still a Postgres table.
Read the docsCreate a table, choose a time interval, and set how long to keep your data. SnoutTime handles the partitions from there.
Setup guidecreate extension if not exists snouttime;
create table metrics (
ts timestamptz not null,
host text not null,
cpu float8
);
-- one partition per day, made ahead of the data
select snouttime.create_series('metrics', 'ts',
partition_interval => '1 day');
-- seal each day into the column store a day after it ends
select snouttime.set_sealing('metrics', interval '1 day');
-- keep 90 days; older partitions are dropped whole
select snouttime.set_retention('metrics', interval '90 days');
-- an hourly rollup per host, never stale
select snouttime.create_rollup('metrics_hourly', 'metrics',
interval '1 hour',
select_list => 'host, count(*) as n, max(cpu) as cpu_max',
group_by => 'host');Available on every plan. Enable SnoutTime from the dashboard, Desktop, or SQL.
Cloud only. Local development and object-storage tiering are not available yet.