일반 공개(GA)를 발표하게 되어 기쁘게 생각합니다. C++ SDK 를 출시합니다! 이번 릴리스에서는 기존의 포괄적인 C++ 언어에 네이티브 C++ 언어 지원이 추가되었습니다. SDK 라이브러리 11개 프로그래밍 언어로 지원되며, 개발자가 확장 가능한 최신 애플리케이션을 구축할 수 있는 강력한 고성능 도구를 제공하겠다는 Facebook의 노력에 중요한 이정표가 될 것입니다. 사실 이 C++ SDK는 기존 유니티의 핵심 라이브러리입니다. Python, NodeJS, Ruby및 PHP SDK를 지원하며, 이러한 모든 프로그래밍 언어에서 일관되고 성능이 우수하며 효율적인 경험을 제공하기 위해 노력하고 있습니다.
왜 C++ SDK인가?
C++는 성능, 효율성 및 시스템 리소스에 대한 제어 기능으로 인해 많은 개발자에게 여전히 중요한 언어입니다. Couchbase는 C++ SDK를 도입함으로써 개발자가 이러한 이점을 활용하는 동시에 Couchbase의 고급 NoSQL 기능을 최대한 활용할 수 있도록 지원합니다. 이번 릴리스가 획기적인 이유는 다음과 같습니다:
성능
C++는 속도와 로우레벨 메모리 관리로 잘 알려져 있어 성능이 중요한 애플리케이션에 이상적입니다. Couchbase용 C++ SDK를 사용하면 속도나 효율성을 희생하지 않고도 고성능 애플리케이션을 구축할 수 있습니다.
원활한 통합
C++ SDK는 Couchbase Server와의 원활한 통합을 제공하여 개발자가 KV 작업, SQL++ 쿼리 및 트랜잭션과 같은 작업을 쉽게 수행할 수 있도록 지원합니다. 이러한 긴밀한 통합을 통해 애플리케이션은 고성능을 유지하면서 효과적으로 확장할 수 있습니다.
최신 API 디자인
C++ SDK는 최신 C++ 표준에 부합하는 현대적이고 관용적인 API를 제공합니다. 따라서 C++ 개발자에게는 강력할 뿐만 아니라 직관적이므로 학습 곡선을 줄이고 애플리케이션을 빠르게 구축할 수 있습니다.
주요 기능
다음은 Couchbase용 C++ SDK의 뛰어난 기능 중 일부입니다:
간편한 연결 관리
C++ SDK는 다음을 간소화합니다. 연결 관리를 사용하여 최소한의 노력으로 Couchbase 클러스터에 대한 연결을 설정하고 관리할 수 있습니다. 여기에는 연결 풀링, 로드 밸런싱 및 장애 조치를 처리하여 애플리케이션의 복원력과 성능을 유지하는 것이 포함됩니다. 즉, SDK는 클러스터의 토폴로지를 자동으로 읽고 클러스터 크기 조정 또는 클러스터 업그레이드와 같은 토폴로지 변경 중에 원활한 연결을 제공할 수 있습니다. 다음은 카우치베이스 데이터베이스에 연결하는 C++ 코드의 예시입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// 카우치베이스 클러스터에 연결을 시도합니다. 자동 [connect_err, 클러스터] = 카우치베이스::클러스터::연결(구성.연결 문자열, 옵션).get(); 만약 (connect_err) { // 연결 실패 시 오류 메시지 출력 std::cout << "클러스터에 연결할 수 없습니다. 오류 코드입니다: " << connect_err.메시지() << "\n"; } else { 자동 컬렉션 = 클러스터.버킷(구성.버킷_이름) .범위(구성.범위_이름) .컬렉션(구성.컬렉션_이름); // d 흥미로운 것 클러스터.닫기().get(); } |
키-값(KV) 운영 지원
C++ SDK는 기본적으로 다음을 수행하도록 지원합니다. 키 값 연산. 키-값 연산은 카우치베이스에 고유한 기능으로, 카우치베이스에 저장된 문서에 대해 매우 빠른 CRUD 연산을 제공합니다. 다음은 간단한 KV를 실행하는 C++ 코드의 예입니다. get 문서의 업서트.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
자동 컬렉션 = 클러스터.버킷(구성.버킷_이름) .범위(구성.범위_이름) .컬렉션(구성.컬렉션_이름); // KV- get 자동 기록 = 컬렉션.get(document_id); std::cout << 기록.content_as() << "\n"; // 새 문서 만들기 const std::문자열 document_id{ "minimal_example" }; const 타오::json::값 기본_문서{ { "a", 1.0 }, { "b", 2.0 }, }; // KV 자동 [err, resp] = 컬렉션.업서트(document_id, 기본_문서, {}).get(); 만약 (err.ec()) { std::cout << "ec: " << err.메시지() << ", "; } else { std::cout << "id: " << document_id << ", CAS: " << resp.cas().값() << "\n"; } 클러스터.닫기().get(); |
리치 쿼리, 검색 및 벡터 검색 지원
C++ SDK는 다음을 지원합니다. SQL++ 쿼리, 전체 텍스트 검색 (FTS) 및 벡터 검색를 통해 복잡한 데이터 작업을 수행할 수 있는 강력한 도구를 제공합니다. 정교한 쿼리를 실행해야 하든 전체 텍스트 검색을 수행해야 하든, SDK는 모든 것을 지원합니다.
쿼리 검색
다음은 간단한 코드 스니펫입니다. SQL++ 쿼리 를 사용하여 항공사 컬렉션에서 레코드를 가져옵니다:
1 2 3 4 5 6 |
자동 범위 = 클러스터.버킷(구성.버킷_이름).범위(구성.범위_이름); 자동 [err, resp] = 범위.쿼리("SELECT * FROM 항공사 LIMIT 10").get(); std::cout << "--- JSON 객체로 반복:\n"; 에 대한 (자동 행 : resp.rows_as_json()) { std::cout << "항공사(id: " << 행["항공사"]["id"] << ", 이름: \"" << 행["항공사"]["name"] << "\")\n"; } |
전체 텍스트 검색(FTS)
아래는 코드 스니펫으로 FTS 쿼리 를 클릭하여 "멋진 레스토랑"랜드마크 컬렉션에 생성된 인덱스입니다:
1 2 3 4 5 6 7 8 9 10 |
자동 범위 = 클러스터.버킷(구성.버킷_이름).범위(구성.범위_이름); 자동 [err, resp] = 범위 .검색("여행-인벤토리-랜드마크", 카우치베이스::검색_요청(카우치베이스::쿼리 문자열 쿼리("멋진 레스토랑")), 카우치베이스::검색_옵션{}.필드({ "content" })) .get(); 에 대한 (const 자동& 행 : resp.행()) { 자동 필드 = 행.fields_as<카우치베이스::코덱::타오_제이슨_시리얼라이저>(); std::cout << "점수: " << 행.점수() << ", id: \"" << 행.id() << "\", 내용: \"" << 필드["content"].get_string() << "\"\n"; } |
벡터 검색
아래는 코드 스니펫으로 벡터 검색 쿼리:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
자동 범위 = 클러스터.버킷(구성.버킷_이름).범위(구성.범위_이름); // 가중치는 llm 모델 또는 openAI에서 검색할 수 있습니다. std::벡터<double> 가중치{ 0.1, 0.2, 0.3, 0.4 }; 자동 [err, resp] = 범위 .검색("여행-인벤토리-랜드마크", 카우치베이스::검색_요청(카우치베이스::벡터 검색( 카우치베이스::벡터 쿼리(field_name, 가중치)))) .get(); 에 대한 (const 자동& 행 : resp.행()) { 자동 필드 = 행.fields_as<카우치베이스::코덱::타오_제이슨_시리얼라이저>(); std::cout << "점수: " << 행.점수() << ", id: \"" << 행.id() << "\", 내용: \"" << 필드["content"].get_string() << "\"\n"; } |
비동기 프로그래밍
SDK는 다음을 지원합니다. 비동기 프로그래밍 모델을 사용하여 응답성이 뛰어나고 블로킹이 없는 애플리케이션을 구축할 수 있습니다. 이는 응답성 유지가 필수적인 처리량이 많은 애플리케이션에 특히 유용합니다. 다음은 비동기 컨텍스트에서 트랜잭션을 실행하는 예시입니다:
1 2 3 4 5 6 |
std::shared_ptr<비동기 시도_컨텍스트> ctx) -> 카우치베이스::오류 { ctx->get( 컬렉션, 일부_id, // 이 트랜잭션에서 무언가를 수행합니다. } |
거래
이 새로운 C++ SDK에는 다음이 지원됩니다. 거래 를 지원하며, 성능 개선과 기능을 추가하여 기존 C++ 트랜잭션 지원을 대체합니다. 다음은 트랜잭션 컨텍스트 생성을 위한 샘플 코드 스니펫입니다:
1 2 3 4 |
std::shared_ptr<카우치베이스::거래::시도_컨텍스트> ctx) -> 카우치베이스::오류 { ctx.삽입(컬렉션, "doc-a", nlohmann::json({})); 카우치베이스::거래::트랜잭션_결과 doc_a = ctx->get( 컬렉션, "doc-a") } |
강력한 오류 처리
오류 처리 는 모든 애플리케이션에서 매우 중요하며, C++ SDK는 다른 SDK와 마찬가지로 연결 끊김에 대한 재시도, 연결 풀링 및 정보 제공 오류 메시지 등 포괄적인 오류 처리 기능을 제공합니다. 이를 통해 오류를 원활하게 처리하고 복구하여 애플리케이션의 안정성과 신뢰성을 향상시킬 수 있습니다.
시작하기
카우치베이스용 C++ SDK를 시작하는 데 도움을 드리기 위해 문서 웹사이트에 자세한 시작 가이드를 준비했습니다. 다음은 시작하는 방법에 대한 간략한 개요입니다:
커뮤니티 및 지원
저희는 커뮤니티와 오픈소스 개발의 힘을 믿습니다. 카우치베이스용 C++ SDK 는 오픈 소스입니다.를 통해 의견을 제시하고 피드백을 제공하며 대화에 참여해 주시기 바랍니다. 지원을 받으려면 엔터프라이즈 라이선스 고객인 경우 지원팀에 문의할 수 있으며, 그렇지 않은 경우에는 종합적인 문서에 가입하여 카우치베이스 포럼 또는 카우치베이스 디스코드를 통해 문의하거나 지원 포털.
추가 읽기
자세한 내용은 문서 웹사이트를 참조하세요. 특히 트랜잭션 및 비동기 작업과 관련된 API에 대해 자세히 설명하고 있으며, 더 자세히 알아볼 수 있도록 기타 참고 자료와 샘플 바인딩 링크를 제공합니다:
지원되는 운영 체제 는 문서 웹사이트에 나와 있습니다.
행복한 코딩!
카우치베이스 팀