2012-02-13 37 views
1

我見過類似問題的例子。但是,請允許我問一些我想確認我的理解的更具體的問題。db.Key與App Engine中多對多的ListProperty(具體案例)

我的問題:

  1. 對於db.Key的的ListProperty,如果我可以預見我要存儲密鑰的最大數,有多少我應該超過中的ListProperty存儲與ReferencedProperty相比,db.Key? [一般問題],因爲它不是很清楚,其中App Engine的網頁說,這,

    另外更重要的一點是要避免過於存儲 鍵的大名單中的ListProperty

  2. 比方說,有些用戶可以關注餐廳的活動Feed。因此,用戶可以根據自己的喜好添加儘可能多的餐廳。有用戶模型和餐廳模型。那麼,我相信任何用戶都不會追隨30多家餐館?這使得db.Key的ListProperty成爲理想的解決方案?

回答

2

這裏的考慮有點模糊 - 沒有硬限制,只有總數(編碼)實體不能大於1 MB。 30個鍵完全沒問題。 100仍然可以。在500-1000我會開始擔心。在10,000時,您可能會超過1 MB的限制。

另一個考慮是,如果您希望一次一個地添加鍵到列表中(每次讀取和寫入實體),您最終會到達O(N ** 2)的土地,這將使您的更新開始爬行真的很慢,大概在100到1000之間。

對於所有ListProperties,這些注意事項是相同的 - 密鑰並不特殊(您給出的報價恰好來自專注於ListProperty(db.key)的文章)。

+0

我們非常需要性能,根據您的經驗,您會推薦使用基於上述情況的db.referenceproperty嗎? – MrCooL 2012-03-11 10:52:26

+1

TBH,ReferenceProperty更容易讓你放慢速度,因爲它很容易意外觸發其「自動加載」行爲(這會花費你額外的數據存儲往返)。 – 2012-03-18 04:06:54