复制数据与Google App Engine上的多个搜索 - 设计决策

时间:2011-07-15 18:23:37

标签: google-app-engine google-cloud-datastore

我总是在使用Google App Engine时遇到这个问题:我应该重复存储在其他实体中的数据还是应该建立关联?我应该分析什么才能做出这个决定?

我不会在搜索中使用这些信息,因此不是“GAE加入问题”,这是一个问题。

现在,我有类似这样坚固的例子:

public class GameResult
{
    private int points;
    private int duration;
    ...
}

public class Player
{
    private string name;
    private GameResult lastGameResult;

    List<int> lastGamesPoints;
}

不知怎的,我需要知道过去5场比赛的标点符号,这是我需要的唯一信息,也就是说,我不需要了解过去游戏的GameResult的其他内容。我可以拥有这个整体列表,或者我可以拥有一个OneToMany GameResults协会。

1 个答案:

答案 0 :(得分:0)

这实际上取决于您的实际使用情况和瓶颈。 如果您不需要修改这些数据,将它们复制到不同的实体将是一个好主意。特别是当您需要获取这些“最后五个结果”(使用order_by的查询)时。如果使用一对多关系模型,则意味着您需要花费一些CPU小时来首先对其进行索引。然后,您需要在查询这些结果时支付额外的CPU小时。我不认为这是个好主意。另一种方法是使用ListProperty来存储最后五个GameResult实体。这意味着您可以使用其密钥检索这些实体,这将比查询更快。

有关更多信息,请阅读一些很棒的帖子! Relational vs Non-Relational Data Modeling - what's the difference &安培; How to think in data stores instead of databases?