index.yaml でデータストア インデックスを設定する

Cloud Datastore を使用して、フレキシブル環境で実行されるアプリケーションのデータを保存できます。データストアでは、アプリケーションからのすべてのクエリにインデックスを使用します。インデックスはエンティティが変更されるたびに更新されるので、アプリからのクエリに対してすばやく結果を返すことができます。これを実現するには、アプリからどのようなクエリが発行されるかを、データストア側であらかじめ把握しておく必要があります。アプリに必要なインデックスは、index.yaml 構成ファイルで指定します。このファイルは、データストア エミュレータを使用してアプリをテストする際に自動生成することも、自分で記述することもできます。index.yaml ファイルは、アプリのデプロイ時にアップロードされている必要があります。

index.yaml について

アプリケーションが実行するすべてのデータストア クエリには、対応するインデックスが必要です。単純なクエリ用のインデックス(1 つのプロパティに関するクエリなど)は自動的に作成されます。複雑なクエリ用のインデックスは、index.yaml という設定ファイルで定義する必要があります。このファイルはアプリケーションとともにアップロードされ、データストアにインデックスを作成します。

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 というリスト要素を 1 つ指定します。このリストに含まれる各要素で、アプリケーションのインデックスを表します。

インデックス要素には、次のような要素があります。

kind
クエリに対応するエンティティの種類です。この要素は必須です。
properties

インデックスの列として並べ替える順に指定したプロパティのリストです。まず、等式フィルタで使用するプロパティ、次に、不等式フィルタで使用するプロパティ、そして並べ替え順序とその方向を指定します。

このリスト内の各要素には、次の要素を指定します:

name
プロパティのデータストア名です。
direction
並べ替えの方向です。昇順の場合は asc、降順の場合は desc を指定します。この値は、クエリの並べ替え順序で使用するプロパティについてのみ必要です。また、クエリで使用する方向と同じである必要があります。デフォルトは asc です。
ancestor
クエリに祖先句(hasAncestor)がある場合は yes です。デフォルトは no です。

インデックス ファイルを作成する

テキスト エディタを使用して上述のファイル レイアウトに従えば、インデックス ファイルを手動で作成することができます。より効率の良い方法は、アプリをローカルでテストする際に自動でファイルを生成することです。この 2 つの方法は組み合わせることができます。

ローカル環境でテストする際に、gcloud エミュレータ コマンドを使用することにより、アプリを実行する前に Cloud Datastore をエミュレートするサービスを開始できます。

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

--data-dir フラグを使用して、index.yaml ファイルが自動生成されるディレクトリを指定します。

アプリのテスト中、エミュレータは、Datastore クエリが生成されるたびに、生成されたインデックス定義を index.yaml に追加します。すべての自動生成されたインデックスは、ファイル内の次の行の下に表示されます。

# AUTOGENERATED

この行の上のインデックス定義は、すべて手動で管理されているものとみなされ、開発用ウェブサーバーによって更新されることはありません。アプリケーションが実行するクエリに対応するインデックスが、完全な index.yaml ファイル内に記載されていない場合、ウェブサーバーは行の下のみを変更します。自動インデックス定義を管理するには、定義をこの行の上に移動します。

アプリケーションがクエリを実行すると、エミュレータがこの行の下の既存の定義を更新する場合があります。アプリが行うすべてのクエリをテストで生成すると、index.yaml 内に完全なエントリが作成されます。本稼働で使用されないインデックスを削除したり、テストでは作成されなかったインデックスを定義したりするために、ファイルの手動編集が必要になることがあります。

インデックス ファイルをデプロイする

アプリケーションをデプロイする前に、gcloud コマンドを使用して index.yaml ファイルをデプロイする必要があります。

gcloud app deploy index.yaml
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

PHP の App Engine フレキシブル環境に関するドキュメント