2012-02-09 133 views
0

我没有处理很多记录的经验。以前,我使用MySql来存储文章,评论和其他简单的数据。现在我需要在Ruby On Rails中编写一个应用程序,它每分钟都会向数据库推送数十条记录。如何有效地在数据库中存储多个数据?

此应用程序将要观看一些网站并测量他们的一些参数。该网站将全天候收看。如果我想观察100个网站,我每天都会在我的数据库表中添加约144000(100 * 60 * 24)个新增记录。

我不想只是将它们存储在数据库中,而且还与他们合作,合并的结果,图表等

我猜想,这是不是很明智,以保存这些记录,如在博客评论系统。我应该存储没有任何“花哨”解决方案的数据吗?

回答

2

我会建议你使用MongoDB,我目前有几个它运行存储数百万文件的实例。与通常的关系模式相反,您可以使用MongoDB对子文档的支持。

MongoDB是一个NoSQL数据库,但它非常易于使用,并且如果您熟悉数据库和日常OO,就可以开始使用。

MongoDB中有最流行的语言,包括Ruby,所以你可以安装Ruby的驱动程序(假设这是你想用什么)通过使用宝石运行以下命令司机:

gem install mongo 

如果运行Debian/Ubuntu简单isntall mongodb与以下内容:

apt-get install mongodb 

这应该让你开始。

根据每个记录的大小,可以采用各种不同的设计,MongoDB目前每个文档有16MB的限制,所以这是您需要注意的事情。

我想有一个集合命名的网站,用于存储有关您正在监视网站的基本信息(名称,网址,参考客户端,...)

然后有将被用来存储其他集合你的统计数据,可以称为“统计数据”,我会将每个子文档(每分钟的统计数据)存储在另一个文档中,这些文档将保存一天的数据。

所以在统计每个文件将是这样的:

{ 
    _id : X, 
    website_id : STORE_THE_ID_HERE, 
    timestamp_start : PUT_THE_TIMESTAMP_WHEN_YOU_START_MONITORING_HERE, 
    timestamp_end : SAME_AS_ABOVE_REALLY, 
    stats_count : A_DENORMALIZED_COUNT_OF_STATS 
    stats : [ { views : X, clicks : X2, ... }, 
     ... 
    ] 
} 

希望,让你开始,我想如果你愿意试一试的MongoDB完全符合您的要求。

+0

这个答案对我来说听起来很棒。我会试一下! – Arti 2012-02-09 18:46:15

相关问题