MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Защо не се препоръчва използването на съхранени функции от страна на сървъра в MongoDB?

Сигурен съм, че съм посочил списъка няколко пъти, въпреки че резултатът от търсенето с Google е пълен само с хора, които ви казват как да го направите:

  • Това е eval
  • eval има естествени способности за лесно инжектиране, той е като не-PDO еквивалент на SQL, ако не изградите пълномащабна библиотека за избягване около него, това ще ви обърка. Използвайки тези функции, вие ефективно замествате по-безопасния роден език на MongoDB с нещо, което е също толкова несигурно, колкото всеки стар SQL.
  • Отнема глобално заключване и може да приеме заключване на запис и няма да се освободи, докато операцията не бъде извършена напълно, за разлика от други операции, които ще се освободят в определени случаи.
  • eval работи само на първични и никога друг член на набора реплика
  • По принцип работи, без отметка, един тон JS в пакет V8/spidermonkey envo, който идва с MongoDB с пълна възможност за докосване на всяка част от вашата база данни и администраторски команди, това звучи ли безопасно?
  • Това НЕ е MongoDB и не е "MongoDBs SQL", той работи в рамките на вградена JS среда, а не самият код на MongoDBs C++ (за разлика от рамката за агрегиране).
  • Поради предишната точка е ИЗКЛЮЧИТЕЛНО бавен в сравнение с много други опции, това важи за $where употреба също.

Това би трябвало да е достатъчно, за да започнете на този фронт.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да премахнете един "документ" по "ID" с помощта на официалния C# драйвер за MongoDB?

  2. Spring Boot свързва Mysql и MongoDb

  3. Как да разположите ClusterControl на AWS, за да управлявате вашата облачна база данни

  4. Управление на потребителите на база данни с ClusterControl

  5. Как да извика db.Collection.stats() от Mongo java драйвер