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

Comprimento do ID da coleção no MongoDB

Por que o padrão _id uma string hexadecimal de 24 caracteres?


O identificador exclusivo padrão gerado como a chave primária (_id ) para um documento do MongoDB é um ObjectId . Este é um valor binário de 12 bytes que geralmente é representado como uma string hexadecimal de 24 caracteres e um dos tipos de campo padrão suportados pelo MongoDB Especificação BSON .

Os 12 bytes de um ObjectId são construídos usando:
  • um valor de 4 bytes representando os segundos desde a época do Unix
  • um identificador de máquina de 3 bytes
  • um ID de processo de 2 bytes
  • um contador de 3 bytes (começando com um valor aleatório)

Qual ​​é a importância de um ObjectId?


ObjectIds (ou identificadores semelhantes gerados de acordo com um GUID fórmula) permitem que identificadores únicos sejam gerados independentemente em um sistema distribuído.

A capacidade de gerar independentemente um ID exclusivo torna-se muito importante à medida que você escala para vários servidores de aplicativos (ou talvez vários nós de banco de dados em um cluster fragmentado ). Você não quer ter um gargalo de coordenação central como um contador de sequência (por exemplo, como você pode ter para uma chave primária de incremento automático), e você deseja inserir novos documentos sem o risco de que um novo identificador se torne um duplicado.

Um ObjectId normalmente é gerado pelo seu MongoDB driver cliente , mas também pode ser gerado no servidor MongoDB se o driver do cliente ou o código do aplicativo ou ainda não tiver adicionado um _id campo.

Preciso usar o ObjectId padrão?


Não. Se você tiver um identificador exclusivo mais adequado para usar, sempre poderá fornecer seu próprio valor para _id . Isso pode ser um valor único ou um valor composto usando vários campos.

As principais restrições em _id os valores são que eles precisam ser exclusivos para uma coleção e você não pode atualizar ou remover o _id para um documento existente.