Docs Menu

드라이버 버전 업그레이드

이 페이지에서는 새 버전의 C++ 운전자 로 업그레이드 할 때 애플리케이션 을 변경해야 하는 경우에 대해 설명합니다.

업그레이드하기 전에 다음 작업을 수행하세요:

  • 새 C++ 운전자 버전이 애플리케이션 이 연결되는 MongoDB Server 버전 및 애플리케이션 이 컴파일할 때 사용하는 C++ 표준 버전과 호환되는지 확인하세요. 버전 호환성 정보는 C++ 운전자 호환성 페이지를 참조하세요.

  • 애플리케이션 에서 사용 중인 운전자 버전과 업그레이드 예정 버전 간의 호환성이 손상되는 변경은 호환성이 손상되는 변경 섹션에서 확인하세요.

운전자 버전을 업그레이드할 때 MongoDB Server 버전 간의 호환성을 보장하려면 Stable API 를 사용하세요.

참고

C++ 운전자 는 시맨틱 버전 관리를 따릅니다. 운전자 는 모든 출시하다 에서 빌드 시스템 또는 패키지 호환성을 손상시킬 수 있습니다. 패치 릴리스는 우발적인 API 호환성이 손상되는 변경을 되돌릴 수 있습니다.

자세한 내용은 API 및 ABI 버전 관리를 참조하세요.

호환성이 손상되는 변경은 드라이버의 특정 버전에서 시작되는 규칙 또는 동작의 변경입니다. 이러한 유형의 변경으로 인해 드라이버를 업그레이드하기 전에 해결하지 않으면 애플리케이션이 제대로 작동하지 않을 수 있습니다.

이 섹션의 호환성이 손상되는 변경은 이를 도입한 드라이버 버전별로 분류됩니다. 드라이버 버전을 업그레이드할 때 현재 버전과 업그레이드 버전 간의 호환성이 손상되는 변경을 모두 해소합니다.

예시

버전 4.0로 업그레이드

C++ 운전자 버전 3.x에서 4.0으로 업그레이드하는 경우, 버전 3.x부터 버전 4.0까지에 대해 나열된 모든 호환성이 손상되는 변경을 주소 .

새 버전의 C++ 운전자 에는 다음과 같은 유형의 호환성이 손상되는 변경이 도입될 수 있습니다.

  • API 변경 사항은 C++ 운전자 라이브러리의 API 와 관련이 있습니다. 이러한 변경 사항에는 API 주요 버전 충돌이 수반됩니다. 이러한 변경 사항을 주소 하기 위해 프로젝트 에서 C++ 소스 코드 를 편집해야 할 수도 있습니다.

    예시

    • v1::func() 함수의 선언을 제거합니다. (ABI 호환성을 위해 정의가 계속 제공됩니다.)

    • 인라인 함수 v_noabi::func() 을 제거합니다.

    • v_noabi::func() 을(를) 제거합니다.

    • bsoncxx::foo 의 재선언을 v1::foo 에서 v2::foo 로 변경합니다. 이전 인터페이스를 계속 사용하려면 bsoncxx::foobsoncxx::v1::foo 로 한정합니다.

  • ABI 변경 사항은 C++ 운전자 라이브러리의 ABI와 관련이 있습니다. 이러한 변경 사항에는 ABI 버전 충돌이 수반되며, API 주요 버전 충돌도 수반될 수 있습니다. 이러한 변경 사항을 주소 하려면 프로젝트 를 다시 빌드하거나 C++ 소스 코드 를 편집해야 할 수 있습니다.

    v_noabi 네임스페이스 에 선언된 엔터티에 해당하는 기호에는 ABI 안정성이 지원 되지 않습니다 . 이러한 기호에 대한 단절적 변경이 반드시 ABI 버전 충돌을 수반하는 것은 아닙니다.

    예시

    • 내보낸 기호 v_noabi::func() 을 제거합니다.

    • 내보낸 기호 v1::func() 을 제거합니다.

    • v1::type 에 대해 내보낸 기호를 제거합니다.

  • 빌드 시스템 변경 사항은 빌드 시스템 또는 C++ 운전자 라이브러리의 패키징과 관련이 있습니다. 이러한 변경 사항이 반드시 API 주요 버전 충돌 또는 ABI 버전 충돌을 수반하는 것은 아닙니다. 이러한 변경 사항을 주소 하려면 빌드 시스템 구성을 수정하거나 프로젝트의 패키지 또는 종속성 관리 설정을 업데이트 해야 할 수 있습니다. C++ 소스 코드 를 수정하거나 다시 빌드해야 할 수도 있습니다.

    예시

    • ENABLE_FOO 구성 변수를 제거합니다.

    • ENABLE_BAR 구성 변수의 기본값 을 OFF 에서 ON 로 변경합니다.

    • 플랫폼 A, 컴파일러 B 또는 아키텍처 C 에 대한 지원 을 중단합니다.

