本文共 3080 字,大约阅读时间需要 10 分钟。
InfluxDB是一个基于Go语言开发的开源时序数据库,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据、IoT行业的实时数据等场景。
这里介绍Matlab如何操作InfluxDB。
官网地址:https://portal.influxdata.com/downloads/(同时下载Chronograf,后面介绍使用方法)
下载后无需安装,直接解压到合适位置:
其中influxd.exe为服务端,influx.exe为客户端。
命令行分别打开服务端和客户端:
influxdb的数据结构分3层:
客户端的常用操作如下:
# 显示所有数据库show databases# 创建数据库create database test# 删除数据库drop database test# 使用数据库use test# 显示表,需要先use数据库show measurements# 插入数据insert devops-idc-sz,host=server01 cpu=23.1,mem=0.63 # 显示表里所有tag keysshow tag keys# 显示表里所有field keysshow field keys# 显示seriesshow series from devops-idc-sz# 查询数据select * from devops-idc-sz# 删除一行数据delete from devops-idc-sz where "host"='server01' and time=1567158293s# 删除时序数据序列drop series from devops-idc-sz where "host"='server01'# 删除表drop measurement devops-idc-sz# 改变时间显示格式precision rfc3339
其中,插入操作详细参数如下:
insert[, = ...] = [, = ...] [unix-nano-timestamp]
measurement为表名,后跟tag键值对,再跟field键值对,最后可以指定时间。
InfluxDB的详细使用方法可以看网上博客介绍。
先下载接口工具:
EnricSala/influxdb-matlabgithub.comGithub上详细介绍了接口的使用方法,这里只做简单测试。
先将接口文件夹添加到Matlab路径:
测试插入数据:
%% 测试Influxdbclcclearclose all%% 连接URL = 'http://localhost:8086';USER = '';PASS = '';DATABASE = 'test';influxdb = InfluxDB(URL, USER, PASS, DATABASE);% 检查是否可以连接[ok, ping] = influxdb.ping();if ok fprintf('连接成功!n');else fprintf('连接失败!n');end% 显示数据库fprintf('已有数据库:n');disp(influxdb.databases())%% 插入% 使用数据库influxdb.use('test');% 准备数据N = 100;temperature = 30 + randn(N, 1)*5;humidity = 50 + randn(N, 1)*10;tim = datetime('now', 'TimeZone', 'local') - (1:N) / 24;% 写入数据series = Series('weather') ... .tags('city', 'Shanghai', 'country', 'China') ... .fields('temperature', temperature, 'humidity', humidity) ... .time(tim);influxdb.writer() ... .append(series) ... .execute();
读取:
%% 测试Influxdbclcclearclose all%% 连接URL = 'http://localhost:8086';USER = '';PASS = '';DATABASE = 'test';influxdb = InfluxDB(URL, USER, PASS, DATABASE);% 检查是否可以连接[ok, ping] = influxdb.ping();if ok fprintf('连接成功!n');else fprintf('连接失败!n');end%% 查询influxdb.use('test');str = 'SELECT temperature, humidity FROM weather WHERE humidity > 30 LIMIT 100';result = influxdb.runQuery(str);% 显示信息names = result.names();weather = result.series('weather');fields = weather.fields();fprintf('表名:%sn', names{ 1})fprintf('域名:%sn', fields{ 1})% 显示数据if 1 time = weather.time('Europe/Paris'); temperature = weather.field('temperature'); humidity = weather.field('humidity'); figure subplot(211) plot(time, temperature) grid on title('temperature') subplot(212) plot(time, humidity) grid on title('humidity')else % 还可以以table格式获取 mytable = weather.table(); mytable = weather.timetable('Europe/Paris');end
数据显示如下
测试成功!
如果插入的数据量巨大,读取显示并不方便。对此可以使用InfluxDB提供的工具Chronograf进行数据展示。
该工具下载后,解压并启动chronograf.exe,然后访问http://localhost:8888,按步骤连接数据库:
按如下图形操作后,即可观察到数据
OK!Matlab数据库又添利器!
转载地址:http://wllyo.baihongyu.com/