본문 바로가기

카테고리 없음

InfluxDB

반응형

https://docs.influxdata.com/influxdb3/core/

시계열 데이터저장 할 때 어떤 DB를 사용하면 좋냐고 claude에게 물어보니 죽어도 InfluxDB 사용하라고 해서 공부한다.

 

아래는 claude 가 주장하는 비트코인 데이터를 1초마다 저장한다고 가정할 경우에 해당하는 내용이다.

데이터 조회 시간 (1억 건 기준)

기간 InfluxDB MongoDB PostgreSQL
1시간 20ms 500ms 2초
1일 50ms 2초 8초
1주 100ms 10초 30초
1개월 200ms 45초 2분

저장 공간 (1년 데이터)

해상도 InfluxDB MongoDB PostgreSQL
1초 100GB 300GB 250GB
1분 집계 2GB 8GB 6GB
1시간 집계 50MB 200MB 150MB

 

InfluxDB 특징

influxDB는 실시간 시계열 데이터에 특화되어있다.

  • 모니터링 데이터 (센서, 서버로그, 퍼포먼스, 네트워크)
  • 금융시장 거래 분석
  • 행동분석

압축 알고리즘을 사용해서 데이터를 저장할 때 공간을 조금 차지한다.

# 예시: 비트코인 가격 데이터
prices = [50000, 50001, 50002, 50001, 50003]

# InfluxDB 압축 방식 (Delta + RLE)
deltas = [50000, +1, +1, -1, +2]  # 차이값 저장
# 더 적은 공간 사용, 패턴 감지 가능

 

압축 알고리즘:

  • Delta Encoding: 이전 값과의 차이만 저장
  • Run Length Encoding: 반복되는 패턴 압축
  • Gorilla Compression: Facebook이 개발한 시계열 전용 압축

데이터

  • String dictionary (tag)
  • int64 (field)
  • float64 (field)
  • uint64 (field)
  • bool (field)
  • string (field)
  • time (time with nanosecond precision)

프로세싱 엔진

InfluxDB 내부에 python vm이 있어서 코드를 주기적으로 실행하거나 HTTP requests 를 요청 할 수 있다!

이를 활용하면 아래와 같은 일을 InfluxDB 내부적으로 수행할 수 있다.

  • 데이터 변경 후 저장
  • job schedule: cron 처럼 스케쥴링
  • HTTP requests

사실상 파이썬으로 할 수 있는 대부분의 것을 할 수 있는 것 같다. 파이썬 패키지도 설치해서 활용 가능하다.

데이터 시각화

그라파나와 호환이 좋다. 데이터 시각화 하기에 좋다.

MCP 서버

LLM을 활용해서 plain English를 사용한 SQL query 가 가능하다고 한다!

LLM에 조회권한만 주게 설정 할 수 있다면 재밌는 프로젝트가 가능할 것 같다

Install

로컬설치 (linux, windows, macos 모두 지원)와 docker 설치가 가능하다.

docker run \
    -p 8086:8086 \
    -v "$PWD/data:/var/lib/influxdb2" \
    -v "$PWD/config:/etc/influxdb2" \
    influxdb:2-alpine

 

localhost:8686 에 접속하면 화려한 대쉬보드가 기다린다..