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

Ist es schlecht, den _id-Typ in MongoDB in eine Ganzzahl zu ändern?

Nein, es ist überhaupt nicht schlimm und tatsächlich die eingebaute ObjectId innerhalb des Index ziemlich umfangreich ist, also wenn Sie glauben, dass Sie etwas Besseres haben, können Sie gerne den Standardwert der _id ändern Feld zu was auch immer.

Aber, und das ist ein großes aber , gibt es einige Überlegungen bei der Entscheidung, von der standardmäßig formulierten ObjectId abzuweichen , insbesondere wenn die automatisch inkrementierenden _ids wie hier gezeigt verwendet werden:https://docs.mongodb.com/v3.0/tutorial/create-an-auto-incrementing-field

Multi-Threading ist kein so großes Problem, weil findAndModify und die Atomschlösser können sich tatsächlich darum kümmern, aber dann stoßen Sie einfach auf Ihr erstes Problem. findAndModify ist weder die schnellste noch die leichteste Funktion, und bei regelmäßiger Verwendung wurden erhebliche Leistungseinbußen festgestellt.

Auch ohne findAndModify müssen Sie den Overhead bedenken, dies ohnehin selbst zu tun . Für jede Einfügung benötigen Sie eine zusätzliche Abfrage. Stellen Sie sich vor, Sie haben eine eindeutige ID, die Sie jedes Mal, wenn Sie sie einfügen möchten, auf ihre Eindeutigkeit abfragen müssen. Irgendwann sinkt Ihre Einfügungsrate auf ein Schneckentempo und Ihre Sperrzeit baut sich auf.

Natürlich die ObjectId ist wirklich gut darin, einzigartig zu sein, ohne seine eigene Einzigartigkeit überprüfen oder formulieren zu müssen, indem die Datenbank vor dem Einfügen berührt wird, daher hat es diesen Overhead nicht.

Wenn Sie immer noch der Meinung sind, dass eine Ganzzahl _id zu Ihrem Szenario passt, dann entscheiden Sie sich dafür, aber denken Sie an den oben beschriebenen Overhead.