2010-02-23 79 views
2

我的應用需要基於各種用戶活動的每日報告。我目前的設計並沒有總結數據庫中的每日總計,這意味着我必須每次計算它們。在GAE上創建歷史報告的最佳設計

例如,顯示前100名用戶根據他們在某一天提交意見書的數量的報告。

  1. 對於這樣的報告如果我有50,000用戶,創建每日報告的最佳方式是什麼?
  2. 如何使用此類數據創建月報和年報?

如果這不是一個好的設計,那麼如何處理這樣的設計決策時報告的指標在DB設計和時間不明確,顯然我們已經有了有限的參數龐大的數據(字段)。

請指教。

回答

0

理想情況下,我會建議你在所有需要上報的項目可能會以最小化查詢的,必須予以數據庫上進行量預計算這樣的方式來創建你的數據模型。聽起來你可能無法做到這一點,並且無論如何,這是一種可能變得脆弱和難以改變的方法。

隨着1.3.1版SDK的發佈,您現在可以訪問query cursors,並且這使得處理基於大量用戶的報告的處理變得容易很多。您可以使用appengine cron jobs將工作放在task queue上以計算報告的編號。

因爲你的任務的任何給定的調用是不可能在AppEngine上允許它運行的時間來完成,你必須從一個實例通過查詢光標移動到下一個,直到它完成。

這種方法可以讓你適應更改數據庫和報表需求,你可以錄製任務是很容易計算的報告值。

+0

謝謝您的回答,我會看着你的引用。 – charming30 2010-02-23 20:25:09

+0

感謝您的幫助。 – charming30 2010-07-18 07:44:50