我正在编写一个新闻应用程序,我想让我的用户从包含数十个(约 60 个)来源(卫报、时报等)的列表中选择他们最喜欢的新闻来源。我有一个包含索引属性“源”的新闻实体,我正在寻找一种方法,可以让我绕过 App Engine 施加的 30 个子查询的限制,该限制阻止我使用 IN 和 EQUALS 过滤器来获取所有新闻这属于一大堆来源。
有办法解决这个限制吗?
谢谢
最佳答案
请记住,索引非常昂贵 - 它们占用大量空间并成倍增加写入成本。
我会使用不同的设计。我会将源属性设置为无索引,而不是 60 个子查询(如果源列表增长到 500 会发生什么?)。然后我会加载所有最新新闻的列表并将其保存在 Memcache 中。如果您丢失了它,您可以随时重新加载。当有新闻出现时,您还可以轻松地向此列表添加更多项目。您还可以根据时间将此列表拆分为多个 block 。
现在,当用户调用电话时,您可以轻松过滤内存中的此列表。根据您的使用量,这种设计将便宜数十倍或数千倍,并且工作速度更快。最大的区别在于,您不必为每个用户请求一遍又一遍地读取相同的实体,而是只需读取一次即可服务数千个请求,然后再需要再次读取它们。
关于google-app-engine - GAE 30 个子查询限制的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28521770/