GAE数据存储组实体的利弊

时间:2014-08-02 19:00:55

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

我在GAE下建模数据库处理学习者评估。所以,让我说我有这个:

class Assesment(db.Model):

    usrId= db.StringProperty(required=True)
    subjectID= db.StringProperty(required=True, choices=set(["math", "Eng", "art"]))
    when= db.DateTimeProperty(auto_now_add)
    score= db.IntegerProperty()
    solved= db.BooleanProperty()

我有两个其他模块,一个用于学习者属性,例如姓名,地址,电子邮件,另一个用于主题信息,例如名称,提示,video_url ..等等 我知道我必须忘记与经典DBMS建模相关的任何事情。  

我是否应该将所有模块(评估学习者科目)保留在同一个组实体中,以及每个模块如何写1个第二,一旦实施,将影响网站的表现。 如果没有,我的评估模块可以处理多少属性而不会缩小。

1 个答案:

答案 0 :(得分:0)

通常,没有理由将所有模型保留在同一个实体组中。您创建了一个主要的性能瓶颈而没有任何好处。

当需要强一致性或事务时,单个实体组(父子关系)是必需的,这是一个相对罕见的用例。有时,为了方便检索数据,可能会使用父子实体关系,但您必须仔细权衡每个用例。

我不确定你所说的“缩小”是什么意思,但是如果你担心性能它不会明显降低,除非你有数百个属性,在这种情况下,将经常更新的属性与很少更新分开是个好主意属性分为不同的实体。