2014-04-28 129 views
0

我的方案主要有3種數據存儲實體,一種用戶,對象和關鍵字的關鍵字分類。 問題在於對對象和關鍵詞之間的關係進行建模。GAE - 爪哇 - 數據存儲實體

用戶可以創建儘可能多的對象,他們希望和用戶對象的關係可以很容易地ascestor鏈路上實現。
我通過爲任何關係定義實體來建模對象間和用戶間的關係。因爲這樣我就可以擁有我想要的所有粉絲和粉絲,並且關係搜索可以與結果集一起擴展,所以它的效率也很高。

現在我需要對象分類關鍵字。每個對象可以關聯到有限數量的按鍵,而每個按鍵不能具有扇出限制。
如何最有效的方式來實現它們? (時間效率(複雜性,...)和數據庫活性)

第一種方法可以是:分配給每個對象的鍵的列表:
搜索將其結果集比例,所以它不會依賴關係數量和關鍵。

造型既鍵和鍵對象關係,因爲像國米用戶實體的對象間的情況:
搜索將再次與結果集擴展,從而再次不依賴於淨尺寸。

我能考慮作爲比較標準是什麼?

回答

2

如果您在對象實體中放入了關鍵字列表(或其ID),則會產生額外的寫入成本:添加每個關鍵字將導致更新Object實體,需要爲每個實體編寫一個寫入每個索引屬性,包括每個關鍵字的寫入。

如果這種情況很少見,這將是一個小的額外費用,我會推薦它的簡單列表的方法。另一方面,如果更頻繁地添加/刪除關鍵字,則成本將快速增加。

使用Keyword_Object實體可以避免更新對象實體的額外成本,但是您必須維護另一個實體類型,並且您存儲的數據將佔用更多空間(每個關鍵字 - 對象對的額外關鍵字)。

我建議用這些方法的執行會和優化後,當更多的數據是可用的,除非你一定會很快有上百萬的記錄,你已經知道你的數據訪問模式。