mongodb 시계열 데이터몽고디비 시계열 데이터mongodb time series data시계열 데이터란?backend

MongoDB 시계열 데이터(Time Series) 알아보기

KUKJIN LEE
KUKJIN LEE
2024년 10월 22일
342

시계열 데이터(Time Series Data)는 시간이 지나면서 변화하는 데이터를 의미합니다. 온도, 주식 가격, 기계의 상태 등 시간이 중요한 역할을 하는 모든 데이터를 포함할 수 있습니다. MongoDB는 시계열 데이터를 효율적으로 처리할 수 있는 기능을 제공합니다.

 

1. 시계열 데이터란?

시계열 데이터는 각 데이터 포인트가 특정 시간에 측정된 정보를 의미합니다. 예를 들어, 주식의 가격이 분, 초, 밀리초 단위로 계속 변한다고 할 때, 각 변화를 기록하는 것이 시계열 데이터입니다.

시계열 데이터 예시

{
  "timestamp": ISODate("2024-01-01T00:00:00Z"),
  "device": "temperature_sensor_1",
  "temperature": 22.5
}

2024년 1월 1일 00:00:00온도 센서 1에서 측정된 온도가 22.5도임을 확인 할 수 있습니다.

 

2. 시계열 데이터를 위한 MongoDB 컬렉션 생성

MongoDB에서는 시계열 데이터를 효율적으로 관리하기 위해 시계열 컬렉션(Time Series Collection)을 제공합니다. 이 컬렉션은 시간 기반의 데이터를 더 빠르게 저장하고 검색할 수 있도록 도와줍니다.

컬렉션 생성 예시

db.createCollection("temperatureReadings", {
    timeseries: {
        timeField: "timestamp",      // 시간 필드 지정
        metaField: "device",         // 기기 정보를 저장할 메타 데이터 필드
        granularity: "minutes"       // 데이터 수집 주기 (분 단위)
    }
});
  • timeField: 데이터의 시간을 나타내는 필드를 지정합니다. 이 필드가 있어야 MongoDB가 데이터를 시계열로 인식합니다.

  • metaField: 장치 ID나 위치와 같은 메타 정보를 저장할 필드를 지정합니다.

  • granularity: 데이터 수집 빈도를 설정할 수 있습니다. 여기서는 분 단위로 데이터를 수집합니다.

 

3. 시계열 데이터 삽입

MongoDB 시계열 컬렉션에 데이터를 삽입하는 방식은 일반 컬렉션과 거의 동일합니다. 데이터를 계속해서 기록하는 장치(예: 온도 센서)가 있다고 가정하고, 그 데이터를 MongoDB에 삽입해 봅시다.

(Excel로 자료 덤프를 하지 않는 이상 아래와 같이 추가하는 경우는 없었습니다.)

데이터 삽입 예시

db.temperatureReadings.insertMany([
    { "timestamp": ISODate("2024-01-01T00:00:00Z"), "device": "temperature_sensor_1", "temperature": 22.5 },
    { "timestamp": ISODate("2024-01-01T00:01:00Z"), "device": "temperature_sensor_1", "temperature": 22.6 }
]);

 

4. 시계열 데이터 쿼리

MongoDB에서는 시계열 데이터를 쉽게 검색할 수 있습니다. 보통 시간 범위를 지정하여 데이터를 조회하는 경우가 많습니다.

특정 시간 범위 내의 데이터 조회 예시

db.temperatureReadings.find({
    timestamp: {
        $gte: ISODate("2024-01-01T00:00:00Z"),
        $lt: ISODate("2024-01-01T01:00:00Z")
    },
    device: "temperature_sensor_1"
});

5. 오래된 데이터 자동 삭제(TTL 기능)

시계열 데이터는 시간이 지나면 더 이상 필요하지 않거나 중요하지 않은 경우가 많습니다. MongoDB는 오래된 데이터를 자동으로 삭제하는 기능을 제공합니다. 이를 통해 데이터베이스 크기를 관리하고 성능을 유지할 수 있습니다.

오래된 데이터 자동 삭제 설정(TTL)

db.temperatureReadings.createIndex({ timestamp: 1 }, { expireAfterSeconds: 3600 });

 

MongoDB에서 시계열 데이터는 시간에 따라 변화하는 데이터를 효율적으로 저장하고 조회할 수 있도록 도와줍니다. 시계열 컬렉션을 사용하면 대규모 데이터를 쉽게 관리할 수 있습니다. (온도 센서, 날씨 기록, 주식 시장 데이터 등)에서 시계열 데이터를 활용하면 방대한 데이터를 쉽게 처리하고 관리할 수 있습니다.

#mongodb 시계열 데이터#몽고디비 시계열 데이터#mongodb time series data#시계열 데이터란?#backend