Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 从应用程序引擎数据存储中选择子类-优缺点_Google App Engine_Google Cloud Datastore_Class Hierarchy - Fatal编程技术网

Google app engine 从应用程序引擎数据存储中选择子类-优缺点

Google app engine 从应用程序引擎数据存储中选择子类-优缺点,google-app-engine,google-cloud-datastore,class-hierarchy,Google App Engine,Google Cloud Datastore,Class Hierarchy,我的模型设置如下: class Day(db.Model): date = db.DateProperty() total = db.FloatProperty() class Event(db.Model): desc = db.StringProperty() amount = db.FloatProperty() 层次结构如下:用户>日期>事件(用户有天。日期有事件。) 当用户登录时,我想选择他们的日期(比如说日期范围),然后为每一天获取他们的事件。让我

我的模型设置如下:

class Day(db.Model):
    date = db.DateProperty()
    total = db.FloatProperty()

class Event(db.Model):
    desc = db.StringProperty()
    amount = db.FloatProperty()
层次结构如下:用户>日期>事件(用户有天。日期有事件。)

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

我应该使用parent属性创建显式实体组吗?或者我应该在一天为用户添加一个引用属性,并在一天的事件中添加一个引用属性

每种方法的优缺点是什么?性能考虑因素?可伸缩性考虑因素?还有,我将如何以最好的方式对此进行查询


谢谢

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


为了最有效地选择一个日期范围内的所有事件,最好的选择是稍微去规范化,并在事件上放置一个“date”属性。然后,您可以查询给定用户在给定范围内的所有事件,并从中提取日实体(如果需要)。

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

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