代码之家  ›  专栏  ›  技术社区  ›  rmontgomery429

从应用引擎数据存储中选择子类-优缺点

  •  1
  • rmontgomery429  · 技术社区  · 15 年前

    我的模型设置如下:

    class Day(db.Model):
        date = db.DateProperty()
        total = db.FloatProperty()
    
    class Event(db.Model):
        desc = db.StringProperty()
        amount = db.FloatProperty()
    

    层次结构如下:用户>天>事件(用户有天)。天有事件。)

    当一个用户登录时,我想选择他们的日期(比如,按日期划分的范围),然后每天我都想得到他们的事件。让我们假设这些现在显示在列表中。

    是否应使用Parent属性创建显式实体组?或者我应该在当天为用户添加引用属性,并在事件当天添加引用属性?

    每种方法的优缺点是什么?性能考虑?可扩展性考虑?另外,我将如何以最好的方式查询这个问题。

    谢谢!

    1 回复  |  直到 12 年前
        1
  •  1
  •   Mark Rajcok    12 年前

    如果您需要一起事务性地更新日期和事件模型(例如,“总计”字段需要与每个事件一起更新),请使用实体组。否则,请使用引用属性。

    为了最有效地选择日期范围内的所有事件,您最好的选择是稍微取消规范化,并在事件上放置一个“日期”属性。然后,您可以在给定的范围内对给定用户的所有事件进行查询,并根据需要从这些事件中提取日实体。