首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于记录PPC性能和日常工作的MySQL数据库架构

用于记录PPC性能和日常工作的MySQL数据库架构
EN

Stack Overflow用户
提问于 2011-06-04 01:08:22
回答 1查看 773关注 0票数 0

我正在努力完成一个网站的广告系统的重建。新的PPC模型的报告/日志记录端提供了一些困难,我发现自己迷失了更好的想法。有问题的表格将被称为“报告”,并将包含系统中每个广告的ad_id、印象、点击量和CTR%,每天滚动一年。

简单的解决方案如下所示

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS `reports` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ad_id` int(11) NOT NULL,
  `impressions` int(11) NOT NULL,
  `clicks` int(11) NOT NULL DEFAULT '0',
  `ctr` float(6,3) NOT NULL DEFAULT '0.000',
  `report_date` date NOT NULL,
  PRIMARY KEY (`id`)
)

当你查看一周中的几天时,问题就出现了。我希望能够收集每个广告商的数字,并显示每天的报告。我们将有多个广告商,每个广告商都有多个广告。最明显(也最荒谬)的选择是为一年中的每一天建立一个表。

如果我使用"report_date“列,我的reports表最终会变得一团糟。在这种情况下,控制此数据的更新将包括常见的:

代码语言:javascript
复制
if there is no record for today - INSERT new record
else UPDATE existing record for today

我在每次点击时都会用PHP计算来更新这个记录。但明年,还会继续同样的过程吗?我想这是可行的,但我想知道是否有更好的方法来做到这一点。我宁愿有一个完整的滚动年--在没有广告的日子里用零填充。使用这个系统的客户将能够在任何时候重新填充他们的银行,并重新恢复旧的广告,这些广告永远不会从系统中删除。这就是滚动年模型背后的原因。

感谢您的帮助,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2011-06-04 21:16:07

听起来你需要一个数据仓库。在事务性系统中存储历史信息会让您一直感到头疼。在事务系统中查询/更新行将非常慢。我的建议是去掉report_Date,让表保持原样。

我的建议是维度模型,而不是关系模型。创建一个用于报告的数据库,并在此数据库中使用如下所示的快照事实。听起来还会有其他一些有趣的维度。这将允许用户通过url或day查看点击/ctr。你进入这个巨大的事实是基于优化的索引键。谷歌维度建模以获取更多信息。组合历史/报告/事务通常会导致糟糕的设计。如果您需要任何有关如何填充该内容帮助,请发表评论。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6230332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档