我以前的節點數據是全都存到mongoDB中的。偶然的機會,發現了InfluxDB這種時序數據庫。因而花了點時間簡單使用一下,看看是否能替換mongoDB存儲歷史數據。javascript
InfluxDB是一個開源時序數據庫。適合處理分析資源數據監控相關數據。java
docs.influxdata.com/influxdb/v1…mysql
目前最新版本爲v1.6。git
安裝InfluxDB的方式很簡單(Ubuntu)github
curl -sL <https://repos.influxdata.com/influxdb.key> | sudo apt-key add -
source /etc/lsb-release
echo "deb <https://repos.influxdata.com/${DISTRIB_ID,,}> ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
sudo apt-get update && sudo apt-get install influxdb
sudo service influxdb start
複製代碼
完成。😋web
而後就能夠在命令行裏輸入influx愉快的玩耍了。sql
使用命令行建立一些數據shell
create database 'mydb'
use mydb
insert test,tag1=111,tag2=222 field1=111111,field2=222222
複製代碼
而後就能夠查詢數據。因爲是新手,固然是使用工具啦。數據庫
之前的版本自帶一個web管理界面。如今的版本沒有了~npm
附上可視化工具一枚github.com/CymaticLabs…
插入成功😄能夠看到裏面除了咱們本身加的兩個tag,兩個field,還包括一個自動添加的time。畢竟是時序數據庫
嘛!
除了使用InfluxDBStudio之外,還可使用另外一個工具 Grafana。grafana.com 感興趣的能夠本身去查查。嗯,很炫。
npm 包 www.npmjs.com/package/inf…
npm install --save influx@next
複製代碼
const Influx = require('influx'); //導包
// 定義數據庫鏈接和數據格式,建立client
const client = new Influx.InfluxDB({
database: 'mydb',
username: 'root',
password: 'root',
hosts: [{ host: 'xx.xx.xx.xxx' }],
schema: [
{
measurement: 'test', //相似於數據表的概念
fields: { //數據表的字段,定義類型,FLOAT/INTEGER/STRING/BOOLEAN
field1:Influx.FieldType.INTEGER,
field2:Influx.FieldType.INTEGER,
}, // tag 也是裏面的字段,是自帶索引光環。查詢速度槓槓的。
tags: ['tag1','tag2']
}
]
});
// 插入數據
client.writePoints([
{
measurement: 'test',
fields: {
field1:1231123,
field2:44233,
},
tags: {
tag1:14233,
tag2:41122
}
}
])
複製代碼
const Influx = require('influx');
// 和上邊同樣。
const client = new Influx.InfluxDB({
database: 'mydb',
username: 'root',
password: 'root',
hosts: [{ host: 'xx.xx.xx.xxx' }],
schema: [
{
measurement: 'test', //相似於數據表的概念
fields: { //數據表的字段,定義類型,FLOAT/INTEGER/STRING/BOOLEAN
field1:Influx.FieldType.INTEGER,
field2:Influx.FieldType.INTEGER,
}, // tag 也是裏面的字段,是自帶索引光環。查詢速度槓槓的。
tags: ['tag1','tag2']
}
]
});
// 獲取5分鐘內的數據
// 至於Influx的查詢語法,聽說和mysql有點相似。尚未具體研究。如今就簡單查一個吧
client
.query(
` SELECT * FROM "test" WHERE time > now() - 5m `
)
.then(res => {
console.log(res); //輸出一個數組。
});
複製代碼
到目前爲止,已經基本知足項目需求。接下來就是各類花式查詢而已。