gpt4 book ai didi

java - App Engine + 云数据存储性能 : order in query or in memory?

转载 作者:行者123 更新时间:2023-12-01 22:04:38 25 4
gpt4 key购买 nike

有关 Google App Engine + 数据存储区的问题。我们有一些带有多个相等过滤器的查询。为此,我们不需要保留任何组合索引,数据存储会自动维护这些索引,如here所述。 .

The built-in indexes can handle simple queries, including all entities of a given kind, filters and sort orders on a single property, and equality filters on any number of properties.

但是,我们需要根据这些属性之一对结果进行排序。我可以在数据存储查询上使用 .sort("prop") 来做到这一点(使用 Objectify),这需要我添加一个复合索引,并且一旦部署就会​​形成一个巨大的索引。我看到的替代方案是检索无序列表(结果集中最多 100 个实体),然后在内存中对它们进行排序。

由于我们的实体实现了 Comparable,我可以简单地使用 Collections.sort(entities)。

我的问题很简单:想要哪一个?即使数据存储复合索引性能更高,是否值得创建所有这些索引?

谢谢!

最佳答案

方法没有正确或错误之分 - 解决方案取决于您的要求。有几个因素需要考虑:

  1. 额外的索引会占用空间,并且存储成本和写入成本都会更高 - 您必须在每次更新实体时更新每个索引。

  2. 按属性排序速度更快,但对于较小的结果集,差异可以忽略不计。

  3. 您可以将排序结果存储在 Memcache 中,并避免在每个请求中对它们进行排序。

  4. 如果没有复合索引,您将无法使用分页,即每次都必须检索所有结果以进行内存排序。

关于java - App Engine + 云数据存储性能 : order in query or in memory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33022640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com