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

Mengapa Anda Masih Harus Menggunakan Mesin Penyimpanan MMAPv1 untuk MongoDB

Meskipun mesin penyimpanan ini telah ditinggalkan sejak MongoDB versi 4.0, ada beberapa fitur penting di dalamnya. MMAPv1 adalah mesin penyimpanan asli di MongoDB dan didasarkan pada file yang dipetakan. Hanya arsitektur Intel 64-bit (x86_64) yang mendukung mesin penyimpanan ini.

MMAPv1 mendorong kinerja luar biasa pada beban kerja dengan...

  • Pembaruan besar
  • Bacaan volume tinggi
  • Insersi volume tinggi
  • Penggunaan memori sistem yang tinggi

Arsitektur MMAPv1

MMAPv1 adalah sistem berbasis B-tree yang mendukung banyak fungsi seperti interaksi penyimpanan dan manajemen memori ke sistem operasi.

Itu adalah database default untuk MongoDB untuk versi lebih awal dari 3.2 hingga pengenalan mesin penyimpanan WiredTiger. Namanya berasal dari fakta bahwa ia menggunakan file yang dipetakan memori untuk mengakses data. Ia melakukannya dengan langsung memuat dan memodifikasi konten file, yang ada di memori virtual melalui metodologi syscall mmap().

Semua catatan terletak bersebelahan pada disk dan jika dokumen menjadi lebih besar dari ukuran catatan yang dialokasikan, maka MongoDB mengalokasikan catatan baru. Untuk MMAPv1 ini menguntungkan untuk akses data sekuensial tetapi pada saat yang sama pembatasan karena datang dengan biaya waktu karena semua indeks dokumen perlu diperbarui dan ini dapat mengakibatkan fragmentasi penyimpanan.

Arsitektur dasar mesin penyimpanan MMAPv1 ditunjukkan di bawah ini.

Seperti disebutkan di atas, jika ukuran dokumen melebihi ukuran catatan yang dialokasikan, itu akan menghasilkan realokasi yang bukan hal yang baik. Untuk menghindari hal ini, mesin MMAPv1 menggunakan Power of 2 Sized Allocation sehingga setiap dokumen disimpan dalam catatan yang berisi dokumen itu sendiri (termasuk beberapa ruang ekstra yang dikenal sebagai padding). Padding kemudian digunakan untuk memungkinkan pertumbuhan dokumen apa pun yang mungkin dihasilkan dari pembaruan sementara itu mengurangi kemungkinan realokasi. Jika tidak, jika realokasi terjadi, Anda mungkin akan mengalami fragmentasi penyimpanan. Padding memperdagangkan ruang tambahan untuk meningkatkan efisiensi sehingga mengurangi fragmentasi. Untuk beban kerja dengan volume penyisipan, pembaruan, atau penghapusan yang tinggi, alokasi kekuatan 2 harus paling disukai sedangkan alokasi kecocokan yang tepat ideal untuk koleksi yang tidak melibatkan beban kerja pembaruan atau penghapusan apa pun.

Kekuatan Alokasi 2 Ukuran

Untuk pertumbuhan dokumen yang lancar, strategi ini digunakan di mesin penyimpanan MMAPv1. Setiap record memiliki ukuran dalam byte yang merupakan pangkat 2, yaitu (32, 64, 128, 256, 512...2MB). 2MB menjadi batas default yang lebih besar untuk dokumen apa pun yang melampaui ini, memorinya dibulatkan ke kelipatan 2MB terdekat. Misalnya, jika sebuah dokumen berukuran 200MB, ukuran ini akan dibulatkan menjadi 256MB dan ruang tukar 56MB akan tersedia untuk pertumbuhan tambahan apa pun. Hal ini memungkinkan dokumen untuk berkembang alih-alih memicu realokasi yang perlu dilakukan sistem saat dokumen mencapai batas ruang yang tersedia.

Manfaat Alokasi Daya 2 Ukuran

  1. Gunakan kembali catatan yang dibebaskan untuk mengurangi fragmentasi: Dengan konsep ini, catatan dikuantisasi memori untuk memiliki ukuran tetap yang cukup besar untuk menampung dokumen baru yang sesuai dengan ruang yang dialokasikan yang dibuat oleh penghapusan atau relokasi dokumen sebelumnya.
  2. Mengurangi pemindahan dokumen: Seperti disebutkan sebelumnya, secara default MongoDB menyisipkan dan memperbarui yang membuat ukuran dokumen lebih besar dari ukuran catatan yang ditetapkan akan menghasilkan pembaruan indeks juga. Ini berarti dokumen telah dipindahkan. Namun, bila ada cukup ruang untuk pertumbuhan di dalam dokumen, dokumen tidak akan dipindahkan sehingga lebih sedikit pembaruan untuk indeks.

Penggunaan Memori

Semua memori bebas pada mesin di mesin penyimpanan MMAPv1 digunakan sebagai cache. Perangkat kerja dengan ukuran yang tepat dan kinerja optimal dicapai melalui perangkat kerja yang sesuai dengan memori. Selain itu, untuk setiap 60 detik, MMAPv1 menghapus perubahan data ke disk sehingga menghemat memori cache. Nilai ini dapat diubah sedemikian rupa sehingga pembilasan dapat sering dilakukan. Karena semua memori kosong digunakan sebagai cache, jangan kaget bahwa alat pemantauan sumber daya sistem akan menunjukkan bahwa MongoDB menggunakan banyak memori karena penggunaan ini bersifat dinamis.

