핵심 인사이트 (3줄 요약)

  1. 본질: 시계열 DB의 다운샘플링(Downsampling)은 고해상도 데이터를 시간 경과에 따라 자동으로 저해상도로 롤업하여 스토리지를 최대 99.97%까지 절감한다.
  2. 가치: 1초 단위 원시 데이터를 무기한 보관하면 연간 TB~PB 급 스토리지가 필요하지만, 다운샘플링으로 실제 비용 지출을 1%대로 압축할 수 있다.
  3. 판단 포인트: 롤업 후 원시 데이터는 삭제되므로, 어느 시간 해상도까지 보존할지를 사전에 비즈니스 요구사항과 함께 결정해야 한다.

Ⅰ. 개요 및 필요성

IoT 센서, 서버 메트릭, 금융 시세 데이터는 초당 수천~수백만 건의 데이터 포인트를 생성한다. 이 데이터를 모두 원시 형태로 무기한 보관하면 스토리지 비용이 폭발적으로 증가한다.

InfluxDB는 시계열 전용 TSDB (Time-Series Database)로, 리텐션 정책(Retention Policy)과 연속 쿼리(Continuous Query) 또는 Task(InfluxDB 2.x)를 통해 자동 다운샘플링을 지원한다.

스토리지 절감 계산:

  • 1초 데이터 1일 = 86,400 포인트 (100%)
  • 1분 롤업 1일 = 1,440 포인트 (절감 98.3%, 1.7% 남음)
  • 1시간 롤업 1일 = 24 포인트 (절감 99.97%, 0.03% 남음)

📢 섹션 요약 비유: 다운샘플링은 사진 원본을 수년 후 썸네일로 압축 저장하는 것이다. 오래될수록 해상도는 낮아지지만 공간은 훨씬 절약된다.

Ⅱ. 아키텍처 및 핵심 원리

InfluxDB 핵심 개념

개념설명예시
Measurement테이블에 해당cpu_usage
Tag인덱스되는 메타데이터 (String)host=server01
Field실제 측정값 (Number)value=82.5
Timestamp나노초 정밀도2024-01-15T12:00:00Z
Retention Policy데이터 보관 기간30d, INF
Continuous Query자동 집계 작업MEAN 1분 롤업

Tag vs Field 설계 원칙

  • Tag (인덱싱됨): 자주 필터링하는 저카디널리티 값 (host, region, env)
  • Field (비인덱싱): 측정 수치 (CPU%, 온도, 응답시간)
  • 고카디널리티 값을 Tag로 쓰면 인덱스 폭발 → DB 성능 급락

ASCII 다이어그램: 데이터 보존 계층 (Retention Tier)

  실시간 수집 (초당 수천 포인트)
        │
        ▼
  ┌──────────────────────────────────────────────────────────────┐
  │  Tier 1: Raw (1초 해상도)                                    │
  │  보관: 30일  스토리지: 100%  용도: 실시간 모니터링·알람       │
  └───────────────────────────┬──────────────────────────────────┘
                              │ Continuous Query: MEAN(value) 1분
                              ▼
  ┌──────────────────────────────────────────────────────────────┐
  │  Tier 2: 1분 롤업                                            │
  │  보관: 1년   스토리지: 1.7%  용도: 일간 트렌드·용량 계획     │
  └───────────────────────────┬──────────────────────────────────┘
                              │ Continuous Query: MEAN(value) 1시간
                              ▼
  ┌──────────────────────────────────────────────────────────────┐
  │  Tier 3: 1시간 롤업                                          │
  │  보관: 5년+  스토리지: 0.03%  용도: 연간 리포트·장기 분석    │
  └──────────────────────────────────────────────────────────────┘

TSM 스토리지 엔진 (Time-Structured Merge Tree)

InfluxDB는 LSM (Log-Structured Merge Tree) 변형인 TSM 엔진을 사용한다.

  • WAL (Write-Ahead Log) → 인메모리 Cache → TSM 파일 → Compaction
  • 시계열 특성상 쓰기는 항상 최신 타임스탬프 → 압축 효율 극대화
