Node.js 在mongodb的数据库中使用不同的集合好吗

Node.js 在mongodb的数据库中使用不同的集合好吗,node.js,mongodb,Node.js,Mongodb,我将使用nodejs和mongodb做一个项目。我们正在设计数据库的模式,我们不确定是否需要使用不同的集合或相同的集合来存储数据。因为每一个都有自己的优点和缺点。 如果我们使用单个集合,每当调用数据库时,总集合都会加载到内存中,这会降低RAM容量。如果我们使用不同的集合,则检索数据时需要编写不同的查询。通过使用一个集合检索将很容易,通过使用不同的集合,应用程序将变得更快。我们不知道是使用单个集合还是多个集合。请告诉我哪一个更好。通常你会为不同的东西使用不同的收藏。例如,当系统中有用户和文章时,通

我将使用nodejs和mongodb做一个项目。我们正在设计数据库的模式,我们不确定是否需要使用不同的集合或相同的集合来存储数据。因为每一个都有自己的优点和缺点。
如果我们使用单个集合,每当调用数据库时,总集合都会加载到内存中,这会降低RAM容量。如果我们使用不同的集合,则检索数据时需要编写不同的查询。通过使用一个集合检索将很容易,通过使用不同的集合,应用程序将变得更快。我们不知道是使用单个集合还是多个集合。请告诉我哪一个更好。

通常你会为不同的东西使用不同的收藏。例如,当系统中有用户和文章时,通常为用户创建“用户”集合,为文章创建“文章”集合。您可以创建一个名为“objects”或类似的集合,并将所有内容放在那里,但这意味着您必须添加一些类型字段,并将其用于搜索和存储数据。您可以在数据库中使用单个集合,但这会使使用更加复杂。当然,它可以让您一次加载整个集合,但无论它是否与应用程序的性能相关,都必须对其进行分析和测试,以便为您的特定用例提供性能影响。

通常,开发人员为不同的内容创建不同的集合。与帖子管理一样,人们创建“帖子”集合,并将帖子保存在帖子集合中,对用户和所有人都是如此

将不同的收藏用于不同的目的是一个很好的实践

MongoDB擅长水平扩展。它可以在动态集群中共享一个集合,以生成一个快速、可查询的数据集合

因此,拥有较小的集合大小并不是一个真正的优点,我不确定这一理论是从哪里来的,它不在SQL中,也不在MongoDB中。切分的性能,如果做得好的话,应该与查询单个小数据集合的性能有关(开销很小)。如果不是这样,则说明您的切分设置错误

MongoDB不擅长垂直扩展,正如@Sushant所引用的,MongoDB的ns大小在这里将是一个严重的限制。quote没有提到的一点是,索引大小和计数也会影响ns大小,因此它描述了:

默认情况下,MongoDB的每个名称空间限制约为24000个 数据库每个名称空间为628字节,.ns文件的大小为16MB 默认

每个集合和每个索引都算作名称空间。因此如果 每个集合都有一个索引,我们最多可以创建12000个索引 收藏。--nssize参数允许您增加此限制 (见下文)

请注意,每个集合都有一定的最小开销——a 几KB。此外,任何索引都需要至少8KB的数据空间 b树页面大小为8KB。如果出现这种情况,某些操作可能会变慢 有很多集合,元数据被分页出来

因此,如果您的用户超过名称空间限制,您将无法优雅地处理它。而且,随着用户群的增长,它的性能也不会很高

更新


对于使用WiredTiger存储引擎的Mongodb 3.0或更高版本,它将不再是限制。

是的,我个人认为在一个数据库中有多个集合可以保持它的整洁。我唯一担心的是藏品的大小。许多开发人员都使用集合来将他们的数据库划分为帖子、评论、用户等


对不起,我的语法和缺乏解释我在打电话

你是说是否在更大的文档中使用内联文档,而不是将这些内部文档放在单独的集合中?