InfluxDb 中的系列和存储桶是啥
Posted
技术标签:
【中文标题】InfluxDb 中的系列和存储桶是啥【英文标题】:What are series and bucket in InfluxDbInfluxDb 中的系列和存储桶是什么 【发布时间】:2020-01-31 01:39:55 【问题描述】:在尝试理解 InfluxDb 的不同概念时,我遇到了this 文档,其中有一个与 SQL 数据库的术语比较。
InfluxDB 测量类似于 SQL 数据库表。 InfluxDB 标签就像 SQL 数据库中的索引列。 InfluxDB 字段是 就像 SQL 数据库中未编制索引的列一样。 InfluxDB 点类似 到 SQL 行。
但是我遇到了其他几个术语,我无法清楚地理解这些术语,并想知道是否有与之对应的 SQL。
系列桶
据我了解的文档
series 是共享保留策略的数据集合, 测量和标签集。
这是否意味着系列是数据库表中数据的子集?还是类似于数据库视图? 我看不到任何解释存储桶的文档。我猜这是 2.0 版本中的一个新概念
有人可以澄清这两个概念吗?
【问题讨论】:
据我了解,测量是指存储的概念,而序列是存储在所述测量中的实际数据。 【参考方案1】:您链接到的 InfluxDb 文档有一个系列是什么的示例,即使他们没有这样标记它。在 InfluxDb 中,您可以将测量和标签的每个组合视为在它自己的“表”中。文档是这样拆分的。
SQL 中的这张表:
+---------+---------+---------------------+--------------+
| park_id | planet | time | #_foodships |
+---------+---------+---------------------+--------------+
| 1 | Earth | 1429185600000000000 | 0 |
| 2 | Saturn | 1429185601000000000 | 3 |
+---------+---------+---------------------+--------------+
在 InfluxDb 中成为这两个系列:
name: foodships
tags: park_id=1, planet=Earth
----
name: foodships
tags: park_id=2, planet=Saturn
...etc...
这会在您查询数据时产生影响,这也是为什么the recommendation 是您没有具有高基数的tag
值的原因。例如,如果您有一个标签 temperature
(特别是如果它精确到多个小数点),InfluxDb 将为 tag
值的每个潜在组合创建一个“表”。
Bucket 更容易理解。这只是一个combination of a database with a retention policy。在以前版本的 InfluxDb 中,这些是单独的概念,现在已经组合在一起了。
【讨论】:
如何在云端的存储桶中创建数据库? 基于文档 (docs.influxdata.com/influxdb/v1.8/concepts/glossary/#series) 系列“由它们共享的度量、标签集和字段键定义”。然而,字段被索引,只有标签没有。那么,不应该是你可以有很多系列,但不是根据标签而是根据字段来区分的吗? 你把它倒过来了@nocibambi - 标签是索引的,而不是字段。请参阅tag glossary item。在上面的示例中,park_id
和 planet
是标签,将被索引以提高性能。该字段为#_foodships
,表示可能具有高基数的测量值。
是的,你是对的,我的错。谢谢指正!【参考方案2】:
根据InfluxDB glossary:
桶
存储桶是时间序列数据存储在 InfluxDB 2.0 中的命名位置。在 InfluxDB 1.8+ 中,每个组合 数据库和保留策略(database/retention-policy)表示 一个桶。使用包含的InfluxDB 2.0 API compatibility endpoints 使用 InfluxDB 1.8+ 与存储桶交互。
系列
由共享度量、标签定义的数据逻辑分组 设置和字段键。
【讨论】:
【参考方案3】:我将我的理解总结如下:
bucket 被命名为具有保留策略的存储时间序列数据的位置。 系列是由共享度量、标签和字段定义的数据逻辑分组。 测量类似于 SQL 数据库表。 标签类似于 SQL 数据库中的索引列。 字段类似于 SQL 数据库中未编制索引的列。 点类似于 SQL 行。例如一个SQL表workdone
:
Email |
Status |
time |
Completed |
---|---|---|---|
lorr@influxdb.com | start | 1636775801000000000 | 76 |
lorr@influxdb.com | finish | 1636775868000000000 | 120 |
marv@influxdb.com | start | 1636775801000000000 | 0 |
marv@influxdb.com | finish | 1636775868000000000 | 20 |
cliff@influxdb.com | start | 1636775801000000000 | 54 |
cliff@influxdb.com | finish | 1636775868000000000 | 56 |
Email
和 Status
列已编入索引。
因此:
测量:workdone
标签:Email
, Status
字段:Completed
系列(基数 = 3 x 2 = 6):
-
测量:
workdone
;标签:Email
:lorr@influxdb.com
,Status
:start
;字段:Completed
测量:workdone
;标签:Email
:lorr@influxdb.com
,Status
:finish
;字段:Completed
测量:workdone
;标签:Email
:marv@influxdb.com
,Status
:start
;字段:Completed
测量:workdone
;标签:Email
:marv@influxdb.com
,Status
:finish
;字段:Completed
测量:workdone
;标签:Email
:cliff@influxdb.com
,Status
:start
;字段:Completed
测量:workdone
;标签:Email
:cliff@influxdb.com
,Status
:finish
;字段:Completed
跨多个存储桶拆分逻辑系列可能不会提高性能,但可能会使通量查询复杂化,因为需要包含多个存储桶。
【讨论】:
以上是关于InfluxDb 中的系列和存储桶是啥的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 influxdb docker 映像中的“Influx”命令访问或创建数据库
Influx Sql系列教程零:安装及influx-cli使用姿势介绍
Influxdb安装启动influxdb控制台常用命令Influx命令使用Influx-sql使用举例Influxdb的数据格式Influxdb客户端工具