coredot.today
시계열 데이터베이스 완전 정복: 시간이 곧 데이터인 세계를 다루는 법
블로그로 돌아가기
시계열TSDBInfluxDBPrometheusTimestreamIoT모니터링

시계열 데이터베이스 완전 정복: 시간이 곧 데이터인 세계를 다루는 법

서버 CPU 사용률, IoT 센서 온도, 주가, 심박수 — 이 데이터의 공통점은 '시간에 따라 끊임없이 생성된다'는 것이다. 일반 DB에서 이 데이터를 다루면 왜 느리고, 시계열 DB는 어떻게 이 문제를 해결하며, 어떤 제품을 선택해야 하는지를 풀어본다.

코어닷투데이2026-03-1827

들어가며: "초당 10만 건이 들어오는 데이터를 어떻게 저장하지?"

당신이 IoT 플랫폼을 운영한다고 하자. 전국에 설치된 10만 대의 센서가 매초 온도·습도·진동 데이터를 보낸다.

  • 초당 데이터: 10만 건
  • 분당: 600만 건
  • 일당: 86억 4천만 건
  • 월당: 2,592억 건

이 데이터를 RDS(MySQL)에 넣으면 어떻게 될까?

수 시간 "지난 24시간 평균 온도" 쿼리 86억 행 스캔. 서비스 마비 수준
TB/일 스토리지 증가 속도 3개월이면 디스크 꽉
불가능 초당 10만 쓰기 RDS의 쓰기 성능 한계 초과

RDS는 이런 워크로드를 위해 설계되지 않았다. 문제의 핵심:

  1. 쓰기가 압도적: 읽기보다 쓰기가 수백~수천 배 많다
  2. 시간 순서: 데이터가 항상 시간 순서대로 도착한다
  3. 최신 데이터가 중요: "지금" 상태가 가장 중요하고, 1년 전 데이터는 덜 중요하다
  4. 집계 쿼리: 개별 행이 아니라 "시간 범위별 평균/최대/최소"가 핵심
  5. 자동 만료: 오래된 데이터는 자동으로 삭제하거나 압축해야 한다

이런 특수한 데이터를 위한 전문 DB가 시계열 데이터베이스(Time Series Database, TSDB) 다.


1. 시계열 데이터란

정의

시계열 데이터(Time Series Data)시간에 따라 순서대로 기록되는 데이터 포인트의 연속이다. 각 데이터 포인트는 반드시 타임스탬프를 가진다.

시계열 데이터의 예시

분야데이터빈도규모
서버 모니터링CPU, 메모리, 디스크, 네트워크매 초~분서버 수천 대 × 수십 메트릭
IoT/센서온도, 습도, 진동, 위치매 초~밀리초센서 수만~수백만 대
금융주가, 환율, 거래량매 밀리초수천 종목
사용자 행동페이지뷰, 클릭, 세션이벤트 기반수백만 사용자
의료심박수, 혈압, 산소포화도매 초환자 수만 명
에너지전력 소비, 발전량, 배터리 상태매 분수백만 스마트미터
물류차량 위치, 속도, 배송 상태매 초수만 대
💡
시계열 데이터의 특징을 한 문장으로: "시간이 지남에 따라 쉬지 않고 생성되고, 거의 수정되지 않으며, 최신이 가장 중요하고, 집계로 가치를 만드는 데이터." 이 네 가지 특징이 전용 DB를 필요로 만든다.

2. 일반 DB로 시계열을 다루면 왜 문제인가

RDS/Aurora에 시계열을 넣으면

hljs language-sql
CREATE TABLE sensor_data (
  id BIGINT AUTO_INCREMENT PRIMARY KEY,
  sensor_id VARCHAR(50),
  timestamp DATETIME(3),
  temperature FLOAT,
  humidity FLOAT,
  INDEX idx_sensor_time (sensor_id, timestamp)
);

초당 10만 건 INSERT. 한 달이면 2,592억 행. 문제:

1. 쓰기 병목: B-tree 인덱스는 INSERT마다 인덱스를 업데이트해야 한다. 데이터가 커질수록 INSERT가 느려진다.

2. 쿼리 병목: "지난 1시간의 센서별 평균 온도"를 구하려면 3.6억 행을 스캔.

3. 스토리지 폭발: 행 저장 + B-tree 인덱스 오버헤드로 데이터 크기가 원본의 2~3배.

4. 데이터 보존 정책 없음: 90일 지난 데이터를 자동으로 삭제하려면? DELETE WHERE timestamp < '...' — 2,592억 행에서 DELETE는 며칠이 걸린다.

시계열 DB가 이 문제를 해결하는 방법

