【问题标题】:How the performance of datastore batch gets compares to ancestor-only queries?与仅祖先查询相比,数据存储批处理的性能如何?
【发布时间】:2013-02-25 01:55:24
【问题描述】:

我希望批处理成为从数据存储中检索数据的最快方法之一。它与查询相比如何获取低于祖先的所有实体?当然,这个查询没有任何过滤器或排序顺序。

我希望这个查询与批量获取一样快,因为我认为它不需要索引扫描,并且只需要直接从实体 bigtable 中检索实体。此外,假设此表中的所有实体都按其键排序,结果将位于订单的下一个,全部按顺序排列 - 这不能保证批量获取。

考虑到这两个操作检索相同数量的实体,就成本而言,与批量获取相比,查询将只有 +1 读取操作。

我的假设是否有意义?您是否经历过任何可以证实或否认这些假设的事情?

如果我能确认我的期望,我计划大量使用这些查询。我会在层次结构中组织我的模型,并避免将参考存储到列表中的其他实体(用于批量获取) - 没有列表大小限制,我也可以避免检索大型实体(有很多多值properties) 在不需要批量获取的情况下。

我真的很感激任何关于此的 cmets。

提前谢谢你。

【问题讨论】:

  • 我建议您实际尝试一下,使用 appstats 对其进行测量并进行比较,然后您就可以为您的特定用例提供经验答案。
  • 是的,我同意你的看法。我只是希望尼克约翰逊或任何有更多经验的人能就此发表意见。这样我就不会构建一个在某些天真的条件下成功的测试用例,但会随着我的数据增长而失败。但我明白你的意思。 =)

标签: google-app-engine google-cloud-datastore


【解决方案1】:

我怀疑您在祖先查询和非祖先查询之间观察到的任何性能差异都不是巧合。但可以肯定的是,设置一些东西来做测量。这是一个很好的做法。

【讨论】:

  • 关于祖先的要点是,您可以在不使用多值属性的情况下关联实体(一对多),也可以在查询时不使用索引扫描。因此,这不是关于祖先查询与非祖先查询,而是关于祖先查询与批量获取。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-10
  • 2012-08-29
  • 2021-10-25
  • 2012-07-06
  • 2012-04-08
相关资源
最近更新 更多