2015-12-17 211 views
0

我想在我的MySQL數據庫中創建一個表,點擊數據存儲到我的日常基礎上的帖子,我拿出的是這樣的:數據庫表結構

ID | post_id | click_type | created_date 
1 1   page_click 2015-12-11 18:13:13 
2 2   page_click 2015-12-13 11:16:34 
3 3   page_click 2015-12-13 13:24:01 
4 1   page_click 2015-12-15 15:31:10 

對於本存儲類型我可以獲得2015年12月郵政編號1獲得的點擊次數,甚至我可以在01-11下午12月15日獲得郵政編號的點擊次數。但是,假設我每天獲得2000次點擊,這意味着它每天將創建2000行,這意味着每月60萬和每年720.000。

是在我腦海中的另一種方法是這樣的存儲行每交一天,如果在這一天更比點擊它會增加計數

ID | post_id | click_type | created_date | count 
1 1   page_click 2015-12-11  13 
2 2   page_click 2015-12-11  26 
3 3   page_click 2015-12-11  152 
4 1   page_click 2015-12-12  14 
5 2   page_click 2015-12-12  123 
6 3   page_click 2015-12-12  163 

在這種方法中,如果每個頁面每天至少點擊一次(意味着創建行),每天將產生1000行(假設我有1000個帖子),每月30,000個,每年360.000個。

我在尋找如何存儲這些統計信息的建議,以及是否想獲得每日點擊統計信息。我對這種表現有些擔憂(當然這對於大數據人來說並不重要:D,但是對於我缺乏經驗感到抱歉)。如果2-3年後該表中有超過100萬行,你認爲這樣可以嗎?哪一個是你會對我更有效?

+0

[_Summary Tables_](http://mysql.rjweb.org/doc.php/summarytables) –

回答

2

每年72萬條記錄不一定是很多數據。一種選擇可能不用擔心。需要考慮的可能是點擊數據有多長時間。如果一年後你不再真正關心,那麼你可以使用歷史數據清除協議來刪除比你關心的數據更早的數據。

如果你擔心存儲大量數據,你不想抹殺歷史,那麼你可以考慮預先計算您的彙總統計數據,而是存儲您的交易細節他們。

這樣做的問題是,你必須事先知道什麼時間的最小分辨率將是你會繼續關心。另外,如果你的動機是節省空間那麼你必須小心,你的總結數據不會比原來的交易佔用更多的空間。如果您以多種分辨率存儲彙總數據,這很容易發生,就像在數據倉庫安排中一樣。

1

這似乎是對的rrdtool(http://oss.oetiker.ch/rrdtool/)具有良好的應用。在這裏,您可以指定不同的時間間隔,如若​​幹決議:

  • 平均5分鐘1天
  • 平均30分鐘1周
  • 平均2個小時1個月
  • 平均1天1年

等,這也經常用於圖表。通常這與rrd-files一起使用,但它也可以基於mysql與rrdgraph_libdbi