문제일반 DB의 한계TSDB의 해결
쓰기 성능B-tree INSERT 병목LSM-tree / 시간 파티션 — 쓰기에 최적화
쿼리 성능전체 테이블 스캔시간 기반 인덱싱 — 시간 범위 쿼리 최적화
스토리지행 저장, 인덱스 오버헤드컬럼나 압축 — 90%+ 압축률
데이터 보존DELETE 쿼리 (느림)자동 만료(TTL) — 설정만 하면 자동 삭제
다운샘플링직접 구현 필요자동 다운샘플링 — 1초 → 1분 → 1시간 자동 집계

3. 시계열 DB의 역사

RRDtool: TSDB의 원조 (1999)

RRDtool(Round Robin Database) — 1999년, Tobias Oetiker가 개발. 네트워크 모니터링 도구 MRTG의 데이터 저장소로 시작.

혁신적 아이디어: 고정 크기 DB. 데이터가 계속 들어와도 DB 파일 크기가 절대 커지지 않는다. 오래된 데이터는 자동으로 집계(다운샘플링)되어 덮어쓰기된다. "라운드 로빈" = 원형 버퍼. 끝에 도달하면 처음부터 다시 쓴다.

OpenTSDB: 빅데이터 위의 TSDB (2010)

2010년, StumbleUpon(현 Mix)이 HBase 위에 구축한 시계열 DB. 수십억 데이터 포인트를 처리할 수 있었지만, HBase 클러스터 관리가 복잡했다.

InfluxDB: 시계열 전용 DB의 부상 (2013)

2013년, InfluxData가 시계열에 완전히 특화된 DB를 만들었다. 전용 쿼리 언어(InfluxQL/Flux), 자동 다운샘플링, 내장 보존 정책. TSDB 시장의 선두주자가 됐다.

Prometheus: 클라우드 네이티브 모니터링의 표준 (2012~)

SoundCloud의 엔지니어들이 개발하고, 2016년 CNCF의 두 번째 졸업 프로젝트(K8s 다음)가 된 Prometheus. 쿠버네티스 환경의 사실상 표준 모니터링 TSDB다.

1999
RRDtool
고정 크기 라운드 로빈 DB. 네트워크 모니터링의 표준. TSDB 개념의 원조
2010
OpenTSDB
HBase 기반. 수십억 데이터 포인트 처리. 빅데이터 TSDB의 시작
2012
Prometheus 개발 시작
SoundCloud에서 시작. 풀(Pull) 기반 메트릭 수집 모델
2013
InfluxDB
시계열 전용 DB. 전용 쿼리 언어, 자동 보존 정책
2018
AWS Timestream
AWS의 서버리스 TSDB. IoT Core와 네이티브 연동
2024~2026
TSDB의 수렴
ClickHouse, DuckDB가 시계열 지원 강화. 전용 TSDB와 범용 분석 DB의 경계가 흐려짐

4. TSDB의 핵심 기술

시간 기반 파티셔닝

TSDB는 데이터를 시간 단위(예: 시간별, 일별)로 파티셔닝한다.

시간 기반 파티셔닝
현재 시간 쓰기 집중
1시간 전 읽기 전용
2시간 전 압축 중
24시간+ 다운샘플링
30일+ 삭제(TTL)

장점:

  • 쓰기는 항상 최신 파티션에만 발생 → 쓰기 경합 최소화
  • "지난 1시간" 쿼리는 해당 파티션만 읽으면 됨 → 빠른 조회
  • 오래된 파티션은 통째로 삭제 → DELETE보다 수만 배 빠름

다운샘플링: 오래된 데이터의 해상도를 낮추기

"지금"의 데이터는 1초 단위로 필요하지만, 1년 전 데이터는 1시간 단위면 충분하다.

원본: 매 초 데이터 → 86,400건/일
  ↓ 24시간 후
1분 집계: → 1,440건/일 (60배 축소)
  ↓ 7일 후
1시간 집계: → 24건/일 (3,600배 축소)
  ↓ 90일 후
삭제 (TTL)

스토리지가 시간이 지나도 무한정 증가하지 않는다. 이것이 RRDtool에서 시작된 아이디어.

압축

시계열 데이터는 압축에 매우 유리하다:

  • 타임스탬프: Delta 인코딩 (차이만 저장)
  • 값: Gorilla 압축 (Facebook 논문, 2015)

Facebook의 2015년 VLDB 논문 "Gorilla: A Fast, Scalable, In-Memory Time Series Database"에서 제안한 XOR 기반 부동소수점 압축은 연속적인 시계열 값을 12배 압축할 수 있음을 증명했다. 이 기법은 Prometheus, InfluxDB, Timestream 등 대부분의 현대 TSDB에 채택됐다.


