2013-11-04 60 views
0

我創建一個谷歌應用程序引擎應用程序,中有一類用戶 - 時間軸的(如Facebook或Twitter),它由一系列按時間順序排序的事件,用數據存儲區
但是,我無法想出一些有效的方法。
在本方案中,我定義的實體:在GAE創建活動時間線數據存儲

實體:活動: -
- 標識
- 詳細信息...
- ...
- 時間戳

這是一種方式所以我可以索引並得到在一些排序訂單,根據時間戳活動?
我正在與Java和使用Objectify進行數據訪問。

回答

0

規則是:如果您要使用屬性查詢/訂購,則需要對其進行索引。 我認爲這很簡單,你在做什麼。

問題是:你還想要什麼?性能是一個主要需求? (可能,因爲你的應用程序似乎面向用戶)。

如果您只需要記錄用戶活動並檢索它,我可能會建議您將您的「活動」實體置於父實體「用戶」或「用戶活動」下。

  • UserActivity(鍵名=用戶ID)
    • 活動(ID,細節,時間戳[索引])

這樣,你就可以使用運行祖先查詢您的用戶的ID來檢索他的所有帖子。 唯一的缺點是它會限制你在這個實體組上每秒寫一次(基本上是「所有的用戶活動」)。

+0

謝謝@Michael。可能是這種技術的混合會做! –

+0

我會小心這樣做,因爲它違背了Google的最佳實踐: 「不要索引具有單調遞增值的屬性(例如NOW()時間戳)。維護此類索引可能會導致影響雲數據存儲延遲的熱點高讀寫率的應用程序。「 https://cloud.google.com/datastore/docs/best-practices#indexes –