다음 섹션에서는 각 운전자 버전 출시하다 에 도입된 호환성이 손상되는 변경에 대해 설명합니다.

v4.0 운전자 는 빌드 시스템에 다음과 같은 호환성이 손상되는 변경을 도입했습니다.

  • 부스트 및 MNMLSTC/core 외부 폴리필 라이브러리에 대한 지원 중단합니다. 다음 구성 옵션은 더 이상 설정하다 수 없습니다.

    • ENABLE_BSONCXX_POLY_USE_IMPLS. 이 옵션은 암시적으로 ON로 설정하다 됩니다.

    • BSONCXX_POLY_USE_MNMLSTC.

    • BSONCXX_POLY_USE_SYSTEM_MNMLSTC.

    • BSONCXX_POLY_USE_BOOST.

  • MONGOCXX_OVERRIDE_DEFAULT_INSTALL_PREFIX 구성 옵션에 대한 지원 중단합니다. 이제 CMAKE_INSTALL_PREFIX 에 대한 기본 CMake 동작이 적용됩니다.

  • 기본값 으로 ENABLE_TESTS 구성 옵션을 OFF 로 설정합니다. 건물 테스트 대상을 다시 활성화하려면 ENABLE_TESTSON로 설정하다 해야 합니다. "all" 대상에 테스트 대상을 포함하려면 BUILD_TESTING 옵션도 ON로 설정하다 해야 합니다.

v4.0 운전자 API 에 다음과 같은 호환성이 손상되는 변경을 도입합니다.

  • 부스트 또는 MNMLSTC/코어 라이브러리에 해당하는 별칭으로 bsoncxx::stdx::string_viewbsoncxx::stdx::optional<T> 구성에 대한 지원 중단합니다. 자세한 내용은 빌드 시스템 주요 변경 사항 섹션을 참조하세요.

  • 다음 헤더 파일을 제거합니다:

    • <bsoncxx/stdx/make_unique.hpp>

    • <bsoncxx/types/value.hpp>

    • <bsoncxx/util/functor.hpp>

    • <mongocxx/options/create_collection.hpp>

  • string 에 해당하는 다음과 같은 더 이상 사용되지 않는 utf8 유형 및 함수를 제거합니다.

    • k_utf8 bsoncxx::v_noabi::type 클래스에서. 대신 k_string을(를) 사용하세요.

    • b_utf8 bsoncxx::v_noabi::types 클래스에서. 대신 b_string을(를) 사용하세요.

    • get_utf8() bsoncxx::v_noabi::document::element, bsoncxx::v_noabi::array::elementbsoncxx::v_noabi::types::bson_value::view 클래스에서. 대신 get_string()을(를) 사용하세요.

    • k_cannot_append_utf8 bsoncxx::v_noabi::exception::error_code 클래스에서. 대신 k_cannot_append_string을(를) 사용하세요.

    • k_need_element_type_k_utf8 bsoncxx::v_noabi::exception::error_code 클래스에서. 대신 k_need_element_type_k_string을(를) 사용하세요.

  • mongocxx::stdx 네임스페이스 제거합니다. 코드에서 다음 유형을 바꿉니다.

    • mongocxx::stdx::optional<T>. 대신 bsoncxx::stdx::optional<T>을(를) 사용하세요.

    • mongocxx::stdx::string_view. 대신 bsoncxx::stdx::string_view을(를) 사용하세요.

  • 문서화되지 않은 다음 using 지시문 및 선언을 제거합니다.

    • bsoncxx::builder::types <bsoncxx/builder/list.hpp> 헤더 파일 에서 . 대신 <bsoncxx/types.hpp>bsoncxx::types 을(를) 사용하세요.

    • bsoncxx::builder::stream::concatenate <bsoncxx/builder/stream/helpers.hpp> 헤더 파일 에서 . 대신 <bsoncxx/builder/concatenate.hpp>bsoncxx::builder::concatenate 을(를) 사용하세요.

    • mongocxx::events::read_preference <mongocxx/events/topology_description.hpp> 헤더 파일 에서 . 대신 <mongocxx/read_preference.hpp>mongocxx::read_preference 을(를) 사용하세요.

