nodejs 簡單使用InfluxDB 時序數據庫

前言

我以前的節點數據是全都存到mongoDB中的。偶然的機會,發現了InfluxDB這種時序數據庫。因而花了點時間簡單使用一下,看看是否能替換mongoDB存儲歷史數據。javascript

InfluxDB簡介

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 感興趣的能夠本身去查查。嗯,很炫。

Nodejs使用

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); //輸出一個數組。
  });
複製代碼

總結

到目前爲止,已經基本知足項目需求。接下來就是各類花式查詢而已。

各類連接🔗

相關文章
相關標籤/搜索