0

我真的想在設置我的模型/實體時突破我的RDBMS思維集。我有一個關注性能的激光,所以我想這樣做。我有三個不同的事情,我需要型號:GAE JDO - 建立這些關係的正確方法是什麼?

事件 - 發生在一個至今,已邀請到它的人(S),具有與它

人相關帖子(S) - 有一個字符串ID,已一個名字

後 - 一個人將發佈一個事件。我需要保持發佈者的職位與發佈郵件的事件之間的關聯。

我首先想到的是去像

class Event 
    @PrimaryKey 
    Long id; 
    List<Key> personList; 
    List<Key> postList; 
    String name; 

class Post 
    @PrimaryKey 
    Key id; 
    String details; 
    Key personWhoPosted; 

class Person 
    @PrimaryKey 
    Key id; 
    String fbId; 
    String name; 

主要查詢的應用程序加載一個特定的人相關聯的所有活動。

我已經完全實現了這種方法,但是一旦數據庫開始充滿來自我的beta測試人員的適量數據,加載主列表的動作就會變慢,因爲存在很多查詢和GET操作。對於每個事件,我不得不爲Posts創建另一組查詢/獲取。對於每篇文章,我不得不爲與其關聯的Person進行一堆其他查詢/獲取,等等。

我使用這個視頻作爲我的主要參考: http://www.youtube.com/watch?v=AgaL6NGpkB8&list=WLB3249928DA0FA4AF&feature=mh_lolz

什麼是建立這些關係的最好方法?我正在考慮將所有內容壓縮到事件中,以便將初始負載最小化爲一個查詢和一組並行獲取。

+0

沒有單一的「正確」的方式。取決於應用程序需要執行什麼操作以及它的主要操作類型有多種方法。我沒有在任何地方使用Keys ......你可以使用該插件的v2獲得相同的結果,但使用真正的類,你也可以使用RDBMS,然後看看O-O。也許定義你的操作,以及每個操作引起的數據庫操作......然後人們可以理解你的情況 – DataNucleus

回答

1

這裏沒有發佈我的完整更新模型,我用來「正確」的兩個驅動因素是:使用正確的鍵類型,並使用列表屬性爲數據建模索引。這裏有兩個很好的推薦,我發現了這一點:

澄清哪些類型的實體鍵: https://developers.google.com/appengine/docs/java/datastore/jdo/creatinggettinganddeletingdata#Keys

列表屬性作爲一種高效和高性能的方法來檢索數據: http://novyden.blogspot.com/2011/02/efficient-keyword-search-with-relation.html

相關問題