TSDB 비교InfluxDBTimescaleDBPrometheus
기반전용 TSMPostgreSQL 확장자체 TSDB
쿼리 언어Flux/InfluxQLSQLPromQL
주요 용도IoT, 메트릭금융, 이벤트K8s 모니터링

📢 섹션 요약 비유: TSM 엔진은 날짜별로 자동 정리되는 일기장이다. 새 내용은 날짜 순서대로 추가되고, 오래된 페이지는 자동으로 요약·압축된다.

Ⅲ. 비교 및 연결

시계열 DB 활용 패턴

패턴도구 선택이유
Kubernetes 메트릭PrometheusPromQL 생태계, Alert 통합
IoT 장비 데이터InfluxDB고쓰기 처리량, 다운샘플링
금융 시계열 분석TimescaleDBSQL 쿼리, 복잡 JOIN

📢 섹션 요약 비유: Prometheus는 단거리 달리기 선수(짧은 보관, 빠른 조회), InfluxDB는 중거리 선수(중기 보관, 다운샘플링), TimescaleDB는 마라톤 선수(장기 보관, SQL 분석)다.

Ⅳ. 실무 적용 및 기술사 판단

다운샘플링 설계 체크리스트

  • 데이터 소스별 수집 빈도 파악 (초당 포인트 수)
  • 비즈니스별 최소 필요 해상도 정의 (알람: 1초, 트렌드: 1분, 리포트: 1시간)
  • 롤업 집계 함수 선정: MEAN, MAX, MIN, SUM
  • 원시 데이터 보관 기간 결정 (스토리지 비용과 분석 요구 균형)
  • 고카디널리티 Tag 사용 금지 (UUID, 사용자 ID는 Field로)

안티패턴

안티패턴문제해결 방법
모든 데이터 무기한 보관스토리지 폭발, 성능 저하Retention Policy 필수 설계
UUID를 Tag로 사용카디널리티 폭발 → DB 메모리 부족Field로 변경
단일 Measurement에 모든 메트릭태그 조합 폭발도메인별 Measurement 분리

📢 섹션 요약 비유: 고카디널리티 Tag는 도서관에서 책마다 새 서가를 만드는 것이다. 서가가 폭발해 도서관이 무너진다.

Ⅴ. 기대효과 및 결론

항목다운샘플링 미적용적용 후
스토리지 (1년)100%1초→1분: 1.7%, 1초→1시간: 0.03%
장기 쿼리 속도수분 (수억 행 스캔)수초 (소량 롤업 데이터)
인프라 비용매월 증가예측 가능한 고정 비용

📢 섹션 요약 비유: 다운샘플링 후 원시 데이터 삭제는 음식을 냉동 건조하는 것이다. 공간은 극적으로 줄지만 원래 맛(세밀한 분석)을 완전히 재현하기는 어렵다.

📌 관련 개념 맵

개념관계설명
InfluxDB플랫폼시계열 전용 TSDB
Retention Policy핵심 설정데이터 보관 기간 정책
Continuous Query핵심 기능자동 집계·롤업
TSM Engine저장 엔진시계열 최적화 저장 구조
Tag vs Field설계 원칙인덱스 폭발 방지

📈 관련 키워드 및 발전 흐름도

RDB 시계열 저장 - 쓰기 병목·스토리지 폭증
    │
    ▼
시계열 DB 전용 (InfluxDB, Prometheus) 등장
    │
    ▼
고해상도 실시간 데이터 → 시간 경과 후 용량 문제
    │
    ▼
Downsampling - 집계 함수로 해상도 단계적 축소
    │
    ▼
Retention Policy + CQ (Continuous Query) 자동화

키워드: InfluxDB, Time Series DB, Downsampling, Retention Policy, Continuous Query, Prometheus, Telegraf, Flux

👶 어린이를 위한 3줄 비유 설명

  1. 시계열 DB는 매초 사진을 찍는 카메라예요. 오래된 사진은 자동으로 작은 썸네일로 압축돼요.
  2. 다운샘플링은 1분치 사진 60장을 1장의 평균 사진으로 만드는 거예요.
  3. Tag는 서랍 라벨, Field는 서랍 안 물건이에요. 라벨이 너무 많으면 서랍장이 꽉 차서 못 열어요.