시계열
이 페이지의 내용
시계열 데이터는 시간에 따른 변화를 분석하여 통찰력을 얻을 수 있는 일련의 데이터 포인트입니다.
시계열 데이터는 일반적으로 다음과 같은 구성 요소로 이루어져 있습니다.
데이터 포인트가 기록된 시간입니다.
메타데이터(소스라고도 함)는 데이터 시리즈를 식별하는 레이블 또는 태그이며 거의 변경되지 않습니다. 메타데이터는 metaField에 저장됩니다. 메타필드를 Time Series 문서에 생성한 후에는 추가할 수 없습니다. metaField 동작 및 선택에 대한 자세한 내용은 metaFields를 참조하세요.
시간 단위로 추적되는 데이터 요소인 측정값 (메트릭 또는 값이라고도 함). 일반적으로 이들은 시간이 지남에 따라 변하는 키-값 쌍입니다.
이 표는 시계열 데이터의 예를 보여줍니다.
예시 | 측정 | Metadata |
---|---|---|
주식 데이터 | 주식 가격 | 주식 시세, 거래소 |
날씨 데이터 | 온도 | 센서 식별자, 위치 |
웹사이트 방문자 | 조회 수 | URL |
효율적인 시계열 데이터 저장을 위해 MongoDB는 시계열 컬렉션을 제공합니다.
Time Series 컬렉션
버전 5.0에 추가.
시계열 컬렉션은 시계열 데이터를 효율적으로 저장합니다. 시계열 컬렉션에서는 동일한 출처의 데이터가 비슷한 시점의 다른 데이터 포인트와 함께 저장되도록 쓰기가 구성됩니다.
MongoDB Atlas에서 호스팅되는 배포를 위해 UI에서 time series 컬렉션을 생성할 수 있습니다.
혜택
일반 컬렉션과 비교하여 Time Series 데이터를 Time Series 컬렉션에 저장하면 쿼리 효율성이 향상되고 Time Series 데이터 및 보조 인덱스의 디스크 사용량이 줄어듭니다. MongoDB 6.3 이상에서는 새로운 Time Series 컬렉션에 대한 시간 및 메타데이터 필드에 복합 인덱스를 자동으로 생성합니다.
시계열 컬렉션은 기본 열 형식 저장 형식을 사용하고 데이터를 시간 순서로 저장합니다. 이 형식은 다음과 같은 이점을 제공합니다.
시계열 데이터 작업의 복잡성 감소
쿼리 효율성 향상
디스크 사용량 감소
읽기 작업을 위한 I/O 감소
WiredTiger 캐시 사용량 증가
행동
Time Series 컬렉션은 일반적으로 다른 MongoDB 컬렉션과 유사하게 동작합니다. 데이터를 평소처럼 삽입하고 쿼리합니다.
경고
업데이트 및 삭제 명령의 일치 표현식은 메타필드만 지정할 수 있습니다. Time Series 문서의 다른 필드는 업데이트할 수 없습니다. 자세한 내용은 Time Series 삭제 및 업데이트 제한 사항을 참조하세요.
MongoDB는 시계열 컬렉션을 내부 컬렉션에 의해 뒷받침되는 쓰기 가능한 비물질화 뷰로 취급합니다. 데이터를 삽입하면 내부 컬렉션이 자동으로 시계열 데이터를 최적화된 저장 형식으로 구성합니다.
MongoDB 6.3부터 새 time series 컬렉션을 생성하면 MongoDB는 metaField 및 timeField 필드에 복합 인덱스도 생성합니다. 쿼리 성능을 개선하기 위해 time series 컬렉션의 쿼리는 새 복합 인덱스를 사용합니다. 복합 인덱스는 또한 최적화된 저장 형식을 사용합니다.
팁
쿼리 성능을 개선하기 위해 시계열 컬렉션의 측정 필드나 다른 필드에 수동으로세컨더리 인덱스를 추가할 수 있습니다.
중요
이전 버전과 호환되지 않는 기능
다운그레이드하기 전에 시계열 컬렉션을 삭제해야 합니다.
MongoDB 6.0 이상에서 MongoDB 5.0.7 이하로 다운그레이드 하는 경우.
MongoDB 5.3에서 MongoDB 5.0.5 이하로 다운그레이드하는 경우.
경고
system.profile
이라는 이름의 time series 컬렉션 또는 뷰를 만들려고 시도하지 마.십시오 MongoDB 6.3 이상 버전에서 이를 시도하는 경우 IllegalOperation
오류가 반환됩니다. 이전 MongoDB 버전은 충돌합니다.
metaFields
time-series 문서에는 내부 스토리지 최적화와 쿼리 효율성을 위해 문서 세트를 그룹화하는 선택적 metaField가 포함될 수 있습니다. metaField는 거의 변경되지 않으며 모든 데이터 유형이든 될 수 있습니다. metaField는 객체가 될 수 있으며 하위 필드를 포함할 수 있습니다. 필드를 metaField로 정의하면 metaField의 값을 변경할 수 있지만 metaField를 다른 필드로 재정의할 수는 없습니다. 예를 들어 metaField가 필드 A
로 정의된 time-series 문서를 만들면 나중에 필드 B
를 metaField로 변환할 수 없습니다. 하지만 metaField A
값이 객체인 경우 필드 A
에 새로운 하위 필드를 추가할 수 있습니다.
참고
배열을 metaField로 사용하면 배열 동등성이 특정 순서에 따라 달라지므로 예기치 않은 컬렉션 동작이 발생할 수 있습니다.
버킷
MongoDB는 데이터를 효율적으로 구성하고 검색하기 위해 metaField를 사용하여 데이터를 분할합니다. Time Series 컬렉션을 생성할 때 MongoDB는 문서를 버킷으로 그룹화합니다. 버킷 내 문서는 동일한 MetaField 값을 공유하며 시간이 비슷한 TimeField 값을 가집니다.
Time Series 컬렉션의 버킷 수는 고유한 metaField 값의 수에 따라 달라집니다. 세분화되거나 동적인 metaField 값을 갖는 컬렉션은 거의 또는 전혀 변경되지 않는 간단한 metaField를 갖는 컬렉션보다 데이터가 희박하고 수명이 짧은 많은 버킷을 생성할 수 있습니다. 세분화되고 동적인 metaField 값은 일반적으로 스토리지 및 쿼리 효율성을 감소시킵니다.
Indexes
MongoDB는 time-series 컬렉션의 metaField와 timeField에 모두 자동으로 복합 인덱스를 생성합니다.
metaField 모범 사례
metaField의 일부로 거의 또는 전혀 변경되지 않는 필드를 선택합니다.
가능한 경우 metaField의 일부로 필터 표현식에서 공통적으로 사용되는 식별자나 다른 안정적인 값을 선택하십시오.
필터링에 사용되지 않는 필드는 metaField의 일부로 선택하지 마세요. 대신 해당 필드를 측정값으로 사용하세요.
시작하기
시계열 컬렉션을 시작하려면 시계열 컬렉션 생성 및 쿼리하기를 참조하세요.