使用 index.yaml 設定 Datastore 索引

您可以使用 Cloud Datastore 為標準環境中運作的應用程式儲存資料。Cloud Datastore 會對應用程式執行的各項查詢套用索引。這些索引會隨著實體的變更一併更新,因此應用程式執行查詢時能夠快速獲得結果。不過 Cloud Datastore 得事先知道應用程式將會執行哪些查詢,才能達到此目的。您可利用 index.yaml 設定檔指定應用程式需要哪些索引。請使用 Cloud Datastore 模擬器在您測試應用程式時自動產生檔案,或是自行撰寫檔案。您部署應用程式時必須上傳 index.yaml 檔案。

index.yaml 簡介

應用程式執行的每個 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

index.yaml 的語法是 YAML 格式。如要進一步瞭解這種語法,請參閱 YAML 網站

索引定義

index.yaml 具有名叫 indexes 的單一清單元素。清單中的每個元素都代表應用程式的一個索引。

索引元素可以使用下列元素:

kind
查詢的實體種類。此為必要元素。
properties

依排序順序,以索引欄形式加入的屬性清單:先加入用於等式篩選器的屬性,再加入用於不等式篩選器的屬性,然後是排序順序及其排序方向。

這個清單中的每項元素都具備下列元素:

name
屬性的資料儲存庫名稱。
direction
此為排序方向,asc 代表遞增,desc 則代表遞減。只有用於查詢的排序順序屬性才需要此排序方向,且必須符合查詢所使用的方向。預設值為 asc
ancestor

如果查詢含有祖系子句 (Query.setAncestor),則為 yes。預設值為 no

建立索引檔案

您可以使用文字編輯器並遵循上述檔案配置,以手動方式建立索引檔案。在本機測試應用程式時自動產生檔案則更有效率。您可以結合這兩種方法。

測試本機環境時,您可以使用 gcloud 模擬器指令來啟動能模擬 Cloud Datastore 的服務,然後再執行應用程式:

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

使用 --data-dir 標記來指定自動產生的 index.yaml 檔案所在的目錄。

您測試應用程式時,每產生一個 Cloud Datastore 查詢,模擬器就會將產生的索引定義新增至 index.yaml。所有自動產生的索引都會顯示在下方行列底下的檔案中:

# AUTOGENERATED

開發網路伺服器會將這行上方的所有索引定義視為可手動控制的範圍,因此不會更新這些定義,而只會在該行下方進行變更,並且只在完整的 index.yaml 檔案未描述適用於應用程式執行查詢的索引時,才進行變更。如要控制自動索引定義,請將索引移至此行上方。

應用程式執行查詢時,模擬器可能會更新這個行列底下的現有定義。您在測試應用程式時,如果應用程式產生其能執行的每個查詢,則 index.yaml 中會具備完整的產生項目。您可能需要手動編輯檔案,刪除不是在實際工作環境中使用的索引,或定義非在測試期間建立的索引。

部署索引檔案

請先使用 gcloud 指令部署 index.yaml 檔案,接著再部署應用程式:

gcloud app deploy index.yaml
本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Java 8 適用的 App Engine 標準環境