2011-02-13 48 views
0

這裏是我的結構,我希望在數據庫GWT + JDO + GAE,如何安排我的數據表現

祖 - 存儲>父親[] - >兒童[]。祖父包含父親和父親的列表包含兒童的列表。

什麼是可以這樣安排的最佳方式 - > embbedded或自己的表?

我怎麼會填充在客戶端爺爺[]。 (我看過thro objectify,requestFactory,甚至編組爲DTO)。 目前我有2400祖父各有5父親和各有5子。

我的查詢是有點,這需要很長的時間來檢索對象。 爲(祖父...) queryAllfather 的(父親...) queryAllChildren

對於每個查詢,它是pm.newQuery(GrandFather.class); pm.execute。

這正在分鐘長的時間順序。

回答

1

首先,如果你使用的高複製數據存儲,不要使用JDO或JPA。 這是我以艱辛的方式學到的教訓。它只是沒有爲它設計。

而不是使用JDO或JPA的我去一個更簡單,更清潔,更高效的叫客體庫。

至於存儲HRD你的數據,你一定要告訴更多的用例。如果你有一個單一的祖先模型,那麼你可以在HRD中保持它的層次結構。如果你的模型也會包含「母親」一行,你將不得不做不同的事情。

有它的分層(如果可能的話)可以給你2個好處: - 能夠做出層次的交易。 - 避免父對象的額外指標,因爲祖先取不需要父字段建立索引。

還有2個缺點: - 你只能有一個父。所以你需要決定哪一個是最好的選擇。例如,如果您有母親,母親母親,您必須選擇父親或母親,但不能同時選擇父母。 - 有一些低效率把/獲取對象具有更長的分級密鑰。例如,父鍵總是必須被提取。我建議你在文檔中閱讀它,因爲我可能會誤導你。

重要的是要記住,你可能不需要好處,同時缺點會嚴重影響你的項目是非常重要的。所以你原來的問題的答案是:只有你可以告訴。 :)

+0

是的,我結束了使用客觀化,雖然你之前建議:)。 – justanothercoder 2012-02-18 08:13:54