datastore-indexes.xml 參考資料

App Engine 會針對實體的各個屬性預先定義簡單的索引。App Engine 應用程式可在名為 datastore-indexes.xml 的索引設定檔中進一步定義自訂索引。當您測試應用程式時,開發伺服器可在應用程式執行查詢的過程中,產生應用程式需要的索引設定。您可以在上傳應用程式之前編輯 datastore-indexes.xml 檔案,以手動方式微調索引。請參閱設定 Datastore 索引以瞭解如何部署和管理索引設定。

範例

以下是 datastore-indexes.xml 檔案範例:

<?xml version="1.0" encoding="utf-8"?>
<datastore-indexes
  autoGenerate="true">
    <datastore-index kind="Employee" ancestor="false">
        <property name="lastName" direction="asc" />
        <property name="hireDate" direction="desc" />
    </datastore-index>
    <datastore-index kind="Project" ancestor="false">
        <property name="dueDate" direction="asc" />
        <property name="cost" direction="desc" />
    </datastore-index>
</datastore-indexes>

語法

<datastore-index> 元素可包含下列元素:

元素 說明
<kind> 必要元素。查詢的實體種類。
<properties>

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

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

<name>
屬性的資料儲存庫名稱。
<direction>
排序方向,asc 代表遞增,desc 代表遞減。僅限在查詢的排列順序中使用的屬性才需要這個元素,且必須符合查詢採用的方向。預設值為 asc
<ancestor> 如果查詢包含祖系子句 (),則為 yes。預設值為 no

自動和手動索引

手動決定應用程式查詢所需的索引是一件單調乏味且容易出錯的事情。不過,幸好有開發伺服器可以為您決定索引設定。如要使用自動索引設定,請將 autoGenerate="true" 屬性新增至 WEB-INF/datastore-indexes.xml 檔案的 <datastore-indexes> 元素。如果您的應用程式沒有 datastore-indexes.xml 檔案,則也會使用自動索引設定。

如果已啟用自動索引設定,開發伺服器會在應用程式的 war/ 目錄中維護名為 WEB-INF/appengine-generated/datastore-indexes-auto.xml 的檔案。如果在開發伺服器中執行的應用程式嘗試針對在 datastore-indexes.xmldatastore-indexes-auto.xml 中沒有對應索引的內容執行資料儲存庫查詢,伺服器就會將適當的設定新增至 datastore-indexes-auto.xml 中。

如果您上傳應用程式時啟用了自動索引設定,appcfg 指令就會使用 datastore-indexes.xmldatastore-indexes-auto.xml 來決定要為實際工作環境中的應用程式建置哪些索引。

如果 autoGenerate="false" 位於 datastore-indexes.xml 中,開發伺服器和 AppCfg 就會忽略 datastore-indexes-auto.xml 的內容。如果本機運作的應用程式執行的查詢並未在 datastore-indexes.xml 中指定索引,開發伺服器就會擲回例外狀況,就像實際工作環境的 Datastore 一樣。

建議您偶爾將索引設定從 datastore-indexes-auto.xml 移至 datastore-indexes.xml,然後停用自動索引設定並在開發伺服器上測試應用程式。如此一來,您不需要管理兩個檔案,即可輕鬆維護索引,還能確保您的測試重現因為遺失索引設定而引發的錯誤。

部署索引設定檔

datastore-indexes.xml 檔案應位於應用程式預設服務的 /WEB-INF/ 目錄中。

如要在不更動目前提供版本的情況下部署資料儲存庫索引設定檔,請使用下列指令:

appcfg.sh update_indexes <application root path>

刪除不再使用的索引

在索引設定中變更或移除索引時,原始索引並不會從 App Engine 中自動刪除。因此,您可以在執行舊版應用程式的同時建構新的索引,也可以在新版出現問題時立即將其還原為舊版。

如果確認已不再需要這些舊的索引,則可執行下列指令,將其從 App Engine 中刪除:

./appengine-java-sdk/bin/appcfg.sh vacuum_indexes myapp/war
本頁內容對您是否有任何幫助?請提供意見:

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

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