DBAtlas · Veritabanı operasyon atlası

Zaman-serisi verisi

Oracle

-- Tarihe göre aralık bölümleme (range partitioning):
CREATE TABLE olcum (
  ts TIMESTAMP, sensor_id NUMBER, deger NUMBER)
PARTITION BY RANGE (ts)
INTERVAL (NUMTODSINTERVAL(1,'DAY'))
( PARTITION p0 VALUES LESS THAN (TIMESTAMP '2026-01-01 00:00:00') );

Oracle'da zaman serisi verisi genellikle RANGE (INTERVAL) bölümleme ile yönetilir; yeni bölümler otomatik oluşur ve eski bölümler kolayca düşürülür (bölüm budama sorguyu hızlandırır). Ayrıca sıkıştırma (ILM/ADO) ve materialized view ile toplama yapılır.

PostgreSQL

-- TimescaleDB eklentisi ile hypertable:
CREATE EXTENSION IF NOT EXISTS timescaledb;
CREATE TABLE olcum (ts TIMESTAMPTZ, sensor_id INT, deger DOUBLE PRECISION);
SELECT create_hypertable('olcum', 'ts');
-- Sürekli toplama (continuous aggregate) ile özetle.

PostgreSQL yerel bölümleme (PARTITION BY RANGE) ile zaman serisi tutabilir; TimescaleDB eklentisi ise hypertable ile otomatik zaman-bazlı chunk'lara bölme, sıkıştırma, saklama politikası ve sürekli toplamalar (continuous aggregates) sağlar. Büyük IoT/metrik yükleri için yaygın çözümdür.

MySQL

-- Tarihe göre RANGE bölümleme:
CREATE TABLE olcum (
  ts DATETIME, sensor_id INT, deger 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 özel bir zaman serisi motoru sunmaz; RANGE bölümleme (TO_DAYS/UNIX_TIMESTAMP ile) eski verinin hızlı düşürülmesini ve bölüm budamayı sağlar. Yüksek hacimli zaman serisi için genellikle harici çözümler (TimescaleDB, InfluxDB) veya özet tablolar tercih edilir.

SQL Server

-- Bölümlenmis tablo (partition function + scheme) veya
-- sistem sürümlü temporal tablo (geçmiş kaydı otomatik):
CREATE TABLE dbo.olcum (
  id INT PRIMARY KEY, deger DECIMAL(10,2),
  gecerli_baslangic DATETIME2 GENERATED ALWAYS AS ROW START,
  gecerli_bitis DATETIME2 GENERATED ALWAYS AS ROW END,
  PERIOD FOR SYSTEM_TIME (gecerli_baslangic, gecerli_bitis))
WITH (SYSTEM_VERSIONING = ON);

SQL Server zaman serisini partition function/scheme ile bölümleyerek yönetir; büyük tarih aralıklı verilerde budama ve hızlı arşivleme sağlar. Ayrıca sistem sürümlü temporal tablolar (SYSTEM_VERSIONING) satır değişiklik geçmişini otomatik saklayarak zaman içinde sorgulamaya (FOR SYSTEM_TIME) izin verir.

MongoDB

// Zaman serisi koleksiyonu (MongoDB 5.0+):
db.createCollection("olcum", {
  timeseries: {
    timeField: "ts",
    metaField: "sensor_id",
    granularity: "seconds"
  }
})

MongoDB 5.0 ile gelen time-series koleksiyonları veriyi zaman ve meta alanına göre otomatik olarak sütun benzeri (bucketing) sıkıştırılmış biçimde saklar; disk ve index kullanımını azaltıp aralık sorgularını hızlandırır. timeField zorunlu, metaField (kaynak/etiket) ve granularity performansı belirler.

Redis

# RedisTimeSeries modülü (Redis Stack) gerektirir.
# Seri oluştur ve saklama süresi ver:
TS.CREATE sensor:1 RETENTION 86400000 LABELS tip sicaklik
# Örnek ekle (otomatik zaman damgasıyla):
TS.ADD sensor:1 * 23.5

Çekirdek Redis'te zaman serisi tipi yoktur; RedisTimeSeries modülü (Redis Stack) TS.CREATE/TS.ADD ile yüksek hızlı örnek alımı, otomatik saklama (RETENTION), downsampling (TS.CREATERULE) ve TS.RANGE/TS.MRANGE ile etiket bazlı aralık sorguları sağlar. Modül yoksa Sorted Set ile taklit edilir.

Elasticsearch

# Data stream: zaman serisi için otomatik rolling indeks
PUT _index_template/olcum-tpl
{ "index_patterns": ["olcum*"], "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 },
      "sicaklik": { "type": "double", "time_series_metric": "gauge" } } } } }
PUT _data_stream/olcum

Elasticsearch zaman serisi verisini data stream ile yönetir; arkada zamana göre yeni index'ler (backing index) otomatik oluşturulur (rollover) ve ILM ile eski veri sıcak/ılık/soğuk katmanlara taşınıp silinir. TSDS (index.mode: time_series) metrik verisi için özel depolama optimizasyonu sağlar; en az bir time_series_dimension alanı, bunu gösteren index.routing_path ve @timestamp alanı zorunludur (aksi halde şablon reddedilir).

DBAtlas'ta aç →