1

我们计划创建一个广告网络。与任何普通的在线广告网络一样,我们将为发布商/广告商提供广告服务、报告(统计)和一个小型浏览网站。

因为应用程序会收到大量的展示(广告投放)请求,我们的应用程序必须能够快速插入数据以记录展示次数和点击次数,记录每个发布商/广告商的展示次数和点击次数。然后,此数据将用于监控来自发布商的印象/点击并生成报告。

目前我们已经计划整个系统基于 PHP、MySQL (InnoDB)、php-eAccelerator、Memcached(仅用于存储活动广告)

问题/问题

缩放...

我真的觉得当我们的流量增长时,我们的应用程序不会很好地扩展。

MySQL 插入和更新肯定会成为瓶颈。还有如何将这一切分发到多个服务器,以便我们的应用程序可以根据负载进行扩展。

任何人都可以帮助提出应用程序的结构,尤其是印象记录和计算吗?MongoDB 会是一个更好的解决方案吗?

任何帮助将不胜感激。

4

1 回答 1

0

我已经使用 MySQL 构建了几个大容量统计收集系统。只要您通过仔细计划保持领先于缩放曲线,它们的性能就相当不错。特别是,如果您正在执行大量INSERTUPDATE查询、大量写入,则需要保持行大小更小,例如使用INT查找表而不是VARCHAR列,并注意索引的大小得到。

总是,总是用大量的测试数据来模拟你的模式。滥用它到崩溃点,修复它,然后再次滥用它。你想看到烟雾,或者你不够努力。请记住,硬件有很大的不同,所以要小心使用尽可能接近部署目标的东西。您的 SSD 笔记本电脑将在 RAID10 设置中使用 15K 企业驱动器的服务器关闭大门,例如,如果您正在执行大量写入。

话虽如此,您可能想看看Redis。它不是一个关系型数据库,但它比 MySQL 快几个数量级,例如“在 X 列加一”或“给我 Z 间隔的 Y 计数”类型的操作。

于 2013-04-01T06:48:36.790 回答