在MongoDB中进行缩放时,为什么自动递增模式不好?

时间:2014-04-05 16:07:45

标签: mongodb scalability auto-increment

我试图理解为什么auto-increment pattern is bad when scaling

我也读过this article。其中有这样的词:

  • 相反,您需要使用正确的UUID方法来确保您不会遇到竞争条件,并且ID在群集中确实是唯一的。

我试图找出在分片中_id重复的确切情况。

还有一个问题:非主要键的自动增量怎么办?这样安全吗?

非常感谢!

1 个答案:

答案 0 :(得分:3)

为了保证自动增量值是唯一的,ID创建必须在单个主机上的单个线程上进行(即使使用多个线程,ID创建点必须阻止其他线程)。因此,在100个服务器的集群中,必须在100个服务器中的1个线程上的1个线程上创建ID。这不仅仅是一个性能瓶颈,2个自动增量ID的创建可能会相互阻塞,这就是您引用的引文中提到的竞争条件。

应该注意的是,像Oracle和SQL Server这样的事务性RDBMS系统已经解决了竞争条件问题,但是没有解决性能瓶颈的问题。

所以:不,如果您预计需要扩展系统,请不要在非主键中使用自动增量。