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

Denormalisasi data di MongoDB

Tidak selalu, normalisasi ke titik kematian menghasilkan kinerja yang buruk, tetapi memang benar bahwa saya secara pribadi tidak menerapkan normalisasi yang sama ke MongoDB seperti yang saya lakukan pada SQL.

Jika Anda mengetahui bentuk normal ( http://en.wikipedia.org/wiki/Database_normalization ) Saya suka menganggap MongoDB sebagai 1NF dan kemudian kembali ke denormalisasi lagi.

Oh ya kita lakukan. Memperbarui adalah masalah jika data digandakan salah.

Biarkan saya memberi Anda sebuah contoh:category dan product akan menjadi dua entitas yang terpisah, tidak dapat disangkal. Kedua entitas ini dinormalisasi (data berulang product telah dikeluarkan dari category ). Cara berpikir lainnya adalah:Apakah semua produk hanya akan ada dalam satu kategori?

Jadi pada entitas tingkat atas, seperti yang Anda lihat, aturan yang sama relatif berlaku dengan 1NF mudah diterapkan ke MongoDB.

Di depan duplikasi Anda, tentu saja, tidak ingin menyimpan setiap produk secara terpisah dalam setiap kategori (saya menjawab tidak untuk pertanyaan di atas) sehingga Anda tentu ingin memisahkan kategori dan produk.

Anda biasanya memiliki hubungan banyak-ke-banyak di sini dengan tabel yang dinormalisasi tengah. Di sinilah de-normalisasi dapat masuk. Anda dapat mengatakan bahwa suatu kategori akan memiliki daftar produk yang unik untuk kategori tersebut sehingga Anda dapat mendenormalisasi tabel relasional banyak-ke-banyak ke dalam baris kategori sebagai daftar (atau sebaliknya ke dalam baris produk). Ini tidak akan menghasilkan duplikasi karena daftar itu unik untuk kategori itu (kemungkinan besar). Ini tentu saja berarti bahwa kategori atau produk akan menyimpan daftar _id s dari baris terkait alih-alih objek itu sendiri.

Ada kalanya duplikasi diperlukan, terutama untuk optimasi atau bekerja di sekitar untuk tidak memiliki GABUNG; aturan ini juga berlaku untuk SQL juga jika Anda pernah membuat situs yang cukup besar.

Skenario penggunaan tipikal duplikasi adalah bidang agregasi statistik seperti posting Facebook, share dan komentar dan bahkan mungkin 5 komentar terbaru dari posting itu juga akan diduplikasi ke baris posting.

Jadi ini bukan kasus mengabaikan desain skema tetapi lebih menyetelnya untuk karakteristik MongoDB. Biasanya jika Anda melakukannya, Anda akan menemukan bahwa Anda, secara alami, merancang skema yang baik.

Sebagai referensi tambahan, Anda dapat merujuk di sini:http://docs.mongodb.org/ manual/inti/pemodelan data




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Data pembaruan MongoDB di bidang bersarang

  2. luwak menemukan dokumen dengan properti referensi

  3. Mempersiapkan Server MongoDB untuk Produksi

  4. Perbarui bidang dengan nilai dari bidang bersarang

  5. temukan dokumen pertama untuk setiap nilai berbeda untuk satu bidang