【发布时间】:2014-10-28 18:40:48
【问题描述】:
我真的在文档中发现这些选项令人困惑,memcache 会使用祖先查询吗?我可以同时使用两者吗?如何使用?
【问题讨论】:
标签: python google-app-engine namespaces memcached
我真的在文档中发现这些选项令人困惑,memcache 会使用祖先查询吗?我可以同时使用两者吗?如何使用?
【问题讨论】:
标签: python google-app-engine namespaces memcached
不,Memcache 不使用祖先查询,甚至不使用“查询”本身。虽然 Memcache 和 Datastore 本质上都是键值存储,但 Datastore 支持查询(使用索引)和事务。 Datastore 用于您的持久数据存储。
另一方面,Memcache 仅提供 put 和 get 操作,具有高性能,但不保证对象的可用性。 (Memcache 还提供原子计数器和 put-if-untouched 功能)。因为它是一个缓存,所以您的数据可能随时被驱逐。因此,您应该将 memcache 视为提高应用程序性能或效率的一种方式。
此外,命名空间和祖先查询是不相关的。命名空间只是一种帮助您对数据进行分区的方法(可能对于多租户应用程序)。 Datastore 和 Memcache 都支持命名空间。
祖先路径定义了一致性的范围 - 在祖先查询或事务中。要了解祖先的目的,您应该阅读Entity Groups 的概念。
【讨论】:
我不确定您对“祖先查询”的要求是什么,但对于命名空间,在 Python 中,数据存储区和内存缓存 API 都使用 namespace_manager#get_namespace 进行查找/放置/...尽管在内存缓存 API 中您可以覆盖它通过在请求中显式传递命名空间(参见:https://cloud.google.com/appengine/docs/python/memcache/clientclass)
【讨论】: