Time-series workloads have two natural homes: TimescaleDB (Postgres extension, SQL) and InfluxDB (purpose-built, Flux/InfluxQL). Both are good; they make different bets on query language, ecosystem fit, and cardinality handling.

Advertisement

TimescaleDB — SQL on time-series

Postgres extension. Hypertables auto-partition by time. Continuous aggregates for downsampled queries. Full SQL including joins to relational data. Right when the rest of your data is already in Postgres.

InfluxDB — purpose-built

Flux language (or InfluxQL). Columnar storage, very high write throughput. Native handling of tags as metadata. Right when time-series is the whole workload and you want best-in-class write performance.

Advertisement

Cardinality handling

InfluxDB historically struggled with high tag cardinality (millions of unique series). 3.0 (Apache Arrow-based) fixed much of this. TimescaleDB doesn't have this concept of distress; it's just rows.

Already on Postgres: TimescaleDB. Pure time-series, max write throughput: InfluxDB 3.0. SQL fluency tips toward Timescale.