2

我正在使用 Google App Engine 开发一个应用程序,并偶然发现了以下场景,它可能被描述为“ MVP -lite”。

建模多对多关系时,要使用的标准属性是 ListProperty。您的列表很可能由另一个模型的外键组成。

但是,在大多数实际应用程序中,当您获得一个键列表(对象名称)时,您通常至少需要一个详细信息,这样您就可以构造一个指向该对象的漂亮超链接。这需要遍历您的键列表并抓取每个对象以使用其“名称”属性。

这是最好的方法吗?因为“读取很便宜”,即使我现在只使用一个属性,是否可以获取每个对象?或者我应该使用像tipfy的JsonProperty这样的特殊属性来保存(键,名称) “元组”以避免额外的获取?

4

2 回答 2

1

尽管数据存储读取是相对便宜的数据存储写入,但它们仍然可以为请求处理程序增加大量时间。包括对象的名称以及它们的外键听起来像是对非规范化的一种很好的使用(例如,使用两个列表属性来模拟一个元组——一个包含外键,另一个包含相应的名称)。

如果您决定反对这种非规范化,那么我建议您批量获取外键引用的实体(而不是一个一个地获取它们),这样您至少可以最大限度地减少您对数据存储进行的往返次数。

于 2010-11-22T14:09:37.817 回答
1

在建模一对多(或在某些情况下,多对多)关系时,要使用的标准属性是 ListProperty。

不,在建模一对多关系时,要使用的标准属性是“多”端的 ReferenceProperty。然后,您可以使用查询来检索所有匹配的实体。

回到你原来的问题:如果你需要更多数据,非规范化。在键列表旁边存储标题列表。

于 2010-11-22T22:29:45.337 回答