理解Google App Engine中的祖先路径
我在看一些Python代码,试图理解我认为是“祖先路径”的东西。
def parent_key(name = 'default'):
return ndb.Key('MyEntity', name)
到处都有
MyEntity.get_by_id(someId, parent = parent_key())
我想找到一些文档或者解释,为什么要这样做,因为这些实体在关系上并没有真正的“父级”。
我看了一些GAE的文档,但还是不太清楚什么时候应该这样做,什么时候又不应该。
1 个回答
1
通过让这些实体有相同的父级,你就把它们放在了同一个实体组里,这样可以让查询结果更一致。通常情况下,数据存储并不能保证你在保存一个实体后能立刻取到它。虽然它最终会出现,但可能需要几秒钟的时间。
不过,当你进行祖先查询时,它会保证数据的一致性,这也是为什么文档中的大部分入门示例代码都让所有实体有相同的父级。这样做可以让你在保存数据后更容易立刻取到它,但这也限制了这个实体组的修改次数,大约只能每秒写一次。
文档中的章节为强一致性结构化数据提供了更多细节。