GoLang

카우치베이스 Go SDK 2.0 알파 소개

Couchbase Go SDK 2.0 알파를 발표하게 되어 기쁘게 생각합니다. 이 새로운 SDK는 팀이 함께 만들어온 모든 Couchbase SDK에 걸쳐 일련의 변화를 가져옵니다. 새로운 SDK는 더 간단하고 미래 지향적이며 최신 에코시스템 개발과 통합되는 완전히 새로운 API를 제공합니다.

Go SDK 버전 2.0은 기존의 버킷 인터페이스에서 확장된 새로운 기능인 범위 및 컬렉션을 지원하는 Couchbase Server에 맞춰 조정되었습니다. 또한 인터페이스를 통합하고 개선하여 SDK 간 호환성을 향상시킵니다.

새로운 카우치베이스 서버 기능: 범위 및 컬렉션

이전 카우치베이스 서버 버전에서 버킷은 항목을 그룹화하는 논리적 사용자 이름의 엔티티로 사용되었습니다. 이를 통해 액세스, 인덱싱, 복제 및 액세스 제어가 가능했습니다. 이것은 실제로 Couchbase Server를 사용하여 멀티테넌시를 달성할 수 있는 유일한 수단이었으며 몇 가지 제한 사항이 있었습니다: 버킷 자체는 상당히 리소스 집약적이며 클러스터는 한정된 수의 버킷만 효율적으로 관리할 수 있습니다. 최신 마이크로 서비스 아키텍처 또는 멀티테넌시가 필요한 모든 아키텍처의 경우, 많은 테넌트를 지원할 때 몇 가지 문제가 발생했습니다. 이 문제는 향후 버전에서 범위와 컬렉션이라는 개념으로 해결될 예정입니다.

범위는 멀티 테넌시의 단위를 나타내며 컬렉션으로 구성됩니다. 컬렉션은 사실상 문서 그룹에 대한 고유한 이름입니다. 범위 내에서 컬렉션 이름은 고유해야 하지만 여러 범위에서 동일한 컬렉션 이름을 사용할 수 있습니다. 모든 버킷에는 식별자가 0(0)인 "_default"라는 이름의 기본 범위가 있으며, 기본 범위에는 함께 제공되는 식별자가 0(0)인 "_default"라는 이름의 기본 컬렉션이 포함되어 있습니다.

이는 SDK 1.0의 버킷 컨텍스트에 있던 키/값 작업을 SDK 2.0의 컬렉션 컨텍스트로 이동하는 효과를 가져옵니다. 검색, 분석 및 N1QL과 같은 교차 버킷 작업은 이제 클러스터 수준에서 수행됩니다.

카우치베이스 서버 6.5는 "개발자 프리뷰"의 일부로 범위 및 컬렉션을 지원하며, 개발자 프리뷰는 다음과 같습니다. not 프로덕션에서 사용할 수 있도록 지원됩니다. 한편, SDK 2.0은 기본 범위 및 컬렉션을 사용하여 Couchbase 5.0 이상도 지원합니다.

SDK 2.0 API의 주요 기능

이번 알파 버전에서는 키/값 작업, N1QL, 검색 및 분석 쿼리와 보기를 통해 Couchbase Server를 사용할 수 있는 API를 제공하는 데 중점을 두었습니다. 여기에는 익숙한 클러스터 및 버킷 논리 구조와 새로운 범위 및 컬렉션 구조가 포함되어 있습니다. 하이라이트는 두 가지 섹션으로 그룹화할 수 있습니다. 첫 번째는 더 간단하고 미래 지향적인 액세스 패턴을 제공하기 위해 모든 SDK에 걸쳐 개선된 새로운 API입니다. 두 번째는 Go SDK 관련 개선 사항입니다.

주요 값 API 개선 사항

API가 대폭 간소화되고 재작업되어 개별 메서드 호출을 더 쉽게 찾을 수 있고 통일성이 높아졌습니다. Go의 경우 더 이상 유사하지만 서로 다른 함수에 대해 여러 번 호출할 필요가 없어졌습니다. 또한 일부 함수에 필요한 매개변수의 수도 줄였습니다.

예를 들어 SDK 1.0에는 다음과 같은 메서드 서명이 있었습니다:

SDK 2.0에서는 다음과 같이 변경되었습니다:

각 메서드는 *결과 라는 선택적 매개 변수가 있습니다. *옵션. 연산이 작동하는 데 필요한 모든 것은 매개변수이며, 시간 초과, 내구성 요구 사항, CAS 값 등 선택적 속성은 모두 옵션 블록으로 이동했습니다. 그 결과 "과부하" 함수가 줄어들고 전반적인 API가 더 단순해졌습니다. 변이 유형 연산 결과에는 CAS 값과 변이 토큰 등이 포함됩니다. Fetch 유형 작업의 경우 결과에는 값을 가져오는 방법과 문서 만료(요청 시)가 포함됩니다.

옵션 블록은 다음과 같은 구조입니다:

이는 이전 API보다 작업 수준에서 훨씬 더 많은 유연성을 제공합니다. 즉, 이전에는 다음과 같이 삽입하려면 지속   설정한 다음 다음을 수행해야 합니다. InsertDura("key", "value", 0, 0, 1) 이제는 삽입("key", "value", &삽입 옵션{PersistTo: 1}) .

