十分钟看懂时序数据库(V)- 分布式计算

十分钟看懂时序数据库(V)- 分布式计算,第1张

十分钟看懂时序数据库(V)-分布式计算

物联网技术产业最近如火如荼,互联网技术和传统企业都在争夺物联网技术的合理布局。时间序列数据库作为物联网技术行业数据存储的最佳选择,也越来越受到大家的关注。早在2017年7月,百度云盘就在其天工物联网云平台上公布了国内首个多租户分布式系统时间序列数据库商品TSDB,成为制造业、交通运输、电力能源、新型智慧城市等产业链行业的关键商品。,也成为百度搜索发展战略发展趋势产业链物联网技术的代表性恶性事件。

前文提到过,数据信息查询是时间序列数据库必须处理的一个关键问题,聚合大信息量的分析查询非常重要。上一篇文章详细介绍了根据准备数据信息的方式在室内空改变时间的思路,减少了信息量大的汇总分析的时间。

本文将从分布式系统计算的角度,从高并发的角度,详细介绍时序数据库如何降低数据信息查询的延迟。

1。单机版时间序列数据的聚合计算

先讨论单机版如何适用于单个聚合函数的计算。单机版聚合计算比较简单。当客户查询数据信息时,通过计算连接点查询得到一个时间段内的所有时间序列数据,连接点应用聚合函数根据时间序列计算数据信息,并转换为计算结果。

查询通常使用嵌套循环聚合。嵌套循环聚合函数使用不同的时间窗口,内部函数一般使用较小的时间窗口,外部函数使用较大的时间窗口。单机版如何计算嵌套循环聚合查询?类似于单个聚合函数,嵌套循环聚合函数的计算在内部聚合函数计算的结果之中,结果是按照时间重新计算得到的。下图是月平均气温最低的一周及其平均气温。总体而言,独立时间序列数据的嵌套循环和非嵌套循环聚合函数的完整过程简单、直接且易于理解。

单机计算有什么特点?从单机版的整个计算过程可以看出,单机版必须查询才能获得所有的初始时间序列数据。原始记录查询的IO成本和计算成本都很高,所有查询的时间都会很长,但是聚合和计算出来的结果通常信息量很少。

2。分布式系统聚合计算

分布式系统计算是与集中式计算相对的一种计算方法。它是在分布式系统的自然环境中,基于多个高并发计算资源的应用来实现计算的一种方式。在时间序列数据库行业,随着数据信息的完善,会产生越来越多的时间序列数据,单机版的存储、查询、聚合分析IO的经济成本非常高。虽然也可以减少更高效的硬件配置的应用,但是存在解决方案限制。考虑到成本等因素,分布式系统的聚集查询仍然是时序数据库的逻辑选择。

当时越来越多的数据信息存储在顺序数据库中,聚集查询难以避免,这也是OLAP分析查询中最常见的实际 *** 作之一。预处理的应用可以改善查询特性,但是不够灵活。分布式系统聚合计算可以应用分布式系统的特性。它根据多个计算资源并行处理计算,然后根据高并发性对结果进行合并以改善聚集查询特性。

3。分布式系统时间序列数据的聚合计算

时间序列数据的分布式系统聚合计算必须由几个连接点并行处理,逻辑上也是一个Map/Reduce的全过程。在整个Map过程中,初始时间序列数据必须分别进行分段和聚合。整个Reduce过程是几个计算结果的组合。通常,聚合和运算的结果与原始记录之间存在显著差异。其次,分布式系统计算可以考虑数据信息的本地化,因此应用分布式系统聚合计算显然可以合理地改善查询特性。

进行时间序列数据的分布式系统计算,必须处理两个基本问题:时间序列数据计算碎片和计算结果的组合。

3.1时间序列数据计算切片

时间序列数据聚合计算的分段可以分为几个层次:存储分段、聚合函数时间窗及其查询条件。

首先,时间序列数据的聚合查询包括多种标准。对时序数据的聚合查询进行排序也是一种常见的查询。不同的排序有不同的初始时间序列数据,因此可以根据查询排序对时间序列数据进行切片计算。不同的排序通过不同的连接点应用不同的并发计算。

其次,时间序列数据聚合的查询功能一般包含时间窗口。同一时间窗口的原始记录被聚合并计算为一个数据信息点。不同的时间窗用于计算不同的时间序列原始记录,因此也可以按照时间窗划分时间序列数据计算的时间维度,不同的连接点可以计算不同时间窗的数据信息。

