Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mongodb中生成每日集合是一个好主意吗_Mongodb_Mongoid_Bigdata_Database - Fatal编程技术网

在mongodb中生成每日集合是一个好主意吗

在mongodb中生成每日集合是一个好主意吗,mongodb,mongoid,bigdata,database,Mongodb,Mongoid,Bigdata,Database,为给定日期的数据创建每日集合是否是一个好主意(如果数据太多,我们可以从每天开始,然后移动到每小时)。我们可以在mongodb中创建的集合数量是否有限制,或者是否会导致性能损失(mongodb维护这么多集合是否会造成开销)。大量收集是否会对性能产生不利影响 为了给你更多的上下文,这些数据将更像facebook提要,只有最新的数据(比如上周或上月)对我们更重要。每天进行收集可以减少文档数量,并且可能会导致快速访问。即使我们需要旧数据,我们也可以回到旧的集合。这有意义吗,还是我的方向错了?创建集合的开

为给定日期的数据创建每日集合是否是一个好主意(如果数据太多,我们可以从每天开始,然后移动到每小时)。我们可以在mongodb中创建的集合数量是否有限制,或者是否会导致性能损失(mongodb维护这么多集合是否会造成开销)。大量收集是否会对性能产生不利影响


为了给你更多的上下文,这些数据将更像facebook提要,只有最新的数据(比如上周或上月)对我们更重要。每天进行收集可以减少文档数量,并且可能会导致快速访问。即使我们需要旧数据,我们也可以回到旧的集合。这有意义吗,还是我的方向错了?

创建集合的开销不大,但它比在集合中创建新文档的开销要大

您可以创建的集合数量有一个限制:“名称空间的数量”

向我创建新集合不会有任何性能差异,因为在RAM中,您只缓存您实际查询的数据。在你的情况下,它将是最近的饲料等


但是,每天/每小时收集数据将帮助您非常轻松地获取旧数据。

您实际需要的是归档旧数据。我建议您查看mongodb邮件列表中的这个帖子:
Michael Dirolf(10gen)在那里的最后一篇帖子说:

“操作系统将处理LRUing out数据,因此如果您的所有查询都是 触摸应保留在内存中的相同数据部分 独立于集合的总大小。”

因此,我想您可以继续使用单个集合,好的索引将完成这项工作。

无论如何,如果收藏量过大,您始终可以运行手动存档过程。

是的,您可以进行的收藏数量是有限制的。从蒙戈文件中,阿披舍克引用了:

名称空间数量的限制是名称空间文件的大小除以628

一个16MB的命名空间文件可以支持大约24000个命名空间。每个索引也算作一个名称空间

索引等都包含在名称空间中,但即使如此,要达到这一极限也需要大约60年的时间

然而!您是否考虑过当您需要跨集合的数据时会发生什么情况?换句话说,如果你想知道一周内有多少用户更新了feed,你就有点紧张了。跨集合查询并非易事


我建议使用一个集合来存储数据,并按照Tamir的建议定期将数据移出。您可以轻松编写作业,每周或每月将数据移出集合。

我可以查询7个集合,以获得一周的数据。尤其是计数在大型数据集上表现不佳。我在mongodb中经历过这种情况,这也是我希望保持每个集合的文档数较低的原因之一。我倾向于说,这7个查询比一个非常大的数据集上的1个查询(读取数据的GIG)所花费的时间要少得多,但我不确定。我还可以每天预先聚合这些数据,并将其存储在不同的集合中,以便快速方便地访问。我主要关心的是,随着集合数量的增加,性能是否会受到影响?