在App Engine中使用ListProperty或自定义元组属性?

时间:2010-11-22 13:53:19

标签: google-app-engine data-modeling mvp modeling tipfy

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

在建立多对多关系时,the standard property to use is the ListProperty。最有可能的是,您的列表由另一个模型的外键组成。

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

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

2 个答案:

答案 0 :(得分:1)

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

如果您决定不进行此非规范化,那么我建议您批量获取外键引用的实体(而不是逐个获取它们),这样您至少可以最小化您对数据存储区的往返次数

答案 1 :(得分:1)

  

建模一对多(或某些)   案例,多对多关系,   要使用的标准属性是   的ListProperty。

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

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