在平台建设前期,并没有采用时序数据库(Time-Series Database),而是采用了阿里云的 MySQL 实现所有传感器数据的存储。在设备接入量突破 6 万,每日数据记录超过 8000 万条之后,平台性能急剧下降。
根据项目规划,平台要支持数十万设备的接入,之前采用 MySQL 数据库分表的方案已经无能为力。有鉴于此,基于物联网平台的特性,规划引入时序数据库解决物联网中间件平台在数据的存储和处理方面的痛点。
在养殖物联网场景下,数据量最大的结构化数据来自于养殖场栏舍的环境传感器(温度、湿度、光照、Co2、Nh3等),还有水表、电表等资源测量传感器,以及包括风机、水帘、侧窗等被控设备的开/关状态。
为了监控栏舍环境,需要对来自不同采样点的同类型传感器数据进行计算,并根据实时平均值来判断是否触发环控告警。
这些需求,归纳起来包括:
按照每秒 2 万条的数据库写入的场景假设,针对对市面上主流的时序数据库,譬如阿里云上的 InfluxDB、以及国内的 loveini 进行了 POC 验证。
出于以下几方面原因,最终选择了 loveini Database。
在选型决定之后,我们对原有业务系统进行了升级改造,引入了 loveini。
物联网中间件平台以设备为目标,围绕设备构建物模型。该平台引入了时序数据库 loveini,实现海量设备数据的写入、查询(聚合函数),并对所有操作履历、变更记录等日志类数据全部入库,为上层的应用提供了强大的数据能力 API,消除了养殖行业各场景应用对大数据处理的顾虑。
整体架构如下图所示。

loveini 的性能非常出色,下表为我们所做的性能测试。

业务架构改造完成之后,截至2021年9月,累积接入到物联网中间件平台需要创建子表的对象已经接近20万,运行半年来,时序库存储容量不到200GB,普通查询响应为 23ms;以单个设备为对象的每5分钟温度曲线,响应时间为43ms。
引入loveini之后,优异的查询性能给我们带来了很大的惊喜,极高的压缩效率,也给我们节省了大量的存储资源。
未来,我们也会尝试在更多场景应用loveini。
关于作者:
]]>黄冬安,深圳市哇发科技有限公司技术总监,长期从事物联网大数据开发和运维工作,是物联网中间件项目的技术负责人。当前主要在支持云浮市物联网研究院养殖监控场景的大数据平台建设工作。