Python 2 wird von der Community nicht mehr unterstützt. Wir empfehlen die Migration von Python 2-Anwendungen zu Python 3.

Datastore-Indexe konfigurieren

App Engine verwendet für jede Abfrage einer Anwendung Indexe in Datastore. Diese Indexe werden bei jeder Änderung einer Entität aktualisiert, damit schnell Ergebnisse geliefert werden können, wenn die Anwendung eine Abfrage durchführt. Hierzu muss für Datastore im Voraus angegeben werden, welche Abfragen die Anwendung ausführt. In einer Konfigurationsdatei legen Sie fest, welche Indexe Ihre Anwendung benötigt. Der lokale Entwicklungsserver kann die Indexkonfigurationsdatei beim Testen Ihrer Anwendung automatisch generieren.

Dieser Leitfaden enthält Anweisungen zum Erstellen und Verwalten der Indexe. Hintergrundinformationen finden Sie unter Datenspeicherindexe.

Datastore-Indexe erstellen

Jede Datenspeicherabfrage, die von einer Anwendung durchgeführt wird, erfordert einen entsprechenden Index. Indexe für einfache Abfragen, zum Beispiel Abfragen zu einem einzelnen Attribut, werden automatisch erstellt. Indexe für komplexe Abfragen müssen in einer Konfigurationsdatei namens definiert werdenindex.yaml. Diese Datei wird mit Ihrer Anwendung bereitgestellt, um die Indexe in Datastore zu erstellen.

Im Folgenden finden Sie ein Beispiel für eine index.yaml-Datei:

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

Indexe mit dem Entwicklungsserver erstellen

Der Entwicklungs-Webserver (dev_appserver.py) fügt dieser Datei automatisch Einträge hinzu, wenn die Anwendung versucht, eine Abfrage auszuführen, für die ein Index benötigt wird, der noch keinen entsprechenden Eintrag in der Konfigurationsdatei hat.

Wenn Sie auf dem Entwicklungsserver jede Abfrage ausführen, die mit Ihrer Anwendung möglich ist, generiert der Entwicklungsserver eine vollständige Liste von Einträgen in der Datei index.yaml.

Wenn der Entwicklungs-Webserver eine generierte Indexdefinition zur Datei index.yaml hinzufügt, erfolgt dies unterhalb der folgenden Zeile. Wenn diese Zeile noch nicht vorhanden ist, wird sie eingefügt:

# AUTOGENERATED

Der Entwicklungs-Webserver behandelt alle Indexdefinitionen unter dieser Zeile als automatische Einträge und kann vorhandene Definitionen unter dieser Zeile aktualisieren, wenn die Anwendung Abfragen ausführt.

Indexe manuell erstellen

Sie können der Datei index.yaml Indexe manuell hinzufügen oder vorhandene Einträge bearbeiten. Manuell verwaltete Abfragen müssen Sie oberhalb der Zeile hinzufügen, die den Kommentar AUTOGENERATED enthält.

Alle Indexdefinitionen oberhalb dieser Zeile werden als manuell verwaltet angesehen und nicht vom Entwicklungs-Webserver aktualisiert. Der Entwicklungsserver nimmt Änderungen nur unterhalb der Zeile vor, und zwar nur dann, wenn in der gesamten Datei index.yaml kein Index für eine von der Anwendung ausgeführte Abfrage beschrieben wird. Verschieben Sie automatische Indexdefinitionen an eine Stelle oberhalb dieser Zeile, um sie manuell zu verwalten.

Weitere Informationen finden Sie in der Referenz zu index.yaml.

Indexe aktualisieren

Sie laden die Konfigurationsdatei index.yaml mit dem Befehl gcloud in Datastore hoch. Falls die Datei index.yaml Indexe definiert, die in Cloud Datastore nicht vorhanden sind, werden diese neuen Indexe erstellt.

Es kann eine Weile dauern, bis Datastore alle Indexe erstellt und diese Indizes App Engine zur Verfügung stehen. Wenn Ihre Anwendung bereits für den Erhalt von Traffic konfiguriert ist, können bei Abfragen Ausnahmen auftreten, für die ein Index benötigt wird, der noch erstellt wird.

Sie müssen genügend Zeit für das Erstellen aller Indexe einräumen, um Ausnahmen zu vermeiden. Weitere Informationen und Beispiele zum Erstellen von Indexen finden Sie unter Python 2-Anwendung bereitstellen.

Zum Hochladen der Indexkonfiguration in Cloud Datastore führen Sie den folgenden Befehl in dem Verzeichnis aus, in dem sich die index.yaml befindet:

gcloud

gcloud datastore indexes create index.yaml

Weitere Informationen finden Sie in der gcloud datastore-Referenz.

appcfg

appcfg.py update_indexes [YOUR_APP_DIRECTORY]

Mit der Cloud Console können Sie den Status Ihrer Indexe im Blick behalten.

Nicht verwendete Indexe löschen

Wenn Sie einen Index in der Datei index.yaml ändern oder daraus entfernen, wird der ursprüngliche Index nicht automatisch aus Datastore gelöscht. Dadurch haben Sie die Möglichkeit, weiterhin eine ältere Version der Anwendung auszuführen, während neue Indexe erstellt werden. Außerdem können Sie sofort zur älteren Version zurückkehren, wenn bei einer neueren Version ein Problem festgestellt wird.

Wenn Sie sicher sind, dass die in Cloud Datastore verbliebenen alten Indexe nicht mehr benötigt werden, können Sie mit dem folgenden Befehl Indexe löschen, die in der Datei index.yaml nicht definiert sind:

gcloud

gcloud datastore cleanup-indexes index.yaml

Weitere Informationen finden Sie in der gcloud datastore-Referenz.

appcfg

appcfg.py vacuum_indexes [YOUR_APP_DIRECTORY]