Di mongoDB3 muncul mesin penyimpanan baru: WiredTiger . Namun, MMAPv1 masih merupakan pilihan default di Mongo .
Satu mungkin tidak lebih baik dari yang lain, itu sering masalah use case dan memilih alat yang tepat untuk pekerjaan itu. Tapi mesin mana yang tepat untuk pekerjaan apa?
Bahkan, sementara MMAPv1 adalah mesin default, WiredTiger tampaknya lebih baik di hampir setiap bidang. Ini memiliki fitur yang sama dengan MMAPv1 plus:
- kinerja menulis yang lebih baik,
- konkurensi tingkat dokumen,
- kompresi,
- sistem snapshots dan pos pemeriksaan.
Saya menemukan tabel perbandingan di blog MongoDB :
Jadi kecuali jika Anda menggunakan Solaris, adakah alasan untuk tidak memilih WiredTiger?
EDIT
Berikut adalah dua video yang menjelaskan secara rinci bagian dalam WiredTiger dan MMAPv1 .
Jawaban:
Secara pribadi, saya lebih suka mesin penyimpanan mmapv1 seperti yang sekarang karena tiga alasan.
Alasan 1: Kedewasaan
Bukannya WiredTiger belum dewasa. Tapi mmapv1 dipahami dengan baik dan pertarungan diuji semua jalan naik dan turun, bolak-balik dan di atas dan di luar. WiredTiger telah mengalami beberapa masalah serius (lihat http://jira.mongodb.com untuk detailnya) baru-baru ini, dan saya tidak mau pelanggan saya menemukan yang berikutnya dengan cara yang sulit.
Alasan 2: Fitur
Mengingat, WT memiliki beberapa ... fitur yang pada dasarnya luar biasa. Masalahnya adalah: Saya belum melihat ada yang mendapat manfaat dari mereka. Kompresi? Either way, Anda mengorbankan agak sulit untuk mencapai kinerja untuk ruang disk yang agak murah. Kurangnya masalah migrasi dokumen untuk memperluas dokumen? Yah, kami masih memiliki batas ukuran 16MB dan kompleksitas tambahan untuk dokumen yang disematkan, terutama ketika penyematan berlebihan.
Ada fitur lain, tetapi secara umum: Saya tidak melihat banyak manfaat dari mereka seperti yang sekarang .
Alasan 3: Total biaya kepemilikan
Untuk proyek-proyek baru, WT mungkin baik-baik saja, terutama sejak 3.2, karena yang berikut ini tidak berlaku.
Melakukan migrasi data mahal. Perlu direncanakan, rencana harus disetujui oleh semua pemangku kepentingan, rencana darurat harus dibuat dan disepakati, migrasi perlu disiapkan, dilaksanakan dan ditinjau. Sekarang gandakan waktu yang dibutuhkan dengan para pemangku kepentingan yang merupakan bagian dari proses ini, dan biaya untuk migrasi data meroket. Pengembalian investasi di sisi lain tampaknya agak kecil. Anda dapat mengukur sedikit daripada melakukan migrasi jika Anda memperhitungkan faktor-faktor tersebut. Untuk memberi Anda kesan: Saya memperkirakan sekitar satu "minggu kerja" per pemangku kepentingan jika migrasi direncanakan, dilaksanakan, dan ditinjau dengan benar. Dengan biaya $ 100 per jam per orang, dan hanya tiga orang yang terlibat (manajer, DBA dan pengembang), itu berjumlah $ 12.000. Perhatikan bahwa ini adalah perkiraan konservatif.
Kesimpulan
Semua faktor di atas telah membawa saya pada kesimpulan untuk tidak menggunakan WT sama sekali. Saat ini.
Memperbarui
Posting ini sudah berumur beberapa bulan sekarang, sehingga layak untuk diperbarui
Pada saat jatuh tempo
Komentar asli saya tentang jatuh tempo sudah usang. WiredTiger belum memiliki masalah besar untuk sementara waktu sekarang dan telah menjadi mesin penyimpanan default pada MongoDB 3.2
Tentang Fitur
Komentar asli saya masih memiliki validitas, imho.
Kompresi
Namun, ketika menjadi terbatas pada anggaran atau, secara umum, kinerja bukanlah perhatian utama, tradeoff kinerja agak kecil, dan Anda pada dasarnya memperdagangkan sedikit dampak kinerja (bila dibandingkan dengan WT yang tidak terkompresi) untuk ruang disk, menggunakan apa yang sebaliknya akan menganggur sekitar: CPU.
Enkripsi
MongoDB 3.2 Enterprise memperkenalkan kemampuan agar penyimpanan WiredTiger dienkripsi. Untuk data dengan kebutuhan keamanan yang ditingkatkan, ini adalah fitur mematikan dan menjadikan WT satu-satunya mesin penyimpanan pilihan, baik secara teknis (MMAPv1 tidak mendukung enkripsi) dan secara konseptual. Menyingkirkan kemungkinan partisi disk terenkripsi, tentu saja, meskipun Anda mungkin tidak memiliki opsi itu di beberapa lingkungan.
Penguncian tingkat dokumen
Saya harus mengakui bahwa saya pada dasarnya menghilangkan fitur WT dalam analisis saya di atas, terutama karena itu tidak berlaku untuk saya atau pelanggan saya ketika saya menulis jawaban asli.
Tergantung pada pengaturan Anda, terutama ketika Anda memiliki banyak klien menulis bersamaan, fitur ini dapat memberikan peningkatan kinerja yang hebat.
Total biaya kepemilikan
Melakukan migrasi masih mahal. Namun, dengan mempertimbangkan perubahan dalam jatuh tempo dan perubahan tampilan pada fitur, migrasi mungkin sepadan dengan investasi jika:
Kesimpulan yang Diperbarui
Untuk proyek baru, saya menggunakan WiredTiger sekarang. Karena migrasi dari penyimpanan WiredTiger yang terkompresi ke tidak terkompresi agak mudah, saya cenderung memulai dengan kompresi untuk meningkatkan pemanfaatan CPU ("dapatkan lebih banyak untuk hasil"). Jika kompresi memiliki dampak nyata pada kinerja atau UX, saya bermigrasi ke WiredTiger yang tidak terkompresi.
Untuk proyek dengan banyak penulis bersamaan, jawaban untuk bermigrasi atau tidak hampir selalu "Ya", kecuali - kecuali anggaran proyek melarang investasi. Dalam jangka panjang, peningkatan kinerja harus membayar sendiri, jika penempatan itu direncanakan secara wajar. Namun, Anda perlu menambahkan beberapa waktu pengembangan ke perhitungan, karena dalam beberapa kasus driver perlu diperbarui, dan mungkin ada masalah yang perlu ditangani.
Untuk proyek-proyek yang ketat anggarannya dan tidak mampu menyediakan lebih banyak ruang disk untuk saat ini, bermigrasi ke WiredTiger yang terkompresi dapat menjadi pilihan, tetapi kompresi menempatkan sedikit beban pada CPU, sesuatu yang tidak pernah terjadi dengan MMAPv1. Selain itu, biaya migrasi mungkin sangat mahal untuk proyek semacam itu.
sumber
Dua sen saya:
Menulis jurnal di WiredTiger dapat kehilangan pembaruan dalam shutdowns keras karena menggunakan buffering di-memori untuk menyimpan catatan jurnal.
Penjurnalan di MMAPv1 menulis perubahan dalam file jurnal on-disk.
sumber
Kami beralih ke WiredTiger dari MMAPv1 dengan iming-iming kenaikan kinerja 7x hingga 10x. Kami harus kembali ke MMAPv1 karena MongoDB akan mengunci ketika cache WiredTiger mencapai 100%. Kami telah mendokumentasikan pengalaman kami di sini - https://blog.clevertap.com/sleepless-nights-with-mongodb-wiredtiger-and-our-return-to-mmapv1/
sumber