gpt4 book ai didi

mysql - 如何有效地将大量数据存储在DB中?

转载 作者:行者123 更新时间:2023-11-29 08:58:47 26 4
gpt4 key购买 nike

我没有处理大量记录的经验。之前,我使用MySql来存储文章、评论等简单数据。现在我需要在 Ruby On Rails 中编写一个应用程序,该应用程序每分钟向数据库推送数十条记录。

该应用程序将监视一些网站并测量它们的一些参数。这些网站将全天候 24 小时被观看。如果我想观察 100 个网站,我的数据库表中每天将有大约 144000 (100*60*24) 条新添加的记录。

我不想只将它们存储在数据库中,还想使用它们,组合结果、图表等。

我认为将评论之类的记录保存在博客系统中并不是很明智。我应该在没有任何“花哨”解决方案的情况下存储数据吗?

最佳答案

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

MongoDB 是一个 NoSQL 数据库,但如果您熟悉数据库和日常 OO,那么它非常易于使用和入门。

MongoDB 拥有大多数流行语言的驱动程序,包括 Ruby,因此您可以通过使用 gem 运行以下命令来安装 Ruby 的驱动程序(假设您要使用该语言):

gem install mongo

如果运行 Debian/Ubuntu 只是不包含以下 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 非常适合您的要求。

关于mysql - 如何有效地将大量数据存储在DB中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9215788/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com