我们正计划建立一个广告网络。作为任何正常的在线广告网络,我们将提供广告服务,报道(统计)和一个小的浏览网站的出版商/广告商。
由于应用程序将获得巨大的印象(广告服务)请求,我们的应用程序必须能够快速插入数据来记录印象和点击,记录每个出版商/广告商的印象和点击数量。然后,这些数据将用于监测出版商的印象/点击情况,并生成报告。
现在,我们计划整个系统基于PHP,MySQL (InnoDB),php-eAccelerator,Memcached (仅仅是存储活动广告)。
Problems/Issues
缩放..。
我真的觉得,当我们的流量增长时,我们的应用程序将不会很好地扩展。
MySQL的插入和更新肯定是瓶颈。此外,如何将所有这些分发到多个服务器,以便我们的应用程序可以根据负载进行扩展。
有谁能帮忙提出一个应用程序的结构,特别是用于印象、记录和计算?MongoDB在任何方面都是一个更好的解决方案吗?
任何帮助都将不胜感激。
发布于 2013-04-01 06:48:36
我已经使用MySQL构建了几个大容量的统计收集系统。他们的表现相当好,只要你保持领先的比例曲线,并认真规划。特别是,如果您正在执行大量的INSERT或UPDATE查询(繁重的写操作),您将需要保持较小的行大小,例如使用来自查找表的INT (而不是VARCHAR列),并注意索引的大小。
始终使用大量的测试数据来模拟您的模式。把它滥用到断点,修复它,再一次滥用它。你想看烟还是不够努力。记住,硬件产生了巨大的差异,所以要小心使用尽可能接近部署目标的东西。例如,如果您正在执行繁重的写操作,您的SSD笔记本将在RAID10设置中使用15K企业驱动器的服务器打开大门。
话虽如此,你可能想看看Redis。它不是关系数据库,但对于诸如“将一个添加到列X”或“为Z间隔提供Y计数”之类的操作,它比MySQL快几个数量级。
https://stackoverflow.com/questions/15738875
复制相似问题