2011-08-12 43 views
1

我有一個名爲電影的實體。GAE/J通過1個實體組或多個實體組獲得更快的速度?

我想要一個電影實體的get_or_create方法。現在每個Movie實體都在它自己的實體組中。

我讀了我必須把它們放在同一個實體組中,並使用事務來避免重複的實體。

我也可以選擇我自己的獨特的關鍵,這將導致覆蓋幾個條目(冪等)沒有任何影響。

電影數可以從1-50000。在某個時候,我想把他們全部拿走。對單個實體組或多個實體組執行查詢會更快嗎?它是否更快,因爲 整個實體組都存儲在特定節點中?

我的要求是快速閱讀所有的電影。

謝謝!

回答

0

我讀了我必須把它們放在同一個實體組中,並使用 事務來避免重複的實體。

事實並非如此。正如您所建議的那樣,使用密鑰名稱來防止重複,方法是確保可能重複的密鑰名稱相同。

實體組只應用於事務,並且應儘可能小,因爲實體組的更新限制爲每秒大約1次。

電影數可以從1-50000。在某些時候,我想要取得 他們全部。執行鍼對單個實體組或多個實體組的查詢會更快嗎?

實體組不會影響此查詢的速度 - 無論哪種方式,查詢都將首先在索引中查找實體,然後獲取它們(並行)並將它們返回給您。

請記住,無論您做什麼,獲取50,000個實體的速度都會變慢。如果可以,避免這樣做。

+0

http://khaidoan.wikidot.com/google-app-engine-datastore-entity-group 底部的數字2表示「此外,多個用戶試圖同時更新同一個實體組中的實體將會導致一些用戶重試他們的事務,可能會導致一些用戶無法提交更改,請不要將應用程序的所有實體放在一個根目錄下。「你是指冪等實體嗎?你怎麼提到相同的實體組不會幫助重複條目?是因爲我用我自己獨特的鑰匙嗎? – dnkoutso

+0

@dnkoutso我指的是任何實體組 - 冪等無關。實體組不會幫助重複實體,因爲實體的密鑰名稱在具有相同父實體的其他實體中只是唯一的 - 所以確保跨實體組之間的唯一性與實體組內的唯一性一樣容易。 –