索引設定

Cloud Firestore (Datastore 模式) 會對您的應用程式發出的每一項查詢使用索引。這些索引會隨著實體的變更一併更新,因此應用程式執行查詢時,能夠快速得到結果。Datastore 模式會自動提供內建索引,但還需要事先得知應用程式需要的複合式索引。您可在設定檔中指定應用程式需要哪些複合式索引。Cloud Datastore 模擬器可在您測試應用程式時,自動產生 Datastore 模式索引設定。gcloud 指令列工具提供了各種指令,可讓您更新實際工作環境的 Datastore 模式資料庫使用的索引。

系統需求

使用 gcloud 工具前必須先安裝 Google Cloud SDK

關於 index.yaml

應用程式發出的每一個 Datastore 模式查詢都需要有對應的索引。系統會自動建立簡單查詢的索引 (例如針對單一屬性的查詢),但是您必須在名為 index.yaml 的設定檔中定義複雜查詢的索引。這個檔案會隨應用程式上傳,然後在 Datastore 模式資料庫中建立索引。

當應用程式嘗試執行需要索引的查詢時,如果設定檔中沒有合適的項目,Cloud Datastore 模擬器會自動在此檔案中新增項目。您可以調整索引,或是以手動方式編輯檔案來建立新的索引。index.yaml 檔存放在 <project-directory>/WEB-INF/ 目錄下。根據預設,資料的目錄中含有 WEB-INF/appengine-generated/index.yaml 的話,即為 ~/.config/gcloud/emulators/datastore/。詳情請參閱 Cloud Datastore 模擬器專案目錄相關說明。

以下是 index.yaml 檔案的範例:

indexes:

- kind: Task
  ancestor: no
  properties:
  - name: done
  - name: priority
    direction: desc

- kind: Task
  properties:
  - name: collaborators
    direction: asc
  - name: created
    direction: desc

- kind: TaskList
  ancestor: yes
  properties:
  - name: percent_complete
    direction: asc
  - name: type
    direction: asc

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

索引定義

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

索引元素可以有下列元素:

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

按照排列順序,以索引欄形式加入的屬性清單:首先為用於等號篩選器的屬性,其次為用於非等號篩選器的屬性,接著是排列順序及其排序方向。

此清單中的每個元素都具有下列元素:

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

如果查詢包含祖系子句,則其值為 yes。預設值為 no

自動和手動索引

當 Cloud Datastore 模擬器將產生的索引定義新增到 index.yaml 時,將視需要將定義插入到下列這行文字底下:

# AUTOGENERATED

模擬器將這一行下方的所有索引定義視為自動項目,並且會在應用程式執行查詢時,更新這一行下方的現行定義。

系統會將所有位在這個行列上方的索引定義視為手動控制,因此模擬器不會更新這些定義。模擬器僅會變更這個字行下方的定義,且僅在完整的 index.yaml 檔案並未描述負責應用程式所執行查詢的索引時,才會進行這類變更。如要控制自動索引定義,請將其移至這一行上方。

更新索引

datastore indexes create 指令會查看您本機的 Datastore 索引設定 (index.yaml 檔案),而如果索引設定所定義的索引尚不存在您實際工作環境的 Datastore 模式資料庫中,您的資料庫就會建立新索引。要取得如何使用 indexes create 的範例,請參閱使用 gcloud 工具的開發工作流程相關頁面。

根據您的資料庫中已有多少資料屬於新索引而定,建立索引的過程可能需要一段時間。如果應用程式執行的查詢需要的索引尚未建構完成,查詢動作將會引發例外狀況。如要防止這個狀況發生,在新索引建構完成之前,您必須小心部署需要新索引的新版應用程式。

您可以在 GCP 主控台「Indexes」(索引) 頁面中查看索引的狀態。

刪除未使用的索引

當您變更或移除索引設定中的索引時,系統「不會」自動從 Datastore 模式資料庫中刪除原始索引。因此,您可以在執行舊版應用程式的同時建置新的索引,也可以在新版出現問題時立即將其還原為舊版。

如果您確認不再需要舊索引,可以使用 datastore indexes cleanup 指令將其刪除。這個指令會刪除未在 index.yaml 本機版本中提及的實際工作環境 Datastore 模式執行個體中的所有索引。要取得如何使用 indexes cleanup 的範例,請參閱使用 gcloud 工具的開發工作流程相關頁面。

指令列引數

如要進一步瞭解建立和清除索引的指令列引數,請分別參閱 datastore indexes createdatastore indexes cleanup 相關頁面。如要進一步瞭解 gcloud 工具的指令列引數,請參閱 gcloud 工具參考資料

本頁內容對您是否有任何幫助?請提供意見:

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

這個網頁
Cloud Datastore 說明文件