第三,根据存储切片进行计算。首先,让我们回忆一下上一篇文章中描述的时间序列数据的存储。由于存储的信息量大,单一版本的时间序列数据无法满足需求,因此需要对时间序列数据进行分片存储。分片一般通过公制标记的方法进行。不同的块存储在不同的存储连接点,初始时间序列数据存储在块中。用存储件计算件也是一个合乎逻辑的选择。如下图所示,首先我们会通过碎片计算查询shard,最后我们会把结果拼在一起。

将存储碎片化应用于碎片化计算有什么优势?显然,数据信息的查询和计算是在存储碎片的连接点上进行的,这样可以保证数据的本地化,合理降低网络通信的延迟,促进本地数据信息计算的更高效率。

分布式系统聚合查询完成时,通常会额外应用各种计算分片方法,聚合计算尽可能保证本地化和高并发。

3.2时间序列数据计算结果的组合

数据聚合计算结果的组合与计算分片的方法有关,不同分片方法的组合方法不同。

首先,对于排序聚合查询结果的组合,不同的排序查询结果属于不同的排序,可以按照排序聚合查询标准将结果组合生成计算结果。

其次,对于聚合函数时间窗分段查询,虽然不同时间窗的计算结果属于同一顺序,但结果在时间上是有序的,所以只有将分段计算结果按照时间顺序进行组合才能得到最终的计算结果。

第三,对于存储切片的计算结果的组合,组合相对复杂。因为在同一个时间窗口中会有几个切片,所以同一时间的几个切片的对话框必须聚合计算成一个数据信息点。需要分析聚合函数的特性来组合聚合运算的结果。比如A和B2存储段同一时间对话框中的SUM聚合函数,显然可以立即累加SUM(AUB)=SUM(A)SUM(B)。但并不是所有的聚合函数都考虑这种特性,必须根据聚合函数的特性逐一分类。

当应用各种分段方法来聚合查询时,相对结果的组合也更加复杂。

3.3时序数据的嵌套循环聚合和 *** 作

嵌套聚合查询也是一种常用的数据统计分析方法。嵌套聚合和运算通常由若干个聚合函数嵌套而成,每个聚合函数的计算特性并不完全一致。在考虑切片的计算时,可以将外部嵌套函数和内部嵌套函数分开,选择更有利的切片方式。比如考虑DIFF(SUM(A,1day))的嵌套循环聚合函数(DIFF聚合函数是左右时间序列计算前后结果的误差),我们不仅可以应用按时间窗口切片计算的方法,还可以考虑拆分DIFF和SUM的计算,先应用存储切片的方法来聚合SUM(A,1day)的结果。结果在组装时,计算DIFF嵌套循环聚集函数的结果,存储碎片的分布式系统计算可以灵活利用数据信息的本地化特性,因此应用后者显然效率更高。如何分片计算嵌套聚合函数的数据信息,必须根据聚合函数的特点和场景进行深入分析,这仍然是一个必须深入思考的难题。

3.4计算日常任务的生产调度和推广。

时序分布式系统计算除了要解决计算碎片和数据信息组合的问题,还必须解决任务调度和SQL查询改进的问题。目前很多开源框架,Spark,Presto,Mongodb(注1),Hive(注2)都有相对的解决方案,这里就不讨论了。

4。时间序列数据聚集查询的难点

时序分布式系统的聚集计算还有很多难点,比如COUNT(DISTINCTFIELD)。这种聚合函数的特点是在计算结果时必须内部存储大量的中间数据信息用于计算,必须消耗大量的计算和服务器资源。虽然很多互联网大数据行业分布式系统查询模块已经尝试按照优化算法对其中的一些进行了改进,但是仍然不能完全处理所有的问题。

5.摘要

在时序数据库大量信息的聚集和分析查询中,聚集和运算会直接危及查询特性。分布式系统计算的应用可以合理地改善查询特性,比准备处理查询更加灵活。本文从碎片化及其高并发性的角度讨论了这一关键点。但是,一些独特的嵌套循环聚合场景的推广,仍然需要深入的思考和研究。

注:https://docs.mongodb.com/manual/aggregation/

2:https://CWIki.Apache.org/confidence/display/hive/languagemanualjoins

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/752090.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-30
下一篇2022-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存