InfuxDB 时序数据库入门+influxdb-java

写在前面

时序数据库,数据过来能够一直写,influxdb会自动打上一个时间戳【毫秒级别】

安装:直接按照官网即可
https://docs.influxdata.com/influxdb/v1.7/introduction/installation/

Getting started with InfluxDB OSS

参照官网:
https://docs.influxdata.com/influxdb/v1.7/introduction/getting-started/

安装好之后:

端口

默认influxDB使用以下端口

8086: 用于客户端和服务端交互的HTTP API
8088: 用于提供备份和恢复的RPC服务

配置

配置文件通过安装包安装,在linux上默认位置:
/etc/influxdb/influxdb.conf
查看默认配置:

列出当前使用的配置
influxd config

使用指定配置文件启动
influxd -config /etc/influxdb/influxdb.conf

使用路径

默认数据保存路径
/var/lib/influxdb/data

默认`write-ahead-log(WAL)保存路径
/var/lib/influxdb/wal

默认metadata 保存路径
/var/lib/influxdb/meta

网络时间协议(NTP)

influxDB使用所在主机的本地时间的UTC时间(比国内晚8个小时)来设置timestamp,多个主机之间使用NTP协议同步时间,如果时间不同步,会导致数据的时间戳不准确.

0.service influxdb start

influx -precision rfc3339

InfluxDB API默认在端口8086上运行。
因此,默认情况下,influx 将连接到端口8086和localhost。
如果您需要更改这些默认值,请运行涌入–help

-precision参数指定任何返回的时间戳的格式/精度。
在上面的例子中,rfc3339告诉InfluxDB返回RFC3339格式的时间戳
(YYYY-MM-DDTHH:MM:SS.nnnnnnnnnn)

To exit the InfluxQL shell, type exit and hit return.

1.create a database with the CREATE DATABASE <db-name>

CREATE DATABASE mydb

2. SHOW DATABASES

Influ_DB创建并使用_internal系统数据库来存储内部运行时指标。

3.USE <db-name>

USE mydb

4. 插入语句

INSERT cpu,host=serverA,region=us_west value=0.64

现在已将测量名称为cpu且标记为host和region的点写入数据库,测量值为0.64。

> SELECT "host", "region", "value" FROM "cpu"
name: cpu
---------
time		    	                     host     	region   value
2015-10-21T19:28:07.580664347Z  serverA	  us_west	 0.64

如果没有为某个点提供时间戳,InfluxDB会在获取该点时分配本地当前时间戳。

5.让我们尝试存储另一种类型的数据,在同一测量中有两个字段:

INSERT temperature,machine=unit42,type=assembly external=25,internal=37

> SELECT * FROM "temperature"
name: temperature
-----------------
time		                        	 external	  internal	 machine	type
2015-10-21T19:28:08.385013942Z  25	        	37     		unit42  assembly

推荐在大型数据库中使用* 的时候,最好加上limit,消除数据库挂掉的危机

> SELECT * FROM /.*/ LIMIT 1
--
> SELECT * FROM "cpu_load_short"
--
> SELECT * FROM "cpu_load_short" WHERE "value" > 0.9

实战01-参照上面的创建语句

INSERT cpu,host=serverA,region=us_west value=0.64
INSERT temperature,machine=unit42,type=assembly external=25,internal=37

CREATE DATABASE mydb;
USE mydb;

insert logtype_count,logtype=INFO count=12
insert logtype_count,logtype=WARN count=1232
insert logtype_count,logtype=DEBUG count=1113
insert logtype_count,logtype=ERROR count=114

show measurements;

查看一下:

> select * from logtype_count;
name: logtype_count
time                           count logtype
----                           ----- -------
2019-08-07T05:32:18.291002869Z 12    INFO
2019-08-07T05:32:18.295084203Z 1232  WARN
2019-08-07T05:32:18.298290348Z 1113  DEBUG
2019-08-07T05:32:19.255849342Z 114   ERROR

实战02-influxdb-java

pom文件中添加如下的依赖

   <!-- https://mvnrepository.com/artifact/org.influxdb/influxdb-java -->
    <dependency>
      <groupId>org.influxdb</groupId>
      <artifactId>influxdb-java</artifactId>
      <version>2.5</version>
    </dependency>

测试代码:

import org.influxdb.InfluxDB;
import org.influxdb.InfluxDBFactory;

/**
 * Description: influxdb-java 
 *
 * @Author: 留歌36
 * @Date: 2019/8/7 13:09
 */
public class InfluxDB2JavaApp {
    private static InfluxDB influxDB;

    private static String defaultRetentionPolicy(String version) {
        if (version.startsWith("0.") ) {
            return "default";
        } else {
            return "autogen";
        }
    }

    public static void main(String[] args) {

        String value = "logtype_count,logtype=FATAL count=333";

        // 定义连接influxdb
        influxDB = InfluxDBFactory
                .connect("http://hostname:8086", "admin", "admin");
        // 获取版本协议
        String retentionPolicy = defaultRetentionPolicy(influxDB.version());
        // 这里只有一个节点,就选择ConsistencyLevel.ONE
        influxDB.write("mydb", retentionPolicy, InfluxDB.ConsistencyLevel.ONE, value);
    }
}

执行如上代码之后,再次查询:

> select * from logtype_count;
name: logtype_count
time                           count logtype
----                           ----- -------
2019-08-07T05:32:18.291002869Z 12    INFO
2019-08-07T05:32:18.295084203Z 1232  WARN
2019-08-07T05:32:18.298290348Z 1113  DEBUG
2019-08-07T05:32:19.255849342Z 114   ERROR
2019-08-07T05:47:38.832463456Z 333   FATAL

发现数据已经成功插入了

简单入门,到此结束

原文地址:https://www.cnblogs.com/liuge36/p/12614729.html