sql >> Base de Datos >  >> NoSQL >> MongoDB

Longitud de ID de colección en MongoDB

¿Por qué es el _id predeterminado? una cadena hexadecimal de 24 caracteres?

El identificador único predeterminado generado como clave principal (_id ) para un documento MongoDB es un ObjectId . Este es un valor binario de 12 bytes que a menudo se representa como una cadena hexadecimal de 24 caracteres y uno de los tipos de campo estándar compatibles con MongoDB Especificación BSON .

Los 12 bytes de un ObjectId se construyen usando:

  • un valor de 4 bytes que representa los segundos desde la época de Unix
  • un identificador de máquina de 3 bytes
  • una identificación de proceso de 2 bytes
  • un contador de 3 bytes (que comienza con un valor aleatorio)

¿Cuál es la importancia de un ObjectId?

ObjectIds (o identificadores similares generados de acuerdo con un GUID fórmula) permiten que los identificadores únicos se generen de forma independiente en un sistema distribuido.

La capacidad de generar de forma independiente una ID única se vuelve muy importante a medida que escala a múltiples servidores de aplicaciones (o quizás a múltiples nodos de bases de datos en un clúster fragmentado ). No desea tener un cuello de botella de coordinación central como un contador de secuencia (por ejemplo, como podría tener para una clave principal de incremento automático), y querrá insertar nuevos documentos sin riesgo de que un nuevo identificador resulte ser un duplicado.

Su MongoDB controlador de cliente suele generar un ObjectId. , pero también se puede generar en el servidor MongoDB si su controlador de cliente o código de aplicación no ha agregado un _id campo.

¿Tengo que usar el ObjectId predeterminado?

No. Si tiene un identificador único más adecuado para usar, siempre puede proporcionar su propio valor para _id . Puede ser un valor único o un valor compuesto utilizando varios campos.

Las principales restricciones en _id los valores son que tienen que ser únicos para una colección y no puede actualizar o eliminar el _id para un documento existente.