이제 다음을 지원합니다. 컨텍스트.컨텍스트 를 취소할 수 있습니다. 즉, HTTP 핸들러에서 컨텍스트를 가져와서 gocb 연산에 바로 제공하는 등의 기능을 사용할 수 있으므로 HTTP 요청 핸들러 전체에서 동일한 취소 구조를 사용할 수 있습니다. 사용하지 않으려면 컨텍스트 시간 초과가 발생하면 걱정하지 마세요. 시간 초과  옵션을 대신 사용할 수 있습니다.

쿼리 API 개선 사항

쿼리 API는 키 값 API와 마찬가지로 이제 다음을 사용합니다.  *옵션 블록을 선택적 쿼리 속성으로 사용할 수 있습니다. 이전에는 API가 다음과 같이 보였습니다:

이제 다음과 같이 보입니다:

이러한 옵션 블록은 너무 커서 여기에 포함하기 어렵지만 위의 키 값 예제와 비슷하게 보이고 작동합니다. 또한 결과에 액세스하는 방법을 업데이트하여 쿼리 서비스 전반의 API 일관성을 개선했습니다. 이러한 결과의 사용자 정의 트랜스코딩은 아직 작업 중입니다. 이제 모든 서비스에서 스트리밍을 사용하여 내부적으로 결과를 검색하므로 메모리 부족에 대한 걱정 없이 대규모 데이터 세트를 쿼리할 수 있습니다.

오류 처리 개선 사항

이전에는 센티널 오류(예 만약 err == gocb.ErrKeyNotFound )을 사용하여 작업에서 오류가 반환되고 처리해야 하는 특정 오류 유형이 있는 경우 일치시켜야 했습니다. 이제 오류를 유형으로 노출하고 오류를 분류하는 헬퍼 함수도 제공합니다. 이제 다음을 수행할 수 있습니다. 만약 gocb.IsKeyNotFound(err)를 입력하거나 전체 오류 kvErr := err.(gocb.키값 오류)  를 클릭하고 필요한 경우 오류에 대한 기본 컨텍스트에도 액세스할 수 있습니다.

시작하기

이러한 개선 사항을 모두 사용하려면 다음을 수행하면 됩니다: go get github.com/카우치베이스/gocb@v2.0.0-알파.3

SDK가 있으면 클러스터에 연결하고 버킷을 열고 기본 컬렉션을 사용할 수 있습니다. 현재로서는 Couchbase Server 6.5에서 개발자 미리 보기 모드를 사용하지 않는 한 기본 컬렉션만 사용할 수 있습니다.

버킷 열기는 더 이상 오류를 반환하지 않지만 여전히 연결이 이루어지는 곳이라는 점에 유의하세요. 대신 첫 번째 작업을 수행할 때까지 오류 반환을 연기합니다. 앞으로는 작업을 수행하기 전에 버킷 연결의 상태를 확인할 수 있게 됩니다.

자세한 내용을 알아보시려면 새로운 문서 또한, 이 두 가지가 합쳐지기 시작했습니다.

API는 매우 새롭고 알파 버전이므로 아직 변경될 수 있지만 큰 폭으로 변경되지는 않을 것입니다. 최고의 SDK를 만들기 위해 모든 피드백과 버그 리포트를 보내주시면 정말 감사하겠습니다. 이번 기회를 통해 Couchbase Go SDK의 미래를 만들어갈 수 있습니다.

버전은 어떻게 하나요?

모든 SDK는 시맨틱 버전 관리 2.0.0 사양(SemVer)을 구독하며, 주어진 버전 번호에 대해 다음과 같이 합니다. 전공.MINOR.패치를 누르면 버전이 증가합니다:

호환되지 않는 API를 변경하는 경우 주요 버전으로 변경합니다,

이전 버전과 호환되는 방식으로 기능을 추가하는 경우 마이너 버전, 그리고

이전 버전과 호환되는 버그 수정이 필요한 경우 패치 버전으로 변경합니다.

또한 사전 릴리스 및 빌드 메타데이터의 경우 SemVer 사양에서 허용하는 대로 확장 기능을 추가합니다. 예를 들어, SDK 2.0의 초기 릴리즈는 알파 버전에 대한 증분과 알파 지정을 사용합니다. 예를 들어, 초기 SDK 2.0 초기 프리뷰에서는 다음과 같은 SemVer 호환 버전을 사용했습니다: 2.0.0-알파.1 . 알파 릴리스 이후 다음 사전 릴리스는 다음과 같습니다. 2.0.0-베타.1 . 마지막으로, 완전히 지원되는 GA 릴리스는 2.0.0 . 일반적으로 알파 버전 사이에는 획기적인 변경이 있을 것으로 예상됩니다. 베타 버전이 릴리스된 후에는 획기적인 변경이 일어나지 않아야 하지만 경우에 따라 필요할 수도 있습니다.

 

표지 이미지는 마리아 레타의 작품으로 무료 고퍼스 팩.

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 찰스 딕슨, 소프트웨어 엔지니어, 카우치베이스

찰스 딕슨은 카우치베이스의 소프트웨어 엔지니어입니다. 그는 Couchbase Go SDK를 개발하고 있습니다.

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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