App引擎批量加载程序下载警告“__key__没有降序索引,执行串行下载”

时间:2010-11-18 16:35:36

标签: google-app-engine bulkloader

我正在使用以下内容下载我的其中一种实例:

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说我需要创建一个索引。但是,添加更多索引会减慢对我的实体的写入速度 - 我宁愿不这样做,因为我将更频繁地编写实体,而不是进行批量数据下载。

感谢。

3 个答案:

答案 0 :(得分:6)

正如错误所描述的那样,对于您正在下载的模型,__key__没有降序索引,批量加载程序必须按顺序下载。如果您按照描述添加索引,它将能够并行下载。如果不这样做,它将正常工作,但下载速度会慢,因为它会连续运行。

请注意,附加索引对延迟的影响很小,因为索引行与实体写入并行写入,这意味着写入只需要最慢的更新。

答案 1 :(得分:2)

我已经通过将此代码添加到index.yaml

解决了这个问题
kind: books
- properties:
  name: __key__
    - direction: desc
kind: books
- properties:
  name: another_indexes_here

答案 2 :(得分:0)

如果您使用的是JAVA和datastore-indexes.xml文件。

将此(假设该类型的名称为“Books”)添加到datastore-indexes.xml文件中:

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

然后重新部署您的应用。确保检查数据存储区索引选项卡以查看__key__是否正在服务。 然后你可以再次尝试下载。