2011-03-20 26 views
1

我需要存儲一些統計信息:某些項目的點擊次數(超過1000項)。 我每天需要存儲的點擊次數: 如:第1天:1234點擊了項目1 第2天:12312個點擊次數第1項 天N:13123個點擊次數第1項如何長時間存儲點擊次數/天數?

我有一個便宜的服務器,所以我需要一個存儲所有這些數據的最佳方式。後來我需要從這個數據生成圖表

任何想法?

回答

2

店個體單擊數據庫每天,隔天運行cron作業究竟會產生總結報告,存放於其他表,由前一日干淨的原始數據(更小的)結果...

編輯: 如果你只想要監控每個項目點擊每天的邏輯結構是:

raport_date - date 
item_id  - reference to table stored info about items 
hits  - number of calculated hits 

一切都取決於什麼報告/圖表,你需要

+0

謝謝,但我還有1個問題:我應該如何設計這個另一張桌子以獲得最佳表演? – coolboycsaba 2011-03-20 19:26:16

2

何不做一個表3列(你可以添加一個PRIMAR如果你願意,還可以加上y欄)。

我看你爲需要執行以下操作:

  1. 姓名的人士稱, 「天」 A柱,用DateTime類型
  2. 姓名的人士稱, 「的itemId」,類型爲int的列,這是你怎麼知道被點擊什麼項目
  3. 姓名的人士稱,「點擊」 A柱,用int類型的,這將是你的櫃檯

因此,可以說我們的桌子被命名, 「點擊跟蹤」。 「插入clickTracking設置day = date_format(now(),」%Y-%m-%d「),itemId = 1,clicks = clicks + 1重複鍵更新點擊次數=點擊次數+1點擊次數+ 1;」

我附上了一些mySQL的例子,主鍵。我發現數據更容易處理,如果我有一個auto_increment字段,但它不是一個要求。

mysql> create table clickTracking (id int unsigned not null primary key auto_increment,day datetime not null, itemId int unsigned not null, clicks int unsigned not null); 
Query OK, 0 rows affected (0.00 sec) 

mysql> create unique index item on clickTracking (day,itemId); 
Query OK, 0 rows affected (0.00 sec) 
Records: 0 Duplicates: 0 Warnings: 0 

mysql> insert into clickTracking set day = date_format(now(),"%Y-%m-%d"), itemId = 1, clicks = clicks + 1 on duplicate key update clicks = clicks + 1; 
Query OK, 1 row affected (0.00 sec) 

mysql> insert into clickTracking set day = date_format(now(),"%Y-%m-%d"), itemId = 1, clicks = clicks + 1 on duplicate key update clicks = clicks + 1; 
Query OK, 2 rows affected (0.00 sec) 

mysql> insert into clickTracking set day = date_format(now(),"%Y-%m-%d"), itemId = 1, clicks = clicks + 1 on duplicate key update clicks = clicks + 1; 
Query OK, 2 rows affected (0.00 sec) 

mysql> insert into clickTracking set day = date_format(now(),"%Y-%m-%d"), itemId = 2, clicks = clicks + 1 on duplicate key update clicks = clicks + 1; 
Query OK, 1 row affected (0.00 sec) 

mysql> select * from clickTracking; 
+----+---------------------+--------+--------+ 
| id | day     | itemId | clicks | 
+----+---------------------+--------+--------+ 
| 1 | 2011-03-20 00:00:00 |  1 |  3 | 
| 2 | 2011-03-20 00:00:00 |  2 |  1 | 
+----+---------------------+--------+--------+ 
2 rows in set (0.00 sec) 

有一些安靜的方法可以做到這一點。我提供了一種可能的解決方案。我更喜歡這種方法,因爲它使得報告變得容易,並且在服務器上具有最小量的存儲。

我會建議製作一個額外的「項目」表,對應itemId這裏。