Dados de séries temporais
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') );No Oracle, dados de séries temporais geralmente são gerenciados com particionamento RANGE (INTERVAL); novas partições são criadas automaticamente e as antigas são removidas facilmente (o partition pruning acelera as consultas). Também se usam compressão (ILM/ADO) e materialized views para agregação.
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.O PostgreSQL pode armazenar séries temporais com particionamento nativo (PARTITION BY RANGE); a extensão TimescaleDB adiciona hypertables com chunking automático por tempo, compressão, políticas de retenção e continuous aggregates. É uma solução comum para grandes cargas de IoT/métricas.
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);O MySQL não oferece um engine dedicado a séries temporais; o particionamento RANGE (com TO_DAYS/UNIX_TIMESTAMP) permite remover rapidamente dados antigos e fazer partition pruning. Para séries temporais de alto volume, geralmente se preferem soluções externas (TimescaleDB, InfluxDB) ou tabelas de resumo.
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);O SQL Server gerencia séries temporais particionando com partition function/scheme; isso fornece pruning e arquivamento rápido para dados que abrangem grandes intervalos de datas. Além disso, as system-versioned temporal tables (SYSTEM_VERSIONING) mantêm automaticamente o histórico de alterações das linhas e permitem consultas point-in-time (FOR SYSTEM_TIME).
MongoDB
// Time-series collection (MongoDB 5.0+):
db.createCollection("measurements", {
timeseries: {
timeField: "ts",
metaField: "sensor_id",
granularity: "seconds"
}
})As time-series collections, introduzidas no MongoDB 5.0, armazenam automaticamente os dados em formato comprimido, semelhante a colunar (em buckets), por tempo e meta field; reduzem o uso de disco e de índices e aceleram as consultas por intervalo. timeField é obrigatório; metaField (origem/tag) e granularity determinam o desempenho.
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.5O Redis core não tem tipo de série temporal; o módulo RedisTimeSeries (Redis Stack) fornece ingestão de amostras em alta velocidade com TS.CREATE/TS.ADD, retenção automática (RETENTION), downsampling (TS.CREATERULE) e consultas por intervalo baseadas em labels com TS.RANGE/TS.MRANGE. Sem o módulo, é emulado com um Sorted Set.
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/measurementsO Elasticsearch gerencia dados de séries temporais com data streams; novos backing indexes são criados automaticamente ao longo do tempo (rollover), e o ILM move os dados antigos pelas camadas hot/warm/cold e os exclui. O TSDS (index.mode: time_series) fornece otimizações de armazenamento específicas para dados de métricas; são obrigatórios pelo menos um campo time_series_dimension, um index.routing_path apontando para ele e um campo @timestamp (caso contrário, o template é rejeitado).