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

### InfluxDB 数据库基本操作教程 #### 创建数据库 为了开始使用 InfluxDB,通常会先创建一个新的数据库。这可以通过 `CREATE DATABASE` 命令来完成: ```sql CREATE DATABASE <database_name> ``` 例如,要创建名为 `test` 的数据库,则命令如下所示[^3]: ```sql CREATE DATABASE test ``` #### 查看现有数据库列表 可以利用 `SHOW DATABASES` 来查看当前实例中存在的所有数据库名称。 ```sql SHOW DATABASES ``` 此命令将返回一个包含所有可用数据库的名字表单[^1]。 #### 删除数据库 如果不再需要某个特定的数据库,可执行删除操作。语法结构为: ```sql DROP DATABASE <database_name> ``` 比如想要移除之前建立过的测试用数据库 `test` ,则应输入下面这条语句并运行它[^4]: ```sql DROP DATABASE test ``` #### 设置默认保留策略 (Retention Policy) 对于时间序列数据来说,默认情况下有一个自动清理旧记录的功能叫做 "retention policy". 可以为不同的需求定义多个这样的规则,并指定哪一个作为新写入点测度值时所采用的标准配置项. 设置或更改默认保留期限的方式之一就是通过下述 SQL 语句实现,其中 `<rp_name>` 是自定义命名而 `<duration>` 表达了希望保存多久的历史资料(如7d表示七天),最后别忘了指明作用范围即具体影响到哪几个已存在的 DB 上面去应用这些参数调整. ```sql ALTER RETENTION POLICY "<rp_name>" ON "<db_name>" DEFAULT DURATION <duration> ``` #### 查询管理 连续查询(Continuous Queries,CQs)允许用户预先设定一些聚合函数,在后台周期性的被执行并将结果存回给定的目标测量(measurement). 它们非常适合用来处理那些需要定期汇总统计信息的任务场景. 当不需要某些CQ的时候就可以考虑将其停用了. 使用 DROP CQ 命令即可轻松达成目的. ```sql DROP CONTINUOUS QUERY "cq_example" ON "my_database" ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值