2010-06-07 122 views
1

我們假設我們有高流量項目(管網站),應該使用此選項提供排序(NOT IN REAL TIME)。視頻數量約爲200K,關於視頻的所有信息都存儲在MySQL中。每日視頻觀看次數約爲1.5KK。作爲文書我們有硬盤驅動器(文本文件),MySQL,Redis如何存儲和收集數據,以挖掘過去24小時,過去7天,過去30天,過去365天最多查看的信息?

Views 
top viewed 
top viewed last 24 hours 
top viewed last 7 days 
top viewed last 30 days 
top rated last 365 days 

我應該如何存儲這些信息?

第一個想法是將所有訪問記錄到文本文件(每小時單個文件,例如visits_20080101_00.log)。在每個小時的開始計算前一小時的每個視頻的視圖,並將這些信息插入到MySQL中。然後重新計算總計(最近24小時)並更新表格中的統計數據。在每天開始時,我們必須做同樣的事情,但最近7天,最後30天,最後365天重新計算。這種方法對我來說似乎很差,因爲我們必須存儲每個視頻最近365天的信息才能進行正確的計算。

有沒有其他好方法?可能,我們必須爲此選擇另一種工具?

謝謝。

+0

我假設您使用的文本文件,以避免加載MYsql。 – rerun 2010-06-07 15:12:57

+0

是的,確切地說。我可以使用INSERT或INSERT DELAYED,但它會導致MySQL高負載。 – Kirzilla 2010-06-07 15:30:50

回答

0

如果絕對精度不重要,您可以總結超過2個單位的信息。

您將存儲最近1-2小時的單個視圖,最後1-2天的每小時視圖(每小時一個值)以及每日視圖(每天一個值)。

「1-2」表示您存儲,直到您有兩個單位已滿,然後總結早些時候。