首页 > 试题广场 >

某广告投放系统采用BS结构,其主要用户为广告主,广告主可通

[问答题]

简述:某广告投放系统采用B/S结构,其主要用户为广告主,广告主可通过该广告投放系统在各个网站上投放广告并查看投放效果。该广告系统需要实现如下功能:

1) 用户可向自己账户中加款。

2) 用户可提交广告,广告包括四种形式:文字广告,图片广告,flash广告和对媒体广告。

3) 用户可制定哪些广告在哪些网站上展现,用户可分别广告在制定网站上的点击单价

4) 广告被点击时,直接从用户账户中扣除相应的钱款

5) 用户账户余额不足时,所有广告失效,用户加款后,恢复生效。

6) 用户可查询广告的每日消费情况(点击次数、消费额)、广告在各个网站的消费情况。

要求:1)设计该系统的数据表结构,要求满足上述功能,结构清晰,并尽可能灵活。

2)写出功能6所涉及的SQL语句

3)请分析随着广告主的增加、广告点击次数的增长,系统可能会在哪些方面出项性能瓶颈?你在设计时是如何考虑解决这些瓶颈的?潜在的性能瓶颈还有哪些?

5张表
用户表:ID,用户余额,用户名称
广告表:ID, 用户ID,广告类型,广告标题
网站表:ID,网站名称
网站广告表:ID,网站ID,广告ID,点击单价
网站广告点击表:ID,网站广告ID,点击时间

用户广告的每日消费情况:
select  count(a.id) as 点击次数, count(a.id)*b.点击单价 as 消费额  from 网站广告点击表 a
left join 网站广告表 b on a.网站广告ID=b.id
left join 广告表 c on b.广告ID=c.ID
where c.用户ID=“用户ID” and a.点击时间=>“统计开始时间” and a.点击时间<“统计结束时间”
group by c.ID

广告在每个网站的每日消费情况
同上一个sql差不多,group by的时候加上网站ID

随着广告主的增加会产生什么问题,这个还没想出来。

随着点击次数的增加,会使上述的sql执行的异常缓慢。
解决办法:1、表添加冗余字段,例如:网站广告表添加用户ID、广告ID、在Join之前选过滤网站广告表的数据。
                2、添加点击统计表,分别以小时、天、周等时间段进行广告点击次数和消费额的统计,执行查询的时候,同时从点击统计表读取数据,以减少上述SQL执行的数据量


对于数据量造成的瓶颈,一般使用冗余、分表、预处理的办法来解决

没有想到其他的瓶颈
发表于 2015-07-09 21:21:59 回复(0)
可以设计五张表,分别为广告主表,广告表,网站媒体表,发布关系表,交易信息表。其中发布关系是用来存储广告主在各个网站上发布广告的关系表。交易信息表是交易人充值和消费情况的表,拥有字段为交易人、交易类型、数额、来源、时间。
6的SQL为select 来源, count(点击次数),count(数额) where 交易类型=‘点击消费’ group by 来源

潜在瓶颈显而易见是交易信息表会随着点击数不断长大,方法是定期归档,删除记录。
发表于 2015-07-09 17:10:15 回复(0)