我正在使用Google App Engine开发一个应用程序,偶然发现了以下情况,这可能被描述为“MVP - lite”。
在建立多对多关系时,the standard property to use is the ListProperty。最有可能的是,您的列表由另一个模型的外键组成。
但是,在大多数实际应用程序中,当您获得键列表(对象的名称)时,通常至少需要一个细节,这样您就可以构建一个指向该对象的漂亮超链接。这需要循环遍历您的键列表并抓取每个对象以使用其“name”属性。
这是最好的方法吗?因为“读取很便宜”,即使我现在只使用一个属性,也可以获得每个对象吗?或者我应该使用tipfy's JsonProperty之类的特殊属性来保存(键,名称)“元组”以避免额外获取?
答案 0 :(得分:1)
虽然数据存储区读取相对更便宜的数据存储区写入,但它们仍然可以为请求处理程序添加大量时间。包括对象的名称以及它们的外键听起来好像使用非规范化(例如,使用两个列表属性来模拟元组 - 一个包含外键,另一个包含相应的名称)。
如果您决定不进行此非规范化,那么我建议您批量获取外键引用的实体(而不是逐个获取它们),这样您至少可以最小化您对数据存储区的往返次数
答案 1 :(得分:1)
建模一对多(或某些) 案例,多对多关系, 要使用的标准属性是 的ListProperty。
不,在建模一对多关系时,要使用的标准属性是“很多”方面的ReferenceProperty。然后,您可以使用查询来检索所有匹配的实体。
回到原来的问题:如果需要更多数据,则反规范化。在密钥列表旁边存储标题列表。