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

Model Terbaik untuk Mewakili Banyak ke Banyak hubungan dengan atribut di MongoDB

Dalam banyak hal, API meteor mendorong dokumen relasional datar, namun MongoDB adalah penyimpanan data non-relasional. Sayangnya, konflik ini dibiarkan sebagai latihan untuk diselesaikan oleh pengembang.

Gagasan tentang struktur skema dan gabungan adalah topik yang sangat besar untuk dibahas dalam satu jawaban, jadi saya akan berusaha sesingkat mungkin.

Alasan mengapa Anda harus memilih model relasional

Asumsikan Anda memiliki komentar dan data posting. Pertimbangkan apa yang akan terjadi jika Anda menyematkan komentar dalam postingan Anda.

  • DDP beroperasi pada dokumen. Semua komentar akan dikirim setiap kali komentar baru di postingan yang sama ditambahkan.

  • allow dan deny aturan beroperasi pada dokumen. Mungkin tidak masuk akal untuk mengharapkan bahwa aturan yang sama berlaku secara bersamaan untuk postingan dan komentar.

  • Publikasi cenderung lebih masuk akal dalam hal koleksi. Dalam skenario di atas, kami tidak dapat dengan mudah memublikasikan daftar komentar yang terlepas dari postingan mereka.

  • Database relasional ada untuk alasan yang baik. Salah satunya adalah menghindari masalah modifikasi ganda yang melekat pada solusi kedua Anda.

Alasan mengapa Anda harus memilih model tersemat

  • Gabung tidak didukung secara asli oleh MongoDB, dan tidak ada paket inti untuk menghasilkan gabungan reaktif.

Rekomendasi

Gunakan solusi ketiga Anda. Dalam pengalaman saya, alasan untuk memilih model relasional jauh lebih besar daripada batasan yang diberlakukan oleh penyimpanan data. Tentu saja mengatasi kurangnya bergabung tidak mudah, tetapi rasa sakitnya mungkin hanya terisolasi pada beberapa fungsi publish. Berikut adalah beberapa sumber yang sangat saya rekomendasikan:

  • Cara mempublikasikan hubungan banyak-ke-banyak di EventedMind. Chris membahas kasus penggunaan Anda secara mendetail, namun ia secara manual melakukan penggabungan reaktif dengan panggilan balik observasi, yang tidak saya rekomendasikan.

  • Reaktif bergabung dalam meteor dari Discover Meteor Encyclopedia. Ini mencakup dasar-dasar bagaimana dan mengapa seseorang harus melakukan join reaktif.

  • Bab denormalisasi dari Discover Meteor. Ini mencakup banyak poin yang saya buat di atas dan juga berbicara tentang kapan dan bagaimana mendenormalisasi beberapa data Anda.

  • Anda dapat menggunakan Publikasikan dengan relasi untuk menggabungkan data Anda. Paket alternatif meliputi:publikasi cerdas, publikasikan komposit, dan publikasi sederhana.

Jika Anda memerlukan informasi lebih lanjut di luar ini, silakan komentar di bawah dan saya akan memperbarui jawaban saya.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kesalahan pemeran JSON.NET saat membuat serial Mongo ObjectId

  2. Perbarui bidang dalam array elemen yang tepat di MongoDB

  3. Bagaimana cara menggunakan titik dalam nama bidang?

  4. Tidak dapat memulai/meluncurkan mongo db

  5. atur bidang sebagai kosong untuk objek mongo menggunakan luwak