sql >> Database teknologi >  >> NoSQL >> MongoDB

Er det dårligt at ændre _id-type i MongoDB til heltal?

Nej, den er slet ikke dårlig og faktisk den indbyggede ObjectId er ret stor i indekset, så hvis du mener, du har noget bedre, er du mere end velkommen til at ændre standardværdien for _id felt til hvad som helst.

Men, og dette er et stort men , er der nogle overvejelser, når man beslutter sig for at gå væk fra standardformuleringen ObjectId , især når du bruger auto-incrementing _ids som vist her:https://docs.mongodb.com/v3.0/tutorial/create-an-auto-incrementing-field

Multi threading er ikke så stort et problem, fordi findAndModify og det kan atomlåsene faktisk tage sig af, men så rammer du bare dit første problem. findAndModify er ikke den hurtigste funktion eller den letteste, og der har været betydelige fald i ydeevnen, når du bruger den regelmæssigt.

Du skal også overveje omkostningerne ved at gøre dette selv alligevel, selv uden findAndModify . For hver indsats skal du bruge en ekstra forespørgsel. Forestil dig at have et unikt id, som du skal forespørge på, om det er unikt, hver gang du vil indsætte. Til sidst vil din indsættelseshastighed falde til en gennemgang, og din låsetid vil bygge op.

Selvfølgelig ObjectId er rigtig god til at være unik uden at skulle tjekke eller formulere sin egen unikhed ved at røre ved databasen før indsættelse, derfor har den ikke denne overhead.

Hvis du stadig føler, at et heltals _id passer til dit scenarie, så gå efter det, men husk de overhead, der er beskrevet ovenfor.



  1. Er redis på Heroku muligt uden en tilføjelse?

  2. Hvordan forespørger jeg refererede objekter i MongoDB?

  3. C#/.NET-klient til Redis

  4. Sådan får du alle resultater, hvis afspændingsfeltet ikke findes i mongodb