【问题标题】:App engine bulk loader download warning "No descending index on __key__, performing serial download"应用引擎批量加载程序下载警告“__key__ 上没有降序索引,正在执行串行下载”
【发布时间】:2011-08-25 02:25:48
【问题描述】:

我正在使用以下内容下载我的一种类型的所有实例:

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

谢谢。

【问题讨论】:

  • 您的代码中有降序查询吗?
  • @systempuntoout: 是的,但仅限于我的一种(并且此警告发生在具有 > 批量大小实例的任何种类上),并且 order 子句不在 key上>(它在日期时间属性上)。

标签: google-app-engine bulkloader


【解决方案1】:

正如错误所述,如果您正在下载的模型在 __key__ 上没有降序索引,则bulkloader 必须连续下载。如果您按照描述添加索引,它将能够并行下载。如果你不这样做,它会正常工作,但下载速度会慢一些,因为它是串行运行的。

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

【讨论】:

  • ...如何定义降序索引?我能找到的只有 2-3 年的东西,它们在 2013 年会产生错误。:(
【解决方案2】:

我已经通过将此代码添加到 index.yaml 解决了这个问题

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

【讨论】:

    【解决方案3】:

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

    将这个(假设种类的名称是“书籍”)添加到 datastore-indexes.xml 文件中:

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

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

    【讨论】:

      猜你喜欢
      • 2017-03-05
      • 2021-04-06
      • 1970-01-01
      • 2020-08-18
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多