2012-07-30 72 views
0

我想在MySQL數據庫中創建計數器,該計數器存儲特定日期,月份和年份中每個產品的視圖數量。MySQL中的數據庫日計數器

問題是我有2000左右的產品。我想過使用以下模式:

id (BIGINT) 
year (INT[4]) 
month (TINYINT) 
day (TINYINT) 
product_id (INT) 
pageviews (BIGINT) 

與解決方案的問題是,如果在最壞的情況下,每個產品每天都看,我會每天在我的數據庫2000行。乘以36天,我將每月有72,000。

我想知道是否有更好的方法來實現這一點。我認爲每日數據只能作爲應用程序變量(在.NET中開發)和ArrayList保存在內存中。如果我選擇了這個方向,我將會有更少的行/數據,每月2000行。

我真的想保留每日累計頁面瀏覽量。順便說一下,預覽僅用於說明目的,我將存儲不同的數據,但該數據將會非常頻繁地更新。

如果我使用每日專欄,它會經常更新,幾乎每隔2-5秒。我打算通過調用Javascript中的ASP.NET web服務來更新MySQL異步,傳遞product_id並增加計數器+1。這是爲了防止應用程序等待更新發生。

我也想知道估算表的大小。如果我做正確的事:

BIGINT = 8個字節

日期時間= 10字節

INT - 4個字節

^如果我決定去一個DATATIME列,而不是年/月/日

30字節* 2000 = 60,000字節

60KB(約)* 30天= 180KB月

180KB月* 12個月= 2160KB /年

我說得對嗎?

+1

您應該使用'DATE'列來存儲年,月和日。既然你*需要每天每個產品的數據,我不認爲有一個更簡單的解決方案。 – Vatev 2012-07-30 13:25:07

+0

它會更高效,性能更明智嗎? – 2012-07-30 13:39:25

+0

它可能會更有效率,但更重要的是它會讓你的生活變得更簡單:) – Vatev 2012-07-30 14:09:50

回答

0

好的我在數據庫設計中並不是那麼棒,但是我知道那麼多...... 你應該問自己想要在這些2K產品上保存每日點擊多長時間?

如果你想持有他們一個星期,那麼你可以計算它需要多少大小(也是如果你想持有他們一個月)。

如果你想保存它,比如說一個月,那麼你總是可以每個月都創建一個表格,並將日常點擊數據保存到該表格中,然後總結出來,這樣每個表格中只有2K行

或者您可以使用一個「倉庫」表,每個月可以保存所有點擊量,每個月將數據複製到該倉庫表,然後再對每個月進行總結。

如果您希望將這些匹配無限期地保存,那麼就我所知,這是一種方式(不是數據庫設計中的主數據)。

再次,這是你應該做的,如果你想保存點擊一個月。

希望我幫了你, Sagi。