What is TimescaleDB?

TimescaleDB is an extension for the PostgreSQL relational database that turns it into a full time series database, adding automatic time-based partitioning (hypertables), columnar compression and continuously updated aggregates. It was launched in 2017 by the company Timescale, which renamed itself Tiger Data in June 2025; the extension itself is still called TimescaleDB. In OT environments and OT convergence projects, TimescaleDB is used for industrial telemetry, IIoT data, process history, energy monitoring and predictive maintenance. Its main advantage is that process data and relational IT data (orders, assets, batches) live in the same database and can be combined with ordinary SQL.


๐Ÿง  How does TimescaleDB work?

TimescaleDB runs as an extension inside a normal PostgreSQL server. After loading the library (shared_preload_libraries) and running CREATE EXTENSION timescaledb, everything PostgreSQL offers remains available: transactions, joins, indexes, user privileges, replication and the familiar tooling. TimescaleDB adds a set of time series building blocks on top:

Building block What it does Why it matters in OT
Hypertable One logical table that is automatically split into chunks per time interval (7 days by default), optionally also by another dimension Inserts and queries only touch recent or relevant chunks
Columnstore (Hypercore) Converts older chunks to compressed columnar storage, often saving 90% or more Years of process data stay affordably online
Continuous aggregates Materialised views that refresh automatically and incrementally, for example per-minute or hourly averages Dashboards read summaries instead of billions of raw rows
Retention policy Drops whole chunks older than a configured age Cleanup needs no heavy DELETE queries
Hyperfunctions SQL functions such as time_bucket, first, last, locf, interpolate and time_weight (the latter via the add-on TimescaleDB Toolkit) Time-weighted averages and gaps in measurement series are handled properly
Jobs Built-in scheduler for compression, retention and aggregation policies No external cron jobs required

A typical OT table holds a timestamp, a tag or asset ID, a value and a quality or status code. In TimescaleDB that becomes a hypertable with an index on (tag, time), while an asset hierarchy or ISA-95 model sits alongside it in ordinary relational tables.


๐Ÿ”„ How does TimescaleDB differ from a traditional historian?

A classic historian such as AVEVA PI is built for process values, with its own compression algorithms (such as swinging door), a tag database and ready-made connectors to hundreds of control systems. TimescaleDB is a general-purpose database: stronger in SQL and integration, but without the OT-specific layer.

Property Traditional historian TimescaleDB
Foundation Proprietary storage engine PostgreSQL with an extension
Query language Vendor API, sometimes an SQL layer Standard SQL
Connectors to PLC/DCS Extensive, included Via a gateway or your own software (OPC UA, MQTT)
Compression Deadband/swinging door at ingest Columnar compression of older chunks, all values retained
Relational data Limited (asset framework) Full: joins with orders, batches, maintenance
Self-hosted scaling Vendor-dependent Vertical plus read replicas
Licence Commercial, often per tag Apache 2.0 core plus free Timescale License

In practice, TimescaleDB rarely replaces the site historian entirely. More often it acts as an analytics or data layer above it, or as the storage behind a modern SCADA such as Ignition, which can historise tag data into an SQL database.


๐Ÿญ Where does TimescaleDB fit in an OT architecture?

TimescaleDB is not a real-time control component and does not belong at field level. A realistic placement in the Purdue Model:

Purdue level Possible role of TimescaleDB
Level 2 Local storage on an edge server next to SCADA or a small plant
Level 3 Site historian or data layer for MES and OEE reporting
Level 3.5 Replica in the IDMZ, so IT users do not need access to the OT network
Level 4 and cloud Central analytics platform for multiple sites, for example via Tiger Cloud

Data usually arrives through a gateway: an OPC UA client, an MQTT broker or Unified Namespace with a database writer, Node-RED, Telegraf or an Kafka pipeline. Grafana has a PostgreSQL data source with TimescaleDB support and is the usual visualisation layer. Container images make deployment with Docker or Kubernetes straightforward, including on edge hardware.


๐Ÿ”ง How do you set up TimescaleDB for process data?

A step-by-step approach that works well in OT projects:

  1. Choose the data model - a narrow model (time, tag ID, value, quality) or a wide model (one column per signal per machine). The narrow model is more flexible when you have thousands of tags.
  2. Create the hypertable - start with the default 7-day chunk. The vendorโ€™s rule of thumb is that the indexes of the chunks currently being written should fit within about 25% of main memory. On a 64 GB server with 10 GB of index growth per day, a 1-day chunk is a better fit.
  3. Configure compression - segment by tag or asset ID, order by time, and compress chunks after, say, 7 to 30 days.
  4. Define continuous aggregates - for example 1-minute and 1-hour averages with min/max, so OEE dashboards and energy reports stay fast.
  5. Set retention - raw data for perhaps 1 to 2 years, aggregates for 10 years or more, depending on legal and quality requirements.
  6. Arrange availability and backup - PostgreSQL streaming replication with automatic failover (for example Patroni), plus backups that regularly pass restore tests.

A worked example: 5,000 tags each delivering one value per second produce 432 million rows per day. Uncompressed, that quickly adds up to tens of gigabytes per day; with columnar compression and aggregates, a multi-year history on a single server remains feasible.


