1

假设我有 1000 个实体。我希望用户以这种方式通过分面搜索找到实体:

  1. 用户选择过滤器
  2. 一个 ajax 请求被发送到 GAE
  3. 服务器返回匹配实体的计数
  4. 重复直到只有几个实体

换句话说,每个应用的过滤器(只是一个复选框)可能会导致多达 1000 次读取(后续过滤器的成本会更低,因为返回的实体更少)。这意味着每天大约 10 次“搜索”(= 应用多个过滤器)可能会耗尽我所有的 50k 免费阅读配额。

Memcaching 结果并不是一个真正的选择:如果我有 30 个可以应用的过滤器,那么要存储所有组合,就会有 2^30="over abill" 的 memcache 条目(当实体更改时,它们都必须更新首先进行十亿次数据存储读取)。

显然我没有得到任何东西。我将如何有效地缓存或计算结果?

4

2 回答 2

2

不要尝试自己实现这一点 - 使用Search API,它专为在这种情况下有效返回结果而设计。

于 2012-10-04T09:33:32.557 回答
0

如果您只有 1000 个左右的实体,那么根据您所描述的情况,最好的选择是将所有 1000 个实体保留在内存缓存中,并在内存而不是数据存储中运行查询。1000 个实体的内存查询应该非常快。

您可以在存储到 memcache 之前将实体转换为 protobuf。请参阅此链接

于 2012-10-03T11:44:32.620 回答