Docs Menu
Docs Home
/ / /
Java 동기화 드라이버

새로운 기능

이 페이지의 내용

  • 5.2의 새로운 기능
  • 5.1.3의 새로운 기능
  • 5.1.2의 새로운 기능
  • 5.1.1의 새로운 기능
  • 5.1의 새로운 기능
  • 5.0의 새로운 기능
  • 4.11의 새로운 기능
  • 4.10 버전의 새로운 기능

다음 버전의 새로운 기능에 대해 알아보세요:

  • 버전 5.2

  • 버전 5.1.3

  • 버전 5.1.2

  • 버전 5.1.1

  • 5.1 버전

  • 버전 5.0

  • 4.11 버전

  • 버전 4.10

중요

MongoDB Server 3.6에 대한 지원 중단

Java 운전자 v5.2 는 MongoDB Server 에 대한 지원 3.6 을 제거합니다. 서버 의 호환되는 버전에 학습 보려면 호환성을 참조하세요.

5.2 운전자 출시하다 에는 다음과 같은 변경 사항, 수정 사항 및 기능이 포함됩니다.

  • 연결 URI에서 호스팅하다 이름과 클라이언트 옵션 사이에 슬래시(/) 문자를 사용하는 것은 선택 사항입니다. 운전자 는 동일한 방식으로 다음 연결 URI 예시를 구문 분석합니다.

    // Connection URI with delimiting forward-slash
    String uri = "mongodb://example.com/?w=majority";
    // Connection URI without delimiting forward-slash
    String uri = "mongodb://example.com?w=majority";
  • SearchIndexModel 인스턴스 를 구성할 때 전달할 수 있는 SearchIndexType 클래스를 추가합니다. 이 변경 사항을 통해 Atlas Search 또는 Vector Search 인덱스 를 생성할 때 인덱스 유형을 지정할 수 있습니다. 학습 보려면 인덱스 가이드 에서 Atlas Search 및 Vector Search 인덱스 를 참조하세요.

  • SCRAM-SHA-1SCRAM-SHA-256 인증 메커니즘을 구현 하는 알고리즘 구현 을 구성된 JCA 제공자 에게 위임합니다. 이 변경은 애플리케이션 에서 구성된 FIPS 호환 JCA 제공자 를 사용하여 더 높은 수준의 보안을 제공할 수 있음을 의미합니다.

  • JVM mongodb-crypt mongodb-crypt 520 드라이버의 버전 관리와 일치하도록 mongodb-crypt 종속성 버전 관리를 수정합니다. 의 향후 버전은 운전자 와 함께 출시될 예정이며 동일한 버전 번호를 주식 합니다. 종속성을 v 로 업그레이드 해야 합니다. . 이 출시하다 의 운전자 를 업그레이드할 때 . 학습 내용은 사용 중 암호화 가이드 를 참조하세요.

  • 지원되는 모든 플랫폼에서 네이티브 암호화를 구현 하여 성능이 향상되었습니다. 다음 목록에서는 운영 체제에 따라 이 개선 사항을 구현 하는 데 필요한 조치를 설명합니다.

    • Windows: mongodb-crypt 버전을 v5.2.0 로 업그레이드합니다.

    • Mac: mongodb-crypt 버전을 v5.2.0 으로 업그레이드합니다.

    • Linux: mongodb-crypt JAR 파일 에 번들로 제공되는 파일 을 사용하는 대신 파일 시스템에 직접 libmongocrypt.so 를 설치합니다. libmongocrypt 설치에 대한 Linux 지침은 서버 매뉴얼 에서 찾을 수 있습니다. 패키지 관리자를 사용하여 libmongocrypt 를 설치하는 경우 추가 구성 없이 JNA( Java Native Access)가 해당 위치를 찾습니다. 또는 LD_LIBRARY_PATH 환경 변수를 libmongocrypt 패키지 의 파일 경로로 설정하여 검색 경로를 지정할 수 있습니다.

      번들로 제공되는 공유 라이브러리는 OpenSSL 바이너리 비호환성 가능성으로 인해 OpenSSL과 연결되지 않으므로 직접 설치를 권장합니다.

      공유 라이브러리 로딩은 JNA에서 처리합니다. 라이브러리 로딩 검색 경로 순서에 대한 규칙은 NativeLibrary 클래스 문서에서 확인할 수 있습니다.

  • 일부 상황에서 InsertOneResult.getInsertedId()InsertManyResult.getInsertedIds() 메서드가 잘못된 문서 ID를 반환하는 문제를 수정합니다. 이 변경 사항은 Java 운전자 v5.1.4 및 v4.11.4 에 백포트되었습니다.

  • 샤딩된 클러스터 작업이 실패하면 운전자 는 다른 mongos 서버를 사용할 수 있는 경우 작업 재시도를 위해 동일한 mongos 서버 를 선택하지 않습니다.

  • 애플리케이션 에서 GraalVM 네이티브 이미지를 사용할 때 필요한 연결 가능성 메타데이터 를 추가합니다. 이 메타데이터 는 운전자 라이브러리를 사용할 때 연결 가능성 메타데이터 를 수집할 필요성을 대체합니다. 학습 내용은 연결 가능성 메타데이터 를 참조하세요. GraalVM 문서에서 확인 가능합니다.

    지원되는 모든 플랫폼(대상)에 대한 항목을 추가하면 GraalVM 네이티브 이미지를 사용하여 빌드된 네이티브 실행 파일의 크기에 큰 영향을 미치기 때문에 이 변경으로 인해 libjnidispatchlibmongocrypt 리소스 항목이 추가되지 않습니다. 이 샘플 리소스-config.json 보기 파일 을 운전자 리포지토리 에서 확인하여 Github 애플리케이션 이 라이브러리에 의존하는 경우 이러한 항목을 명시적으로 지정하는 방법을 org.mongodb:mongodb-crypt 확인합니다.

  • VectorSearchOptions API 를 확장하여 다음과 같은 특정 옵션 하위 유형을 도입하여 정확한 벡터 검색 을 활성화합니다.

    • ExactVectorSearchOptions: 이 옵션 유형을 활성화 정확한 일치가 활성화되어 결과가 지정된 쿼리 벡터에 가장 가까운 벡터가 됩니다.

    • ApproximateVectorSearchOptions: 정확히 가장 가까운 벡터를 반환하지 않을 수 있는 검색을 활성화 하려면 이 옵션 유형을 사용합니다. 이 유형을 인스턴스화할 때 numCandidates 매개변수를 전달하여 고려해야 할 가장 가까운 이웃의 수를 지정할 수 있습니다.

    Atlas Vector Search 기능 사용에 학습 보려면 애그리게이션 빌더 가이드 에서 Atlas Vector Search 를 참조하세요.

5.1.3 운전자 패치 출시하다 에는 다음과 같은 변경 사항이 포함됩니다.

  • Cursor 유형을 사용할 때 어설션 오류를 일으킬 수 있는 문제를 수정합니다.

5.1.2 운전자 패치 출시하다 에는 다음과 같은 변경 사항이 포함됩니다.

  • 기본 클래스를 MongoCollection 인스턴스 의 일반 유형으로 지정하는 경우 운전자 가 일반 기본 클래스를 확장하는 구체적인 클래스를 인코딩 및 디코딩하지 못하는 문제를 수정합니다.

  • 최상위 도메인에서 6자 이상의 도메인 이름을 사용할 수 있도록 SOCKS5 프록시 기능을 사용할 때 도메인 이름의 유효성을 검사하는 방법과 관련된 문제를 수정합니다.

5.1.1 운전자 패치 출시하다 에는 다음과 같은 변경 사항이 포함됩니다.

  • MONGODB-OIDC 인증 메커니즘 을 사용하는 경우 authMechanismProperties 연결 string 값에 쉼표 문자를 포함하지 않아야 합니다. 이 동작에 학습 보려면 엔터프라이즈 인증 가이드 의 MONGODB-OIDC 섹션을 참조하세요.

  • 중복된 바이트 배열 복제를 제거하여 GridFS 처리량 을 최적화합니다. GridFSDownloadStreamGridFSUploadStream 유형은 Document 대신 BsonDocument 유형을 사용합니다.

경고

이 릴리스의 사용 중단

드라이버의 향후 주요 릴리스에서 호환성이 손상되는 변경이 발생하지 않도록 하려면 더 이상 사용되지 않는 프로그램 요소에 의존하는 모든 애플리케이션 코드를 교체하세요.

이 섹션에는 다음 정보가 포함되어 있습니다.

  • MongoDB Server v3.6 에 대한 지원은 더 이상 사용되지 않으며 다음 운전자 버전 출시하다 에서 제거될 예정입니다. MongoDB Server 배포서버 서버를 업그레이드 하는 방법을 학습 보려면 MongoDB Server 매뉴얼의 릴리스 노트 를 참조하세요.

  • GraalVM 네이티브 이미지 기술에 대한 내부 테스트입니다. 이러한 테스트에는 GraalVM 네이티브 이미지 도구를 사용하여 네이티브 애플리케이션을 빌드하는 것이 포함됩니다.

  • MONGODB-OIDC 인증 메커니즘에 대한 지원이 강화되었습니다. OIDC에 대한 자세한 내용은 엔터프라이즈 인증 메커니즘 가이드의 MONGODB-OIDC 섹션을 참조하세요.

  • serverMonitoringMode 연결 URI 옵션을 도입합니다. 이 옵션에 대한 자세한 내용은 연결 옵션 가이드 를 참조하세요.

경고

이 릴리스의 호환성이 손상되는 변경

이 드라이버 버전에는 호환성이 손상되는 변경이 도입되었습니다. 이러한 변경 사항의 목록은 업그레이드 가이드의 버전 5.0 호환성이 손상되는 변경 섹션 을 참조하세요.

경고

이 릴리스의 사용 중단

드라이버의 향후 주요 릴리스에서 호환성이 손상되는 변경이 발생하지 않도록 하려면 더 이상 사용되지 않는 프로그램 요소에 의존하는 모든 애플리케이션 코드를 교체하세요.

이 섹션에는 다음 정보가 포함되어 있습니다.

  • org.mongodb.scala.Observable.completeWithUnit() 메서드는 더 이상 지원되지 않습니다. 이제 드라이버가 org.mongodb.scala.Observable[Void] 대신 org.mongodb.scala.Observable[Unit]을(를) 노출하므로 이 메서드는 더 이상 유용하지 않습니다. 이는 이번 릴리스에서 옵저버블에 관한 호환성이 손상되는 변경과 관련이 있습니다.

  • com.mongodb.event.ConnectionReadyEventgetElapsedTime() 메서드에는 ConnectionCreatedEvent 전송하는 데 걸리는 시간이 포함되어 있습니다. 즉, 반환된 시간에는 com.mongodb.event.ConnectionPoolListener.connectionCreated() 메서드의 지속 시간이 포함됩니다.

    com.mongodb.event.ConnectionCheckedOutFailedEventcom.mongodb.event.ConnectionCheckedOutEventgetElapsedTime() 메서드에는 com.mongodb.event.ConnectionCheckOutStartedEvent 전송하는 데 걸리는 시간이 포함되어 있습니다. 즉, 반환된 시간에는 com.mongodb.eventConnectionPoolListener.connectionCheckOutStarted() 메서드의 지속 시간이 포함됩니다.

5.0 드라이버 릴리스에는 다음과 같은 기능이 도입되었습니다.

  • listCollections 명령의 authorizedCollection 옵션에 대한 지원을 추가합니다. 이는 com.mongodb.client.MongoDatabase.listCollectionNames() 메서드를 변경하여 수행되었습니다. 반환 유형은 이제 com.mongodb.client.ListCollectionNamesIterable 이지만, 이전에는 MongoIterable<String> 이었습니다. 이 변경을 통해 ListCollectionNamesIterable.authorizedCollections() 메서드를 사용하고 authorizedCollections 옵션을 지정하여 반환 값을 구성할 수 있습니다. 다음 클래스와 인터페이스에 동등한 변경 사항이 적용되었습니다.

    • com.mongodb.reactivestreams.client.MongoDatabase

    • org.mongodb.scala.MongoDatabase

    • com.mongodb.kotlin.client.MongoDatabase

    • com.mongodb.kotlin.client.coroutine.MongoDatabase

    이러한 변경 사항 은 listCollectionsNames() 메서드에 바이너리 호환성이 손상되는 변경을 도입합니다. MongoDatabase.listCollectionNames() 메서드 및 authorizedCollections 옵션에 대한 자세한 내용은 listCollections MongoDB Server 매뉴얼 페이지 또는 컬렉션 목록 가져오기를 참조하세요.

