Time-Series Databases
TimescaleDB, InfluxDB, QuestDB, VictoriaMetrics — purpose-built engines for time-series data.
Time-series workloads (metrics, IoT, financial ticks, observability data) have specific patterns: append-heavy, time-ordered, downsampled over windows. Generic OLAP works (DuckDB, ClickHouse — see Data Warehouses) but purpose-built engines win on operational simplicity. For metrics-stack specifics (Prometheus / Mimir / Cortex / Thanos), see Prometheus Stack. For log time-series, see Log Aggregation.
Postgres-flavored
- ★ TimescaleDB — Postgres extension with hypertables, compression, continuous aggregates, retention policies. Postgres-compatible (use any Postgres tool / driver). License: Timescale License (TSL) for cluster-fingerprinted features; the core "Apache 2.0" edition is fine for a single-node setup. The default if you want time-series + Postgres in one DB.
- pg_partman + native partitioning — bare-Postgres approach; works but lacks compression / continuous aggregates.
- pg_timeseries (Tembo) — Apache 2.0 Postgres extension targeting time-series workloads.
Purpose-built (no SQL stack)
- ★ InfluxDB — the classic; v3 ("InfluxDB 3") rewrote on top of Apache Arrow + DataFusion + Parquet; SQL + InfluxQL + Flux. MIT (Core, edge); paid Cloud Serverless / Dedicated. Default if you want a metric-shaped DB.
- ★ QuestDB — Apache 2.0; very fast SQL ingest; Postgres wire protocol; simple ops. Default for high-throughput single-node time-series.
- ★ VictoriaMetrics — Apache 2.0; Prometheus-compatible; scales horizontally; cheap storage. The default Prometheus-compatible TSDB for big environments. See Prometheus Stack.
- Apache IoTDB — Apache 2.0; oriented at IoT workloads; fast on tens of thousands of devices.
- TDengine — Apache 2.0 community edition; Chinese-origin; IoT-focused.
- GreptimeDB — Rust; Apache 2.0; cloud-native time-series + observability DB; growing in 2026.
Specialty
- Apache Druid — see Data Warehouses; often used for time-bucketed analytics.
- ClickHouse — also excellent at time-series; especially with
MergeTree+ttlpolicies. - kdb+ (KX) — paid; the historical leader in finance; recently added a free 32-bit personal tier.
- M3DB — Uber's Prometheus-compatible TSDB; Apache 2.0; less active in 2026 than VictoriaMetrics.
Hosted / managed
- Timescale Cloud — managed TimescaleDB; small free tier.
- InfluxDB Cloud Serverless / Dedicated — usage-based; small free tier.
- Grafana Cloud — bundles Prometheus / Mimir / Loki / Tempo; generous free tier; see Observability.
- AWS Timestream, Azure Time Series Insights — paid cloud-native.
Patterns to know
- Downsample early, retain selectively. Continuous aggregates (TimescaleDB) / materialized views; raw retention 7d, 1m rollups 90d, 1h rollups 2y.
- Compression saves 10–20×. TimescaleDB hypertable compression, ClickHouse codecs, InfluxDB v3 columnar Parquet.
- Tag cardinality is the silent killer. Each unique combination of labels = one series; don't put
user_idin a label. - Time-aligned writes. Batch by minute / 5-min boundaries; reduces compaction.
- Out-of-order writes. Most TSDBs handle them but with cost; minimize where possible.
- Use the right wire protocol. Prometheus remote-write for metrics, line-protocol or HTTP JSON for InfluxDB-shape, SQL for Timescale / QuestDB.
Pick this if…
- Default new project, want SQL + Postgres ecosystem: TimescaleDB.
- Default Prometheus-compatible storage at scale: VictoriaMetrics or Mimir.
- Highest single-node ingest, simplest ops: QuestDB.
- InfluxDB ecosystem (Telegraf, Flux): InfluxDB v3.
- Many IoT devices: Apache IoTDB or TDengine.
- You already run ClickHouse: ClickHouse with
MergeTree+ TTL; don't add a TSDB.