• InfuxDB 时序数据库入门+influxdb-java


    写在前面

    时序数据库,数据过来能够一直写,influxdb会自动打上一个时间戳【毫秒级别】

    安装:直接按照官网即可
    https://docs.influxdata.com/influxdb/v1.7/introduction/installation/

    Getting started with InfluxDB OSS

    参照官网:
    https://docs.influxdata.com/influxdb/v1.7/introduction/getting-started/

    安装好之后:

    端口

    默认influxDB使用以下端口

    8086: 用于客户端和服务端交互的HTTP API
    8088: 用于提供备份和恢复的RPC服务

    配置

    配置文件通过安装包安装,在linux上默认位置:
    /etc/influxdb/influxdb.conf
    查看默认配置:

    列出当前使用的配置
    influxd config

    使用指定配置文件启动
    influxd -config /etc/influxdb/influxdb.conf

    使用路径

    默认数据保存路径
    /var/lib/influxdb/data

    默认`write-ahead-log(WAL)保存路径
    /var/lib/influxdb/wal

    默认metadata 保存路径
    /var/lib/influxdb/meta

    网络时间协议(NTP)

    influxDB使用所在主机的本地时间的UTC时间(比国内晚8个小时)来设置timestamp,多个主机之间使用NTP协议同步时间,如果时间不同步,会导致数据的时间戳不准确.

    0.service influxdb start

    influx -precision rfc3339

    InfluxDB API默认在端口8086上运行。
    因此,默认情况下,influx 将连接到端口8086和localhost。
    如果您需要更改这些默认值,请运行涌入–help

    -precision参数指定任何返回的时间戳的格式/精度。
    在上面的例子中,rfc3339告诉InfluxDB返回RFC3339格式的时间戳
    (YYYY-MM-DDTHH:MM:SS.nnnnnnnnnn)

    To exit the InfluxQL shell, type exit and hit return.

    1.create a database with the CREATE DATABASE <db-name>

    CREATE DATABASE mydb

    2. SHOW DATABASES

    Influ_DB创建并使用_internal系统数据库来存储内部运行时指标。

    3.USE <db-name>

    USE mydb

    4. 插入语句

    INSERT cpu,host=serverA,region=us_west value=0.64

    现在已将测量名称为cpu且标记为host和region的点写入数据库,测量值为0.64。

    > SELECT "host", "region", "value" FROM "cpu"
    name: cpu
    ---------
    time		    	                     host     	region   value
    2015-10-21T19:28:07.580664347Z  serverA	  us_west	 0.64
    

    如果没有为某个点提供时间戳,InfluxDB会在获取该点时分配本地当前时间戳。

    5.让我们尝试存储另一种类型的数据,在同一测量中有两个字段:

    INSERT temperature,machine=unit42,type=assembly external=25,internal=37

    > SELECT * FROM "temperature"
    name: temperature
    -----------------
    time		                        	 external	  internal	 machine	type
    2015-10-21T19:28:08.385013942Z  25	        	37     		unit42  assembly
    

    推荐在大型数据库中使用* 的时候,最好加上limit,消除数据库挂掉的危机

    > SELECT * FROM /.*/ LIMIT 1
    --
    > SELECT * FROM "cpu_load_short"
    --
    > SELECT * FROM "cpu_load_short" WHERE "value" > 0.9
    

    实战01-参照上面的创建语句

    INSERT cpu,host=serverA,region=us_west value=0.64
    INSERT temperature,machine=unit42,type=assembly external=25,internal=37

    CREATE DATABASE mydb;
    USE mydb;

    insert logtype_count,logtype=INFO count=12
    insert logtype_count,logtype=WARN count=1232
    insert logtype_count,logtype=DEBUG count=1113
    insert logtype_count,logtype=ERROR count=114

    show measurements;

    查看一下:

    > select * from logtype_count;
    name: logtype_count
    time                           count logtype
    ----                           ----- -------
    2019-08-07T05:32:18.291002869Z 12    INFO
    2019-08-07T05:32:18.295084203Z 1232  WARN
    2019-08-07T05:32:18.298290348Z 1113  DEBUG
    2019-08-07T05:32:19.255849342Z 114   ERROR
    
    

    实战02-influxdb-java

    pom文件中添加如下的依赖

       <!-- https://mvnrepository.com/artifact/org.influxdb/influxdb-java -->
        <dependency>
          <groupId>org.influxdb</groupId>
          <artifactId>influxdb-java</artifactId>
          <version>2.5</version>
        </dependency>
    

    测试代码:

    import org.influxdb.InfluxDB;
    import org.influxdb.InfluxDBFactory;
    
    /**
     * Description: influxdb-java 
     *
     * @Author: 留歌36
     * @Date: 2019/8/7 13:09
     */
    public class InfluxDB2JavaApp {
        private static InfluxDB influxDB;
    
        private static String defaultRetentionPolicy(String version) {
            if (version.startsWith("0.") ) {
                return "default";
            } else {
                return "autogen";
            }
        }
    
        public static void main(String[] args) {
    
            String value = "logtype_count,logtype=FATAL count=333";
    
            // 定义连接influxdb
            influxDB = InfluxDBFactory
                    .connect("http://hostname:8086", "admin", "admin");
            // 获取版本协议
            String retentionPolicy = defaultRetentionPolicy(influxDB.version());
            // 这里只有一个节点,就选择ConsistencyLevel.ONE
            influxDB.write("mydb", retentionPolicy, InfluxDB.ConsistencyLevel.ONE, value);
        }
    }
    
    

    执行如上代码之后,再次查询:

    > select * from logtype_count;
    name: logtype_count
    time                           count logtype
    ----                           ----- -------
    2019-08-07T05:32:18.291002869Z 12    INFO
    2019-08-07T05:32:18.295084203Z 1232  WARN
    2019-08-07T05:32:18.298290348Z 1113  DEBUG
    2019-08-07T05:32:19.255849342Z 114   ERROR
    2019-08-07T05:47:38.832463456Z 333   FATAL
    
    

    发现数据已经成功插入了

    简单入门,到此结束

  • 相关阅读:
    Matlab中跟地球、测绘、地理信息系统有关的内容Understanding Spherical Coordinates
    国家测绘地理信息局举办地理信息在线服务平台软件定型与培训会
    SQL Server2000 隐藏数据库中的系统表项方法
    最强大,最简洁的【禁止输入中文】
    WebBrowser页面与WinForm交互技巧
    数据库查询某个字段值的位数 语法
    JavaScript弹出模式窗口
    aspx页面加判断的绑定代码
    asp.net调用exe并传递参数然后关闭exe
    ASP.net实现单点登录
  • 原文地址:https://www.cnblogs.com/liuge36/p/12614729.html
Copyright © 2020-2023  润新知