참고

v5.0.2 패치 출시하다 는 최상위 도메인에서 6자 이상의 도메인 이름을 사용할 수 있도록 SOCKS5 프록시 기능을 사용할 때 도메인 이름의 유효성을 검사하는 방법과 관련된 문제를 수정했습니다.

이 섹션에는 다음 정보가 포함되어 있습니다.

경고

이 릴리스의 사용 중단

드라이버의 향후 주요 릴리스에서 호환성이 손상되는 변경이 발생하지 않도록 하려면 더 이상 사용되지 않는 메서드 및 유형에 의존하는 모든 애플리케이션 코드를 교체하세요.

4.11 드라이버 릴리스에서는 다음 항목이 더 이상 사용되지 않습니다.

  • DBCollection 클래스의 getStats()isCapped() 인스턴스 메서드는 더 이상 사용되지 않습니다. 해당 서버 명령은 MongoDB v6.2 이상에서 더 이상 사용되지 않습니다. 대신 $collStats 집계 파이프라인 단계를 사용하여 이러한 메서드에서 제공하는 정보를 검색하세요. 다음 코드 예시와 같이 집계를 실행할 수 있습니다.

    Cursor cursor = collection.aggregate(Arrays.asList(
    new BasicDBObject("$collStats",
    new BasicDBObject("storageStats", new BasicDBObject()))),
    AggregationOptions.builder().build()
    );

    컬렉션이 고정 사이즈 컬렉션인지 확인하려면 이전 예시 집계에서 Cursor 인스턴스가 반환한 storageStats.capped 필드 값에 액세스합니다.

    $collStats 집계 연산자에 대해 자세히 알아보려면 $collStats(집계) 서버 수동 항목을 참조하세요.

  • 다음 네트워크 주소 관련 메서드는 더 이상 사용되지 않으며 v5.0에서 제거됩니다.

    • ServerAddress 메서드 getSocketAddress()getSocketAddresses().

      getSocketAddress() 대신 java.net.InetAddressgetByName() 인스턴스 메서드를 사용합니다.

      getSocketAddresses() 대신 java.net.InetAddressgetAllByName() 인스턴스 메서드를 사용합니다.

    • UnixServerAddress 메서드 getUnixSocketAddress().

      getUnixSocketAddress() 대신 jnr.unixsocket.UnixSocketAddress의 인스턴스를 구성합니다. 생성자에 UNIX 소켓 파일의 전체 경로를 전달합니다. 기본적으로 MongoDB는 "/tmp/mongodb-27017.sock"에 UNIX 소켓 파일을 생성합니다. UnixSocketAddress에 대한 자세한 내용은 UnixSocketAddress API 문서에서 확인하세요.

  • StreamFactory 와 관련된 다음 메서드 및 유형 인터페이스는 더 이상 사용되지 않으며 v 에서 제거될5 0예정입니다. :

    • streamFactoryFactory() 다음의 메서드 MongoClientSettings.Builder

    • getStreamFactoryFactory() 다음의 메서드 MongoClientSettings

    • NettyStreamFactoryFactory 클래스

    • NettyStreamFactory 클래스

    • AsynchronousSocketChannelStreamFactory 클래스

    • AsynchronousSocketChannelStreamFactoryFactory 클래스

    • BufferProvider 클래스

    • SocketStreamFactory 클래스

    • Stream 클래스

    • StreamFactory 클래스

    • StreamFactoryFactory 클래스

    • TlsChannelStreamFactoryFactory 클래스

    MongoClientSettings.Builder.streamFactoryFactory()를 사용하여 Netty를 구성하는 경우 코드가 다음과 비슷할 수 있습니다.

    import com.mongodb.connection.netty.NettyStreamFactoryFactory;
    // ...
    MongoClientSettings settings = MongoClientSettings.builder()
    .streamFactoryFactory(NettyStreamFactoryFactory.builder().build())
    .build();

    다음 예시와 같이 이 코드를 TransportSettings.nettyBuilder()로 대체합니다.

    import com.mongodb.connection.TransportSettings;
    // ...
    MongoClientSettings settings = MongoClientSettings.builder()
    .transportSettings(TransportSettings.nettyBuilder().build())
    .build();

