MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Lunghezza dell'ID raccolta in MongoDB

Perché l'impostazione predefinita è _id una stringa esadecimale di 24 caratteri?

L'identificatore univoco predefinito generato come chiave primaria (_id ) per un documento MongoDB è un ObjectId . Questo è un valore binario di 12 byte che è spesso rappresentato come una stringa esadecimale di 24 caratteri e uno dei tipi di campo standard supportati da MongoDB Specifica BSON .

I 12 byte di un ObjectId sono costruiti utilizzando:

  • un valore di 4 byte che rappresenta i secondi dall'epoca di Unix
  • un identificatore di macchina a 3 byte
  • un ID processo a 2 byte
  • un contatore a 3 byte (che inizia con un valore casuale)

Qual ​​è l'importanza di un ObjectId?

ObjectIds (o identificatori simili generati in base a un GUID formula) consentono la generazione indipendente di identificatori univoci in un sistema distribuito.

La capacità di generare in modo indipendente un ID univoco diventa molto importante man mano che si passa a più server delle applicazioni (o forse a più nodi di database in un cluster partizionato ). Non vuoi avere un collo di bottiglia di coordinamento centrale come un contatore di sequenza (ad esempio come potresti avere per una chiave primaria a incremento automatico), e vorrai inserire nuovi documenti senza il rischio che un nuovo identificatore risulti essere un duplicato.

Un ObjectId viene generalmente generato dal driver client di MongoDB. , ma può anche essere generato sul server MongoDB se il tuo driver client o codice dell'applicazione o non ha già aggiunto un _id campo.

Devo usare l'ObjectId predefinito?

No. Se hai un identificatore univoco più adatto da utilizzare, puoi sempre fornire il tuo valore per _id . Può essere un valore singolo o un valore composto che utilizza più campi.

I principali vincoli su _id i valori indicano che devono essere univoci per una raccolta e non è possibile aggiornare o rimuovere il _id per un documento esistente.