카우치베이스 .NET SDK 2.2.0이 출시되었습니다!

오늘 Couchbase .NET SDK 버전 2.2.0을 출시합니다. 이번 릴리스의 주요 초점은 오늘 함께 릴리스된 Couchbase Server 4.0 GA와의 기능 호환성입니다! 이번 릴리스의 핵심 기능은 다음과 같습니다:

  • N1QL 지원
  • 다차원 스케일링(MDS) 지원
  • 향상된 내구성
  • GEO 공간 뷰

2.2.0 SDK에는 이러한 주요 기능과 함께 몇 가지 버그 수정 및 개선 사항도 포함되어 있습니다. 이전 버전의 SDK를 사용 중이라면 이 최신 버전으로 업그레이드할 것을 강력히 권장합니다.

전체 릴리스 노트는 다음과 같습니다. 여기.

N1QL: JSON을 위한 새로운 SQL과 유사한 쿼리 언어

의심할 여지 없이 Couchbase Server 4.0에서 가장 중요한 기능은 문서에 대한 새로운 SQL과 같은 쿼리 언어인 N1QL로 JSON 문서를 쿼리하는 기능을 완벽하게 지원한다는 것입니다. Couchbase .NET SDK 버전 2.2.0은 새로운 클라이언트 API를 통해 N1QL을 완벽하게 지원합니다.

쿼리 요청 클래스

QueryRequest 클래스는 카우치베이스 서버에 대한 N1QL 쿼리 요청을 나타냅니다. 포트 8093을 통해 N1QL REST API를 캡슐화하며 쿼리 실행을 위한 유형 안전 인터페이스를 제공합니다. 예를 들어, CouchbaseBucket 클래스에 내장된 내부 쿼리 클라이언트와 함께 REST API의 많은 배관 및 복잡성을 처리합니다:

  • 로직 일시적 및 복구 가능한 오류 재시도
  • 클러스터 전체에 걸쳐 쿼리의 균일한 분포
  • 준비된 문을 처리하는 로직
  • 우리 캐싱
  • 쿼리 결과를 POCO에 매핑하기

QueryRequest 클래스는 쿼리 결과의 실행, 오류 처리 및 데이터 매핑에서 실제 N1QL 문을 분리합니다. 다음은 QueryRequest를 사용하여 나중에 CouchbaseBucket에 대해 실행될 요청을 빌드하는 예제입니다:

먼저 QueryRequest 객체를 생성하고 여기에 N1QL 문을 전달합니다. 그런 다음 위치 매개변수를 추가합니다(참고 이름 매개변수도 지원됨). 마지막으로 500밀리초의 사용자 지정 시간 제한으로 전역 ClientConfiguration.QueryRequestTimeout 값을 재정의합니다.

QueryRequest가 생성되면 Query 메서드를 사용하여 CouchbaseBucket에 대해 실행할 수 있습니다:

그게 다입니다! 새로운 API에는 다음과 같은 메서드와 속성이 QueryRequest에 의해 노출됩니다:

방법 설명 선택 사항
성명서 실행할 N1QL 문을 설정합니다. false
준비됨 주어진 쿼리 플랜을 사용하여 최적화된 방식으로 실행되도록 N1QL 문을 설정합니다. true
시간 초과 요청에 소요되는 최대 시간을 설정합니다. true
읽기 전용 GET 요청인 경우 항상 참이고 그렇지 않으면 거짓입니다. true
메트릭 쿼리 결과와 함께 메트릭을 반환하도록 지정합니다. true
추가 이름 매개변수 명명된 매개 변수를 문 또는 준비된 문에 매개 변수에 추가합니다. true
위치 매개변수 추가 문 또는 준비된 문에 매개 변수에 위치 매개 변수를 추가합니다. true
스캔 일관성 인덱스 스캔에 대한 일관성 보장/제약 조건을 지정합니다. true
AddHoc false로 설정하면 클라이언트는 원시 쿼리 대신 쿼리 계획을 준비한 다음 실행하는 등 서버 기능에 따라 투명하게 최적화를 수행하려고 시도합니다. true

이것이 실용적이고 완전히 지원되는 매개변수입니다. 그 외에도 압축, 형식 및 인코딩에 대한 매개변수/메서드가 있지만 현재로서는 사용하지 않는 것이 좋습니다. 또한 AtPlus 및 StatementPlus의 ScanConsistency는 현재 지원되지 않으며 전달될 경우 NotSupportedException이 발생합니다.

QueryResult 클래스

요청이 서버로 전송되어 처리되면 응답이 JSON 문서 형태로 클라이언트에 다시 반환됩니다. 클라이언트는 응답을 받아 QueryRequest 클래스에 매핑합니다. 또한 클라이언트는 응답의 상태 코드(N1QL 및 HTTP 모두)를 분석하여 요청을 다시 시도할지 여부를 결정합니다. 일반적으로 HTTP 400 오류는 클라이언트 문제를 나타내므로 재시도하지 않고 호출자에게 다시 반환됩니다.

QueryRequest 클래스의 주목할 만한 프로퍼티와 메서드는 다음과 같습니다:

