MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Sammlungs-ID-Länge in MongoDB

Warum ist die Standardeinstellung _id ein 24-stelliger Hex-String?

Die als Primärschlüssel generierte eindeutige Standardkennung (_id ) für ein MongoDB-Dokument ist eine ObjectId . Dies ist ein 12-Byte-Binärwert, der häufig als 24-stelliger Hex-String dargestellt wird, und einer der Standardfeldtypen, die von MongoDB BSON-Spezifikation .

Die 12 Bytes einer ObjectId werden konstruiert mit:

  • ein 4-Byte-Wert, der die Sekunden seit der Unix-Epoche darstellt
  • eine 3-Byte-Maschinenkennung
  • eine 2-Byte-Prozess-ID
  • ein 3-Byte-Zähler (beginnend mit einem zufälligen Wert)

Welche Bedeutung hat eine ObjectId?

ObjectIds (oder ähnliche Kennungen, die gemäß einer GUID generiert werden Formel) ermöglichen die unabhängige Generierung eindeutiger Identifikatoren in einem verteilten System.

Die Fähigkeit, eine eindeutige ID unabhängig zu generieren, wird sehr wichtig, wenn Sie auf mehrere Anwendungsserver hochskalieren (oder vielleicht mehrere Datenbankknoten in einem geteilter Cluster ). Sie möchten keinen zentralen Koordinierungsengpass wie einen Sequenzzähler haben (z. B. wie bei einem automatisch inkrementierenden Primärschlüssel), und Sie möchten neue Dokumente einfügen, ohne zu riskieren, dass sich eine neue Kennung als a herausstellt duplizieren.

Eine ObjectId wird normalerweise von Ihrem MongoDB-Client-Treiber generiert , kann aber auch auf dem MongoDB-Server generiert werden, wenn Ihr Clienttreiber oder Anwendungscode noch keine _id hinzugefügt hat Feld.

Muss ich die Standard-ObjectId verwenden?

Nein. Wenn Sie eine besser geeignete eindeutige Kennung zur Verwendung haben, können Sie jederzeit Ihren eigenen Wert für _id angeben . Dies kann entweder ein einzelner Wert oder ein zusammengesetzter Wert aus mehreren Feldern sein.

Die wichtigsten Einschränkungen für _id Werte sind, dass sie für eine Sammlung eindeutig sein müssen und Sie die _id nicht aktualisieren oder entfernen können für ein vorhandenes Dokument.