MongoDB 8.0의 호환성 변경 사항
쿼리 동작
null 정의되지 않은 필드와 일치하지 않음에 대한 쿼리
MongoDB 8.0 부터 동등성 매치 표현식에서 null
과의 비교가 undefined
값과 일치하지 않습니다.
예를 예시, 다음과 같은 문서와 쿼리 를 가정해 보겠습니다.
// people collection { _id: 1, name: null }, { _id: 2, name: undefined }, { _id: 3, name2: "Alice" }
db.people.find( { name: null } )
MongoDB 8.0 이전에는 위의 쿼리가 다음과 같은 문서와 일치했습니다.
name
필드 는null
(_id: 1
)입니다.name
필드 는undefined
(_id: 2
)입니다.name
필드 가 존재하지 않습니다(_id: 3
).
MongoDB 8.0 부터 앞의 쿼리는 name
필드가 undefined
(_id: 2
)인 문서와 일치하지 않습니다.
name
이 undefined
인 문서를 일치시키려면 쿼리 에 undefined
유형을 명시적으로 지정해야 합니다. 예를 예시 다음 쿼리 는 모든 샘플 문서를 반환합니다.
db.people.find( { $or: [ { name: null }, { name: { $type: "undefined" } } ] } )
이 쿼리 동작 변경은 이러한 작업에도 영향을 줍니다.
지원 중단
더 이상 사용되지 않습니다. | 설명 |
---|---|
LDAP | MongoDB 8.0 부터 시작됩니다. LDAP 인증 및 권한 부여 는 더 이상 사용되지 않습니다. LDAP 는 사용할 수 있으며 MongoDB 8 의 수명 기간 동안 변경 없이 계속 작동합니다. LDAP 는 향후 주요 출시하다 에서 제거될 예정입니다. 자세한 내용은 LDAP 사용 중단을 참조하세요. LDAP 마이그레이션 정보는 향후 제공될 예정입니다. |
헤지된 읽기 | MongoDB 8.0 부터 헤지된 읽기(hedged read)는 더 이상 사용되지 않습니다. 읽기 설정 |
인덱스 필터 | 버전 8.0 에서 더 이상 사용되지 않습니다. MongoDB 8.0 부터는 인덱스 필터 를 추가하는 대신 쿼리 설정을 사용합니다. 인덱스 필터는 MongoDB 8.0 부터 더 이상 사용되지 않습니다. 쿼리 설정에는 인덱스 필터보다 더 많은 기능이 있습니다. 또한 인덱스 필터는 영구적이지 않으며 모든 클러스터 노드에 대한 인덱스 필터를 쉽게 만들 수 없습니다. 쿼리 설정을 추가하고 예제를 탐색하려면 |
서버 측 JavaScript 함수 | MongoDB 8.0 부터 서버 측 JavaScript 함수( |
tcmallocAggressiveMemoryDecommit | MongoDB 8.0 은 tcmallocAggressiveMemoryDecommit 매개 변수를 더 이상 사용하지 않습니다. |
enableFinerGrainedCatalogCacheRefresh | MongoDB 8.0 은 enableFinerGrainedCatalogCacheRefresh 매개 변수를 더 이상 사용하지 않습니다. |
timeField time series 컬렉션 을 위한 샤드 키 | MongoDB 8.0부터는 Time Series 컬렉션에서 |
cleanupOrphaned | MongoDB 8.0 은 cleanupOrphaned 명령을 더 이상 사용하지 않습니다. 고아 문서가 남아 있지 않은지 확인하려면 $shardedDataDistribution 를 대신 사용합니다. |
rangePreview | MongoDB 8.0 부터 Queryable Encryption 컬렉션 에서 |
이전 버전과 호환되지 않는 기능
샤드에 직접 연결하여 명령을 실행할 수 없음
MongoDB 8.0 부터는 샤드에서 특정 명령 만 실행 수 있습니다. 샤드 에 직접 연결하려고 하고 지원되지 않는 명령을 실행 하면 MongoDB 가 오류를 반환합니다.
"You are connecting to a sharded cluster improperly by connecting directly to a shard. Please connect to the cluster via a router (mongos)."
샤드 에 대해 지원되지 않는 데이터베이스 명령 을 직접 실행 하려면 mongos
에 연결하거나 유지 관리 전용 directShardOperations
역할 이 있어야 합니다.
MongoDB 는 샤드 에 대해 직접 명령을 실행 수 있도록 하여 복제본 세트 에서 1- 샤드 클러스터 로의 온라인 전환을 지원합니다. 그러나 클러스터 에 둘 이상의 샤드 가 있는 경우 유지 관리 전용 directShardOperations
역할 없이 샤드 에 대해 나열된 명령 만 직접 실행 수 있습니다.
쓰기 고려 과반수
MongoDB 8.0 부터 "majority"
쓰기 고려 (write concern) 고려를 사용하는 쓰기 (write) 작업은 대다수의 복제본 세트 구성원이 변경 사항에 대한 oplog 항목을 작성했을 때 승인을 반환합니다. 이렇게 하면 "majority"
쓰기 성능이 향상됩니다. 이전 릴리스에서는 이러한 작업이 대부분의 복제본 세트 멤버가 변경 사항을 적용한 후 기다렸다가 승인을 반환했습니다.
oplog 버퍼
MongoDB 8.0 부터 세컨더리는 각 배치 에 대한 oplog 항목을 병렬로 쓰기 (write) 하고 적용 합니다. 이렇게 하면 이제 하나가 아닌 두 개의 버퍼에 대한 정보를 제공하므로 metrics.repl.buffer
상태 지표에 호환성이 손상되는 호환성이 손상되는 변경 이 도입됩니다.
MongoDB 8.0 은 다음 서버 상태 지표 을 더 이상 사용하지 않습니다.
다음 지표 로 대체됩니다.
일반 변경 사항
종료 성능
MongoDB 8.0 부터 Bulk.insert()
및 데이터 수집 워크로드의 성능이 향상될 수 있습니다. 그러나 이러한 워크로드를 실행 한 후 즉시 MongoDB 를 종료하면 예비 데이터가 디스크로 플러시되기 때문에 시간이 더 오래 걸릴 수 있습니다.
동시 압축 명령은 허용되지 않습니다.
MongoDB 8.0 부터 동일한 컬렉션에서 여러 개의 compact
명령을 동시에 실행하려고 하면 MongoDB에서 오류를 반환합니다.
지리 공간적 입력 유효성 검사
MongoDB 8.0 부터는 잘못된 입력이 포함된 지리 공간적 쿼리를 사용할 수 없습니다. 이전 버전에서는 특정 지리 공간적 쿼리가 잘못된 입력을 오류 없이 허용했습니다.
OIDC ID 제공자는 발급자 공유 가능
MongoDB 8.0 부터 여러 ID 제공자(IDP)가 정의된 경우 audience
값이 각 발급자에 대해 고유한 한 oidcIdentityProviders
매개 변수는 중복 issuer
값을 허용합니다. 이는 버전 7.3 및 7 에서도 사용할 수 있습니다.0.
serverStatus 출력 변경
MongoDB 8.0 부터 wiredTiger.concurrentTransactions
의 이름이 queues.execution
로 변경되었습니다.
집계
$rank
및 $denseRank
동작
MongoDB 8.0 부터 null
및 $denseRank
및 $rank
sortBy 작업에서 누락된 필드 값은 순위를 계산할 때 동일하게 처리됩니다. 이 변경 사항은 denseRank
및 rank
의 동작을$sort
와 일관적인 .
$shardedDataDistribution 출력
MongoDB 부터 8.0 는$shardedDataDistribution
프라이머리 샤드에 청크 또는 고아 문서가 있는 경우에만 컬렉션의 프라이머리 샤드 에 대한 출력을 반환합니다.
자세한 내용은 $shardedDataDistribution
를 참조하세요.
업그레이드된 TCMalloc
MongoDB 8.0 부터 시작됩니다. MongoDB 는 스레드별 캐시 대신 CPU별 캐시 를 사용하는 업그레이드된 버전의 TCMalloc을 사용하여 메모리 조각화를 줄이고 스트레스가 높은 워크로드에 대한 데이터베이스 의 복원력을 향상시킵니다.
더 나은 성능으로 새로운 TCMalloc을 사용하려면 자체 관리 배포서버를 위한 TCMalloc 성능 최적화를 참조하세요.