ClickHouse vs. TimescaleDB: Analytics-Datenbanken im Vergleich 2026

Wenn Standard-PostgreSQL für Analytics zu langsam wird und Elasticsearch zu komplex, kommen spezialisierte Analytics-Datenbanken ins Spiel. ClickHouse und TimescaleDB sind zwei populäre Open-Source-Lösungen – aber mit fundamentell verschiedenen Ansätzen. Dieser Vergleich zeigt, welche für welche Anwendungsfälle geeignet ist.


Das Problem: OLTP vs. OLAP

Traditionelle Datenbanken wie PostgreSQL sind für OLTP (Online Transaction Processing) optimiert – viele kleine, schnelle Transaktionen. Für Analytics und Zeitreihendaten sind andere Anforderungen entscheidend:

  • OLAP: Analytische Queries über Milliarden Zeilen in Sekunden
  • Zeitreihen: Effiziente Speicherung von sequenziellen, timestamped Daten
  • Compression: Drastische Datenreduktion für historische Daten
  • Aggregations-Performance: GROUP BY, COUNT, SUM über riesige Tabellen

ClickHouse: Columnar OLAP Engine

ClickHouse wurde 2016 von Yandex für deren Webanalytics-Platform entwickelt und 2016 als Open Source veröffentlicht. Es ist heute eine eigenständige Firma (ClickHouse Inc.) mit Cloud-Angebot.

Architektur

ClickHouse ist eine spaltenorientierte Datenbank (columnar) – im Gegensatz zu zeilenorientierten Datenbanken (row-oriented) wie PostgreSQL:

Row-orientiert (PostgreSQL):
Row 1: [id=1, user="alice", event="click", ts=1234567890, value=42]
Row 2: [id=2, user="bob",   event="view",  ts=1234567891, value=7]

Spaltenorientiert (ClickHouse):
id:     [1, 2, 3, ...]
user:   ["alice", "bob", ...]
event:  ["click", "view", ...]
ts:     [1234567890, 1234567891, ...]
value:  [42, 7, ...]

Warum das schneller ist: Analytics-Queries lesen meist nur 2-5 von 50+ Spalten. Columnar-Storage liest nur die nötigen Spalten von Disk, was die I/O drastisch reduziert.

ClickHouse-Features

MergeTree Engine-Familie:

