2
我正在研究一個統計項目,我們有興趣在網站上記錄關於不同列表的不同活動。這是收集點擊事件的好方法嗎?
一個事件的例子是「點擊標誌」,「點擊更多信息」等,每個事件將由一個數字表示,我打電話eventid。
每天需要存儲大約2萬個事件,所以5年後,這個表格中會有大約18,000,000行。
這裏是我的想法:
CREATE TABLE IF NOT EXISTS `stattableindexed` (
`id` int(10) unsigned NOT NULL auto_increment,
`lid` int(10) unsigned NOT NULL COMMENT 'Listing ID',
`serviceareaid` int(10) unsigned NOT NULL COMMENT 'Service Area ID',
`domainid` int(10) unsigned NOT NULL COMMENT 'Domain ID',
`bizgroup` int(10) unsigned NOT NULL COMMENT 'Business Group',
`eventid` int(10) unsigned NOT NULL COMMENT 'Event ID',
`eventtype` int(10) unsigned NOT NULL COMMENT 'Event Type',
`count` int(10) unsigned NOT NULL COMMENT 'Count of Events',
`timeunitid` bigint(10) unsigned NOT NULL COMMENT 'Time units',
PRIMARY KEY (`id`),
KEY `timeunitid` (`timeunitid`),
KEY `lid` (`lid`),
KEY `serviceareaid` (`serviceareaid`),
KEY `domainid` (`domainid`),
KEY `bizgroup` (`bizgroup`),
KEY `eventid` (`eventid`),
KEY `eventtype` (`eventtype`),
KEY `count` (`count`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
TIMEUNIT將是一個Unix紀元時間,一天,所以我只是保持同類事件的次數,每天。
這樣我可以查詢表中的一段時間。
您認爲這是一個好主意嗎? 如果不是什麼更好的做法呢?
首先,沒有使用InnoDB的原因?你計劃在這張桌子上跑什麼樣的查詢? – DTest
我沒有想過使用InnoDB,它有什麼主要區別?我將運行的查詢將基於根據用戶輸入在什麼日期範圍內列出哪些事件發生了什麼事件,例如,在過去4個月內點擊了多少次列表的更多信息按鈕。 – Yasser1984
這張桌子不算小,所以我會盡量標準化。所以事件類型可以在帶有關鍵標識符的表格中取出。也可以使用盡可能最小的類型(smallint而不是int,例如eventid)。 – momobo