Zeitreihendaten
Oracle
-- Range partitioning by date:
CREATE TABLE measurements (
ts TIMESTAMP, sensor_id NUMBER, value NUMBER)
PARTITION BY RANGE (ts)
INTERVAL (NUMTODSINTERVAL(1,'DAY'))
( PARTITION p0 VALUES LESS THAN (TIMESTAMP '2026-01-01 00:00:00') );In Oracle werden Zeitreihendaten meist mit RANGE-(INTERVAL-)Partitionierung verwaltet; neue Partitionen entstehen automatisch, alte lassen sich einfach löschen (Partition Pruning beschleunigt Abfragen). Auch Kompression (ILM/ADO) und Materialized Views zur Aggregation werden genutzt.
PostgreSQL
-- Hypertable with the TimescaleDB extension:
CREATE EXTENSION IF NOT EXISTS timescaledb;
CREATE TABLE measurements (ts TIMESTAMPTZ, sensor_id INT, value DOUBLE PRECISION);
SELECT create_hypertable('measurements', 'ts');
-- Summarize with a continuous aggregate.PostgreSQL kann Zeitreihen mit nativer Partitionierung (PARTITION BY RANGE) halten; die Extension TimescaleDB ergänzt Hypertables mit automatischem zeitbasiertem Chunking, Kompression, Retention Policies und Continuous Aggregates. Sie ist eine gängige Lösung für große IoT-/Metrik-Workloads.
MySQL
-- RANGE partitioning by date:
CREATE TABLE measurements (
ts DATETIME, sensor_id INT, value DOUBLE,
PRIMARY KEY (ts, sensor_id))
PARTITION BY RANGE (TO_DAYS(ts)) (
PARTITION p2026_01 VALUES LESS THAN (TO_DAYS('2026-02-01')),
PARTITION pmax VALUES LESS THAN MAXVALUE);MySQL bietet keine dedizierte Zeitreihen-Engine; RANGE-Partitionierung (mit TO_DAYS/UNIX_TIMESTAMP) ermöglicht schnelles Löschen alter Daten und Partition Pruning. Für Zeitreihen mit hohem Volumen werden meist externe Lösungen (TimescaleDB, InfluxDB) oder Summentabellen bevorzugt.
SQL Server
-- Partitioned table (partition function + scheme) or
-- system-versioned temporal table (history kept automatically):
CREATE TABLE dbo.measurements (
id INT PRIMARY KEY, value DECIMAL(10,2),
valid_from DATETIME2 GENERATED ALWAYS AS ROW START,
valid_to DATETIME2 GENERATED ALWAYS AS ROW END,
PERIOD FOR SYSTEM_TIME (valid_from, valid_to))
WITH (SYSTEM_VERSIONING = ON);SQL Server verwaltet Zeitreihen per Partitionierung mit Partition Function/Scheme; das bietet Pruning und schnelle Archivierung für Daten über große Zeiträume. Zusätzlich halten systemversionierte temporale Tabellen (SYSTEM_VERSIONING) die Änderungshistorie der Zeilen automatisch fest und erlauben Abfragen zu einem Zeitpunkt (FOR SYSTEM_TIME).
MongoDB
// Time-series collection (MongoDB 5.0+):
db.createCollection("measurements", {
timeseries: {
timeField: "ts",
metaField: "sensor_id",
granularity: "seconds"
}
})Die in MongoDB 5.0 eingeführten Time-Series Collections speichern Daten automatisch in einem komprimierten, spaltenähnlichen (gebucketten) Format nach Zeit- und Metafeld; sie verringern Platten- und Indexnutzung und beschleunigen Bereichsabfragen. timeField ist Pflicht; metaField (Quelle/Tag) und granularity bestimmen die Performance.
Redis
# Requires the RedisTimeSeries module (Redis Stack).
# Create a series with a retention period:
TS.CREATE sensor:1 RETENTION 86400000 LABELS type temperature
# Add a sample (with an automatic timestamp):
TS.ADD sensor:1 * 23.5Core Redis hat keinen Zeitreihentyp; das Modul RedisTimeSeries (Redis Stack) bietet schnelle Erfassung von Messwerten mit TS.CREATE/TS.ADD, automatische Aufbewahrung (RETENTION), Downsampling (TS.CREATERULE) und labelbasierte Bereichsabfragen mit TS.RANGE/TS.MRANGE. Ohne das Modul wird es mit einem Sorted Set nachgebildet.
Elasticsearch
# Data stream: automatically rolling indexes for time series
PUT _index_template/measurements-tpl
{ "index_patterns": ["measurements*"], "data_stream": {},
"template": {
"settings": { "index.mode": "time_series", "index.routing_path": ["sensor_id"] },
"mappings": { "properties": {
"@timestamp": { "type": "date" },
"sensor_id": { "type": "keyword", "time_series_dimension": true },
"temperature": { "type": "double", "time_series_metric": "gauge" } } } } }
PUT _data_stream/measurementsElasticsearch verwaltet Zeitreihendaten mit Data Streams; neue Backing Indices entstehen im Zeitverlauf automatisch (Rollover), und ILM verschiebt alte Daten durch die Tiers hot/warm/cold und löscht sie. TSDS (index.mode: time_series) bietet Speicheroptimierungen speziell für Metrikdaten; mindestens ein Feld time_series_dimension, ein darauf zeigender index.routing_path und ein Feld @timestamp sind Pflicht (sonst wird das Template abgelehnt).