간단하게 정리하였습니다!
인플럭스db는 시계열(Time Series) 데이터베이스 중 하나로, RDBMS와 많은 점에서 유사하지만 모든 Row가 Time이라고 불리는 고유한 시간값을 가진다는 점에서 차별점을 갖는 형태의 데이터 베이스 입니다.
InfluxDB의 목적은 관계형 데이터를 저장하는 것이 아니라 지속적으로 수집되는 값들을 시간의 차원에서 관리하기 용이하도록 만들어 졌다고 할 수 있습니다!
스프링 부트에서 연동하는 방법은 간단합니다.
1. 관련된 라이브러리를 받습니다.
* maven 기준
<dependency>
<groupId>org.influxdb</groupId>
<artifactId>influxdb-java</artifactId>
</dependency>
2. 연결할 클래스를 생성하여 줍니다.
인플럭스DB 자체는 HTTP 프로토콜을 활용한 서버를 제공하여 주기 때문에 쉽게 연결 가능 합니다!
import org.influxdb.InfluxDB;
import org.influxdb.InfluxDBFactory;
public class InfluxDbConnector { //연결용 클래스 입니다.
private static final String DB_URL = "http://주소:8086";
private static final String DB_ID = "root";
private static final String DB_PWD = "root";
private static InfluxDbConnector inf;
private InfluxDB db = null;
private InfluxDbConnector() { }
public static InfluxDbConnector getInstance() {
synchronized(InfluxDbConnector.class) {
if(inf == null) {
inf = new InfluxDbConnector();
inf.tryToConnecting();
}
}
return inf;
}
private void tryToConnecting() {
db = InfluxDBFactory.connect(DB_URL, DB_ID, DB_PWD);
}
public InfluxDB getDb() {
try {
if(db == null || db.ping() == null){
synchronized(inf) {
db = InfluxDBFactory.connect(DB_URL, DB_ID, DB_PWD);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return db;
}
}
3. 서비스에서 사용하는 방법은 간단합니다.
import org.influxdb.InfluxDB;
import 위에서만든패키지.InfluxDbConnector;
import org.influxdb.dto.Query;
import org.influxdb.dto.QueryResult;
import org.influxdb.dto.QueryResult.Result;
import org.influxdb.dto.QueryResult.Series;
@Service
public class 내서비스{
//위에서 만들어준 접속용 인플럭스DB 연결 클래스
private static final InfluxDbConnector conn = InfluxDbConnector.getInstance();
protected static final InfluxDB infDB = conn.getDb();
public void getList(){
Query query = new Query("쿼리문", "DB이름");
QueryResult ask = infDB.query(query); //List + Map형태의 객체(CRUD 전부)
}
}
위 내용이 끝 입니다!
결과 또한 List와 Map형태로 나오기 때문에 직관적이라 할 수 있습니다.
인플럭스에서 사용되는 쿼리 형태는 일반 sql문과 비슷 합니다.
docs.influxdata.com/influxdb/v1.8/query_language/
아래 사진처럼 key, value 형태로 결과가 나타 납니다.
주변에서 많이 사용되지 않는 데이터베이스 형태 이지만 시간(time)이 주요 핵심이라는 점이 매우 흥미로웠던 것 같습니다.
Spring boot에서 인플럭스DB연동에 대해 간단하게 알아 보았습니다.
반응형
'Spring framework > Spring boot' 카테고리의 다른 글
SpringBoot change Java 8 to Java 11(스프링 부트 Java 1.8을 11로 변경) (0) | 2020.12.02 |
---|---|
Springboot 터널링(스프링 부트 터널링, Spring boot ssh, 스프링 부트 ssh) (2) | 2020.11.25 |
remove Springboot jsessionid , 스프링부트 jsession 제거 (0) | 2019.12.03 |
Spring boot 마이바티스, Spring boot mybatis, 스프링부트 mybatis 적용 (2) | 2019.12.02 |
스프링부트 배너, Springboot banner, 스프링부트 웰컴 메시지 관리 (0) | 2019.12.02 |
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)
댓글