AppEngine - 何时使用父关系?

时间:2011-08-07 23:14:50

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

我试图了解何时在GAE上使用实体“父”。这仅对查询有用(即获取父== someObj所有的Foo对象),或者子对象是否像ReferenceProperty一样可以访问父实体?

何时使用父vs ReferenceProperty更好?

2 个答案:

答案 0 :(得分:5)

您应该使用实体组(这是具有共同父表单的所有实体)的唯一时间用于交易安全。如果需要更新事务中的多个记录,则它们都需要具有相同的根实体。您不能将所有实体放在单个父级下的原因是因为对实体组的更新大约限制为每秒1次。有关详细信息,请参阅文档的this section

实体可以使用this.parent访问其父级,但没有什么特别之处 - 这只是db.get(this.key().parent())的语法糖。

答案 1 :(得分:1)

我读到的所有东西都是针对父实体的,原因之一就是,当你修改那棵树中的任何东西时,一切都被锁定了。

当我第一次开始使用父实体时,我希望将它们视为蜂巢的头部或围绕该父条目定位的数据库,但显然这不是它们的完成方式。您可能只想使用ReferenceProperty,因为这将允许您访问父项,并且不会导致锁定继续。

当然,如果你想要这种关系锁定,那么也许你确实想要它,但你没有足够的具体程度来衡量它。