InfluxDB 2.0 中的存储桶、度量和保留策略之间的逻辑联系是啥?

Posted

技术标签:

【中文标题】InfluxDB 2.0 中的存储桶、度量和保留策略之间的逻辑联系是啥?【英文标题】:What's the logical connection between buckets, measurements & retention policies in InfluxDB 2.0?InfluxDB 2.0 中的存储桶、度量和保留策略之间的逻辑联系是什么? 【发布时间】:2020-12-17 12:18:23 【问题描述】:

我目前正在研究InfluxDB 2.0的文档;但是,我还不完全理解存储桶、度量和保留策略之间的逻辑。

文档说数据库和保留政策已被存储桶取代。每个定义都有一个桶:

"InfluxDB 2.0 中存储时间序列数据的命名位置"

据我了解

一个bucket包含shard groups => Shard groups在特定文件夹中存储一定间隔的数据;例如:分片组可以始终将四小时间隔的数据保存在单个文件夹中。

分片组包含分片 =>分片是时间序列表的单行/点。

此外,Influx 在文档中写道,一个存储桶有一个保留策略。

这意味着“一个桶”只存储一个时间序列,而不是多个时间序列;否则,一个存储桶可能有多个保留策略。

如果我的理解是正确的,这是否意味着当所有测量都具有相同的保留政策时,您只能将测量包含在同一个存储桶中?因为如果在同一个存储桶中有两个具有不同保留策略的度量,一个保留策略可能会从另一个度量中删除数据。如果我在这里混淆了,请纠正我。

但是,如果我是对的,这对硬件要求有何影响?

Influx 表示系列的数量会影响硬件要求。

这实际上意味着,每个存储桶/保留策略都会增加系列的数量,从而提高硬件要求?

例如,在一个存储桶中存储 60,000 个系列时是否会有所不同 VS 存储 20,000 个系列在桶 A,另外 20,000 个系列在桶 B,最后 20,000 个系列在桶 C。

期待您的反馈!

【问题讨论】:

【参考方案1】:

阿尔瓦罗-

bucket 最重要的特性是它为其中的所有数据定义了retention policy。一个存储桶只有一个保留策略。如果您有需要两个不同时间范围的数据,则需要两个存储桶。这通常是通过下采样来降低的。例如,我将高保真 1/s 数据保留一周,然后将低分辨率 1/min 数据保留一个月。我会在这里使用两个桶。

对于 InfluxDB,“时间序列”由其“序列键”定义,即度量、标签集和字段键集。所以一个桶可以包含许多不同的时间序列。您可以将许多测量值放入一个存储桶中。您似乎对 InfluxDB 1.x 很熟悉,所以我想您已经了解度量、标签和字段。

“系列基数”是您总共拥有的时间序列数。不同存储桶中的相同系列键被视为单独的系列。因此,举一个人为的例子,如果您将数据重复写入两个不同的存储桶,但除此之外它是相同的,那么您的基数就翻了一番。在这种情况下,硬件要求会更高是有道理的——您管理的数据增加了一倍。

这篇博文对这些概念进行了很好的概述。 Data Layout and Schema Design Best Practices for InfluxDB如果您有后续问题,请提出。如果您想询问那里的专门社区,还有一个 InfluxDB 社区闲聊。

【讨论】:

所以我得到的是,在一个桶中存放 60k 系列,或者在 3 个桶中存放 20k 系列对 InfluxDB 的硬件要求和性能没有影响?我想看看我们将如何在 InfluxDB 中存储数十亿个系列,我需要优化数据和内存消耗。

以上是关于InfluxDB 2.0 中的存储桶、度量和保留策略之间的逻辑联系是啥?的主要内容,如果未能解决你的问题,请参考以下文章

InfluxDB学习之InfluxDB数据保留策略(Retention Policies)

访问 InfluxDB 2.0 记录中的多个字段

使用入口点脚本初始化 influxdb2 存储桶

Telegraf 问题:[outputs.influxdb] 度量缓冲区溢出;已删除 3645 个指标

influxdb 中的查询和高级操作

influxdb保留策略