2008-10-18 28 views
10

根據我的理解,db.Model的父屬性(通常在構造函數調用中定義/傳遞)允許您在數據模型中定義層次結構。結果,這增加了實體組的大小。但是,我不清楚爲什麼我們會這麼做。這是嚴格遵守ACID的嗎?我希望看到每種方案都最適合或更合適。Google App Engine中的父級和引用屬性之間有什麼區別?

回答

15

有幾個不同點:

  • 與所有實體同一個祖先在同一個實體組中。事務只能影響單個實體組內的實體。
  • 對單個實體組的所有寫操作都是序列化的,因此吞吐量有限。
  • 父實體在創建時設置並已修復。參考資料可以隨時更改。
  • 使用引用屬性,您只能查詢直接關係,但對於父屬性,您可以使用.ancestor()過濾器查找從給定祖先後裔的所有內容(直接或間接)。
  • 每個實體只有一個父代,但可以有多個引用屬性。
+0

值得注意的是,即使父類實際上不存在,也可以使用相同的父鍵創建實體,因此即使沒有指定它們中的一個作爲父類,也可以將它們放在同一組中。我不能說我可以想出一個很好的理由來做到這一點! – 2010-01-06 21:33:40

8

實體組(由父屬性定義)的唯一目的是啓用不同實體之間的事務。如果您不需要交易,請勿使用實體組關係。

我建議你重新閱讀文檔中的Keys and Entity Groups部分,我花了不少的篇幅去理解這個想法。

而且觀看這些會談中,除其他事項外,他們討論的交易和實體組:

+0

感謝您的聯繫。 – JamesC 2009-12-24 11:42:30

相關問題