DATABASE

시계열 데이터베이스 InfluxDB 활용 가이드

junetapa 2026. 2. 18 12 min read

InfluxDB는 시계열 DB 부문 1위를 꾸준히 유지하는 오픈소스 솔루션이다. 초당 수십만 포인트 입력이 가능하고, 자동 압축으로 스토리지 효율도 뛰어나다. 설치부터 Flux 쿼리, 다운샘플링, Grafana 연동까지 정리했다.

시계열 데이터베이스란? InfluxDB를 선택한 이유

시계열 데이터의 특성

시계열 데이터는 말 그대로 시간 순서대로 기록되는 데이터다. 서버 CPU 사용률, IoT 센서 온도, 주식 가격, 웹사이트 트래픽 등이 대표적이다. 이런 데이터는 한 가지 공통점이 있다. 한번 기록되면 거의 수정되지 않고, 시간이 지나면 점점 덜 중요해진다는 점다.

기존 관계형 데이터베이스(MySQL, PostgreSQL)로도 시계열 데이터를 저장할 수 있다. 하지만 초당 수천~수만 건의 데이터가 쏟아지는 환경에서는 쓰기 성능과 스토리지 효율이 심각한 병목이 된다. 실제로 제가 IoT 프로젝트에서 PostgreSQL로 센서 데이터를 저장했을 때, 데이터가 1억 건을 넘어가자 집계 쿼리 하나에 30초 이상 걸리기 시작했다.

왜 InfluxDB인가

InfluxDB는 시계열 DB 중에서도 가장 널리 쓰이는 오픈소스 솔루션다. DB-Engines 랭킹에서 시계열 데이터베이스 부문 1위를 꾸준히 유지하고 있고, 커뮤니티와 문서가 풍부한다. 특히 다음 세 가지가 저를 끌어당겼다.

  • 압도적인 쓰기 성능: 초당 수십만 포인트 입력이 가능한다. IoT 환경에서 이건 정말 중요한다.
  • 자동 데이터 압축: TSM(Time-Structured Merge Tree) 엔진 덕분에 스토리지 사용량이 기존 RDB 대비 10분의 1 수준다.
  • 리텐션 폴리시: "30일 지난 데이터는 자동 삭제" 같은 정책을 설정하면 스토리지 관리가 자동화된다.

InfluxDB 설치부터 첫 번째 데이터 입력까지

설치 방법 (v2.x 기준)

InfluxDB 2.x는 Docker로 설치하는 게 가장 간편한다. 터미널에서 아래 명령어 한 줄이면 된다.

docker run -d -p 8086:8086 --name influxdb influxdb:2.7

설치 후 브라우저에서 http://localhost:8086에 접속하면 웹 UI가 나타납니다. 초기 설정에서 Organization, Bucket(데이터 저장소), API 토큰을 만들면 준비 완료다. 솔직히 이 웹 UI가 정말 잘 만들어져 있어서, 처음 접하는 분들도 5분이면 셋업을 끝낼 수 있다.

Line Protocol로 데이터 쓰기

InfluxDB에 데이터를 입력하는 기본 형식은 Line Protocol다. 구조는 이렇다.

measurement,tag_key=tag_value field_key=field_value timestamp

실제 예시를 보면 훨씬 이해가 빠릅니다.

temperature,location=서울,device=sensor01 value=23.5 1708900000000000000

여기서 temperature는 측정 항목(테이블명과 비슷), locationdevice는 태그(인덱싱되는 메타데이터), value는 실제 필드값, 마지막 숫자는 나노초 단위 Unix 타임스탬프다.

Node.js 클라이언트로 자동 수집하기

실무에서는 클라이언트 라이브러리를 사용한다. Node.js 예시를 보겠다.

npm install @influxdata/influxdb-client

설치 후 IoT 센서 데이터를 주기적으로 전송하는 코드를 작성할 수 있다. WriteApi를 사용해서 Point 객체를 만들고, 태그와 필드를 설정한 뒤 writePoint()로 전송하면 된다. 배치 모드를 활용하면 네트워크 오버헤드도 줄일 수 있어서, 수백 개의 IoT 디바이스에서 동시에 데이터가 들어와도 문제없이 처리된다.

InfluxDB 시계열 DB IoT Flux Grafana 모니터링
junetapa
junetapa
AI 도구를 직접 써보고 솔직한 경험을 공유하는 개발자.
Twitter Facebook URL 복사