색인 구성

Google Cloud Datastore는 애플리케이션에서 생성하는 모든 쿼리에 색인을 사용합니다. 이러한 색인은 항목이 변경될 때마다 업데이트되므로 애플리케이션이 쿼리를 생성할 때 결과가 신속하게 반환될 수 있습니다. Cloud Datastore는 내장 색인을 자동으로 제공하지만 애플리케이션에서 필요로 하는 복합 색인을 사전에 알고 있어야 합니다. 애플리케이션이 필요로 하는 복합 색인은 구성 파일에서 지정하면 됩니다. 애플리케이션을 테스트할 때 Cloud Datastore 에뮬레이터가 Cloud Datastore 색인 구성을 자동으로 생성할 수 있습니다. gcloud 명령줄 도구는 프로덕션 Cloud Datastore 인스턴스에 사용할 수 있는 색인을 업데이트하기 위한 명령을 제공합니다.

시스템 요구사항

gcloud 도구를 사용하려면 Google Cloud SDK를 설치한 상태여야 합니다.

index.yaml 정보

애플리케이션에서 생성하는 모든 Cloud Datastore 쿼리에는 해당되는 색인이 필요합니다. 단일 속성 쿼리처럼 단순한 쿼리의 색인은 자동으로 생성됩니다. 복잡한 쿼리의 색인은 index.yaml이라는 구성 파일에서 정의해야 합니다. 이 파일은 애플리케이션을 통해 업로드되어 Cloud Datastore에서 색인을 생성합니다.

애플리케이션에서 실행하려고 시도한 쿼리에 색인이 필요하지만 적절한 항목이 구성 파일에 없는 경우 Cloud Datastore 에뮬레이터가 자동으로 이 파일에 항목을 추가합니다. 파일을 편집하여 직접 색인을 조정하거나 새로운 색인을 생성할 수 있습니다. index.yaml<project-directory>/WEB-INF/ 폴더에 위치합니다. 기본적으로 WEB-INF/appengine-generated/index.yaml이 포함된 데이터 디렉토리는 ~/.config/gcloud/emulators/datastore/입니다. 추가 정보는 Cloud Datastore 에뮬레이터 프로젝트 디렉토리를 참조하세요.

index.yaml 파일의 예제:

indexes:

- kind: Task
  ancestor: no
  properties:
  - name: done
  - name: priority
    direction: desc

- kind: Task
  properties:
  - name: collaborators
    direction: asc
  - name: created
    direction: desc

- kind: TaskList
  ancestor: yes
  properties:
  - name: percent_complete
    direction: asc
  - name: type
    direction: asc

index.yaml의 구문은 YAML 형식입니다. 이 구문에 대한 자세한 내용은 YAML 웹사이트를 참조하세요.

색인 정의

index.yaml에는 indexes라고 하는 단일 목록 요소가 있습니다. 목록의 각 요소는 애플리케이션의 색인을 나타냅니다.

색인 요소에는 다음과 같은 요소가 있을 수 있습니다.

kind
쿼리 항목의 종류입니다. 이 요소는 필수입니다.
properties

색인 열로 포함할 속성 목록(정렬 순서대로)입니다. 균등 필터에 사용하는 속성, 비균등 필터에 사용하는 속성, 정렬 순서 및 방향의 순서로 지정합니다.

목록의 각 요소에는 다음과 같은 요소가 포함됩니다.

name
속성의 Cloud Datastore 이름입니다.
direction
정렬 방향입니다. 오름차순의 경우 asc, 내림차순의 경우 desc로 지정합니다. 쿼리의 정렬 순서에 사용되는 속성에만 필요하며 쿼리에서 사용하는 방향과 일치해야 합니다. 기본값은 asc입니다.
ancestor

쿼리에 상위 절이 있는 경우에는 yes이며, 기본값은 no입니다.

자동 및 수동 색인

Cloud Datastore 에뮬레이터가 생성된 색인 정의를 index.yaml에 추가하는 경우 다음 행 아래에 필요에 따라 삽입합니다.

# AUTOGENERATED

에뮬레이터는 이 행 아래의 모든 색인 정의가 자동 생성되었다고 인식하므로 애플리케이션이 쿼리를 생성할 때 이 행 아래에 기존 정의를 업데이트할 수 있습니다.

이 행 위의 모든 색인 정의는 수동 제어되는 것으로 인식되어 에뮬레이터에서 업데이트하지 않습니다. 에뮬레이터는 이 행 아래의 내용만 변경하며, 완성된 index.yaml 파일에 애플리케이션에서 실행하는 쿼리를 발생시키는 색인이 나오지 않은 경우에만 변경합니다. 자동 색인 정의를 제어하려면 이 행 위로 위치를 이동하세요.

색인 업데이트

datastore create-indexes 명령어는 로컬 데이터 저장소 색인 구성(index.yaml 파일)을 확인하며, 색인 구성이 프로덕션 Cloud Datastore 인스턴스에 존재하지 않는 색인을 정의하는 경우 Cloud Datastore에서 신규 색인을 생성합니다. create-indexes를 사용하는 방법의 예제는 gcloud 도구를 사용하는 개발 워크플로를 참조하세요.

신규 색인에 속하는 Cloud Datastore에 얼마나 많은 데이터가 기존에 있는지에 따라 색인 생성 프로세스가 오래 걸릴 수 있습니다. 애플리케이션에서 수행하는 쿼리에 아직 빌드를 마치치 않은 색인이 필요한 경우 쿼리는 예외를 표시합니다. 이러한 경우를 방지하려면 신규 색인이 빌드를 끝내기 전에 신규 색인을 필요로 하는 새로운 버전의 애플리케이션을 배포하지 않도록 주의해야 합니다.

GCP 콘솔색인 페이지에서 Cloud Datastore 인스턴스의 색인 상태를 확인할 수 있습니다.

미사용 색인 삭제

색인 구성에서 색인을 변경하거나 제거하면 원본 색인은 Cloud Datastore에서 자동으로 삭제되지 않습니다. 새로운 색인이 빌드되는 동안에도 계속해서 이전 버전의 애플리케이션을 실행하거나 최신 버전에서 문제가 발견되면 기존 버전으로 즉시 되돌릴 수 있는 기회가 있습니다.

이전 색인이 더 이상 필요없다는 확신이 들면 datastore cleanup-indexes 명령어를 사용하여 Cloud Datastore에서 삭제할 수 있습니다. 이 명령어는 index.yaml의 로컬 버전에 나와 있지 않은 프로덕션 Cloud Datastore 인스턴스의 모든 색인을 삭제합니다. cleanup-indexes를 사용하는 방법의 예는 gcloud 도구를 사용하는 개발 워크플로를 참조하세요.

명령줄 인수

색인 생성 및 정리용 명령줄 인수에 관한 자세한 내용은 각각 datastore create-indexesdatastore cleanup-indexes를 참조하세요. gcloud 도구용 명령줄 인수에 대한 자세한 내용은 gcloud 도구 참조를 참조하세요.

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

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

Cloud Datastore 문서