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

PyMongo vs MongoEngine untuk Django

Ini adalah pertanyaan lama tetapi tersandung, saya tidak berpikir jawaban yang diterima menjawab pertanyaan itu. Pertanyaannya bukan "Apa itu MongoEngine?" - itu adalah "Mengapa saya harus menggunakan MongoEngine?" Dan keuntungan dari pendekatan semacam itu. Ini melampaui Django ke Python/Mongo secara umum. Dua sen saya:

Sementara PyMongo dan MongoEngine melakukan keduanya mengembalikan objek (yang tidak salah), PyMongo mengembalikan kamus yang perlu memiliki kunci yang direferensikan oleh string. MongoEngine memungkinkan Anda untuk menentukan skema melalui kelas untuk data dokumen Anda. Ini kemudian akan memetakan dokumen ke dalam kelas tersebut untuk Anda dan memungkinkan Anda untuk memanipulasinya. Mengapa menentukan skema untuk data tanpa skema? Karena menurut saya, ini jelas, eksplisit, dan jauh lebih mudah untuk diprogram. Anda tidak akan berakhir dengan kamus yang berserakan tentang kode Anda di mana Anda tidak dapat mengetahui apa yang ada di dalamnya tanpa benar-benar melihat data atau menjalankan program. Dalam kasus MongoEngine dan IDE yang layak seperti PyCharm, ketik "." setelah objek akan memberi tahu Anda semua yang perlu Anda ketahui melalui pelengkapan otomatis. Juga lebih mudah bagi pengembang lain yang datang untuk memeriksa dan mempelajari model data saat mereka bekerja dan akan membuat siapa saja yang sudah lama tidak melihat kode menjadi lebih produktif, lebih cepat.

Selain itu, bagi saya, sintaks yang digunakan untuk memanipulasi dokumen dengan PyMongo (yang pada dasarnya sama dengan konsol mongo) jelek, rawan kesalahan, dan sulit dipelihara.

Berikut adalah contoh dasar memperbarui dokumen di MongoEngine, yang bagi saya sangat elegan:

BlogPost.objects(id=post.id).update(title='Example Post')

Mengapa menggunakan PyMongo? MongoEngine adalah lapisan antara Anda dan bare metal, jadi mungkin lebih lambat, meskipun saya tidak memiliki tolok ukur. PyMongo adalah level yang lebih rendah, jadi tentu saja Anda memiliki lebih banyak kontrol. Untuk proyek sederhana, MongoEngine mungkin tidak diperlukan. Jika Anda sudah fasih dalam sintaks Mongo, Anda mungkin menemukan PyMongo jauh lebih intuitif daripada saya dan tidak memiliki masalah dalam menulis kueri dan pembaruan yang rumit. Mungkin Anda menikmati bekerja secara langsung dengan kamus pada tingkat yang lebih rendah itu dan tidak tertarik pada lapisan abstraksi tambahan. Mungkin Anda sedang menulis skrip yang bukan merupakan bagian dari sistem besar, dan Anda memerlukan skrip yang ramping dan secepat mungkin.

Ada lebih banyak argumen, tapi saya pikir itu cukup bagus untuk dasar-dasarnya.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB - Cetak

  2. Bagaimana cara memanggil mongodb di dalam fungsi peta/pengurangan saya? Apakah itu praktik yang baik?

  3. Gagal terhubung ke 127.0.0.1:27017, alasan:errno:111 Koneksi ditolak

  4. Konversikan MongoDB BsonDocument ke JSON yang valid di C#

  5. Mongodb - harus _id unik secara global saat melakukan sharding