MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mongodb - deve _id ser globalmente exclusivo ao fragmentar


A menos que você os substitua manualmente, os _ids gerados automaticamente são UUIDs que, de acordo com a documentação , consistem em "um carimbo de data/hora de 4 bytes (segundos desde a época), um ID de máquina de 3 bytes, um ID de processo de 2 bytes e um contador de 3 bytes".

Como você pode ver, um ID de máquina exclusivo faz parte do UUID. Isso garante que duas máquinas no shard nunca criem o mesmo UUID independentemente (a menos que tenham o mesmo ID de máquina - a probabilidade disso é 1:16777215 e, quando isso acontece, pode ser facilmente verificado). A única situação em que teoricamente você poderia ter um UUID duplicado é quando um único processo cria mais de 2^24 (mais de 16 milhões) UUIDs em um único segundo.

tl;dr: Você não precisa se preocupar com UUIDs duplicados - eles são, como a documentação diz, "projetados para ter uma probabilidade razoavelmente alta de serem exclusivos quando alocados".