Time Series 데이터 쿼리 정보
이 페이지의 내용
MongoDB는 Time Series 데이터의 저장 및 쿼리 지연 시간을 최적화하기 위해 일치하는 metaFields를 가진 문서들을 그룹화합니다. metaField
의 선택이 애플리케이션 내 쿼리를 최적화하는 데 가장 큰 영향을 미칩니다.
metaField 쿼리
표준 MongoDB 컬렉션을 쿼리하는 것과 동일한 방식으로 time series 컬렉션을 쿼리합니다. 예시 쿼리와 예시 집계 파이프라인을 보려면 Time Series 컬렉션 쿼리를 참조하세요. 쿼리 모범 사례 목록을 보려면 쿼리 모범 사례를 참조하세요.
Time Series 데이터에 대한 쿼리는 일반적으로 컬렉션 내의 단일 Time Series에 초점을 맞춥니다. 예를 들어, 다음 스키마를 사용하여 주식 데이터를 추적하는 Time Series 컬렉션을 생각해 보세요.
{ _id: 573a1397f29313caabce8347, "ticker": "MDB", "timestamp": ISODate("2024-07-24T13:45:00.000Z"), "price": 248.21, "volume": 6930 }
컬렉션의 설정은 다음과 같습니다.
timeseries: { timeField: "timestamp", metaField: "ticker", granularity: "seconds" }
MongoDB는 일치하는 ticker
값을 가진 문서를 그룹화합니다. 서버는 모든 문서의 모든 필드에서 일치 여부를 확인하는 대신 metaField
(이 경우 ticker
)에 대해서만 검사를 수행하여 검색 범위를 고유한 Time Series로 좁힙니다. 이는 단일 주식에 대한 활동을 검색하는 예상 사용 사례에 적합합니다. MongoDB 주식(MDB)에 대한 정보를 검색하는 사용자는 Amazon(AMZN)에 대한 결과를 고려할 필요가 없습니다.
timeField 쿼리
Time Series 데이터를 쿼리하는 두 번째 주요 차원은 시간입니다. MongoDB는 동일한 metaField
값과 가까운 timeField
값을 모두 가진 문서를 그룹화하므로, 쿼리 범위를 버킷 범위로 더욱 좁힐 수 있습니다. 최근 트랜잭션은 메모리에 보관되므로 실시간으로 데이터를 스트리밍하기가 쉽습니다.
블록 처리
버전 8.0 부터 시작됩니다. MongoDB 는 차단 처리 를 사용하여 특정 시계열 쿼리를 실행할 수 있습니다. 이 성능 향상은 개별 값이 아닌 데이터 "블록"에서 쿼리를 처리합니다. 차단 처리 는 Time Series 컬렉션으로 작업할 때 쿼리 실행 속도와 처리량 을 향상시킵니다.
차단 처리 는 다음 단계로 시작하는 장기 실행 집계 파이프라인의 성능을 크게 향상시키고 오버헤드 를 줄입니다.
MongoDB 는 적격 Time Series 쿼리에 대해 자동으로 차단 처리 를 활성화합니다. 쿼리 에서 차단 처리 를 사용할지 여부를 수동으로 지정할 수 없습니다.
Time Series 쿼리가 블록 처리를 사용하는지 확인하려면 설명 계획 출력에서 stages
를 참조하세요.