2010-11-18 13 views
4

我用下面的下載我種一個的所有實例:App Engine的批量載入程序下載警示「對__key__沒有降序索引,執行串行下載」

appcfg.py download_data --config_file=bulkloader.yaml --kind=ModelName --filename=ModelName.csv --url=http://appid.appspot.com/remote_api 

如果那種具有比多個實例批量大小,然後我得到這個警告:

No descending index on __key__, performing serial download 

我沒有任何自定義索引,或禁用索引的任何屬性。

我是否需要做些事情來解決這個警告,或者它只是一個我可以放心忽略的警告?它會影響下載的速度嗎?

This article on the bulkloader在樣本輸出中包含警告消息,但沒有提及它。

This post on the app engine group說我需要創建一個索引。但是,添加更多索引會減慢對我的實體的寫入 - 我寧願不這樣做,因爲我將更頻繁地編寫實體,而不是進行批量數據下載。

謝謝。

+0

你有代碼中的降序查詢嗎? – systempuntoout 2010-11-18 23:03:52

+0

@systempuntoout:是的,但僅限於我的某種類型(並且此類警告在任何類型的批處理大小實例上都會發生),並且order子句不在__key__上(它位於datetime屬性上)。 – 2010-11-18 23:08:55

回答

6

正如錯誤所述,如果您下載的型號沒有__key__的降序索引,則必須連續下載bulkloader。如果按照所述添加索引,它將能夠並行下載。如果你不這樣做,它會正常工作,但下載速度較慢,因爲它是連續運行的。

請注意,額外的索引對延遲只有很小的影響,因爲索引行與實體寫入並行寫入,這意味着寫入只需要最慢的更新。

+0

感謝那尼克。 – 2010-11-19 02:12:01

+3

...我如何定義降序索引?我能找到的都是2-3歲的東西,在2013年會產生錯誤。:( – 2013-03-27 23:48:40

2

我已經解決了這個問題,通過添加以下代碼如果您使用Java和數據存儲,indexes.xml文件index.yaml中

kind: books 
- properties: 
    name: __key__ 
    - direction: desc 
kind: books 
- properties: 
    name: another_indexes_here 
0

加入這個(假設種的名稱是「書」)到數據存儲,indexes.xml文件:

<datastore-index kind="Books" ancestor="false" source="auto"> 
    <property name="__key__" direction="desc"/> 
</datastore-index> 

然後重新部署應用。確保您檢查數據存儲索引選項卡以查看__key__正在服務。 然後你可以再次嘗試下載。