Open-source project
taosdata/TDengine avatar
taosdata/TDengine

TDengine: a C time-series database for industrial IoT, not a general TSDB

High-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios

25,169 stars5,017 forksCAGPL-3.0

At a glance

What is it?
TDengine targets sensor fleets and connected cars with columnar storage, super tables and in-database stream processing, and the repository is built with CMake and Conan. The README documents a contributor build path, not a user install.
Who is it for?
TDengine fits sensor-shaped problems: many devices, one repeating schema, time-ordered writes and queries that aggregate over windows. It is a weaker choice for general relational work, for text search, or for anything where you need a broad query surface beyond its own dialect.
Can I use it commercially?
Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly C, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 21, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • taosdata/TDengine25,169 ★ · +15
Star history
Repository2026-10-082026-10-21
taosdata/TDengine25.2k25.2k

15 Stars in the last 13 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

What the high-cardinality claim actually commits the project to

The opening of the README states the problem plainly: real-time ingestion, processing and analysis of terabyte and even petabyte scale data per day, generated by billions of sensors and data collectors. The listed advantages then narrow in on one specific technical bet, which is high cardinality. The project claims to be the only time-series database to solve the high-cardinality issue while still holding ingestion, query and compression performance.

That claim is the architecture in one sentence. Most time-series stores fall over when the number of distinct series grows into the billions, because per-series metadata overhead dominates. A design that genuinely handles that regime is not interchangeable with a store that assumes thousands of series, and it is worth treating the difference as the reason to pick this project over a general-purpose option.

The second advantage listed is architectural rather than a benchmark: built-in caching, stream processing, data subscription and AI agent features. Stream processing inside the database is the decision with the longest reach, because it means windowed aggregation happens where the data lands rather than in a separate stream processor. The README also names super tables, partitioning data by time interval, pre-computation and compute-storage separation as the pieces that make analytics cheap.

Read the advantage list with some scepticism. Phrases like simplified solution and ease of use are the vendor's own framing, and the links behind each bullet go to tdengine.com rather than to documentation you can evaluate. The technical claims are specific enough to be testable, which is the better filter.

Super tables, tags and the data model behind the IoT focus

Two release entries make the data model concrete. The 3.4.0.9 notes add support for table name templates using expressions, batch modification of child table tag values, and virtual table import and export through `taosdump`. The 3.4.1.6 notes add behaviour in taos-explorer where, when a supertable data column is moved to the tag column, the default empty tag column is removed automatically.

Those two sentences describe the model better than a marketing paragraph could. A super table defines a schema once; each device or asset gets a child table that inherits it; tags are the per-child metadata, things like a serial number or a site name, and columns are the measurements that change over time. Data is written to child tables and queried across them through the parent. The consequence is a schema model that maps directly onto a fleet of similar machines, and a poor fit when your entities do not share a shape.

The optimization described in 3.4.0.9 is worth noting for capacity planning: the notes say the impact of frequent child table tag modifications on data writing is optimized for when child tables of a super table have subscriptions. That is a specific acknowledgement that tag writes and subscriptions interact, which is the sort of detail you only learn from a system that has been in production long enough to be surprised.

Virtual tables are the other addition worth understanding. Support for importing and exporting virtual tables, plus improved performance of virtual table queries on the `tbname` column, suggests virtual tables are becoming a first-class way to present data rather than an internal detail.

A contributor build path, not a user install guide

The README is explicit that its quick guide is for developers who want to contribute, build, release and test TDengine themselves. It offers four paths and hands every one of them to the documentation site: install via container, installation package, Kubernetes, or use the fully managed TDengine Cloud without installing anything.

What the repository gives a builder is a C codebase with a CMake build system, a Conan dependency manager and build entry points at the root:

bash
./build.sh

The tree also has `build.bat` for Windows, `CMakeLists.txt` at the root, a `conanfile.py` alongside a `conan/` directory for dependency resolution, and a `deps/` directory. `contrib/` holds packaging scripts, `packaging/` holds distribution artefacts, and `utils/` holds helper tooling. `test/` is the test tree and `tools/` holds the component tooling, including the TDgpt agent that the README describes separately with its own README under `tools/tdgpt/`.

So the split is: the repository is the buildable source of a database written in C, and the user-facing instructions live at docs.tdengine.com. That is a reasonable division, but it means the README gives you no package names, no version numbers and no configuration keys. If you are evaluating this project, the documentation site and the release artefacts are where the operational detail lives.

What the recent releases reveal about where the product is heading

