我正在使用带有线程安全模式的python 2.7的NDB。
据我所知,查询具有NDB的实体不使用本地缓存或内存缓存,而是直接访问数据存储区,而不是通过密钥名称获取。 (如果这个前提不正确,问题的其余部分可能是多余的。)
因此,一个好的范例是仅使用keys_only = True查询然后执行get_multi来获取完整的实体吗?
好处是keys_only =真正的查询比keys_only = False快得多,get_multi可能只是命中memcache&通过调用get_multi,您的实体现在保存在memcache中,以防您需要再次执行查询。
缺点是您现在有一个RPC查询调用+ get_multi调用,我认为可以在一个get_multi中调用实体的方式有限,因此您的有效查询大小可能会受到限制。
你怎么看?我们应该只使用keys_only = True查询然后执行get_multi吗?是否存在某些最小和最大查询大小限制,使得此技术不仅仅像执行返回完整实体的查询一样有效?