统计系统的最佳数据库

时间:2012-03-13 22:52:28

标签: mongodb database-design cassandra redis database

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

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

那么处理这些数据的最佳数据库是什么? MongoDB会处理这个问题吗?

谢谢!

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

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

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

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

  3. 它有原子操作。

  4. 它对时间序列非常有用。

答案 2 :(得分:0)

RDM Workgroup是用于桌面和服务器环境的数据库管理系统,也允许内存速度。

您还可以使用其持久性功能;在内存中管理数据,然后在应用程序关闭时在磁盘上传输数据,这样就不会丢失数据。

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