我是靠谱客的博主 深情钥匙,最近开发中收集的这篇文章主要介绍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/

安装好之后:
yum list installed |grep influxdb

端口

默认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

时区: 默认插入数据的时间是时间标准时间UTC ,然而北京时间东八区比标准时间快8h,
这里查询的时候可以在后面加tz(‘Asia/Shanghai’) ,就是真正你数据那个时候的北京时间就对了。
假如需要java代码处理的话,可以将查询结果中的时间 都加上8h即可。也不知道可以不,我暂时是这样想的

SELECT * FROM “temperature” tz(‘Asia/Shanghai’);

推荐在大型数据库中使用* 的时候,最好加上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

发现数据已经成功插入了

简单入门,到此结束

最后

以上就是深情钥匙为你收集整理的InfuxDB 时序数据库入门+influxdb-java的全部内容,希望文章能够帮你解决InfuxDB 时序数据库入门+influxdb-java所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部