携手 TDengine,释普科技升级实验室仪器、监控智能方案

小 T 导读:从试用到正式上线的一年多里,释普科技从 TDengine 2.0 版本一直关注到 2.4。目前,释普的三款产品“监控保”、“数据宝”、“仪器保”均与 TDengine 达成了合作,不仅机器投入成本实现了显著降低,查询、存储等性能也能满足业务发展需求。本文将分享释普科技应用 TDengine 的实践经验,供读者参考。

公司简介
释普信息科技(上海)有限公司(简称释普科技)始终以“引领实验室数智化服务”为己任,专注于实验室和公共卫生领域,利用 AloT、物联数智平台以及人工智能技术,帮助各行各业实验室实现安全合规、提效降本、数字化决策。公司成立于 2016 年,总部位于上海,研发中心位于杭州,并在全国多地设有分支机构,客户广泛分布于生物医药、检验监测、科研院所、政府机构、化学化工、园区及公共服务平台、食品化妆品等行业。

项目介绍
为了帮助实验室客户在数字化层面实现更精准有效的数字洞察,为客户提供更快速的数据分析、更高效的算力支持、更轻量便捷的查询服务,释普科技借力 TDengine,在实时数据存储、高效压缩和快速聚合查询方面取得了良好的效果。截止到 2021 年,共计 18000 个点位,80000+ 台设备,10000+ 的 SKU 化学品通过 iLabService 释普科技系列产品实现了智能化监管。
携手 TDengine,释普科技升级实验室仪器、监控智能方案_第1张图片

我们通过“释普·监控保”“释普·仪器保”“释普·库存保”“释普·样本保”“释普·数据宝” 5 大产品,为客户构建实验室数智化整体解决方案。现阶段综合客户使用场景以及业务规划,“释普·监控保”、“释普·数据宝”、“释普·仪器保”三款产品因为智能算法的实现需要携手 TDengine 数据库,未来将会有更多产品接入 TDengine。
携手 TDengine,释普科技升级实验室仪器、监控智能方案_第2张图片

作为一家迅速成长的创业企业,为了满足成长过程中客户体量不断增长的需求,为客户提供更高价值的服务,我们综合评估了 TDengine 单机、集群的功能,加之其针对物联网场景的特殊设计,可以在物联网场景下显著降低机器的投入成本,因此我们毫不犹豫地选择 TDengine 进行了测试。

注:本案例中的截图主要为我司自己的设备场景,用作产品实用展示。

一、实践与效果

该环境的 TDengine 数据库服务版本为 2.2.2.15 单机模式,备份用其他方式完成。机器配置为 8C + 16G + 500G 机械硬盘。我们按照设备的原始数据、操作状态、样本状态,离线状态四个维度创建了“超级表—子表”的数据模型。
携手 TDengine,释普科技升级实验室仪器、监控智能方案_第3张图片

图片“释普·仪器保”的主要功能是为客户提供设备台账管理、利用率监控、资产管理、工单管理、计划服务管理、共享预约、仪器设备盘点等仪器设备全生命周期管理。其底层逻辑是数据的采集和存储。我们通过智能网关对实验室的设备采集数据后,通过 mqtt 发送到 EMQ 或者阿里云平台(根据客户需求),然后再通过消息队列缓冲后,以 Java 的 RESTful 方式写入到 TDengine,然后再把数据用以监控(监控保)、展示(数据保) 。

该环境目前共有数百台设备的接入,总数据量大概为 3 亿行左右,占据存储空间粗略估算为672MB ,压缩率满足我们的预期。
携手 TDengine,释普科技升级实验室仪器、监控智能方案_第4张图片

携手 TDengine,释普科技升级实验室仪器、监控智能方案_第5张图片

“释普·数据保”的主要功能是帮助客户整合各类数据,个性化地展现数据统计分析,以数据价值赋能决策,为实验室提供更智能的决策建议,助力提升实验室管理。因此,TDengine 对“数据保”的帮助主要体现在通过 SQL 语句进行数据展示,常用的 SQL 大致如下:
携手 TDengine,释普科技升级实验室仪器、监控智能方案_第6张图片

select last_row(ts) ts, last_row(${item.measurement}) value from ilabservice.socket
select ts, min(${item.measurement}) value from ilabservice.socket
select ts, max(${item.measurement}) value from ilabservice.socket
select avg(${item.measurement}) value from ilabservice.socket

值得一提的是,在 2、3 这样的 SQL 语句中,TDengine 一开始是不支持的。当时的 SQL 不能实现 ts 和 max()/min() 函数同时返回结果,也就是说,一次查询只能得到最大值/最小值,但是不能同时取到最大值/最小值和对应的时间戳。

后来官方听到了用户声音后,对这个功能做了优化:在使用所有的选择函数(max/min/last/last_row这类选择出数据类型的函数)时,可以同时指定输出 ts 列,甚至还有其他标签列(包括 tbname),这样就可以方便地知道被选出的值是源于哪个设备、哪个时间了。从这一点上也可以看到,国产数据库本地服务无疑会更加贴近用户和市场,会真正通过聆听用户声音来改善产品。

目前,我们还在开发 TDengine 在“监控保”中的应用。预计五月中下旬,客户就能通过 TDengine 实时查询设备状态表的最新数据,将体验到安全级别更高、更快速流畅的仪器设备运行参数、设备能耗分析状态、环境视频监控、人员行为识别反馈、安防管理等一体化实验室安全监控数据,在数据合规性上将会更有保障。

二、写在最后

从试用到正式上线的一年多里,我们从 TDengine 2.0 版本一直关注到 2.4 ,从最初的对数据库基础架构进行学习、SQL功能的调试、集群的高可用测试、JNI 和 RESTful 的选择,再到连续查询、监控模块等高级功能的试用,这个过程中我们看到了 TDengine 整个团队都在努力地让产品稳定性、功能性等各个方面变得更好,这也更加增强了我们打造好自己项目的信心。
我们相信,站在数字化智能化的时代大潮下,优秀的企业和产品总会脱颖而出。


想了解更多 TDengine Database的具体细节,欢迎大家在GitHub上查看相关源代码。

你可能感兴趣的:(数据库tdengine)