릴리스 노트
이 페이지에서는 드라이버 릴리스의 중요한 변경 사항을 문서합니다.
이는 변경 사항의 완전한 목록이 아니며 일반적으로 버그 수정을 열거하지 않습니다. GitHub }의 릴리스 페이지를 참조하세요. 각 드라이버 버전의 보다 포괄적인 변경 사항 목록 및 Jira의 릴리스 페이지를 참조하세요. 드라이버 및 해당 테스트 제품군 내부의 변경 사항을 포함한 전체 변경 사항 목록을 확인하세요.
2.20
이 릴리스에는 다음과 같은 새로운 기능이 포함되어 있습니다.
Ruby 2 를 지원합니다.5 및 2.6 는 중단되었습니다. Ruby 2 를 지원합니다.7 및 JRuby 9.2 는 더 이상 사용되지 않으며 다음 마이너 드라이버 버전에서 중단될 예정입니다. JRuby 9 를 지원합니다.4 이(가) 추가되었습니다.
새로 출시된 Ruby-BSON 버전 5 을 지원합니다.0.
연결 문자열에 더 이상 호스트와 옵션 사이에 슬래시가 필요하지 않습니다. 예를 들어 'mongodb://example.com?w=1" 및 'mongodb://example.com/?w=1"은 이제 모두 유효한 연결 문자열입니다.
이제 클라이언트 환경에 대한 컨테이너 런타임 및 오케스트레이션 메타데이터가 분석 목적으로 서버로 전송됩니다.
이제 호스트가 CosmosDB(Azure) 또는 DocumentDB(Amazon) 인스턴스로 감지되면 경고 메시지가 로그에 기록됩니다.
샤드 토폴로지에서 읽기 또는 쓰기 작업을 재시도할 때 가능한 경우 다른 mongos 인스턴스에서 재시도가 시도됩니다.
2.19
이 Ruby 드라이버 릴리스는 MongoDB 버전 7.0을 지원합니다. 이제 Ruby 드라이버는 Ruby 3.2를 지원합니다. Ruby 2.5 및 2.6은 이제 더 이상 사용되지 않습니다.
이 릴리스에는 다음과 같은 새로운 기능이 포함되어 있습니다.
이제 드라이버는 연결 풀에서 동시에 설정하는 연결 수를 제한합니다. 기본적으로 제한은 2입니다. 제한은
Mongo::Client
생성자의:max_connecting
옵션을 사용하여 구성할 수 있습니다. 대부분의 애플리케이션에는 기본값으로 충분합니다. 그러나 애플리케이션에서 많은 수의 스레드를 사용하는 경우 제한을 늘려야 할 수 있습니다.클라이언트 사이드 암호화에 Amazon Web Services KMS를 사용할 때 임시 자격 증명을 사용한 자동 Amazon Web Services 자격 증명 검색 및 인증에 대한 지원이 추가되었습니다.
클라이언트 사이드 암호화에 Google Cloud 키 관리를 사용할 때 자동 GCP 자격 증명 검색에 대한 지원이 추가되었습니다.
클라이언트 사이드 암호화에 Azure Key Vault를 사용하는 경우 자동 KMS 자격 증명에 대한 Azure VM 할당 managed ID 지원이 추가되었습니다.
Queryable Encryption 지원이 확장되었습니다.
Queryable Encryption 범위 인덱스에 대한 지원이 추가되었습니다.
이제 crypt_shared 라이브러리를
mongocryptd
대신 사용할 수 있습니다.서비스 계정, 특히 EKS에 대한 Amazon Web Services IAM 역할에 대한 지원이 추가되었습니다.
이제 가능한 경우 Amazon Web Services 자격 증명이 캐시됩니다.
Ruby 드라이버를 통한 Atlas 검색 인덱스 생성 및 관리에 대한 지원이 추가되었습니다.
2.18
이 Ruby 드라이버 릴리스는 MongoDB 버전 5.2 및 6.0을 지원합니다.
이 릴리스에는 다음과 같은 새로운 기능이 포함되어 있습니다.
Queryable Encryption 에 대한 지원이 추가되었습니다.
클라이언트 사이드 암호화를 위한 마스터 키 저장소로 사용할 수 있도록 Azure Key Vault, GCP 키 관리 및 KMIP를 준수하는 키 관리 시스템에 대한 지원이 추가되었습니다.
이제 전체 스키마 맵 대신 스키마 맵 파일의 경로를 객체로 제공할 수 있습니다.
이제 드라이버는 호환되지 않는 변경 사항 및 버그 수정에 대한 기능 플래그 메커니즘을 구현합니다. 2.18의 기능 플래그 뒤에 숨겨진 변경 사항은 보기 필터 및 옵션을
aggregate
에 전달하고 아래 설명된 대로update
대replace
메서드의 올바른 사용 여부에 대한 유효성 검사입니다.작업 업데이트 및 교체를 위한 매개변수의 유효성을 검사하는
validate_update_replace
기능 플래그를 추가했습니다. 이 플래그가 켜져 있으면 잘못된 업데이트 또는 교체 문서에 오류가 발생합니다.보기 옵션을
aggregate
,count
,count_documents
,distinct
및estimated_document_count
메서드에 올바르게 전파할 수 있도록 하는broken_view_options
기능 플래그를 추가했습니다. 이 플래그를 켜면 해당 메서드에서 보기 옵션이 무시됩니다.CRUD 메서드, 데이터베이스 나열 메서드, collection 및 인덱스 관리 메서드는 이제 새로운 옵션
:comment
을 지원합니다. 이 옵션을 사용하면 사용자가 임의의 주석을 지정하여 데이터베이스 프로파일러, currentOp 및 로그를 통해 작업을 추적할 수 있습니다.이제
estimated_document_count
메서드에서$collStats
집계 파이프라인 단계 대신count
서버 명령을 사용하여 뷰에서의 작업을 지원합니다. Stable API를 사용하는 애플리케이션은 서버 버전 5.0.8(MongoDB 5.0을 사용하는 경우) 또는 5.3.2 (MongoDB 5.1/5.2/5.3을 사용하는 경우)count
이상에서는 API strict가 활성화된 경우 명령을 사용하거나,api_strict: true
Mongo::Client
서버 버전 5.0.0-5.0.7 및 5.1에서 인스턴스를 구성할 때 설정을 피해야 합니다. 0-5.3.1.DBRef 클래스가
bson-ruby
로 이동되었습니다.BSON::DBRef
Mongo::DBRef
BSON::DBRef
BSON::Document
이전 버전과의 호환성을 위해 의 별칭은 입니다. 클래스는Mongo::DBRef
에서Object
파생된 레거시BSON::DBRef
Mongo::DBRef
와$ref
달리$id
에서$db
파생됩니다. , 및 만BSON::DBRef
허용하는 생성자에 전달된 모든 속성을$ref
유지합니다.$id
또한 는 필요한 경우 필드를 재정렬하여 , 및$db
를 MongoDB 서버의 요구 사항에 따라 순서대로 먼저 배치합니다.BulkWrite::Result
클래스에acknowledged?
속성이 추가되었습니다.대량 쓰기에 빈 작업 배열을 제공하면 이제 오류가 발생합니다.
BSON 직렬화 성능이 개선되었습니다.
ActiveJob 미들웨어 가 쿼리 캐시에 추가되었습니다.
:authorized_collections
옵션은 collection을 나열할 때 인식됩니다.:wildcard_projection
허용된 인덱스 사양에 옵션이 추가되었습니다.드라이버가 연결할 mongos 라우터 수를 제한하기 위해
:srv_max_hosts
/srvMaxHosts
Ruby 및 URI 옵션을 추가했습니다.이제 사용자 지정 SRV 서비스 이름이
:srv_service_name
Ruby 옵션 및srvServiceName
URI 옵션에서 지원됩니다.최대 연결 풀 크기가 0으로 지정되면 이제 MEAN 없음을 연결 풀로 해석됩니다.
기본 최대 연결 풀 크기가 5에서 20으로 증가했습니다.
이번 릴리스에는 JRuby 9.3에 대한 지원이 추가되었습니다.
2.17
이 Ruby 드라이버 릴리스는 MongoDB 버전 5.1을 지원합니다. 또한 필요한 최소 Ruby 버전을 2.5로 늘리고 3.6 이전의 MongoDB 버전에 대한 지원을 중단합니다.
이 릴리스에는 다음과 같은 새로운 기능이 포함되어 있습니다.
세컨더리를 포함하여 트랜잭션 외부의 읽기 명령에 대한 새로운 readConcern 수준 '스냅샷'(비추적)이 추가되었습니다.
세컨더리에서 $merge 및 $out 실행을 지원합니다.
애그리게이션 및 CRUD 명령에 대한 'let' 옵션을 지원합니다.
다음 버그가 수정되었습니다:
주소 확인이 실패하면 푸시 모니터 스레드가 종료될 수 있습니다.
다음과 같은 호환성이 손상되지 않는 변경이 적용되었습니다.
mapReduce 명령은 이제 더 이상 사용되지 않습니다.
푸시 모니터에서 반복되는 타이트한 반복 피하기
2.16
이 릴리스에는 다음과 같은 새로운 기능이 추가되었습니다.
로드 밸런서 지원.
다음과 같은 사항이 약간 개선되었습니다:
인덱스가 이미 존재하는 경우 GridFS 파일 조회는 더 이상 인덱스 생성 권한이 필요하지 않으므로 읽기 권한만 있는 사용자가 사용할 수 있습니다.
이번 Ruby 드라이버 릴리스에서는 필요한 최소 Ruby 버전이 2.4로 증가하고 3.6 미만의 MongoDB 서버 버전에 대한 지원이 중단됩니다.
2.15
이번 릴리스에는 다음과 같은 새로운 기능이 추가되었습니다.
Ruby 3.0을 지원합니다.
Zstandard 및 Snappy 유선 프로토콜 압축을 지원합니다.
쿼리 캐시 미들웨어 가 Mongoid에서 드라이버로 이동되었으며 이제 Mongoid를 사용하지 않는 애플리케이션에서 사용할 수 있습니다.
이제 time-series 옵션으로 collection을 생성할 수 있습니다.
로드 밸런서를 사용하지 않을 때 MongoDB Atlas 서버리스 를 실험적으로 지원합니다.
다음과 같은 작은 개선 사항이 있습니다:
서버에서 제공하는 경우
OperationFailure
예외 메시지에 서버 오류 코드 이름이 포함됩니다. 오류 코드 이름을 수용하도록 메시지 레이아웃이 변경되었습니다.TLS가 사용될 때 일반 SSL 메시징이
SocketError
메시지에서 제거되었습니다. Atlas는 TLS를 요구하며 MongoDB에 대한 TLS 연결은 이제 표준이 되었으며, TLS를 사용하도록 설정하지 않은 서버보다 인증서 확인 실패로 인해 연결이 실패할 가능성이 더 높습니다.애플리케이션이 TLS 연결에 사용되는 TLS 컨텍스트(예: 암호 제외)를 수정할 수 있도록 후크가 추가되었습니다.
하트비트 성공 및 하트비트 실패 서버 모니터링 이벤트 가 이제 각 하트비트 시작 이벤트에 연결되어 유용성이 향상되었습니다.
skip
및limit
옵션은 이제 서버 명령이 허용하지 않으므로estimated_document_count
호출 시 금지됩니다.이제 드라이버는 민감한 명령에 응답할 때 명령 모니터링 응답 페이로드를 생략합니다.
드라이버가 네트워크 소켓을 닫으면 이제 소켓 시간 초과가 적용됩니다.
estimated_document_count
collection 메서드는 이제 5.0 이상 서버에서 카운트 명령 대신$collStats
집계 파이프라인 단계를 사용합니다.이제 드라이버가 핸드셰이크 시 서버로 전송한 플랫폼 메타데이터에 연결 설정 목적이 포함되어 관리자가 모니터링 연결과 애플리케이션 연결을 구분할 수 있습니다.
이제 드라이버는 타임아웃에 단조로운 시계를 사용합니다.
드라이버는 더 이상 서버 응답의
writeErrors
필드에 있는 오류를 기반으로 서버를 알 수 없는 서버로 표시하지 않습니다.mongocryptd
의 서버 선택 제한 시간이 10초로 증가했습니다.
2.14
이번 릴리스에는 다음과 같은 새로운 기능이 추가되었습니다.
이제 Atlas Data Lake에 대한 쿼리가 지원됩니다.
쿼리 캐시 가 Mongoid에서 드라이버로 이동되었습니다. Mongoid는 드라이버 2.14부터 드라이버의 쿼리 캐시를 사용합니다. 이동의 일환으로 쿼리 캐시의 몇 가지 문제가 수정되었고 그 기능이 집계 파이프라인 쿼리를 처리하고 모든 크기의 결과 집합을 지원하도록 확장되었습니다.
이제 설명 시 설명 상세도를 지정할 수 있습니다.
이제 대소문자 혼합 읽기 설정 (read preference) 태그 이름이 지원됩니다.
드라이버는 TLS가 활성화되면 기본적으로 OCSP 엔드포인트 확인 을 수행합니다. Ruby의
openssl
확장이 지원되지 않기 때문에 OCSP 스테이플링은 아직 구현되지 않습니다.
다음과 같은 작은 개선 사항이 있습니다:
Client
객체에 대한 기본 로거 수준이 이제 정보입니다(디버그에서 상향). 이렇게 하면 기본적으로 드라이버에서 생성하는 로그 출력의 양이 줄어듭니다.데이터베이스 및 collection 쓰기 메서드는 개별 작업에 대한 쓰기 고려 (write concern) 지정을 지원합니다.
Client#summary
이제 메서드는 각 서버의 모니터링 상태를 표시합니다.해시 이외의 객체를 삽입하려고 하는 경우(허용되지 않음), 이제 드라이버는 더 나은 진단을 제공합니다.
이제 SRV URI에 대한 DNS 쿼리는 구성된 소켓 시간 초과의 적용을 받습니다.
이제
Client
객체가 다시 연결되면 세션 풀이 지워집니다.
Ruby 버전 2.3 및 2.4에 대한 지원은 이번 릴리스부터 더 이상 사용되지 않습니다.
2.13
이 릴리스에서는 MongoDB 4.4에 추가된 기능을 사용하는 데 필요한 클라이언트 사이드 기능을 구현합니다. 구체적으로 다음과 같은 새로운 드라이버 기능이 추가되었습니다.
배포 토폴로지를 검색하거나 직접 연결을 강제하기 위해 일관된 크로스 드라이버 메커니즘을 제공하는
directConnection
URI 옵션을 지원합니다.4.4 이상 서버에서 SCRAM 인증을 사용하면 드라이버는 더 적은 네트워크 왕복으로 인증을 완료합니다.
드라이버는 4.4 이상 서버에 대한 추가 모니터링 연결을 생성하여 상태가 변경될 때 서버가 드라이버에 알릴 수 있도록 합니다. 이렇게 하면 드라이버가 페일오버 이벤트 중에 새 프라이머리를 검색하는 시간이 줄어듭니다.
Client
생성자에 차단을 제공할 수 있으며, 이 경우 클라이언트 객체는 차단에 양보되고 차단이 종료되면 자동으로 닫힙니다.start_session
이 경우 세션 객체는 차단에 양보되고 차단이 끝날 때 자동으로 종료됩니다.이제 개별 CRUD 작업에 대해 쓰기 옵션을 지정할 수 있습니다.
작업을 찾기 위해
:allow_disk_use
옵션이 추가되었습니다.list_databases
메서드에:authorized_databases
옵션이 추가되었습니다.이제
list_collections
메서드가 모든 옵션을 통과합니다.인덱스를 생성할 때 인덱스 를 숨김 으로 설정하는 기능.
인덱스 생성 시 쿼럼 커밋을 지정하는 기능.
:wrapping_libraries
클라이언트 옵션, 문제 해결/통계 애그리게이션 목적으로 서버에 버전을 보고하기 위해 드라이버를 래핑하는 Mongoid와 같은 라이브러리에서 사용합니다.
다음과 같은 작은 개선 사항이 있습니다:
count_documents
이제 인수 없이 호출할 수 있습니다.드라이버가 Microsoft Azure에서 끊긴 연결을 올바르게 감지할 수 있도록 기본 TCP 연결 유지 시간이 단축되었습니다.
CursorNotFound
이제 재개 가능한 변경 스트림 오류입니다.이제 백그라운드 스레드에서 처리하는 예외의 역추적 줄 수를 구성할 수 있습니다.
2.12
이번 릴리스에는 다음과 같은 새로운 기능이 추가되었습니다.
list_collections
메서드에서 이제:filter
옵션을 허용합니다.
다음과 같은 작은 개선 사항이 있습니다:
이제 인증 예외에 문제 해결에 도움이 되는 서버 정보가 포함됩니다.
2.11
이번 릴리스에는 다음과 같은 새로운 기능이 추가되었습니다.
최소 연결 풀 크기가 지정된 경우, 각 서버의 풀은 지정된 최소 풀 크기까지 적극적으로 연결을 설정하기 위해 백그라운드 스레드를 생성합니다.
드라이버가 SRV URI를 사용하여 배포에 연결하고 배포가 샤드 cluster인 경우 드라이버는 SRV DNS 레코드를 폴링하여 신규 및 제거된 mongos 서버를 자동으로 검색하고 그에 따라 알려진 서버 세트를 조정합니다.
다음과 같은 작은 개선 사항이 있습니다:
이제 드라이버는 MongoDB URI의 사용자 이름과 비밀번호에 인코딩되지 않은 하위 구분 기호를 허용합니다.
이제 사용자 관리 헬퍼가 쓰기 고려 (write concern) 옵션을 허용합니다.
이제 드라이버와 함께 제공되는 명령 모니터링 로거가 각 명령에 사용되는 연결 ID를 기록합니다.
레거시 읽기 재시도를 사용하는 경우 최신 재시도와 동일한 서버 오류 세트에서 재시도합니다.
distinct(nil)
호출은 MongoDB 4.4 이상 서버에서 거부되므로 금지됩니다.
이번 Ruby 드라이버 릴리스에서는 필요한 최소 Ruby 버전이 2.3으로, 지원되는 최소 JRuby 버전이 9.2로 증가했습니다.
2.10
이 릴리스에서는 MongoDB 4.2에 추가된 기능을 사용하는 데 필요한 클라이언트 사이드 기능을 구현합니다. 구체적으로 다음과 같은 새로운 드라이버 기능이 추가되었습니다.
샤딩된 트랜잭션을 지원합니다.
애플리케이션은
commit_transaction
메서드에서:max_time_ms
옵션을 설정할 수 있습니다.데이터베이스 수준 애그리게이션을 지원합니다.
$merge
집계 파이프라인 단계를 지원합니다.이제 업데이트 작업은 집계 파이프라인을 배열로 허용합니다.
이제 가능한 경우 TLS 재협상이 비활성화됩니다.
change stream은 이제 서버에서 제공하는 배치 후 재개 토큰을 처리합니다.
다음과 같은 작은 개선 사항이 있습니다:
이전에
:write
옵션을 허용했던 메서드를 포함하여 이제 모든 메서드에서 쓰기 고려 (write concern)에 대한:write_concern
옵션을 허용합니다.이제 MongoDB URI의 쿼리 문자열이
&
으로 시작할 수 있습니다.
Ruby 2.3 미만 버전에 대한 지원은 이번 릴리스에서 더 이상 사용되지 않습니다.
2.9
이번 릴리스에는 다음과 같은 새로운 기능이 추가되었습니다.
CMAP 사양을 준수하는 향상된 모니터링으로 연결 풀 코드를 다시 작성합니다.
기본적으로 활성화되어 있는 드라이버 간 재시도 가능 읽기 사양을 준수하는 최신 재시도 가능 읽기 구현입니다.
이제 최신 재시도 가능 쓰기가 기본적으로 활성화됩니다.
레거시 재시도 가능 쓰기는 대부분의 경우 비활성화할 수 있습니다.
이제 드라이버는 TLS 연결을 위한 클라이언트 인증서로 제공되는 인증서 체인을 지원합니다.
Client
을(를) 만들 때 여러 CA 인증서를 지정할 수 있는 기능.URI 옵션을 통해 비공개 키와 인증서를 전달할 수 있습니다.
다음과 같은 작은 개선 사항이 있습니다:
$changeStream
집계 파이프라인 단계에서startAfter
옵션을 지원합니다.더 나은 로깅을 위해 서버로 전송되는 BSON 문서의 필드 순서가 변경되었습니다.
이제 이스케이프되지 않은 슬래시가 있는 인증서 경로를 MongoDB URI에 지정할 수 있습니다.
이 릴리스에서는 Ruby 2.3 미만 버전에 대한 지원이 중단되었습니다.