Time-series at energy scale: TimescaleDB, InfluxDB, or ClickHouse?

Pick wrong and your data layer will crack at exactly the moment your fleet is interesting. The three credible options for energy and IoT time-series in 2026 are TimescaleDB, InfluxDB, and ClickHouse. Each is excellent for a slightly different shape of workload.

tl;dr. Pick wrong and your data layer will crack at exactly the moment your fleet is interesting. The three credible options for energy and IoT time-series in 2026 are TimescaleDB, InfluxDB, and ClickHouse, and each one is excellent for a slightly different workload. The honest answer for many teams, including the shape we run at Pstryk, is that you may not need a dedicated time-series database at all yet. Here is the framework I use to decide.

The right time-series database is the one whose failure mode you can live with. Every one of these tools is fast enough until it is not, and the moment it stops being fast enough is rarely the moment you expected. So the decision is less about benchmarks and more about which trade-off you want baked into your foundation.

Let me give you the framework, the three contenders as they actually stand in 2026, and the unglamorous option that beats all three for a lot of teams.

The four axes that decide

Before you look at any product, write down where your workload sits on four axes, because the answer falls out of those, not out of a benchmark someone published.

Ingest rate is the first. Are you writing thousands of points per second, or millions? A residential energy fleet of a few thousand smart meters reporting every few seconds is firmly in the thousands. A fleet of a hundred thousand devices at high frequency is in the millions, and that is a different conversation.

Query shape is the second, and the most important. Do you mostly read recent data for a single device, the last day of one customer's consumption, or do you run analytical sweeps across the whole fleet over months, average load by region by hour across a year? Point-and-recent versus wide-and-analytical is the fork that separates these tools more than anything else.

Retention is the third. Are you keeping hot data for weeks, or are you legally and commercially obliged to keep years of interval data queryable? Energy companies usually are, which makes long-term storage cost a first-class concern rather than an afterthought.

Operational complexity is the fourth and the one teams systematically underweight. Who operates this at 3am? A two-person team and a database that needs a dedicated engineer to run are a bad match no matter how good the benchmarks are.

TimescaleDB: stay in Postgres as long as you can

TimescaleDB is a PostgreSQL extension, and that single fact is its whole pitch. Your time-series data lives next to your relational data, you keep PostgreSQL's tooling, your team already knows the query language, and you can JOIN your sensor readings against your customer table without moving data between systems. It now achieves strong compression on historical data and pre-computes common rollups so analytical reads stay fast. (The company behind it rebranded to Tiger Data in 2025, though the extension is still TimescaleDB; do not let the renaming confuse you when you are searching.)

It is the right choice when you are already a Postgres shop, your ingest is in the thousands-to-hundreds-of-thousands per second rather than the millions, and you value relational stability and ACID guarantees over raw ingestion records. The trade-off is that it is not the fastest at pure high-frequency ingest, and at very large analytical scale a columnar engine will beat it.

One important deployment caveat for the cloud-native crowd: the major managed Postgres services do not all offer the TimescaleDB extension. If you are on a managed Postgres that does not support it, TimescaleDB is effectively off the table unless you self-manage or move to their cloud, and that constraint alone decides the question for some teams.

InfluxDB: the metrics specialist, rebuilt

InfluxDB is the purpose-built time-series database, and the current generation, version 3, is a ground-up rewrite in Rust on top of Apache Arrow and Parquet. The rewrite directly addressed its historical weaknesses around analytical queries and storage efficiency, and the project moved back to permissive open-source licensing after a more restrictive period, which matters if license terms factor into your stack decisions.

It is the right choice when your workload is genuinely metrics and monitoring, you want the enormous ecosystem of collection agents and dashboards that grew up around it, and your team is small enough that a managed, low-operational-overhead service is worth more than maximum flexibility. The trade-off is that it still does not do relational JOINs the way SQL users expect, so if your time-series data constantly needs to be combined with relational data, you will feel the seams. It is a specialist, and it is excellent at the thing it specializes in.

ClickHouse: when you need to ask anything across everything

ClickHouse is a columnar OLAP engine that does not particularly care that your data is time-series; it cares that you want to aggregate billions of rows in under a second. It delivers the strongest compression of the three and dominates interactive analytical queries at scale.

It is the right choice when you are building analytics across massive datasets, you need ad-hoc queries across years of fleet data, and you can live without ACID transactions and without treating it as your operational system of record. The trade-off is exactly that: it is a warehouse, not a transactional database, and using it as your primary operational store for live device state is fighting the tool. It shines as the analytical layer, not the hot path.

A quick honorable mention: if pure ingestion speed is your single binding constraint, newer engines like QuestDB are pushing that benchmark hard and are worth a look. For most energy and IoT teams, though, the three above cover the realistic decision space.

The pattern that actually wins at scale

Here is the thing the benchmark articles bury: at scale, the most successful teams do not pick one. They orchestrate a few.

The pattern that has become standard for serious energy and IoT platforms is tiering by temperature. A hot tier handles live device state and recent data, often in Postgres or InfluxDB, optimized for fast writes and recent reads and real-time alerting. A cold analytical tier holds the long history, often in ClickHouse or simply as Parquet files on object storage, optimized for cheap retention and wide analytical queries. Data flows from hot to cold on a schedule, and each tier does the one thing it is good at.

This is more moving parts, and more moving parts is a real cost. But it resolves the central tension, that the database optimized for "what is this one device doing right now" is not the database optimized for "what did the whole fleet do last winter." Trying to make one system excel at both is how you end up with a data layer that is mediocre at each.

The honest answer: you may not need any of them yet

Now the part that will save some of you a migration you do not need.

At Pstryk, our metering pipeline runs on managed PostgreSQL on Cloud SQL for the operational hot path, with BigQuery as the analytical warehouse. Notice what is not in that sentence: we did not reach for a dedicated time-series database. Managed Postgres handles our device and metering workload comfortably, and a cloud data warehouse handles the wide analytical queries over history. For a fleet of our size, that is enough, and it is enough for a lot of companies that are convinced they need something more exotic.

The lesson generalizes. A dedicated time-series database earns its place when your ingest rate, your query patterns, or your retention costs are genuinely straining a conventional setup. Below that threshold, a well-tuned Postgres for the hot path and a cloud warehouse for analytics will serve you well past the point most founders assume, with a fraction of the operational burden. The exotic database is a tool for a problem you should be able to point at, not an insurance policy you buy in advance.

So before you adopt any of the three, ask the honest question: is my current data layer actually cracking, or do I just feel like a real IoT company should have a time-series database? If it is the latter, keep your Postgres, add a warehouse when analytics get heavy, and spend the saved complexity budget on the part of your product that customers actually see.

If you are wrestling with where your energy or IoT data layer should go as you scale, this is exactly the kind of architecture decision I help teams think through, on the side, through the consulting page. The first move is usually to find the specific thing that is breaking, before picking the tool to fix it.

Mateusz Kozak Fractional CTO / Warsaw

CTO at Pstryk. I help climate, energy, and AI startups ship hard technical products. If this piece resonated and you're building in adjacent territory, that's exactly the conversation I want to be having.

Get one essay like this in your inbox roughly twice a month.

No spam, no upsell, easy unsubscribe.