반응형
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 에 접속하면 화려한 대쉬보드가 기다린다..