2010-07-23 103 views
0

我有一個數據模型,我不確定是否可以從實體組中的嵌套類獲得任何好處。其基本模式是用戶擁有許多馬匹,馬只能自己一個鞍:嵌套實體組?

// Model 1, nest everything: 
User 
    Horse 
     Saddle 
    Horse 
     Saddle 

// Model 2: Just let them all be siblings. 
User 
    Horse 
    Horse 
    Saddle 
    Saddle 

我不知道我是否獲得對嵌套鞍實例的任何好處馬下,或者我應該只是讓他們都是兄弟姐妹。

生成密鑰:

// Model 1: 
Key key = new KeyFactory.Builder(
    User.class.getSimpleName(), userid) 
    .addChild(Horse.class.getSimpleName(), horseid) 
     .addChild(Saddle.class.getSimpleName(), saddleid).getKey(); 

// Model 2: 
Key key = new KeyFactory.Builder(
    User.class.getSimpleName(), userid) 
    .addChild(Saddle.class.getSimpleName(), saddleid).getKey(); 

所以生成密鑰爲1的情況更多的工作,我想知道我是否應該只需切換到情況2,而不是,如果我沒有獲得對附加任何優勢築巢?我必須做的操作:

  1. 刪除一匹馬和它的馬鞍。
  2. 用馬鞍創造一匹馬。
  3. 更新一匹馬和它的馬鞍。
  4. 單獨獲得一匹馬。
  5. 同時獲得一匹馬和它的馬鞍。

兩個模型給我所有上述,我認爲。也許模型#1提供的優點是,僅在鞍座上執行操作時,整個用戶對象不必被鎖定?

由於

回答

2

the docs

與給定的根實體 作爲祖先每個實體是相同的實體 組中使用。組中的所有實體都存儲在同一個數據存儲節點中的 。

和:

只有使用實體組在需要的時候進行交易 。對於實體之間的其他 關係,請使用 ReferenceProperty屬性和鍵值 值,這些值可用於查詢。

無論是否嵌套,這兩種模型都會爲每個用戶生成一個實體組。如果您只想表示對象的層次結構,則應該完全避免實體組並使用ReferenceProperty。