gpt4 book ai didi

mongodb - 我可以考虑使用哪些解决方案/模式来存储数百万原始数据?

转载 作者:可可西里 更新时间:2023-11-01 11:22:33 27 4
gpt4 key购买 nike

寻找有关存储原始数据的意见。属于“跟踪任何事物”类别的数据类型。主要用于内部分析驱动方向、测试新功能等。

存储数据非常简单。只需将其转储到日志文件中,不需要数据库。另一方面,如果你想对其进行复杂的分析和数据挖掘,那么数据库是有帮助的。

所以我在考虑将原始数据存储在 Redis 中。 Redis 的写入速度很快。不适合存档。非常适合临时数据。如果需要,我可以写入 Redis,然后将结果集存档以供将来分析。

归结为聚合成更易读/分组的格式。像 Postgres 这样的 RDBMS 就足够了。但是,我正在考虑使用 MongoDB 的文档结构。加上聚合框架,非常适合读取。

我可以批量聚合来自 Redis 的原始数据,也许是在 cron 作业或工作进程中,周期性地。

所以这是一个例子。我非常喜欢 Mongodb 的聚合部分。我可以考虑使用哪些其他设置/解决方案来存储数百万个原始数据?这方面的一些最佳做法是什么?

最佳答案

Storing data is pretty easy. Just dump it into log files, no need for a database. On the other hand, if you want to perform complex analysis and data mining on it, then a database is helpful.

这是部分正确的。数据库绝对不错,但如果您想对大数据进行繁重的分析查询,Hadoop 也是一个非常好的选择(Pig 或 Hive 使这很容易做到)。我玩过 Mongo 的聚合框架,但对它的喜欢程度不及在 Hadoop 上使用 Pig/Hive。它也没有那么大的用户网络。

因此,此处的答案在很大程度上取决于您的用例。您想(半)实时地进行哪种分析,以及您希望以后批量或手动进行哪种分析?

根据您的帖子,听起来您主要是想稍后根据具体情况进行分析。为此,我会 100% 使用像 Kafka 这样的日志记录框架。或 Fluentd在数据传入时获取数据并将其流式传输到不同的地方。这些框架都为移动传入的数据提供并行性和冗余性。

对于接收器,我会使用 HDFS 或 S3 进行冷存储,以便稍后进行批处理。通过这两者,您可以获得比 Hadoop 更高的冗余度和可用性。对于实时处理,如果您需要,我会使用 Storm .您也可以随时向 Mongo 添加额外的接收器,例如,如果您也想存储到数据库中。这是关于日志记录框架的最好的事情之一:您总是可以很容易地添加更多的接收器和更多的机器。

Redis 有很多很棒的用例——尤其是当您需要缓存或对简单数据结构进行真正快速的操作时。除非我误解了您的需求,否则我认为 Redis 在这里不会特别有用。

Mongo 可能对您很有用,如果除了进行某种聚合的分析查询之外,您还想查询特定项目,或者您希望非常快速地运行查询(预计 Hadoop 查询不低于30 秒——即使是简单的事情)。在这种情况下,就像我提到的那样,您只需为 Mongo 添加一个额外的接收器。如果不确定是否需要,您可以随时添加。

关于mongodb - 我可以考虑使用哪些解决方案/模式来存储数百万原始数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16508650/

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