InfluxDB基本操作

Influxdb是一个开源的分布式时序、时间和指标数据库。
它有三大特性:

  1. 时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等);
  2. 度量(Metrics):对实时大量数据进行计算;
  3. 事件(Event):支持任意的事件数据,换句话说,任意事件的数据我们都可以做操作。

同时,它有以下几大特点:

  • schemaless(无结构),可以是任意数量的列;
  • min, max, sum, count, mean, median 一系列函数,方便统计;
  • Native HTTP API, 内置http支持,使用http读写;
  • Powerful Query Language 类似sql;
  • Built-in Explorer 自带管理工具。

influxdb相关名词

  • database:数据库;
  • measurement:数据库中的表;
  • points:表里面的一行数据。

influxDB中独有的一些概念,Point由时间戳(time)、数据(field)和标签(tags)组成。

  • time:每条数据记录的时间,也是数据库自动生成的主索引;
  • fields:各种记录的值;
  • tags:各种有索引的属性。

下面从sql语句和java API两方面介绍influxdb的基本操作

1.sql查询方式

   安装好influxdb后,键入influx进入influxdb命令行控制台。help查看帮助,可以看到有以下命令可以查看influx的database,measurement,tag,field等。

 

 数据库操作

  •    创建数据库 
create database test
  •     删除数据库
drop database test
  • 使用某个数据库
use test

 表操作

  •   新建表

     InfluxDB中没有显式的新建表的语句,只能通过insert数据的方式来建立新表。其中 table_test就是表名,name是索引,value=xx是记录值,记录值可以有多个,最后是指定的时间,也可以不指定时间,默认设置当前时间。

insert table_test,name=zhangsan value=55i 1225362186366662

 此时已经自动创建table_test measurement表

  •  删除表
drop measurement table_test
  • series操作

         series表示这个表里面的数据,可以在图表上画成几条线,series主要通过tags排列组合算出来。 

show series from table_test
  •  插入数据

       插入数据同新建表命令,第一次插入,如果不存在表则自动创建,否则写入已有数据表,InfluxDB没有提供修改和删除数据的方法。但是删除可以通过InfluxDB的数据保存策略(Retention Policies)来实现,详见

2.java API方式

   以maven工程为例,引入influxDB maven依赖,非maven工程可下载相应jar包导入工程即可。

    <dependency>
      <groupId>org.influxdb</groupId>
      <artifactId>influxdb-java</artifactId>
      <version>2.9</version>
    </dependency>
  •   连接influxdb

   其中,url指influxdb的url地址格式为: http://<host>:8086, USER为用户名,PASSWORD为密码,默认都为admin

InfluxDB influxDB = InfluxDBFactory.connect(URL, USER, PASSWORD);
  •  写入数据
        Builder builder = Point.measurement("table_test")
            .tag("tag1", "www").tag("tag2", "22")
            .tag("tag3", "man");
        Point point = builder .addField("value1", 66).addField("value2", 22).build();
        influxDB.write(INFLUXDB_DBNAME, "autogen", point );
  • 查询数据
        String sql = "select * from result";
        Query query = new Query(sql, INFLUXDB_DBNAME);
        QueryResult result = influxDB.query(query);
        if (result.getResults().get(0).getSeries() != null) {
            List<String> columns =     result.getResults().get(0).getSeries().get(0).getColumns();
            List<Object> resval = result.getResults().get(0).getSeries().get(0).getValues().get(0);
            double qpsdata = (Double) resval.get(columns.indexOf("value1"));
            System.out.println(qpsdata);
        }

参考资料

  https://www.jianshu.com/p/d2935e99006e

  https://www.linuxdaxue.com/influxdb-basic-operation.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值