Mongo 动态集合创建和锁定

时间:2021-07-02 06:02:35

标签: mongodb

我正在开发一个应用程序,我正在研究如何根据需要动态创建 MongoDB 集合。

该应用使用来自数据源的数据并将数据映射到集合。如果该集合不存在,则应用:

  • 创建集合
  • 在后台启动适当的索引
  • 对集合进行分片 然后将数据插入到集合中。

在此过程中,其他进程将从数据库中读取和写入。

看看这个 MongodDB 锁定 FAQ,看起来数据库的其他集合中的读写不应该受到动态集合创建 snd 设置的影响,即它们最终不会等待我们的锁获取以创建集合。

问题:上述假设是否正确?

先谢谢你!

1 个答案:

答案 0 :(得分:1)

不,当您插入一个不存在的集合时,会自动创建一个新集合。当然,这个新集合没有任何索引(除了 _id),也没有分片。

因此,您必须确保在应用程序开始任何插入之前创建集合。

但是,在已经包含一些数据的集合上创建索引并启用分片是没有问题的。

请注意,当您对空集合或数据量较少的集合启用分片时,所有数据最初都会写入主分片。您可以使用 sh.splitAt() 预先拆分即将到来的数据。

相关问题