MongoDB 5.0 릴리스 노트
이 페이지의 내용
참고
MongoDB 5.0 출시일: 2021년 7월 13일
패치 릴리스
경고
과거 릴리스 제한 사항
아래의 중요 권고 사항은 일부 이전 MongoDB 버전에 영향을 미칩니다. 중요 권고 사항의 영향을 받는 기능을 기반으로 배포하는 경우 사용 가능한 최신 패치 릴리스로 업그레이드하세요.
이슈 | 영향을 받는 버전 |
---|---|
5.0.0 - 5.0.2 | |
5.0.0 - 5.0.2 | |
5.0.0 - 5.0.14(ARM64 또는 POWER 시스템 아키텍처) | |
5.0.2 - 5.0.17(Ops Manager 또는 Cloud Manager 클러스터의 증분 백업) | |
5.0.0 - 5.0.1 | |
5.0.0 - 5.0.21 | |
5.0.0 - 5.0.10 | |
5.0.0 - 5.0.23 | |
5.0.6 - 5.0.21(메타필드 내장된 객체에 의해 샤딩된 시계열 컬렉션) | |
5.0.0 - 5.0.24 |
5.0.29 - 2024년 9월 30일
중요
CSFLE 및 Queryable Encryption 자체 조회가 하위 파이프라인의 값을 암호 텍스트 대신 일반 텍스트로 전송할 수 있는 문제를 수정했습니다.
CVE-2024-8013, 5.0.28 이전 MongoDB 5.0 에서 특정 복잡한 자체 참조 $lookup
하위 파이프라인에 대한 쿼리 분석의 버그로 인해 다음과 같은 리터럴 값이 발생할 수 있습니다. 서버 로 전송되는 암호화됨 필드에 대한 표현식이 잘못되었습니다.
이 경우 문서는 반환되거나 기록되지 않습니다. 이 문제는 다음 MongoDB Server 버전의 mongocryptd
바이너리 및 mongo_crypt_v1
공유 라이브러리에 영향을 줍니다.
7.3.0 - 7.3.3
7.0.0 - 7.0.11
6.0.0 - 6.0.16
5.0.0 - 5.0.28
CVSS 점수: 2.2
CWE: CWE-319: 민감한 정보의 일반 텍스트 전송
서버-96254 CSFLE 및 Queryable Encryption 자체 조회가 하위 파이프라인의 값을 암호화하지 못할 수 있음
SERVER-59831 WTUniqueIndex::_insert는 세컨더리가 dupsAllowed=true를 전달할 것으로 예상함
SERVER-76777 인덱스 빌드 외부 중단 및 자체 중단 사이의 교착 상태
서버-88750 insert, update, findAndModify 및 bulkWrite에 'bypassEmptyTsReplacement' 매개변수 추가
서버-91223 $ 로그 에서 10진수 로 잘못된 계산을 표시합니다.128
WT-8771 오버플로 항목이 있는 더 이상 사용되지 않는 더티 페이지의 체크포인트 정리
5.0.28 - 2024년 7월 15일
5.0.27 - Jun 04, 2024
서버-78556 internalInsertMaxBatchSize의 기본값을 64로 반환
SERVER-79637 상관관계가 있는 조건자를 사용하는 TS 외부 컬렉션에서 $lookup의 잘못된 쿼리 결과
SERVER-80363 서버 기본 writeConcern은 wtimeout이 설정된 경우 적용되지 않음
SERVER-86474 $set: { foo: Timestamp(0, 0) }가 포함된 $_InternalApplyOplogUpdate가 올바르게 복제되지 않음
서버-86648 재개 가능한 인덱스 빌드 분류기 파일은 종료 시 fsync되지 않음
5.0.26 - 2024년 3월 26일
SERVER-68128 명령 응답을 생성하는 동안 예외가 발생하여 네트워크 오류가 발생함
SERVER-72703 $out의 db 잠금을 MODE_IX로 다운 그레이드
SERVER-83602 $or - > $in MatchExpression 재작성은 $or를 생성하지 않아야 하며 다른 $or에 직접 중첩되어서는 안 됨
SERVER-86717 리샤딩은 사용자가 제공한 영역 범위에 $ 접두사 필드가 포함되지 않았는지 확인해야 함
WT-11062 참조 주소를 안전하게 해제하여 동시 액세스를 허용함
5.0.25 - 2월 28, 2024
중요
MongoDB Server가 신뢰할 수 없는 연결에 성공할 수 있는 문제를 수정했습니다.
CVE-2024-1351 로 인해 5.0.25 이전의 MongoDB 5.0 에서, --tlsCAFile
및 CAFile
의 특정 구성에서 MongoDB Server는 피어 인증서 유효성 검사를 건너뛸 수 있으며, 이로 인해 신뢰할 수 없는 연결이 성공할 수 있습니다.
이렇게 하면 TLS에서 제공하는 보안 보장과 인증서 유효성 검사 실패로 인해 닫아야 하는 열린 연결이 효과적으로 줄어들 수 있습니다. 이 문제는 다음 MongoDB Server 버전에 영향을 미칩니다.
7.0.0 - 7.0.5
6.0.0 - 6.0.13
5.0.0 - 5.0.24
4.4.0 - 4.4.28
CVSS 점수: 8.8
CWE: CWE-295: 부적절한 인증서 유효성 검사
SERVER-64444 업그레이드 후 잘못된 pre-5.0 인덱스 사양 listIndexes에 실패함
SERVER-82353 MovePrimary가 동시에 실행될 때 다중 문서 트랜잭션이 문서를 놓칠 수 있음
SERVER-83564 프로세스 필드가 config.locks에 색인되어 있는지 확인함
SERVER-85419 배출 중에 적합한 수신자를 찾을 수 없는 경우 밸런서가 로그를 오염시킴
WT-10017 안정적인 롤백이 끝날 때 불안정한 기록 버전을 제거함
5.0.24 - 2024년 1월 18일
SERVER-50792 shardCollection/refineCollectionShardKey에 대한 샤드 키 인덱스를 찾을 수 없는 경우 더 유용한 오류를 반환함
SERVER-77506 샤딩된 다중 문서 트랜잭션은 데이터와 ShardVersion이 일치하지 않을 수 있음
SERVER-81878 시작 복구 중에 컬렉션 제거가 적용된 경우 startupRecoveryForRestore가 제대로 재생되지 않을 수 있음
SERVER-83091 $or 쿼리는 계획을 열거하는 동안 무한 루프를 트리거할 수 있음
WT-7929 체크포인트 중 FTDC 중단을 방지하기 위해 솔루션을 조사함
5.0.23 - 2023년 11월 27일
SERVER-78108 POS 인터페이스가 종료 상태를 노출해야 함
SERVER-78115 샤드 프라이머리는 config 서버의 새 라우팅 정보를 사용하기 전에 과반수 쓰기 (write)를 커밋해야 함
SERVER-83150 Document::shred()가 문서 메타데이터를 복사하지 않음
WT-11564 최신 트랜잭션 값이 체크포인트에 존재할 때만 읽도록 RTS를 수정함
WT-11602 애플리케이션에서 예상되는 제거 실패를 숨기고 오류 발생 시 롤백하지 않음
5.0.22 - 2023년 10월 26일
SERVER-68548 MongoDB Shell 4.4.15버전이 --quiet 플래그 사용에도 불구하고 ASIO 메시지 로깅
SERVER-80021 double과 string 사이에서 $convert 왕복을 올바르게 수행함
SERVER-80703 MigrationDestinationManager에서 라우팅 테이블 트래버스를 방지함
SERVER-81106 수신자 샤드가 복제 단계를 시작하기 전에 컬렉션 버전이 로컬로 유지될 때까지 기다리지 않음
WT-11064 업데이트 확인의 일부로 전역에 나타나는 삭제 표시를 건너뜀
5.0.21 - 2023년 9월 12일
SERVER-60466 addShard가 실행되기 전에 서명된 $clusterTimes를 복제본 세트 --shardsvrs에 확산(gossip)하는 드라이버 지원
SERVER-71627 캐시된 수집 경로 정보를 새로 고치면 청크가 100만 개 있는 클러스터의 경우 모든 클라이언트 요청이 심각하게 차단됨
SERVER-78813 lastCommitted optime이 null인 소진 커서로 커밋 지점 전파가 무기한 실패함
WT-10759 조정 중 기록 저장소 페이지 강제 퇴거를 다시 시도하지 않음
WT-11051 집계 타임스탬프 유효성 검사에서 최신 시작 지속형 타임스탬프 비교를 수정함
5.0.20 - 8월 14, 2023
SERVER-74954 포함된 $or가 $elemMatch 예비 조건을 다시 작성하면 잘못된 결과가 발생함
SERVER-78813 lastCommitted optime이 null인 소진 커서로 커밋 지점 전파가 무기한 실패함
SERVER-79136 시계열에 대한 metaField의 $match + $group의 잘못된 쿼리 결과
WT-10449 기록 저장소에 기록할 업데이트가 없으면 업데이트 체인을 저장하지 않음
WT-11031 체크포인트에서 시간 창 정보가 없는 테이블을 건너뛰도록 RTS를 수정함
5.0.19 - 2023년 7월 13일
SERVER -71985 DuplicateKey 오류 발생 시 time series 삽입을 자동으로 재시도함
SERVER-74551 mongo5.0으로 업그레이드 후 findAndModify 중에 WriteConflictException이 불필요하게 경고로 기록됨
SERVER-77018 dbStats와 2 인덱스 빌드 간의 교착 상태가 발생함
SERVER-78126 특정 종류의 입력의 경우, 빅 엔디안 플랫폼에서 mongo::Value()가 항상 동일한 결과로 해시함
WT-10253 세션 dhandle 스윕 및 세션 커서 스윕을 더 자주 실행함
5.0.18 - 2023년 5월 18일
수정된 문제:
SERVER-48196 timelib를 최신으로 업그레이드하여 내장 시간대 파일을 최신으로 업데이트함
SERVER-54150 안정적인 체크포인트에서 복구하면 oplog 애플리케이션 오류에 관하여 치명적 검증(fassert)을 해야 함
SERVER-57056 INFO 메시지에 해당하는 Syslog 심각도가 잘못 설정됨
SERVER-72686 time series 컬렉션의 $collStats 집계 단계에 대한 지원을 추가함
WT-10551 증분 백업이 수정된 블록을 생략할 수 있음
5.0.17 - 4월 27, 2023
수정된 문제:
SERVER-73229 논리적 세션 캐시 새로 고침이 세션 문서 업데이트에서 비롯된 쓰기 (write) 오류를 무시하여 커서가 조기에 종료됨
SERVER-74647 리샤딩 상태 머신 생성이 중단 후 다시 시도되어야 함
SERVER-75261 "listCollections" 명령이 실패하고 BSONObjectTooLarge 오류가 발생함
SERVER-75431 샤딩된 클러스터의 이름 변경 경로에서 프라이머리 db의 best effort check을 제거 또는 수정함
SERVER-76098 $search 데이터 정렬과 단순하지 않은 데이터 정렬이 있는 쿼리를 허용함
5.0.16 - 4월 10, 2023
수정된 문제:
SERVER-61909 인덱스 항목이 많은 문서의 삽입 또는 삭제가 중단됨
SERVER-73822 time-series $group 재작성이 특정 축적자를 무시함
SERVER-74345 이전 버전(Debian, RPM 패키지)에서 업그레이드한 후mongodb-org-server 4.4.19, 5.0.15, 6.0.5가 시작되지 않음
SERVER-74501 추가 정리 스레드를 생성하지 않도록 MigrationBatchFetcher/Inserter 완료 의존성을 수정함
SERVER-75205 모든 읽기 티켓이 소진되면 산출 후 잠금 복원과 강등 간 교착 상태가 발생함
5.0.15 - 2월 27, 2023
수정된 문제:
SERVER-54900 네트워킹 호출을 차단하면 동기화 소스 확인이 무기한 지연될 수 있음
SERVER-72416 find와 findAndModify 프로젝션 코드가 컬렉션 수준 데이터 정렬을 따르지 않음
SERVER-71759 dataSize 명령이 반환되지 않음
SERVER-72222 샤딩된 클러스터의 결과가 병합될 때 단일 축소 최적화가 적용된 MapReduce가 실패함
WT-9268 일관성을 유지하기 위한 내역 저장소 기록 삭제 시 지연됨
5.0.14 - 2022년 11월 21일
수정된 문제:
SERVER-68477 NaN의 expiredAfterSeconds TTL 인덱스 매개 변수 처리를 개선함
SERVER-66289 v5.0.8에서 $out이 BSONObj 크기 오류를 잘못 발생시킴
SERVER-61185 고유 인덱스 조회에 prefix_search를 사용함
SERVER-68115 "elemMatchRootLength > 0" 불변 trigger에 생기는 버그를 수정함
SERVER-68139 프로젝션 정렬이 100MB보다 큰 경우 리샤딩 명령이 실패함
5.0.13 - 2022년 9월 29일
수정된 문제:
SERVER-69611 -ffp-contract=off 컴파일러 옵션을 기본값으로 설정함
SERVER-69220 refineCollectionShardKey를 사용하면 현재 샤드 키 필드를 범위 기반과 해시 간에 토글할 수 있어 데이터 불일치가 발생할 수 있음
SERVER -67650 리샤딩 수신자는 oplog 적용자가 oplog 페처를 따라잡지 못한 경우 remainingOperationTimeEstimatedSecs=0을 반환할 수 있음
SERVER-68094 사용자 정의 생성 _id를 사용한 리샤딩이 프로젝션 오류로 인해 실패함
WT-9870 복구 중 가장 오래된 타임스탬프가 업데이트될 때마다 고정된 타임스탬프를 업데이트하는 문제를 수정함
5.0.12 - 2022년 9월 5일
수정된 문제:
SERVER-68925 시작 시 검사 테이블 로깅 설정을 다시 도입함(SERVER-43664를 되돌림)
SERVER-63852 getThreadName() 충돌이 발생하지 않아야 함
SERVER-60958 강등 이벤트 발생 시 청크 마이그레이션 중 서버 중단을 방지함
SERVER-65382 AutoSplitVector가 clientReadable을 사용하여 샤드 키 필드를 재정렬하면 안 됨
SERVER-63843 동기 신호 핸들러에서 재귀적 doLog를 허용하지 않음
5.0.11 - 8월 19, 2022
수정된 문제:
SERVER-68511
config.databases
항목의 MovePrimary 업데이트는 반드시 점으로 구분된 필드 표기법을 사용해야 함SERVER-61321 텍스트 인덱스 버전의 큰/NaN 값 처리를 개선함
SERVER-60607 지역 색인 버전의 큰/NaN 값 처리를 개선함
SERVER-68628 프라이머리 페일오버 이후 실패한 리샤딩 작업을 다시 시도하면 서버 충돌이 발생하거나 쓰기 (write)가 손실될 수 있음
SERVER-68522 5.0 바이너리가 FCV 4.4에서 잘못 구성된 TTL 인덱스로 시작되지 않게 방지함
WT-9500 RTS가 HS 업데이트의 키/값 타임스탬프 대신 셀 시간 창을 사용하도록 수정함
5.0.10 - 2022년 7월 29일
수정된 문제:
SERVER-66418 string 순서 가정으로 인해 종속성 분석 중 잘못된 프로젝션이 생성됨
SERVER-65821 커밋/중단 결정을 지속한 적 없는 트랜잭션이 준비된 경우 setFCV 중 교착 상태가 발생함
SERVER-65131 기회주의적 읽기 타깃팅을 비활성화함(헤지된 읽기 (hedged read) 제외)
SERVER-63971 2PC 트랜잭션이후 서버 매개변수를 read-your-writes 동작에 대한 기본값으로 변경함
SERVER-66433 5.1 이전 버전으로 백포트할 때 겹치는 범위 삭제 완료를 기다리는 백포트 기한
5.0.9 - 2022년 5월 31일
수정된 문제:
SERVER-65636 호스트당 LDAP 연결 수 제한을 제거함
SERVER-65137 생성 후 컬렉션을 새로 고칠 때 네임스페이스 변경을 감지함
SERVER-64822 빈 컬렉션을 샤딩하면 중요 섹션이 너무 일찍 해제됨
SERVER-62175 mongo에서 _parseCommand 중 중단된 명령에 대해 RetryableWrite 오류 레이블 첨부에 실패함
WT-9096 키가 존재하지 않을 때 가끔 잘못된 키/값을 반환하는 검색을 수정함
5.0.8 - 4월 25, 2022
수정된 문제:
SERVER-63531 commitQuorum에 buildIndexes:false 노드가 잘못 포함되어 있고 오류 메시지에 투표 노드만 자격이 있다고 잘못 표시됨
SERVER-63387 1 StreamingCursor가 WiredTiger 백업 커서에서 조회된 순서대로 백업 블록을 반환해야 함
SERVER-62229 recoverFromOplogAsStandalone=true인 상태에서 인덱스 빌드 항목 적용 시 생기는 불변성을 수정함
SERVER-61879 마이그레이션 복구를 위한 새로 고침은 진행 중인 새로 고침에 절대 조인하지 말아야 함
WT-8924 행 저장소에서 충돌을 확인할 때 삽입 목록이 있는 경우 디스크 시간 창을 확인하지 않음
5.0.7 - 4월 11, 2022
수정된 문제:
SERVER-64517 RecoverableCriticalSection이 시작 시 제대로 복구되지 않음
SERVER-64403 SORT_MERGE로 누락된 정렬 속성을 정렬 인코딩하는 쿼리를 찾음
SERVER-63742 샤드의 기본값 토폴로지 시간이 샤드 레지스트리에서 무한 새로 고침을 유발할 수 있음
SERVER-60412 호스트 메모리 제한 검사에서 cgroups v2를 지원하지 않음
WT-7922 누락된 WiredTiger 버전 파일을 처리함
5.0.6 - 1월 31, 2022
수정된 문제:
WT-8395 4.4.3 및 4.4.4에서 4.4.8+ 밀 5.0.2+로 업그레이드한 후 데이터의 일관성이 없음
SERVER-62245 MigrationRecovery가 마이그레이션을 하나만 복구해야 한다고 가정하면 안 됨
SERVER-61427 고유 인덱스 빌드가 여러 거짓 중복을 검사하므로 커밋 중에 가용성이 손실될 수 있음
SERVER-61194 더 큰 세분성으로 time-series 버킷 OID 재사용을 방지함
SERVER-60310 OCSP 응답 유효성 검사는 관련 없는 인증서의 상태를 고려하지 않아야 함
5.0.5 - 2021년 12월 6일
수정된 문제:
SERVER-61483 리샤딩 코디네이터가 등급 상승에 대한 중단 결정을 복구하지 못하고, 작업을 성공으로 커밋하려고 시도하여 데이터 불일치가 발생함
SERVER-59858 리액터 스레드에 예약된 작업 관찰 기능을 추가함
SERVER-51329 mongos 서버를 종료할 때 재시도할 수 없는 오류가 예상치 않게 발생함
WT-8163 checkpoint-cleanup을 포기하기 위해 제거 시나리오를 다양하게 고려함
WT-7912 키 범위가 여러 페이지로 분할되는 시나리오를 처리하도록 prefix search near 최적화를 수정함
5.0.4 - 2021년 11월 15일
수정된 문제:
SERVER-60326 X509 인증서에 빈 주체 이름이 있는 경우 Windows Server가 시작되지 않음
SERVER-59876 송신 연결을 설정하는 동안 libcrypto.so에서 반환하는 데 오래 걸림
SERVER-59456 LDAPReaper 스레드풀을 시작함
SERVER-59226 중단할 수 없는 것으로 표시된 프로필 세션을 사용하여 강등할 때 교착 상태가 발생함
SERVER-59074 oplog 가시성만을 설정/대기하기 위한 저장 티켓을 획득하지 않음
5.0.3 - 2021년 9월 21일
수정된 문제:
SERVER-57667: 리샤딩의 컬렉션 클로닝 파이프라인 처리 속도를 향상함
SERVER-57630: Ubuntu 18.04에서 OpenSSL 1.1.1에 대해 실행할 때 SSL_OP_NO_RENEGOTIATION을 활성화함
WT-8005: 기록 저장소 항목이 해결되지 않은 상태로 남을 가능성이 있었던 준비 커밋 버그를 수정함
WT-7995: 체크포인트 가시성을 벗어날 수 없는 전역 가시성을 수정함
WT-7984: 체크포인트에서 데이터 페이지를 생략할 수 있는 버그를 수정함
5.0.2 - 8월 4, 2021
수정된 문제:
SERVER-58936: 고유 인덱스 제약 조건이 적용되지 않을 수 있음
SERVER-57756: 동시 강등과 트랜잭션 oplog 항목 적용 간의 경쟁
SERVER-54729: MongoDB Enterprise Debian/Ubuntu 패키지는 libsasl2-modules 및 libsasl2-modules-gssapi-mit에 의존해야 함
SERVER-47372: 컬렉션이 제거된 후에도 config.cache 컬렉션이 남아있을 수 있음
WT-6729: stable의 활성 트랜잭션 검사로 롤백을 실행하기 전에 제거를 중지함
5.0.1 - 2021년 7월 22일
수정된 문제:
SERVER-58489: 뷰에 중복된 이름이 있을 때 컬렉션 생성이 무한 writeConflictRetry 루프에 갇힘
SERVER-58171: time-series 세분성을 변경해도 뷰 정의가 업데이트되지 않음
5.0.0 - 2021년 7월 13일
이 페이지의 나머지 부분에서는 5.0.0 릴리스 정보를 제공합니다.
Time Series 컬렉션
MongoDB 5.0은 일정 기간 동안의 측정 시퀀스를 효율적으로 저장하는 시계열 컬렉션을 도입했습니다. 일반 컬렉션과 비교하여 시계열 데이터를 시계열 컬렉션에 저장하면 쿼리 효율성이 향상되고 데이터 및 인덱스의 디스크 사용량이 줄어듭니다.
집계
새로운 집계 연산자
MongoDB 5.0에는 다음과 같은 집계 연산자가 도입되었습니다.
연산자 | 설명 |
---|---|
2}는 파이프라인 단계와 | |
Date() 객체를 지정된 시간 단위만큼 증가시킵니다. | |
두 날짜의 차이를 반환합니다. | |
Date() 객체를 지정된 시간 단위만큼 감소시킵니다. | |
날짜를 자릅니다. | |
2} 메서드를 추가하여 $sampleRate 파이프라인에서 주어진 비율로 문서를 확률적으로 선택합니다. | |
문서에서 지정된 필드를 추가, 업데이트 또는 제거합니다. 2}를 사용하여 마침표( )가 포함되거나 달러 기호( )로 시작하는 이름을 가진 필드를 추가, 업데이트 또는 제거할 $setField 수 있습니다.. $ | |
창 연산자
MongoDB 5.0에는 $setWindowFields
파이프라인 단계가 도입되어 컬렉션의 지정된 문서 범위(창이라고 함)에서 작업을 수행할 수 있습니다. 이 작업은 선택한 창 연산자에 따라 결과를 반환합니다.
예를 들어 $setWindowFields
단계를 사용하여 다음을 출력할 수 있습니다.
컬렉션에 있는 두 문서 간의 판매량 차이입니다.
판매 순위.
누적 판매 총액입니다.
데이터를 외부 데이터베이스로 내보내지 않고도 복잡한 시계열 정보를 분석합니다.
일반 집계 개선 사항
$expr
연산자: 비교 연산자 인덱스 사용
MongoDB 5.0부터 $eq
, $lt
, $lte
, $gt
, $gte
연산자($expr
연산자 내 배치)는 성능 향상을 위해 인덱스를 사용할 수 있습니다.
$ifNull
여러 입력 표현식을 허용하는 표현식
MongoDB 5.0부터 대체 표현식을 반환하기 전에 $ifNull
표현식에 대해 여러 입력 표현식을 지정할 수 있습니다.
let
집계 옵션
MongoDB 5.0부터 aggregate
명령과 db.collection.aggregate()
헬퍼 메서드에 집계 파이프라인의 다른 곳에서 사용할 수 있는 변수 목록을 지정하는 let
옵션이 추가되었습니다. 이를 통해 쿼리 텍스트에서 변수를 분리하여 명령 가독성을 향상시킬 수 있습니다.
$lookup
Stage: 간결한 상관관계 하위 쿼리
MongoDB 5.0부터 집계 파이프라인 $lookup
단계는 컬렉션 간의 조인을 개선하는 간결한 상관관계 하위 쿼리를 지원합니다.
$lookup
Stage: 관련 없는 하위 쿼리
MongoDB 5.0부터는 단계, 연산자 $lookup
$sampleRate
또는 $sample
연산자를 포함하는 파이프라인 단계에서 $rand
상관 관계가 없는 하위 쿼리의 경우 반복되는 경우 항상 하위 쿼리가 다시 실행됩니다. 이전에는 하위 쿼리 출력 크기에 따라 하위 쿼리 출력이 캐시되거나 하위 쿼리가 다시 실행되었습니다.
$lookup
사용하여 상관관계가 없는 하위 쿼리 수행을 참조하십시오.
$sort
무대: 성능 개선
MongoDB 5.0부터 쿼리 최적화 도구는 $project
단계의 결과를 $sort
단계로 푸시 다운합니다. 따라서 $sort
작업은 project
단계와 함께 사용할 때 더 적은 RAM을 필요로 하고 Sort exceeded memory limit
오류를 방지할 수 있습니다.
Auditing
런타임 감사 필터 구성
MongoDB 5.0에는 런타임에 감사 필터를 구성하는 기능이 추가되었습니다.
연산자 | 설명 |
---|---|
감사 구성을 확인하기 위한 폴링 간격을 정의합니다 | |
2} 및 에서 mongod 감사 구성을 mongos 검색합니다. | |
일반 감사 업데이트
MongoDB 5.0부터 도입됨:
시스템 이벤트 감사에는 다음이 포함됩니다.
새로운 감사 메시지 유형: clientMetadata, directAuthMutation, 로그아웃, 시작.
기존 감사 메시지 유형에 대한 추가 정보 및 로깅 시나리오: authCheck, authenticate, createCollection, createIndex 및 dropCollection.
보조 복제본 에 대한 DDL 작업 감사가 변경되었습니다. 감사 이벤트 및 필터 항목을 참조하십시오.
고정 사이즈 컬렉션
컬렉션 삭제 제한이 보조 항목에 복제됨
MongoDB 5.0부터는 복제 세트 제한 컬렉션에 대한 암시적 삭제 작업이 주 멤버에서 처리되고 보조 멤버에 복제됩니다.
제한된 컬렉션에서 허용되는 명시적 삭제(Explicit Deletes Allowed on Capped Collections)
변경 스트림
이벤트 출력 변경
MongoDB 5.0부터 변경 이벤트에는 배열 잘림을 기록하는 updateDescription.truncatedArrays
필드가 포함됩니다.
Indexes
부분 인덱스 동작 변경
MongoDB 5.0부터는 partialFilterExpression 필드가 동등한 필터를 표현하지 않는 한 동일한 키 패턴을 사용하여 여러 부분 인덱스 를 만들 수 있습니다.
이전 버전의 MongoDB에서는 서로 다른 partialFilterExpressions에 동일한 키 패턴을 사용할 때 여러 개의 부분 인덱스를 만들 수 없습니다.
고유한 희소 인덱스 동작 변경
MongoDB 5.0부터는 동일한 키 패턴을 가진 고유한 희소 인덱스와 고유한 비희소 인덱스가 단일 컬렉션에 존재할 수 있습니다.
Ready
진행 중인 인덱스 빌드 중에 인덱스를 삭제할 수 없습니다.
2} 명령은 진행 중인 인덱스 db.collection.dropIndexes()
빌드가 있는 경우 준비된 인덱스를 제거할 수 없습니다.
MongoDB 4.4.0~4.4.4 버전에서는 버그로 인해 이 논리가 적용되지 않았습니다.
전경 유효성 검사로 다중 키 메타데이터 불일치를 수정할 수 있음
MongoDB 배포에서 실행되는 경우 db.collection.validate()
는 독립 실행형 배포의 멀티키 메타데이터 불일치를 수정하려고 시도합니다.
MongoDB 5.0에서는 사용 중단된 geoHaystack
인덱스와 geoSearch
명령이 제거되었습니다. 대신 2d 인덱스를 $geoNear
와 함께 사용하거나, 지원되는 지리 공간적 쿼리 연산자 중 하나를 사용할 수 있습니다.
MongoDB 인스턴스를 5.0으로 업그레이드하고 featureCompatibilityVersion을 5.0
으로 설정하면 기존에 있던 geoHaystack
인덱스가 모두 삭제됩니다.
새로운 오류 메시지
db.collection.createIndex()
db.collection.createIndexes()
2} 및 작업에는 옵션을 잘못 지정할 때 새로운 오류 메시지가 표시됩니다.
중단된 인덱스 빌드
인덱스 빌드 중에 복제본 세트의 노드가 완전히 종료되거나 롤백되는 경우, 이제 인덱스 빌드 진행률이 디스크에 저장됩니다. 서버가 다시 시작되면 저장된 위치에서 인덱스 생성이 다시 시작됩니다.
reIndex
행동 변화
MongoDB 5.0부터 reIndex
명령과 db.collection.reIndex()
셸 메서드는 독립 실행형 인스턴스에서만 실행할 수 있습니다.
제거된 명령
MongoDB 5.0부터는 다음 데이터베이스 명령과 mongo
셸 헬퍼 메서드가 제거되었습니다.
제거된 명령 | 대안 |
---|---|
사용 불가 | |
사용 불가 | |
사용 불가 | |
$geoNear 또는 지원되는 지리적 공간 쿼리 연산자중 하나를 입력합니다. |
복제본 세트
비트랜잭션 읽기 config.transactions
MongoDB 5.0부터는 config.transactions
컬렉션에서 다음과 같은 읽기 우려 사항 및 옵션이 있는 경우 트랜잭션이 아닌 읽기가 허용되지 않습니다.
"majority"
이고 afterClusterTime 옵션이 설정되어 있습니다.인과적으로 일관된 세션 내에서 MongoDB 드라이버 및
"majority"
를 사용할 때
hello
명령
MongoDB 5.0부터 hello
명령과 db.hello()
메서드가 isMaster
명령과 db.isMaster()
메서드를 대체하기 위해 도입되었습니다. 새로운 토폴로지 메트릭 connections.exhaustHello
는 connections
에서 이를 추적합니다.
휴면 기간
MongoDB 5.0부터 mongod
및 mongos
는 종료하기 전에 진행 중인 모든 데이터베이스 작업이 완료될 수 있도록 대기 기간을 입력합니다.
값에 대한 members[n]._id
제한이 제거되었습니다.
MongoDB 5.0부터 members[n]._id
필드는 0
보다 크거나 같은 정수 값일 수 있습니다. 이전에는 이 값이 0
부터 255
까지의 정수로 제한되었습니다.
enableMajorityReadConcern
구성할 수 없음
MongoDB 5.0부터는 스토리지 엔진 개선으로 인해 enableMajorityReadConcern
및 --enableMajorityReadConcern
는 변경할 수 없으며 항상 true
으로 설정됩니다.
이전 버전의 MongoDB에서는 enableMajorityReadConcern
및 --enableMajorityReadConcern
를 구성할 수 있으며 false
으로 설정하여 스토리지 캐시 압력으로 인해 3멤버 PSA(Primary-Secondary-Arbiter) 아키텍처를 사용하는 배포가 고정되지 않도록 방지할 수 있습니다.
프라이머리-세컨더리-중재자(PSA) 아키텍처를 사용 중이라면 다음을 고려하세요.
쓰기 고려
"majority"
는 세컨더리를 사용할 수 없거나 지연되었을 때 성능 문제를 일으킬 수 있습니다. 이러한 문제를 완화하는 방법에 대한 조언은 자체 관리 PSA 복제본 세트를 통한 성능 문제 완화를참조하세요.글로벌 기본값
"majority"
를 사용하고 있고, 쓰기 고려가 과반수 크기보다 작으면 쿼리가 오래된 (완전히 복제되지 않은) 부실 데이터를 반환할 수 있습니다.
향상된 스레드 풀 시간 초과 제어
MongoDB 5.0부터는 새로운 replWriterMinThreadCount
서버 매개 변수를 사용하여 이 최소값을 초과하는 유휴 스레드를 닫도록 허용할 수 있습니다. replWriterMinThreadCount
5}가 replWriterThreadCount
보다 작은 값으로 구성되면 replWriterMinThreadCount
을 초과하는 유휴 스레드는 시간 초과됩니다.
PSA 복제본 세트 재구성하기
이제 프라이머리-세컨더리-중재자(PSA) 복제본 세트를 재구성하거나 PSA 아키텍처로 변경할 때 경우에 따라 2단계 변경으로 재구성을 수행해야 합니다. MongoDB 5.0은 두 단계를 모두 수행하는 rs.reconfigForPSASet()
메서드를 도입했습니다. 도우미 방법을 사용할 수 없는 경우 자체 관리형 PSA 복제본 세트를 안전하게 수정하기에 나와 있는 절차를 따르세요.
동기화 소스 재평가 제한
maxNumSyncSourceChangesPerHour
노드가 동기화 소스 재평가를 일시적으로 중지하기 전에 시간당 동기화 소스 변경이 발생할 수 있는 횟수를 결정합니다. 이 매개변수는 노드에 동기화 소스가 없는 경우 노드가 다른 노드에서 동기화를 시작하는 것을 방지하지 않습니다.
enableOverrideClusterChainingSetting
Server Parameter
MongoDB 5.0.2부터 새로운 enableOverrideClusterChainingSetting
서버 매개변수를 true
로 설정하여 settings.chainingAllowed
가 false
인 경우에도 세컨더리 멤버가 다른 세컨더리 멤버의 데이터를 복제할 수 있도록 할 수 있습니다.
보안
온라인 인증서 교체 지원
MongoDB 5.0부터는 실행 중인 mongod
또는 mongos
인스턴스를 먼저 중지할 필요 없이 필요에 따라 다음 TLS 인증서를 교체할 수 있습니다.
CRL (Certificate Revocation List) files
(Linux 및 Windows 플랫폼에서)
이러한 인증서를 순환하려면 파일 시스템의 인증서 파일을 업데이트된 버전으로 바꾼 다음 rotateCertificates
명령 또는 db.rotateCertificates()
셸 메서드를 사용하여 인증서 순환을 트리거합니다.
이러한 방식으로 인증서를 회전하는 데 가동 중지 시간이 필요하지 않으며 활성 원격 연결이 제거되지 않습니다.
자세한 내용은 온라인 인증서 순환을 참조하십시오.
TLS 1.3 암호 모음 구성 지원
MongoDB 5.0은 opensslCipherSuiteConfig
매개변수를 도입하여 TLS 1.3 암호화를 사용할 때 OpenSSL이 허용해야 하는 지원되는 암호 집합을 구성할 수 있도록 합니다.
TLS 연결 X509 인증서 시작 경고
MongoDB 5.0부터 mongod
및 mongos
는 이제 인증서에 주체 대체 이름 특성이 포함되지 않은 경우 시작 경고를 발행합니다.
다음 플랫폼은 일반 이름 유효성 검사를 지원하지 않습니다:
iOS 13 이상
MacOS 10.15 이상
Go 1.15 이상
이러한 플랫폼을 사용하는 클라이언트는 호스트 이름이 CommonName 속성으로 지정된 x.509 인증서를 사용하는 MongoDB 서버에 인증하지 않습니다.
ApplyOps 권한 작업
MongoDB 5.0은 applyOps
dbAdminAnyDatabase
가 상속하는 권한 작업을 도입했습니다.
샤딩된 클러스터
리샤딩
이상적인 샤드 키를 사용하면 MongoDB가 클러스터 전체에 문서를 고르게 분산하는 동시에 일반적인 쿼리 패턴을 용이하게 할 수 있습니다. 샤드 키가 최적화되지 않으면 고르지 않은 데이터 분산으로 인해 성능 또는 확장 문제를 일으킬 수 있습니다. MongoDB 5.0부터는 reshardCollection
명령을 사용하여 컬렉션의 샤드 키를 변경하여 클러스터 전체에 대한 데이터 배포를 변경할 수 있습니다.
currentOp
진행 중인 리샤딩 작업 보고
MongoDB 5.0부터 $currentOp
집계 단계(및 currentOp
명령어와 db.currentOp()
셸 메서드)에는 리샤딩 코디네이터와 도너 및 리시버 샤드의 진행 중인 리샤딩 작업 상태에 대한 추가 정보가 포함되어 있습니다.
db.currentOp
메서드에서 이제 집계 단계를 사용합니다. mongosh
MongoDB 5.0부터 $currentOp
집계 단계는 mongosh
와 함께 헬퍼 메서드 db.currentOp()
를 실행할 때 사용됩니다.
mongos
/ mongod
연결 풀
MongoDB 5.0부터 MongoDB는 ShardingTaskExecutorPoolReplicaSetMatching
에 대한 새로운 기본값으로 매개 변수 옵션 "automatic"
을 추가합니다. mongos
로 설정된 경우 인스턴스는 "matchPrimaryNode"
옵션에 지정된 동작을 따릅니다. mongod
로 설정된 경우 인스턴스는 "disabled"
옵션에 지정된 동작을 따릅니다.
renameCollection
샤드 컬렉션과 호환
MongoDB 5.0부터는 renameCollection
명령을 사용하여 샤딩된 컬렉션의 이름을 변경할 수 있습니다.
샤딩된 클러스터에서 샤딩된 컬렉션이나 샤딩되지 않은 컬렉션의 이름을 변경할 때 소스 및 대상 컬렉션은 모든 샤드에서만 독점적으로 잠깁니다. 소스 및 대상 컬렉션에 대한 후속 작업은 이름 바꾸기 작업이 완료될 때까지 기다려야 합니다.
movePrimary
작업 중 쓰기 시 오류 메시지
MongoDB 5.0부터 movePrimary
명령을 사용하여 샤딩된 클러스터에서 샤드를 제거할 때, 원본 샤드에 쓰면 오류 메시지가 생성됩니다.
청크 분할 및 병합 변경 로그에 소유 샤드 표시
MongoDB 5.0부터 분할 및 병합 작업에 필요한 config.changelog
컬렉션 문서에 owningShard
필드가 포함되어 있습니다. owningShard
필드에는 분할되거나 병합된 청크를 가진 샤드의 shardId
가 표시됩니다.
owningShard
0} 필드는 분할 또는 병합 작업이 자주 발생하는 샤드를 식별하는 데 도움이 됩니다.
maxCatchUpPercentageBeforeBlockingWrites
Server Parameter
MongoDB 5.0부터는 maxCatchUpPercentageBeforeBlockingWrites
를 설정해 전송되는 청크의 총 크기(MB)와 비교하여 moveChunk
작업 중에 아직 마이그레이션되지 않은 데이터의 최대 허용 비율을 지정할 수 있습니다.
이 매개변수는 다음의 동작에 영향을 줄 수 있습니다.
moveChunk
명령을 수동으로 실행합니다.로드 밸런서 기능은 여러 개의
moveChunk
명령을 자동으로 실행하여 샤드 전체에 청크를 균등하게 분배합니다. 샤딩된 클러스터 밸런서를 참조하십시오.
셸 변경
새로운 MongoDB Shell: mongosh
mongo
셸은 MongoDB v5.0에서 더 이상 사용되지 않습니다. 대체 셸은 mongosh
입니다. 레거시 mongo
셸은 향후 릴리스에서 제거될 예정입니다.
MongoDB v5.0에서도 shell 패키징이 변경되었습니다. 자세한 내용은 설치 지침에서 확인하세요.
GCP 및 Azure KMS 공급자를 위한 Shell 지원
MongoDB 5.0부터 Google Cloud Platform KMS 및 Azure Key Vault는 mongosh
및 레거시 mongo
Shell 모두에서 클라이언트 사이드 필드 레벨 암호화를 위한 KMS(키 관리 서비스) 공급자로 지원됩니다.
KMS를 사용하면 클라이언트 사이드 필드 수준 암호화 워크플로우의 일부로 데이터 암호화 키를 암호화 및 복호화하는 데 사용되는 고객 마스터 키(CMK)를 중앙에서 안전하게 저장할 수 있습니다.
또한 구성된 KMS를 사용하면 MongoDB Enterprise와 함께 사용할 때 CSFLE가 데이터 필드의 문서를 해독하는 방법을 활용할 수 있습니다.
자세히 알아보려면 mongosh를 사용한 KMS 제공자 구성을 참조하세요.
스냅샷
읽기 우려에 대한 확장 지원 "snapshot"
MongoDB 5.0부터 기본 및 보조 노드의 다중 문서 트랜잭션 이외의 일부 읽기 작업에 대해 읽기 문제 "snapshot"
가 지원됩니다. 장기 실행 스냅샷 쿼리 수행을 참조하십시오.
minSnapshotHistoryWindowInSeconds
Server Parameter
MongoDB 5.0부터는 minSnapshotHistoryWindowInSeconds
매개변수를 사용하여 WiredTiger가 스냅샷 기록을 보관하는 기간을 제어할 수 있습니다.
트랜잭션
coordinateCommitReturnImmediatelyAfterPersistingDecision
Parameter
서버 매개변수 coordinateCommitReturnImmediatelyAfterPersistingDecision
는 트랜잭션 커밋 결정이 클라이언트에 반환되는 시기를 제어합니다.
이 매개 변수는 MongDB 5.0에서 기본값이 true
로 도입되었습니다. MongoDB 6.1에서는 기본값이 false
로 변경됩니다.
coordinateCommitReturnImmediatelyAfterPersistingDecision
0}이 false
일 때,샤드 트랜잭션 코디네이터는 모든 구성원이 다중 문서 트랜잭션 커밋을 승인할 때까지 기다렸다가 클라이언트에게 커밋 결정을 반환합니다.
이름 변경
2022년 2월부터 " 버전이 지정된 API " 용어가 " Stable API " 로 변경되었습니다. 이름은 변경되나 모든 개념과 기능은 동일하게 유지됩니다.
일반 변경 사항
파이프라인 단계가 인 쿼리에 대한 $lookup
실행 계획 통계
MongoDB 5.0은 파이프라인 단계를 $lookup
사용하는 쿼리에 대한 실행 계획 통계를 추가합니다.
필드 이름에서 ($
) 및 (.
) 처리 개선
MongoDB 5.0은 접두사가 ($
)이거나 (.
) 문자가 포함된 필드 이름에 대한 지원이 개선되었습니다. 이러한 문자를 사용하는 데이터 소스로 더 쉽게 작업할 수 있도록 데이터 저장에 대한 유효성 검사 규칙이 업데이트되었습니다.
클러스터 전체 기본 쓰기 우려
MongoDB 5.0부터는 setDefaultRWConcern
명령을 통해 클러스터 전체 쓰기 우려(CWWC)가 설정되면 쓰기 우려를 해제할 수 없습니다.
자세한 내용은 암시적 기본 쓰기 고려를 참조하세요.
MongoDB 5.0부터 암시적 기본 쓰기 우려는 w: majority
입니다. 그러나 중재자가 포함된 배포의 경우 특별히 고려해야 할 사항이 있습니다.
복제 세트의 투표 과반수는 1에 투표 회원 수의 절반을 반올림한 값입니다. 데이터를 포함하는 투표 구성원의 수가 투표 과반수보다 많지 않은 경우 기본 쓰기 문제는
{ w: 1 }
입니다.다른 모든 시나리오에서 기본 쓰기 우려는
{ w: "majority" }
입니다.
특히 MongoDB는 다음 공식을 사용하여 기본 쓰기 문제를 결정합니다.
if [ (#arbiters > 0) AND (#non-arbiters <= majority(#voting-nodes)) ] defaultWriteConcern = { w: 1 } else defaultWriteConcern = { w: "majority" }
예를 들어 다음 배포와 해당 기본 쓰기 문제를 고려해보세요.
Non-Arbiters | 중재자 | 투표 노드 | 과반수 투표 노드 | 자세한 내용은 암시적 기본 쓰기 고려를 참조하세요. |
---|---|---|---|---|
2 | 1 | 3 | 2 | { w: 1 } |
4 | 1 | 5 | 3 | { w: "majority" } |
첫 번째 예시에서는
총 3개의 투표 노드에는 2명의 비중재자와 1명의 중재자가 있습니다.
투표 노드의 대다수(1 + 3의 절반, 반내림)는 2입니다.
비중재자 수(2)는 대다수의 투표 노드(2)와 동일하므로
{ w: 1 }
의 암시적 쓰기 문제가 발생합니다.
두 번째 예시에서는
총 5개의 투표 노드에는 4명의 비중재자와 1명의 중재자가 있습니다.
투표 노드의 대다수(1 + 5의 절반, 반내림)는 3입니다.
비 중재자 (4) 의 수가 투표 노드 (3) 의 과반수보다 많아서 암묵적인 쓰기 문제가
{ w: "majority" }
발생합니다.
{ w: "majority" }
2} 기본 쓰기 우려는 선거가 발생하거나 복제본 세트 구성원을 사용할 수 없게 되는 경우 더 강력한 지속성을 보장합니다.
mongosShutdownTimeoutMillisForSignaledShutdown
Parameter
MongoDB 5.0부터 새로운 매개변수 mongosShutdownTimeoutMillisForSignaledShutdown
는 mongos
의종료를 시작하기 전에 진행 중인 데이터베이스 작업이 완료될 때까지 기다리는 시간(밀리초)을 지정합니다.
구성 zstd
압축 수준
MongoDB 5.0에는 zstdCompressionLevel
2} 구성 파일 옵션이 도입되어 blockCompressor
가 zstd
으로 설정된 경우 압축 수준을 구성할 수 있습니다.
잠금 없는 읽기 작업
MongoDB 5.0부터 다른 작업이 컬렉션에 대해 배타적(X) 쓰기 잠금을 보유하는 경우 다음 읽기 작업이 차단되지 않습니다.
컬렉션에 쓸 때 mapReduce
와 aggregate
는 인텐트 배타적(IX) 잠금을 유지합니다. 따라서 컬렉션에 배타적 X 잠금이 이미 있는 경우 mapReduce
및 aggregate
쓰기 작업이 차단됩니다.
스키마 유효성 검사 실패 설명
명령의 복구 옵션 validate
MongoDB 5.0부터 validate
명령과 db.collection.validate()
도우미 메서드에 불일치가 있는 컬렉션을 복구할 수 있는 새로운 복구 옵션이 추가되었습니다.
validate
2} 명령 및 도우미 db.collection.validate()
메서드는 repaired
true
컬렉션이 복구된 경우 인 새로운 부울 값도 반환합니다.
validate
명령이 문서 스키마 위반을 보고합니다
MongoDB 5.0부터 validate
및 db.collection.validate()
는 컬렉션의 문서의 유효성을 검사합니다. 이 명령은 스키마 유효성 검사 규칙을 위반한 경우 이를 보고합니다.
복구 옵션 mongod
MongoDB 5.0부터 시작하여 --repair
옵션은 mongod
에 대한 옵션을 사용하여 컬렉션의 유효성을 검사하여 불일치를 찾아내고 가능한 경우 수정하여 인덱스를 다시 빌드하지 않도록 합니다. 사용 및 제한 사항에 대해서는 --repair
옵션을 참조하십시오.
corruptRecords
유효성 검사 출력의 필드
MongoDB 5.0부터 validate
명령과 db.collection.validate()
도우미 메서드는 손상된 문서에 대해 RecordId
개의 값 배열이 포함된 새로운 corruptRecords
필드를 반환합니다.
maxValidateMemoryUsageMB
Server Parameter
MongoDB 5.0부터 setParameter
명령에 validate
명령의 최대 메모리 사용량을 설정하는 새로운 maxValidateMemoryUsageMB
매개 변수가 있습니다.
findChunksOnConfigTimeoutMS
Server Parameter
MongoDB 5.0부터는 findChunksOnConfigTimeoutMS
매개 변수를 사용하여 chunks
에서 찾기 작업의 시간 제한을 변경할 수 있습니다.
데이터베이스 프로파일러 filter
옵션
MongoDB 5.0부터는 데이터베이스 프로파일러에 filter
옵션을 설정하여 어떤 작업이 프로파일링되고 기록되는지 결정할 수 있습니다. 4} 및 프로파일러 옵션 대신 표현식을 사용할 수 있습니다.filter
slowms
sampleRate
참조:
데이터베이스 프로파일러 설정 변경 사항 기록
MongoDB 5.0 부터 profile
명령 또는 db.setProfilingLevel()
래퍼(wrapper) 메서드를 사용하여 데이터베이스 프로파일러 level
, slowms
, sampleRate
, 또는 filter
에 대한 변경 사항이 log file
에 기록됩니다.
서버 및 감사 로그에 대한 독립적인 로그 로테이션
감사가 활성화된 MongoDB 5.0부터는 logRotate
명령을 사용하여 서버와 감사 로그를 독립적으로 회전할 수 있습니다. 이전에는 logRotate
명령을 사용하여 두 로그를 함께 순환시켰습니다.
remote
느린 작업 로그의 필드
MongoDB 5.0부터 느린 작업 로그 메시지에는 클라이언트 IP 주소를 지정하는 remote
필드가 포함됩니다.
remoteOpWaitMillis
로그 필드
MongoDB 5.0부터는 remoteOpWaitMillis 로그 필드를 사용하여 샤드에서 결과 대기 시간을 얻을 수 있습니다.
resolvedViews
뷰의 느린 쿼리를 위한 로그 필드
MongoDB 5.0부터 뷰의 느린 쿼리에 대한 로그 메시지에는 resolvedViews
뷰 세부 정보가 포함된 필드가 포함됩니다.
옵션을 사용하여 변수 정의 let
MongoDB 5.0부터 다음 명령에는 변수 목록을 정의하는 let
옵션이 있습니다. 이를 통해 쿼리 텍스트에서 변수를 분리하여 명령 가독성을 향상시킬 수 있습니다.
find
명령findAndModify
{ 2} 명령 및 해당db.collection.findAndModify()
셸 도우미update
{ 2} 명령 및 해당db.collection.update()
셸 도우미delete
명령
update
명령에는 변수 목록을 정의하기 위한 c
필드도 있습니다.
기본적으로 사용자 이름에서 LDAP DN 매핑 지원
MongoDB 5.0부터 userToDNMapping
구성 파일 옵션과 에 --ldapUserToDNMapping
대한 명령줄 옵션이 mongod
추가되었습니다. / mongos
및 mongoldap
은 이제 빈 매핑 문서(예: 빈 문자열 또는 빈 배열)가 옵션에 지정된 경우 기본적으로 인증된 사용자 이름을 LDAP DN으로 매핑합니다. 이전에는 빈 매핑 문서를 제공하면 매핑이 실패했습니다.
dbStats
추가 여유 공간 통계
MongoDB 5.0부터 dbStats
명령은 다음과 같은 추가 통계를 출력합니다.
컬렉션(
freeStorageSize
)에 할당된 여유 공간인덱스(
indexFreeStorageSize
)에 할당된 여유 공간컬렉션 및 인덱스에 할당된 총 여유 공간(
totalFreeStorageSize
)
serverStatus
출력 변경
serverStatus
출력에 다음과 같은 새로운 필드가 포함됩니다.
- 집계 지표
- API 버전 메트릭
- 복제 메트릭
- 관심사 카운터 읽기
readConcernCounters
, 쿼리 운영으로 지정된 읽기 우려 수준 보고(readConcernCounters
가opReadConcernCounters
대체)readConcernCounters
에 다음과 같은 새로운 필드가 추가되었습니다.readConcernCounters.nonTransactionOps.noneInfo
readConcernCounters.transactionOps.noneInfo
- 관심사 카운터 쓰기
opWriteConcernCounters
에 다음과 같은 새로운 필드가 추가되었습니다.opWriteConcernCounters.insert.noneInfo
opWriteConcernCounters.update.noneInfo
opWriteConcernCounters.delete.noneInfo
- 스레드 연결 수
connections.threaded
, 클라이언트 요청을 서비스하는 스레드에 할당된 클라이언트로부터 들어오는 연결 수를 보고합니다.
- 통계 재구성
shardingStatistics.resharding
를 통해 리샤딩 작업에 대한 통계를 보고합니다.
- 서비스 실행자 지표
network.serviceExecutors
를 사용하여 클라이언트 요청에 대한 작업을 실행하는 서비스 실행자에 대해 보고합니다.
- 커서 지표
metrics.cursor.moreThanOneBatch
, 하나 이상의 배치를 반환한 총 커서 수를 보고합니다(추가 배치는 명령을 사용하여 검색).getMore
metrics.cursor.totalOpened
- 열려 있는 총 커서 수를 보고합니다.
- 보안 카운터
security.authentication.saslSupportedMechsReceived
hello
, 요청에 유효한hello.saslSupportedMechs
필드가 포함된 횟수를 보고합니다.
- Repl
이제
repl
에 복제본 집합 기본값에서만 실행되는 서비스에 대한 추가 정보가 포함된primaryOnlyServices
문서가 포함되어 있습니다.
플랜 캐시 디버그 정보 크기 제한
MongoDB 5.0부터 플랜 캐시는 모든 컬렉션에 대한 plan caches
의 누적 크기가 0.5GB보다 낮은 경우에만 전체 plan cache
항목을 저장합니다. 모든 컬렉션에 대한 plan caches
의 누적 크기가 이 임계값을 초과하면 특정 디버그 정보 없이 추가로 plan cache
항목이 저장됩니다.
plan cache
항목의 예상 크기 (바이트) 는 $planCacheStats
출력에서 사용할 수 있습니다.
세션 내에서 열려 있는 비활성 커서 닫기
MongoDB 5.0 부터 클라이언트 세션 내에서 생성된 커서는 해당 서버 세션 이 killSessions
명령으로 종료되거나, 세션 시간이 초과되거나, 클라이언트가 커서를 소진한 경우 닫힙니다. mongosh
에서 커서 반복하기를 참조하세요.
새 validateDBMetadata
명령
MongoDB 5.0은 validateDBMetadata
명령을 추가합니다. 5} 명령은 데이터베이스 또는 컬렉션의 저장된 메타데이터가 특정 API 버전 내에서 유효한지 validateDBMetadata
확인합니다.
성능 고려 사항
자세한 내용은 암시적 기본 쓰기 고려를 참조하세요.
MongoDB 5.0은 기본 쓰기 고려를 { w: "majority" }
로 변경합니다. 새로운 기본 쓰기 고려는 성능에 영향을 줄 수 있습니다. MongoDB는 계산된 대다수의 복제본 세트 노드가 디스크에 쓰기를 실행하고 지속한 후에만 쓰기를 승인하기 때문입니다.
애플리케이션이 성능에 민감한 쓰기에 의존하는 경우, 데이터 내구성 보장을 대가로 기본 쓰기 고려를 재정의할 수 있습니다. 이 설정을 재정의하려면 다음을 수행할 수 있습니다.
성능이 중요한 쓰기 (write)를 할 때 개별 작업 수준에서 쓰기 고려 (write concern)를 설정합니다. 자세한 내용은 드라이버 문서에서 확인하세요.
setDefaultRWConcern
명령을 사용하여 기본 쓰기 고려를 명시적으로 설정합니다.
경고
쓰기 작업이 { w: 1 }
쓰기 고려를 사용할 경우 쓰기 작업이 완료되기 전에 프라이머리가 다시 시작되면 롤백 디렉토리는 oplog hole 이후에 제출된 쓰기를 제외할 수 있습니다.
local
기본 읽기 고려
MongoDB 5.0부터 "local"
는 기본 및 보조에 대한 읽기 작업에 대한 기본 읽기 우려 수준입니다.
이로 인해 필터를 사용하는 카운트 쿼리 및 적용 대상 쿼리의지연 시간이 크게 증가할 수 있습니다.
클러스터 전체 읽기 우려를 setDefaultRWConcern
로 설정하여 이 동작을 선택 해제할 수 있습니다.
스냅샷 기록 보존
MongoDB 5.0에서는 기본값 minSnapshotHistoryWindowInSeconds
가 300
으로 증가하여 성능에 부정적인 영향을 미칠 수 있습니다. 읽기 고려 "snapshot"
을 사용하지 않는 경우 모든 mongod
인스턴스에서 minSnapshotHistoryWindowInSeconds
매개 변수 값을 5
로 줄일 수 있습니다. 자세한 내용은 스냅샷 기록 보존을 참조하세요.
참고
샤딩된 클러스터를 실행하는 경우 config 서버에서 minSnapshotHistoryWindowInSeconds
를 변경하지 않습니다.
플랫폼 지원
최소 마이크로아키텍처
MongoDB 5.0은 다음과 같은 최소 마이크로아키텍처 요구 사항을 도입합니다.
중앙처리장치 | 최소 지원 마이크로아키텍처 |
---|---|
인텔 x86_64 | MongoDB 5.0에는 다음 중 하나가 필요합니다.
|
AMD x86_64 | MongoDB 5.0에는 AMD Bulldozer 이상이 필요합니다. |
팔 arm64 | MongoDB 5.0에는 ARMv8.2-A 이상이 필요합니다. |
MongoDB v5.0은 이러한 최소 마이크로아키텍처 요구 사항을 충족하지 않는 x86_64
또는 arm64
플랫폼에서 지원되지 않습니다.
자세한 내용은 x86_64 플랫폼 지원을 참조하십시오.
제거된 플랫폼
MongoDB 5.0에서는 다음 플랫폼에 대한 지원이 제거됩니다.
MongoDB 5.0에서 지원되는 플랫폼 및 아키텍처의 전체 목록은 플랫폼 지원을 참조하세요.
호환성에 영향을 미치는 변경 사항
일부 변경 사항은 호환성에 영향을 줄 수 있으며 사용자가 조치를 취해야 할 수 있습니다. 호환성 변경 사항에 대한 자세한 목록은 MongoDB 5.0의 호환성 변경사항을 참조하세요.
업그레이드 절차
중요
기능 호환성 버전
4.4 배포에서 MongoDB 5.0으로 업그레이드하려면 4.4 배포에 featureCompatibilityVersion
로 설정된 4.4
이 있어야 합니다. 버전을 확인하려면 다음을 입력하세요.
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
MongoDB 5.0으로 업그레이드하는 방법은 사용 중인 MongoDB 배포 관련 업그레이드 지침을 참조하세요.
5.0로 업그레이드하는 방법에 대한 지침이 필요한 경우에 대비하여 MongoDB 전문 서비스 팀은 MongoDB 애플리케이션에 지장을 주지 않고 원활하게 전환할 수 있도록 주요 버전 업그레이드 지원을 제공합니다.
다운그레이드 고려 사항
MongoDB는 단일 버전 다운그레이드만 지원합니다. 현재 릴리스보다 이전 버전인 릴리스로 다운그레이드할 수 없습니다.
예를 들어, 5.0 시리즈를 4.4 시리즈 배포로 다운그레이드할 수 있습니다. 하지만 4.4 시리즈 배포를 4.2 시리즈 배포로 한 단계 더 다운그레이드하는 것은 지원되지 않습니다.
다운로드
MongoDB 5.0를 다운로드하려면 에서 MongoDB 다운로드 센터로 이동합니다.
알려진 문제
버전 | 이슈 | 상태 |
---|---|---|
5.0.0 | SERVER-58171: 컬렉션을 만든 후에는 time series 컬렉션의 granularity 매개 변수를 수정할 수 없음 | 5.0.1에서 해결되었습니다. |
5.0.0 | SERVER-58392: 진행 중인 리샤딩 작업으로 인해 백업 또는 복원 작업이 성공하지 못할 수 있음 | 5.0.3에서 수정됨 |
이슈 신고하기
문제를 보고하려면 MongoDB GitHub 리포지토리에서 MongoDB 서버 또는 관련 프로젝트 중 하나에 대해 JIRA 티켓을 제출하는 방법을 참조하세요.