【问题标题】:Which database architect is best for website/page stats counting [closed]哪个数据库架构师最适合网站/页面统计数据统计[关闭]
【发布时间】:2013-07-21 03:52:51
【问题描述】:

我已经尝试过 MongoDB 和 Redis,而且我认为 ..这些数据库只有在你有一个良好的硬件和集群外的情况下才是好的。

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

  • 观看次数/独特观看次数/地理位置/浏览器/游戏时间等
  • cmets 数量
  • 股份数量

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

我的问题是

我现在买得起 1 台统计服务器,仅用于统计统计。

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

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

我会用 PHP 编写我的代码。

【问题讨论】:

  • 这里我决定用“Redis”,Redis可以写很多东西。在每个小时的计划。聚合数据将存储在 SQL 中。所以如果有损失,也不会超过一个小时。这就是我将在我的网站上使用的内容。它每天有 70 万访问者,我可以肯定地说 Redis 运行得非常流畅,你甚至不会注意到,但你必须学习其他技术来正确保存数据。干杯!

标签: php mysql sqlite mongodb redis


【解决方案1】:

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

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

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

【讨论】:

  • 这是一个明智的方法,但在这里我想我可以用 Redis 本身进行所有聚合,我基本上每次都会增加大约 20 个键的数据。由于没有读取,Redis 处理写入非常好。从来没有想过将它用作排队服务器,可能会给它一个机会。您如何找到 Redis 持久性?
  • 我们并不真正关心redis的持久性,如果redis服务器崩溃我们只丢失1分钟的数据,所以我在这一点上没有真正好的数据,我知道综合使用情况RDB 和 OAF 保证了数据的非常好的持久性。有关信息,我们的节点守护进程首先聚合 redis 和 Sql 服务器(我们使用 mysql)之间的数据。
【解决方案2】:

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

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

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

【讨论】:

  • 我设置了这样的配置,每 1000 个请求,每 30 秒保存一次数据。还是丢了。最近我们的数据中心“升级时”出现了一个小电源问题。当 Redis 起死回生。它丢失了所有数据。幸运的是,我备份了我的数据库,但仍然建议我如何在保存方面使其数据更加安全。
  • @ArslanCb 我从未尝试让 Redist 持久化数据,因为我的项目不需要它。但是,我读过它可以很好地持久化数据。我能想到的最佳链接是redis.io/topics/persistence,但我想你已经看过了。如果您需要特定信息/提示,也许会提出一个关于 Redis 持久性的新问题:一些有更多经验的人可能会帮助您。
  • 感谢您的 cmets。我认为我们应该在这里结束我们的讨论,选择一个解决方案,即 Redis 作为前端,SQL 作为安全保存的后端。
猜你喜欢
  • 2017-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多