哪个数据库架构师最适合网站/页面统计计数

时间:2013-07-22 12:04:57

标签: php mysql sqlite mongodb redis

我已经尝试过MongoDB和Redis以及我相信的......这些数据库只有当你有一个良好的硬件群集时才会有用。

我的问题是,我必须计算一些视频内容

  • 观看/独特视图/地理位置/浏览器/播放时间等。
  • 评论数量
  • 股数

有很多写作,我在我的主数据库中每小时后更新数据,所以只有一个读取(每小时每个视频)。网站上每时每刻都有大约(最少)5000名访客,我必须继续跟踪。我使用Redis,redis工作得很好,但我真的很担心它的持久性,我丢失了大约4倍的数据,数百万的视图重置。 Redis非常好,但你需要有一个集群,这样如果一台服务器出现故障,总会有另一台服务器备份它。 MongoDB运行缓慢或可能是我无法正常使用它。

我的问题是

我现在可以负担1个统计服务器,仅用于统计数据。

  • 4x SSD,24 Gig Ram,双四核2.4 xeon

使用此配置,哪个数据库模型最适合统计计数考虑每秒1000次写入。我不介意使用SQLite。或许需要一个建议。帮我决定。

我将用PHP编写代码。

2 个答案:

答案 0 :(得分:1)

您是否考虑过仅将redis用作排队服务器?

这就是我们管理stats系统的方法:一个触发事件写入redis服务器,我们有一个node.js守护进程,每隔几分钟检查一次redis中的新行,并将整个新行发送到“经典”SQL服务器(在我们的例子中,我们有两个sql server:一个用于事件和统计信息,另一个用于通知系统)。

进入Sql服务器的数据在晚上由cron脚本推送的另一个node.js脚本聚合(按时间聚合:当天的统计数据,一周的统计数据,当月的统计数据等)。

答案 1 :(得分:0)

相信 SQLite会为这么多写作而烦恼。在我看来,Redis是一个不错的选择。

我不是Redis的高级用户,但我已经阅读了一些有关它并使用了几次。你不应该遇到持久性问题。 Redis能够将数据保存到磁盘:明确(即命令)或每X秒。

然后,您可以将Redis文件备份到其他服务器,以确保不会丢失太多。如果每小时保存到磁盘,则不会丢失超过1小时的数据。

相关问题