드라이버 버전 업그레이드
개요
이 페이지에서는 새 버전의 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::foo
을bsoncxx::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 에 대한 지원 을 중단합니다.
호환성이 손상되는 변경
다음 섹션에서는 각 운전자 버전 출시하다 에 도입된 호환성이 손상되는 변경에 대해 설명합니다.
버전 4.0
v4.0에서 시스템 호환성이 손상되는 변경 사항을 빌드합니다.
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_TESTS
를ON
로 설정하다 해야 합니다. "all" 대상에 테스트 대상을 포함하려면BUILD_TESTING
옵션도ON
로 설정하다 해야 합니다.
v4.0의 API 호환성이 손상되는 변경 사항
v4.0 운전자 API 에 다음과 같은 호환성이 손상되는 변경을 도입합니다.
부스트 또는 MNMLSTC/코어 라이브러리에 해당하는 별칭으로
bsoncxx::stdx::string_view
및bsoncxx::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::element
및bsoncxx::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 주요 변경 사항
v4.0 운전자 ABI에 다음과 같은 호환성이 손상되는 변경을 도입했습니다.
부스트 또는 MNMLSTC/코어 라이브러리에 해당하는 별칭으로
bsoncxx::stdx::string_view
및bsoncxx::stdx::optional<T>
구성에 대한 지원 중단합니다. 자세한 내용은 빌드 시스템 주요 변경 사항 섹션을 참조하세요.string
에 해당하는utf8
함수를 사용하지 않고 제거합니다. 이러한 변경 사항의 전체 목록은 API 단절적 변경 사항 섹션을 참조하세요.
3.11버전
v3.11에서 시스템 호환성이 손상되는 변경 사항을 빌드합니다.
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 주요 변경 사항
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 호환성이 손상되는 호환성이 손상되는 변경 입니다.
3.10버전
v3.10에서 시스템 호환성이 손상되는 변경 사항을 빌드합니다.
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++ 표준 라이브러리를 선택하기 위한 지원 을 중단합니다.
3.9버전
v3.9에서 시스템 호환성이 손상되는 변경 사항을 빌드합니다.
v3.9 운전자 에는 다음과 같은 호환성이 손상되는 변경이 도입되었습니다.
CMake 프로젝트 빌드 트리에서 내보낸 대상에 대한 지원 을 제거합니다.
macOS 10.14, macOS 10.15 및 Ubuntu 14.04에 대한 지원
MongoDB C 드라이버 v1.25.0 이상이 필요합니다.
FetchContent
모듈을 지원 하려면 CMake v3.15 이상이 필요합니다.
버전 3.8 및 이전 버전
운전자 버전 이하의 경우 3.8 에서 출시하다 노트 및 각 출시하다 에 대한 관련 JIRA 티켓을 Github 참조하세요.