时序数据库 IoTDB 替代 MySQL,有效提升写入、查询、处理效能,降低存储成本,实现多终端、多业务板块智慧城市解决方案。
1. 业务场景介绍
1.1 公司简介
四川北斗智慧物联科技有限公司(以下简称北斗智慧物联)专注于北斗定位、物联网、大数据、5G 等技术的融合应用,致力于提升智慧城市的数据价值。为政府和企业用户提供导航定位、高精度差分定位和基于位置的增值信息服务等一体化系统解决方案。其业务涵盖智慧城市、智能交通、智慧旅游、公共安全、应急指挥通信及农林业应用等领域。
1.2 业务全景及 IoTDB 使用介绍
北斗智慧物联综合应用 5G、云计算、物联网、大数据等技术,提供多场景、多领域的智慧城市解决方案,其中包含 5 个应用平台:智慧环卫平台、智慧园林管理系统、智慧市政管理、垃圾分类智慧监管平台、公务用车管理平台。
物联网时序数据库 IoTDB 是北斗智慧物联在多个业务方向上使用的关键技术之一,上述 5 个应用平台均使用 IoTDB 进行时序数据管理。
各平台介绍及 IoTDB 使用情况如下:
智慧环卫平台:通过实时监控和智慧管理,优化垃圾转运和处理流程,提升环卫工作的效率和效果。平台利用物联网技术监测环卫车辆和垃圾桶的状态,实现垃圾收集、转运、处理的全链条智能化管理。IoTDB 用于存储和处理环卫车辆的位置、状态、作业数据等时序数据。通过 IoTDB 的高效写入和快速查询功能,确保数据的实时性和准确性,支持实时监控和调度优化,有助于提升环卫工作的效率和效果。
智慧园林管理系统:利用物联网技术监测园林状况,包括土壤湿度、植物生长状况等,实现园林养护的科学化和精细化管理。系统通过数据分析,为园林管理者提供科学的养护建议,提高园林养护效率。IoTDB 用于存储来自园林传感器的数据,如土壤湿度、植物生长状况等。通过 IoTDB 的高压缩比和灵活查询功能,实现园林养护的数据分析和决策支持,有助于实现园林养护的科学化和精细化管理。
智慧市政管理:整合车辆定位、人员定位、内涝监测等数据,实现市政设施的智能化管理。系统通过实时监测和分析市政设施的运行状态,为市政管理者提供决策支持,提高市政设施的管理水平。IoTDB 用于整合市政设施的运行数据,如路灯、井盖、垃圾桶的状态信息等。IoTDB 的开放性和可扩展性使其方便与其他系统集成,满足未来业务扩展需求,有助于实现市政设施的智能化管理和维护。
垃圾分类智慧监管平台:借助互联网 + 的解决方案,有效解决垃圾分类实施过程中的各类难题。平台通过数据分析,为垃圾分类管理者提供监管和优化建议,提高垃圾分类的准确率和效率。IoTDB 用于处理垃圾分类过程中产生的数据,如分类准确率、垃圾量等。通过 IoTDB 的高效数据处理功能,确保垃圾分类的实时监控和管理,有助于优化垃圾分类流程,提高分类准确率。
公务用车管理平台:基于流程化管理的公务车智慧解决方案。平台通过实时监测公务车的使用情况,为管理者提供车辆调度和费用控制的建议,提高公务车的使用效率。IoTDB 用于存储和处理车辆的实时位置、行驶轨迹、状态信息等高频时序数据。IoTDB 的高效数据写入和快速查询能力,能够保障数据实时性和准确性,提升车辆调度和管理效率,降低运营成本。
2. 业务需求痛点
2.1 时序数据管理难点
(1)设备与测点数量庞大
在智慧城市的各个应用场景中,需要管理的设备数量众多。例如,在车辆管理方面,一个大型城市可能拥有数以万计的运营车辆;在市政管理中,路灯、井盖、垃圾桶等设施数量可能达数千个。而且每个设备往往包含多个测点,如车辆上的多个传感器、市政设施上用于检测不同状态的多个传感器等,整体的测点总数可达数万个。
(2)数据量与采集频次高
由于物联网设备的广泛部署和高频次的数据采集,每天产生的数据量极为庞大。例如在车辆管理场景中,大量车辆每秒都在产生位置、速度等数据,每天采集的数据量超过 100GB。在一些对实时性要求极高的场景(如无人机监测中的某些紧急任务场景或者交通流量实时监测场景),采集频次高达每秒百万条数据点。
(3)存储空间需求大
随着数据的不断积累,对存储空间的需求持续增长。按照上述的数据产生速度和规模,预计每年需要超过 50TB 的存储空间来保存这些时序数据。
(4)查询速度要求高
在城市管理的实际应用中,很多决策需要基于实时数据查询结果。例如在交通调度、应急救援等场景下,必须在秒级时间内完成复杂的查询操作,以获取所需的车辆、人员、设施等相关信息。
(5)成本限制
在满足数据存储、管理和查询需求的同时,还需要考虑成本因素。无论是硬件设备(如服务器)的采购成本,还是软件系统的使用和维护成本,都需要控制在合理范围内,因此需要寻求低成本的存储与计算方案。
2.2 曾用时序数据解决方案问题
北斗智慧物联曾经使用 MySQL 数据库的索引模式进行时序数据的存储管理,但在实践中遇到了诸多问题,其中包括:
(1)服务器资源消耗大
以 MySQL 为基础的解决方案通常需要大量服务器来处理数据,例如可能需要 10 台以上的服务器才能勉强应对数据的存储和计算任务。这导致硬件成本居高不下,包括服务器的购买成本、电力消耗成本以及机房空间占用成本等。
(2)数据管理效率低
面对海量的时序数据(如超过 1 亿条数据),以 MySQL 为基础的解决方案在数据管理方面显得力不从心。数据的查询和处理效率低下,例如查询一个特定时间段内的车辆位置数据可能需要较长时间,无法满足实时性要求较高的业务场景需求。
(3)运维成本与实时性问题
以 MySQL 为基础的解决方案结构繁琐,涉及复杂的硬件设备和软件系统,需要大量的运维工作来确保其正常运行,这导致运维成本很高。同时,由于系统架构和技术的限制,之前的解决方案无法很好地满足数据处理的实时性需求,如在市政设施状态发生变化时,不能及时将信息反馈给管理部门进行处理。
3. 选型 IoTDB 原因
(1)开放数据架构
IoTDB 支持多种数据接入方式,具有很高的灵活性。它可以接收来自不同类型物联网设备(如传感器、智能终端等)的数据,无论是通过网络协议(如 TCP/IP、MQTT 等)直接传输的数据,还是经过消息队列(如 Kafka)中转的数据,都能够顺利接入 IoTDB。这种开放的数据架构便于与各种物联网生态系统中的设备和系统进行集成,为智慧城市建设中的多源数据融合提供了基础。
(2)写入/压缩/查询优势
高效写入性能:IoTDB 基于 LSMTree(Log Structured Merge Tree)结构优化了写入性能。在数据写入时,先将数据写入内存中的 MemTable(内存表),数据按照顺序在内存中缓存,当达到一定规模后再批量写入磁盘,减少了磁盘 I/O 操作次数,从而确保高频次数据采集的及时写入,避免数据丢失。例如,在车辆管理场景中,即使在交通高峰期,大量车辆同时产生海量的位置和状态数据情况下,IoTDB 也能够快速写入这些数据。
高压缩比:IoTDB 采用了先进的数据压缩技术,如列式存储、数据编码(如 TS_2DIFF、RLE、GORILLA 等编码方式)等。这些技术能够对时序数据进行高效压缩,无损压缩比可达 10 倍以上,并降低存储空间需求,减少存储成本。例如,通过压缩技术,可以将原本需要占用大量空间的车辆行驶轨迹数据压缩到较小的存储空间,从而在满足数据存储需求的同时,减少对存储设备的依赖,降低存储成本。
快速查询响应:IoTDB 具有查询优化机制,采用 Bloomfilter 辅助查询。Bloomfilter 是一种基于 bitmap 的数据结构,在查询时,首先通过 Bloomfilter 进行快速判断,如果 Bloomfilter 判断数据不存在,则一定不存在,无需进一步查询;如果判断可能存在,则再通过索引进行进一步查找。这种机制大大提高了查询性能,返回结果时间可控制在毫秒级,能够满足实时查询与快速决策需求,提高管理效率。例如,在市政管理中查询某个区域内特定状态(如故障)的路灯时,能够快速返回结果,以便及时维修。
(3)数据处理功能
IoTDB 提供丰富的数据处理函数,能够对不同类型的数据进行清洗、转换与聚合等操作。在数据清洗方面,可以去除重复、错误或者无效的数据点;在数据转换方面,可以将不同格式的数据转换为统一的格式以便于存储和分析;在数据聚合方面,可以对大量的原始数据进行汇总统计(如计算某一时间段内的平均车速、某一区域内的平均土壤湿度等)。这些数据处理功能有助于提高数据的质量和可用性,为城市管理决策提供更准确的数据支持。
(4)社区运维支持
IoTDB 拥有活跃的社区与专业的运维团队,通过社区途径提出的反馈,能够获得及时的技术支持,原厂运维团队高效的优化和维护工作,能够确保 IoTDB 在智慧城市项目中的稳定运行。
4. 解决方案架构
北斗智慧物联围绕 IoTDB 建立的时序数据管理流程简述如下:
(1)数据采集:
时序数据通过各种物联网设备和传感器进行采集。这些设备广泛分布在车辆、人员、无人机、园林绿化监测点以及市政设施等各个应用场景中。例如,车辆上的传感器采集车辆的运行数据,园林绿化监测点的传感器采集土壤和植物相关数据等。
(2)数据传输:
采集到的时序数据经 Kafka 消息队列进行传输。Kafka 作为一种高吞吐量、分布式的消息队列系统,能够有效地处理大量的实时数据传输任务。它可以对数据进行缓存、排序,并按照一定的规则将数据发送给 IoTDB,确保数据传输的可靠性和稳定性。
(3)数据写入及存储:
最终,时序数据通过 IoTDB 提供的原生接口进行写入。IoTDB 采用专为时序数据设计的 TsFile 格式存储数据,这种格式优化了存储结构,结合列式存储模式、元数据管理架构和设备、传感器、时间维度索引,具有高效的存储效率和查询性能。存储在 IoTDB 中的数据,经过进一步查询、计算与分析,能够支撑不同的下游应用系统,支持车况、园林、垃圾分类等智慧城市应用。
5. 应用场景举例
5.1 车辆管理场景
需求场景:实时监控车辆位置和状态,优化调度。
IoTDB 的作用:IoTDB 能够用较低的成本存储车辆产生的海量时序数据,包括位置、速度、发动机状态等。通过其高效的查询功能,可以实时获取车辆的位置、状态信息和历史行驶轨迹。例如,在一个大型的城市物流配送场景中,配送车辆的位置信息能够实时写入 IoTDB,调度中心可以随时查询车辆的位置,根据货物的配送需求和交通状况,优化车辆的行驶路线和配送任务分配。
以下查询语句可以获取过去一小时内所有车辆的位置信息:
SELECT * FROM root.vehicle WHERE time > now() - 1h
效果:通过 IoTDB 的支持,车辆的调度更加科学合理,能够有效减少车辆空驶时间和不必要的行驶路程,提高车辆调度效率,减少交通拥堵,降低交通压力,城市物流配送的整体效率得到提升。
5.2 园林绿化物联网监测场景
需求场景:实时监测土壤湿度、植物生长状况等。
IoTDB 的作用:IoTDB 能够长期存储从园林绿化监测点采集到的土壤湿度、植物生长状况等数据,并提供灵活的查询和分析功能。例如,可以查询某一区域内植物在过去一个月内的生长数据,分析其生长趋势是否正常。根据实时获取的土壤湿度和植物生长状况数据,可以确定不同区域的灌溉需求,实现精准灌溉。
以下查询语句可以获取土壤湿度低于设定阈值的监测点数据:
SELECT * FROM root.garden WHERE soil moisture < threshold
效果:通过 IoTDB 的支持,园林养护人员可以更加精准地进行养护操作,避免过度灌溉或施肥等情况,使植物得到更好的生长环境,从而有效提高了园林养护效率,植物健康状况与园林整体美观度获得了明显提升。
5.3 无人机监测场景
需求场景:实时监测交通状况和环境数据,支持城市管理决策。
IoTDB 的作用:无人机在飞行过程中采集到的空气质量等数据能够实时传输到 IoTDB 中进行存储,IoTDB 能够高效地处理这些高频数据,确保数据的实时性和准确性。通过 IoTDB 的查询功能,管理人员可以实时获取无人机采集到的各类数据,并进行分析。
以下查询语句可以获取过去一小时内无人机采集的所有数据:
SELECT * FROM root.drone WHERE time > now() - 1h
效果:通过 IoTDB 提供的实时、准确的数据支持,帮助城市管理人员做出了更加科学的决策。例如,根据环境监测数据,可以确定环境污染的源头,采取针对性的治理措施。
6. 未来展望
未来,IoTDB 将继续适配智慧城市的不同业务场景,基于车辆管理、园林绿化管理等场景,支持北斗智慧物联构建更加灵活和定制化的解决方案。
IoTDB 也将继续专注于实现时序数据的稳定、高效、安全、灵活管理,通过技术创新与应用适配,为各行业提供数字化、智能化转型的有效路径。
更多内容推荐:
• 了解更多 IoTDB 应用案例