0

我已经尝试过 MongoDB 和 Redis 以及我认为的……这些数据库只有在你拥有一个良好的硬件和集群外的情况下才有效。

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

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

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

我的问题是

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

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

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

我将用 PHP 编写我的代码。

4

2 回答 2

1

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

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

进入 Sql 服务器的数据在夜间由另一个由 cron 脚本启动的 node.js 脚本聚合(按时间聚合:当天的统计数据、每周的统计数据、每月的统计数据等)。

于 2013-07-22T12:15:48.833 回答
0

相信SQLite 会在如此多的写入中挣扎。在我看来,Redis 是一个不错的选择。

我不是 Redis 高级用户,但我已经阅读了一些关于它的内容并使用了几次。你所面临的持久性问题不应该发生。Redis 具有将数据保存到磁盘的能力:无论是显式地(即,根据命令)还是每隔 X 秒保存一次。

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

于 2013-07-22T12:18:41.347 回答