[InfluxDB Base Version2.0]InfluxDB的简单使用

本文详细介绍了如何在Windows上安装和启动InfluxDB2.0OSS时序平台,包括设置端口、启动服务、关闭信息反馈、通过UI界面初始化用户和Bucket。接着,通过Java演示了如何引入InfluxDB客户端库,使用Point、LineProtocol和POJO方式写入数据,并展示了查询数据的基本步骤。虽然没有发现类似SQL的查询语法,但使用Flux语言可以实现数据过滤。
摘要由CSDN通过智能技术生成

Install InfluxDB

InfluxDB2.0 OSS(Object Storage Service,简称OSS)时序平台建立的目的是为了收集、存储、处理和可视化性能和信息

Windows_InfluxDB

解压你刚下载的文件到该目录下 C:\Program Files\InfluxData\,并且可以根据你自己的需要改名

默认情况下,InfluxDB使用TCP端口8086通过InfluxDB HTTP API进行客户机-服务器通信。

Start InfluxDB

使用cmd打开influxd.exe
在这里插入图片描述
注:

使用influxd --reporting-disabled命令可关闭信息反馈

设置InfluxDB通过UI界面

  1. 浏览器访问localhost:8086
  2. 点击Get Started

设置你的初始化用户

  1. 输入初始化用户的用户名
  2. 给你的初始化用户赋密码
  3. 输入你的初始化Org名
  4. 输入你的初始化Bucket名字
  5. 点击继续

注:

Bucket相当于库的概念,是用来存储你的时序数据的地方。每个的Bucket都有自己的保留策略(比如数据保留几天,这样的一个时间点概念)

录入数据

从UI里面获取以下信息

  • organization – See View organizations for instructions on viewing your organization ID.
  • Bucket – See View buckets for instructions on viewing your bucket ID.
  • API token – See View tokens for instructions on viewing your API token.
  • InfluxDB URL – See InfluxDB URLs.

使用约定的格式去录入数据,每行代表一个数据点. 每个数据点都需要一个measurementfield可能还需要tag时间戳

注:

  • measurement相当于table
  • filed相当于属性
  • tag相当于索引

JAVA Demo

引入依赖

<dependency>
    <groupId>com.influxdb</groupId>
    <artifactId>influxdb-client-java</artifactId>
    <version>3.3.0</version>
</dependency>

InfluxDB2Example

推荐使用Point写入数据

package example;

import java.time.Instant;
import java.util.List;

import com.influxdb.annotations.Column;
import com.influxdb.annotations.Measurement;
import com.influxdb.client.InfluxDBClient;
import com.influxdb.client.InfluxDBClientFactory;
import com.influxdb.client.QueryApi;
import com.influxdb.client.WriteApiBlocking;
import com.influxdb.client.domain.WritePrecision;
import com.influxdb.client.write.Point;
import com.influxdb.query.FluxRecord;
import com.influxdb.query.FluxTable;

public class InfluxDB2Example {

    private static char[] token = "my-token".toCharArray();
    private static String org = "my-org";
    private static String bucket = "my-bucket";

    public static void main(final String[] args) {

        InfluxDBClient influxDBClient = InfluxDBClientFactory.create("http://localhost:8086", token, org, bucket);

        //
        // Write data
        //
        WriteApiBlocking writeApi = influxDBClient.getWriteApiBlocking();

        //
        // Write by Data Point
        //
        Point point = Point.measurement("temperature")
                .addTag("location", "west")
                .addField("value", 55D)
                .time(Instant.now().toEpochMilli(), WritePrecision.MS);

        writeApi.writePoint(point);

        //
        // Write by LineProtocol
        //
        writeApi.writeRecord(WritePrecision.NS, "temperature,location=north value=60.0");

        //
        // Write by POJO
        //
        Temperature temperature = new Temperature();
        temperature.location = "south";
        temperature.value = 62D;
        temperature.time = Instant.now();

        writeApi.writeMeasurement( WritePrecision.NS, temperature);
        
        influxDBClient.close();
    }

    @Measurement(name = "temperature")
    private static class Temperature {

        @Column(tag = true)
        String location;

        @Column
        Double value;

        @Column(timestamp = true)
        Instant time;
    }
}

查数据

可能看的不仔细和不认真的原因,我并没发现InfluxQurey可以写类SQL语句查询,好像过滤条件都需要用他们的flux语句来写查询

Java Demo

package example;

import java.time.Instant;
import java.util.List;

import com.influxdb.annotations.Column;
import com.influxdb.annotations.Measurement;
import com.influxdb.client.InfluxDBClient;
import com.influxdb.client.InfluxDBClientFactory;
import com.influxdb.client.QueryApi;
import com.influxdb.client.WriteApiBlocking;
import com.influxdb.client.domain.WritePrecision;
import com.influxdb.client.write.Point;
import com.influxdb.query.FluxRecord;
import com.influxdb.query.FluxTable;

public class InfluxDB2Example {

    private static char[] token = "my-token".toCharArray();
    private static String org = "my-org";
    private static String bucket = "my-bucket";

    public static void main(final String[] args) {

        InfluxDBClient influxDBClient = InfluxDBClientFactory.create("http://localhost:8086", token, org, bucket);

        //
        // Query data
        //
        String flux = "from(bucket:\"my-bucket\") |> range(start: 0)";

        QueryApi queryApi = influxDBClient.getQueryApi();

        List<FluxTable> tables = queryApi.query(flux);
        for (FluxTable fluxTable : tables) {
            List<FluxRecord> records = fluxTable.getRecords();
            for (FluxRecord fluxRecord : records) {
                System.out.println(fluxRecord.getTime() + ": " + fluxRecord.getValueByKey("_value"));
            }
        }

        influxDBClient.close();
    }

}

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值