IoT Analytics第3部分:时间序列引擎的比较
介绍
总体而言,时间序列用例(尤其是IoT域)增长如此之快,因此为每个特定用例选择合适的存储至关重要。
如今,所有其他数据库引擎或平台都以面向时间序列的方式销售,因此,让我们尝试更深入地了解哪种引擎最适合每个特定需求。
问题陈述
为了使引擎选择正式化,让我们明确定义成功的输入和标准。作为输入,让我们考虑遥测数据集。
作为成功的标准,我们有:
· 涵盖与不同程度的数据查询/分析相关的功能需求
· 涵盖非功能性需求
让我们更具体地定义它们。
遥测数据集
作为有关IoT数据分析的系列文章的续篇,我们使用Fitness Tracker用例,该用例很好地代表了典型的IoT用例。 数据集(此处和此处也有描述)由一组观察值组成,每个观察值包含:
· 由传感器/边缘生成的度量标准名称,即:心率,高度,步长
· 传感器绑定到该时间点的度量值,即:(2020-11-11-12 17:14:07,71bpm),(2020-11-12 17:14:32,93bpm),等等
· 给定传感器在其中生成数据的标签或上下文描述,即:设备模型,地理位置,用户,活动类型等。
功能要求
数据分析的可能性千差万别,因此让我们将其分为基础,中级和高级三个级别。
基本级别:简单数据检索
· 随机数据访问:对于特定的时间点,返回正确的度量值
· 小范围扫描:对于特定的时间范围(根据数据生成的频率,合理的小,几分钟或几小时之内)返回顺序度量值(即:在其上绘制标准图表)
中级:数据标准化
通常应该以预先定义的循环为基础触发测量事件,但是数据点时序始终存在偏差。这就是为什么强烈希望具有围绕构建预定义的时间窗口以标准化时间序列数据的功能。
所需的功能是:
· 建立时间段以正确规范化数据
· 标准化时间段上的汇总
· 间隙填充,使用插值法在离散的一组已知数据点范围内构造新的数据点。
对于中级功能,值得添加更复杂的诊断分析/临时查询:
· 灵活的过滤:根据标记/上下文属性的谓词过滤数据点,即:按某些区域,用户或活动类型过滤数据点
· 灵活的汇总:对标签/上下文属性或其组合进行分组和汇总,即:按活动类型按区域划分的最大炉床率。
高级:顺序行模式匹配
最高级的级别包括检查事件序列是否与特定模式匹配以进行自省和高级诊断:
· 在特定事件之前是否有类似的测量模式?
· 哪些度量可以指示某些事件的原因,例如故障?
到目前为止,很少有数据库支持这种功能,但是我相信它们会来的。
在这里,我们可以区分以下能力:
· 查找一系列连续事件,即:会话定义
· 模式匹配:趋势反转,周期性事件
非功能性要求
除了功能需求之外,考虑非功能需求也至关重要,非功能需求通常是选择的主要推动力:
· 可扩展的存储:处理大数据量的能力
· 可扩展写入:处理大量同时写入的能力。 这与实时数据访问密切相关-能够在生成数据点和将其读取之间保持最小的延迟。
· 可扩展的读取:处理大量同时读取的能力
· 成熟度高:市场占有率和社区支持。
市场上的时间序列数据库和平台
让我们回顾一下市场上可以满足我们严格需求的产品。有多种选择。很难涵盖所有这些要素,因此我将尝试描述各种发动机。
内置排序的NoSQL
BigTable,HBase,Cassandra,DynamoDB,Accumulo通常用于存储时间序列数据。关于如何在这些存储上实现时间序列用例的文章很多。如何避免因salting等引起热点
优势:可以很好地扩展写入。 高效执行基本分析。
缺点:不支持所有其他类型的分析,效率也不高
NoSQL专用时间序列数据库
有些引擎是从头开始设计为时间序列数据库的。在大多数情况下,它们是NoSQL。最突出的例子是InfluxDB,它位于所有Google搜索的顶部。
时间序列的MPP SQL引擎
一些成熟的MPP分析引擎(例如Vertica)不断增加新的分析功能,包括与时间序列数据处理相关的功能。但是,缺点是,从设计上来说,它们并不是为有效地流式传输数据而创建的。但是,如果微批处理是可以接受的,那么它们可能是许多用例的最佳匹配。
优势:提供最丰富的分析功能。
弱点:实时摄取可能具有挑战性,但效率不高
注意:Oracle不是经典的MPP,但是从功能角度来看,它支持MATCH_RECOGNIZE子句,该子句涵盖了复杂的模式匹配功能
NewSQL内存数据库
SQL数据库的内存性质提高了它们处理快速数据提取的能力。时间桶归一化支持丰富的SQL接口,例如在SingleStore MemSQL数据库中,对于时间序列用例看起来非常有吸引力
优势:提供覆盖率分析功能。
缺点:读写的可伸缩性通常有限或非常昂贵
云时间序列平台
Azure和AWS最近发布了其时间序列数据服务/平台:
· Azure时间序列见解 https://azure.microsoft.com/en-us/services/time-series-insights/
· 亚马逊时间流 timestream https://aws.amazon.com/timestream/
该平台涵盖了时间序列数据存储,可视化以及真正达到查询功能的许多方面。 它们具有在热存储,热存储和冷存储之间的内置数据分隔,以从拥有成本的角度使数据存储和检索达到良好的平衡。
优势:与适当的云基础架构很好地集成,提供了覆盖率查询功能以及
不足:对于某些用例而言,紧密的云集成可能是一个限制; 市场上的存在仍然不足以将其视为成熟的市场。
其他
还有其他选择和利基市场。 我有机会使用一个名为GeoMesa平台/框架的示例。 它是诸如Accumulo / Hbase / Cassandra之类的NoSQL存储之上的框架,能够为时空数据和时空数据建立特殊索引。 它还通过二级索引提供了额外的灵活性。
优势:高效的基本时间序列分析以及良好的扩展水平。地理时查询支持是IoT数据的一项关键功能,也是一大好处。
劣势:尽管开发人员社区非常友好且反应迅速,但采用率较低,成熟度较低。
摘要比较
请使用以下开头定义的条件,找到不同时间序列存储的高级比较:
![2cda7ba5120176070d79bec2fd064bb9.png](https://i-blog.csdnimg.cn/blog_migrate/9f0b5f1fabf6c30e9c41249fd454a4c4.jpeg)
注释:
![56b7e80501ce6fef4af79693084f8a7e.png](https://i-blog.csdnimg.cn/blog_migrate/2eff8858555e797eb250d4ee1b073394.jpeg)
> Image by Author
结论
这个主题的确涉及面很广,值得一本书详细介绍,但是我希望本文能帮助您在"时间序列"引擎领域中导航,并为您的特定用例选择正确的方向。
(本文由闻数起舞翻译自Andriy Zabavskyy的文章《How to Select Time Series DB》,转载请注明出处,原文链接:https://towardsdatascience.com/how-to-select-time-series-db-123b0eb4ab82)