我基於成就創建網站,並將成就分爲50個組。每個小組都有500個成就。完成任務後,我會在數據庫中記錄完成日期。我總是跟蹤每個小組的進度。例如:跟蹤Web應用程序數據庫中的進度或級別的正確方法
Group 1: 5/500
Group 2: 89/500
Group 3: 21/654
Overall: 115/1654
我的問題,它是一個不好的做法來計算從頭這些進度報告所有的時間,或者我應該有一個存儲這些進步另一個表,我現在,然後更新它的每一個?
我基於成就創建網站,並將成就分爲50個組。每個小組都有500個成就。完成任務後,我會在數據庫中記錄完成日期。我總是跟蹤每個小組的進度。例如:跟蹤Web應用程序數據庫中的進度或級別的正確方法
Group 1: 5/500
Group 2: 89/500
Group 3: 21/654
Overall: 115/1654
我的問題,它是一個不好的做法來計算從頭這些進度報告所有的時間,或者我應該有一個存儲這些進步另一個表,我現在,然後更新它的每一個?
創建一個跟蹤個體成就並隨時計算它們的活動表。與此相關的美妙之處在於,如果您改變計算成就的方式,則根本不需要觸摸原始數據
如果這變得太慢,那麼您可以創建一個成就跟蹤表,以計算成就並存儲它們定期進行查詢。
我相信你想知道你是否應該Cache你的輸出與否。這真的取決於你的應用程序。
有緩存的各種策略,爲您的一種應用(我只是這裏假設你有多個「對象」,可以讓這些成就的集合),我寧願在某些無效緩存事件。就像對象x獲得成就時一樣,此「事件」會使緩存失效。
輸出代碼首先查詢緩存,並且只有在無效時才執行重建它的代碼。這確保輸出始終有效,而不是每x小時重新構建所有緩存。
意思是一直計算它的現場? – rvk 2012-03-02 08:40:24
最初,您可以一直在現場進行計算。但是,如果速度變慢,那麼您可以每天計算一次,並將計算結果保存在一個單獨的表中,您可以使用它來顯示進度報告 – 2012-03-02 08:43:26