Docs Menu
Docs Home
/
MongoDB 매뉴얼
/

Time Series 컬렉션 고려 사항

이 페이지의 내용

  • metaField 고려 사항
  • metaField 모범 사례
  • 스토리지 및 카디널리티
  • 세분성
  • 압축 및 하드웨어

시계열 컬렉션은 일반적으로 일반 컬렉션처럼 작동하지만 몇 가지 예외가 있습니다. Time Series time series 컬렉션 동작 및 구조에 대한 자세한 내용은 Time Series 컬렉션을 참조하세요.

metaField 거의 변경되지 않으며 모든 데이터 유형 이 될 수 있습니다. 는 metaField 객체 일 수 있으며 하위 필드를 포함할 수 있습니다. 필드 를 으로 정의한 후에는 metaField 값을 변경할 수 metaField 있지만 를 metaField 다른 필드 로 재정의할 수는 없습니다. 예를 예시 필드 로 정의된 time series 문서를 만들 때 metaField A필드 를 나중에 필드 B 를 로 변환할 수 metaField 없습니다 . 그러나 값이 A 객체 인 경우 에 새 하위 필드를 추가할 수 A 있습니다.

참고

배열 을 metaField 로 사용하면 배열 의 동등성이 특정 순서에 따라 달라지기 때문에 예기치 않은 컬렉션 동작이 발생할 수 있습니다.

MongoDB 는 효율적인 조직 및 검색을 위해 metaField 를 사용하여 데이터를 분할합니다. time series 컬렉션 을 만들면 MongoDB 는 문서를 버킷으로 그룹화합니다. 버킷 내의 문서는 동일한 metaField 값을 주식 하며 서로 가까운 timeField 값을 가지고 있습니다.

time series 컬렉션 의 버킷 수는 고유한 metaField 값의 수에 따라 달라집니다. 세분화된 또는 동적 metaField 값을 가진 컬렉션은 거의 또는 전혀 변경되지 않는 간단한 metaField 값을 가진 컬렉션보다 더 많고 희박하게 채워진 수명이 짧은 버킷을 생성할 수 있습니다. 세분화되고 동적인 metaField 값은 일반적으로 저장 및 쿼리 효율성을 감소시킵니다.

  • metaField의 일부로 거의 또는 전혀 변경되지 않는 필드를 선택합니다.

  • 가능하면 필터 표현식에 공통적으로 사용되는 식별자 또는 기타 안정적인 값을 metaField의 일부로 선택하세요.

  • 필터링에 사용되지 않는 필드는 metaField의 일부로 선택하지 마세요. 대신 해당 필드를 측정값으로 사용하세요.

time series 컬렉션 에 데이터를 삽입하면 내부 컬렉션 이 버킷 을 사용하여 데이터를 최적화된 저장 형식으로 자동 구성합니다. 적절한 버킷이 있는 경우 MongoDB 는 해당 버킷에 새 데이터를 삽입합니다. 적합한 버킷이 없는 경우 MongoDB 는 새 버킷을 생성합니다. 저장 를 최적화하려면 거의 변경되지 않는 metaField 를 선택하여 더 적고 밀도가 높은 버킷으로 time series 컬렉션을 생성합니다.

metaField 값이 세분화되거나 변경되는 컬렉션은 희박하게 채워진 수명이 짧은 버킷을 많이 생성하여 컬렉션 의 카디널리티 를 높입니다. 카디널리티 가 증가하면 저장 및 쿼리 효율성 이 감소합니다.

granularity 매개변수를 사용하여 MongoDB 가 데이터 수집 속도에 따라 Time Series 데이터 를 버킷하는 빈도를 지정할 수 있습니다. 다음 표는 지정된 granularity 값을 사용할 때 하나의 데이터 버킷에 포함되는 최대 시간 간격을 보여줍니다.

granularity
granularity 버킷 한도
seconds
1시간
minutes
24시간
hours
30일

기본값 으로 granularityseconds 로 설정하다 됩니다. granularity 값을 동일한 데이터 소스 에서 들어오는 측정값 사이의 시간 범위와 가장 가까운 값으로 설정하여 성능을 개선할 수 있습니다. 예를 예시, 수천 개의 센서에서 날씨 데이터를 기록하지만 각 센서의 데이터를 5 분에 한 번만 기록 하는 경우 granularity"minutes" 로 설정하다 합니다. 새 문서를 추가하는 빈도가 적을수록 거친 세분성으로 인한 저장 및 성능 이점이 커집니다.

granularityhours로 설정하면 최대 한 달 분량의 데이터 수집 이벤트가 단일 버킷으로 그룹화되어 탐색 시간이 길어지고 쿼리 속도가 느려집니다. seconds로 설정하면 폴링 간격당 버킷이 여러 개 생성되며, 이 중 상당수는 단일 문서만 포함할 수 있습니다.

값을 선택할 때는 일반적인 쿼리도 고려해야 granularity 합니다. 예를 예시 쿼리가 1 한 번에 일 분량의 데이터를 가져올 것으로 예상되는 경우 '분'을 사용합니다. '초'와 같은 세분화된 단위는 1시간을 커버하는 버킷을 생성합니다. 이를 위해서는 동일한 데이터를 나타내는 데 더 많은 버킷이 필요하므로 저장 및 쿼리 성능에 부정적인 영향을 미칩니다. '시간'( 일 30버킷 범위가 있음)과 같이 더 거친 세분성은 한 번에 일 30 분량의 데이터를 가져온 다음 대부분의 데이터를 필터하다 하는 쿼리가 필요합니다.

예제 는 Time Series 데이터의 세분성 설정을 참조하세요.

모든 time series 컬렉션 은 열리거나 다시 열린 버킷에 데이터를 추가할 때 압축된 버킷 형식을 사용합니다. 캐시 에서 Time Series 데이터 를 압축하면 효율적인 쿼리 성능을 유지하면서 높은 카디널리티 워크로드를 지원합니다.

돌아가기

Time Series 데이터