2012-04-27 22 views
1

我正在研究Google應用引擎的數據存儲,並且正在開發一個管理事件的應用。 我有2個實體:應用引擎數據存儲,按fk屬性排序的查詢

- user 
- event 
    - attribute eventDate 

用戶可以按照一個或多個事件,所以我創建鏈接表

- UserEvent 
    -User key 
    -Event key 

我的問題是,我想有事件的列表其次是由eventDate定購的用戶。

我該怎麼辦?

我發現3的解決方案,但我不喜歡任何人......

  1. 查詢上的所有事件排序,然後遍歷並僅選擇 一個與對UserEvent (我一個occurency不喜歡,因爲 可能我會有事件千元,但用戶只跟隨 幾..)
  2. 查詢所有用戶事件(由USERKEY過濾),並把結果 有序列表中(我不喜歡,因爲我必須在加載所有活動一次,無分頁)
  3. 添加表UserEvent屬性EVENTDATE (我不喜歡,因爲 如果事件有3000個追隨者我要做3000更新中...)

謝謝你 Alessandro

+0

或者,如果您總是查詢1個給定用戶的事件,則可以考慮在用戶實體中存儲事件的ListProperty。 – proppy 2012-04-27 11:10:20

+0

mmm,沒錯,我查詢單個用戶。但如果我將所有後續事件都放在用戶中,用戶實體可能變得太大了? – Alessandro 2012-04-27 11:58:57

+0

新增了一個正確的答案 – proppy 2012-04-27 12:11:05

回答

0

如果你真的不喜歡這種非規範化,可以考慮使用CloudSQL。

+0

我不確定,我喜歡反規範化,但我總是在關係數據庫中工作......我處於創建應用程序的初始階段,所以我可以更改數據庫的結構。你對我的解決方案有什麼看法?會有更好的東西? – Alessandro 2012-04-27 12:30:56

+0

什麼對你更好? – 2012-04-27 12:43:54

+0

關係或非關係?我不知道,我總是使用關係,但我對非關係很好奇(如果所有那些擁有大量數據的大數據都使用非關係數據,我認爲這很好...)。順便說一下,我正在開發應用程序引擎,所以我認爲沒有選擇...在解決方案更好意味着在查詢中不那麼誇張,並且更堅實... – Alessandro 2012-04-27 13:20:34

0

如果您總是查詢給定用戶的事件,則可以考慮在用戶實體中存儲事件的ListProperty。

- user 
    - attribute eventList []key 

您將受到實體的最大大小(當前爲1MB)的限制,如果列表被索引,則您的限制爲5000個條目。

+0

5000實體很多。 ..如果我的應用程序將有一些用戶跟隨5000個事件,我將非常高興:-)我會考慮它...謝謝 – Alessandro 2012-04-27 12:35:22

相關問題