v4.0 운전자 ABI에 다음과 같은 호환성이 손상되는 변경을 도입했습니다.

  • 부스트 또는 MNMLSTC/코어 라이브러리에 해당하는 별칭으로 bsoncxx::stdx::string_viewbsoncxx::stdx::optional<T> 구성에 대한 지원 중단합니다. 자세한 내용은 빌드 시스템 주요 변경 사항 섹션을 참조하세요.

  • string 에 해당하는 utf8 함수를 사용하지 않고 제거합니다. 이러한 변경 사항의 전체 목록은 API 단절적 변경 사항 섹션을 참조하세요.

v3.11 운전자 는 빌드 시스템에 다음과 같은 호환성이 손상되는 변경을 도입했습니다.

  • MongoDB Server v3.6 에 대한 지원 을 중단합니다.

  • MongoDB C 드라이버 v1.28.0 이상이 필요합니다.

  • ENABLE_TESTS 구성 옵션이 ON로 설정하다 경우 C++14 이상이 필요합니다. CMake 구성 중에 ENABLE_TESTS=OFF 로 테스트를 비활성화하여 C++14 요구 사항을 옵트아웃할 수 있습니다.

v3.11 운전자 ABI에 다음과 같은 호환성이 손상되는 변경을 도입했습니다.

  • bsoncxx ABI에서 다음 비공개 멤버 함수의 내보내기를 제거합니다.

    bsoncxx::v_noabi::types::bson_value::value::value(const uint8_t*, uint32_t, uint32_t, uint32_t)
    bsoncxx::v_noabi::types::bson_value::view::_init(void*)
    bsoncxx::v_noabi::types::bson_value::view::view(const uint8_t*, uint32_t, uint32_t, uint32_t)
    bsoncxx::v_noabi::types::bson_value::view::view(void*)
  • mongocxx ABI에서 다음 비공개 멤버 함수의 내보내기를 제거합니다.

    mongocxx::v_noabi::options::change_stream::as_bson()
    mongocxx::v_noabi::options::aggregate::append(bsoncxx::v_noabi::builder::basic::document&)
    mongocxx::v_noabi::options::index::storage_options()
  • MSVC로 컴파일할 때 내보낸 모든 함수 기호를 __cdecl 으)로 선언합니다. 프로젝트를 빌드할 때 대체 기본값 호출 규칙을 사용하는 경우 이는 ABI 호환성이 손상되는 호환성이 손상되는 변경 입니다.

v3.10 운전자 는 빌드 시스템에 다음과 같은 호환성이 손상되는 변경을 도입했습니다.

  • find_package(libbsoncxx)find_package(libmongocxx) 호출에 대한 지원 을 중단합니다. 대신 find_package(bsoncxx)find_package(mongocxx) 를 사용합니다.

  • 레거시 CMake 패키지 구성 파일에서 제공하는 LIBBSONCXX_*LIBMONGOCXX_* CMake 변수에 대한 지원 을 중단합니다. 대신 mongo::bsoncxx_*mongo::mongocxx_* CMake 타겟을 사용합니다.

  • BSONCXX_POLY_USE_STD_EXPERIMENTAL CMake 옵션을 제거하고 폴리필 옵션으로 실험적 C++ 표준 라이브러리를 선택하기 위한 지원 을 중단합니다.

v3.9 운전자 에는 다음과 같은 호환성이 손상되는 변경이 도입되었습니다.

  • CMake 프로젝트 빌드 트리에서 내보낸 대상에 대한 지원 을 제거합니다.

  • macOS 10.14, macOS 10.15 및 Ubuntu 14.04에 대한 지원

  • MongoDB C 드라이버 v1.25.0 이상이 필요합니다.

  • FetchContent 모듈을 지원 하려면 CMake v3.15 이상이 필요합니다.

운전자 버전 이하의 경우 3.8 에서 출시하다 노트 및 각 출시하다 에 대한 관련 JIRA 티켓을 Github 참조하세요.