Three releases between March and April 2026 give a clear picture. ver-3.4.0.9 on 2026-03-02 adds token support for subscription in `taosAdapter`, taosdump support for virtual tables, table name template expressions and a large batch of Explorer UI work. ver-3.4.1.0 on 2026-04-01 is the substantial one: an MCP server for TDengine TSDB, external window queries where a subquery explicitly specifies a time range, uncorrelated scalar subqueries, the ANY, SOME, ALL, EXISTS and NOT EXISTS operators, batch modification of child table tag values, and stream scheduling by natural week, month, quarter and year dimensions.

An MCP server for the database is the headline item, and it connects to a shift visible in the related queries people type about this project: TDengine versus InfluxDB, TDengine versus TimescaleDB, TDengine Client, TDengine Cloud, TDengine install, and what TDengine IDMP is. A database competing for both human SQL clients and agent-driven access is a different posture from the one it had a few years ago.

The SQL additions are the quiet story. External window queries for cross-event correlation, window reuse and hierarchical filtering, plus uncorrelated scalar subqueries and the ANY and EXISTS families, move the dialect closer to what a general SQL engine would accept. Someone porting analytical SQL will hit fewer walls. ver-3.4.1.6 on 2026-04-30 continues with cross-origin security hardening in Explorer, an XNODE management page, taos-ws-py SQLAlchemy compatibility improvements and taosX task and connection import and export. The last push to the repository was 2026-09-17.

AGPL-3.0, an active component ecosystem, and the wrong-tool cases

The licence is AGPL-3.0, and the README says the core modules including the cluster feature and the AI agent are available under open source licences. That framing matters in one specific way: if you modify TDengine and offer it to users over a network, the AGPL's network clause is the part that requires reading by a lawyer rather than by an engineer. Nothing here is legal advice, but the practical trigger is a modified server offered to third parties, and that is worth settling before the code rather than after.

Where TDengine is the wrong tool is more concrete than where it is right. It is a TSDB, not a relational database, so joins across large tables with varied shapes are not the use case the design serves. There is no text search story in the README. There is no multi-document model, and nothing suggests a queue or a stream of unstructured events. If your data is logs with free text, or documents, or an inventory that changes shape per row, a relational database or a document store is the shorter path.

The competition framing also deserves a hard look. The project's own comparison pages are written by the project. InfluxDB and TimescaleDB are the two names people actually search for alongside TDengine, and they differ in kind rather than in benchmark score: InfluxDB's line and Flux or SQL modelling differs from a super table model built for columnar compression across billions of similar series, and TimescaleDB is a PostgreSQL extension, which means it inherits PostgreSQL's SQL surface and its operational model instead of shipping its own storage engine. Which of those is right depends on whether your series are uniform, not on which engine has the higher ingest number.

Editorial conclusion

TDengine fits sensor-shaped problems: many devices, one repeating schema, time-ordered writes and queries that aggregate over windows. It is a weaker choice for general relational work, for text search, or for anything where you need a broad query surface beyond its own dialect. Before installing anything, read the deployment pages at docs.tdengine.com rather than the README, because the README explicitly targets contributors who build, test and package from source. Two things to verify first: whether AGPL-3.0 suits your distribution, and whether your series count and retention match the high-cardinality design the project claims. For a first look, the fastest route is TDengine Cloud, which the README names as the easiest way to experience the product.

Frequently asked questions

Is TDengine a general-purpose database?

No. TDengine is a time-series database aimed at IoT, connected cars and industrial fleets, where many entities share one schema. It is a poor fit for text search, unstructured documents or data whose shape changes row to row.

How do I install TDengine?

The README routes installation to four documented paths at docs.tdengine.com: container, installation package, Kubernetes, or the fully managed TDengine Cloud with nothing to install. Its own quick guide is for contributors building from source with the CMake and Conan setup in the repository.

What is a super table in TDengine?

It is the parent that defines a schema once so many child tables can inherit it, with per-child tags as metadata and columns as the changing measurements. Recent releases added batch tag modification and Explorer changes around moving a supertable column into the tag column, so the model is still being refined.

Can an AI agent connect to TDengine?

ver-3.4.1.0 added an MCP server for TDengine TSDB, alongside a built-in AI agent called TDgpt that connects to time-series foundation models, large language models and machine learning for forecasting, anomaly detection, imputation and classification. TDgpt has its own README under `tools/tdgpt/`.

What license does TDengine use?

AGPL-3.0. The README states the core modules, including the cluster feature and the AI agent, are available under open source licenses, so the network clause of the AGPL is the part worth reviewing if you run a modified server for other people.

Official sources

  1. License: AGPL-3.0
  2. Project website
  3. README
  4. Releases
  5. taosdata/TDengine on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/taosdata-tdengine.svg)](https://hysenlabs.com/projects/taosdata-tdengine)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/taosdata-tdengine.svg)](https://hysenlabs.com/projects/taosdata-tdengine)

Was this useful?