InfluxDB入門指南二-名詞術(shù)語介紹

InfluxDB與傳統(tǒng)數(shù)據(jù)庫在概念上有許多的不同,本文主要介紹InfluxDB中數(shù)據(jù)結(jié)構(gòu)的基本概念,以及使用中要注意問題。

一、與傳統(tǒng)數(shù)據(jù)庫中的名詞做比較

influxDB中的名詞 傳統(tǒng)數(shù)據(jù)庫中的概念 解釋
database database 數(shù)據(jù)庫
measurement table 數(shù)據(jù)庫中的表
points record 表里面的一行數(shù)據(jù)
retention policy partition policy 數(shù)據(jù)保留策略:InfluxDB不提供刪除操作,通過設(shè)置數(shù)據(jù)保留策略批量刪除過期的數(shù)據(jù)

二、InfluxDB中獨(dú)有的概念

時(shí)間戳是時(shí)序數(shù)據(jù)庫的靈魂,其他數(shù)據(jù)庫對(duì)時(shí)間戳非常不友好,具體表現(xiàn)在如下幾點(diǎn):

  • 數(shù)據(jù)記錄:必須帶時(shí)間戳
  • 數(shù)據(jù)存儲(chǔ):按照時(shí)間排列
  • 數(shù)據(jù)查詢:必須帶時(shí)間條件

2.1 Point

Point相當(dāng)于傳統(tǒng)數(shù)據(jù)庫里的一行數(shù)據(jù),它由時(shí)間(time)、維度(tags)、以及指標(biāo)(field)、組成。如下表所示:

英文名稱 中文名稱 含義
time 時(shí)間列 每個(gè)數(shù)據(jù)記錄時(shí)間,是數(shù)據(jù)庫中的主索引(會(huì)自動(dòng)生成)
tags 維度列 各種有索引的屬性:地區(qū),海拔
fields 指標(biāo)列 各種記錄值(沒有索引的屬性)也就是記錄的值:溫度, 濕度
時(shí)序數(shù)據(jù)存儲(chǔ)

2.2 series

series的概念稍微有點(diǎn)復(fù)雜,它表示的是所有tags值得排列組合。

下面舉一個(gè)具體一點(diǎn)的案例。假設(shè)現(xiàn)有measurement表cpu有兩個(gè)tag,分別是cpu和host,前者表示cpu的核編號(hào),后者表示機(jī)器名。加入有兩臺(tái)機(jī)器ResourcePool-0246-billing07和billing07,他們都有兩個(gè)核cpu1和cpu2,那么這兩個(gè)tag的排列組合就有4個(gè),因此使用show series from cpu查詢出來的結(jié)果就有四條記錄。如果將它們各自關(guān)聯(lián)的數(shù)據(jù)點(diǎn)按照時(shí)間序列描繪在一張圖上,那么可以畫出四條折線。因?yàn)樗鼈兇碇膫€(gè)實(shí)例,每個(gè)實(shí)例都需要cpu和host兩個(gè)tag組合起來才能唯一描述。

> show series from cpu
key
cpu,cpu=cpu1,host=ResourcePool-0246-billing07
cpu,cpu=cpu1,host=billing07
cpu,cpu=cpu2,host=ResourcePool-0246-billing07
cpu,cpu=cpu2,host=billing07

三、使用注意

3.1 坑點(diǎn)

  1. influxdb只有插入(insert)和查詢(select)語句,沒有更新(update)和刪除(delete)語句。
  2. time 相當(dāng)于表的主鍵,當(dāng)一條數(shù)據(jù)的time和tags完全相同時(shí)候,新數(shù)據(jù)會(huì)替換掉舊數(shù)據(jù),舊數(shù)據(jù)則丟失(線上環(huán)境尤其要注意)。
  3. tags 和time可以作為排序字段,field則不可以。如:ORDER BY time DESC.
  4. 設(shè)置了保存策略后,若此保存策略為設(shè)置成默認(rèn)保存策略(一個(gè)庫可以有多個(gè)保存策略),則在查詢時(shí),表名(measurement)前,要加上保存策略。

舉例:
保留策略為two-hour不是默認(rèn)保存策略,則查詢時(shí)候,需要指定其保存策略。例如查詢表cpu中使用非默認(rèn)策略two-hour保存的數(shù)據(jù):

select * from two-hour.cpu where time > now() -10
  1. fields和tags的字段類型是由存入的第一條記錄值決定,一旦確定,后序不得變更,否則數(shù)據(jù)插入將失敗。

舉例:

  • 如第一條記錄fieldA的值為2,想插入一條記錄,fieldA字段值為3.14的值,就會(huì)報(bào)錯(cuò)。因?yàn)樵撟侄我呀?jīng)被初始化為整型了。
  • 如第一條記錄fieldB存儲(chǔ)的是3,想插入一條記錄,fieldB字段值為hello,則也會(huì)報(bào)錯(cuò),該字段已被初始化成整型,不能再寫入字符串了。

避坑提示:建議只使用字符串類型和浮點(diǎn)類型,把所有的整型,長(zhǎng)整型,浮點(diǎn)型,雙精度型統(tǒng)一轉(zhuǎn)為小數(shù)格式的浮點(diǎn)類型,再寫入數(shù)據(jù)庫,字符串類型的不用做轉(zhuǎn)換,這樣就不會(huì)出現(xiàn)插入數(shù)據(jù)失敗和丟失數(shù)據(jù)了。

四、參考資料

  1. InfluxDB使用教程:InfluxDB中數(shù)據(jù)結(jié)構(gòu)概念
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容