Google App Engine中的父级和引用属性之间有什么区别?

时间:2008-10-18 21:12:07

标签: python api google-app-engine

据我所知,db.Model的parent属性(通常在构造函数调用中定义/传递)允许您在数据模型中定义层次结构。结果,这增加了实体组的大小。但是,我不清楚为什么要这样做。这严格遵守ACID吗?我希望看到每种情况最适合或更合适的情况。

2 个答案:

答案 0 :(得分:15)

有几点不同:

  • 具有相同祖先的所有实体位于同一实体组中。事务只能影响单个实体组内的实体。
  • 对单个实体组的所有写入都是序列化的,因此吞吐量有限。
  • 父实体在创建时设置并已修复。参考文献可以随时更改。
  • 使用引用属性,您只能查询直接关系,但使用父属性,您可以使用.ancestor()过滤器查找从给定祖先下降的所有内容(直接或间接)。
  • 每个实体只有一个父级,但可以有多个参考属性。

答案 1 :(得分:8)

实体组的唯一目的(由父属性定义)是在不同实体之间启用事务。如果您不需要事务,请不要使用实体组关系。

我建议你重新阅读文档的Keys and Entity Groups部分,我花了很多时间来理解这个想法。

同时观看这些会谈,其中包括讨论交易和实体组: