MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Dlaczego nie zaleca się używania funkcji przechowywanych po stronie serwera w MongoDB?

Jestem pewien, że kilka razy wymieniłem listę, mimo że wynik wyszukiwania Google jest wypełniony tylko ludźmi mówiącymi, jak to zrobić:

  • To jest eval
  • eval ma naturalne zdolności do łatwego wstrzykiwania, jest jak odpowiednik SQL bez PDO, jeśli nie zbudujesz wokół niego pełnej biblioteki ucieczki, może cię zepsuć. Korzystając z tych funkcji, skutecznie zastępujesz bezpieczniejszy natywny język MongoDB czymś, co jest tak samo niepewne, jak każdy stary SQL.
  • Wymaga blokady globalnej i może przyjąć blokadę zapisu i nie zostanie zwolniona, dopóki operacja nie zostanie całkowicie wykonana, w przeciwieństwie do innych operacji, które zostaną zwolnione w niektórych przypadkach.
  • eval działa tylko z podstawowymi i nigdy z żadnym innym członkiem zestawu replik
  • W zasadzie jest to uruchomiona, niesprawdzona, tona JS w pakiecie envo V8/spidermonkey, który jest dostarczany z MongoDB z pełną możliwością dotykania dowolnej części bazy danych i poleceń administracyjnych, czy to brzmi bezpiecznie?
  • Nie jest to MongoDB ani „MongoDBs SQL”, działa we wbudowanym środowisku JS, a nie w samym kodzie MongoDBs C++ (w przeciwieństwie do struktury agregacji).
  • Ze względu na poprzedni punkt jest BARDZO wolny w porównaniu z wieloma innymi opcjami, dotyczy to $where również użycie.

To powinno wystarczyć, aby zacząć na tym froncie.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wyjaśnienie upsert MongoDB

  2. MongoDB operator zapytań typu $

  3. znajdź identyfikator ostatniego poddokumentu wstawionego w manguście

  4. za dużo otwartych plików na serwerze mgo go

  5. Konwersja ciągu na datę w mongodb