Manfaat Mesin Penyimpanan MMAPv1

  1. Mengurangi fragmentasi pada disk saat menggunakan strategi pra-alokasi.
  2. Pembacaan yang sangat efisien saat set kerja telah dikonfigurasi agar sesuai dengan memori.
  3. Pembaruan di tempat yaitu pembaruan bidang individual dapat menghasilkan lebih banyak data yang disimpan sehingga meningkatkan pembaruan dokumen besar dengan penulis bersamaan yang minimal.
  4. Dengan sedikitnya jumlah penulis bersamaan, kinerja penulisan dapat ditingkatkan melalui konsep sering membuang data ke disk.
  5. Penguncian tingkat koleksi memfasilitasi operasi penulisan. Skema penguncian adalah salah satu faktor terpenting dalam kinerja basis data. Dalam hal ini, hanya 1 klien yang dapat mengakses database pada satu waktu. Ini menciptakan skenario sedemikian rupa sehingga operasi mengalir lebih cepat daripada saat disajikan secara serial oleh mesin penyimpanan.
Beberapa Sembilan Menjadi DBA MongoDB - Membawa MongoDB ke ProduksiPelajari tentang apa yang perlu Anda ketahui untuk menerapkan, memantau, mengelola, dan menskalakan MongoDBUnduh secara Gratis

Batasan Mesin Penyimpanan MMAPv1

  1. Utilisasi ruang yang tinggi saat melakukan iterasi. MMAPv1 tidak memiliki strategi kompresi untuk sistem file sehingga terjadi alokasi ruang rekaman yang berlebihan.
  2. Pembatasan akses koleksi untuk banyak klien saat melakukan operasi tulis. MMAPv1 menggunakan strategi penguncian tingkat koleksi yang berarti 2 atau lebih klien tidak dapat mengakses koleksi yang sama pada saat yang sama sehingga penulisan memblokir semua pembacaan ke koleksi ini. Ini mengarah pada konkurensi kasar yang membuat penskalaan mesin MMAPv1 tidak mungkin dilakukan.
  3. Kerusakan sistem berpotensi mengakibatkan hilangnya data jika opsi penjurnalan tidak diaktifkan. Namun, meskipun demikian, jendelanya terlalu kecil tetapi setidaknya dapat menyelamatkan Anda dari skenario kehilangan data yang besar.
  4. Penggunaan penyimpanan tidak efisien. Saat menggunakan strategi pra-alokasi, beberapa dokumen akan menempati lebih banyak ruang pada disk daripada data itu sendiri.
  5. Jika ukuran set kerja melebihi memori yang dialokasikan, kinerja akan turun secara signifikan. Selain itu, mendokumentasikan pertumbuhan yang signifikan setelah penyimpanan awal dapat memicu I/O tambahan sehingga menyebabkan masalah kinerja.

Membandingkan Mesin Penyimpanan MMAPv1 dan WiredTiger

Fitur Utama MMAPv1 WiredTiger
kinerja CPU Menambahkan lebih banyak inti CPU sayangnya tidak meningkatkan kinerja Kinerja meningkat dengan sistem multicore
Enkripsi Karena file yang dipetakan memori digunakan, itu tidak mendukung enkripsi apa pun Enkripsi untuk data saat transit dan sisanya tersedia di MongoDB enterprise dan instalasi Beta
Skalabilitas Penulisan serentak yang dihasilkan dari penguncian tingkat koleksi tidak memungkinkan untuk diskalakan. Peluang besar untuk keluar karena tingkat penguncian paling sedikit adalah dokumen itu sendiri.
Menyetel Sangat kecil kemungkinan untuk menyetel mesin penyimpanan ini Banyak penyetelan yang dapat dilakukan di sekitar variabel seperti ukuran cache, interval pos pemeriksaan, dan tiket baca/tulis
Kompresi data Tidak ada kompresi data sehingga lebih banyak ruang dapat digunakan Metode kompresi cepat dan zlib tersedia sehingga dokumen dapat menempati lebih sedikit ruang daripada di MMAPv1
Transaksi atom Hanya berlaku untuk satu dokumen Sejak versi 4.0, transaksi atom pada multi-dokumen didukung.
Memori Semua memori kosong pada mesin digunakan sebagai cache Cache sistem file dan cache internal digunakan
Pembaruan Mendukung pembaruan di tempat sehingga unggul dalam beban kerja dengan penyisipan volume besar, pembacaan, dan pembaruan di tempat Tidak mendukung pembaruan di tempat. Seluruh dokumen harus ditulis ulang.

Kesimpulan

Ketika datang ke pemilihan mesin penyimpanan untuk database, banyak orang tidak tahu mana yang harus dipilih. Pilihannya biasanya bergantung pada beban kerja yang akan dihadapinya. Pada ukuran umum, MMAPv1 akan membuat pilihan yang buruk dan itulah sebabnya MongoDB membuat banyak kemajuan pada opsi WiredTiger. Namun, itu masih dapat mengalahkan beberapa mesin penyimpanan lain tergantung pada kasus penggunaan misalnya di mana Anda hanya perlu melakukan beban kerja membaca atau perlu menyimpan banyak koleksi terpisah dengan dokumen besar di mana 1 atau 2 bidang sering diperbarui.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. kueri sql ke mongodb?

  2. Bagaimana cara mengambil nilai dari mongoDB, dengan nama kuncinya?

  3. Impor Data CSV sebagai Array di MongoDB menggunakan mongoimport

  4. Upsert Cepat atau Massal di pymongo

  5. Semua yang Perlu Anda Ketahui Tentang Klien MongoDB