Influx Sql系列教程四:series/point/tag/field

influxdb中的一条记录point,主要能够分为三类,必须存在的time(时间),string类型的tag,以及其余成员field;而series则是一个measurement中保存策略和tag集构成;本篇教程将介绍一些这几个概念mysql

1. tag

influxdb数据结构中记录元数据(metadata)的kv对,不要求必须存在,tag key/value 都是字符串类型,并且会创建索引,所以基于tag进行查询效率比单纯的基于field进行查询是要高的;后续的一些sql也会发现,某些查询只能基于taggit

重点提炼github

  • tag key/value: 字符串类型
  • 有索引

常见的查询tag的语法以下sql

show tag keys on <database> from <measurement>
复制代码

下面给出一个实际的例子, insert语句后面会说到,咱们塞入的一条数据,指定name为tag,另外三个为field数据库

> insert yhh,name=一灰灰 age=26,id=10,blog="http://blog.hhui.top"
> select * from yhh
name: yhh
time                age blog                 id name
----                --- ----                 -- ----
1563888301725811554 26  http://blog.hhui.top 10 一灰灰
> show tag keys from yhh
name: yhh
tagKey
------
name
复制代码

上面是获取tag keys的查询方式,下面介绍下查询tag values的使用姿式express

show tag values on <database> from <measurement> with KEY [ [<operator> "<tag_key>" | <regular_expression>] | [IN ("<tag_key1>","<tag_key2")]] [WHERE <tag_key> <operator> ['<tag_value>' | <regular_expression>]] [LIMIT_clause] [OFFSET_clause]
复制代码
  • with key 后面带上查询条件,必须存在,如查询汇率表中,base_symbol有哪些
  • 链接符号能够为:等于 =, 不等于:!=, <>, 正则:=~, !~
> show tag values from currency_rate with key="base"
name: currency_rate
key  value
---  -----
base AUD
base CAD
base CNY
base DKK
base EUR
base GBP
base HKD
base IDR
base INR
base JPY
base KRW
base NZD
base PHP
base PLN
base RUB
base SGD
base THB
base TRY
base UAH
base USD
复制代码

2. field

成员,也能够理解为一条记录中,不须要创建索引的数据,通常来讲,不太会有参与查询语句建设的能够设置为fieldbash

区别与tag,field有下面几个特性数据结构

  • 类型能够为:浮点,字符串,整形
  • 没有索引

查看field key的语句以下学习

show field keys on <database> from <measurement>
复制代码

下面演示一下查看的姿式测试

> show field keys from yhh
name: yhh
fieldKey fieldType
-------- ---------
age      float
blog     string
id       float
复制代码

3. point

docs.influxdata.com/influxdb/v1…

在influxdb中,你能够将一条mysql中的记录简单的理解为一个point,它由四个组件

  • measurement
  • tag set
  • field set
  • timestamp

每一个point是根据 timestamp + series 来保证惟一性。

关于point能够怎么理解呢?由于influxdb是时序数据库,简单来说就是每一个数据都是时间轴上的一个点,这些数据与时间强相关,其中的tag用来检索,field用来记录一些信息,measurement用来将相同类型的数据归集

4. series

docs.influxdata.com/influxdb/v1…

上面说到point的惟一性时,说到了series,这个概念又是啥呢?

官方的说明是:

The collection of data in the InfluxDB data structure that share a measurement, tag set, and retention policy.

influxdb中measurement + tags set + retention policy 组成的数据集合

直接看定义可能有点懵逼,官方提供查看series的命令以下

show series on <database> from <measurement>
复制代码

下面是几个实例辅助说明

> insert yhh,name=一灰灰 age=26,id=10,blog="http://blog.hhui.top"
> insert yhh,name=一灰灰 age=30,id=11,blog="http://blog.hhui.top"
> select * from yhh;
name: yhh
time                age blog                 id name
----                --- ----                 -- ----
1563889538654374538 26  http://blog.hhui.top 10 一灰灰
1563889547738266214 30  http://blog.hhui.top 11 一灰灰
> show series on test from yhh
key
---
yhh,name=一灰灰
>
复制代码

咱们插入两个pointyhh这个measurement中,可是他们的tag相同都是一灰灰,此时咱们查看series时,发现只有一条yhh,name=一灰灰,包含measurementtag set

接下来咱们试一下,新增一个tag,series是否会增长呢?

> insert yhh,name=一灰灰2 age=30,id=11,blog="http://blog.hhui.top"
> insert yhh,name=一灰灰3,phone=110 age=30,id=11,blog="http://blog.hhui.top"
> select * from yhh
name: yhh
time                age blog                 id name phone
----                --- ----                 -- ---- -----
1563889538654374538 26  http://blog.hhui.top 10 一灰灰
1563889547738266214 30  http://blog.hhui.top 11 一灰灰
1563889704754695002 30  http://blog.hhui.top 11 一灰灰2
1563889723440000821 30  http://blog.hhui.top 11 一灰灰3 110
> show series on test from yhh
key
---
yhh,name=一灰灰
yhh,name=一灰灰2
yhh,name=一灰灰3,phone=110
复制代码

官方定义中series还与保存策略有关,前面两个case都是默认的保存测录,咱们如今在新的保存策略中测试

> create retention policy "1D" on test duration 1d replication 1
> insert into "1D" yhh,name=一灰灰4 age=26,id=10,blog="http://blog.hhui.top"
> select * from yhh;
name: yhh
time                age blog                 id name phone
----                --- ----                 -- ---- -----
1563889538654374538 26  http://blog.hhui.top 10 一灰灰
1563889547738266214 30  http://blog.hhui.top 11 一灰灰
1563889704754695002 30  http://blog.hhui.top 11 一灰灰2
1563889723440000821 30  http://blog.hhui.top 11 一灰灰3 110
> select * from "1D".yhh
name: yhh
time                age blog                 id name phone
----                --- ----                 -- ---- -----
1563890614849474879 26  http://blog.hhui.top 10 一灰灰4
> show series
key
---
yhh,name=一灰灰
yhh,name=一灰灰2
yhh,name=一灰灰3,phone=110
yhh,name=一灰灰4
复制代码

插入到"1D"保存策略中的point也构成了一个series: yhh,name=一灰灰4

注意

show series预计中还支持基于tagwhere查询,下面是一个简单的示例

show series from yhh where "name" = '一灰灰'
key
---
yhh,name=一灰灰
> show series from yhh where phone != ''
key
---
yhh,name=一灰灰3,phone=110
复制代码

II. 其余

0. 系列博文

参考博文

1. 一灰灰Blogliuyueyi.github.io/hexblog

一灰灰的我的博客,记录全部学习和工做中的博文,欢迎你们前去逛逛

2. 声明

尽信书则不如,已上内容,纯属一家之言,因我的能力有限,不免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

3. 扫描关注

一灰灰blog

image
相关文章
相关标签/搜索