How apache/iotdb works
IoTDB is a time-series database for collecting, storing, and analyzing industrial IoT data. A representative user workflow is sending data through a client or ingestion interface, querying it through an API, and receiving formatted results. The tree also exposes MQTT ingestion, Grafana-facing REST modules, plugin APIs, and AI inference/model management. Sampled internals support query execution tracking, file-read references, spilling, and temporary query files. Many product capabilities are documented, but their wiring is not established by the supplied excerpts; omitted connections should not be read as absent.
Main entry points: RestApiServiceImpl.java REST API · MPPPublishHandler.java MQTT Publisher · inference_manager.py Inference Manager · MQTTService.java MQTT Service
Components 18
Client Interfaces
- REST API
external-service-impl/rest/src/main/java/org/apache/iotdb/rest/protocol/v2/impl/RestApiServiceImpl.java - Query Results
external-service-impl/rest/src/main/java/org/apache/iotdb/rest/protocol/v2/handler/QueryDataSetHandler.java - Grafana API
external-service-impl/rest/src/main/java/org/apache/iotdb/rest/protocol/v2/impl/GrafanaApiServiceImpl.java - MQTT Service
external-service-impl/mqtt/src/main/java/org/apache/iotdb/mqtt/MQTTService.java - MQTT Publisher
external-service-impl/mqtt/src/main/java/org/apache/iotdb/mqtt/MPPPublishHandler.java - Payload Formatting
external-service-impl/mqtt/src/main/java/org/apache/iotdb/mqtt/PayloadFormatManager.java
Query Runtime
- Fragment Execution
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceManager.java - Query File Tracking
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/control/QueryFileManager.java - Device Spill
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/spill/DeviceEntrySpillManager.java - Temporary Query Files
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/TemporaryQueryDataFileService.java
Extensions
- Pipe Plugin API
iotdb-api/pipe-api/src/main/java/org/apache/iotdb/pipe/api/PipePlugin.java - Trigger API
iotdb-api/trigger-api/src/main/java/org/apache/iotdb/trigger/api/Trigger.java - Function APIs
iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/UDF.java
AI Inference
- Inference Manager
iotdb-core/ainode/iotdb/ainode/core/manager/inference_manager.py - Model Storage
iotdb-core/ainode/iotdb/ainode/core/model/model_storage.py
Other components
- Database Client
- Inference Client
- Query Request
Connections 11
- Database Client → REST API: sends requests
- REST API → Query Results: serves query results
- Database Client → Grafana API: queries
- MQTT Service → MQTT Publisher: handles publishing
- MQTT Publisher → Payload Formatting: formats payloads
- Query Request → Fragment Execution: dispatches fragments
- Query Request → Query File Tracking: tracks file reads
- Query Request → Device Spill: reads spill data
- Query Request → Temporary Query Files: uses temporary files
- Inference Client → Inference Manager: requests inference
- Inference Manager → Model Storage: loads model info