tianze
829 words
4 minutes
InfluxDB Concepts

influxdb 概念#

InfluxDB 关键概念#

例子#

measurement

timebutterflieshoneybeeslocationscientist
2015-08-18T00:00:00Z12231langstroth
2015-08-18T00:00:00Z1301perpetua
2015-08-18T00:06:00Z11281langstroth
2015-08-18T00:06:00Z3281perpetua
2015-08-18T05:54:00Z2112langstroth
2015-08-18T06:00:00Z1102langstroth
2015-08-18T06:06:00Z8232perpetua
2015-08-18T06:12:00Z7222perpetua

数据是从 2015 年 8 月 18 日 00:00 到 2015 年 8 月 18 日 6:12,在两个位置(位置 1 和位置 2),两位科学家(langstroth 和 perpetua)计数的蝴蝶和蜜蜂的数量。

解释#

Field#

本节将通过以上数据介绍 influxdb 的含义。在上方的数据中,influxDB 中的所有数据都有一列称为时间。time存储时间戳。接下来的两列 butterflieshoneybees ,是字段。字段由key-value组成,键butterflies对应值 12 ~ 7, 键 honeybees对应值23 ~ 22

在上面的数据中,key-value 对的集合构成一个字段集。这是样本数据中的所有八个字段集:

  • butterflies = 12 honeybees = 23
  • butterflies = 1 honeybees = 30
  • butterflies = 11 honeybees = 28
  • butterflies = 3 honeybees = 28
  • butterflies = 2 honeybees = 11
  • butterflies = 1 honeybees = 10
  • butterflies = 8 honeybees = 23
  • butterflies = 7 honeybees = 22

Field values是 InfluxDB 数据结构必不可少的部分,如果没有字段,则 InfluxDB 中没有数据。注意,字段未使用索引,使用字段值查询必须扫描所有值。这些查询相对于tag查询的性能不高。通常字段不应作为常用查询的关键词。

tag#

数据的最后两列 locationscientisttagtagtag-keytag-value组成,都存储为字符串。样本数据中的 tag-key 是locationscientist。标签 location 两个值:1 和 2。标签 scientist 有两个标签值:langstroth 和 perpetua。

在上面的数据中,标签集是所有标签 key-value 的不同组合。样本数据中的四个标记集是:

  • location = 1, scientist = langstroth
  • location = 2, scientist = langstroth
  • location = 1, scientist = perpetua
  • location = 2, scientist = perpetua

tags是可选的。无需在数据结构中包含 tag,但最好使用它们,因为标签被加了索引。这意味着对使用 tag 查询速度更快,并且 tag 非常适合存储常见查询的数据。

假设大多数查询都使用字段键 butterflies 和 honeybees: SELECT _ FROM “census” WHERE “butterflies” = 1 SELECT _ FROM “census” WHERE “honeybees” = 23

由于未对该字段进行索引,因此 InfluxDB 在提供响应之前会先扫描每个值,这种行为可能会让查询效率很低。为了优化查询,重新安排架构,用 butterflies 和 honeybees 作为标签,scientist 和 location 作为字段,再使用 butterflies 和 honeybees 查询,不会扫描每个字段,查询就更快。

measurement#

measurement是包含tagsfieldstime列的容器,也是对存储的关联字段数据的描述。measurement 名称是字符串,在概念上都类似于表。

retention policy#

retention policy描述 InfluxDB 保留数据多长时间(DURATION),单个measurement可以属于不同的保留策略,以及该数据在集群中存储多少副本(REPLICATION)。在样本数据中,census中的所有内容都是autogen保留策略。InfluxDB 自动创建该保留策略;它具有无限的保留时间,并且复制因子设置为 1。

series#

在 InfluxDB 中,seriesretention policy, measurement, 和 tag 的集合。上面的数据包括四个 series:

Arbitrary series numberRetention policyMeasurementTag set
series 1autogencensuslocation = 1,scientist = langstroth
series 2autogencensuslocation = 2,scientist = langstroth
series 3autogencensuslocation = 1,scientist = perpetua
series 4autogencensuslocation = 2,scientist = perpetua

point#

point是由四个部分组成的单个数据记录:measurement, tag set, field set, 和timestamppointseriestime组成唯一标识。

例如,这里有个point:

name: census
-----------------
time                    butterflies honeybees   location    scientist
2015-08-18T00:00:00Z    1           30          1           perpetua

ref

InfluxDB Concepts
https://dutianze.github.io/posts/previous/influxdb-concepts/
Author
tianze
Published at
2019-12-11