CREATE TABLE events (
    event_date Date,
    event_time DateTime,
    user_id UInt64,
    event_type LowCardinality(String),
    value Float64
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(event_date)
ORDER BY (event_type, user_id, event_time);
  • MergeTree: Basis-Engine, gut für alles
  • ReplacingMergeTree: Deduplication von Rows
  • SummingMergeTree: Automatische Aggregation
  • AggregatingMergeTree: Materialized Views auf Engine-Ebene
  • CollapsingMergeTree: Update-Pattern für immutable Log-basierte DBs

SQL-Funktionen:

-- ClickHouse: Milliarden Zeilen in Sekunden
SELECT
    toStartOfHour(event_time) AS hour,
    event_type,
    count() AS cnt,
    sum(value) AS total
FROM events
WHERE event_date BETWEEN '2026-01-01' AND '2026-08-21'
  AND event_type IN ('click', 'purchase')
GROUP BY hour, event_type
ORDER BY hour;

Performance-Eigenschaften:

  • Bis zu 10 Milliarden Zeilen/Sekunde Scan-Rate
  • Typische Aggregations-Queries: <1 Sekunde über 1 Milliarde Zeilen
  • LZ4/ZSTD-Kompression: Typisch 10:1 Kompressionsrate
  • Vektorisierte Ausführung: SIMD-Optimierungen für moderne CPUs

Deployment:

# ClickHouse mit Docker
services:
  clickhouse:
    image: clickhouse/clickhouse-server:23.12
    ports:
      - "8123:8123"   # HTTP-Interface
      - "9000:9000"   # Native Protocol
    volumes:
      - clickhouse-data:/var/lib/clickhouse
      - ./config.xml:/etc/clickhouse-server/config.xml
    ulimits:
      nofile:
        soft: 262144
        hard: 262144

Ökosystem:

  • Grafana: Natives Plugin für Dashboards
  • dbt: Vollständig unterstützt
  • Apache Kafka: Kafka-Engine für direktes Streaming
  • S3/GCS: Tiered Storage, S3-Tabellen direkt querybar
  • Metabase: Business Intelligence ohne Vorkenntnisse

TimescaleDB: PostgreSQL für Zeitreihendaten

TimescaleDB ist eine PostgreSQL-Extension (kein eigenständiges DBMS) und wurde 2017 von Timescale Inc. veröffentlicht. Es erweitert PostgreSQL um Zeitreihen-Optimierungen.

Architektur: Hypertables

TimescaleDB führt das Konzept der Hypertable ein – eine normale PostgreSQL-Tabelle, die intern automatisch in Chunks (Zeitabschnitte) aufgeteilt wird:

-- Normale PostgreSQL-Tabelle erstellen
CREATE TABLE metrics (
    time        TIMESTAMPTZ NOT NULL,
    device_id   INTEGER,
    temperature DOUBLE PRECISION,
    humidity    DOUBLE PRECISION
);

-- Zu Hypertable konvertieren (partitioniert nach Zeit)
SELECT create_hypertable('metrics', 'time');

-- Optional: Data Retention Policy
SELECT add_retention_policy('metrics', INTERVAL '90 days');

-- Kompression aktivieren
ALTER TABLE metrics SET (
    timescaledb.compress,
    timescaledb.compress_segmentby = 'device_id'
);
SELECT add_compression_policy('metrics', INTERVAL '7 days');

TimescaleDB-Features

Zeitreihen-spezifische Funktionen:

-- Gap-Filling für fehlende Datenpunkte
SELECT time_bucket_gapfill('1 hour', time) AS hour,
       device_id,
       locf(avg(temperature)) AS temp  -- Last Observation Carried Forward
FROM metrics
WHERE time > NOW() - INTERVAL '24 hours'
GROUP BY hour, device_id;

-- Moving Average über Zeitfenster
SELECT time,
       device_id,
       temperature,
       avg(temperature) OVER (
         PARTITION BY device_id
         ORDER BY time
         ROWS BETWEEN 9 PRECEDING AND CURRENT ROW
       ) AS moving_avg_10
FROM metrics;

Continuous Aggregates:

-- Materialized View, die automatisch aktualisiert wird
CREATE MATERIALIZED VIEW hourly_metrics
WITH (timescaledb.continuous) AS
SELECT time_bucket('1 hour', time) AS bucket,
       device_id,
       avg(temperature) AS avg_temp,
       max(humidity) AS max_humidity
FROM metrics
GROUP BY bucket, device_id;

-- Auto-Refresh einrichten
SELECT add_continuous_aggregate_policy('hourly_metrics',
  start_offset => INTERVAL '2 hours',
  end_offset   => INTERVAL '15 minutes',
  schedule_interval => INTERVAL '15 minutes'
);

PostgreSQL-Kompatibilität:

  • Alle PostgreSQL-Extensions weiterhin nutzbar (PostGIS, pg_vector, etc.)
  • JOINs mit regulären PostgreSQL-Tabellen
  • Volle ACID-Compliance
  • Pg_dump/pg_restore für Backups

Direkter Vergleich: ClickHouse vs. TimescaleDB

Kriterium ClickHouse TimescaleDB
Typ Eigenständige OLAP-DB PostgreSQL-Extension
Abfragesprache ClickHouse-SQL Standard SQL
OLAP-Performance ⭐⭐⭐⭐⭐ ⭐⭐⭐
Zeitreihen-Spezifisch ⭐⭐⭐ ⭐⭐⭐⭐⭐
Kompression 10:1 (LZ4/ZSTD) 20:1 (Timescale compress)
ACID-Compliance Begrenzt (eventual) Vollständig (PostgreSQL)
UPDATE/DELETE Async, aufwändig Standard SQL
JOINs Eingeschränkt empfohlen Vollständig
PostgreSQL-Kompatibilität Nein Ja (direkt)
Gap-Filling Manuell via SQL Native Funktionen
Continuous Aggregates Materialized Views Native, auto-refresh
Streaming-Ingest Kafka-Engine nativ Logical Replication
Cloud-Managed ClickHouse Cloud Timescale Cloud
Lizenz Apache 2.0 Apache 2.0 (Community)
RAM-Bedarf 4+ GB 1+ GB

Performance-Benchmarks

In typischen Szenarien (1 Milliarde Zeilen, Aggregation über 30 Tage):

Query-Typ ClickHouse TimescaleDB
Simple COUNT 0,3 Sek. 4,2 Sek.
GROUP BY + SUM 0,8 Sek. 12 Sek.
Multi-Column-Filter 1,2 Sek. 8,5 Sek.
Continuous Agg. Query 0,05 Sek. 0,08 Sek.

Bei Continuous Aggregates holt TimescaleDB auf – die vorberechneten Ergebnisse sind vergleichbar schnell.


Anwendungsfälle

ClickHouse ist ideal für:

  • Web-Analytics: Seitenaufrufe, Klickpfade, Nutzerverhalten
  • Business Intelligence: Umsatz, Conversion, Funnel-Analysen
  • Log-Analyse: Milliarden Logs auswerten, Elasticsearch ersetzen
  • Ad-Tech: Real-Time Bidding, Impression-Tracking
  • Security Analytics: SIEM-Datenbasis

TimescaleDB ist ideal für:

  • IoT/Sensor-Daten: Temperatur, Füllstand, Maschinendaten
  • Monitoring/Observability: Prometheus-Daten langfristig speichern (Promscale)
  • Finanz-Zeitreihen: Kurse, Transaktionen mit strikter ACID-Anforderung
  • PostgreSQL-Migration: Du willst PostgreSQL-Kompatibilität behalten
  • DevOps-Metriken: Infrastruktur-Metriken mit komplexen JOINs auf Config-Daten

Integration mit Grafana

Beide Datenbanken integrieren sich hervorragend mit Grafana:

# ClickHouse Grafana-Datasource
- name: ClickHouse
  type: grafana-clickhouse-datasource
  url: http://clickhouse:8123
  jsonData:
    defaultDatabase: default

# TimescaleDB via PostgreSQL-Plugin
- name: TimescaleDB
  type: postgres
  url: timescaledb:5432
  database: metrics
  jsonData:
    timescaledb: true

Fazit: Verschiedene Werkzeuge für verschiedene Aufgaben

ClickHouse ist die richtige Wahl für analytische Workloads mit sehr großen Datenmengen, wo rohe Query-Performance zählt und ACID nicht zwingend nötig ist.

TimescaleDB überzeugt, wenn PostgreSQL-Kompatibilität wichtig ist, echte Zeitreihen-Semantik (Gap-Filling, Continuous Aggregates) gebraucht wird oder das Team bereits PostgreSQL kennt.

Kurzempfehlung:

  • 🟢 Web-Analytics, Logs, Business Intelligence → ClickHouse
  • 🟢 IoT, Sensor-Daten, Monitoring-Metriken, PostgreSQL-Team → TimescaleDB
  • 🟡 Beide nötig? → ClickHouse als Analytics-Layer, TimescaleDB als Operational-Timeseries-Store

Weiterführende Artikel

Verwandte Technologien im Techradar