QuestDBProducer
概述
QuestDBProducer 是 ThingsGateway 中用于适配 QuestDB 时序数据库的插件,可以定时或基于变化存储变量数据到 QuestDB。QuestDB 是一款高性能的开源时序数据库,专为时间序列数据和事件数据设计,具有低延迟、高吞吐量和 SQL 兼容性等特点,非常适合物联网数据采集和监控系统。
核心功能
- 时序数据存储:将设备变量数据高效存储到 QuestDB 时序数据库
- 灵活的上传模式:支持定时上传、变化上传或两者同时生效
- 分组上传:支持按变量分组属性进行批量上传
- 动态脚本支持:通过自定义脚本实现数据处理和转换
- 数据缓存:支持内存队列和文件缓存,确保网络不稳定时数据不丢失
- 自动表结构管理:基于变量名称自动创建和管理表结构
应用场景
- 物联网数据采集:实时采集和存储传感器数据
- 工业监控系统:监控设备状态和生产数据
- 能源管理系统:记录能源消耗和使用模式
- 环境监测:跟踪环境参数变化
- 智能建筑:监控建筑物内的各种设备和系统
插件属性配置
配置界面
详细配置项
| 配置项 | 说明 | 默认值 | 建议值 |
|---|---|---|---|
| 链接字符串 | QuestDB 数据库连接字符串 | - | 如 "http://127.0.0.1:9000" 或 "tcp://127.0.0.1:9009" |
| 表名称 | 超级表名称,子表名称为 [超级表名称]_变量名称 | - | 如 "iot_data" |
| 分组上传 | 启用后,无论是定时还是变化模式,始终会上传变量分组属性为key分组的全部变量 | False | 批量数据场景建议启用 |
| 是否选择全部变量 | 是否选择全部变量,true时不需要单个变量添加业务属性 | False | 变量较多时建议启用 |
| 上传模式 | 数据上传模式:间隔/变化/变化和间隔同时生效 | 间隔 | 根据数据采集需求选择 |
| 定时上传间隔 | 间隔执行时间(秒) | 10 | 根据数据更新频率设置 |
| 严格入队模式 | 启用后,每次定时上传时,保证一组数据在同一时间点可见 | - | |
| 启用缓存 | 是否启用缓存 | False | 网络不稳定或数据量大时建议启用 |
| 缓存文件最大长度(mb) | 缓存文件最大长度 | 100 | 根据磁盘空间和数据量设置 |
| 上传每页条数 | 每一次上传的列表最大数量 | 1000 | 根据QuestDB性能和网络带宽调整 |
| 内存队列最大数量 | 内存队列的最大数量,超出或失败时转入文件缓存 | 10000 | 根据系统内存和数据量调整 |
| 历史库动态脚本 | 自定义数据处理脚本 | - | 编辑页面中,可通过检查按钮验证脚本 |
脚本与实体
详细格式说明请参考 文档。
最佳实践
QuestDB 配置
-
服务配置
- 确保 QuestDB 服务正常运行,可通过 http://localhost:9000 访问 Web 界面
- 配置适当的内存和磁盘资源,根据数据量调整
- 启用 WAL (Write-Ahead Log) 以提高数据可靠性
-
表结构设计
- 使用 TIMESTAMP 类型作为时间列,并设置为分区键
- 根据数据保留策略选择合适的分区方式(DAY、MONTH、YEAR)
- 为常用查询字段创建索引