[개발/번역] Couchbase 서버 / Go SDK 사용 시작하기

원문: https://developer.couchbase.com/documentation/server/current/sdk/go/start-using-sdk.html

Couchbase Go SDK는 Go를 사용해 Couchbase 클러스터에 연결할 수 있습니다. 네이티브 Go 라이브러리이며, 고성능 gocbcore를 사용해 Couchbase의 바이너리 프로토콜을 통해 클러스터와의 통신을 처리합니다.

설치

go get으로 SDK를 설치할 수 있습니다.

$ go get gopkg.in/couchbase/gocb.v1

새 기능과 버그 수정, 알려진 문제점들과 이전 릴리즈 버전을 설치하는 방법에 대해서는 릴리즈 노트를 참고하세요.

안녕 Couchbase

SDK를 설치하였다면 이 SDK의 기능을 간략하게 보여주는 아래 코드를 실행할 수 있을 겁니다.

  • 오류 검사는 간략함을 위해 생략했습니다.
  • 예제를 실행하는 호스트가 Couchbase 노드가 아닐 경우에는 localhost를 클러스트 노드의 IP 혹은 호스트 네임으로 바꾸면 됩니다.
package main

import (
	"fmt"
	"gopkg.in/couchbase/gocb.v1"
)

type User struct {
	Id string `json:"uid"`
	Email string `json:"email"`
	Interests []string `json:"interests"`
}

func main() {
        cluster, _ := gocb.Connect("couchbase://localhost")
        cluster.Authenticate(gocb.PasswordAuthenticator{
            Username: "USERNAME",
            Password: "PASSWORD",
        })
        bucket, _ := cluster.OpenBucket("bucketname", "")
        
        bucket.Manager("", "").CreatePrimaryIndex("", true, false)
        
        bucket.Upsert("u:kingarthur",
                User{
                        Id: "kingarthur",
                        Email: "kingarthur@couchbase.com",
                        Interests: []string{"Holy Grail", "African Swallows"},
                }, 0)
        
        // 값을 다시 가져옴
        var inUser User
        bucket.Get("u:kingarthur", &inUser)
        fmt.Printf("User: %v\n", inUser)
        
        // 쿼리 사용
        query := gocb.NewN1qlQuery("SELECT * FROM bucketname WHERE $1 IN interests")
        rows, _ := bucket.ExecuteN1qlQuery(query, []interface{}{"African Swallows"})
        var row interface{}
        for rows.Next(&row) {
                fmt.Printf("Row: %v", row)
        }
}

위 예제는 Go SDK를 사용한 upsert, get, 그리고 N1QL 쿼리 기능을 보여줍니다. 가장 먼저 클러스터 노드의 주소를 사용해서 Cluster 개체가 만들어지면 Cluster.OpenBucket을 통해 데이터 버킷과 연결할 수 있습니다.

데이터 작업은 Bucket 객체를 사용해 수행하게 됩니다. 이 문서의 예시는 먼저 Bucket.Upsert를 사용해 클러스터에 저장합니다. 그 다음 Bucket.Get으로 ID (primary key)를 사용해 문서를 검색하고 마지막으로 Bucket.ExecuteN1qlQueryN1QL 을 쿼리합니다.

위 예시는 자신만의 문서 유형을 쓰는 방법도 보여줍니다. JSON 주석은 작업에 필요하진 않지만 기존 객체가 어플리케이션에 어떻게 적용될 수 있는지도 보여줍니다.