preface

My previous node data is all stored in mongoDB. By accident, InfluxDB, a timing database, was discovered. So I took a few moments to briefly use it to see if I could replace mongoDB for storing history data.

InfluxDB profile

InfluxDB is an open source timing database. Suitable for processing and analyzing data related to resource data monitoring.

Docs.influxdata.com/influxdb/v1…

The installation

The latest version is V1.6.

Installing InfluxDB is simple (Ubuntu)

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
Copy the code

To complete. 😋

Then you can enter Influx pleasurable play on the command line.

Create some data using the command line

   create database 'mydb'
   use mydb
   insert test,tag1=111,tag2=222 field1=111111,field2=222222
Copy the code

You can then query the data. As a novice, of course it is to use tools.

Previous versions came with a Web management interface. The current version is not ~

Attached is a visualization tool github.com/CymaticLabs…

In addition to the two tags, two fields, and an automatically added time, you can see that 😄 is successfully inserted. After all, it’s a sequential database!

In addition to using InfluxDBStudio, another tool, Grafana, is available. If you’re interested in grafana.com, check it out for yourself. Yeah, cool.

Use Nodejs

NPM package www.npmjs.com/package/inf…

The installation

    npm install --save influx@next
Copy the code

The first step is to insert data

const Influx = require('influx'); / / package
    // Define database connection and data format, create client
    const client = new Influx.InfluxDB({
      database: 'mydb'.username: 'root'.password: 'root'.hosts: [{ host: 'xx.xx.xx.xxx'}].schema: [{measurement: 'test'.// Similar to the concept of a data table
          fields: { / / data table fields, define types, FLOAT/INTEGER STRING/BOOLEAN
            field1:Influx.FieldType.INTEGER,
            field2:Influx.FieldType.INTEGER,
          }, // Tag is an index field. Query speed bar.
          tags: ['tag1'.'tag2']}});// Insert data
    client.writePoints([
            {
                measurement: 'test'.fields: {
                    field1:1231123.field2:44233,},tags: {
                    tag1:14233.tag2:41122}}])Copy the code

Step 2 Query the data

const Influx = require('influx');
// Same as above.
const client = new Influx.InfluxDB({
  database: 'mydb'.username: 'root'.password: 'root'.hosts: [{ host: 'xx.xx.xx.xxx'}].schema: [{measurement: 'test'.// Similar to the concept of a data table
      fields: { / / data table fields, define types, FLOAT/INTEGER STRING/BOOLEAN
            field1:Influx.FieldType.INTEGER,
            field2:Influx.FieldType.INTEGER,
      }, // Tag is an index field. Query speed bar.
      tags: ['tag1'.'tag2']}});// Get data within 5 minutes
// Regarding the Influx query syntax, it is said to be somewhat similar to mysql. There are no specific studies. Let's just do a quick one right now
client
  .query(
    ` SELECT * FROM "test" WHERE time > now() - 5m `
  )
  .then(res= > {
    console.log(res); // Output an array.
  });
Copy the code

conclusion

So far, the project requirements have been basically met. What follows is a variety of fancy queries.

Various links 🔗

  • Docs.influxdata.com/influxdb/v1…
  • Github.com/CymaticLabs…
  • grafana.com
  • www.npmjs.com/package/inf…
  • www.wugeek.com 😋 this is wuGeek.