
TDengine
A clustered time-series database for IoT and industrial data that gives every device its own table, grouped under “supertables” with tags.
- What it is
- Time-series databases
- Type
- Open source
- Made by
- TAOS Data (TDengine)
- License
- AGPL-3.0 (TDengine TSDB open source); TSDB-Enterprise, IDMP and TDengine Cloud are commercial
- Facts checked
- 6 October 2026
What it is
A TDengine cluster is made of dnodes, each a running taosd server. Inside them, mnodes keep the cluster’s metadata and health, vnodes store the data, and optional qnodes and snodes run queries and stream processing apart from storage. Applications connect through the taosc driver or through taosAdapter, which offers REST and WebSocket APIs and also accepts InfluxDB line protocol, OpenTSDB, StatsD, collectd and Prometheus remote write. The data model gives every device (a “data collection point”) its own table: a supertable defines the measurement columns and the tag names, such as model or location, and each subtable is one device with its own tag values. All of one table’s rows live in a single vnode, chosen by consistent hashing, so writing is a simple append. With three replicas, each vnode belongs to a Raft group that confirms a write once a majority has logged it. Data files cover time ranges set per database by DURATION (10 days by default), and KEEP (3,650 days by default) decides when they are dropped.
The open-source TDengine TSDB, under AGPL-3.0, includes clustering, Raft replication, stream processing, a cache of each table’s latest values, and Kafka-like topic subscriptions, so many IoT setups need no separate queue or cache. TDengine TSDB-Enterprise adds tiered storage including S3, encryption, backup and restore, database- and table-level access control, auditing, load balancing by splitting and merging vnodes, replication between sites, and zero-code connectors for PI System, OPC, MQTT and other sources. The company sells it together with TDengine IDMP, a layer for asset models, dashboards and AI analysis, as TDengine All-in-One: free for up to 5,000 tags since July 2026 and licensed by tag count above that, where a tag is one measured signal such as a pump’s discharge pressure. TDengine Cloud runs the same package, fully managed on AWS, Azure or Google Cloud, from $970 a month.
Why teams pick it
- The supertable model fits fleets of devices: a device’s table is created on its first insert, and one query covers them all with
PARTITION BY tbnameandINTERVALwindows - Clustering and Raft replication are in the open-source build, as they have been since August 2020
- Fewer moving parts: stream processing, a latest-value cache and Kafka-like subscriptions are built in, and from 3.4.3 subscriptions can also be served over MQTT
- Easy to feed: taosAdapter accepts what agents built for InfluxDB, OpenTSDB, StatsD, collectd or Prometheus already send, and Kafka source and sink connectors are open source
Watch out for
- AGPL-3.0: if you modify TDengine and let users reach it over a network, you must offer them your changed source; companies that avoid the AGPL need a commercial licence
- Tiered storage and S3, encryption at rest, backups, two-replica databases and table-level access control are Enterprise only; the open build allows one or three replicas
- Schema rules follow the device model: the first column must be a timestamp, and a table allows at most 4,096 columns and 128 tags, so you decide up front which supertable a source belongs to and which values are tags
- Commercial pricing counts tags: above the free 5,000, a self-hosted licence starts at $12,500 a year for 7,500 tags, high availability adds 30%, and support on the free tier costs $3,375 a year
- The open-source tree is built and tested mainly on Linux; macOS works for development, and Windows support is limited
Alternatives
What all time-series databases have in common →
Amazon TimestreamAWSAWS’s time-series databases: a serverless engine now closed to new customers, and managed InfluxDB 2 and 3.Apache IoTDBOpen sourceAn Apache time-series database for industrial IoT that stores everything in its own open file format, TsFile, and lets you model devices as a tree of paths or as SQL tables.+1 TimechoDBArcOpen sourceA young single-binary time-series database in Go that writes incoming data as Parquet files and queries them with DuckDB SQL.
QuestDBOpen sourceA columnar time-series database in Java, C++ and Rust that ingests millions of rows a second and answers time-series SQL, with old partitions kept as Parquet.How it fits with other technologies
What TDengine uses
- TDenginetakes line protocol, via taosAdapter, fromTelegraf
- TDenginecan be the remote-write storage forPrometheus
- TDenginesyncs both ways, via connectors, withApache Kafka
- TDenginecan serve topic subscriptions overMQTT
- TDengineis charted, through a plugin, byGrafana
- TDenginetiers old data (Enterprise) toAmazon S3
- TDenginecan be deployed as a cluster onKubernetes
A supertable of meters, one subtable per meter, and windowed queries · sql
-- 10-day data files, kept a year, latest row of each table cached
CREATE DATABASE power KEEP 365 DURATION 10 CACHEMODEL 'last_row';
USE power;
-- the template: measurement columns plus tags that describe each meter
CREATE STABLE meters (ts TIMESTAMP, current FLOAT, voltage INT, phase FLOAT)
TAGS (location VARCHAR(64), group_id INT);
-- each meter gets its own subtable, created on its first insert
INSERT INTO d1001 USING meters TAGS ('California.SanFrancisco', 2)
VALUES (NOW, 10.3, 219, 0.31);
-- 10-minute averages for every meter over the last day
SELECT _wstart, tbname, avg(voltage) FROM meters
WHERE ts > NOW - 1d
PARTITION BY tbname INTERVAL(10m);
-- the newest reading across all meters, served from the cache
SELECT LAST_ROW(ts, current) FROM meters;Editions and pricing#
The open-source database is free under AGPL-3.0. The commercial package bundles TSDB-Enterprise with IDMP and is priced by tag count. List prices checked on 2026-10-06.
| TSDB open source | All-in-One, self-hosted | TDengine Cloud | |
|---|---|---|---|
| Who runs it | You | You: at the edge, on servers, or in any cloud | TDengine, on AWS, Azure or Google Cloud |
| What’s in it | Clustering, Raft replication, streams, cache, subscriptions | Adds Enterprise features (tiered storage, connectors, security, backups) and IDMP | Same as All-in-One, with infrastructure and operations included |
| Licence | AGPL-3.0 | Annual or perpetual commercial licence | Monthly or annual plan |
| 5,000 tags | Free | Free; optional support $3,375 a year | Starter: $970 a month |
| 10,000 tags | Free | $15,500 a year, or $38,750 perpetual | Small: $1,740 a month |
| 40,000 tags | Free | $28,000 a year, or $70,000 perpetual | Large: $3,500 a month |
| High availability | Three-replica Raft groups | 30% on top of the licence price | Not priced separately |
- A tag is one time-series signal, typically asset plus measurement, such as Pump-101 / DischargePressure. Sampling rate doesn’t change the count.
- The free 5,000-tag tier covers the self-hosted package only; TDengine Cloud plans are priced separately.
TDengine, InfluxDB 3 Core or QuestDB?#
What each free, open-source build gives you. All three accept InfluxDB line protocol, so the same agents can feed any of them.
| TDengine TSDB | InfluxDB 3 Core | QuestDB | |
|---|---|---|---|
| Licence | AGPL-3.0 | MIT or Apache 2.0 | Apache 2.0 |
| Clustering in the free build | Yes: Raft, one or three replicas | No, a single node | No, a single instance |
| Data model | A supertable per device type, one subtable per device, tags | Tables per measurement, with tags and fields | Tables with a designated timestamp and SYMBOL columns |
| Query language | SQL with INTERVAL, PARTITION BY tbname, FILL | SQL and InfluxQL | SQL with SAMPLE BY, LATEST ON, ASOF JOIN |
| Where data lives | Local disks; S3 tier is Enterprise only | Parquet on object storage or local disk | Local column files; Parquet by hand, object storage tier is Enterprise only |
| Long time ranges | Yes | Limited to 432 Parquet files per query by default, about 72 hours | Yes |
See it in a real stack
No architecture uses TDengine yet. Drop it into the playground and wire it up yourself.Open playground →Benchmarks
How to read a benchmark →Where it came from2017–2026
Jeff Tao (Tao Jianhui) worked at Motorola and 3Com in the United States, as a principal staff engineer at Motorola Mobile Devices, then returned to Beijing in 2008 and founded two companies. In 2016 he concluded that IoT data was growing into a big-data problem of its own and deserved a tool designed around it, and in May 2017 he founded TAOS Data to build one.
TDengine’s code went public on GitHub on July 12, 2019, under AGPL-3.0. Clustering followed in August 2020, the month version 2.0 was tagged, while InfluxDB kept clustering in its paid edition, a contrast TAOS Data has used in its marketing ever since. Version 3.0 in August 2022 made TDengine cloud native, with compute separated from storage and Kubernetes support, and built in caching and a message queue.
Since then the company has moved toward industrial data. TDengine IDMP adds asset models, dashboards and AI analysis on top of the database, pitched as a replacement for traditional data historians such as PI System, and in July 2026 the whole package became free for deployments of up to 5,000 tags.
Why it’s built this way
- One table per data collection point
- Each device writes its own readings in time order. Giving it a table keeps its data contiguous, so a write is a plain append and reading one device’s history is a sequential scan.
- Supertables as templates, with tags
- Devices of one type share a schema, and attributes such as model or location rarely change. Storing them once per subtable as tags, rather than on every row, lets one query aggregate across devices by tag.
- Keep each table whole inside one vnode
- Consistent hashing places every table in one vnode, so a device’s data is never spread across machines, and the cluster grows by adding vnodes and dnodes.
- Build in the cache, streams and queue
- IoT systems usually bolt a cache, a stream processor and a message queue onto the database. Version 3.0 made caching of new data and a message queue tailored for time series part of TDengine itself.
Timeline
- 2017
Jeff Tao founds TAOS Data in Beijing in May
- 2019
TDengine open-sourced under AGPL-3.0 on July 12
- 2020
Version 2.0 and open-source clustering in August
- 2022
Version 3.0, cloud native, in August
- 2026
All-in-One package made free for up to 5,000 tags in July
- TDengine blog: the 2nd anniversary of the TDengine open-source community (Jul 2021)
- TAOS Data (涛思数据): About, founder biography and May 2017 founding
- TDengine blog: InfluxDB vs TDengine, open-source clustering since August 2020 (Feb 2025)
- GitHub: TDengine ver-2.0.0.0 tag (Aug 3, 2020)
- TDengine blog: Announcing TDengine 3.0 (Aug 2022)
- TDengine: free forever for up to 5,000 tags (press release, Jul 28, 2026)
Sources20 · facts checked 6 October 2026
- TDengine README (features, platforms, licence)
- TDengine LICENSE (AGPL-3.0)
- TDengine docs: Architecture (dnode, vnode, mnode, qnode, snode, Raft, one table per collection point)
- TDengine docs: Basic concepts (collection points, tags, supertables, subtables)
- TDengine docs: Data modeling (CREATE STABLE, automatic subtable creation)
- TDengine docs: Database options (DURATION, KEEP, REPLICA, CACHEMODEL, Enterprise-only options)
- TDengine docs: Naming rules and limits
- TDengine docs: Time-series extensions (PARTITION BY, INTERVAL, FILL)
- TDengine docs: Read cache (CACHEMODEL, LAST_ROW)
- TDengine docs: taosAdapter (REST, WebSocket, InfluxDB, OpenTSDB, Prometheus)
- TDengine docs: MQTT data subscription (from 3.4.3)
- TDengine docs: Telegraf
- TDengine docs: Kafka connector (source and sink)
- TDengine docs: Grafana plugin
- TDengine: TSDB-Enterprise features
- TDengine: IDMP
- TDengine All-in-One pricing (checked 2026-10-06)
- TDengine docs: Release history
- InfluxDB 3 Core docs: configuration options (query-file-limit)
- QuestDB: Enterprise (open source vs Enterprise)