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/olcumElasticsearch 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).