커뮤니티에서 더 이상 Python 2를 더 이상 지원하지 않습니다. Python 2 앱을 Python 3로 마이그레이션하는 것이 좋습니다.

Datastore 색인 구성

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

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

데이터 저장소 색인 만들기

애플리케이션이 실행하는 모든 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

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

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

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

개발용 웹 서버에서 생성된 색인 정의를 index.yaml에 추가할 때는 다음 줄 아래에 추가하고 필요한 경우 줄을 삽입합니다.

# AUTOGENERATED

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

수동으로 색인 만들기

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

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

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

색인 업데이트

gcloud 명령어를 사용하여 index.yaml 구성 파일을 Datastore에 업로드합니다. index.yaml 파일이 Datastore에 없는 색인을 정의하면 이러한 새 색인이 빌드됩니다.

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

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

색인 구성을 Datastore에 업로드하려면 index.yaml이 있는 디렉터리에서 다음 명령어를 실행합니다.

gcloud

gcloud datastore indexes create index.yaml

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

appcfg

appcfg.py update_indexes [YOUR_APP_DIRECTORY]

Cloud Console을 사용하여 색인 상태를 확인할 수 있습니다.

미사용 색인 삭제

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

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

gcloud

gcloud datastore cleanup-indexes index.yaml

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

appcfg

appcfg.py vacuum_indexes [YOUR_APP_DIRECTORY]