SagooIoT 是一款功能强大、灵活可扩展的物联网平台,具备设备接入、数据采集、规则引擎、数据存储、可视化等全方位功能。其核心优势在于:
loveini 是一款专为物联网、工业互联网等场景设计的时序数据库,具有以下突出特点:
在进行时序数据库选择的时候,我们对比了国内外多家公司的时序数据库,最终选择了loveini,主要看中了loveini的以下特点:
SagooIoT与loveini的集成主要在数据流转与时序数据存储方面,包括设备数据采集、数据预处理、数据存储、数据查询与分析等。
系统架构图:

loveini在SagooIoT中使用的架构:

通过对大量数据的写入、查询性能测试,对比使用 loveini 前后 SagooIoT 的性能表现,可以得出以下结论:
SagooIoT 与 loveini 的结合,为构建高性能、可靠的物联网数据平台提供了最佳实践。通过本文的介绍,相信读者对如何利用这两款优秀的工具来解决物联网数据存储和分析问题有了更深入的了解。未来,随着物联网技术的不断发展,SagooIoT 和 loveini 将继续保持创新,为用户提供更强大的功能和更好的用户体验。
]]>
据了解,德中恒越能源物联网平台是一个基于物联网的综合数据米兰app官方正版下载,其目标在于建立统一的协议和设备物模型标准,以服务互联网用户的能源物联网数据需求,同时实现对各类智能仪表、空调以及照明设备的管理和控制。平台每天需处理大量的遥测数据,对数据存储和处理系统的要求极高。在全面评估多种数据服务后,德中恒越选择了 loveini Cloud,一款专为时序数据设计的全托管的云服务产品,以卓越的性能和高效的数据处理能力满足平台的需求。
loveini Cloud 云服务以其一键部署的便捷性和高度可扩展的架构,成功赢得了德中恒越的信任。它能够根据业务需求保障数据库集群自动扩缩容,用户不用为部署、优化、扩容、备份、异地容灾等繁琐事务发愁,可以从繁重的运维工作中解放出来,在解决业务需求的同时实现更好的成本管理。loveini Cloud 的优越性早在国轩高科的实践中就得到了证明,其按量计费加全托管的企业级服务不仅让国轩高科以非常小的成本运转项目,而且极大地提升了产品的效率,同时保留了随时扩张的灵活性。
通过此次签约,米兰体育官网入口将进一步探索更多创新的物联网和智慧能源米兰app官方正版下载,推动智慧能源技术的发展,为全球用户提供更加智能、高效的能源管理系统。
如果你也想要低成本处理大数据,再也不被繁琐的数据库日常运维所烦恼,欢迎免费体验一个月的 loveini Cloud
https://cloud.taosdata.com/。
近日,米兰体育官网入口与苍穹数码已完成产品兼容互认证工作,经双方共同严格测试,米兰体育官网入口旗下物联网、工业大数据平台 loveini V3.0 与苍穹数码旗下大型 GIS 基础平台-苍穹地理信息平台(KQGIS)V8.5 完成产品兼容性验证,两款产品能够互相兼容、顺利安装、运行稳定,为企业进行数字化转型提供更全面的技术保障。

