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
相關文章
相關標籤/搜索