Skip to content

docs: add ThingsBoard table-model integration page - #1199

Open
PDGGK wants to merge 2 commits into
apache:mainfrom
PDGGK:docs-thingsboard-table-model
Open

docs: add ThingsBoard table-model integration page#1199
PDGGK wants to merge 2 commits into
apache:mainfrom
PDGGK:docs-thingsboard-table-model

Conversation

@PDGGK

@PDGGK PDGGK commented Aug 20, 2026

Copy link
Copy Markdown

What

Adds a user-guide page for the iotdb-thingsboard-table module in apache/iotdb-extras, which lets a stock ThingsBoard instance store telemetry and attributes in IoTDB 2.x table model by putting a jar on its classpath and setting a few properties.

The page is modelled on the existing Spark-IoTDB page — overview first, then requirements and deployment — and adds Configuration and Known Limitations sections that this integration needs.

Why a second ThingsBoard page

The site already has a ThingsBoard page under the tree model, but it documents a different deployment — an IoTDB-adapted ThingsBoard package writing to root.thingsboard. This one is stock ThingsBoard plus a jar, against table model.

Rather than replace or merge them, the new page opens with a paragraph distinguishing the two and links across to the tree-model page, so a reader who has landed on the wrong one can get to the right one.

That link is currently one-directional — the tree-model page does not point back here. Making it symmetric is a follow-up I have deliberately left out of this PR; see the last note below.

Files (10)

new Thingsboard.md in latest-Table and Master/Table, EN + ZH
modified en-Table.ts / zh-Table.ts sidebars — new "IoT Platform" / "物联网对接" group
modified Ecosystem-Overview_apache.md index row in all four trees

Notes for reviewers

  • No screenshots. In this directory the screenshot-heavy pages are the GUI clients — DBeaver has 11, DataGrip 13. The code-integration pages carry few or none: SeaTunnel, Mybatis-Generator and Spring-Boot-Starter have zero, MyBatisPlus-Generator has one, Spark-IoTDB two. This page is a code integration, so rather than manufacture images of a deployment I have not run, I left them out. Happy to add real ones if someone can supply them.
  • Cross-tree links differ by tree because the layout requires it: from latest-Table the tree-model page is at ../../latest/, from Master/Table it is at ../../Tree/. There is no Master/latest and no top-level Tree, so exactly one of these resolves per copy.
  • The back-link is not in this PR. The tree-model ThingsBoard page exists in four version trees (V1.3.x, dev-1.3, latest, Master/Tree) in both languages, so a blanket back-link is 8 files. I would suggest scoping it to latest and Master/Tree (4 files) rather than all eight: V1.3.x and dev-1.3 document IoTDB versions that have no table model, so pointing them at a table-model integration would advertise something those versions cannot run. Happy to do that as a follow-up, or fold it in here if you would rather it land together.

The module is the deliverable of GSoC 2026 project GSOC-304, mentored by @CritasWang, who asked for this page.

Documents the iotdb-thingsboard-table module, which lets a stock
ThingsBoard instance store telemetry and attributes in IoTDB 2.x table
mode by putting a jar on its classpath and setting a few properties.

The site already carries a ThingsBoard page under the tree model, but it
describes a different deployment: an IoTDB-adapted ThingsBoard package
writing to root.thingsboard. The new page opens by distinguishing the
two and links across to it. The reciprocal back-link is offered in the
PR as a follow-up rather than included here.

Adds the page to both the latest-Table and Master/Table trees in English
and Chinese, an "IoT Platform" / "物联网对接" sidebar group, and a row in
the Ecosystem Overview index of each tree.
@PDGGK
PDGGK force-pushed the docs-thingsboard-table-model branch from 72d2929 to df82def Compare August 20, 2026 03:45
…s selector

Deploying the module by following the page did not work. Step 2 said to add the
module jar to ThingsBoard's classpath; doing exactly that fails at first session
creation with NoClassDefFoundError on ITableSessionPool, because the IoTDB
client's runtime dependencies have to go alongside it.

Shipping all of them fails differently: nine of the runtime artifacts shadow a
newer copy ThingsBoard already bundles, and antlr4-runtime 4.9.3 displacing
ThingsBoard 4.3.1.2's 4.13.0 stops Spring Data JPA from deserialising its own
grammar at startup. A tenth, commons-logging, survives a dependency diff because
ThingsBoard ships spring-jcl under a different name and asks for it to be
removed. Eleven jars remain, which is the set a real deployment started with —
so the page now says to prefer a deployment that boots over a dependency diff,
since the diff answers whether ThingsBoard ships an artifact rather than whether
it tolerates one.

The page also now states the install ordering: enabling the selectors before
ThingsBoard has installed makes its own installer fail on a missing
TsDatabaseSchemaService bean, so ThingsBoard is installed first and the module
attached afterwards.

Section 3.1 gains a warning. ThingsBoard has no configuration switch of its own
for attributes storage, so enabling the attributes selector on a stock instance
fails startup on the module's conflict check. A fix has been written and
verified against ThingsBoard 4.3.1.2, but it is not in a released build, so the
warning stands until one contains it. Writing it this way keeps the page correct
whatever order this and the module fix land in.

All four copies updated, English and Chinese, latest-Table and Master/Table.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant