TDengine时序数据库集成
引用文件
本文档引用的文件
- docs/test/tdengine.md
- sql/tdengine/app_runtime.sql
- sql/tdengine/app_runtime_archive.sql
- sql/tdengine/device_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-device/yudao-module-device-biz/src/main/java/cn/iocoder/yudao/module/device/dal/tdengine/deviceActivityDetail/BaseDeviceActivityMonthMapper.java
- yudao-module-device/yudao-module-device-biz/src/main/java/cn/iocoder/yudao/module/device/service/deviceActivityDetail/DeviceActivityDetailServiceImpl.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/dal/tdengine/AppKillRecordMapper.java
- yudao-module-task/yudao-module-task-biz/src/main/resources/appruntime/app_runtime_restore.py
- deploy/yml/prod/datasource.yaml
- yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java
- yudao-module-device/yudao-module-device-biz/src/main/java/cn/iocoder/yudao/module/device/job/config/RuntimeCountRefactorProperties.java
- yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/service/goview/GoViewTDEngineDataServiceImpl.java
目录
简介
本文件面向在本项目中集成TDengine时序数据库的技术人员,系统性阐述时序数据建模设计(时间戳、标签、数值字段组织)、SQL查询优化策略(时间窗口过滤、聚合函数、索引与分区)、数据导入导出机制(批量写入、增量同步、数据压缩与存储优化)、完整时序分析示例(趋势分析、峰值检测、异常识别、预测建模)以及性能调优与故障排查方法。文档以仓库中现有的TDengine建库建表SQL、Java集成代码、归档脚本与配置为依据,提供可落地的实施建议。
项目结构
本项目在模块化架构下对TDengine进行了多场景集成:
- 数据建模与库表:位于sql/tdengine目录,包含APP运行记录、设备运行时长、访问统计等超级表与数据库定义 。
- Java集成与DAO:位于各业务模块的dal/tdengine与service目录,封装MyBatis Mapper与批量写入逻辑。
- 归档与ETL:位于yudao-module-task/resources/appruntime目录,提供按天导出、压缩与批量有序重写的Python脚本。
- 配置与路由:位于deploy/yml/prod/datasource.yaml,定义多数据源(含TDengine Restful JDBC)。
- 查询与可视化:位于yudao-module-report模块,通过JDBC直连TDengine执行SQL并返回结果。
图表来源
- sql/tdengine/app_runtime.sql
- sql/tdengine/device_runtime.sql
- sql/tdengine/monitor.sql
- yudao-module-task/yudao-module-task-biz/src/main/resources/appruntime/app_runtime_restore.py
- deploy/yml/prod/datasource.yaml
章节来源
- sql/tdengine/app_runtime.sql
- sql/tdengine/device_runtime.sql
- sql/tdengine/monitor.sql
- deploy/yml/prod/datasource.yaml
核心组件
- TDengine库表与建模
- APP运行记录超级表:包含时间戳、主键、设备标识、CPU标识、数值字段(版本号、时长、打开次数、创建时间)与标签(包名、day)。
- 设备运行时长超级表:包含时间戳、主键、设备标识、CPU标识、结束时间、设备时长等字段与标签(record_time)。
- 访问统计超级表:包含时间戳、主键、URL、服务器IP、域名、访问/成功/失败计数、创建时间与标签(URL别名、month)。
- Java集成与批量写入
- Mapper接口与批量插入:通过BaseMapperX的insertBatch实现大批量写入,支持自定义批次大小。
- 设备活跃统计服务:按日/月/年维度聚合写入,支持Redis去重后批量导入。
- 黑名单APP杀死记录:通过专用数据源路由至TDengine,支持时间范围查询。
- 归档与ETL
- Shell导出:按day字段分天导出CSV并压缩。
- Python恢复:多线程并发、批量有序插入,重获时间有序性以激活列式压缩。
- 配置与路由
- 多数据源配置:包含TDengine REST/JDBC连接信息,按业务模块路由。
- 动态切换:支持统计库后缀切换与影子库热切。
章节来源
- sql/tdengine/app_runtime.sql
- sql/tdengine/device_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-device/yudao-module-device-biz/src/main/java/cn/iocoder/yudao/module/device/service/deviceActivityDetail/DeviceActivityDetailServiceImpl.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/dal/tdengine/AppKillRecordMapper.java
- yudao-module-task/yudao-module-task-biz/src/main/resources/appruntime/app_runtime_restore.py
- deploy/yml/prod/datasource.yaml
架构总览
TDengine在本项目中的使用贯穿“采集-接入-存储-归档-查询”全链路,强调时间有序写入与冷热分层策略,通过归档ETL将乱序热数据转化为有序历史数据,最大化压缩比与查询效率。
图表来源
- docs/test/tdengine.md
- yudao-module-task/yudao-module-task-biz/src/main/resources/appruntime/app_runtime_restore.py
章节来源
详细组件分析
1) 时序数据建模设计
- 时间戳字段
- APP运行记录:record_time(timestamp),作为超级表主键,确保时间有序写入。
- 设备运行时长:ts(timestamp),记录事件发生时间。
- 访问统计:ts(timestamp),按分钟粒度统计。
- 标签字段
- APP运行记录:package_name(包名)、day(日期整型)。
- 设备运行时长:record_time(整型日期)。
- 访问统计:url_alias(URL别名)、month(年月整型)。
- 数值字段
- APP运行记录:version_code、duration、open_time、create_time。
- 设备运行时长:device_duration。
- 访问统计:visit_count、sucess_count、fail_count。
图表来源
章节来源