跳到主要内容

SqlDBProducer

概述

SqlDBProducer 是 ThingsGateway 中用于适配关系型数据库的插件,可以定时或基于变化存储变量数据,也可以实时更新数据到实时表。该插件支持多种关系型数据库,为物联网设备数据提供持久化存储方案。

核心功能

  • 实时数据存储:将设备变量的实时数据更新到实时表
  • 历史数据存储:定时或基于变化将设备变量数据存储到历史表
  • 数据库类型支持:支持多种关系型数据库
  • 灵活的上传模式:支持定时上传、变化上传或两者同时生效
  • 数据缓存:支持内存队列和文件缓存,确保数据可靠性
  • 动态脚本:支持通过脚本自定义数据处理逻辑

应用场景

  • 工业监控系统:存储设备运行状态和参数,用于实时监控和历史分析
  • 能源管理系统:存储能耗数据,用于能耗分析和优化
  • 环境监测系统:存储环境参数数据,用于环境质量评估
  • 设备管理系统:存储设备维护记录和状态变更,用于设备生命周期管理

插件属性配置

配置界面

详细配置项

配置项说明默认值建议值
启用实时表开启实时更新数据功能False根据实际需求启用
启用历史表开启历史存储功能True建议开启,用于数据归档
实时表名称实时表名称-使用有意义的表名,如 realtime_data
历史表名称历史表名称-使用有意义的表名,如 history_data
数据库类型数据库类型-根据实际使用的数据库选择
链接字符串数据库连接字符串-参考下方数据库连接字符串示例
实时表定时上传间隔实时表定时上传间隔(秒)1根据数据更新频率设置
分组上传启用后,无论是定时还是变化模式,始终会上传变量分组属性为key分组的全部变量False批量数据场景建议启用
是否选择全部变量是否选择全部变量,true时不需要单个变量添加业务属性False变量较多时建议启用
上传模式数据上传模式:间隔/变化/变化和间隔同时生效间隔根据数据采集需求选择
定时上传间隔间隔执行时间(秒)10根据数据更新频率设置
严格入队模式启用后,每次定时上传时,保证一组数据在同一时间点可见-
启用缓存是否启用缓存False网络不稳定或数据量大时建议启用
缓存文件最大长度(mb)缓存文件最大长度100根据磁盘空间和数据量设置
上传每页条数每一次上传的列表最大数量1000根据数据库性能和网络带宽调整
内存队列最大数量内存队列的最大数量,超出或失败时转入文件缓存10000根据系统内存和数据量调整
历史库动态脚本历史库数据处理脚本-参考下方脚本示例
实时库动态脚本实时库数据处理脚本-参考下方脚本示例

脚本与实体

脚本接口

SqlDBProducer 支持通过动态脚本自定义数据处理逻辑,脚本接口与 TDengineDBProducer 相同。

详细格式说明请参考 文档

最佳实践

数据库优化

  1. 索引设计

    • 为历史表创建适当的索引,提高查询性能
    • 实时表建议创建设备名和变量名的唯一索引
  2. 分区表

    • 对于历史数据量较大的场景,建议使用分区表
    • 按时间范围进行分区,便于数据管理和查询
  3. 数据清理

    • 定期清理过期的历史数据
    • 考虑使用数据归档策略,将老数据移至归档表

性能优化

  1. 上传参数调整

    • 根据数据量和网络状况调整上传间隔
    • 合理设置内存队列大小和文件缓存大小
  2. 批量处理

    • 启用分组上传,减少数据库连接次数
    • 调整上传每页条数,平衡网络传输和数据库处理能力
  3. 脚本优化

    • 避免在脚本中执行耗时操作
    • 优化脚本逻辑,减少不必要的数据处理

可靠性保障

  1. 缓存配置
    • 启用缓存功能,确保网络不稳定时数据不丢失
    • 合理设置缓存文件大小,避免磁盘空间不足

故障排查

常见问题及解决方案

问题可能原因解决方案
数据未写入数据库1. 数据库连接失败
2. SQL语句错误
3. 权限不足
1. 检查连接字符串和网络连接
2. 查看日志中的SQL错误信息
3. 确认数据库用户权限
数据写入速度慢1. 数据库性能不足
2. 上传频率过高
3. 数据量过大
1. 优化数据库性能
2. 调整上传间隔
3. 增加数据库资源或使用分区表
缓存文件过大1. 数据库连接持续失败
2. 缓存大小设置不合理
1. 解决数据库连接问题
2. 调整缓存文件最大长度
脚本执行失败1. 脚本语法错误
2. 脚本逻辑错误
1. 检查脚本语法
2. 查看日志中的错误信息

日志分析

当遇到问题时,建议查看 ThingsGateway 的日志文件,特别是与 SqlDBProducer 相关的日志。日志中通常会包含详细的错误信息,帮助定位问题。

总结

SqlDBProducer 是 ThingsGateway 中功能强大的关系型数据库存储插件,通过合理配置和优化,可以为物联网系统提供可靠、高效的数据存储方案。在实际应用中,应根据具体场景和需求,选择合适的配置参数和优化策略,以达到最佳的性能和可靠性。