0

我正在建立一个广告分类网站,我想存储每个广告的观看次数的计数,我希望能够在以后按日和月等在图表中显示每个用户和每个用户他们的广告。我只是在努力决定如何最好地实施 mysql 数据库来为每个广告存储潜在的大量数据。

我将为页面视图创建一个表,如下所示,该表将为每个广告的每个视图存储一条记录,例如,如果广告(id 1)有 200 个视图,则该表将存储 200 个记录:

Advert_id(广告的唯一 ID)

date_time(查看日期和时间)

ip_address(查看广告的人的唯一 IP 地址)

page_referrer(推荐人页面的网址)

如前所述,我将为网站的每个成员创建一个功能,以查看每个广告的查看统计图表,以便他们可以查看每个广告的总浏览量,以及他们的广告的浏览量每天都有(在 2 个给定日期之间),以及每个广告每月有多少浏览量。我将通过按 date_time 字段分组来做到这一点。

如果我的网站变得非常大,例如有 40,000 个广告,而每个广告平均有 3,000 次页面浏览量,那意味着该表有 1.2 亿条记录。这太大了吗?生成图表的mysql查询会很慢吗?

您认为上面的表格和方法是存储这些广告浏览统计信息的最佳方式还是有更好的方式来做到这一点?

4

2 回答 2

0

除非您真的需要存储所有数据,否则在查看广告时增加计数可能会更好。因此,每个广告只有一行(甚至是广告的行中的一列)。

另一种选择是将其保存到文本文件中,然后脱机处理,但通常最好在获得数据时处理数据并将其合并到应用程序流程中。

如果您确实需要保存所有这些数据,那么每周轮换日志表(在处理之后)可能会减少无限期存储所有这些信息的开销。

于 2011-11-17T15:39:10.230 回答
0

我正在与每天有 50.000 名独立访问者的网站合作,我和你有同一张桌子。

桌子每天增长约 200-500 MB,但我每天都能清理桌子。

最好的选择是制作第二张桌子,每天统计访客,将结果添加到第二张桌子,然后刷新第一张桌子。

第一个表示例:

  • advert_id
  • 约会时间
  • IP地址
  • 页面引荐来源网址

第二个表格示例(用于图表):

  • advert_id
  • 日期
  • 访客
  • 独特的访客

用于统计 unqiue 访问者的示例 SQL 查询:

SELECT 
    advert_id,
    Count(DISTINCT ip_address), 
    SUBSTRING(Date,1,10) as Date 
FROM 
    adverts 
GROUP BY 
    advert_id, 
    Date

问题甚至不是性能(MySQL ISAM 引擎非常智能和快速),问题是存储如此大的数据。


90% 的统计工具(甚至是谷歌分析或 webalyzer)每天只制作一次图表,而不是实时制作。

非常好的主意是使用函数ip2long()将 IP 存储为 INT

于 2011-11-17T15:45:48.587 回答