5. 주요 TSDB 제품 비교

제품유형강점적합한 경우
Prometheus오픈소스, K8s 표준K8s 네이티브, PromQL, 풀(Pull) 모델K8s 모니터링
InfluxDB오픈소스/클라우드전용 DB, 풍부한 기능, SQL 지원 (3.0)범용 TSDB
AWS Timestream서버리스 관리형AWS 네이티브, IoT Core 연동AWS IoT
Grafana Mimir오픈소스Prometheus 장기 저장소, 무한 확장대규모 Prometheus
TimescaleDBPostgreSQL 확장SQL 100% 호환, PostgreSQL 생태계SQL 익숙한 팀
ClickHouse컬럼나 OLAP초고속, 범용 분석 + 시계열분석 + 시계열 통합
VictoriaMetrics오픈소스Prometheus 호환, 저자원Prometheus 대안

Prometheus: K8s 모니터링의 사실상 표준

이 시리즈의 CloudWatch 글에서 "K8s 환경에서는 Prometheus가 표준"이라고 했다. Prometheus의 핵심:

  • 풀(Pull) 모델: 모니터링 대상이 데이터를 보내는 게 아니라, Prometheus가 주기적으로 가져간다
  • PromQL: 강력한 시계열 전용 쿼리 언어
  • Grafana: 시각화 표준 파트너
hljs language-promql
# 지난 5분간 HTTP 요청 에러율 (PromQL)
rate(http_requests_total{status=~"5.."}[5m])
/ rate(http_requests_total[5m]) * 100

TimescaleDB: "그냥 PostgreSQL에 시계열을"

TimescaleDB는 PostgreSQL의 확장(Extension) 으로 구현된 TSDB다. PostgreSQL의 모든 기능(SQL, JOIN, 인덱스, 트랜잭션)을 그대로 쓰면서 시계열 최적화를 추가한다.

TimescaleDB의 매력: 이미 PostgreSQL을 쓰고 있고, 시계열 데이터가 추가되는 경우 → 새 DB를 도입하지 않고 TimescaleDB 확장만 설치하면 된다. SQL 그대로, 기존 도구(pg_dump, pgAdmin) 그대로, 학습 비용 0. Aurora PostgreSQL에서도 사용 가능.

AWS Timestream: 서버리스 TSDB

AWS의 관리형 시계열 DB. 이 시리즈에서 반복되는 패턴 — 서버 관리 없이 데이터만 넣으면 된다.

핵심 기능:

  • 메모리 + 마그네틱 자동 티어링: 최근 데이터는 메모리, 오래된 데이터는 마그네틱 스토리지로 자동 이동
  • SQL 호환: 시계열 전용 함수 포함
  • IoT Core 직접 연동: IoT 센서 → Timestream 직접 적재

6. 보안: 시계열 데이터의 민감성

시계열 데이터는 "행동의 기록"이다

시계열 데이터가 유출되면 사람의 행동 패턴이 노출된다:

  • 심박수/혈압 데이터 → 건강 상태
  • 위치 추적 데이터 → 동선, 거주지, 직장
  • 전력 사용 패턴 → 재실 여부, 생활 패턴
  • 서버 메트릭 → 인프라 규모, 취약 시간대
2018
Strava 히트맵: 군사 기지 노출
피트니스 앱 Strava가 사용자 운동 경로의 히트맵을 공개. 시리아·아프간 등의 미군 기지 위치와 순찰 경로가 노출. 시계열 위치 데이터의 민감성을 보여준 사건
2020
스마트미터 데이터로 생활 패턴 추론
연구 논문에서 스마트미터의 전력 소비 시계열 데이터만으로 가정의 TV 시청 시간, 취침 시간, 재실 여부를 90% 이상 정확도로 추론 가능함을 증명
🔒
시계열 보안 원칙: (1) 위치·건강 등 민감 시계열 데이터는 암호화 필수, (2) 접근 제어는 시간 범위와 메트릭 단위로 세분화 ("팀 A는 자기 서비스 메트릭만"), (3) 보존 정책(TTL)으로 불필요하게 오래 보관하지 않기, (4) 시계열 데이터를 외부 공개할 때는 집계/익명화 후 공개.

7. 실전: 어떤 TSDB를 선택할 것인가

의사결정 가이드

시계열 데이터를 어디에 저장할까?
K8s 인프라 모니터링 Prometheus + Grafana
IoT 센서 (AWS) Timestream
이미 PostgreSQL 사용 TimescaleDB
범용 TSDB + SQL InfluxDB 3.0
시계열 + 일반 분석 통합 ClickHouse
가장 현실적인 조언: 시계열 데이터가 CloudWatch/Prometheus로 충분한 규모라면, 전용 TSDB를 추가하지 마라. CloudWatch가 AWS 인프라 메트릭을, Prometheus가 K8s 메트릭을 이미 시계열로 저장하고 있다. 이것만으로는 부족할 때 — IoT 수십만 센서, 커스텀 비즈니스 메트릭 수억 건, 장기 보관 필요 — 그때 전용 TSDB를 도입하라.

