Go용 카우치베이스 하위 문서 API

하위 문서 API - 이동

하위 문서에 대해 들어보셨을 것입니다(하위 문서) API는 카우치베이스 4.5에서 사용할 수 있습니다. 새로운 API의 설계자 중 한 명인 마크 넌버그는 훌륭한 블로그 에서 멤캐시드(키-값) API를 확장하여 하위 문서 작업을 지원하게 된 동기와 원동력에 대해 설명합니다. Matthew Revell은 또한 훌륭한 샘플 에서 Java와 Python을 사용한 워크스루를 살펴보세요. 저와 같은 분이라면 새로운 기능을 선호하는 언어로 표현하고 싶을 것입니다. 저에게 있어서는 go 또는 nodejs를 의미합니다. 예제를 통해 go에서 API가 어떻게 작동하는지 살펴보겠습니다.

편집: 이 블로그 게시물은 4.5 베타 버전에서 업데이트된 내용으로 편집되었습니다.

Couchbase 4.5의 다른 기능에 대한 자세한 내용은 Don Pinto의 블로그 게시물을 참조하세요. 개발자 미리보기 및 베타.

세 개의 필드가 있는 간단한 JSON 구조부터 시작해 보겠습니다.

정의한 구조를 사용하여 문서를 만들고 이를 카우치베이스에 '업서트'합니다.

이제 우리가 만든 문서에 배열을 새 필드에 추가한 다음 배열에 대해 몇 가지 추가 작업을 수행해 보겠습니다. 서브도큐먼트 API의 마법 덕분에 전체 문서를 검색하거나 업데이트할 필요 없이 이 모든 작업을 수행할 수 있습니다. 따라서 시간과 대역폭이 절약되고 성능이 크게 향상됩니다.

방금 무슨 일이 있었나요? 빌더가 필요해요!

하위 문서 작업용 go API는 버킷 유형에 두 가지 새로운 메서드를 추가합니다: 룩업인() 그리고 MutateIn(). 이러한 버킷 수준 작업은 카우치베이스 SDK 전반에 걸쳐 일관되게 적용됩니다. go, nodejs, Java, .NET, C 또는 Python을 사용하는 경우 모두 동일한 방식으로 작동합니다. 스택을 통해 하나의 언어만 사용하는 프로덕션 환경은 거의 없기 때문에 코드 이식성에 매우 편리합니다. 버킷 유형의 새로운 두 가지 메서드가 어떤 기능을 하는지 자세히 살펴보겠습니다:

MutateIn

단일 문서로 범위가 지정된 하나 이상의 돌연변이 연산을 결합하는 데 사용되는 MutateInBuilder를 살펴보겠습니다: func (b *버킷) MutateIn(키 문자열, cas Cas, 만료 uint32) *MutateInBuilder. 이 함수에는 버킷 유형에 대한 메서드 리시버가 포함되어 있으며, MutateInBuilder에 대한 참조를 반환합니다.

