前言
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