8. 실제 사례

Tesla: 차량 텔레메트리

Tesla의 모든 차량은 초당 수백 개의 시계열 데이터 포인트(배터리 상태, 모터 온도, GPS, 가속도)를 전송한다. 수백만 대의 차량에서 발생하는 이 데이터는 자율주행 학습, 원격 진단, 리콜 판단에 사용된다.

Uber: 실시간 시스템 모니터링

Uber는 M3(자체 개발 TSDB)로 수천 개의 마이크로서비스에서 발생하는 초당 수십억 개의 메트릭 데이터 포인트를 수집·저장·쿼리한다.

Cloudflare: 글로벌 네트워크 모니터링

Cloudflare는 전 세계 300+ 데이터센터의 네트워크 장비, DNS 쿼리, DDoS 트래픽을 시계열 데이터로 수집한다. ClickHouse를 사용하여 초당 수백만 건의 메트릭을 실시간 분석.

한국 기업 사례

  • 쿠팡: 로켓배송 물류 시스템의 실시간 모니터링에 Prometheus + Grafana
  • 카카오: 인프라 모니터링에 Prometheus, 자체 시계열 시스템으로 서비스 메트릭 관리
  • 현대자동차: 커넥티드 카 텔레메트리 데이터를 시계열 DB에 저장. OTA 업데이트, 원격 진단
  • SK텔레콤: IoT 플랫폼(ThingPlug)에서 수백만 IoT 기기의 센서 데이터를 시계열로 관리

9. 시계열 DB의 미래

범용 DB와의 수렴

2026년의 트렌드: 전용 TSDB와 범용 분석 DB의 경계가 흐려지고 있다.

  • ClickHouse: 원래 분석용 컬럼나 DB이지만, 시계열에도 최적화
  • DuckDB: 시계열 분석 확장 지원
  • PostgreSQL + TimescaleDB: 관계형 + 시계열 통합
  • InfluxDB 3.0: 내부적으로 Apache Arrow + DataFusion 기반으로 재작성. 범용 분석 기능 강화

AI/ML과 시계열

시계열 데이터는 AI/ML의 핵심 입력이다:

  • 이상 감지(Anomaly Detection): 평소 패턴에서 벗어나는 이상값 자동 탐지
  • 예측(Forecasting): 과거 패턴을 학습하여 미래 값 예측 (수요 예측, 부하 예측)
  • 분류(Classification): 시계열 패턴으로 장비 상태 분류 (정상/경고/고장)

AWS Timestream은 Timestream for LiveAnalytics에서 이상 감지를 내장 제공하고, CloudWatch는 Anomaly Detection 기능으로 메트릭의 이상을 AI가 자동 감지한다.


마치며: "시간이 곧 데이터의 축이다"

이 시리즈에서 다룬 전체 데이터 생태계의 최종 지도를 완성하면:

데이터 특성DB 유형대표 제품핵심 질문
구조화된 관계형행 저장 RDBMSAurora, RDS"이 주문의 상태는?"
유연한 문서형문서 DBMongoDB"이 사용자의 프로필은?"
초고속 키-값키-값 DBDynamoDB"이 세션의 데이터는?"
텍스트/벡터 검색검색 엔진OpenSearch"이 키워드가 포함된 문서는?"
대규모 분석컬럼나 DWRedshift, BigQuery"지난 1년 카테고리별 매출?"
시간 순서 데이터시계열 DBPrometheus, InfluxDB, Timestream"지난 1시간 CPU 평균은?"
파일/오브젝트오브젝트 스토리지S3"이 파일을 저장/가져와"

각 DB 유형은 다른 차원의 질문에 최적화되어 있다. 시계열 DB는 "시간"이라는 축이 핵심인 데이터를 위한 전문 도구다.

코어닷투데이의 AI 서비스에서도 시계열 데이터는 곳곳에 있다. AI 추론 서버의 응답 시간 추이(Prometheus), IoT 키오스크의 센서 데이터(Timestream), 서비스 사용량 메트릭(CloudWatch) — 이 모든 데이터가 시간의 축 위에서 흐르고, 시계열 DB가 그 흐름을 포착하고 분석한다.

"데이터에는 여러 차원이 있지만, 시간은 가장 보편적인 차원이다." 시계열 DB는 이 가장 보편적인 차원을 가장 효율적으로 다루는 도구다.