๐Ÿ“œ Is TimescaleDB open source?

Partly. TimescaleDB has two editions in the same codebase:

  • Apache 2 edition - hypertables, chunk management and basic functions such as time_bucket, first and last. Genuinely open source.
  • Community edition (Timescale License, TSL) - columnstore/compression, continuous aggregates, retention and job policies, and the advanced hyperfunctions. Free to use, including commercially and inside your own products, but you may not sell the Community edition to others as a database service.

For an industrial company that hosts TimescaleDB itself, the Community edition is almost always usable. Be careful with cloud providersโ€™ managed PostgreSQL services: they often do not offer TimescaleDB at all, or only the Apache 2 edition without compression, continuous aggregates and retention policies. The old multi-node (distributed) cluster was dropped after version 2.13. Since version 2.29 (July 2026), TimescaleDB supports PostgreSQL 16, 17 and 18; support for PostgreSQL 15 was dropped in that release.


๐Ÿ” How do you secure TimescaleDB in an OT environment?

For cybersecurity, a database full of process data is an attractive target: manipulation undermines the data integrity of reports, and ransomware can make years of history unusable. Because TimescaleDB is PostgreSQL, the usual PostgreSQL hardening measures apply:

Measure Implementation
Encryption TLS enforced in pg_hba.conf (hostssl), including for replication
Access control RBAC with separate roles for the writing gateway, readers and administrators
Strong authentication SCRAM-SHA-256; MFA via a jump host or central identity provider, as PostgreSQL itself has no MFA
Segmentation Network segmentation, database in its own zone, IT reads from a replica in the DMZ or IDMZ
Telemetry Set timescaledb.telemetry_level to off in isolated networks
Logging and recovery Audit logging (pgAudit), offline or immutable backups, documented recovery for forensic investigation
Patching Track PostgreSQL and TimescaleDB releases as part of lifecycle management

Design the environment according to IEC 62443 (zones and conduits), Defense in Depth and Zero Trust principles; NIST SP 800-82 provides additional ICS guidance. At organisational level, ISO 27001 and the NIST CSF build on this. Organisations in scope of the Dutch Cybersecurity Act or NIS2 must also be able to demonstrate such measures.


๐Ÿงช Practical example: energy monitoring in a factory

A Dutch food manufacturer wants to link energy consumption per production line to production orders to determine energy per kilogram of product, partly for the energy audit obligation under the EU Energy Efficiency Directive.

Component Role
Energy meters and PLCs Supply kWh, gas and compressed air data via Modbus/OPC UA
Edge gateway Publishes values via MQTT to the broker
TimescaleDB (Level 3) Stores raw data, compresses after 14 days, keeps hourly aggregates for 10 years
ERP integration Loads orders and batches into ordinary tables
Grafana Dashboards showing kWh per order and per kilogram

Because orders and measurements sit in one database, โ€œenergy per orderโ€ is a single SQL join with time_bucket rather than an export to Excel. The same data later feeds models for AI and anomaly detection. That is exactly where TimescaleDB adds value in IT/OT convergence.


โ“ Frequently asked questions

Is TimescaleDB free to use?

TimescaleDB is free for self-hosted installations: the core is licensed under Apache 2.0 and the advanced features under the free Timescale License. That licence mainly prohibits offering the Community edition as a database service (DBaaS) to third parties. A managed version is available commercially as Tiger Cloud.

What is the difference between TimescaleDB and InfluxDB?

TimescaleDB is a PostgreSQL extension with standard SQL and full relational features, while InfluxDB is a dedicated time series database with its own storage engine. TimescaleDB is strong when you want to combine process data with relational IT data. InfluxDB is simpler to set up for pure metrics.

Can TimescaleDB replace an industrial historian?

TimescaleDB can take over the storage and analytics function of a historian, but it lacks the bundled connectors to control systems and the OT-specific management layer. That is why it is often used alongside an existing historian, or as the database behind a SCADA package. For new, smaller installations it can be the complete historian.

How much compression does TimescaleDB achieve on process data?

TimescaleDB often saves 90% or more with its columnstore, because consecutive values of a single tag tend to be very similar. The actual ratio depends on segmentation, sort order and the noise in the signal. Always test with a representative dataset.

What is a hypertable in TimescaleDB?

A hypertable is a TimescaleDB table that behaves like one ordinary table for the user but is internally split into chunks per time interval. Queries and inserts only touch the relevant chunks, so performance stays stable as the data grows. Old chunks can be compressed or dropped in one operation.

Is TimescaleDB suitable for the edge?

TimescaleDB runs as a container on common edge servers and industrial PCs, provided there is enough memory and reliable storage. At the edge it buffers locally and replicates, or forwards aggregates to a central database. For very small devices, a lighter solution is often a better fit.


๐Ÿ“Œ In summary

TimescaleDB turns PostgreSQL into a time series database that brings process data and IT data together in one SQL environment. With hypertables, columnar compression, continuous aggregates and retention policies, it is an open and affordable foundation in the architecture for historisation and analytics in IT/OT convergence, provided you place it in the right Purdue zone and secure it according to IEC 62443.