GAE / P:有效地迁移到NDB

时间:2015-06-17 20:22:25

标签: python google-app-engine google-cloud-datastore app-engine-ndb

我终于从db升级到ndb(这比我预期的要大得多......)。

我使用了很多ReferenceProperty并将其转换为KeyProperty。现在,我使用ReferenceProperty的每个地方都需要添加一个明确的get,因为它之前已经为我自动完成了。

我的问题是我是否应该重构我的代码以使其更有效率。我有很多使用KeyProperty的方法,我需要做一个明确的get()。我想知道我是否应该更改这些方法,以便将实体传递给它们,而不是使用KeyPropertyget()

ndb的自动内存缓存是否足够好,我不需要重组?或者我应该重构我的代码以避免重复获取同一个实体?

我们不会在这里看到效率低下的问题。但对于单个HTTP GET / POST,我可能会获得相同的实体3-5次。

1 个答案:

答案 0 :(得分:2)

在您的情况下,In-Context Cache将接管并保存数据库调用:

  

上下文缓存很快;这个缓存存在于内存中。当NDB函数写入数据存储区时,它还会写入上下文缓存区。当NDB函数读取实体时,它首先检查上下文缓存。如果在那里找到实体,则不会发生数据存储交互。

每个请求都会获得一个新的上下文。