Hvorfor er standard _id
en hex-streng på 24 tegn?
Den unikke standardidentifikator, der genereres som den primære nøgle (_id
) for et MongoDB-dokument er et ObjectId
. Dette er en binær værdi på 12 byte, som ofte er repræsenteret som en hex-streng på 24 tegn, og en af standardfelttyperne understøttet af MongoDB BSON-specifikation
.
De 12 bytes af et ObjectId er konstrueret ved hjælp af:
- en 4 byte-værdi, der repræsenterer sekunderne siden Unix-epoken
- en 3 byte maskin-id
- et 2 byte proces-id
- en tæller på 3 byte (startende med en tilfældig værdi)
Hvad er vigtigheden af et ObjectId?
ObjectId'er (eller lignende identifikatorer genereret i henhold til en GUID formel) tillader unikke identifikatorer at blive genereret uafhængigt i et distribueret system.
Evnen til selvstændigt at generere et unikt ID bliver meget vigtigt, når du skalerer op til flere applikationsservere (eller måske flere databasenoder i en sharded cluster ). Du ønsker ikke at have en central koordinationsflaskehals som en sekvenstæller (f.eks. som du måske har for en auto-inkrementerende primærnøgle), og du vil gerne indsætte nye dokumenter uden risiko for, at en ny identifikator viser sig at være en dublet.
Et ObjectId genereres typisk af din MongoDB klientdriver
, men kan også genereres på MongoDB-serveren, hvis din klientdriver eller applikationskode eller ikke allerede har tilføjet en _id
felt.
Skal jeg bruge standard ObjectId?
Nej. Hvis du har en mere passende unik identifikator at bruge, kan du altid angive din egen værdi for _id
. Dette kan enten være en enkelt værdi eller en sammensat værdi ved hjælp af flere felter.
De vigtigste begrænsninger på _id
værdier er, at de skal være unikke for en samling, og du kan ikke opdatere eller fjerne _id
for et eksisterende dokument.