방법 설명
성공 쿼리가 성공하면 true입니다.
메시지 쿼리 엔진 또는 클라이언트에서 반환하는 선택적 메시지
예외 성공이 거짓이고 내부적으로 예외가 감지된 경우 이 필드에 예외가 포함됩니다.
RequestId 요청 식별자를 가져옵니다.
ClientContextId 요청의 클라이언트 컨텍스트ID(제공된 경우)를 가져옵니다. 디버깅에 사용됩니다.
서명 결과의 스키마를 가져옵니다. 쿼리가 성공적으로 완료된 경우에만 표시됩니다.
쿼리에서 반환된 모든 객체의 목록을 가져옵니다. 객체는 모든 JSON 값일 수 있습니다.
상태 요청의 상태를 가져옵니다. 가능한 값은 성공, 실행 중, 오류, 완료, 중지, 시간 초과, 치명적입니다.
오류 0개 이상의 오류 개체 목록을 가져옵니다. 요청을 처리하는 동안 오류가 발생한 경우 이 목록에 오류 개체로 표시됩니다.
경고 0개 이상의 경고 개체 목록을 가져옵니다. 요청을 처리하는 동안 경고가 발생한 경우 이 목록에 경고 개체로 표시됩니다.
메트릭 요청에 대한 메트릭이 포함된 객체를 가져옵니다.
HttpStatusCode 요청에 대한 HTTP 상태 코드를 가져옵니다.

성공 필드는 일반적으로 쿼리 요청의 성공/실패를 나타내는 데 사용되며, 실패한 경우 오류, 경고, 상태 및 HttpStatusCode 필드를 사용하여 오류/문제를 진단하여 해결할 수 있습니다.

준비된 명령문 사용

서버에서 실행되는 모든 문에는 시간과 리소스가 소요되는 관련 쿼리 계획이 생성되어야 합니다. 준비된 문을 사용하면 생성된 쿼리 계획을 반복해서 재사용할 수 있어 전반적인 성능과 서버 상태를 개선할 수 있습니다. 준비된 문을 사용하려면 AdHoc 매개 변수를 false로 설정해야 합니다:

SDK는 이 명세서 및 향후 모든 요청에 대해 준비된 명세서의 준비, 캐싱 및 재사용을 처리합니다.

다차원 스케일링

또한, 다차원 확장이라고도 하는 다차원 확장은 클러스터의 특정 노드에서 실행할 서비스를 할당할 수 있는 Couchbase Server 4.0의 새로운 기능입니다. 예를 들어, 4노드 클러스터가 있는 경우 한 노드는 쿼리 전용, 한 노드는 인덱싱 전용, 두 노드는 데이터 서비스 전용으로 지정하거나 특정 노드에서 일부 서비스를 조합하여 실행할 수 있습니다. SDK 자체는 어떤 노드가 각 서비스를 지원하는지 인식하고 클러스터의 올바른 노드로 쿼리와 키를 "자동으로" 라우팅합니다.

향상된 내구성

내구성 강화는 내구성 제약 조건을 적용하는 새로운 방법입니다. 내구성 제약 조건은 키가 "n"개의 복제본에 복제 및/또는 유지되도록 하기 위해 돌연변이에 설정하는 제약 조건입니다. 기존의 '관찰' 기반 내구성 제약 조건과 큰 차이점은 향상된 내구성에서는 복제본 시퀀스 번호를 사용하여 키가 원하는 기능을 달성했는지 확인하는 반면, '관찰'에서는 키 자체의 복제본 상태를 비교한다는 점입니다.

내구성 향상은 기존 키/값 API를 변경하는 것이 아니라 단순히 구성을 변경하는 것이며, 나머지는 SDK의 내부 API에 의해 '내부적으로' 수행됩니다:

여기서 핵심은 '기본' 버킷에 대한 BucketConfiguration에서 UseEnhancedDurability가 true로 설정되었다는 것입니다. 외부 지속성 API는 동일하며, 작업이 반환되기 전에 충족되어야 하는 원하는 지속성을 가진 키 및 값과 함께 PersistTo 및 ReplicateTo 필드가 전달됩니다.

GEO 공간 뷰

기존 카우치베이스 서버에 새롭게 추가된 것은 GEO 공간 뷰 지원입니다. GEO 공간 보기는 지리적 범위를 쿼리할 수 있는 JavaScript(축소 기능은 지원되지 않음)를 사용하여 맵 함수를 정의하여 만들 수 있습니다.

다음은 공간 뷰의 예입니다:

공간 보기를 사용하기 위한 SDK API는 보기 API와 매우 유사하지만 특수한 SpatialViewQuery 클래스를 사용하여 객체를 구성한 다음 실행을 위해 CouchbaseBucket 클래스에 제출합니다.

공간 뷰 작성에 대해 자세히 알아볼 수 있습니다. 여기.

받는 방법

SDK는 NuGet을 통해 직접 다운로드하거나 Github 리포지토리를 복제하여 가져와서 사용할 수 있습니다:

  • 바이너리 다운로드 여기.
  • NuGet 패키지는 다음에서 찾을 수 있습니다. 여기.
  • 깃허브 리포지토리는 다음과 같습니다. 여기.
이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 Jeff Morris, 수석 소프트웨어 엔지니어, Couchbase

Jeff Morris는 Couchbase의 수석 소프트웨어 엔지니어입니다. Couchbase에 입사하기 전에는 6년 동안 Source Interlink에서 엔터프라이즈 웹 아키텍트로 근무했습니다. Jeff는 Couchbase SDK 개발과 N1QL(쿼리 언어)과 통합하는 방법을 담당하고 있습니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.