我有一個MOdelA,它可能具有數百萬個條目或更多條目,ModelB可能不會超過數據存儲中的300000個條目。如何映射AppEngine數據存儲中兩個巨大集合之間的關係
我會爲MODELA(1左右 - 100秒)來創建主要新項目,每個MODELA的實體將屬於我需要能夠查詢所有的ModelB
描述的類別之一ModelA實體(按創建時間排序)屬於ModelB實體之一。
我的問題是我不知道如何映射關係。我不能只用父母,因爲在路上會有模型A可能屬於的MOdelC。
任何想法哇映射它在AppEngine?
在常規的SQL數據庫中,我將創建一個數據透視表,將ModelA映射到ModelB,稍後再將另一個數據透視表映射到ModelA到ModelC。然後我可以查詢數據透視表給我舉例說明屬於的所有ModelAs讓我們說ModelB id 5.
非常感謝您的任何建議!
UPDATE:
我想解釋我的問題是什麼,我試圖做一個例子的最佳方式。
可以說我有消息和城市實體。每個消息由用戶發佈關於城市(這些是我的ModelA和ModelB)。現在,用戶可以根據自己的喜好添加儘可能多的城市。
我必須設計數據模型,用戶只能看到他們在收藏中的城市(按日期排序)的消息。因此,藤原謙男提出的例子不起作用。
我會來查詢是這樣的:
db.GqlQuery("SELECT * FROM Message WHERE city IN (1, 2, 3, 4, ....)
這不能擴展,因爲用戶可以有很多的城市加入到收藏夾。並且因爲在AppEngine文檔中他們說:
包含不等於或IN運算符的單個查詢限制爲不超過30個子查詢。
,並在IN(...)每個條件的每個IN查詢生成多個==查詢
謝謝你的任何建議!
非常有趣的閱讀,非常感謝。不幸的是,它不能解決我的問題。請參閱我的問題的更新。謝謝! – Ralphz 2012-03-07 01:43:28
我想你可能要存儲密鑰,如User.favoriteCities [City.key,City.key ...]列表。那麼你可能不得不一次爲30個城市的消息運行查詢。這是一個限制,但您可能能夠以某種方式運行多個異步請求來加速它。 – aglassman 2012-03-07 15:25:41