sql >> Databasteknik >  >> NoSQL >> MongoDB

Varför rekommenderas det inte att använda lagrade funktioner på serversidan i MongoDB?

Jag är säker på att jag har angett listan ett par gånger trots att Googles sökresultat endast är fyllt med personer som berättar hur du gör:

  • Det är eval
  • eval har naturliga förmågor för att enkelt injiceras, det är som en icke-PDO-ekvivalent till SQL, om du inte bygger ett fullskaligt flyktbibliotek runt det kommer det att förstöra dig. Genom att använda dessa funktioner ersätter du i praktiken det säkrare modersmålet i MongoDB mot något som är lika osäkert som vilken gammal SQL som helst där ute.
  • Den kräver ett globalt lås och kan ta skrivlås och släpps inte förrän operationen är helt klar, till skillnad från andra operationer som kommer att släppa i vissa fall.
  • eval Fungerar bara på Primaries och aldrig någon annan medlem av replikuppsättningen
  • Det körs i princip, okontrollerat, ett ton JS i en medföljande V8/spidermonkey-envo som levereras med MongoDB med full förmåga att röra vilken del av din databas och administratörskommandon, låter det säkert?
  • Det är INTE MongoDB och det är inte heller "MongoDBs SQL", det körs inom en inbyggd JS-miljö, inte MongoDBs C++-kod i sig (till skillnad från aggregeringsramverket).
  • På grund av föregående punkt är det EXTREMT långsamt i jämförelse med många andra alternativ, detta gäller för $where användning också.

Det borde vara tillräckligt för att du ska komma igång på den här fronten.




  1. Vad är standarddatabassökvägen för MongoDB?

  2. Jämföra mongoose _id och strängar

  3. Mongoimport av JSON-fil

  4. Range Querying in Redis - Spring Data Redis