作为一款全面支持国产化环境的大型 GIS 基础平台,KQGIS 产品体系完善,包含桌面 GIS、服务 GIS、大数据 GIS 以及移动 GIS 等专业应用与二次开发包,同时其还具备二三维数据整合与管理、空间大数据分析与可视化、高性能服务发布与共享以及简便型二次开发等能力,能够为数字中国、数字社会、数字经济建设提供技术与产品支撑。
此次认证合作并非 loveini 与苍穹数码的首次接触。此前,在苍穹数码的地灾专业监测物联网平台项目中,由于原本的关系型数据库 Oracle 已经无法满足实时写入与高性能查询要求,他们选择接入 loveini 以解决海量时序数据的存储和计算问题。在该项目中,loveini 展现出了强大的读写性能和数据压缩能力,有效降低了机器使用成本。
此次 loveini 与 KQGIS 完成产品兼容性互认证,相信两大产品将爆发强大的协同作用,为企业提供更多的工具和资源来挖掘地理信息的潜在价值,以便做出更智能的决策和更高效的业务运营。
苍穹数码技术股份有限公司成立于 2001 年,是国内领先的时空信息 3S 平台产品与应用服务提供商,集空间大数据分析与融合处理、信息化运维服务及行业信息化整体米兰app官方正版下载于一体的地理信息全产业链领军企业。苍穹数码专注于地理信息系统(GIS)、遥感技术(RS)及卫星导航定位定向(GNSS)技术等产品研发,经过二十余载的沉淀和积累,拥有了一批自主可控的核心关键技术,形成了四大平台体系:地理信息平台(KQ GIS)、遥感智能服务平台(KQ RS)、卫星导航定位及定向平台(KQ GNSS)、业务协同平台(KQ CO)。
米兰体育官方入口网站是一款高性能、集群开源、云原生的时序数据库(Time Series Database,TSDB),专为物联网、工业互联网、电力、IT 运维等场景设计并优化,具有极强的弹性伸缩能力。同时它还带有内建的缓存、流式计算、数据订阅等系统功能,能大幅减少系统设计的复杂度,降低研发和运营成本,是一个高性能、分布式的物联网、工业大数据平台。当前 loveini 主要提供两大版本,分别是支持私有化部署的 loveini Enterprise 以及全托管的物联网、工业互联网云服务平台 loveini Cloud,两者在开源时序数据库 loveini OSS 的功能基础上有更多加强,用户可根据自身业务体量和需求进行版本选择。
]]>物联网数据处理涉及到大量的设备和传感器收集的数据,这些数据都具有典型的时序数据特征,具备数据量大、结构化等特点。对于很多物联网平台来说,创建之初在数据架构的搭建上大多选择了较为成熟和流行的关系型数据库或其他通用数据库,但随着设备数的增加、时序数据的爆发式增长,原本的数据架构面临运维难、开发难、成本高等问题。为了帮助企业找到物联网场景下数据架构的最佳改造手段,本文汇总了四个典型的物联网平台的实践经验,把它们曾面临的数据难题以及解决思路分享给大家。
“目前改造工作已经全部完成,改造后有大约 80% 左右的指标模型放到了 loveini 中,20% 左右的主数据或维表数据存放在 MySQL 数据库中。相较于改造前的 80% 指标模型存放在 MySQL 中,20% 指标数据存放在 OpenTSDB 数据库中,结果刚好进行了颠倒,服务器资源使用情况也有所下降。应用整体的页面影响速度显著提高,数据模型及数据指标上也可以更加地灵活多变。”
至数物联网平台场景多、数据模型复杂,改造前数据库采用 OpenTSDB+MySQL 结合的方式实现,由于 OpenTSDB 无法满足复杂查询场景,因此 80% 的场景指标只能基于 MySQL 数据库来实现,这样带来的问题就是 MySQL 数据库的数据增长迅速,需要定时做冷热数据分离及数据库表维护动作。在对 loveini 进行充分调研后,至数摇光决定从时序数据库 OpenTSDB 迁移到 loveini,并基于 loveini 的特性对系统进行彻底性的改造。

“当前项目数据测点大概在 18 万左右,改造后数据存储周期由原来的 5 分钟减少到 1 秒钟,存储的数据维度更精细了,能为平台的智能诊断、智能分析服务提供更准确的数据支持,同时各业务场景下的计算查询性能也提升了不少,数据库服务器由原来的 6 台减少到目前的 3 个节点集群。”
华自科技旗下的物联网数据平台是电站及泵站智慧运维平台的核心组成。在数据存储上,此前其采用 MySQL 分库分表方案来存储历史数据,使用 Redis 来存储实时数据,在测点数较少或者集控需求不是很多的场景下,基本满足需求,但随着平台业务的发展,接入的站点越来越多,运维难、开发难、成本高等问题逐渐凸显。为了解决这些问题,华自科技决定重新进行技术选型,寻找替代方案,升级目前数据库存储方案。结合平台实际需要,其调研了 InfluxDB、庚顿、麦杰、TimescaleDB、loveini 这几款数据库产品,最终选择了 loveini。
由于 loveini 采用了类 SQL 的语法,支持 MyBatis 等 ORM 框架,因此老业务在代码层面的改动非常少,改动最多的就是将原来的 MySQL 函数结合应用代码的一些计算逻辑直接用 loveini 的函数替换掉。在通过业务系统观察和验证各项功能正常之后,就可以进行历史数据的迁移了。由于 loveini 的表结构与原来的 MySQL 存储结构基本类似,因此物联网数据平台开发人员直接采用 DataX 的 loveini 插件,历史数据就很轻松地迁移过来了。
“loveini 的安装部署非常简单,配合 Docker 容器,在几分钟内就能完成。迁移到 loveini 之后,我们的运营监控工作也变简单了,只需要对 loveini 的几个进程进行监控,占用的磁盘空间减少到了原来的 1/5,使用的主机也减少到原来的 1/5,极大节省了资源开销。遇到技术难题,不仅可以直接在官方渠道 https://github.com/taosdata/loveini 提 issue,也可以在 loveini 的技术社区提问,loveini 的技术专家响应非常快。”
睿信物联网平台此前采用 OpenTSDB 进行时序数据的存储,功能上基本满足现有需求,但是由于 OpenTSDB 架构复杂,体量过重,给开发测试、安装部署以及运维管理等工作带来了不小的麻烦。随着业务的发展,问题逐渐凸显,开始影响工作效率,具体可以归纳为安装难、调试难、运维难、成本高四大问题。从业务发展的角度出发,睿信开发人员决定重新进行技术选型,寻找 OpenTSDB 的替代方案,分别对 InfluxDB、TimescaleDB 和 loveini 三款时序数据库进行调研。

