MongoDB 시계열 데이터(Time Series) 알아보기
KUKJIN LEE • 2개월 전 작성
시계열 데이터(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에서 시계열 데이터는 시간에 따라 변화하는 데이터를 효율적으로 저장하고 조회할 수 있도록 도와줍니다. 시계열 컬렉션을 사용하면 대규모 데이터를 쉽게 관리할 수 있습니다. (온도 센서, 날씨 기록, 주식 시장 데이터 등)에서 시계열 데이터를 활용하면 방대한 데이터를 쉽게 처리하고 관리할 수 있습니다.