前言
InfluxDB是一个时序性数据库,详细资料如下
http://liubin.org/blog/2016/02/18/tsdb-intro/

下载和安装
LZ从官网下载的是influxdb-1.2.4_windows_amd64这个版本,这种数据库不需要安装,解压后配置完毕直接使用,解压后的文件为

influx.exe---->influxdb 命令行客户端
influxd.exe---->influxdb服务器
influxdb.conf---->配置文件,指定对应数据存储文件的位置、日志信息、连接数量、连接时间等等功能的具体配置

主要需要修改的内容如下:
meta部分

data部分

retention部分

shard-percreation部分

monitor部分

admin部分

bind-address端口视服务器端口使用情况而定,这个端口是用来通过浏览器访问的
http部分

这个端口是用来通过程序来访问的,各种参数的具体含义详见
https://github.com/mike-zhang/mikeBlogEssays/blob/master/2017/20170206_InfluxDB%E5%AE%89%E8%A3%85%E5%8F%8A%E9%85%8D%E7%BD%AE.md

启动
通过cmd打开window的命令窗口,进入到influxdb的放置目录,执行命令:influxd.exe -config influxdb.conf即可开启influxdb服务,同时按照上面配置文件产生相应的文件

通过http://127.0.0.1:8089即可实现图形化的访问,其中8087是influxdb.conf文件中admin部分bind-address所指定的,在浏览器中输入这个地址即可实现图形化的访问

http请求的方式为http://178.24.1.3:8086,其中178.24.1.3为当前window机器的IP地址,8086为influxdb.conf文件中http部分bind-address所指定的,这种方式是供程序访问的地址;

另外,还可以直接打开influx.exe,通过influxDB提供的命令来查询数据库中的内容;

备份
备份数据库时,按照influxdb.conf文件中meta、data部分指定的meta、data、wal目录,将这三个目录备份即可;

基础概念
InfluxDB教程
https://www.linuxdaxue.com/influxdb-study-series-manual.html

Java持久层框架
官方提供目前只提供了通过http api访问数据库的方式,我们用GitHub上的开源框架与数据库进行交互,项目地址为:https://github.com/influxdata/influxdb-java,主要实现类如下

InfluxDBFactory
是一个工厂类,可以通过如下方式返回一个InfluxDB的实例

InfluxDB influxDB = InfluxDBFactory.connect("http://172.17.0.2:8086", "111", "111");
1
InfluxDBImpl
实现了InfluxDB接口,提供了对数据库操作的基本方法,如新建数据库,删除数据库,插入数据,进行查询

Point
相当于关系型数据库中的一行数据,因为此类数据库一行数据在图中一般显示为一个点,故为Point,可以此类添加行数据,如tag(索引列)field(普通列)

Query
通过要执行的SQL和数据库名构造Query对象,作为参数传递到InfluxDBImpl类的查询方法中,即可返回一个QueryResult对象,里面封装了查询生成的数据

QueryResult
这个类比较复杂

public class QueryResult {
private List<Result> results;
private String error;

public static class Result {
private List<Series> series;
private String error;
}

public static class Series {
private String name;
private Map<String, String> tags;
private List<String> columns;
private List<List<Object>> values;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
其中Result和Series为QueryResult的内部类,嵌套比较深,取数据比较麻烦,取数据的方法大都类似于

Object obj = queryResult.getResults().get(0).getSeries().get(0).getValues().get(0).get(1);
1
这种方法

InfluxDBResultMapper
可以通过如下方式将查询结构映射到一个Bean中

InfluxDBResultMapper resultMapper = new InfluxDBResultMapper();
List<NewBean> cpuList = resultMapper.toPOJO(queryResult, NewBean.class);
1
2
其中NewBean是一个POJO类

注意事项
通过StringBuilder拼接SQL语句,进行查询,注意不能单独查询tag列,必须有一个field列

推荐

————————————————
版权声明:本文为CSDN博主「Java识堂」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zzti_erlie/article/details/76422871

InfluxDB入门教程的更多相关文章

  1. InfluxDB学习系列教程,InfluxDB入门必备教程

    nfluxDB是一个当下比较流行的时序数据库,InfluxDB使用 Go 语言编写,无需外部依赖,安装配置非常方便,适合构建大型分布式系统的监控系统. 本文是一系列InfluxDB学习教程的目录,现主 ...

  2. wepack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

  3. wepack+sass+vue 入门教程(二)

    六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...

  4. wepack+sass+vue 入门教程(一)

    一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...

  5. Content Security Policy 入门教程

    阮一峰文章:Content Security Policy 入门教程

  6. gulp详细入门教程

    本文链接:http://www.ydcss.com/archives/18 gulp详细入门教程 简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优 ...

  7. UE4新手引导入门教程

    请大家去这个地址下载:file:///D:/UE4%20Doc/虚幻4新手引导入门教程.pdf

  8. ABP(现代ASP.NET样板开发框架)系列之2、ABP入门教程

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之2.ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

  9. webpack入门教程之初识loader(二)

    上一节我们学习了webpack的安装和编译,这一节我们来一起学习webpack的加载器和配置文件. 要想让网页看起来绚丽多彩,那么css就是必不可少的一份子.如果想要在应用中增加一个css文件,那么w ...

随机推荐

  1. Python3+Appium学习笔记05-报错及解决方法

    记录一下使用期间各种报错和解决方法,毕竟搜了半天才找到解决方法.另外提示一下.优先看官方文档. 报错前面都是一样,就是说在处理的时候,服务器发生了一个未知的错误.然后才是具体报错信息 1)seleni ...

  2. Unknown initial character set index '255' received from server. Initial client character 解决方法

    Unknown initial character set index '255' received from server. Initial client character set can be ...

  3. 【基础数位DP-模板】HDU-2089-不要62

    不要62 Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): Accepted Su ...

  4. 如何python循环中删除字典元素

    //下面这行就是在循环中遍历删除字典元素的方法! for i in list(dictheme2.keys()): if dictheme2[i]<self.countFortheme: dic ...

  5. python 多列表生成新的列表[[a,1],[b,2]]与[[a,b],[1,2]]

    (1)将各个列表组合成一个新列表,不做任何数据的改变 示例: test1 = [1,2] test2 = [1,3] test3 = [1,4] 要求生成新的结果:test = [[1,2],[1,3 ...

  6. 获取TableViewer里面的所有TableViewerColumn

    private TableViewerColumn[] getTableViewerColumns(TableViewer tableViewer) { TableColumn[] columns = ...

  7. [2019牛客多校第三场][G. Removing Stones]

    题目链接:https://ac.nowcoder.com/acm/contest/883/G 题目大意:有\(n\)堆石头,每堆有\(a_i\)个,每次可以选其中两堆非零的石堆,各取走一个石子,当所有 ...

  8. 10 | MySQL为什么有时候会选错索引?

    前面我们介绍过索引,你已经知道了在MySQL中一张表其实是可以支持多个索引的.但是,你写SQL语句的时候,并没有主动指定使用哪个索引.也就是说,使用哪个索引是由MySQL来确定的. 不知道你有没有碰到 ...

  9. Oracle 审计 部署监控 user DML操作

    1.移动audit表及索引到dbadmin表空间 alter table aud$ move tablespace DBADMIN;alter table AUDIT$ move tablespace ...

  10. 自己实现dup2

    转自 http://blog.csdn.net/todd911/article/details/11747097 #include <stdio.h> #include <unist ...