데이터 저장소 색인 구성

App Engine은 Cloud Datastore에서 애플리케이션이 만드는 모든 쿼리에 색인을 사용합니다. 항목이 변경될 때마다 색인이 업데이트되면 앱에서 쿼리를 만들 때 결과가 신속하게 반환됩니다. 그러려면 Cloud Datastore가 애플리케이션에서 어떤 쿼리를 생성할지 사전에 알고 있어야 합니다. 앱에 필요한 색인은 구성 파일에서 지정됩니다. 앱을 테스트할 때 로컬 개발 서버가 색인 구성 파일을 자동으로 생성할 수 있습니다.

이 가이드에서는 색인을 만들고 관리하는 방법을 안내합니다. 자세한 배경 정보는 데이터 저장소 색인을 참조하세요.

데이터 저장소 색인 만들기

애플리케이션에서 만드는 모든 Cloud Datastore 쿼리에 상응하는 색인이 필요합니다. 단일 속성 쿼리처럼 단순한 쿼리의 색인은 자동으로 생성됩니다. 복잡한 쿼리의 색인은 index.yaml이라는 구성 파일에서 정의해야 합니다. 이 파일이 애플리케이션과 함께 배포되어 Cloud 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

개발 서버를 사용하여 색인 만들기

애플리케이션이 실행하려고 하는 쿼리에 색인이 필요하지만 적절한 항목이 구성 파일에 없는 경우 개발용 웹 서버(dev_appserver.py)가 자동으로 파일에 항목을 추가합니다.

개발 서버에서 앱이 만들 모든 쿼리를 실행하면 개발 서버가 index.yaml 파일에 항목의 전체 목록을 생성합니다.

개발용 웹 서버가 생성된 색인 정의를 index.yaml에 추가할 때 다음 줄 아래에 필요에 따라 삽입됩니다.

# AUTOGENERATED

개발용 웹 서버는 이 줄 아래의 모든 색인 정의가 자동으로 생성되었다고 인식하므로 애플리케이션이 쿼리를 만들 때 이 줄 아래의 기존 정의가 업데이트될 수 있습니다.

수동으로 색인 만들기

수동으로 index.yaml 파일에 색인을 추가하거나 기존 항목을 수정할 수 있습니다. 수동으로 제어하는 쿼리의 경우 AUTOGENERATED라는 주석이 달린 줄 위에 추가해야 합니다.

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

구문 정보는 index.yaml 참조 문서를 확인하세요.

색인 업데이트

gcloud 명령어를 사용해 index.yaml 구성 파일을 Cloud Datastore에 업로드할 수 있습니다. index.yaml 파일이 Cloud Datastore에 존재하지 않는 색인을 정의하는 경우 신규 색인이 생성됩니다.

Cloud Datastore가 모든 색인을 만드는 데 시간이 걸릴 수 있으므로 해당 색인을 App Engine에서 즉시 사용할 수는 없습니다. 앱이 이미 트래픽을 수신하도록 구성된 경우 아직 빌드 중인 색인을 필요로 하는 쿼리에서 예외가 발생할 수 있습니다.

예외가 발생하는 것을 방지하려면 모든 색인이 빌드될 때까지 기다려야 합니다. 색인 만들기에 대한 자세한 내용 및 예는 Python 앱 배포를 참조하세요.

색인 구성을 Cloud Datastore에 업로드하려면 index.yaml이 위치한 디렉토리에서 다음 명령어를 실행합니다.

gcloud

gcloud datastore create-indexes index.yaml

자세한 내용은 gcloud datastore 참조 문서를 확인하세요.

appcfg

appcfg.py update_indexes [YOUR_APP_DIRECTORY]

GCP 콘솔을 사용하여 색인의 상태를 확인할 수 있습니다.

미사용 색인 삭제

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

Cloud Datastore에 남아 있는 이전 색인이 더 이상 필요하지 않을 경우 다음 명령어를 실행하여 index.yaml 파일에 정의되지 않은 색인을 삭제할 수 있습니다.

gcloud

gcloud datastore cleanup-indexes index.yaml

자세한 내용은 gcloud datastore 참조 문서를 확인하세요.

appcfg

appcfg.py vacuum_indexes [YOUR_APP_DIRECTORY]
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

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

App Engine standard environment for Python