MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Mengapa tidak disarankan untuk menggunakan fungsi tersimpan sisi server di MongoDB?

Saya yakin saya telah menyatakan daftar itu beberapa kali meskipun hasil pencarian Google hanya diisi dengan orang-orang yang memberi tahu Anda cara melakukannya:

  • Ini adalah eval
  • eval memiliki kemampuan alami untuk dengan mudah disuntikkan, ini seperti non-PDO yang setara dengan SQL, jika Anda tidak membangun perpustakaan pelarian skala penuh di sekitarnya, itu akan mengacaukan Anda. Dengan menggunakan fungsi-fungsi ini, Anda secara efektif mengganti bahasa asli MongoDB yang lebih aman untuk sesuatu yang sama tidak amannya dengan SQL lama di luar sana.
  • Membutuhkan kunci global dan dapat mengambil kunci tulis dan tidak akan dilepaskan hingga operasi selesai sepenuhnya, tidak seperti operasi lain yang akan dirilis dalam kasus tertentu.
  • eval hanya berfungsi di Primer dan tidak pernah ada anggota lain dari set replika
  • Ini pada dasarnya berjalan, tidak dicentang, satu ton JS dalam paket V8/spidermonkey envo yang datang dengan MongoDB dengan kemampuan penuh untuk menyentuh bagian mana pun dari database dan perintah admin Anda, apakah itu terdengar aman?
  • Ini BUKAN MongoDB dan juga bukan "MongoDBs SQL", ini berjalan dalam lingkungan JS bawaan, bukan kode MongoDBs C++ itu sendiri (tidak seperti kerangka kerja agregasi).
  • Karena poin sebelumnya, ini SANGAT lambat dibandingkan dengan banyak opsi lain, ini berlaku untuk $where penggunaan juga.

Itu sudah cukup untuk membantu Anda memulainya.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara menghapus bidang sepenuhnya dari dokumen MongoDB?

  2. Apakah mongodb berjalan?

  3. Bagaimana menemukan nama bidang MongoDB pada kedalaman yang sewenang-wenang

  4. Perbedaan antara bidang id dan _id di MongoDB

  5. Cara Menginstal Edisi Komunitas MongoDB di Ubuntu