【问题标题】:Best database for a Statistics System [closed]统计系统的最佳数据库[关闭]
【发布时间】:2012-03-13 22:52:28
【问题描述】:

我需要构建一个统计系统,但我不知道 MongoDB 是否是最佳解决方案。系统需要跟踪几件事并显示信息。例如类似的事情 - 一个站点,每个第一次访问该站点的用户都会添加一行包含有关他的信息。系统需要尽可能快地存储数据,例如,它会创建一个使用谷歌浏览器查看页面的用户增长图表。此外,如果用户再次访问,则会更新用户已经存在的行中的一个字段(例如一个名为“Days”的字段)。

系统每天需要处理 200,000 次新访问(新记录),20,000,000 次用户再次访问(更新),以及 800,000,000 条 DB 记录。它还需要快速输出数据 - 例如,使用谷歌浏览器等创建每天有多少用户从英国访问的图表。

那么处理这些数据的最佳数据库是什么? MongoDB 会处理得很好吗?

谢谢!

【问题讨论】:

  • 为什么要自己编写而不是使用网络分析软件?

标签: mongodb database-design cassandra redis database


【解决方案1】:

Mongodb 可以很好地进行原子更新和扩展。这正是它的设计目的。但请记住两件事:注意磁盘空间,它可能会很快用完,如果您需要快速统计信息(如区域覆盖范围、流量来源等),则必须预先计算它们。最快的方法是为此构建一个简单的守护进程,它将所有数字保存在内存中并每小时/每天保存一次。

【讨论】:

    【解决方案2】:

    Redis 是一个非常好的选择,前提是您有大量 RAM,或者在多个节点上分片数据的策略。这很好,因为:

    1. 它在内存中,因此您可以进行实时分析(我认为 bit.ly 的实时统计使用它)。事实上,它最初就是为此而创建的。

    2. 非常非常快,每秒可以轻松完成数十万次更新。

    3. 它有原子操作。

    4. 它具有非常适合时间序列的排序集。

    【讨论】:

    • 我会考虑至少在快速报告部分使用 Redis。一切都保留在内存中,因此它不适合一般的流量记录。
    【解决方案3】:

    RDM Workgroup 是一个用于桌面和服务器环境的数据库管理系统,并且还支持内存速度。

    你也可以使用它的持久化特性;您可以在其中管理内存中的数据,然后在应用程序关闭时将这些数据传输到磁盘上,这样就不会丢失数据。

    它基于具有直观界面的网络模型,因此它的可扩展性是一流的,并且能够处理您所期望的大量新访问者。

    【讨论】:

      猜你喜欢
      • 2010-12-05
      • 2010-09-29
      • 2015-04-22
      • 2013-05-09
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      相关资源
      最近更新 更多