4.11 드라이버 릴리스의 새로운 기능은 다음과 같습니다.

참고

v4.11.3 패치 출시하다 는 최상위 도메인에서 6자 이상의 도메인 이름을 사용할 수 있도록 SOCKS5 프록시 기능을 사용할 때 도메인 이름의 유효성을 검사하는 방법과 관련된 문제를 수정했습니다.

  • 16MB를 초과하는 변경 스트림 이벤트의 일부를 식별하기 위해 ChangeStreamDocument 클래스에 getSplitEvent() 메서드를 추가했습니다. 16MB를 초과하는 이벤트를 처리하려면 변경 스트림에서 집계 단계 $changeStreamSplitLargeEvent를 사용해야 합니다. 자세한 내용은 대규모 변경 스트림 이벤트 분할을 참조하세요.

  • $vectorSearch에 대한 집계 단계 빌더를 추가했습니다. 자세히 알아보려면 Atlas Vector Search를 참조하세요.

  • Atlas Search 인덱스 관리 헬퍼가 추가되었습니다. 자세히 알아보려면 Atlas Search 인덱스를 참조하세요.

  • Snappy 및 Zstd 압축 라이브러리 종속성 버전이 업데이트되었습니다. 현재 종속성 버전에 대한 자세한 내용은 네트워크 압축을 참조하세요.

  • 연결 풀 이벤트 기간을 모니터링하기 위해 다음 클래스에 getElapsedTime() 메서드를 추가했습니다.

  • Java 21 가상 스레드 및 구조적 동시성을 지원합니다. 가상 스레드가 불필요하게 고정되는 것을 방지하고 스레드의 중단된 상태를 유지하기 위해 드라이버 내부가 업데이트되었습니다. 이는 취소에 사용되는 구조적 동시성에 후자가 중요하기 때문입니다.

    가상 스레드에 대한 자세한 내용은 가상 스레드 JDK 개선 제안을 참조하세요. 구조적 동시성에 대해 자세히 알아보려면 구조적 동시성 JDK 개선 제안을 참조하세요.

  • 다음 유형에 대한 API 문서가 업데이트되었습니다.

4.10 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.

  • 통계 집계를 위한 Accumulators.percentile()Accumulators.median() 방법이 구현되었습니다.

  • com.mongodb.client.model.search 패키지의 인터페이스는 이제 @Evolving 대신 @Sealed로 표시됩니다. 봉인된 인터페이스는 라이브러리의 소비자가 확장하거나 구현해서는 안 됩니다.

  • 드라이버가 재시도 작업에 대해 중복 로그 메시지를 전송하는 문제가 해결되었습니다. 이제 드라이버는 재시도 작업마다 하나의 로그 메시지를 올바르게 전송합니다.

  • org.bson.codecs.Parameterizable 인터페이스는 더 이상 사용되지 않습니다. 사용자 지정 Codec 유형에서 이 인터페이스를 구현하는 대신 코덱이 매개변수화된 유형에 대해 의도된 경우 코덱의 CodecProvider에서 CodecProvider.get() 메서드를 재정의합니다.

  • 사용자 지정 DNS 해석기를 지원합니다.

  • Queryable Encryption(QE)을 지원합니다. QE 기능을 사용하기 위한 요구 사항에 대해 자세히 알아보려면 Queryable Encryption 드라이버 호환성 표를 참조하세요.

돌아가기

빠른 참조