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 마이그레이션 정보는 향후 제공될 예정입니다. |
헤지된 읽기(hedged read) | 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 를 대신 사용합니다. |
이전 버전과 호환되지 않는 기능
샤드에 직접 연결하여 명령을 실행할 수 없음
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"
쓰기 고려를 사용하는 쓰기 작업은 대다수의 복제본 세트 구성원이 변경 사항에 대한 oplog 항목을 작성했을 때 승인을 반환합니다. 이렇게 하면 "majority"
쓰기 성능이 향상됩니다. 이전 릴리스에서는 이러한 작업이 대부분의 복제본 세트 구성원이 변경 사항을 적용한 후 대기하고 승인을 반환했습니다.
Oplog 버퍼
MongoDB 8.0 부터 세컨더리는 각 배치에 대한 oplog 항목을 병렬로 작성하고 적용합니다. 이렇게 하면 이제 하나가 아닌 두 개의 버퍼에 대한 정보를 제공하므로 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)가 정의된 경우 oidcIdentityProviders
매개변수는 audience
값이 각 발급자에 대해 고유한 한 중복 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 시작. , MongoDB는 스레드별0 캐시 대신 CPU별 캐시 를 사용하는 업그레이드된 버전의 TCMalloc을 사용하여 메모리 조각화를 줄이고 스트레스가 높은 워크로드에 대한 데이터베이스의 복원력을 향상시킵니다.
더 나은 성능으로 새로운 TCMalloc을 사용하려면 자체 관리 배포서버를 위한 TCMalloc 성능 최적화를 참조하세요.