Kim-Baek 개발자 이야기

MongoDB Time Series Collection (몽고DB 시계열 컬렉션)란? 본문

컴퓨터 공학/DB

MongoDB Time Series Collection (몽고DB 시계열 컬렉션)란?

김백개발자 2025. 1. 21. 15:49
반응형

MongoDB Time Series Collection (몽고DB 시계열 컬렉션)란?

MongoDB는 5.0 버전부터 **Time Series Collection(시계열 컬렉션)**을 제공하여 시계열 데이터(시간 기반 데이터)를 효율적으로 저장, 인덱싱, 분석할 수 있도록 지원합니다.

💡 MongoDB의 Time Series Collection은 일반 컬렉션과 다르게 데이터를 시간 중심으로 최적화하여 저장하는 기능을 제공하며, 기존 RDBMS 기반의 Time Series DB와 차별화된 유연성을 갖습니다.


1️⃣ MongoDB Time Series Collection의 특징

시계열 데이터 최적화

  • 데이터를 자동으로 압축 및 그룹핑하여 저장 공간을 절약
  • 읽기 및 분석 성능 향상

자동화된 시계열 인덱싱

  • 시간(timestamp) 필드를 기반으로 인덱싱 최적화
  • 데이터 삽입 시 자동으로 시계열 특화 구조로 저장

빠른 Aggregation (집계) 연산

  • time bucket(시간 단위 그룹핑) 기능 제공
  • 최대값, 최소값, 평균, 표준편차 등 계산을 빠르게 수행

자동 데이터 분할 및 삭제 (TTL 지원)

  • 일정 시간이 지나면 자동으로 데이터 삭제 가능 (expireAfterSeconds 설정)
  • 데이터 보관 비용 절감

NoSQL의 유연한 데이터 구조

  • 기존 Time Series DB보다 더 유연하게 데이터 모델링 가능
  • JSON 기반 문서 저장 방식으로 다양한 데이터 유형 저장 가능

기존 MongoDB와 호환성 유지

  • 일반 컬렉션처럼 MongoDB의 강력한 쿼리 기능(Aggregation, Indexing 등)을 그대로 사용 가능

2️⃣ MongoDB Time Series Collection vs 일반 컬렉션

비교 항목 MongoDB Time Series Collection 일반 MongoDB Collection

저장 구조 시간(timestamp) 필드를 중심으로 최적화된 저장 방식 문서(Document) 단위 저장
인덱스 자동으로 timestamp 기반 인덱싱 수동으로 인덱스 추가 필요
성능 시계열 데이터 분석 및 집계에 최적화됨 범용 데이터 저장 및 쿼리 수행
데이터 삭제 expireAfterSeconds로 자동 삭제 가능 명시적으로 deleteMany() 실행 필요
스토리지 효율 자동 압축 및 시간 기반 그룹핑 문서 개별 저장으로 다소 비효율적

💡 즉, Time Series Collection은 timestamp를 중심으로 데이터를 다룰 때 MongoDB에서 훨씬 더 강력한 성능을 발휘할 수 있습니다!


3️⃣ MongoDB Time Series Collection 생성 방법

✅ 1. Time Series Collection 생성

MongoDB에서는 createCollection()을 사용할 때 time series 옵션을 추가하여 시계열 컬렉션을 생성할 수 있습니다.

db.createCollection("sensor_data", {
  timeseries: {
    timeField: "timestamp",  // 필수: 시간 필드 지정
    metaField: "metadata",   // 선택: 센서 ID 등 메타데이터 저장
    granularity: "seconds"   // 선택: 시간 단위 (seconds, minutes, hours)
  },
  expireAfterSeconds: 31536000  // 선택: 1년(365일) 후 데이터 자동 삭제
});

📌 설명:

  • timeField: 시간 필드를 지정 (필수)
  • metaField: 센서 ID, 위치 등의 메타데이터 필드 추가 (선택)
  • granularity: 데이터 수집 빈도에 따라 설정 (seconds, minutes, hours)
  • expireAfterSeconds: 일정 시간이 지나면 데이터 자동 삭제 (TTL 기능)

✅ 2. 데이터 삽입 (Insert)

시계열 컬렉션에 데이터를 추가하는 방식은 일반 MongoDB와 동일합니다.

