在没有数据存储争用成本的情况下,我可以获得亲子关系的好处吗?

时间:2010-09-13 20:17:48

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

假设: 1)Google AppEngine具有实体组的概念。 2)实体组中的实体形成树。但是,据我所知,每个put()到该树中的任何实体都会锁定整个树(而不仅仅是直接的父)一段时间。 3)允许用户写ca.树每秒5次。 4)没有办法具有非锁定行为(即通过使它们成为无索引的属性)

想出我自己的父子模型是不是一个明智的想法,它不使用内置的Key函数(因为那些会创建实体组),而是使用我编写的一些snytax对话?这将允许我通过查询计算父键来检索“子”实体。

2 个答案:

答案 0 :(得分:4)

实体组使用的祖先关系可以使用父实体的引用/键列表在您自己的代码中建模。根实体将没有,根的子将只有他们列表中的根实体,他们的子将拥有根和他们的直接父,等等。这就是如何在App Engine中实现祖先的索引,并允许您进行相同类型的查询。

答案 1 :(得分:1)

您可以使用参考属性:

class Parent(db.Model):
    x = db.IntegerProperty()

class Child(db.Model):
    parent = db.ReferenceProperty(
        reference_class = Parent, 
        collection_name = 'children')
    y = db.IntegerProperty()