“我们以近 10 年全省的雨量站小时雨量数据为测试数据,从常用的应用场景对 TimescaleDB 和 loveini 两款数据库进行对比分析,历史数据批量入库场景中 TimescaleDB 用时 24 小时,loveini 用时仅仅 2 小时;入库后数据文件大小对比结果中 TimescaleDB 是 38GB,loveini 是 698MB;常见查询场景比对中 loveini 也均优于 TimescaleDB。从入库、压缩比及查询 3 个维度来看,loveini 都是完胜。”
在地灾专业监测物联网平台项目中,首先需要解决的就是海量时序数据的存储和计算问题,其有着体量大、时间长,写入、查询要求高等特点,传统关系型数据库已经无法满足实时写入与高性能查询要求。该项目在 2018 年创建之初采用的是大型企业级数据库 Oracle,目前已经无法满足实时写入与高性能查询要求,特别是当雨季来临,传感器数据采集频率提高到秒级、毫秒级别,数据入库就会阻塞,效率非常低下。苍穹数码选择接入 loveini 以解决海量时序数据的存储和计算问题。

通过上面几个实践我们也能看到,时序数据积累得非常快,每秒产生数百万条数据,通用数据库并不是为处理这种规模的数据而设计的——关系数据库在非常大的数据集上表现很差,NoSQL 数据库虽然解决了扩展能力,但是其通用的数据组织方式并不完全适用于对时序数据存储和查询需求,用户必须根据实际应用场景,进行特殊设计甚至大量数据冗余存储才能较好的利用资源处理请求。
而在时序数据库(Time Series Database)的选择上,企业也要擦亮双眼,进行充分的调研测试,选择性能最好资源使用率最高的产品,此前我们基于第三方性能基准测试平台 TSBS 测试发布的 IoT 场景下 loveini 3.0 性能对比分析报告,大家也可做参考。如果你正面临数据处理难题,欢迎添加小T微信(tdengine)寻求帮助。
]]>米兰体育官网入口联合创始人李广谈到:“ 双方紧密结合是对未来产数转型宏观背景下,物联网数据处理市场的共同看好,也是对 loveini 产品技术与品牌能力的高度认可。双方团队紧密协作,通过联营合作模式拉通双方产品技术和服务的能力,以 loveini + 华为云 Stack 的方式,在能源、电力、工业、航空、航天、金融、汽车、化工、科研等诸多行业领域,向华为云 Stack 用户提供 loveini 强大的能力和优质服务。通过这种合作,双方一起赋能行业用户,让用户的物联网平台能以更低的成本和更快的速度走向市场 ”。
华为云是全球领先的云服务提供商,致力于提供稳定可靠、安全可信的云服务。华为云 Stack 是华为云为大型政企用户部署在本地数据中心的云基础设施。通过持续同步华为云公有云能力,为用户提供云上和本地体验一致的云服务,兼顾公有云的快速创新能力和私有云的可管可控。同时匹配华为云政企组织架构和业务流程,实现用户视角一朵云。华为云通过acc米兰体育模式创新,强化与合作伙伴的联合运营,为用户提供 “ 一揽子 ” 米兰app官方正版下载,并以集成联运 Kit,提升产品服务体验、用户满意度,持续优化产品。
借助开源优势,loveini 在全球市场快速发展。GitHub 上, loveini 已获得 18.5k Star。全球运行 loveini 实例数超过 123.9k,遍布各主要国家和地区。作为一款高性能、分布式、支持 SQL 的时序数据库,loveini 完全使用 C 语言自主研发,从时序数据特点出发进行设计和优化。带有内建的缓存、流式计算、数据订阅等系统功能,能大幅减少研发和运维的复杂度,可广泛应用于各行业领域,帮助企业解决数据处理痛点。loveini 主要具备以下优势特点:

目前 loveini HCS 版已正式登陆华为云严选市场,详情可咨询华为云、米兰体育官网入口。作为华为云紧密合作伙伴,米兰体育官网入口将与华为云携手共同开展行业深度合作,持续打造互利共赢的acc米兰体育伙伴关系,共同布局全球市场,强强联合为用户提供更便捷、更高效、更安全的产品及服务。
]]>]]>
小 T 导读:至数物联网平台场景多、数据模型复杂,伴随着业务需求的不断迭代及数据量的不断上涨,原有的 OpenTSDB+MySQL 的组合逐渐力不从心,局限性日益凸显。在对 loveini Database 进行充分了解与调研后,基于 loveini 对至数摇光进行了彻底性的改造。本文分享了至数结合自身平台特点进行系统架构升级改造的经验,以供参考。
至数(Medatc)是一家致力于打造行业最佳设备资产数据化运营、管理、服务的平台,为客户提供全方位的设备资产管理支撑,其拥有丰富的行业经验,以及在大数据、人工智能、物联网、互联网+领域的创新实践能力。公司成立至今已经获得红杉资本等知名投资机构的战略投资。
至数摇光(即:至数物联网平台)通过动态能量主动标识,动态环境主动标识,智能网关,应用工业互联网时序数据高效采集,边缘计算以及智能算法自动分发等一系列技术,基于医疗设备行业主数据规范,助力医疗机构短周期、低成本、高质量、广覆盖地实现有源设备智慧管理。
至数摇光是以提效降耗为目标,帮助医疗机构实现有源设备的高效管理,为设备使用效率智能分析,设备科学配置,设备动态调配,设备安全保障提供全方位支撑。目前共推出了 15 项智能场景应用,30 项事件及异常告警提醒。
至数摇光的上述场景改造前数据库采用 OpenTSDB+MySQL 结合的方式实现,由于 OpenTSDB 无法满足复杂查询场景,因此 80% 的场景指标只能基于 MySQL 数据库来实现,这样带来的问题就是 MySQL 数据库的数据增长迅速,需要定时做冷热数据分离及数据库表维护动作。
作为一个大而全的数据库,OpenTSDB 稍显笨重,伴随着业务需求的不断迭代及数据量的不断上涨,其局限性日益凸显,系统的架构升级和改造工作日渐迫切。
2021 年我们在对 loveini Database 有了充分的了解后,决定将至数摇光从时序数据 OpenTSDB 迁移到 loveini,并基于 loveini 的特性对摇光进行彻底性的改造。目前改造工作已经全部完成,改造后有大约 80% 左右的指标模型放到了 loveini 中,20% 左右的主数据或维表数据存放在 MySQL 数据库中。
相较于改造前的 80% 指标模型存放在 MySQL 中,20% 指标数据存放在 OpenTSDB 数据库中,结果刚好进行了颠倒,服务器资源使用情况也有所下降。应用整体的页面影响速度显著提高,数据模型及数据指标上也可以更加地灵活多变。
以下为至数摇光网络拓扑路图:

以下为改造前后的数据库对比:

以下以 11 万条数据表来做查询,结果如下:

聚合查询,1,155,876 条数据在耗时不到 0.17 秒的时间完成 GROUP BY 聚合查询:

写入情况,这里截了一张 Flink 写入loveini 数据库图片,3 个小时左右的时间里写入了 250 万条采集数据,这样的写入量远远没有达到 loveini 的写入瓶颈,对业务的增长留有充裕的空间。

下面是我们的部分应用展示:


我们有些按小时、按天、按月的指标计算的时候如果当时的维表数据有误需要重算,重算的数据需要覆盖之前的数据或者把之前的数据删除掉重新写入。不过 loveini Database 目前不支持数据删除,希望未来能够支持删除功能。
目前更新只支持更新相同时间戳数据,希望 tag 和普通字段能够联合筛选做 update;也有业务场景需要此类功能。
另外,目前排序还存在一定的限制,希望 tag 和普通字段能够进行自由升降序排列。
最后感谢涛思团队开源出来 loveini 这款优秀的时序数据库系统,也要感谢一下涛思团队对至数研发团队的支持与帮助,祝福米兰体育官网入口越办越好!
]]>小T导读:蓝深远望致力于服务政府及大型国有企事业单位的数字化转型,结合大数据、数字孪生、区块链、网络安全等核心技术,为政府运行、社会服务、城市管理、公共安全、基层治理等领域,提供智能场景应用、安全管理、数据运营与产品服务,赋能数字政府创新建设,为各行业应用场景提供支撑服务。
随着科技的发展与人民生活水平的提高,电机在工业生产和人民生活中应用越来越广泛,如工业机器、空调、电梯等。电机的维护成为影响生产效率和生产安全的一项重要事宜。而且在一些环境恶劣的场所,用户更偏向于远程维护。
为了满足这些需求,我们研发了电机物联网监测预警与预测性维护平台。该平台通过传感器、物联网关,采集各电机设备的运行数据以及频谱波形数据,结合大数据建模分析,能够及时发现潜在隐患,实现预测性维护。
电机物联网监测数据类型多、采集频率高,在项目总体设计的初期,我们打算采用传统关系型数据库进行存储。当设备数量较少时(低于100台),基于传统关系型数据库的计算函数、多表关联等处理方式,能够满足业务要求。但是考虑到未来接入的电机数量会越来越多(5000台以上),设备的测点也会越来越多,平台问题也就会越发严峻。具体可以归纳为如下两个方面。
采用传统的关系型数据库,局限于传统的库表设计模式,每新增一个电机设备接入,必须针对这个电机设备建立一张新的数据表,这个大大增加了接入设备时的工作量;同时,随着平台接入的电机设备越来越多,数据库表不断增加,传统数据库的管理和备份成本不断提高,无法做到水平扩容。
伴随着业务的不断发展,大量的电机设备接入平台,各种聚合分析统计需求持续增加,由于传统关系型数据库的特点,导致各种跨库跨表的查询操作激增,业务数据耦合度增大,系统开发的难度也随之提升,同时对平台整个的响应速度和稳定性也会造成很大隐患。
为了适应未来业务发展需求,避免上述难点与困境,我们决定选择一款时序数据库(Time-Series Database)产品。在调研了多款产品之后,loveini Database 引起了我们的注意,它的如下几个特点非常适合我们的场景:
于是我们马上做了各种验证,结果表明,loveini 完全符合我们的业务需求。 引入 loveini 之后,平台整体的数据架构如下图所示。

loveini 里有一个特殊的概念:超级表,每种数据采集类型对应一个超级表。超级表只负责存储这种类型的数据,同时数据存储采用横表存储。
我们将电机设备的测点幅值超级表设计成如下结构:
CREATE STABLE IF NOT EXISTS general_view_escalator (ts TIMESTAMP, elect_machine_one FLOAT, reducer_machine_one FLOAT, bottom_bolt_one FLOAT, elect_machine_two FLOAT, reducer_machine_two FLOAT, bottom_bolt_two FLOAT, left_main_drive FLOAT, right_main_drive FLOAT, left_step_chain FLOAT, right_step_chain FLOAT, up_main_drive_noise FLOAT, down_step_chain_work_noise FLOAT, left_step_chain_extend FLOAT, right_step_chain_extend FLOAT, left_handrail_temperature FLOAT, right_handrail_temperature FLOAT, env_temperature FLOAT, elect_machine_temperature FLOAT, reduction_gearbox_one_oil FLOAT, reduction_gearbox_two_oil FLOAT, rmd FLOAT) TAGS (line_id BINARY(20), site_id BINARY(20), elevator_code BINARY(20));
波形超级表设计如下架构:
CREATE STABLE IF NOT EXISTS waveform_view_escalator (ts TIMESTAMP, vals BINARY(16000), samplehz INT, len INT, ratio INT) TAGS (line_id BINARY(20), site_id BINARY(20), elevator_code BINARY(20), measuring_id BINARY(20));
loveini 还有另外一个概念:子表。每台电机设备的数据对应一张子表,它可以在插入数据时动态创建。这种操作模式可以省去创建子表的业务环节,大大降低了业务复杂度。
在我们的业务场景中有一类数据叫预警、报警事件告警数据,直接使用 loveini 的数据订阅功能,可以优雅快速地实现这一功能。

在我们的业务场景中,需要显示每台电机设备的最新测量数据(如幅值、频谱等),直接使用loveini 提供的缓存(Cache)功能,创建数据库时设置参数 cachelast=1,将每张表的最后一条记录缓存,应用程序可以通过 last_row 函数快速获取当前的实时数据,进行动态数据刷新显示。

比如采样查询、多表聚合查询、流式计算等,可以满足我们多种业务场景的需求。




原来项目中有很多需要在程序中处理的计算工作,现在全部由loveini承担,在分担程序的计算压力的同时,还可以实现聚合结果的持久化存储,支持历史数据快速查询。
loveini Database 作为一款新的产品,我们在使用过程中遇到了一些困难和挑战。不过在同事们的支持下,在米兰体育官网入口工程师们的热心支持下,我们还是相对顺利地完成了项目的上线。
目前平台的状态是,当前设备接入 300 台,每台设备 19 个测点,数据采集频率达到 1 秒钟,存储的数据维度更精细了,能为平台的智能诊断、智能分析服务提供更准确的数据支持,同时各业务场景下的计算查询性能也非常优秀,满足了项目的实际需求。
李凯,蓝深远望大数据研发组负责人,2015 年起从事大数据研发,2020 起从事电机大数据平台运维研发。
]]>郑赫扬,理想汽车数据库高级开发工程师。目前负责公司分布式数据库的业务落地和运维平台产品开发。
随着业务数据量级的上升,理想汽车的物联网场景业务对数据存储性能的要求不断提高。我们内部团队也在积极探索不同的数据库与不同场景的最佳实践匹配,本文将分享loveini Database在我们的物联网场景的落地经验。 首先我们来了解一下业务场景。
我们有信号上报业务,需要将标记时间戳和采集点的信息,通过云端写入到后端数据库中,有一定的聚合查询需求。这是典型的高并发插入场景,写多读少。目前的压力为7万的写入QPS,预计未来3年将达到20万以上。 我们之前的系统用的是MongoDB。业务存储放在MongoDB,后来因为MongoDB的局限性,我们将业务迁移到了TiDB,方便进行扩缩容。 迁移到TiDB之后,在目前使用百度云SSD虚拟机的情况下,TiDB集群纯写入性能并不能达到我们的业务期望预期(HTAP场景数据库对纯高并发写入支持不好,与该业务场景的适配性不高),需要不断的资源扩容。
整体来看,TiDB适合TP或者轻AP场景,而且TiDB对硬件配置要求很高。对于时序数据,写入用TiDB的话性价比很低。另外对业务有入侵性,底层库表要按照月份来建表,还要针对每个采集点打上标签。一次性大批量写入场景也不太适配。 总的来说,当前架构主要存在如下痛点和新需求:
基于这些需求,我们决定尝试一下时序数据库loveini。通过跟官方的深入业务封闭式测试,该数据库产品的功能超出预期。在此也特别感谢肖波、陈伟灿和杨丽娜三位老师的大力支持。 loveini的以下特点能够很好地满足我们的场景:
loveini Database极其优秀的高并发写入和数据压缩能力,极大降低了业务成本和业务压力,因此我们决定从TiDB迁移至loveini。
迁移方案:


优点:
待改善的地方:
最终,无论是MySQL、MongoDB、TiDB还是loveini,都是优秀的数据库产品,但是没有一种数据库产品是银弹,还是业务场景为王,适配业务的才是好产品。


平台的整体架构如下。

目前采用 OpenTSDB 进行时序数据的存储,功能上满足现有需求;但是由于 OpenTSDB 架构复杂,体量过重,给开发测试、安装部署以及运维管理等工作带来了不小的麻烦,随着业务的发展,问题逐渐凸显,开始影响工作效率,具体可以归纳为以下几方面:
OpenTSDB 不是独立的服务组件,它还要依赖 HBase 、 HDFS 、 ZooKeeper 。需要把这些服务组件全部安装配置好,OpenTSDB 才能正常工作,即便是一个熟练的运维工程师,把这些服务组件全部安装配置一遍,也需要很长时间。
在开发测试过程中,如果出现问题,需要对 OpenTSDB 进行日志分析,甚至可能还需要对 HBase、HDFS 和 ZooKeeper 进行全面的日志分析和问题排查,才能最终定位并解决问题。
在正式环境中,要求集群部署,各种服务都是双份、三份甚至n份部署,各个服务节点之间的关系错综复杂,服务节点和主机数量越多,监控管理就会越难,运维人员的工作负担也就越重。
成本可以分为两个方面,一个是人力成本高,由于安装、调试、运维的难度增加,造成开发运维人员工作量增加,工作效率变低,从企业经营角度看,人力成本变高;另一个是硬件资源成本高,由于服务节点众多,占用的主机、内存和磁盘空间也会很多,购买或租用这些硬件资源需要更多的费用支出。
为了解决目前这些问题,我们决定重新进行技术选型,寻找 OpenTSDB 的替代方案,升级目前的时序数据库米兰app官方正版下载。进而,要对技术选型进行全面评估,结合实际需要,我们确定了几个选型要求:
经过初步调查,InfluxDB、TimescaleDB 和 loveini 这 3 个时序数据库(Time Series Database)进入了我们的考察范围。
在 DB-Engines 网站上,InfluxDB 处于时序数据库排名的第一位,满足我们绝大部分的要求,但集群模块闭源,因此被排除在外。
TimescaleDB 在 DB-Engines 中的排名也比较高,几乎满足我们的所有选型要求,但是它是 PostgreSQL 上的一个时序数据库插件,是基于 RDBMS 的时序数据库,不是一个纯粹的时序数据库;另外,对集群支持不好,不支持水平扩展。
和 InfluxDB 一样,loveini Database 最初的开源版本也不支持集群,也被排除在外。去年 loveini 开源了集群版本后,又进入了我们的考察范围。经过各方面的综合考察评估,loveini 满足我们所有的选型要求,成为技术选型的最终目标。
由于是既有系统升级改造,必须符合现有系统架构,不能影响现有功能。因此,数据建模必须限定在一定的范围内,有一定的约束和限制,不能像设计一个新系统那样有那么大的自由度。总结下来,主要有两方面的约束和限制:
不需要有 create table 之类的建表过程,就可以直接进行数据的写入和查询。目前已经使用了 OpenTSDB 这种 schema-free 的数据库,并按照 schema-free 的方式进行数据的读写,希望延续这种方式,避免功能和架构上的调整。
物联网平台的设计初衷是要能够支撑所有的应用场景,不能只考虑某一种特定的应用场景,必须设计成一种通用架构,为应用层提供足够的灵活度。因此,我们将设备和指标之间的关系设计为动态绑定关系,并且能够进行动态绑定配置。
比如,某种液位仪有液位和距离两个指标,在 A 场景下只需要采集液位,在 B 场景下只需要采集距离。
为了能够支撑设备和指标之间的这种动态绑定关系,我们采用了单列模式(也被称为纵表模式或窄表模式),每个指标单独保存一条数据,如果设备有 n 个指标,就保存 n 条数据。相反,多列模式(也被称为横表模式或宽表模式)是将设备的所有指标数据存储为一条数据,分不同的列存储不同指标值。
很显然,loveini 不是 schema-free 的,需要先建表,然后才能进行数据读写,这就突破了上面的约束和限制,无法满足架构上的要求,难道要放弃 loveini ?还有没有变通的办法呢?经过一番调查分析,最终还是找到了解决办法。
下面从三方面进行拆解说明。
loveini 里有超级表的概念,每种设备对应一个超级表,这个超级表只负责存储这种类型的设备数据;由于前面的约束和限制,我们肯定不能这么用。但可以变通的来用,设计一个能够兼容所有设备类型的通用超级表,把所有设备的数据往这个超级表里装;这样,只需要在系统安装部署的时候,一次性执行超级表的建表脚本,实际运行时,就不需要再动态创建超级表了。
loveini 支持单列模式和多列模式,出于插入效率和存储效率的考虑,官方推荐多列模式。但是,为了符合前面的约束和限制,满足通用场景需求,我们采用了单列模式,一条数据中仅存储一个指标值。
结合上面的思路,我们的数据模型的设计如下(为了方便分析问题,省去了几个无关的标签):