뮤테이트인빌더에는 10가지 메서드가 있습니다:

  • AddUnique(): func (set *MutateInBuilder) AddUnique(경로 문자열, 값 인터페이스{}, createParents bool) *MutateInBuilder  이 메서드는 기존 배열 필드에 고유한 값을 추가합니다. 먼저 값이 존재하는지 확인한 후 업데이트합니다. 이 메서드는 뮤테이트인빌더
  • ArrayInsert(): func (set *MutateInBuilder) ArrayInsert(경로 문자열, 값 인터페이스{}) *MutateInBuilder  이 메서드는 문서의 배열 필드에 배열 값을 삽입합니다. 참고를 사용하여 배열과 인덱스를 나타내는 문자열을 전달합니다: "fourthItem[2]". 이 함수는 배열과 인덱스를 나타내는 뮤테이트인빌더
  • 카운터(): func (set *MutateInBuilder) Counter(경로 문자열, 델타 int64, createParents bool) *MutateInBuilder  이 메서드는 문서 내의 필드에 대해 원자 카운터 연산을 수행합니다. 이 메서드는 뮤테이트인빌더
  • 삽입(): func (set *MutateInBuilder) Insert(경로 문자열, 값 인터페이스{}, createParents bool) *MutateInBuilder  이 메서드는 문서의 특정 위치에 새 값을 삽입합니다. 이 메서드는 뮤테이트인빌더
  • PushBack(): func (set *MutateInBuilder) PushBack(경로 문자열, 값 인터페이스{}, createParents bool) *MutateInBuilder  이 메서드는 문서 내 배열 필드 끝에 새 값을 추가합니다. 이 메서드는 뮤테이트인빌더
  • PushFront(): func (set *MutateInBuilder) PushFront(경로 문자열, 값 인터페이스{}, createParents bool) *MutateInBuilder  이 메서드는 문서 내 배열 필드의 시작 부분에 새 값을 추가합니다. 이 메서드는 뮤테이트인빌더
  • 제거(): func (set *MutateInBuilder) Remove(경로 문자열) *MutateInBuilder  이 메서드는 문서의 특정 필드에서 값을 제거합니다. 이 메서드는 뮤테이트인빌더
  • Replace(): func (set *MutateInBuilder) Replace(경로 문자열, 값 인터페이스{}) *MutateInBuilder  이 메서드는 문서 필드 내의 값을 바꿉니다. 이 메서드는 뮤테이트인빌더
  • Upsert(): func (set *MutateInBuilder) Upsert(경로 문자열, 값 인터페이스{}, createParents bool) *MutateInBuilder  이 메서드는 문서 내에서 필드를 추가하거나 바꿉니다. 이 메서드는 뮤테이트인빌더
  • Execute(): func (set *MutateInBuilder) Execute() (*DocumentFragment, error)  이 메서드는 연쇄된 작업을 서버에 제출하고 문서 조각 결과가 포함되어 있습니다.

의 논리 흐름 MutateIn() 는 다음과 같이 보입니다.

룩업인

단일 문서로 범위가 지정된 하나 이상의 검색 작업을 선언할 수 있는 LookupInBuilder를 살펴보겠습니다: func (b *버킷) 룩업인(키 문자열) *룩업인빌더. 이 함수에는 버킷 유형에 대한 메서드 리시버가 포함되어 있으며, LookupInBuilder에 대한 참조를 반환합니다.

룩업인빌더에는 세 가지 메서드가 있습니다:

  • Get(): func (set *LookupInBuilder) Get(경로 문자열) *LookupInBuilder  이 메서드는 경로 내용을 검색하도록 요청합니다. 경로에 대한 참조를 반환합니다. 룩업인빌더
  • Exists(): func (set *LookupInBuilder) Exists(경로 문자열) *LookupInBuilder   제공된 경로가 존재하는지 확인합니다. 경로에 대한 참조를 반환합니다. 룩업인빌더
  • Execute(): func (set *LookupInBuilder) Execute() (*DocumentFragment, error)  이 메서드는 체인된 명령을 서버로 전송하고 문서 조각 유형(결과 포함)과 오류 를 클릭합니다.

의 논리 흐름 룩업인()는 다음과 같이 보입니다.

다음 단계

직접 해보시는 건 어떨까요? 위의 예제와 다른 여러 가지 Go 예제는 다음 개발자 가이드 리포지토리에서 확인할 수 있습니다. github 카우치베이스 4.5(게시 당시 베타 버전)를 시작하고 사용해 볼 수 있는 가장 좋은 방법은 docker를 사용하는 것입니다. 다음 명령으로 docker를 설치한 경우 couchbase 4.5 docker 이미지를 로드할 수 있습니다:

docker run -d --name=CB45DP1 -p 8091-8093:8091-8094 -p 11207-11210:11207-11210 -p 18091-18092:18091-18092 couchbase/server:enterprise-4.5.0-Beta

저희는 피드백을 환영합니다. 사용해 보시고 의견을 알려주세요.

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

작성자

게시자 토드 그린스타인

토드 그린스타인은 카우치베이스의 솔루션 아키텍트입니다. Todd는 API 설계, 아키텍처, 데이터 모델링, nodejs 및 골랑 개발을 전문으로 합니다.

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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