GWT + JDO + GAE,如何安排我的数据以提高性能

时间:2011-02-13 23:41:09

标签: java google-app-engine gwt jdo

这是我希望存储在数据库中的结构

祖 - >父[] - >儿童[]。祖父包含父亲和父亲的名单,其中包含一份儿童名单。

这可以安排的最佳方式是什么?>嵌入或自己的桌子?

我如何在客户端填充祖父[]。 (我看过thro objectify,requestFactory,甚至编组为DTO)。 目前我有2400名祖父各有5个父亲,每个有5个孩子。

我的查询有点,这需要很长时间来检索对象。  为(祖父...)    queryAllfather    为(父亲......)       queryAllChildren

对于每个查询,它是pm.newQuery(GrandFather.class); pm.execute。

这需要很长时间的分钟。

1 个答案:

答案 0 :(得分:1)

首先,如果您使用的是High Replication数据存储区,请不要使用JDO或JPA。 这是我学到的经验教训。它不是为它设计的。

我没有使用JDO或JPA,而是选择了一个更简单,更清晰,更高效的Objectify库。

至于将数据存储在HRD中,您必须详细说明您的用例。如果您有一个祖先模型,那么您可以在HRD中保持其分层。如果您的模型还包含“母系”系列,则必须采用不同的方式。

将其分级(如果可能)可能会给您带来两个好处: - 能够在层次结构上进行交易。 - 避免父对象的额外索引,因为祖先提取不需要将父字段编入索引。

还有两个缺点: - 您只能拥有一位家长。所以你需要决定哪一个是最佳候选者。例如,如果你有母亲,祖母,你必须选择父亲或母亲,但不是两个都是父母。 - 使用更长的分层键来放置/获取对象有一些效率低下的问题。例如,始终必须获取父键。我建议你在文档中阅读它,因为我可能会误导你。

重要的是要记住,您可能不需要这些好处,而缺点会严重影响您的项目。所以你原来问题的答案是:只有你能说出来。 :)