Qué es una base de datos de series temporales (TSDB)

Una base de datos de series temporales (TSDB) es una base optimizada para almacenar y consultar series temporales: secuencias de valores con marcas de tiempo. La monitorización se construye sobre ellas — cada métrica es una serie de puntos «tiempo → valor».

En qué se diferencia una TSDB de una base normal

  • Los datos casi siempre se añaden (append), no se actualizan — lo que permite una compresión agresiva.
  • Las consultas casi siempre son sobre un rango de tiempo con agregación: «CPU media entre instancias en la última hora».
  • Los datos antiguos se abaratan: se submuestrean (downsampling) o se eliminan por retención.

Conceptos clave

  • Serie — una combinación única de un nombre de métrica y un conjunto de labels, p. ej. http_requests_total{job="api", code="500"}.
  • Cardinalidad — el número de series únicas. Una cardinalidad alta (p. ej. un label user_id) infla la memoria y el coste.
  • Scrape / ingest — el intervalo en que llegan los nuevos puntos.
  • Retención — cuánto tiempo se conservan los puntos en bruto.

Ejemplos de TSDB

Prometheus, VictoriaMetrics, Thanos, Mimir, InfluxDB, TimescaleDB. Unimoni usa un almacenamiento compatible con Prometheus, por lo que las consultas se escriben en PromQL.

sum(rate(http_requests_total[5m])) by (code)

Qué importa en la práctica

Vigila la cardinalidad: no pongas valores de alta variabilidad (user_id, request_id, URL completa) en los labels. Esa es la principal razón por la que la monitorización se vuelve «cara» y lenta.