当前位置: 首页 > 科技观察

物联网海量时序数据存储面临哪些挑战?

时间:2023-03-21 14:01:32 科技观察

随着物联网技术的快速发展,物联网设备产生的数据呈爆炸式增长,越来越重视数据价值的挖掘。物联网产生的数据通常具有时间序列特征。时序数据库是目前针对物联网IoT、工业互联网IIoT、应用性能监控APM场景等垂直领域定制的数据库解决方案。本文主要分析了海量时序数据存储与存储之间的关键技术挑战和解决方案。1时序数据存储挑战1典型时序应用场景随着5G/IoT技术的发展,数据呈爆发式增长,其中物联网(IoT)和应用性能监控(APM)是最典型的应用领域的时间序列数据。在物联网、车联网、智能家居、工业互联网、应用性能监控等常见应用场景中,大量设备不断产生运行时指标数据,对数据的读写和存储管理提出了极大的挑战。2.时序数据的特点在典型的物联网和APM时序数据场景中,数据的产生和访问具有比较明显的规律和许多共同特征,这与当前互联网的典型应用特征有很大区别。数据按时间顺序生成,必须带有时间戳。海量物联网设备或被监控的应用程序被固定周期或特定条件触发,不断产生新的时序数据。数据比较结构化。设备或应用程序生成的指标一般为数值类型(大部分)和字符类型,指标的数量在运行过程中相对固定。只有当模型改变或服务升级时,指标才会增加/减少/改变。写多读少,更新操作很少,不需要事务支持。在互联网应用场景中,数据写入后,往往会被多次访问,比如典型的社交、电商场景;而在物联网、APM场景中,数据生成并存储后,在需要数据运行分析、监控报表、排查故障时,往往会被读取和访问。按时间段批量访问数据,用户主要关注一段时间内同一或同类型设备的访问趋势,如某智能空调近一小时的平均温度、总访问量一个集群所有实例的QPS等。支持对连续时间段数据的常用计算,如求和、计数、最大值、最小值、平均值等数学函数计算。近期数据的访问量远高于历史数据,访问规律明显。历史数据的价值随着时间的推移而降低。为了节省成本,通常只需要保存三个月或半年等最近一段时间的数据,需要支持高效的数据TTL机制,可以自动批量删除历史数据,最大限度减少对正常写入的影响。数据存储量大,冷热特性明显,对存储成本要求相对较高,需要有针对性的存储方案。结合时序的特点,要满足大规模时序数据存储的需求,至少要面临以下核心挑战:高并发写入吞吐量:在一些大规模的应用性能监控和物联网场景中,海量设备继续生成时间序列数据比如某省电网9000万电表设备的用电量计量数据,原来每月采集一次,后续业务升级后,每15分钟采集一次。每秒的时间序列数据点数量达到了数百万甚至数千万个时间点。几十到上百台机器的集群规模,支持全业务写入;时序数据存储需要解决大规模集群的水平扩展和高性能、稳定写入的需求。高效的时序数据查询分析:在典型的监控场景中,通常需要对长期数据进行查询和分析,比如对一些指标最近1天、3天、7天、1个月的趋势分析和报表;而在物联网场景中,有一个典型的横截面查询需求,比如查询某个省内所有电表在指定时间的用电量明细数据,查询某个品牌的平均运行温度空调在特定时间;这些查询需要扫描大量的集群数据才能得到结果,而且查询结果集也可能非常大;时序数据存储需要支持多维度的时间线检索,具备流处理、预计算等能力,满足大规模APM、IoT业务场景的典型查询需求,对写入的影响最小化用于大型时间序列查询。低成本的时序数据存储:在典型的车联网场景下,仅2万辆汽车每小时就会产生近100GB的车辆指标数据。如果要保存一年的运行数据,需要PB级的数据存储规模;由于数据规模庞大,对低存储成本要求高。此外,时间序列数据具有明显的冷热特征。时序数据存储需要充分利用时序数据量大、冷热访问特征明显,做好计算和存储资源的解耦,通过低成本的存储介质、压缩编码、冷热分离、高效TTL、Servereless等技术。成本降低到极致。简单便捷的生态协作:在物联网、工业互联网等场景中,时序数据通常需要进一步的操作分析和处理。很多时候,时序数据只是业务数据的一部分,需要结合其他类型数据完成查询分析;时序数据存储需要能够对接生态BI分析工具,大数据处理、流式分析系统等,与周边生态形成协同,创造商业价值。为了应对海量时序数据存储和处理的挑战,从2014年开始,为时序数据存储而设计的数据库相继诞生,时序数据库的增长趋势持续引领。时序数据库结合时序数据的特点,试图解决时序数据的存储。高写入吞吐、水平扩展、低成本存储、数据批量过期、高效检索、简单访问和时序数据计算等方面的挑战。3时序数据库在业界的发展时序数据库近几年经历了几个发展阶段:第一阶段主要解决监控业务需求,按照时间顺序组织数据,方便数据的存储和检索。时间段。解决关系型数据库存储时序数据的一些痛点。典型代表有RDDTool、Wishper(Graphite)等,这类系统处理的数据模型比较简单,单机容量有限,通常嵌入在监控告警方案中。第二阶段,随着大数据和Hadoop生态的发展,时序数据量开始快速增长,业务对时序数据存储和处理的可扩展性提出了更高的要求。基于通用可伸缩分布式存储专门构建的时序数据库开始出现。典型代表包括OpenTSDB(底层使用HBase)、KairosDB(底层使用Cassandra)等,利用底层分布式存储的可扩展性,在KV模型上构建自定义的时间序列模型,支持反向检索和海量时间序列的存储能力。这类数据库的数据存储本质还是通用的KV存储,在时序数据的检索和存储压缩效率上无法做到极致,对时序数据的处理支持也相对薄弱。第三阶段,随着Docker、Kubernetes、微服务、IoT等技术的发展,时序数据成为增长最快的数据类型之一。时序数据对高性能低成本存储的需求越来越强烈,针对时序数据定制的存储型数据库开始出现,典型代表是InfluxDB。InfluxDB的TSM存储引擎是为时序数据定制的,支持海量时间线的检索能力,压缩时序数据降低存储成本,支持大量面向时序的窗口计算函数,InfluxDB是目前第一.1DBEngineRank中的时间序列数据库。InfluxDB只开源了单机版,高可用集群版只有企业版和云服务版。第四阶段,随着云计算的快速发展,云上时序数据库服务逐渐诞生。阿里云早在2017年就推出了TSDB云服务,随后亚马逊和Azure推出了AmazonTimeStream和AzureTimeseiresInsight服务,InfluxData逐渐转向云上转型,推出了InfluxDB云服务;时序数据库云服务可以与云端其他基础设施形成更好的协同,云数据库是不可逆转的发展趋势。2LindormTSDB背后的技术思考1Lindorm云原生多模数据库为应对5g/IoT时代的数据存储挑战,阿里云推出云原生多模数据库Lindorm,致力于解决该问题海量多类型低成本存储和处理,让海量数据用得起、看得见。Lindorm支持宽表、时序、搜索、文件等多种模型,满足多种数据类型的统一存储需求。广泛应用于物联网、车联网、广告、社交、应用监控、游戏、风控等场景。其中,LindormTSDB时序引擎提供高效的读写性能、低成本的数据存储、时序数据聚合、插值、预测等计算能力,主要应用于物联网(物联网)、工业互联网(IIoT)和应用程序性能监控(APM)。2LindormTSDB核心设计理念LindormTSDB是下一代时序数据库。在架构升级过程中,我们认为时序数据库的发展将有以下几个趋势:.例如在物联网场景中,设备元数据的存储、运行时数据的存储、业务数据的存储通常采用不同的数据模型来存储。云原生:随着云计算的发展,未来时序数据库的存储应该基于云原生技术,充分利用云上的基础设施,形成相互依存或协作,进一步构建竞争力时间序列存储。时序原生:未来时序数据库的存储引擎针对时序数据进行高度定制,保证高效的时序多维检索能力、高写入吞吐量和高压缩率,支持热和自动管理冷数据。分布式弹性:未来的时序数据库必须具备分布式扩展的能力,以应对大规模的时序数据库存储。在物联网、工业电网、监控等时序的典型应用场景中,有海量设备数据的写入和存储需求,需要实现弹性扩展,实现从小到大的弹性伸缩通过分布式、无服务器和其他技术进行扩展。时序SQL:以后访问时序数据库应该支持标准SQL(或者SQLLike表达式)。一方面使用起来更方便,降低了数据库的使用门槛。同时,它还可以基于SQL提供更强大的具有时序特性的计算能力。云边融合:未来时序数据库将不再是边缘设备侧孤立的数据存储,边缘侧将不断??深化与云端的协同,形成一体化的时序存储解决方案.基于以上判断,我们构建了云原生的多模数据库Lindorm,支持宽表、时序、搜索、文件等多种常用模型,解决IoT/互联网海量数据存储的通用需求。LindormTSDB采用计算存储分离架构,充分利用云原生存储基础设施,定制时序存储引擎,相比业界方案更具竞争力。多模融合统一存储:LindormTSDB引擎配合宽表、搜索、文件等,解决用户多类型数据的统一存储和处理需求。云原生低成本存储,计算存储分离:LindormTSDB引擎基于云原生分布式存储平台LindormStore,提供高可靠的数据存储,支持弹性扩展,提供标准、性能、容量等多种存储形式满足不同场景的需求,同时具备支持冷热数据一体化管理的能力。时序定制存储引擎:LindormTSDB引擎针对时序数据的特点,基于LSMTree结构定制时序引擎,在日志写入、内存组织结构、时序数据存储结构、compaction策略等方面对时序特性进行了优化以确保极高的写入吞吐量。引擎内部支持内置预处理计算引擎,支持对时序数据进行预降采样和预聚合,优化查询效率。多维数据分片和弹性伸缩:LindormTSDB引擎支持横向扩展。通过Hash对时间线进行分片,将海量时间线数据分布到多个节点进行存储;在节点内部,支持按时间维度进一步切分,支持集群,也可以解决云原生监控场景下时间线扩展的问题;通过Serverless形式实现任意规模的弹性伸缩。定制时序SQL查询:LindormTSDB引擎提供时序SQL访问能力,针对时序场景定制特色计算算子,用户学习和使用成本低。边云同步一体化:LindormTSDB引擎提供轻量级边缘部署版本,解决边缘时序存储需求,支持边缘侧数据与云端无缝同步,充分利用云端基础设施云端进一步挖掘数据价值。3LindormTSDB关键技术1.时序定制存储引擎Lindorm是基于存储计算分离架构设计的,以满足云计算时代资源解耦和弹性伸缩的需求。其中,云原生存储分布式存储LindormStore是一个统一的存储基础,构建了各种Vertical专用的多模引擎,包括宽表引擎、时序引擎、搜索引擎、文件引擎。LindormStore是为公有云基础设施(如云盘、DBFS、OSS)设计的兼容HDFS协议的分布式存储系统。还支持在本地磁盘环境中运行,满足部分私有云和专属大客户的需求。为多模式引擎和外部计算系统提供统一的、环境无关的标准接口。LindormTSDB基于云原生分布式存储LindomStore,使用写入优化的LSMTree结构存储时序数据,并结合时序数据的特点在日志写入、内存组织结构、时序数据存储结构,最大化内存利用效率、磁盘存储效率;同时,Compaction策略也针对数据通常有序生成的特点进行了优化。通过引擎自带的WAL日志,LindormTSDB可以非常方便的支持实时数据订阅,以及引擎内部数据的降采样、聚合等针对性的预处理操作。LindormTSDB支持丰富的时序数据查询处理算子,包括降采样、聚合、插值、过滤等。用户的查询请求经过Parser解析后,通常分为几个主要的处理阶段,以形式进行高效处理的管道。索引扫描:根据用户指定的查询条件,通过正向索引+倒排索引查找所有满足条件的时间线ID集合。数据扫描:根据第一阶段查到的时间线ID,从TSFile中读取时间范围对应的数据。Aggregation/Filter:针对第二阶段的扫描结果,对时间线数据做进一步的处理,包括对某个时间线上某个时间线上的数据进行下采样,或者对多个时间线上同一时间点的数据进行聚合(sum,count,avg,min,max,etc.)操作等。2分布式弹性LindormTSDB具有水平扩展的能力。海量时间线数据将存储在多个分片中。分片是集群中独立的数据管理单元。分片内部是一个自主管理的LSMTree存储引擎(参考2.2),包括单独的WAL、TPI、TSFile等文件。在横向上,时序数据会根据metric+tag组成的时间线标识,划分到多个节点,采用Hash分片策略;在垂直方向(时间轴维度),将数据划分到同一个节点,可以按照时间维度进行划分,让每个分片负责一定时间范围内的一部分时间线的数据管理。水平方向的分片可以保证集群的负载均匀分布到各个节点上。未来会结合业务特点,支持业务定义的分片策略,优化读写效率;类型时间线场景(比如云原生监控场景,容器频繁上线下线导致大量旧时间线消亡,新时间线产生)非常有帮助。减少对写作的影响。3TSQL时序查询LindormTSDB提供SQL访问能力。LindormTSDB的数据模型针对物联网场景进行了高度优化和定制。从概念上讲,开发人员试图保留对数据库的一般理解。一个实例包含多个数据库,一个数据库包含多个表。表中存储了多个设备的时间序列数据。每个设备包含一组用于描述设备的Tags,设备包含多个Field指示符。随着时间的推移不断产生新的指标数据。LindormTSDB除了支持常规的SQL基础能力外,还自定义了sampleby、latest等算子,用于方便表达时序降采样、时序聚合、最新点查询等常用时序操作,简化了使用和增强了时序SQL的表达能力,使得用户使用时序数据库更加简单高效。基于TSQL查询接口,LindormTSDB还可以对时序数据进行一系列扩展分析,包括时序数据预测、异常检测等,让应用更好地利用时序数据的价值。4ServerlessLindormTSDB通过时序定制存储引擎和分布式扩展能力,可以很好的满足大规模时序场景的业务需求。但是,对于一些业务访问量较小的应用场景,初始成本相对较高。比如在平台级的应用监控和物联网场景,平台需要管理大量用户的时序数据,而大多数用户的数据规模一开始都比较小。进一步降低用户的使用成本,适应从小到大任意规模的时序存储需求,更好地赋能上层应用监控和物联网SaaS平台服务。未来,Lindorm将继续沿着多租户无服务器服务模型演进,提高弹性。5边云同步随着物联网技术的发展,对边缘计算的需求越来越明显。在智能家居、工控、智慧园区、交通大脑等场景中,通常需要将数据存储在本地,并定期同步到云端进行进一步的分析处理。为了方便边缘侧部署,LindormTSDB支持边缘轻量级部署版本,支持全量和增量数据同步到云端,形成边云一体化解决方案。4时序存储方案1物联网设备数据存储LindormTSDB是物联网设备运行数据存储的最佳选择。与阿里云物联网平台、DataHub、Flink等无缝对接,极大简化了物联网应用的开发流程。例如,通过LindormTSDB,您可以采集并存储智能设备的运行指标,通过内置的聚合计算引擎或BI工具进行智能分析,深入了解设备的运行状态。2工业边缘时序存储LindormTSDB边缘版非常适合工业互联网场景,边缘侧轻量级输出,工业设备就近部署,支持数据同步到Lindorm云端。例如,通过LindormTSDB,您可以实时采集工业产线设备运行指标,对产线运行状态进行分析和可视化,从而优化产线运行效率。3应用监控数据存储LindormTSDB非常适合应用监控数据存储,与Prometheus、Telegraf、ARMS等监控生态系统无缝对接,为监控指标提供高效的读写存储,提供聚合分析、插值计算等能力.例如,通过LindormTSDB,可以采集应用的CPU、内存、磁盘等指标的使用情况,并进行分析和可视化,实时监控应用的运行情况。5.总结从互联网&大数据时代的分布式,到云计算、5G/IoT时代的云原生多模,业务驱动是Lindorm不断演进的原则。面对新时代资源按需弹性化、数据多样化处理的需求,Lindorm升级为统一存储、统一查询、多模引擎架构,借助云基础设施红利,聚焦云-原生弹性和多模融合处理,极致性价比,企业级稳定性,全面支持经济体和企业客户的海量数据存储和处理需求。LindormTSDB时序引擎面向物联网、工业互联网、应用性能监控等领域的时序数据存储需求,全面拥抱云原生,充分利用云原生基础设施,定制时序存储引擎,构建海量、低成本的时序数据存储和处理能力,提供边云融合的时序存储解决方案。未来,Lindorm引擎将在弹性伸缩、低成本海量存储、多模融合、时序流计算等方向不断突破,构建万物互联的数据库。