Wat is TimescaleDB?
TimescaleDB is een extensie voor de relationele database PostgreSQL die er een volwaardige time series database van maakt, met automatische partitionering op tijd (hypertables), kolomgebaseerde compressie en doorlopend bijgewerkte aggregaten. Het product werd in 2017 gelanceerd door het bedrijf Timescale, dat in juni 2025 zijn naam veranderde in Tiger Data; de extensie zelf heet nog steeds TimescaleDB. Binnen OT-omgevingen en OT-convergentie wordt TimescaleDB gebruikt voor industriële telemetrie, IIoT-data, proceshistorie, energiemonitoring en voorspellend onderhoud. Het grote voordeel: procesdata en relationele IT-data (orders, assets, batches) staan in dezelfde database en zijn met gewone SQL te combineren.
🧠 Hoe werkt TimescaleDB?
TimescaleDB draait als extensie binnen een normale PostgreSQL-server. Na het laden van de bibliotheek
(shared_preload_libraries) en CREATE EXTENSION timescaledb blijft alles wat
PostgreSQL kan beschikbaar: transacties, joins, indexen, gebruikersrechten, replicatie en de bekende
tools. TimescaleDB voegt daar een aantal tijdreeksbouwstenen aan toe:
| Bouwsteen | Wat het doet | Waarom het telt in OT |
|---|---|---|
| Hypertable | Eén logische tabel die automatisch wordt opgesplitst in chunks per tijdvak (standaard 7 dagen), optioneel ook per andere dimensie | Inserts en queries raken alleen de recente of relevante chunks |
| Columnstore (Hypercore) | Zet oudere chunks om naar kolomopslag met compressie, vaak 90% of meer besparing | Jaren procesdata blijven betaalbaar online |
| Continuous aggregates | Materialized views die automatisch en incrementeel worden bijgewerkt, bijvoorbeeld minuut- of uurgemiddelden | Dashboards lezen samenvattingen in plaats van miljarden ruwe rijen |
| Retentiebeleid | Verwijdert hele chunks die ouder zijn dan een ingestelde termijn | Opschonen kost geen zware DELETE-queries |
| Hyperfuncties |
SQL-functies zoals time_bucket, first, last, locf, interpolate en time_weight (die laatste via de aanvullende
TimescaleDB Toolkit)
|
Tijdgewogen gemiddelden en gaten in meetreeksen netjes verwerken |
| Jobs | Ingebouwde planner voor compressie-, retentie- en aggregatiebeleid | Geen externe cron-taken nodig |
Een typische OT-tabel bevat een tijdstempel, een tag- of asset-ID, een waarde en een kwaliteits- of statuscode. In TimescaleDB is dat een hypertable met een index op (tag, tijd); een asset-hiërarchie of ISA-95-model staat in gewone relationele tabellen ernaast.
🔄 Wat is het verschil met een traditionele historian?
Een klassieke historian zoals AVEVA PI is gebouwd voor proceswaarden, met eigen compressiealgoritmen (zoals swinging door), een tag-database en kant-en-klare connectoren naar honderden besturingssystemen. TimescaleDB is een algemene database: krachtiger in SQL en integratie, maar zonder de OT-specifieke schil.
| Eigenschap | Traditionele historian | TimescaleDB |
|---|---|---|
| Basis | Eigen (proprietary) opslagengine | PostgreSQL met extensie |
| Querytaal | Leverancier-API, soms SQL-laag | Standaard SQL |
| Connectoren naar PLC/DCS | Uitgebreid, meegeleverd | Via gateway of eigen software (OPC UA, MQTT) |
| Compressie | Deadband/swinging door bij inname | Kolomcompressie van oudere chunks, alle waarden blijven bewaard |
| Relationele data | Beperkt (asset framework) | Volledig: joins met orders, batches, onderhoud |
| Schaalbaarheid zelf gehost | Leverancierafhankelijk | Verticaal plus read-replica’s |
| Licentie | Commercieel, vaak per tag | Apache 2.0-kern plus gratis Timescale License |
In de praktijk vervangt TimescaleDB de site-historian zelden volledig. Vaker vormt het een analyse- of datalaag erboven, of de opslag van een moderne SCADA zoals Ignition, die tagdata in een SQL-database kan historiseren.
🏭 Waar past TimescaleDB in de OT-architectuur?
TimescaleDB is geen realtime besturingscomponent en hoort niet op de veldlaag. Een realistische plaatsing in het Purdue Model:
| Purdue-laag | Mogelijke rol van TimescaleDB |
|---|---|
| Level 2 | Lokale opslag op een edge-server naast SCADA of een kleine installatie |
| Level 3 | Site-historian of datalaag voor MES en OEE-rapportage |
| Level 3.5 | Replica in de IDMZ, zodat IT-gebruikers niet in het OT-netwerk hoeven |
| Level 4 en cloud | Centraal analyseplatform voor meerdere sites, bijvoorbeeld via Tiger Cloud |
Data komt meestal binnen via een gateway: een OPC UA-client, een MQTT-broker of Unified Namespace met een database-schrijver, Node-RED, Telegraf of een Kafka-pipeline. Grafana heeft een PostgreSQL-databron met TimescaleDB-ondersteuning en is de gebruikelijke visualisatielaag. Containerbeelden maken uitrol met Docker of Kubernetes eenvoudig, ook op edge-hardware.
🔧 Hoe richt u TimescaleDB in voor procesdata?
Een stappenplan dat in OT-projecten goed werkt:
- Bepaal het datamodel - kies tussen een smal model (tijd, tag-ID, waarde, kwaliteit) en een breed model (één kolom per signaal per machine). Het smalle model is flexibeler bij duizenden tags.
- Maak de hypertable - begin met de standaard chunk van 7 dagen. De vuistregel van de leverancier: de indexen van de chunks waarin actief wordt geschreven moeten in circa 25% van het werkgeheugen passen. Op een server met 64 GB en 10 GB indexgroei per dag past een chunk van 1 dag beter.
- Stel compressie in - segmenteer op tag- of asset-ID en sorteer op tijd, en comprimeer chunks na bijvoorbeeld 7 tot 30 dagen.
- Definieer continuous aggregates - bijvoorbeeld 1-minuut- en 1-uurgemiddelden met min/max, zodat OEE-dashboards en energierapporten snel blijven.
- Leg retentie vast - ruwe data bijvoorbeeld 1 tot 2 jaar, aggregaten 10 jaar of langer, afhankelijk van wettelijke en kwaliteitseisen.
- Regel beschikbaarheid en back-up - PostgreSQL streaming replication met automatische failover (bijvoorbeeld Patroni), plus back-ups die regelmatig hersteltests doorstaan.
Een rekenvoorbeeld: 5.000 tags die elke seconde een waarde leveren geven 432 miljoen rijen per dag. Ongecomprimeerd is dat al snel tientallen gigabytes per dag; met kolomcompressie en aggregaten blijft een meerjarige historie op één server haalbaar.
📜 Is TimescaleDB open source?
Deels. TimescaleDB kent twee edities in dezelfde codebase:
-
Apache 2-editie - hypertables, chunkbeheer en basisfuncties zoals
time_bucket,firstenlast. Echt open source. - Community-editie (Timescale License, TSL) - columnstore/compressie, continuous aggregates, retentie- en jobbeleid en de geavanceerde hyperfuncties. Gratis te gebruiken, ook commercieel en in eigen producten, maar u mag de Community-editie niet als databasedienst aan anderen verkopen.
Voor een industrieel bedrijf dat TimescaleDB zelf host, is de Community-editie vrijwel altijd bruikbaar. Let op bij managed PostgreSQL-diensten van cloudproviders: die bieden TimescaleDB vaak niet aan, of alleen de Apache 2-editie zonder compressie, continuous aggregates en retentiebeleid. Het oude multi-node (gedistribueerde) cluster is na versie 2.13 geschrapt. Sinds versie 2.29 (juli 2026) ondersteunt TimescaleDB PostgreSQL 16, 17 en 18; ondersteuning voor PostgreSQL 15 is daarmee vervallen.
🔐 Hoe beveiligt u TimescaleDB in een OT-omgeving?
Voor cybersecurity geldt: een database met procesdata is aantrekkelijk voor aanvallers: manipulatie ondermijnt de data-integriteit van rapportages en ransomware kan jaren historie onbruikbaar maken. Omdat TimescaleDB PostgreSQL is, gelden de gewone PostgreSQL-hardeningmaatregelen:
| Maatregel | Uitwerking |
|---|---|
| Versleuteling |
TLS verplicht in pg_hba.conf
(hostssl), ook voor replicatie
|
| Toegangsbeheer | RBAC met aparte rollen voor schrijvende gateway, lezers en beheer |
| Sterke authenticatie | SCRAM-SHA-256; MFA via jump host of centrale identity provider, PostgreSQL zelf kent geen MFA |
| Segmentatie | Netwerksegmentatie, database in eigen zone, IT leest uit een replica in de DMZ of IDMZ |
| Telemetrie | Zet timescaledb.telemetry_level op off in afgeschermde netwerken |
| Logging en herstel | Auditlogging (pgAudit), offline of immutable back-ups, gedocumenteerd herstel voor forensisch onderzoek |
| Patchen | Volg PostgreSQL- en TimescaleDB-releases binnen het lifecyclebeheer |
Ontwerp de omgeving volgens IEC 62443 (zones en conduits), Defense in Depth en Zero Trust-principes; NIST SP 800-82 geeft aanvullende richtlijnen voor ICS. Op organisatieniveau sluiten ISO 27001 en het NIST CSF daarop aan. Organisaties die onder de Cyberbeveiligingswet vallen, moeten zulke maatregelen ook kunnen aantonen.
🧪 Praktijkvoorbeeld: energiemonitoring in een fabriek
Een Nederlandse voedingsmiddelenproducent wil energieverbruik per productielijn koppelen aan productieorders om de energie per kilo product te bepalen, onder meer voor de EED-energieauditplicht.
| Component | Rol |
|---|---|
| Energiemeters en PLC’s | Leveren kWh, gas en perslucht via Modbus/OPC UA |
| Edge-gateway | Publiceert waarden via MQTT naar de broker |
| TimescaleDB (Level 3) | Slaat ruwe data op, comprimeert na 14 dagen, bewaart uuraggregaten 10 jaar |
| ERP-koppeling | Laadt orders en batches in gewone tabellen |
| Grafana | Dashboards met kWh per order en per kilo |
Omdat orders en meetwaarden in één database staan, is “energie per order” één SQL-join met time_bucket in plaats van een export naar Excel. Dezelfde data voedt later modellen voor AI en anomaliedetectie. Dat is precies de kracht van TimescaleDB binnen IT/OT-convergentie.
❓ Veelgestelde vragen
Is TimescaleDB gratis te gebruiken?
TimescaleDB is gratis voor zelf gehoste installaties: de kern valt onder Apache 2.0 en de geavanceerde functies onder de gratis Timescale License. Die licentie verbiedt vooral het aanbieden van de Community-editie als databasedienst (DBaaS) aan derden. Een beheerde versie is te koop als Tiger Cloud.
Wat is het verschil tussen TimescaleDB en InfluxDB?
TimescaleDB is een PostgreSQL-extensie met standaard SQL en volledige relationele functies, terwijl InfluxDB een eigen tijdreeksdatabase is met een eigen opslagengine. TimescaleDB is sterk wanneer u procesdata wilt combineren met relationele IT-data. InfluxDB is eenvoudiger op te zetten voor pure metrics.
Kan TimescaleDB een industriële historian vervangen?
TimescaleDB kan de opslag- en analysefunctie van een historian overnemen, maar mist de meegeleverde connectoren naar besturingssystemen en de OT-specifieke beheerschil. Daarom wordt het vaak naast een bestaande historian gebruikt, of als database achter een SCADA-pakket. Voor nieuwe, kleinere installaties kan het wel de volledige historian zijn.
Hoeveel compressie haalt TimescaleDB op procesdata?
TimescaleDB haalt met de columnstore vaak een besparing van 90% of meer, omdat opeenvolgende meetwaarden van één tag sterk op elkaar lijken. De werkelijke ratio hangt af van de segmentatie, de sorteervolgorde en de ruis in het signaal. Test daarom altijd met een representatieve dataset.
Wat is een hypertable in TimescaleDB?
Een hypertable is een TimescaleDB-tabel die zich voor de gebruiker gedraagt als één gewone tabel, maar intern wordt verdeeld in chunks per tijdvak. Queries en inserts raken alleen de relevante chunks, waardoor prestaties stabiel blijven naarmate de data groeit. Oude chunks kunnen in één keer worden gecomprimeerd of verwijderd.
Is TimescaleDB geschikt voor de edge?
TimescaleDB draait als container op gangbare edge-servers en industriële pc’s, zolang er genoeg geheugen en betrouwbare opslag is. Op de edge buffert het lokaal en repliceert het of stuurt het aggregaten door naar een centrale database. Voor zeer kleine apparaten is een lichtere oplossing vaak geschikter.
📌 Samengevat
TimescaleDB maakt van PostgreSQL een time series database die procesdata en IT-data in één SQL-omgeving samenbrengt. Met hypertables, kolomcompressie, continuous aggregates en retentiebeleid is het een open en betaalbaar fundament in de architectuur voor historisering en analyse binnen IT/OT-convergentie, mits u het positioneert in de juiste Purdue-zone en beveiligt volgens IEC 62443.
