Time-Series Databases
A time-series database stores measurements together with the time each measurement occurred. It helps you ingest, retain, and query changing values such as system metrics, sensor readings, prices, and events over time.
itDatabases and data storage | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic: Time-Series Databases
A time-series database is where measurements go when they keep arriving with clocks attached. A temperature sensor, latency probe, and request counter all produce a procession of small facts. An ordinary database can store them too, in the same way a cupboard can store a bicycle. The question is whether that arrangement survives when the bicycle arrives every second.
The useful trick is to separate identity from measurement. Tags or labels say which stream a value belongs to: perhaps a service, region, and instance. A field or sample says what changed. Product vocabulary varies because databases enjoy names as much as cats enjoy keyboards, but the decision does not. Choose identity from the questions you need to ask.
This is where cardinality arrives with a clipboard. Each distinct combination of identifying dimensions creates a series. A region is bounded. A request ID is fresh for nearly every request. Put both in the identity and the storage system gets an ever-growing collection of streams, which is less a model and more an archaeological dig with invoices.
Most TSDB questions have a dependable shape: choose a time range, filter series, group observations into windows, then aggregate. A five-minute average can reveal a trend. It cannot bring back the raw sample that showed an unusual spike. That is why retention and downsampling are decisions about future questions, not housekeeping after the disk makes a disapproving noise.
The product names are signposts, not interchangeable containers. InfluxDB uses tables, tags, fields, and time. TimescaleDB brings time partitioning to PostgreSQL tables. Prometheus uses metric names, labels, samples, and PromQL for monitoring. They share changing measurements. They do not share every operational tradeoff, query language, or recovery path.
Start with the Intro for the full architecture. Use Slides for the relationships among identity, values, windows, and retention. Keep the Cheatsheet nearby when comparing query shape and failure signals. The Practice Reference turns the ideas into a tiny local dataset, and the Exercise asks the database to prove that the model answers the question you actually asked. That distinction saves a surprising amount of expensive enthusiasm.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://docs.influxdata.com/influxdb3/core/get-started/
Supports
- InfluxDB 3 databases, tables, tags, fields, time, and primary keys
- Tags as identifying information and fields as measured data
- https://docs.influxdata.com/influxdb3/core/write-data/best-practices/schema-design/
Supports
- Time-series schema design, tags versus fields, timestamps, and query-oriented tag order
- Wide schemas and tag-related performance considerations
- https://docs.influxdata.com/influxdb3/core/reference/line-protocol/
Supports
- A point as table, tag set, field set, and timestamp
- Observation time versus host receipt time
- https://docs.timescale.com/use-timescale/latest/hypertables/
Supports
- Hypertables as PostgreSQL tables automatically partitioned by time
- Chunks and time-based query targeting
- Quiz answer about hypertables
- https://prometheus.io/docs/concepts/
Supports
- Time series as timestamped values identified by metric name and labels
- Samples, metric names, labels, and dimensional data model
- Quiz answers about series identity and query shape
- https://prometheus.io/docs/prometheus/2.55/querying/basics/
Supports
- Instant queries, range queries, and range vectors
- https://prometheus.io/docs/prometheus/3.5/storage/
Supports
- Local TSDB blocks, chunks, indexes, and write-ahead logging
- https://github.com/lmmentel/awesome-time-series
Supports
- ClickHouse, CrateDB, and Apache Druid as ecosystem resources
- https://docs.victoriametrics.com/
Supports
- VictoriaMetrics time-series and Prometheus-compatible integrations
- https://questdb.com/docs/
Supports
- QuestDB time-series SQL and ingestion documentation
- https://clickhouse.com/docs/
Supports
- ClickHouse columnar analytics and time-series guidance
- https://druid.apache.org/docs/latest/
Supports
- Apache Druid real-time analytical database documentation
- https://github.com/oetiker/rrdtool-1.x/blob/master/doc/rrdtutorial.pod
Supports
- 1999 timestamped round-robin archive example and fixed retention
- https://prometheus.io/blog/2016/01/26/what-is-prometheus/
Supports
- Prometheus started at SoundCloud in 2012
- https://prometheus.io/blog/2015/04/24/prometheus-growing/
Supports
- Prometheus 0.10 public announcement
- https://prometheus.io/blog/2016/07/18/prometheus-1-0-released/
Supports
- Prometheus 1.0 release and API stability
- https://prometheus.io/blog/2017/11/08/announcing-prometheus-2-0/
Supports
- Prometheus 2.0 storage redesign and remote APIs
- https://prometheus.io/blog/2024/11/14/prometheus-3-0/
Supports
- Prometheus 3.0 release
- https://www.influxdata.com/blog/influxdb-1-0-ga-released-a-retrospective-and-whats-next/
Supports
- InfluxDB 1.0 release and storage format stability
- https://www.influxdata.com/blog/influxdata-announces-influxdb-3-0/
Supports
- InfluxDB 3.0, a columnar engine, Arrow, Parquet, and SQL support
- https://www.tigerdata.com/blog/how-to-proactively-manage-long-term-data-storage-with-downsampling
Supports
- Continuous aggregates, retention, and downsampling lifecycle decisions
- https://engineering.salesforce.com/scaling-cardinality-for-time-series-data-978f52a60863/
Supports
- Cardinality growth from tags and dimensions in production time-series systems