db.sensor_data.insertMany([
  { 
    timestamp: new Date("2025-01-20T10:00:00Z"),
    metadata: { sensorId: "A123", location: "Seoul" },
    temperature: 23.5,
    humidity: 55
  },
  { 
    timestamp: new Date("2025-01-20T10:01:00Z"),
    metadata: { sensorId: "A123", location: "Seoul" },
    temperature: 23.7,
    humidity: 54
  }
]);

📌 설명:

  • timestamp 필드 값은 반드시 날짜 형식(ISODate 또는 new Date())이어야 함
  • metadata 필드는 선택적으로 사용할 수 있으며, 쿼리 필터링에 유용

✅ 3. 데이터 조회 및 집계 (Aggregation)

(1) 최근 1시간 동안 센서별 평균 온도 조회

db.sensor_data.aggregate([
  { $match: { timestamp: { $gte: new Date(Date.now() - 3600 * 1000) } } },
  { $group: { _id: "$metadata.sensorId", avgTemp: { $avg: "$temperature" } } }
]);

💡 설명:

  • $match: 최근 1시간 동안의 데이터만 필터링
  • $group: sensorId별 평균 온도 계산

(2) 10분 단위로 온도 평균 계산

db.sensor_data.aggregate([
  { $bucketAuto: { groupBy: "$timestamp", buckets: 6, output: { avgTemp: { $avg: "$temperature" } } } }
]);

💡 설명:

  • $bucketAuto: MongoDB가 자동으로 시간 구간을 나누어 집계 수행
  • 온도(temperature)의 평균 값을 6개의 그룹으로 나누어 계산

✅ 4. 데이터 자동 삭제 설정 (TTL 기능)

MongoDB Time Series Collection은 일정 시간이 지나면 **자동으로 데이터를 삭제하는 기능(TTL, Time-To-Live)**을 제공합니다.

db.createCollection("sensor_data", {
  timeseries: {
    timeField: "timestamp",
    granularity: "minutes"
  },
  expireAfterSeconds: 2592000  // 30일 후 데이터 자동 삭제 (30 * 24 * 60 * 60)
});

📌 설명:

  • expireAfterSeconds: 2592000 → 30일이 지나면 자동으로 데이터 삭제
  • 로그 데이터, 모니터링 데이터처럼 일정 기간 이후 불필요한 데이터를 자동 정리하는 데 유용

4️⃣ MongoDB Time Series Collection의 장점

대량의 시계열 데이터 효율적 저장

  • 자동 압축 및 인덱싱을 통해 저장 공간을 절약하고 성능을 향상

빠른 쿼리 및 집계 성능

  • timeField 기반 자동 인덱싱을 활용하여 대량의 데이터를 빠르게 조회

자동 데이터 보관 정책 (TTL)

  • 일정 시간이 지나면 데이터 자동 삭제 가능 → 스토리지 비용 절감

NoSQL 기반의 유연한 데이터 구조

  • JSON 문서 저장 방식으로 다양한 센서 데이터, 로그 데이터, 모니터링 데이터를 유연하게 저장

기존 MongoDB 기능과 완벽 호환

  • 기존 MongoDB의 강력한 쿼리 및 집계 기능을 그대로 사용 가능

5️⃣ MongoDB Time Series Collection을 언제 사용할까?

센서 데이터 저장 및 분석

  • IoT 기기에서 수집한 온도, 습도, 기압 등의 데이터를 저장

서버 로그 및 모니터링 데이터 관리

  • 시스템 로그, API 요청 기록, 트래픽 분석 등의 데이터 처리

금융 데이터 및 주식 시세 기록

  • 주식 가격 변동, 암호화폐 거래 내역, 금융 거래 기록 저장

실시간 데이터 스트리밍 및 분석

  • 실시간 사용자 활동 분석, 네트워크 트래픽 모니터링

6️⃣ 결론: MongoDB Time Series Collection이 강력한 이유

MongoDB의 기존 기능을 유지하면서도, Time Series에 최적화된 성능 제공
대량의 시계열 데이터를 효율적으로 저장하고, 빠르게 분석 가능
TTL 기능을 활용해 자동 데이터 정리 가능
IoT, 금융, 서버 모니터링, 로그 분석 등 다양한 분야에서 활용 가능

💡 MongoDB를 사용하면서 시계열 데이터도 함께 다루고 싶다면 Time Series Collection을 적극 활용해보세요! 🚀

반응형
Comments