😁 InfluxDB Java Client 사용해보기
해당 글에서는 Maven 으로 작성하였으며 Gradle를 사용하시는 분들이면 Gradle에 맞게 먼저 라이브러리를 Import 해준다
<dependency>
<groupId>com.influxdb</groupId>
<artifactId>influxdb-client-java</artifactId>
<version>6.1.0</version>
</dependency>
dependencies {
implementation "com.influxdb:influxdb-client-java:6.1.0"
}
해당 라이브러리를 사용해 데이터를 저장하는 방법은 총 3가지가 존재한다.
총 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를 하나 생성하고 다음 아래 그림 처럼 코드에서 작성한 속성값들을 체크하여 그래프로 출력해본다!