Wat is een Time Series Database?
Een time series database (TSDB) is een database die is geoptimaliseerd voor het opslaan, comprimeren en bevragen van meetwaarden die elk aan een tijdstempel zijn gekoppeld, zoals sensorwaarden, procesparameters en machinestatussen. Waar een gewone database vooral records bijwerkt, voegt een TSDB vrijwel alleen nieuwe waarden toe en vraagt hij ze op per tijdvenster. Dat maakt hem de opslaglaag onder SCADA-trends, historians, condition monitoring en predictive maintenance binnen de industriële automatisering.
🧠 Hoe werkt een time series database?
Elk datapunt bestaat uit drie delen:
- Tijdstempel - het moment van meten, meestal in milliseconden of nanoseconden en bij voorkeur in UTC
- Waarde(n) - de meetwaarde zelf, bijvoorbeeld 72,3 °C, vaak aangevuld met een kwaliteitsstatus
- Labels of tags - beschrijvende kenmerken zoals installatie, lijn of sensor-ID, waarmee u reeksen filtert en groepeert
Eén unieke combinatie van meting en labels vormt een serie. Het aantal series heet de cardinaliteit. Labels worden geïndexeerd, waarden niet. Zet daarom nooit unieke of sterk wisselende gegevens, zoals ordernummers of willekeurige ID’s, in een label: elke nieuwe waarde maakt dan een nieuwe serie aan. Hoge cardinaliteit is een van de belangrijkste oorzaken van hoog geheugengebruik en trage queries.
Het schrijfpatroon is append-only: nieuwe waarden komen achteraan, oude waarden worden zelden gewijzigd. Queries vragen bijna altijd een tijdvenster op, zoals “het gemiddelde debiet per minuut van de afgelopen 24 uur”. Daarop is de hele opslag afgestemd.
🔧 Hoe slaat een TSDB tijdreeksen zo compact op?
Een TSDB combineert een aantal technieken die in een relationele database ontbreken of beperkt zijn:
| Techniek | Werking | Effect |
|---|---|---|
| Partitioneren op tijd | Data wordt opgedeeld in blokken per tijdvak, zoals de chunks van TimescaleDB of de blokken van twee uur in Prometheus | Snel zoeken per periode, oude blokken in één keer verwijderen |
| Kolomopslag | Waarden van één reeks staan naast elkaar op schijf, bijvoorbeeld in Parquet-bestanden | Goede compressie en snelle aggregaties |
| Delta-of-delta | Slaat niet het tijdstempel op, maar de verandering van het interval | Regelmatige metingen kosten bijna geen bits |
| XOR-compressie | Vergelijkt een kommagetal bit voor bit met de vorige waarde | Stabiele waarden comprimeren sterk |
| Downsampling | Zet ruwe data om naar gemiddelden per minuut of uur | Lange historie met weinig opslag |
| Retentiebeleid | Verwijdert of archiveert data automatisch na een vaste termijn | Voorspelbaar opslagvolume |
De bekendste uitwerking van delta-of-delta en XOR is Gorilla, de in-memory TSDB die Facebook in 2015 op de VLDB-conferentie beschreef. Gorilla bracht datapunten van 16 bytes terug tot gemiddeld 1,37 byte, een factor 12, bij ongeveer 12 miljoen nieuwe datapunten per seconde. Prometheus en veel andere TSDB’s gebruiken varianten van die techniek en komen gemiddeld uit op 1 à 2 bytes per waarde.
Een Historian werkt vaak anders: die laat met deadband- en swinging door-compressie waarden weg die binnen een tolerantie op een rechte lijn liggen. Een TSDB bewaart standaard elke waarde en comprimeert verliesvrij.
🔄 Wat is het verschil tussen een TSDB, een historian en een relationele database?
| Aspect | Time series database | Historian | Relationele database |
|---|---|---|---|
| Doel | Generieke opslag van tijdreeksen | Industriële procesdata met context | Transacties en relaties |
| Compressie | Verliesvrij (delta, XOR, kolommen) | Deadband en swinging door, instelbaar per tag | Generiek of beperkt |
| Datacollectie | Via losse agents, MQTT of API’s | Ingebouwde interfaces voor OPC, Modbus en DCS | Moet door een applicatie worden aangeleverd |
| Querytaal | SQL, InfluxQL of PromQL | Eigen API’s, OPC UA Historical Access | SQL met joins |
| Licentie | Vaak open source | Meestal commercieel, per tag | Beide |
Technisch is een historian een TSDB met industriële collectors, tagbeheer en procesfuncties erbovenop. In de praktijk kiest u een historian als u kant-en-klare koppelingen met PLC’s, RTU’s en DCS-systemen wilt. Een open TSDB kiest u als u flexibiliteit wilt en de collectie en contextualisatie zelf kunt organiseren.
📦 Welke time series databases worden in OT gebruikt?
| Platform | Achtergrond | Kenmerk |
|---|---|---|
| AVEVA PI System | AVEVA, voorheen OSIsoft | Historian met eigen archief, veel gebruikt in proces- en energie-industrie |
| InfluxDB | InfluxData | InfluxDB 3 (sinds april 2025) is in Rust gebouwd op Apache Arrow en Parquet; Core is open source onder MIT/Apache 2, Enterprise is commercieel |
| TimescaleDB | Tiger Data (tot juni 2025 Timescale) | PostgreSQL-extensie met hypertables en continuous aggregates, handig om procesdata met IT-data te combineren |
| QuestDB | QuestDB |
Open source (Apache 2.0), SQL met SAMPLE BY, basis van de Core Historian in Ignition 8.3
|
| Prometheus | Ontstaan bij SoundCloud (2012), sinds 2016 een CNCF-project | Monitoring van IT-systemen en servers met PromQL; standaard 15 dagen lokale retentie |
| Proficy Historian | Proficy, sinds maart 2026 van TPG | Industriële historian, voorheen van GE Vernova |
Voor visualisatie wordt een open TSDB vaak gecombineerd met Grafana. Sommige TSDB’s maken deel uit van bredere SCADA- of MES-omgevingen.
🏭 Waarvoor gebruikt u een TSDB in de industrie?
- Trending - temperatuur, druk en debiet over uren, dagen of jaren vergelijken
- Prestaties - OEE, stilstand en cyclustijden per lijn berekenen
- Onderhoud - trillingen, stroomopname en draaiuren volgen voor condition monitoring
- Analyse - trainingsdata leveren voor machine learning en anomaliedetectie
- Digital Twin en Edge Computing - een lokale TSDB buffert data op de edge en synchroniseert later met een centrale omgeving
- IT-monitoring - servers, netwerken en applicaties bewaken met monitoring-tools
Typische databronnen zijn PLC’s, RTU’s, sensoren, drives en HMI’s, via OPC UA, MQTT, Sparkplug B of Modbus-gateways. In IIoT-architecturen abonneert de TSDB zich vaak op een Unified Namespace, zodat elke nieuwe waarde zonder polling binnenkomt.
🧭 Hoe richt u een TSDB in voor OT-data?
- Ontwerp het datamodel - kies welke kenmerken label worden (installatie, lijn, eenheid) en welke waarde. Houd de cardinaliteit beperkt.
- Leg tijd vast bij de bron - gebruik het tijdstempel van de PLC of het veldapparaat, niet het moment van binnenkomst, en synchroniseer klokken.
- Bepaal de bemonstering - 1 seconde is gangbaar voor procesdata; trillingsanalyse vraagt veel hogere frequenties.
- Stel retentie per niveau in - bijvoorbeeld ruwe data 90 dagen, minuutgemiddelden vijf jaar.
- Buffer bij storingen - laat de collector data lokaal opslaan als de verbinding wegvalt (store and forward).
- Plan beschikbaarheid en back-up - met replicatie voor high availability en een geteste back-up.
Rekenvoorbeeld: 2.000 tags die elke seconde een waarde leveren, geven 172,8 miljoen waarden per dag. Bij ongeveer 1,5 byte per waarde na compressie is dat zo’n 260 MB per dag, ruim 90 GB per jaar. Bewaart u na 90 dagen alleen minuutwaarden met gemiddelde, minimum en maximum, dan blijven 8,6 miljoen waarden per dag over: twintig keer minder. Ruisende signalen comprimeren slechter, dus reken met marge.
🔐 Hoe beveiligt u een time series database?
- Authenticatie en toegangscontrole - zet authenticatie altijd aan. Sommige open-source TSDB’s, zoals InfluxDB 1.x, starten standaard zonder.
- Versleuteling - gebruik TLS voor schrijf- en leesverkeer, ook binnen het OT-netwerk.
- Plaatsing - zet de TSDB op niveau 3 van het Purdue Model of in de DMZ, en scherm hem af met firewalls. Beheer verloopt via een VPN of jump server.
- Integriteit - bescherm data tegen manipulatie en verlies met onveranderbare back-ups. In de farmacie geldt GxP, met eisen aan data-integriteit en 21 CFR Part 11.
- Compliance - leg retentie en auditlogs vast volgens compliance-eisen. Organisaties onder NIS2 en de Cyberbeveiligingswet moeten ook hun OT-dataplatforms in hun risicobeheer meenemen.
In OT-omgevingen is het cruciaal om zowel de integriteit als de beschikbaarheid van procesdata te garanderen.
❓ Veelgestelde vragen
Waar staat TSDB voor?
TSDB staat voor time series database, een database die is gebouwd voor meetwaarden met een tijdstempel. Een TSDB is geoptimaliseerd voor veel kleine schrijfacties en voor queries over tijdvensters, zoals gemiddelden per minuut of uur.
Is een historian hetzelfde als een time series database?
Een historian is een gespecialiseerde time series database voor industriële procesdata. Naast opslag levert een historian ingebouwde collectors voor OPC, Modbus en DCS-systemen, tagbeheer en procesgerichte compressie. Een generieke TSDB biedt de opslag, maar de collectie organiseert u zelf.
Waarom is een TSDB sneller dan een SQL-database voor sensordata?
Een time series database partitioneert data op tijd, slaat waarden per reeks in kolommen op en comprimeert tijdstempels en waarden met technieken als delta-of-delta en XOR. Daardoor leest een query over een tijdvenster veel minder data van schijf dan een rij-gebaseerde SQL-database.
Wat is cardinaliteit in een time series database?
Cardinaliteit is het aantal unieke series in een time series database, dus het aantal combinaties van meting en labels. Hoge cardinaliteit ontstaat als unieke waarden zoals ordernummers als label worden opgeslagen. Dat kost veel geheugen en vertraagt schrijven en lezen.
Hoeveel opslag heeft een TSDB nodig?
Een time series database gebruikt na compressie gemiddeld 1 à 2 bytes per waarde. 2.000 tags met één waarde per seconde kosten dan ongeveer 260 MB per dag. Downsampling en retentiebeleid beperken de groei verder.
Welke time series database is open source?
InfluxDB 3 Core, TimescaleDB, QuestDB en Prometheus zijn bekende open-source time series databases. Bij TimescaleDB vallen sommige functies, zoals compressie en continuous aggregates, onder de eigen Timescale License. Commerciële edities bieden vaak extra’s zoals hoge beschikbaarheid.
📌 Samengevat
Een time series database (TSDB) slaat meetwaarden met een tijdstempel compact op en maakt ze snel opvraagbaar per tijdvenster. Met tijdpartitionering, kolomopslag, compressie, downsampling en retentiebeleid vormt een TSDB de opslaglaag onder historians, SCADA-trends, monitoring en predictive maintenance. Beveilig hem als elk OT-systeem: met authenticatie, TLS, segmentatie en betrouwbare back-ups.
