sql >> Database >  >> NoSQL >> MongoDB

Is het slecht om _id type in MongoDB te veranderen in integer?

Nee, het is helemaal niet slecht en in feite de ingebouwde ObjectId is behoorlijk groot binnen de index, dus als je denkt dat je iets beters hebt, dan ben je meer dan welkom om de standaardwaarde van de _id te wijzigen veld naar wat dan ook.

Maar, en dit is een grote maar , zijn er enkele overwegingen bij het besluit om af te stappen van de standaard geformuleerde ObjectId , vooral bij gebruik van de automatisch oplopende _ids zoals hier getoond:https://docs.mongodb.com/v3.0/tutorial/create-an-auto-incrementing-field

Multithreading is niet zo'n groot probleem omdat findAndModify en de atoomsloten kunnen daar echt voor zorgen, maar dan loop je gewoon tegen je eerste probleem aan. findAndModify is niet de snelste functie en ook niet de lichtste en er zijn aanzienlijke prestatiedalingen geconstateerd bij regelmatig gebruik.

Je moet ook rekening houden met de overhead om dit toch zelf te doen, zelfs zonder findAndModify . Voor elke insert heb je een extra query nodig. Stel je voor dat je een unieke id hebt die je elke keer dat je wilt invoegen moet opvragen. Uiteindelijk zal uw invoegsnelheid dalen tot een crawl en uw vergrendelingstijd zal toenemen.

Natuurlijk de ObjectId is echt goed in uniek zijn zonder zijn eigen uniciteit te hoeven controleren of formuleren door de database aan te raken voordat deze wordt ingevoegd, daarom heeft het deze overhead niet.

Als je nog steeds het gevoel hebt dat een geheel getal _id past bij je scenario, ga ervoor, maar houd rekening met de hierboven beschreven overhead.



  1. Hoe maak je een back-up en herstel je ClusterControl

  2. Redis Key-vervalmelding met Jedis

  3. Hoe zaai ik een mongo-database met behulp van docker-compose?

  4. Python- en MongoDB-databaseontwikkeling