본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


Spring framework/Spring boot

SpringBoot InfluxDB(Spring boot 인플럭스DB)

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2020. 11. 19.

간단하게 정리하였습니다!

 

인플럭스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/

 

Influx Query Language (InfluxQL) | InfluxDB OSS 1.8 Documentation

 

docs.influxdata.com

 

아래 사진처럼 key, value 형태로 결과가 나타 납니다.

없으면 null, 있으면 값을 넣어 줍니다.

 

주변에서 많이 사용되지 않는 데이터베이스 형태 이지만 시간(time)이 주요 핵심이라는 점이 매우 흥미로웠던 것 같습니다.

Spring boot에서 인플럭스DB연동에 대해 간단하게 알아 보았습니다.

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글