오늘 새로운 Couchbase .NET SDK를 정식 버전으로 출시합니다! 이는 SDK를 완전히 재작성한 것으로, Couchbase SDK 2.0 사양을 기반으로 하므로 다른 모든 Couchbase 2.0 SDK와 일관된 인터페이스를 유지하며 다른 SDK와 상호 작용하기 위한 공통 트랜스코딩 및 플래그를 공유합니다. 예를 들어, .NET 및 Java SDK는 트랜스코딩 문제 없이 동일한 버킷 내에서 동일한 데이터로 작업할 수 있습니다.

이번 릴리스에는 무엇이 포함되나요?

이번 릴리스에는 개발자 미리 보기에 추가된 모든 기능이 포함되어 있습니다. 1, 2 그리고 3 및 베타의 1 그리고 2:

이 모든 기능 외에도 다음과 같은 기능이 추가됩니다:

  • 복제본 읽기 지원
  • 겟엘, 잠금 해제 및 겟위드락 지원
  • 바이트 배열을 허용하는 Prepend/Append의 오버로드
  • POCO와 더 쉽게 직렬화할 수 있는 보기 API 개선 사항

가장 중요한 것은 코어를 안정화하고 프로덕션 사용을 준비하기 위한 수많은 버그 수정 및 개선 사항이 포함되어 있다는 점입니다.

복제본 읽기

복제본 읽기는 버킷이 복제본을 지원하도록 구성된 경우 하나 이상의 복제본에 대한 읽기를 허용합니다. 이 기능은 클러스터가 정상적이지 않은 상태(예: 노드가 다운되었는데 아직 장애 조치되지 않은 경우)에 유용합니다.

사용 (var 클러스터 = new 클러스터(구성))
{
사용 (var bucket = 클러스터.OpenBucket())
{
const 문자열= "ReplicaKey";

var 결과 = 버킷.GetFromReplica<문자열>();
Assert.IsTrue(결과.성공);
}
}

위 코드에서는 기본에서 직접 키를 검색하는 일반적인 Get(key) 메서드를 하나 이상의 복제본에서 키를 검색하려고 시도하는 GetFromReplica(key) 메서드로 대체한 것뿐입니다. Couchbase Server는 최대 3개의 복제본을 지원하며 클러스터의 노드 수는 저장하려는 복제본(또는 사본)의 수와 일치해야 합니다.

GetL, 잠금 해제 및 잠금 해제

GetL은 키를 독점적으로 사용하기 위해 잠그는 멤캐시 명령입니다. 기본적으로 서버는 15초에서 최대 30초 동안 키를 잠급니다. SDK에서는 이 동작을 캡슐화하는 GetWithLock이라는 메서드를 제공합니다. 잠금 해제 메서드를 사용하면 만료가 만료되기 전에 또는 최대 30초가 만료된 후 서버가 키를 잠금 해제할 때 키의 잠금을 명시적으로 해제할 수 있습니다.

사용 (var bucket = _cluster.OpenBucket())
{
var 키 = "When_Key_Is_Locked_Mutate_Succeeds_if_잠금이_해제되면";
Assert.IsTrue(버킷.Upsert(키입니다, "{'name':'value'}").성공);

var getl = 버킷.GetWithLock<문자열>(키입니다, 15);
Assert.IsTrue(getl.성공); //성공할 것입니다

var unlock = 버킷.잠금 해제(key, getl.Cas);
Assert.IsTrue(잠금 해제.성공);

var upsert = 버킷.Upsert(키입니다, "{'name':'value2′}");
Assert.IsTrue(업서트.성공);
}

위의 예에서는 Upsert 메서드를 사용하여 키를 삽입하거나 업데이트한 다음 15초 동안 키를 잠근 다음 잠금을 해제하고 마지막으로 다른 변형을 수행합니다. 잠금 해제 메서드를 사용하지 않았다면 최종 Upsert 메서드는 "KeyExists" 상태로 실패했을 것입니다.

개선 사항 보기

보기 API는 보기 요청의 대상으로 POCO(일반 개체)를 더 쉽게 사용할 수 있도록 개선되었습니다.

사용 (var bucket = _cluster.OpenBucket("맥주 샘플"))
{
var 쿼리 = 버킷.CreateQuery("맥주", "all_beers").제한(10);
var 결과 = 버킷.쿼리<맥주>(쿼리);

foreach (var 맥주 in 결과.)
{
콘솔.WriteLine("{0}은 {1} abv.", 맥주.이름, 맥주.Abv);
}
}

그리고 출력:
——————–
21A IPA는 7.2 abv.
563 스타우트는 5 abv.
수정 페일 에일에는 5.2 abv.
비터 미국에는 3.6 abv.
더블 IPA의 문제 9.8 abv.
일반 Pippo의 포터는 5.5 알코올 도수입니다.
노스 스타 레드의 알코올 도수는 5.8입니다.
오이스터 포인트 오이스터 스타우트의 알코올 도수는 5.9도입니다.
포트레로 ESB의 알코올 도수는 5.2도입니다.
사우스 파크 블론드는 알코올 도수가 5입니다.

가장 큰 차이점은 뷰의 결과인 값 부분이 목록으로 직렬화되어 POCO에 수분을 공급하는 값으로 표시된다는 것입니다. 이 목록에서 ID 및 키 필드는 무시되지만 이 정보를 가져올 수 있는 행 속성은 여전히 사용할 수 있습니다.

무엇이 달라졌나요?

이전 베타 릴리스에서 이미 공개된 인터페이스를 손상시키지 않으려고 노력했지만, 최종 API를 개선하기 위해 몇 가지 변경 사항이 있습니다:

  • IDocumentResult 인터페이스와 구현이 변경되었습니다. Value 속성이 Content로 이름이 변경되었습니다. 이는 Java SDK와 더 일관되게 하기 위한 것입니다. 문서가 아닌 메서드의 반환 값은 여전히 Value입니다.
  • ICluster 인터페이스가 (내부에서) 공개되어 모의 및 테스트가 더 쉬워졌습니다.

이번 릴리스에 없는 기능은 무엇인가요?

누락된 주요 기능은 TAP(작업 비동기 패턴) 키워드 async 및 await을 사용한 비동기 작업 지원입니다. 이 기능은 개발이 진행 중이지만 아직 출시할 준비가 되지 않았습니다. 올해 말이나 내년 초에 출시될 예정입니다.

어떻게 받을 수 있나요?

모든 릴리스와 마찬가지로, GA는 NuGet에서 패키지로 제공되거나 S3에서 바이너리를 직접 다운로드할 수 있으며, 소스는 항상 그렇듯이 GitHub에서 사용할 수 있습니다:

작성자

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

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

댓글 하나

댓글 남기기