[InfluxDB] InfluxDB Java Client

makengi·2022년 6월 6일
0

InfluxDB

목록 보기
3/3

😁 InfluxDB Java Client 사용해보기

이전까지 해서 Docker 구성과 간단한 InfluxDB커맨드라인까지 사용해보았으니 여기선 간단하게 InfluxDB Java Client를 사용하여 Data를 Input를 해보려고 한다

해당 글에서는 Maven 으로 작성하였으며 Gradle를 사용하시는 분들이면 Gradle에 맞게 먼저 라이브러리를 Import 해준다

📃 influxdb-client-java 라이브러리 Import


  • Maven 라이브러리 Import
	<dependency>
      <groupId>com.influxdb</groupId>
      <artifactId>influxdb-client-java</artifactId>
      <version>6.1.0</version>
	</dependency>
  • Gradle 라이브러리 Import
dependencies {
    implementation "com.influxdb:influxdb-client-java:6.1.0"
}

📜 InfluxClient.java

해당 라이브러리를 사용해 데이터를 저장하는 방법은 총 3가지가 존재한다.

  1. 포인트(Point) 객체로 데이터를 저장하는 방법
    Point란 일반 RDB에서의 Row라고 생각하면 된다.
  2. String 방식으로 데이터를 저장하는 방법
  3. Pojo 객체를 이용한 방법

총 3가지 방법중에 입맛에 맞는 방식으로 데이터를 저장하면 될것으로 보여진다.

코드내에서 등장하는 WritePrecision은 시간의 단위에 해당되는 정보!


public class InfluxClient {
	
	private static char[] token="admintoken123".toCharArray();
	private static String org="c5341a024b1fc1b1";
	private static String bucket="test";
	
    public static void main(String[] args) throws IOException {
    	InfluxDBClient influxDBClient = InfluxDBClientFactory.create("http://ipaddr:8086",token,org,bucket);
    	
    	WriteApiBlocking writeApi = influxDBClient.getWriteApiBlocking();
    	
    	//1. 포인트 객체로 데이터를 저장하는 방법 
    	Point point = Point.measurement("temperature")
    				.addTag("location", "west")
    				.addField("value", 50D)
    				.time(Instant.now().toEpochMilli(), WritePrecision.MS);
    	writeApi.writePoint(point);
    	
        //2. String 방식으로 데이터를 저장하는 방법
    	writeApi.writeRecord(WritePrecision.NS,"temperature,location=north value=35.0");
    	
    	//3. Pojo 객체를 이용한 방법
    	Temperature temperature = new Temperature();
    	temperature.location = "south";
    	temperature.value=45D;
    	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;
    	
    }
    
}

📜 결과


위의 코드를 간단하게 해석하자면
test bucket의 temperature 테이블의 location:west / location:south / location:north에 value값을 저장하는 코드로 볼 수 있다.
이 코드를 실행시키고 나서 InfluxDB 화면에서 그래프로 저장된 데이터를 출력해볼 수 있는데 새로운 DashBoard를 하나 생성하고 다음 아래 그림 처럼 코드에서 작성한 속성값들을 체크하여 그래프로 출력해본다!

0개의 댓글