网站来源统计数据库表设计
最近公司有个需求,就是统计用户从哪个地方跳转到我们网站的,我目前的实现是,在进入首页前获取到来源网址,然后写入数据库,表设计如下:
CREATE TABLE
gao_referer_count
(
id
bigint(20) NOT NULL AUTO_INCREMENT, 自增长ID
referer_url
varchar(80) NOT NULL, 来源网址
referer_path
varchar(255) NOT NULL DEFAULT '', 请求路径
referer_query
varchar(255) NOT NULL DEFAULT '', 请求参数
access_time
datetime NOT NULL, 请求时间
access_ip
varchar(80) NOT NULL, 请求IP
PRIMARY KEY (
id
)
) ENGINE=InnoDB AUTO_INCREMENT=85 DEFAULT CHARSET=utf8;
基本上过1个多小时就写入了1W多条数据,因为本人对数据库表的设计和优化也只略懂皮毛,所以表也设计的比较耿直和简单,因为怕时间长了会出现性能问题,所以在这里请教各位有什么其它设计思路和优化方案
平澤姊妹最高
9 years, 5 months ago
Answers
- 统计表和业务表的设计,其实有很多不同, 最大的不同就是业务的查询相对刻板,简单。 数据类型也比较好确定。 但是统计表查询就复杂了很多,而且变化性非常强。
- 针对这个表,如果你只要统计url相关信息,我觉得是设计上没有太大的偏差,我赞同你的设计。 但是如果你要把“用户从哪进入”和“用户后续行为”看成一个完整流程,并分析不同渠道,不同转化率或不同的行为特征的话。那么这个表显然是单薄了很多,你至少需要思考uid的关联问题。
- 这个表本身也许就是最大的问题。一小时1w多条还好,数据量和增长速度都很小, 使用分表技巧和索引技巧可以解决很多后续查询问题。 但是就这个需求而言, 本身就应该是日志级的处理方式。 而是不是关系型数据库的处理方式。 把这种类似日志的原始数据存在mysql数据库里面,在大并发的前提下,也许本身就是最大的问题
黄博土爱健康
answered 9 years, 5 months ago