항목 만들기, 검색, 업데이트, 삭제

Cloud Datastore의 데이터 객체를 항목이라고 하며, 각 항목은 쿼리를 위해 특정한 종류로 분류됩니다. 예를 들어 인사관리 애플리케이션을 개발한다면 각 직원을 종류가 Employee인 항목으로 표현할 수 있습니다. 항목 데이터 값은 속성의 형태입니다. 항목에 대한 자세한 내용은 항목, 속성, 키 개념 문서를 참조하세요.

항목 생성 및 속성 설정

Go에서는 Go 구조체의 인스턴스를 구성하고 해당 필드를 채우고 datastore.Put을 호출하여 Cloud Datastore에 저장하는 방식으로 새 항목을 만듭니다. 내보낸 필드(대문자로 시작)만 Cloud Datastore에 저장됩니다. 비어 있지 않은 stringID 인수를 datastore.NewKey로 전달하여 항목의 키 이름을 지정할 수 있습니다.

다음 예에서는 Employee 종류의 항목을 만들고, 해당 속성 값을 채우고, 이를 Cloud Datastore에 저장합니다.

import (
	"time"

	"golang.org/x/net/context"

	"google.golang.org/appengine/datastore"
)

type Employee struct {
	FirstName          string
	LastName           string
	HireDate           time.Time
	AttendedHRTraining bool
}

func f(ctx context.Context) {
	// ...
	employee := &Employee{
		FirstName: "Antonio",
		LastName:  "Salieri",
		HireDate:  time.Now(),
	}
	employee.AttendedHRTraining = true

	key := datastore.NewIncompleteKey(ctx, "Employee", nil)
	if _, err := datastore.Put(ctx, key, employee); err != nil {
		// Handle err
	}
	// ...
}

Employee 유형은 데이터 모델에 FirstName, LastName, HireDate, AttendedHRTraining이라는 4개 필드를 선언합니다.

비어 있는 키 이름을 제공하거나 datastore.NewIncompleteKey를 사용하면 Cloud Datastore는 항목 키의 숫자 ID를 자동으로 생성합니다.

employee := &Employee{
	FirstName: "Antonio",
	LastName:  "Salieri",
	HireDate:  time.Now(),
}
employee.AttendedHRTraining = true
key := datastore.NewIncompleteKey(ctx, "Employee", nil)
_, err = datastore.Put(ctx, key, employee)

항목 검색

지정된 키로 식별되는 항목을 검색하려면 *datastore.Keydatastore.Get 함수에 인수로 전달합니다. *datastore.Keydatastore.NewKey 함수를 통해 생성될 수 있습니다.

employeeKey := datastore.NewKey(ctx, "Employee", "asalieri", 0, nil)
addressKey := datastore.NewKey(ctx, "Address", "", 1, employeeKey)
var addr Address
err = datastore.Get(ctx, addressKey, &addr)

datastore.Get이 해당 Go 구조체의 인스턴스를 채웁니다.

항목 업데이트

기존 항목을 업데이트하려면 구조체의 속성을 수정한 후 datastore.Put을 호출합니다. 데이터가 기존 항목을 덮어씁니다. datastore.Put을 호출할 때마다 전체 객체가 Cloud Datastore로 전송됩니다.

항목 삭제

항목의 키가 제공되면 datastore.Delete 함수로 항목을 삭제할 수 있습니다.

key := datastore.NewKey(ctx, "Employee", "asalieri", 0, nil)
err = datastore.Delete(ctx, key)

대량 항목 삭제

다수의 항목을 삭제해야 하는 경우에는 Cloud Dataflow를 사용하여 항목을 일괄적으로 삭제하는 것이 좋습니다.

일괄 작업 사용

Cloud Datastore를 한 번 호출하여 여러 항목에 작업을 수행하려면 다음과 같은 일괄 작업을 사용하면 됩니다.

일괄 호출의 예는 다음과 같습니다.

// A batch put.
_, err = datastore.PutMulti(ctx, []*datastore.Key{k1, k2, k3}, []interface{}{e1, e2, e3})

// A batch get.
var entities = make([]*T, 3)
err = datastore.GetMulti(ctx, []*datastore.Key{k1, k2, k3}, entities)

// A batch delete.
err = datastore.DeleteMulti(ctx, []*datastore.Key{k1, k2, k3})

일괄 작업을 수행해도 비용에 변화는 없습니다. 각 키가 있는지 여부와 관계없이 일괄 처리된 작업에서 모든 키에 요금이 부과됩니다. 작업과 관련된 항목 크기는 비용에 영향을 주지 않습니다.

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Go용 App Engine 표준 환경