TDengine时序数据库
引用文件
本文档引用的文件
- docs/test/tdengine.md
- sql/tdengine/monitor.sql
- sql/tdengine/device_runtime.sql
- sql/tdengine/app_runtime.sql
- sql/tdengine/monitor_analysis.sql
- sql/tdengine/device_activity_detail.sql
- yudao-module-device/yudao-module-device-biz/src/main/java/cn/iocoder/yudao/module/device/dal/tdengine/deviceActivityDetail/BaseDeviceActivityMapper.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/dal/tdengine/AppKillRecordMapper.java
- yudao-module-device/yudao-module-device-biz/src/main/java/cn/iocoder/yudao/module/device/job/config/RuntimeCountRefactorProperties.java
- deploy/yml/prod/datasource.yaml
- deploy/yml/prod/application-common.yaml
目录
简介
本专项文档聚焦 yudao-cloud 项目中 TDengine 时序数据库的应用实践,围绕设备监控、日志存储、性能指标统计三大场景,系统阐述时序数据建模策略、超级表设计原则、数据分区与时间范围优化、SQL 查询语法与聚合分析、数据导入导出与归档、集群部署与运维调优,并解释与 MySQL 的数据同步机制与一致性保障方案。
项目结构
TDengine 相关内容分布在以下位置:
- SQL 定义与分析脚本:sql/tdengine/
- 文档与测试实践:docs/test/tdengine.md
- 应用侧 Mapper 接口:yudao-module-device、yudao-module-blacklist 模块
- 配置文件:deploy/yml/prod/datasource.yaml、application-common.yaml
图表来源
- sql/tdengine/monitor.sql
- sql/tdengine/device_runtime.sql
- sql/tdengine/app_runtime.sql
- sql/tdengine/monitor_analysis.sql
- sql/tdengine/device_activity_detail.sql
- yudao-module-device/yudao-module-device-biz/src/main/java/cn/iocoder/yudao/module/device/dal/tdengine/deviceActivityDetail/BaseDeviceActivityMapper.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/dal/tdengine/AppKillRecordMapper.java
- yudao-module-device/yudao-module-device-biz/src/main/java/cn/iocoder/yudao/module/device/job/config/RuntimeCountRefactorProperties.java
- deploy/yml/prod/datasource.yaml
- deploy/yml/prod/application-common.yaml
章节来源
- sql/tdengine/monitor.sql
- sql/tdengine/device_runtime.sql
- sql/tdengine/app_runtime.sql
- sql/tdengine/monitor_analysis.sql
- sql/tdengine/device_activity_detail.sql
- yudao-module-device/yudao-module-device-biz/src/main/java/cn/iocoder/yudao/module/device/dal/tdengine/deviceActivityDetail/BaseDeviceActivityMapper.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/dal/tdengine/AppKillRecordMapper.java
- yudao-module-device/yudao-module-device-biz/src/main/java/cn/iocoder/yudao/module/device/job/config/RuntimeCountRefactorProperties.java
- deploy/yml/prod/datasource.yaml
- deploy/yml/prod/application-common.yaml
核心组件
- 设备活跃明细与运行时长统计:通过多库(日/月/年)与超级表(device_runtime_count、device_activity_detail)实现时间维度分区与标签化组织,支持按 record_time、data_key 等字段进行高效查询与聚合。
- APP 运行记录与 API 访问监控:APP 运行记录采用高保留周期与高压缩参数的数据库配置,监控表按分钟粒度统计接口访问量、成功率与失败率,便于趋势分析与告警。
- 黑名单杀死回调:通过独立 TDengine 数据源接入,基于 Kafka 消费后写入 TDengine,实现事件型数据的时序化存储与查询。
- 应用侧 Mapper 接口:提供分页查询、批量插入、按时间区间与标签过滤等能力,支撑前端统计与报表展示。
- 配置与运维:通过 datasource.yaml 定义多数据源(含 TDengine Restful JDBC),application-common.yaml 提供 Kafka、XXL-Job 等调度与消息队列配置,支撑数据采集、清洗与归档。
章节来源
- sql/tdengine/device_runtime.sql
- sql/tdengine/device_activity_detail.sql
- sql/tdengine/app_runtime.sql
- sql/tdengine/monitor.sql
- yudao-module-device/yudao-module-device-biz/src/main/java/cn/iocoder/yudao/module/device/dal/tdengine/deviceActivityDetail/BaseDeviceActivityMapper.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/dal/tdengine/AppKillRecordMapper.java
- deploy/yml/prod/datasource.yaml
- deploy/yml/prod/application-common.yaml
架构概览
TDengine 在 yudao-cloud 中承担时序数据的采集、存储与分析职责,典型数据流包括:
- 设备/APP 事件通过 Kafka/HTTP 上报至业务服务,经应用层写入 TDengine 热表;
- 通过 XXL-Job 定时任务执行数据归档:从热表导出、压缩、有序重写入归档库;
- 前端/报表通过 MyBatis 查询 TDengine 超级表,结合聚合分析 SQL 进行可视化展示。
图表来源
章节来源
详细组件分析
设备活跃与运行时长统计
- 数据库与超级表设计
- device_runtime_count_day/month/year:按日/月/年分区,保留周期分别为 90/395/2190 天,配合高压缩参数与合适的 MINROWS/MAXROWS,平衡写入吞吐与查询性能。
- device_activity_detail:按 record_time 标签区分不同时间粒度,支持按 MAC/CPU 等维度聚合。
- 查询与聚合
- 支持按时间范围、标签过滤的分组聚合,如按分钟/小时/天统计设备活跃度、CPU 使用情况。
- Mapper 接口提供分页查询、批量插入、按 record_time 列表筛选等能力,满足报表与前端展示需求。
图表来源
- sql/tdengine/device_runtime.sql
- sql/tdengine/device_activity_detail.sql
- yudao-module-device/yudao-module-device-biz/src/main/java/cn/iocoder/yudao/module/device/dal/tdengine/deviceActivityDetail/BaseDeviceActivityMapper.java
章节来源
- sql/tdengine/device_runtime.sql
- sql/tdengine/device_activity_detail.sql
- yudao-module-device/yudao-module-device-biz/src/main/java/cn/iocoder/yudao/module/device/dal/tdengine/deviceActivityDetail/BaseDeviceActivityMapper.java
APP 运行记录与 API 访问监控
- APP 运行记录
- 使用高保留周期与压缩参数的数据库配置,超级表包含 MAC、CPU、版本号、持续时间等字段,标签按 package_name/day 维度组织,便于按应用维度统计与趋势分析。
- API 访问监控
- monitor.visit_minute 超级表按分钟统计接口访问量、成功/失败次数,支持按服务器 IP、域名别名等维度聚合,满足访问趋势与异常告警需求。
图表来源
章节来源
黑名单杀死回调
- 数据源与写入
- 通过独立 TDengine 数据源(td_blacklisted_kill_callback)接入,Mapper 接口支持按时间范围、MAC、CPU 等条件过滤,满足事件回溯与审计需求。
- 与 Kafka 集成
- application-common.yaml 中定义了黑名单相关主题,结合业务模块的消费者实现事件驱动写入。
图表来源
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/dal/tdengine/AppKillRecordMapper.java
- deploy/yml/prod/application-common.yaml
章节来源
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/dal/tdengine/AppKillRecordMapper.java
- deploy/yml/prod/application-common.yaml
数据归档与存储优化
- 归档策略
- 采用“热数据乱序写入 → 定期 ETL 清洗 → 归档数据有序重写”的方案,通过 XXL-Job 调度,按天导出 CSV、压缩、多线程批量有序写入归档库,显著降低存储成本与提升压 缩比。
- 有序写入的重要性
- 文档明确指出:在相同数据量级下,有序写入的磁盘占用约为乱序写入的 1/7;乱序写入会破坏列式压缩与时间索引优势,导致压缩比从约 5% 恶化到 30%+。
图表来源
章节来源