index.yaml로 Datastore 색인 구성

Datastore 모드의 Firestore(Datastore)를 사용하여 표준 환경에서 실행되는 애플리케이션의 데이터를 저장할 수 있습니다. Datastore는 애플리케이션에서 생성되는 모든 쿼리에 색인을 사용합니다. 항목이 변경될 때마다 색인이 업데이트되면 앱에서 쿼리를 만들 때 결과가 신속하게 반환됩니다. 이를 위해 Datastore는 애플리케이션이 생성할 쿼리를 미리 알아야 합니다. 사용자는 index.yaml 구성 파일에서 앱에 필요한 색인을 지정합니다. Datastore 에뮬레이터를 사용하여 앱을 테스트하는 동안에 파일을 자동으로 생성하거나 직접 작성할 수 있습니다. index.yaml 파일은 앱을 배포할 때 업로드되어야 합니다.

index.yaml 정보

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

다음은 index.yaml 파일의 예시입니다.

indexes:

- kind: Cat
  ancestor: no
  properties:
  - name: name
  - name: age
    direction: desc

- kind: Cat
  properties:
  - name: name
    direction: asc
  - name: whiskers
    direction: desc

- kind: Store
  ancestor: yes
  properties:
  - name: business
    direction: asc
  - name: owner
    direction: asc

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

색인 정의

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

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

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

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

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

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

쿼리에 상위 절(Query.setAncestor)이 있는 경우 yes입니다. 기본값은 no입니다.

색인 파일 만들기

색인 파일은 위에 설명된 파일 레이아웃을 따라 텍스트 편집기를 사용해 수동으로 만들 수 있습니다. 더욱 효율적인 방법은 로컬에서 앱을 테스트하는 동안에 자동으로 파일을 생성하는 것입니다. 이 두 방법을 동시에 활용해 파일을 생성할 수도 있습니다.

로컬 환경에서 테스트할 경우 앱을 실행하기 전에 gcloud 에뮬레이터 명령어를 사용하여 Datastore를 에뮬레이션하는 서비스를 시작할 수 있습니다.

gcloud beta emulators datastore start --data-dir DATA-DIR

--data-dir 플래그를 사용하여 자동 생성된 index.yaml 파일을 표시할 디렉터리를 지정합니다.

앱을 테스트하는 동안 Datastore 쿼리를 생성할 때마다 에뮬레이터가 생성된 색인 정의를 index.yaml에 추가합니다. 자동으로 생성된 모든 색인 정의는 다음 줄 아래에 파일로 표시됩니다.

# AUTOGENERATED

이 줄 위의 모든 색인 정의는 수동 제어되는 것으로 인식되어 개발용 웹 서버에서 업데이트하지 않습니다. 웹 서버는 이 줄 아래의 내용만 변경하는데 애플리케이션이 실행하는 쿼리의 색인이 완성된 index.yaml 파일에 명시되지 않은 경우에만 이러한 변경 작업을 수행합니다. 자동 색인 정의를 제어하려면 색인을 이 줄 위로 옮깁니다.

애플리케이션이 쿼리를 생성하는 동안에 에뮬레이터가 이 줄 아래의 기존 정의를 업데이트할 수 있습니다. 앱을 테스트하는 동안 앱이 실행할 모든 쿼리를 생성하면 index.yaml 내의 생성 항목이 완료됩니다. 이 파일을 수동으로 편집하여 프로덕션에서 사용되지 않는 색인을 삭제하거나 테스트하는 동안 생성되지 않은 색인을 정의해야 할 수도 있습니다.

색인 구성 파일 배포

index.yaml 파일은 소스 코드 디렉터리의 어디에나 상주할 수 있습니다.

현재 제공 중인 버전을 변경하지 않고 파일을 배포하려면 색인 파일이 포함된 디렉터리에서 환경에 따라 다음 명령어 중 하나를 사용합니다.

gcloud

gcloud app deploy index.yaml

Maven

mvn appengine:deployIndex index.yaml

Gradle

gradle appengineDeployIndex index.yaml

IDE

IntelliJ 또는 Eclipse를 사용하는 경우 배포 양식을 사용하여 배포할 개별 구성 파일을 선택합니다.

미사용 색인 삭제

색인 구성에서 색인을 변경하거나 삭제해도 원본 색인이 App Engine에서 자동으로 삭제되지 않습니다. 그렇기 때문에 이전 버전의 앱을 실행 중인 상태로 유지하면서 새 색인을 빌드하거나, 새 버전에 문제가 발견된 경우 즉시 이전 버전으로 되돌릴 수 있습니다.

이전 색인이 더 이상 필요하지 않으면 다음과 같이 App Engine에서 색인을 삭제할 수 있습니다.

gcloud datastore indexes cleanup index.yaml