在測試系統(tǒng)中,數(shù)據(jù)存儲通常是不可或缺的一環(huán),面對少量數(shù)據(jù)時(shí),我們可以采用本地文件保存的方式,進(jìn)行存儲查看;而面對大量實(shí)時(shí)數(shù)據(jù)時(shí),例如在監(jiān)控場景,如運(yùn)維和IOT(物聯(lián)網(wǎng))領(lǐng)域,通常會有監(jiān)控傳感器和系統(tǒng)的性能指標(biāo)等數(shù)據(jù)需要存儲,這時(shí)對于時(shí)序型數(shù)據(jù)庫就有了很好的應(yīng)用場景。小編近期使用到的一種時(shí)序型數(shù)據(jù)庫——InfluxDB,對于InfluxDB的集成官方有一組API和工具,但大多適用于文本語言,查詢許多資料,關(guān)于LabVIEW對此數(shù)據(jù)庫的操作教程甚少,所以今天小編分享下使用LabVIEW實(shí)現(xiàn)對InfluxDB數(shù)據(jù)庫的連接、寫入、查詢等操作。
本文分享:
InfluxDB介紹
LabVIEW Client of InfluxDBV2.x教程
一、InfluxDB介紹
InfluxDB 是一個(gè)用于存儲和分析時(shí)間序列數(shù)據(jù)的開源數(shù)據(jù)庫,由 Golang 語言編寫,過多的概念小編在這里就不多贅述了,主要介紹下應(yīng)用到的特點(diǎn)和原理概念。進(jìn)一步了解可查看官方說明文檔。
1、特點(diǎn)
內(nèi)置 HTTP 接口,使用方便
數(shù)據(jù)可以打標(biāo)記,這樣查詢可以很靈活
類 SQL 的查詢語句
安裝管理很簡單,并且讀寫數(shù)據(jù)很高效
能夠?qū)崟r(shí)查詢,數(shù)據(jù)在寫入時(shí)被索引后就能夠被立即查出
2、原理概念
寫入?yún)f(xié)議:InfluxDB 行協(xié)議
InfluxDB的行協(xié)議是一種寫入數(shù)據(jù)點(diǎn)到InfluxDB的文本格式。必須要是這樣的格式的數(shù)據(jù)點(diǎn)才能被Influxdb解析和寫入成功,當(dāng)然除非你使用一些其他服務(wù)插件。一行數(shù)據(jù)由4種元素構(gòu)成:measurement(測量名稱)、Tag Set(標(biāo)簽集)、Field Set(字段集)、Timestamp(時(shí)間戳)。
(1)measurement(測量名稱)
必需
測量的名稱。每個(gè)數(shù)據(jù)點(diǎn)都必須聲明自己是哪個(gè)測量里面,不可省略。
大小寫敏感
不可以下劃線_開頭
(2)Tag Set(標(biāo)簽集)
標(biāo)簽應(yīng)該用在一些值的范圍有限的,不太會變動的屬性上。比如傳感器的類型和id等等。在InfluxDB中一個(gè)Tag相當(dāng)于一個(gè)索引。給數(shù)據(jù)點(diǎn)加上Tag有利于將來對數(shù)據(jù)進(jìn)行檢索。但是如果索引太多了,就會減慢數(shù)據(jù)的插入速度。
可選
鍵值關(guān)系使用=表示
多個(gè)鍵值對之間使用英文逗號分隔
標(biāo)簽的鍵和值都區(qū)分大小寫
標(biāo)簽的鍵不能以下劃線_開頭
鍵的數(shù)據(jù)類型:字符串
值的數(shù)據(jù)類型:字符串
(3)Field Set(字段集)
必需
一個(gè)數(shù)據(jù)點(diǎn)上所有的字段鍵值對,鍵是字段名,值是數(shù)據(jù)點(diǎn)的值。
一個(gè)數(shù)據(jù)點(diǎn)至少要有一個(gè)字段。
字段集的鍵是大小寫敏感的。
字段
鍵的數(shù)據(jù)類型:字符串
值的數(shù)據(jù)類型:浮點(diǎn)數(shù)|整數(shù)|無符號整數(shù)|字符串|布爾值
(4)Timestamp(時(shí)間戳)
可選
數(shù)據(jù)點(diǎn)的Unix時(shí)間戳,每個(gè)數(shù)據(jù)點(diǎn)都可以指定自己的時(shí)間戳。
如果時(shí)間戳沒有指定。那么InfluxDB就使用當(dāng)前系統(tǒng)的時(shí)間戳。
數(shù)據(jù)類型:Unix timestamp
如果你的數(shù)據(jù)里的時(shí)間戳不是以納秒為單位的,那么需要在數(shù)據(jù)寫入時(shí)指定時(shí)間戳的精度。
協(xié)議中的數(shù)據(jù)類型及其格式:
空格:行協(xié)議中的空格決定了InfluxDB如何解釋數(shù)據(jù)點(diǎn)。第一個(gè)未轉(zhuǎn)義的空格將測量值&Tag Set(標(biāo)簽集)與Field Set(字段集)分開。第二個(gè)未轉(zhuǎn)義空格將Field Set(字段級)和時(shí)間戳分開。
Float(浮點(diǎn)數(shù)):IEEE-754標(biāo)準(zhǔn)的64位浮點(diǎn)數(shù)。這是默認(rèn)的數(shù)據(jù)類型。
Integer(整數(shù)):有符號64位整數(shù)。需要在數(shù)字的尾部加上一個(gè)小寫數(shù)字i。
UInteger(無符號整數(shù)):無符號64位整數(shù)。需要在數(shù)字的尾部加上一個(gè)小寫數(shù)字u。
String(字符串):普通文本字符串,長度不能超過64KB
Boolean(布爾值)
Unix Timestamp(Unix時(shí)間戳)
注釋:以井號#開頭的一行會被當(dāng)做注釋。
二、安裝部署,初始化配置
安裝和部署方式不唯一,這里分享下小編使用到的方法:
數(shù)據(jù)庫版本:InfluxDB OSSv2.7.1
系統(tǒng)環(huán)境:Win10專業(yè)版
安裝
安裝 InfluxDB |InfluxDB OSS v2 文檔 (influxdata.com)
從以上官網(wǎng)鏈接下載后會看到一個(gè).zip文件,將其解壓。
部署
打開cmd,輸入‘influxd.exe的文件地址’,回車。
瀏覽器打開http://localhost:8086。
初始化配置
點(diǎn)擊GET STARTED 按鈕,進(jìn)入下一個(gè)步驟(添加用戶)。
可以留意下clone你的Token、Organizition和organization id(客戶端連接時(shí)要用)。Bucket用于存放數(shù)據(jù)的籃子相當(dāng)于Database。
?API Token 是干什么用的
簡單來說,influxdb 會向外暴露一套HTTP API。所以,在InfluxDB中,對權(quán)限的管理主要就體現(xiàn)在API的Tokens上??蛻舳藭?token放到http的請求頭上,influxdb 服務(wù)端就根據(jù)客戶端發(fā)來的請求頭部的token,來判斷你能不能對某個(gè)存儲桶讀寫,能不能刪除存儲桶,創(chuàng)建儀表盤等。
配置完成
Token、Organization忘記也可從這里查詢:
三、程序Demo介紹
依賴工具包:i3 JSON
目前實(shí)現(xiàn)了連接、錯(cuò)誤分析處理、寫入和查詢功能。上文有介紹到InfluxDB內(nèi)置 HTTP 接口,所以使用LabVIEW中HTTP客戶端的API進(jìn)行實(shí)現(xiàn)。
以下介紹均以 ‘步驟功能:語言(程序Demo截圖)’形式介紹
1、連接
基本身份驗(yàn)證:‘url’api/v2/authorizations
Token驗(yàn)證:Authorization: Token INFLUX_API_TOKEN
2、數(shù)據(jù)寫入
先將measurement(測量名稱)、field name(字段名)、precision(時(shí)間精度)寫入:
其次將field values(數(shù)據(jù))、time stamp(時(shí)間戳)轉(zhuǎn)換為字符串的格式,組成行協(xié)議寫入:
最后發(fā)送寫入數(shù)據(jù)的報(bào)文請求:
3、查詢
以Flux語法查詢,查詢語句的釋議太多,有需要的還需自行查看Query data with Flux | InfluxDB OSS v2 Documentation (influxdata.com)
這里簡單摘一點(diǎn):
from(bucket: "example-bucket") #需要查詢的bucket
|> filter(fn: (r) => r._measurement == "example-measurement" and r.tag == "example-tag") #measurement名 tag名
|> filter(fn: (r) => r._field == "example-field")
|> range(start:-1h) #相對時(shí)間范圍 (最近1小時(shí))
|> range(start:-1h, stop: -10m) #最近1h到最近10分鐘
|> aggregateWindow(every: 1s, fn: last, createEmpty: false) #數(shù)據(jù)可視化
這里實(shí)現(xiàn)了兩種方式查詢:聚合和非聚合。區(qū)別在于發(fā)送的header不一樣,如下圖:
4、錯(cuò)誤處理
根據(jù)官網(wǎng)API幫助文檔中API操作返回的HTTP響應(yīng)代碼,解析Body和Headers文件而設(shè)計(jì)。(一般代碼≥400為錯(cuò)誤)
四、內(nèi)容總結(jié)
1.InfluxDB的特點(diǎn)和原理概念
2. 安裝部署及初始化配置InfluxDB
3.使用LabVIEW實(shí)現(xiàn)對InfluxDB的連接、寫入、查詢、錯(cuò)誤分析的操作
審核編輯:黃飛
-
LabVIEW
+關(guān)注
關(guān)注
1995文章
3670瀏覽量
333407 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3902瀏覽量
65796 -
UNIX
+關(guān)注
關(guān)注
0文章
296瀏覽量
42111
原文標(biāo)題:教程 | LabVIEW操作InfluxDB數(shù)據(jù)庫
文章出處:【微信號:華穗科技,微信公眾號:華穗科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
labview 數(shù)據(jù)庫操作問題
在LABVIEW中實(shí)現(xiàn)對數(shù)據(jù)庫表格的操作
(專題)Labview 對于大數(shù)據(jù)的操作 途徑:使用數(shù)據(jù)庫
關(guān)于Labview數(shù)據(jù)庫操作的內(nèi)存問題
Labview對SQL Server數(shù)據(jù)庫連接并操作
ADO和LabSQL在數(shù)據(jù)庫操作方面的應(yīng)用
LabVIEW訪問Access數(shù)據(jù)庫的研究
labview狀態(tài)機(jī)下的數(shù)據(jù)庫操作_LV2012
數(shù)據(jù)庫的設(shè)計(jì)概念總結(jié)

基于LABVIEW的SQL Server數(shù)據(jù)庫操作教程
influxdb+grafana+nodemcu

評論