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

O Mongodb ObjectID é exclusivo entre documentos?


É único para todos os propósitos práticos. A não-singularidade mencionada é bastante teórica.

O ObjectId é construído fora de
  • um carimbo de data/hora (segundos desde a época)
  • um identificador de máquina
  • o código do processo
  • e um contador de 3 bytes começando com um valor aleatório a cada segundo

Portanto, na mediana, a menos que você escreva mais de 3080 documentos por segundo por cliente, você deve ser salvo. Observe que _id tem uma restrição única:Even if você tentasse escrever o mesmo ObjectId duas vezes, haveria uma exceção.

Nota lateral:mesmo algoritmos de hash como MD5 ou (em menor grau) SHA256 têm uma pequena chance de colisão. Mas com uma restrição única, você está seguro.

Editar :Como uma exceção é lançada no caso muito, Muito, MUITO raro de dois ObjectIds idênticos serem gerados e tentados serem escritos simultaneamente, você simplesmente os trata gerando um novo ObjectId e tenta salvar o documento novamente.