zoukankan      html  css  js  c++  java
  • InfluxDB 基本认识

    一、InfluxDB 简介
      InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。类似的数据库有Kairosdb、OpenTsdb等。
      三大特性:
          时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等);
          度量(Metrics):对实时大量数据进行计算;
          事件(Event):支持任意的事件数据,换句话说,任意事件的数据我们都可以做操作。

    有以下七大特点:
      1)schemaless(无结构),可以是任意数量的列;
      2)可拓展的;
      3)支持min, max, sum, count, mean, median 等一系列函数,方便统计;
      4)原生的HTTP支持,内置HTTP API;
      5)强大的类SQL语法;
      6)自带管理界面,方便使用,Built-in Explorer 自带管理工具;
      7)Powerful Query Language 类似sql;

    influxdb的两个http端口:
      port 8083:管理页面端口,访问localhost:8083可以进入你本机的influxdb管理页面;
      port 8086:http连接influxdb client端口,一般使用该端口往本机的influxdb读写数据。

    二、基本操作:
      influxdb相关名词
        database:数据库;
        measurement:数据库中的表;
        points:表里面的一行数据。

      influxDB中独有的一些概念
        Point由时间戳(time)、数据(field)和标签(tags)组成。
        time:每条数据记录的时间,也是数据库自动生成的主索引;
        fields:各种记录的值;
        tags:各种有索引的属性

      数据库与表的操作:
        #进入influxDB数据库
        influx
        #创建数据库
        create database "db_name"
        #显示所有的数据库
        show databases
        #删除数据库
        drop database "db_name"
        #使用数据库
        use db_name
        #显示该数据库中所有的表
        show measurements
        #创建表,直接在插入数据的时候指定表名
        insert test,host=127.0.0.1,monitor_name=test count=1
        #删除表
        drop measurement "measurement_name"

        #清空数据库表里面的数据
        delete from tbname

        InfluxDB中既有显式的新建表的语句,也有通过insert数据的方式来建立新表
        insert tbname,hostname=server01 value=4422
        其中 tbname就是表名,hostname是索引(tag),value=xx是记录值(field),记录值可以有多个,系统自带追加时间戳或者添加数据时,自己写入时间戳
        insert tbname,hostname=server01 value=442221834240i 1435362189575692182

        show retention policies on "db_name"     查看当前数据库Retention Policies
        创建新的Retention Policies
        create retention policy "rp_name" on "db_name" duration 3w replication 1 default

        查看measurement里面的tags和fields
        show tag keys from measurement_name
        show field keys from measurement_name
        select * from measurement_name

        创建新的Retention Policies
        create retention policy "rp_name" on "db_name" duration 3w replication 1 default
          - rp_name:策略名;
          - db_name:具体的数据库名;
          - 3w:保存3周,3周之前的数据将被删除,influxdb具有各种事件参数,比如:h(小时),d(天),w(星期);
          - replication 1:副本个数,一般为1就可以了;
          - default:设置为默认策略

        创建新的Continous Queries
        create continous query cq_name on db_name begin select sum(count) into new_table_name from table_name group by time(30m) end
          - cq_name:连续查询名字;
          - db_name:数据库名字;
          - sum(count):计算总和;
          - table_name:当前表名;
          - new_table_name:存新的数据的表名;
          - 30m:时间间隔为30分钟

    三、数据录入
    InfluxDB三种操作方式:

    客户端命令行方式
      插入数据:
      curl -i -X POST 'http://localhost:8086/write?db=monitor' --data-binary 'monitor,host=server01,region=us-west value=0.60'
    查询数据:
      curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=monitor" --data-urlencode "q=SELECT * FROM measurement_name "

    HTTP API接口
    插入数据
      Postman: http://localhost:8086/write?db=monitor&u=root&p=123456
      Body: measurement_name,host=localhost,name=zhangsan sex=male,age=20
      measurement_name相当于表名,host=localhost,name=zhangsan 是tagset,类似索引,sex=male,age=20 是filed字段,也就是存到数据库里面的数据。
    查询数据: 查询结果以Json的数据格式返回
      http://localhost:8086/query?db=monitor&q=SELECT * FROM measurement_name

    各种语言API库
    Influxdb有针对各种语言的API
    Java maven依赖

    <dependency>
      <groupId>org.influxdb</groupId>
      <artifactId>influxdb-java</artifactId>
      <version>2.7</version>
    </dependency>

    Influxdb的数据保留策略:

      InfluxDB的数据保留策略(RP)用来定义数据在InfluxDB中存放的时间,或者定义保存某个期间的数据。一个数据库可以有多个保留策略,但每个策略必须是独一无二的。
      show retention policies on dbName 可以查看指定数据库的数据保留策略.
      其中duration是数据保留时间,shardGroupDuration是每个shard上的数据的时间跨度,replicaN是数据的副本数量,default是指这个retention policy是否是指定数据库的默认数据保留策略
      创建数据保留策略并设置为默认数据保留策略
      create retention policy "2_hours" on "monitor" duraption 2h replication 1 default
      修改数据保留策略
      alter retention policy "2_hours" on "monitor" duraption 4h default
      删除数据保留策略
      drop retention policy "2_hours" on "monitor"

    四、用户管理
      #显示用户
      show users
      #创建用户
      create user "username" with password 'password'
      #创建管理员权限用户
      create user "username" with password 'password' with all privileges
      #删除用户
      drop user "username"

    InfluxDB参考官方文档: https://docs.influxdata.com/influxdb/v1.4/

  • 相关阅读:
    互联网 | 逻辑上的黑话才是真正的花里胡哨
    OLAP引擎:基于Druid组件进行数据统计分析
    数据调度组件:基于Azkaban协调时序任务执行
    职场 | 工作五年之后,对技术和业务的思考
    数据搬运组件:基于Sqoop管理数据导入和导出
    valgrind 内存泄漏分析
    Solon Cloud 分布式服务开发套件清单,感觉受与 Spring Cloud 的不同
    Solon 的想法与架构笔记
    对标 Spring Boot & Cloud ,轻量框架 Solon 1.5.8 发布
    对标 Spring Boot & Cloud ,轻量框架 Solon 1.5.2 重要发布
  • 原文地址:https://www.cnblogs.com/zengming/p/8241554.html
Copyright © 2011-2022 走看看