我终于从db
升级到ndb
(这比我预期的要大得多......)。
我使用了很多ReferenceProperty
并将其转换为KeyProperty
。现在,我使用ReferenceProperty
的每个地方都需要添加一个明确的get,因为它之前已经为我自动完成了。
我的问题是我是否应该重构我的代码以使其更有效率。我有很多使用KeyProperty
的方法,我需要做一个明确的get()
。我想知道我是否应该更改这些方法,以便将实体传递给它们,而不是使用KeyProperty
和get()
。
ndb
的自动内存缓存是否足够好,我不需要重组?或者我应该重构我的代码以避免重复获取同一个实体?
我们不会在这里看到效率低下的问题。但对于单个HTTP GET / POST,我可能会获得相同的实体3-5次。
答案 0 :(得分:2)
在您的情况下,In-Context Cache将接管并保存数据库调用:
上下文缓存很快;这个缓存存在于内存中。当NDB函数写入数据存储区时,它还会写入上下文缓存区。当NDB函数读取实体时,它首先检查上下文缓存。如果在那里找到实体,则不会发生数据存储交互。
每个请求都会获得一个新的上下文。