假设我有1000个实体。我希望用户通过这种方式通过分面搜索找到实体:
换句话说,每个应用的过滤器(只是一个复选框)可能会导致多达1000次读取(后续过滤器的成本会降低,因为返回的实体较少)。 这意味着每天大约10次“搜索”(=应用多个过滤器)可能会耗尽我所有的50k免费读取配额。
记忆结果实际上不是一个选项:如果我有30个过滤器可以应用,那么存储所有组合将会有2 ^ 30 =“超过十亿”的memcache条目(当所有组合都需要更新时)实体通过首先进行十亿个数据存储区读取来进行更改。
显然我没有得到什么。我如何有效地缓存或计算结果?答案 0 :(得分:2)
不要试图自己实现这一点 - 使用Search API,这是为了在这种情况下有效地返回结果而设计的。
答案 1 :(得分:0)
如果您只有1000个左右的实体,根据您所描述的情况,最好的办法是将所有1000个实体保留在内存缓存中,并在内存而不是数据存储区中运行查询。 1000个实体的内存查询应该非常快。
您可以在存储到memcache之前将实体转换为protobufs。请参阅此link。