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

Optimalisasi kinerja skema MongoDB

Hal pertama yang terlintas dalam pikiran di sini adalah:mengapa menyimpan referensi menghabiskan biaya 5.000 kali lipat dari biaya penyimpanan dalam subdokumen?

Oke, melihat skema Anda, saya yakin metode terbaik adalah kumpulan kata-kata yang terpisah, bukan paket.

Bendera merah pertama yang saya lihat adalah sarang ganda Anda di sini:

packages : [{
    package : {type: Schema.Types.ObjectId, ref: 'Packages'},
    from : {type : Schema.Types.ObjectId, ref :'Languages'},
    to : {type : Schema.Types.ObjectId, ref :'Languages'},
    words : [{
        word: {type: String},
        progress: {type: Number,default : 0}
    }]
}]

words subdocument akan sangat sulit untuk dikerjakan dalam versi MongoDB saat ini, biasanya 2-3 level mulai mengalami masalah, terutama dengan operator posisional.

Sekarang mengingat bahwa Anda harus selalu bekerja dari nilai setinggi mungkin yang bisa Anda dapatkan di sini:

Anda juga harus mempertimbangkan biaya perumahan dokumen ini. Operator yang Anda butuhkan akan berada di dalam memori seperti $pull , $push , $addToSet dll yang berarti seluruh dokumen Anda perlu diserialisasi dan dimuat ke dalam struct C++ asli MongoDB. Ini akan menjadi tugas yang sangat memakan waktu tergantung pada lalu lintas ke dokumen tersebut.

Mempertimbangkan komentar Anda:

itu hanya menempatkan paku lain di peti mati menanamkan kata-kata dalam dokumen pengguna utama. Mempertimbangkan apa yang saya katakan di paragraf sebelumnya, ini tidak akan berfungsi dengan baik dengan biaya penggunaan operator dalam memori pada words larik.

Ini akan bekerja lebih baik jika kata-katanya dipisahkan, $slice juga merupakan operator dalam memori dan mungkin akan mengalami penurunan performa di sini.

Dan itu adalah tanggapan cepat yang beralasan. Saya yakin ada lebih banyak yang bisa saya jelaskan tentang alasan saya, tetapi itu sudah cukup.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb tidak diperbarui dengan benar dari 4.2 ke 4.4

  2. Apa kesalahan Mongoose Cast to ObjectId gagal untuk nilai XXX di jalur _id?

  3. Simulasikan kueri lambat di mongodb?

  4. MongoDB - $set untuk memperbarui atau mendorong elemen Array

  5. Mengotomatiskan dan Mengelola MongoDB di Cloud