MongoDB 8.0릴리스 노트
이 페이지에서는 MongoDB 8.0 에 도입된 변경 사항과 새로운 기능에 대해 설명합니다.
MongoDB 8.0 은 메이저 릴리스이므로 MongoDB Atlas 와 온프레미스 배포 모두에서 지원됩니다. MongoDB 8.0 에는 MongoDB Rapid Release 7.1, 7.2 및 7.3 에 도입된 변경 사항이 포함되어 있습니다. 이 페이지에서는 해당 Rapid Release 및 MongoDB 8 에 도입된 변경 사항에 대해 설명합니다.0.
Major 릴리스와 Rapid Release의 차이점에 학습 보려면 MongoDB 버전 관리를 참조하세요.
패치 릴리스
8.0.3 - 2024년 10월 24일
중요
null 바이트의 부적절한 중화로 인해 MongoDB Server 에서 버퍼 오버 읽기가 발생할 수 있습니다.
8.0.3 이전의 MongoDB 8.0 에서는 권한이 있는 사용자가 MongoDB Server 에서 잘못된 트리거하다 을 구성하는 특수하게 조작된 요청을 발행하여 충돌을 BSON 서버 메모리의 버퍼 오버 읽기 내용을 수신할 수 있습니다.
이 문제는 MongoDB Server 버전에 영향을 미칩니다.
5.0.0 - 5.0.29
6.0.0 - 6.0.18
7.0.0 - 7.0.14
8.0.0 - 8.0.2
수정된 문제:
서버-96419 null 바이트의 부적절한 중화로 인해 MongoDB Server 에서 버퍼 오버 읽기가 발생할 수 있습니다.
8.0.1 - 2024년 10월 9일
수정된 문제:
서버-76883 외부 소스 사용자에 대한 '역할이 존재하지 않음' 로그의 수다를 줄입니다.
SERVER-82221 listCollections 및 listIndexes에는 커밋 보류 네임스페이스가 포함되어야 함
서버- 세션 새로 고침94635 매개변수 구성 가능
서버- 삽입을 초래하는 업서트 문이 클라이언트 가 샤드 에 직접 연결할 때 tassert로 실패할 수 있습니다.95244 9146500
WT-13409 __txn_checkpoint의 하나의 ret가 처리되지 않습니다.
8.0.0 - 2024년 10월 2일
이 페이지의 나머지 부분에서는 MongoDB 8.0 에 도입된 변경 사항과 새로운 기능에 대해 설명합니다.
플랫폼 지원 업데이트
MongoDB 8.0 부터 새로운 MongoDB Server 버전(메이저 및 마이너)은 OS 벤더 에서 정의한 최소 운영 체제(OS) 마이너 버전을 지원 합니다. OS 벤더 에서 OS 마이너 버전을 더 이상 지원하지 않는 경우, MongoDB 는 다음 OS 마이너 버전을 지원 하도록 MongoDB Server 를 업데이트합니다. 자세한 내용은 MongoDB 플랫폼 지원 개선 사항을 참조하세요.
MongoDB 8.0 은 다음과 같은 최소 OS 마이너 버전을 지원합니다.
Red Hat Enterprise Linux 8.8
Red Hat Enterprise Linux 9.3
SUSE Linux 엔터프라이즈 서버 15 SP5
Amazon Linux 2023 버전 2023.3
로깅
MongoDB 8.0 부터는 작업의 총 지연 시간 이 아닌 MongoDB 가 해당 작업에 소요한 시간을 기준으로 느린 작업을 로그 하도록 데이터베이스 프로파일러를 구성할 수 있습니다. 즉, 잠금 및 흐름 제어 대기와 같은 요인은 작업이 느린 작업 임계값을 초과하는지 여부에 영향을 주지 않습니다.
이 변경 사항은 로깅 및 쿼리 분석에 대해 다음과 같은 개선 사항을 제공합니다.
느린 쿼리는 MongoDB 가 쿼리 를 처리 하는 데 소요된 시간을 기준으로 더 정확하게 기록됩니다.
Query 쿼리 프로파일러, Performance Advisor, Search Query Telemetry와 같은 쿼리 분석 도구는 대신 을(를)
workingMillis
기반으로 느린 작업을durationMillis
보고합니다. 이 변경 사항을 통해 문제가 있는 쿼리를 더 정확하게 볼 수 있습니다.느린 쿼리 로그 에는 실행 티켓에 대기 중인 시간에 대한 지표인
queues.execution.totalTimeQueuedMicros
가 포함되어 있습니다. 이 지표는 작업이 완료되는 데 걸리는 시간으로 인해 느린지, 아니면 시작을 기다리는 데 소요되는 시간으로 인해 느린지 식별하는 데 도움이 됩니다.
자세한 내용은 db.setProfilingLevel()
를 참조하세요.
Database Profiler
데이터베이스 프로파일러 에 대한 필터하다 를 지정하면 새로운 workingMillis
지표를 기반으로 작업을 로그 할 수 있습니다. workingMillis
및 durationMillis
를 모두 기반으로 작업을 로그 하고 각 지표를 다른 임계값으로 설정하다 수 있습니다.
집계
BinData 변환
MongoDB 8.0 부터는 $convert
연산자 를 사용하여 다음 변환을 수행할 수 있습니다.
String values to binData values
binData 값을 string 값으로
MongoDB 8.0 $toUUID
에는 문자열을 UUID 값으로 변환하기 위한 간소화된 구문을 제공하는 새로운 헬퍼 표현식 도 포함되어 있습니다.
$queryStats
MongoDB 7.1 부터 $queryStats
단계는 기록된 쿼리에 대한 통계를 반환합니다.
변경 스트림 개선 사항
MongoDB 8.0 부터 $queryStats
는 변경 스트림에 대한 추적 및 보고 지표 를 개선합니다. 자세한 내용은 $queryStats Change Streams 동작을 참조하세요.
$rank 및 $denseRank 동작
MongoDB 8.0 부터 null
및 $denseRank
및 $rank
sortBy 작업에서 누락된 필드 값은 순위를 계산할 때 동일하게 처리됩니다. 이 변경 사항은 denseRank
및 rank
의 동작을$sort
와 일관적인 .
보안
Queryable Encryption 범위 쿼리
MongoDB 8.0 부터 시작됩니다. Queryable Encryption 은 $lt
, $lte
, $gt
및 $gte
연산자를 사용하여 암호화됨 필드에 대한 범위 쿼리를 지원합니다. 자세한 내용 은 Queryable Encryption 에 대해 지원되는 작업을 참조하세요. 암호화됨 필드에 대한 범위 쿼리를 활성화 하려면 암호화 스키마 생성을 참조하세요.
로그 메시지에 대한 OCSF 스키마
MongoDB 8.0 부터는 감사 로그 메시지에 OCSF 스키마 를 지정할 수 있습니다. OCSF 스키마 는 로그 프로세서와 호환되는 표준화된 형식으로 로그를 제공합니다.
로그 메시지에 사용되는 스키마 를 설정하다 하려면 auditLog.schema
구성 파일 옵션을 사용합니다.
OCSF 형식의 로그 메시지 예시 는 OCSF 스키마 감사 메시지를 참조하세요.
수신 대기열
MongoDB 8.0 은 수신 허용 제어를 위한 새로운 대기열을 도입합니다. 네트워크에서 데이터베이스 로 들어가기를 기다리는 작업은 수신 대기열에 들어갑니다. 기본값 대기열은 제한이 없으므로 MongoDB 는 대기열 없이 이 단계를 통해 모든 작업을 실행할 수 있습니다. 대기열 최대값을 특정 값으로 설정하면 현재 작업 수가 지정된 제한에 도달한 경우 이 단계에서 작업을 대기열에 추가할 수 있습니다.
샤딩
MongoDB 8.0부터는 샤딩된 클러스터의 샤드 간에 컬렉션을 샤딩 해제하고 샤딩되지 않은 컬렉션을 이동할 수 있습니다.
컬렉션 이동
MongoDB 8.0 부터는 moveCollection
명령을 사용하여 샤딩되지 않은 컬렉션 을 다른 샤드 로 이동할 수 있습니다.
자세한 내용은 이동 가능한 컬렉션 을 참조하세요. 시작하려면 컬렉션 이동을 참조하세요.
Change Streams이 있는 컬렉션 이동
MongoDB 부터 8.0 는movePrimary
변경 스트림 이 있는 컬렉션을 무효화 하지 않습니다. 컬렉션이 새 샤드 로 이동한 후에도 변경 스트림은 컬렉션에서 이벤트를 계속 읽을 수 있습니다.
컬렉션 샤딩 해제
MongoDB 8.0 부터는 unshardCollection
명령 또는 sh.unshardCollection()
메서드를 사용하여 기존 샤딩된 컬렉션을 샤딩 해제할 수 있습니다. 이 작업은 컬렉션 의 모든 문서를 지정된 샤드 또는 데이터 양이 가장 적은 샤드 로 이동합니다.
자세한 내용은 샤딩되지 않은 컬렉션 을 참조하세요. To get started, see Unshard a Collection.
구성 샤드
MongoDB 8.0 부터는 일반적인 샤딩된 클러스터 메타데이터 외에 애플리케이션 데이터를 저장 하도록 config 서버 를 구성할 수 있습니다. config 서버 와 샤드 서버 기능을 모두 제공하는 mongod
노드 를 config 샤드 라고 합니다. 샤드 서버 기능 없이 독립형 --configsvr
로 실행되는 mongod
노드 를 전용 config 서버 라고 합니다.
전용 config 서버 를 config 샤드 로 실행 하도록 구성하려면 transitionFromDedicatedConfigServer
명령을 실행 합니다.
전용 config 서버 로 실행 config 샤드 를 구성하려면 transitionToDedicatedConfigServer
명령을 실행 합니다.
자세한 내용은 구성 샤드를 참조하세요. 시작하려면 구성 샤드로 샤드 클러스터 시작하기를 참조하세요. 복제본 세트 를 구성 샤드 가 있는 샤드 샤딩된 클러스터 로 변환하려면 복제본 세트를 내장된 구성 서버가 있는 샤드 클러스터로 변환을 참조하세요.
새로운 데이터베이스 명령
새로운 mongosh 메서드
serverStatus 지표
MongoDB 8.0 부터 serverStatus
의 출력에 다음과 같은 새로운 shardingStatistics
필드가 포함됩니다.
shardingStatistics.countTransitionToDedicatedConfigServerStarted
shardingStatistics.countTransitionToDedicatedConfigServerCompleted
shardingStatistics.countTransitionFromDedicatedConfigServerCompleted
MongoDB 7.1 에는 청크 마이그레이션에 대한 다음과 같은 새로운 샤딩 통계가 포함되어 있습니다.
샤드당 기본 청크
MongoDB 7.2부터 해시 샤드 키로 collection 을 샤딩하면 작업은 기본적으로 샤드당 하나의 청크를 생성합니다. 이전에는 이 작업이 기본적으로 두 개의 청크를 생성했습니다.
directShardOperations 역할
MongoDB 8.0 부터는 directShardOperations
역할 을 사용하여 샤드 에 대해 직접 명령을 실행해야 하는 유지 관리 작업을 수행할 수 있습니다.
경고
directShardOperations
역할 을 사용하여 명령을 실행하면 클러스터 가 올바르게 작동하지 않고 데이터가 손상될 수 있습니다. directShardOperations
역할 은 유지 관리 목적으로만 사용하거나 MongoDB 지원 의 지침 에 따라 사용하세요. 유지 관리 작업 수행이 완료되면 directShardOperations
역할 사용을 중지합니다.
샤드 클러스터에 대한 배출 커서 활성화
MongoDB 7.1 부터 mongos
는 클라이언트의 getMore 요청 이 exhaustAllowed 플래그를 설정할 때 배출 커서를 지원합니다. 이렇게 하면 클라이언트 가 단일 요청 에 대해 데이터베이스 서버 로부터 여러 개의 응답을 받을 때 샤딩된 클러스터의 쿼리 성능이 향상될 수 있습니다.
mongos 포트 범위
MongoDB 7.1 부터 mongos
는 [0, 65535]의 --port
값을 허용합니다. 자세한 내용은 --port
를 참조하세요.
부분 샤드 키로 쿼리
MongoDB 7.1 부터 findAndModify
및 deleteOne()
는 부분 샤드 키를 사용하여 샤드 컬렉션을 쿼리할 수 있습니다.
리샤딩 개선 사항
MongoDB 7.2는 reshard collection 작업의 성능을 크게 개선하여 작업 실행 시간을 크게 단축했습니다.
또한 애플리케이션과 cluster가 필요한 요구 사항 및 제한 사항을 충족하는 경우 reshardCollection
명령을 사용하여 동일한 키에서 collection을 리샤딩하여 collection을 재배포할 수 있으며, 이는 다른 범위 마이그레이션 절차보다 훨씬 빠릅니다.
명령에 다음 옵션이 추가됩니다.
필드 | 설명 |
---|---|
forceRedistribution | 동일 키 리샤딩을 활성화합니다. |
샤드 클러스터의 자체 관리형 백업
MongoDB 7.1 부터 fsync
및 fsyncUnlock
명령은 샤드 클러스터에서 fsync 작업을 수행할 수 있습니다.
lock
필드 를 true
로 설정하다 한 상태에서 mongos
에서 실행 하면 fsync
명령은 저장 계층에서 디스크로 쓰기를 플러시하고 각 샤드 를 잠가 추가 쓰기를 방지합니다. 그런 다음 fsyncUnlock
명령을 사용하여 클러스터 를 잠금 해제할 수 있습니다.
이 기능 을 사용하면 mongodump
을(를) 사용하여 샤딩된 클러스터의 자체 관리형 백업을 사용할 수 있습니다.
샤드 컬렉션의 UpdateOne 업서트 동작
MongoDB 부터는 7.1 updateOne()
upsert: true
샤딩된 컬렉션 에서 와 함께 { 를 사용하는 경우 필터하다 에전체 샤드 키 를 포함할 필요 가 없습니다 .
샤드 컬렉션을 사용한 트랜잭션의 $lookup 단계
MongoDB 8.0 부터는 샤딩된 컬렉션 을 대상으로 하는 트랜잭션 내에서 $lookup
단계를 사용할 수 있습니다.
복제
과반수 쓰기 고려
MongoDB 8.0 부터 "majority"
쓰기 고려 (write concern) 고려를 사용하는 쓰기 (write) 작업은 대다수의 복제본 세트 구성원이 변경 사항에 대한 oplog 항목을 작성했을 때 승인을 반환합니다. 이렇게 하면 "majority"
쓰기 성능이 향상됩니다. 이전 릴리스에서는 이러한 작업이 대부분의 복제본 세트 멤버가 변경 사항을 적용한 후 기다렸다가 승인을 반환했습니다.
애플리케이션 이 { w: "majority" }
쓰기 (write) 작업에서 승인을 받은 직후에 세컨더리 에서 읽는 경우( 인과적 일관적인 적인 세션이 없는 경우) 쿼리 는 쓰기 (write) 작업의 변경 사항을 포함하지 않은 결과를 반환할 수 있습니다.
새로운 replSetGetStatus 지표
MongoDB 8.0 부터 replSetGetStatus
명령을 사용할 때 다음 지표 를 사용할 수 있습니다.
oplog 버퍼
MongoDB 8.0 부터 세컨더리는 각 배치 에 대한 oplog 항목을 병렬로 쓰기 (write) 하고 적용 합니다. 작성기 스레드는 프라이머리 에서 새 항목을 읽고 로컬 oplog 에 씁니다. 적용 스레드는 이러한 변경 사항을 로컬 데이터베이스 에 비동기적으로 적용합니다. 이 변경 사항은 세컨더리의 복제 처리량 을 증가시킵니다.
이렇게 하면 이제 하나가 아닌 두 개의 버퍼에 대한 지표 를 제공하므로 metrics.repl.buffer
에 호환성이 손상되는 호환성이 손상되는 변경 이 도입됩니다.
MongoDB 8.0 은 다음 서버 상태 지표 을 더 이상 사용하지 않습니다.
MongoDB 8.0 은 다음과 같은 서버 상태 지표 을 추가합니다.
업그레이드된 TCMalloc
MongoDB 8.0 부터 시작됩니다. MongoDB 는 스레드별 캐시 대신 CPU별 캐시 를 사용하는 업그레이드된 버전의 TCMalloc을 사용하여 메모리 조각화를 줄이고 스트레스가 높은 워크로드에 대한 데이터베이스 의 복원력을 향상시킵니다.
새로운 TCMalloc 버전은 Transparent Huge Pages에 대한 이전 프로덕션 권장 사항에 직접적인 영향을 미칩니다. 학습 내용 은 자체 관리 배포서버를 위한 TCMalloc 성능 최적화를 참조하세요.
serverStatus 지표
MongoDB 8.0 부터 다음과 같은 새로운 serverStatus
지표 가 tcmalloc
사용량에 대한 정보를 보고합니다.
일반 변경 사항
종료 성능
MongoDB 8.0 부터 Bulk.insert()
및 데이터 수집 워크로드의 성능이 향상될 수 있습니다. 그러나 이러한 워크로드를 실행 한 후 즉시 MongoDB 를 종료하면 예비 데이터가 디스크로 플러시되기 때문에 시간이 더 오래 걸릴 수 있습니다.
구성 샤드에 애플리케이션 데이터 저장
MongoDB 8.0 부터는 일반적인 샤딩된 클러스터 메타데이터 외에 애플리케이션 데이터를 저장 하도록 config 서버 를 구성할 수 있습니다. 그러면 config 서버 를 config 샤드 라고 합니다. 자세한 내용은 구성 샤드를 참조하세요.
압축 개선 사항
MongoDB 7.3 부터 compact
명령에는 압축을 진행하기 위해 복구할 수 있는 최소 저장 공간을 메가바이트 단위로 지정하는 새로운 freeSpaceTargetMB
옵션이 포함됩니다.
백그라운드 압축
MongoDB 8.0 부터는 새로운 autoCompact
명령을 사용하여 배경 압축 을 수행할 수 있습니다. 활성화하면 서버 는 각 컬렉션 및 인덱스 내의 여유 공간을 지정된 freeSpaceTargetMB
값 아래로 유지하려고 시도합니다.
드라이런 옵션
활성화하면 compact
명령은 압축 이 대상 컬렉션 에서 회수할 수 있는 공간의 추정치(바이트)를 반환합니다. dryRun
을(를) true
(으)로 설정하다 한 상태에서 compact
을(를) 실행 하면 MongoDB 는 예상 값만 반환하고 어떤 종류의 압축 도 수행하지 않습니다.
동시 DDL 작업
MongoDB 7.1 부터 동일한 데이터베이스 에서 서로 다른 컬렉션을 대상으로 하는 여러 DDL 작업 을 실행 하면 MongoDB 가 해당 작업을 동시에 실행합니다.
이 변경 사항은 serverStatus
locks
필드와 currentOp.locks
출력에 두 가지 새로운 유형을 추가합니다.
DDLDatabase
DDLCollection
mongos 애그리게이션 쿼리에 대한 데이터베이스 유효성 검사
MongoDB 7.2부터 mongos 배포에서 존재하지 않는 데이터베이스를 사용하려고 하는 집계 파이프라인 쿼리는 유효성 검사 오류를 반환합니다.
이전 버전에서는 이러한 애그리게이션 쿼리가 빈 커서를 반환했습니다.
DDL 작업
MongoDB 8.0 에서 클러스터 가 DDL 작업(예: 컬렉션 을 수정하는 작업 reshardCollection
)을 실행하는 동안 샤드 를 추가하거나 제거 하면 샤드 를 추가하거나 제거하는 모든 작업은 동시 DDL 작업이 완료된 후에만 실행됩니다.
파이프라인 크기 제한 초과에 대한 오류 코드
MongoDB 7.1 부터 파이프라인이 파이프라인 단계 제한을 초과하면 애그리게이션 명령에서 오류가 발생합니다. 자세한 내용 은 단계 수 제한을 참조하세요.
getField 필드는 모든 문자열을 지원합니다.
MongoDB 7.2부터 field
연산자의 입력에 문자열로 해석되는 유효한 $getField
표현식 을 지정할 수 있습니다. 이전 버전에서는 field
문자열 상수만 허용합니다.
향상된 인덱스 빌드
MongoDB 7.1부터 오류 보고 속도가 빨라지고 회복 탄력성이 향상되어 인덱스 빌드가 개선되었습니다. 디스크 공간이 너무 부족하면 인덱스 빌드를 중지하는 새로운 indexBuildMinAvailableDiskSpaceMB
매개 변수를 사용하여 인덱스 빌드에 필요한 최소 사용 가능한 디스크 공간을 설정할 수도 있습니다.
다음과 같은 새로운 인덱스 빌드 지표 가 추가되었습니다.
자세한 내용은 인덱스 빌드를 참조하세요.
새로운 매개변수
auditConfig 매개변수
MongoDB 7.1 은 auditConfig
및 mongod
서버 인스턴스의 감사 구성에 mongos
대한 정보를 포함하는 클러스터 매개변수를 추가합니다.
defaultMaxTimeMS 매개변수
MongoDB 8.0 부터는 defaultMaxTimeMS
클러스터 매개변수를 사용하여 개별 읽기 작업이 완료되는 데 걸리는 기본값 시간 제한을 지정할 수 있습니다.
indexBuildMinAvailableDiskspaceMB 매개변수
MongoDB 7.1 은 인덱스 빌드에 필요한 최소 사용 가능한 디스크 공간을 설정하다 수 있는 indexBuildMinAvailableDiskSpaceMB
매개 변수를 추가합니다.
tcmallocEnableBackgroundThread Parameter
MongoDB 8.0 부터는 tcmallocEnableBackgroundThread
가 기본값 활성화됩니다. 이를 통해 MongoDB 는 주기적으로 메모리를 운영 체제에 다시 출시하다 할 수 있습니다.
새로운 대량 쓰기 명령
MongoDB 8.0 부터는 새로운 bulkWrite
명령을 사용하여 한 번의 요청 으로 여러 컬렉션에 대한 많은 삽입, 업데이트 및 삭제 작업을 수행할 수 있습니다. 기존 db.collection.bulkWrite()
메서드에서는 한 번의 요청 으로 하나의 컬렉션 만 수정할 수 있습니다.
새로운 쿼리 형태 및 쿼리 설정
MongoDB 8.0 에 새로운 쿼리 형태 가 도입되었습니다. 기존 쿼리 형태 의 이름이 계획 캐시 쿼리 형태 로 변경됩니다.
MongoDB 8.0 부터 새 쿼리 형태 에 대한 쿼리 설정을 추가할 수 있습니다. 쿼리 옵티마이저 쿼리 계획 중에 쿼리 설정을 추가 입력으로 사용하며, 이는 쿼리 형태 가 일치하는 쿼리 를 실행 하기 위해 선택한 계획에 영향을 줍니다.
쿼리 설정의 기능이 인덱스 필터 에 비해 개선되었습니다. 인덱스 필터도 MongoDB 8.0 부터 더 이상 사용되지 않으므로 사용하지 않는 것이 좋습니다.
쿼리 설정을 추가하려면
setQuerySettings
명령을 사용합니다.쿼리 설정을 삭제 하려면
removeQuerySettings
명령을 사용합니다.쿼리 설정을 조회 하려면 집계 파이프라인 에서
$querySettings
단계를 사용합니다.쿼리 형태 를 차단 하려면 작업 거부 필터를 참조하세요.
MongoDB 8.0 부터 queryShapeHash
가 다음 출력에 포함됩니다.
explain
{ 필드 의 명령explain.queryShapeHash
MongoDB 8.0 부터 기존 queryHash
필드 의 이름이 planCacheShapeHash
로 변경되었습니다. 이전 MongoDB 버전을 사용하는 경우 planCacheShapeHash
queryHash
가 표시됩니다.
Parameter Filtering
MongoDB 8.0 부터 getParameter
명령은 setAt
필드 를 허용합니다. 이 필드 를 사용하여 allParameters: true
반환 문서 를 필터하다 하여 스타트업 또는 런타임에 설정하다 수 있는 매개변수만 표시할 수 있습니다.
고정 사이즈 컬렉션의 읽기 고려
MongoDB 부터는 고정 사이즈 8.0 "snapshot"
컬렉션에 읽기 고려 (read concern) 를 사용할 수 있습니다.
serverStatus 출력 변경
MongoDB 7.1 부터 serverStatus
명령 출력에 다음과 같은 새로운 지표 가 포함됩니다.
MongoDB 7.2 부터 serverStatus
명령 출력에 다음과 같은 새로운 지표 가 포함됩니다.
MongoDB 7.3 부터 serverStatus
명령 출력에 다음과 같은 새로운 지표 가 포함됩니다.
MongoDB 8.0 부터 serverStatus
명령 출력에 다음과 같은 새로운 지표 가 포함됩니다.
updateOne에 대한 정렬 지원
MongoDB 8.0 부터 updateOne()
메서드는 sort
옵션을 지원합니다. 이는 업데이트 를 받을 문서 를 선택하기 전에 MongoDB 가 문서 를 정렬하는 방법을 제어합니다.
이전 릴리스에서는 findAndModify()
및 findOneAndUpdate()
메서드를 사용하여 사용자가 지정한 정렬 순서로 첫 번째 문서 를 업데이트 했습니다. 재시도 가능 쓰기를 지원하려면 이러한 메서드가 전체 문서 를 각 노드 의 특수 사이드 컬렉션 에 복사해야 하며, 이는 새로운 sort
옵션이 있는 updateOne()
메서드보다 비용이 더 많이 드는 작업입니다.
고유 명령에 대한 쿼리 인덱스 힌트 지정
MongoDB 7.1 부터는 distinct
명령에서 hint
필드 를 사용할 수 있으므로 쿼리의 인덱스 를 지정할 수 있습니다.
TTL Indexes
쿼리 계획 및 실행
블록 처리
버전 8.0 부터 시작됩니다. MongoDB 는 차단 처리 를 사용하여 특정 시계열 쿼리를 실행할 수 있습니다. 이 성능 향상은 개별 값이 아닌 데이터 "블록"에서 쿼리를 처리합니다. 차단 처리 는 Time Series 컬렉션으로 작업할 때 쿼리 실행 속도와 처리량 을 향상시킵니다.
Time Series 쿼리 가 차단 처리 를 사용하는지 확인하려면 계획 설명 출력의 explain.queryPlanner.winningPlan.slotBasedPlan.stages
필드 를 확인합니다.
학습 내용은 차단 처리를 참조하세요.
Express 쿼리 단계
MongoDB 8.0 부터 제한된 쿼리 설정하다 ( _id
동등성 매치 포함)는 일반 쿼리 계획 및 실행을 건너뜁니다. 대신 이러한 쿼리는 다음 계획 단계 중 하나로 구성된 최적화된 인덱스 스캔 계획을 사용합니다.
EXPRESS_CLUSTERED_IXSCAN
EXPRESS_DELETE
EXPRESS_IXSCAN
EXPRESS_UPDATE
쿼리 계획에 대한 자세한 내용은 Explain 결과를 참조하세요.
거부된 쿼리 계획 출력
MongoDB 8.0 부터 거부된 쿼리 계획에는 쿼리 의 find
부분만 포함됩니다. 이전 버전에서는 거부된 계획에 $group
와 같은 집계 단계가 포함될 수 있습니다. 쿼리 플래너가 성공적인 계획을 선택하는 데 이러한 집계 단계를 사용하지 않으므로 rejectedPlans
필드 에는 가장 적합한 계획을 선택하는 데 사용된 쿼리 부분만 포함됩니다.
또한 이 변경 사항은 거부된 계획의 executionStats
이 0이 아님을 보장합니다. 따라서 이제 거부된 계획이 검사한 문서 또는 키의 수와 같은 통계를 볼 수 있습니다.
거부된 쿼리 계획에 대한 자세한 내용은 explain.queryPlanner.rejectedPlans
를 참조하세요.
다중 문서 삽입 작업 일괄 처리
MongoDB 8.0 부터 다중 문서 트랜잭션 에 대한 삽입 작업이 더 이상 개별 oplog
항목을 생성하지 않습니다. 대신 다중 문서 삽입이 단일 항목으로 배치됩니다. 각 문서 에 대한 변경 스트림 insert
이벤트 에는 동일한 clusterTime
이 있습니다.
이 변경 사항은 다중 문서 삽입 작업의 성능을 향상시키고 여러 oplog
쓰기로 인해 발생할 수 있는 복제 지연 을 제거합니다.
OIDC ID 제공자는 발급자 공유 가능
MongoDB 8.0 부터 여러 ID 제공자(IDP)가 정의된 경우 audience
값이 각 발급자에 대해 고유한 한 oidcIdentityProviders
매개 변수는 중복 issuer
값을 허용합니다. 이는 버전 7.3 및 7 에서도 사용할 수 있습니다.0.
하위 파이프라인의 네임스페이스
MongoDB 8.0 부터 from
및 coll
필드의 올바른 사용을 보장하기 위해 $lookup
및 $unionWith
내부의 하위 파이프라인에 있는 네임스페이스의 유효성을 검사합니다.
자세한 내용은 $lookup 하위 파이프라인 및 $unionWith 하위 파이프라인을 참조하세요.
쿼리 플래너 최적화 시간
explain()
메서드는 이제 쿼리 플래너 최적화 시간에 대한 정보를 반환합니다. queryPlanner.optimizationTimeMillis
상태는 쿼리 플래너가 최적화에 소비한 시간을 밀리초 단위로 표시합니다.
알려진 문제
이 섹션에서는 MongoDB 8.0 의 알려진 문제와 해결 상태에 대해 설명합니다.
버전 | 이슈 | 상태 |
---|---|---|
8.0.0 | 서버-94741: $or 최상위 $and 절(암시적 절 포함)을 포함하는 쿼리에서 여러 $and 인덱스를 사용할 수 있는 경우, 새로운 기간 동안 가장 효율적인 인덱스가 고려 대상에서 잘못 제거되었기 때문에 쿼리 에서 효율성이 낮은 인덱스를 사용할 수 8 있습니다. MongoDB 에서 쿼리 계획의 " 인덱스 정리"0 단계입니다. . | 미해결. SERVER-94738 에서인덱스 정리 기능 을 비활성화하여 에서 완화할 계획입니다.8.0.1 |
8.0.0 | 서버-95244: 단일 샤드로 샤드된 클러스터에 대한 샤딩된 작업은 다음 사항이 모두 참일 때 더 자주 실패할 수 있습니다.
샤딩된 클러스터 로 전환하는 데 권장 프로세스 에서는 클라이언트를 | 이 문제는 8.0.1 에서 수정될 예정입니다. |
업그레이드 절차
중요
기능 호환성 버전
7.0 배포서버 에서 MongoDB 8.0 으로 업그레이드 하려면 7.0 배포서버 에 featureCompatibilityVersion
이(가) 7.0
으)로 설정하다 되어 있어야 합니다. 버전을 확인하려면 다음을 수행합니다.
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
MongoDB 8.0 으로 업그레이드 하려면 사용 중인 MongoDB deployment 에 해당하는 업그레이드 지침을 참조하세요.
8.0로 업그레이드하는 방법에 대한 지침이 필요한 경우에 대비하여 MongoDB 전문 서비스 팀은 MongoDB 애플리케이션에 지장을 주지 않고 원활하게 전환할 수 있도록 주요 버전 업그레이드 지원을 제공합니다. 자세한 내용은 MongoDB 컨설팅을 참조하세요.
다운로드
MongoDB 8.0을 다운로드하려면 MongoDB 다운로드 센터로 이동하세요.