sql >> Databasteknik >  >> NoSQL >> MongoDB

Samlings-ID-längd i MongoDB

Varför är standard _id en hex-sträng med 24 tecken?

Den unika standardidentifieraren som genereras som primärnyckel (_id ) för ett MongoDB-dokument är ett ObjectId . Detta är ett binärt värde på 12 bytes som ofta representeras som en hexadecimal sträng på 24 tecken, och en av standardfälttyperna som stöds av MongoDB BSON-specifikation .

De 12 byten av ett ObjectId är konstruerade med:

  • ett värde på 4 byte som representerar sekunderna sedan Unix-epoken
  • en 3-byte maskinidentifierare
  • ett process-id på 2 byte
  • en 3 byte-räknare (som börjar med ett slumpmässigt värde)

Vad är betydelsen av ett ObjectId?

ObjectIds (eller liknande identifierare genererade enligt en GUID formula) tillåter unika identifierare att genereras oberoende i ett distribuerat system.

Möjligheten att självständigt generera ett unikt ID blir mycket viktigt när du skalar upp till flera applikationsservrar (eller kanske flera databasnoder i en delad kluster ). Du vill inte ha en central koordinationsflaskhals som en sekvensräknare (t.ex. som du kan ha för en auto-inkrementerande primärnyckel), och du vill infoga nya dokument utan risk för att en ny identifierare visar sig vara en duplicera.

Ett ObjectId genereras vanligtvis av din MongoDB klientdrivrutin , men kan också genereras på MongoDB-servern om din klientdrivrutin eller applikationskod eller inte redan har lagt till ett _id fältet.

Måste jag använda standardobjekt-ID?

Nej. Om du har en mer lämplig unik identifierare att använda kan du alltid ange ditt eget värde för _id . Detta kan antingen vara ett enskilt värde eller ett sammansatt värde som använder flera fält.

De huvudsakliga begränsningarna för _id värden är att de måste vara unika för en samling och du kan inte uppdatera eller ta bort _id för ett befintligt dokument.



  1. Ansluter till MongoDb med SSL från JAVA-appen

  2. MongoDB-aggregationsprojektsträng till ObjectId

  3. Varför rekommenderas KEYS att inte användas i Redis?

  4. nodejs, redis. kontrollera om nycklar finns och skapa nya om inte