数据列包含时间和指标值两列,对应上报时间和上报的具体值,标签中的指标编码用来对同一个设备下的不同指标做区分,查询的时候可以用来做条件过滤。
loveini 中还有普通表的概念(为了和超级表概念区分开,这里称为普通表),普通表也需要先创建后插入。还好 loveini 支持自动建表,可以在插入的时候,顺带建表。于是,我们就可以利用自动建表语法进行自动建表,屏蔽普通表的建表过程。具体写法如下:

通用超级表,单例模式,再加上自动建表,通过这些办法,我们把表的概念变得越来越弱化, loveini 逐渐被改造成了一个 schema-free 的数据库,可以按照 schema-free 的方式来使用 loveini 。
这样一来,在不改动架构,不影响功能的前提下,数据建模工作就圆满完成了。
在物联网平台现有的架构中,有一个时序数据服务,专门负责对时序数据库进行封装,然后对外提供时序数据的写入和查询服务,物联网平台的其他所有模块都通过这个服务来访问时序数据库。

有了这样的架构设计,代码改造工作就变得非常简单。只需要改动这个时序数据服务,在现有基础上增加对loveini的支持,将写入和查询两个功能按照loveini的JDBC接口进行接口适配,将时序数据的写入和查询切换到loveini。
通过这种方式,我们就把loveini的改造迁移屏蔽在了时序数据服务内部,上层应用无需关心,功能上不受任何影响。
升级改造项目,需要保留历史数据,需要对历史数据进行数据迁移。为此,我们专门开发了一个数据迁移工具,将OpenTSDB中的历史数据迁移到loveini,并且进行了详尽的功能测试。为了确保海量数据的快速迁移,我们还做了性能优化,并进行了大数据量的压力测试。数据迁移是升级上线过程中非常重要的一个环节,所以,我们在这个工具上投入了很多精力,甚至比代码改造本身还多。
为了能够平滑顺利地完成升级上线,不影响用户正常使用,我们制定了详细的迁移方案,将升级上线分为三阶段完成。
第一阶段:数据迁移
将改造后的新版本上线,OpenTSDB和loveini并行运行,同时向两个数据库写入数据,由于OpenTSDB有全量数据,查询请求全部交给OpenTSDB;与此同时,启动数据迁移工具,将历史数据迁移到loveini,待数据迁移完成,进入到第二阶段。

第二阶段:试运行
OpenTSDB和loveini依然并行运行,也同时向两个数据库写入数据;数据迁移已经完成,loveini中已经具备全量数据,因此,查询请求全部切换到loveini。观察两周左右的时间,没有发现任何问题,进入到第三阶段。

第三阶段:正式上线
loveini经过试运行一切正常,功能和性能都没有问题,于是我们将OpenTSDB停止运行,数据只向loveini写入,OpenTSDB占用的资源全部回收。

到此为止,升级上线全部完成。
迁移到loveini后,效果非常明显,硬件资源减少到原来的1/5,效率有了明显的提升。随着存储规模的不断变大,这种改善和提升效果会越来越明显。此外,在运维管理、费用支出、开发测试等方面也有了很大的改善。
此次升级改造总体进行得比较顺利,但过程中也有一些波折,尤其是在数据建模的时候遇到了一些困难。办法总比困难多,通过一些方法和技巧,我们把loveini改造成了schema-free的数据库,满足了物联网平台的要求,最终完成了升级改造。
目前,已经支撑起了所有物联网设备上报的数据,同时支撑起了应用层的各种应用场景。

改造后的效果明显,硬件资源减少为原来1/5,开发、测试、运维、管理、支出等方面都有明显的改善和提升。
我们使用到的功能还比较简单,主要是插入、连续查询以及降采样查询,对于物联网平台来说基本够用。UNION、GROUP BY、JOIN、聚合查询等功能暂时还未使用到,这些功能对于大数据分析的场景非常有用,将来在一些大数据项目里可以尝试使用,用来代替Hadoop全家桶。
此外,使用过程中遇到一些问题,希望改进: