MongoDB menggunakan jurnal on-disk untuk menjamin operasi penulisan dan memberikan ketahanan crash. MongoDB juga membuat jurnal untuk setiap penulisan yang menyertakan lokasi disk yang tepat dan byte yang diubah dalam penulisan. Jadi, jika Anda mengalami kerusakan di server, jurnal dapat digunakan untuk memutar ulang penulisan apa pun yang belum ditulis ke file data.
MongoDB menggunakan file yang dipetakan memori untuk menulis data Anda ke disk. Secara default, file data MongoDB di-flush ke disk setiap 60 detik. Mereka juga menggunakan file yang dipetakan memori untuk jurnal, dan secara default, jurnal di-flush ke disk setiap 100 md. Karena file data akhir di-flush ke disk setiap 60 detik, jurnal tidak perlu melacak penulisan selama lebih dari satu menit. Untuk detail selengkapnya tentang mekanisme penjurnalan, lihat dokumentasi resmi. Untuk memahami cara kerja pemetaan tampilan secara lebih detail, Anda dapat melihat blog Kristina.
Menulis Jurnal Kekhawatiran
>db.data.insert({"name":"testentry"}); >db.runCommand({"getLastError":1, "j":true});
Saat Anda mengaktifkan penjurnalan MongoDB, Anda juga memiliki kemampuan untuk menentukan masalah penulisan di MongoDB dari 'Terjurnal' untuk operasi MongoDB Anda. Ini menyiratkan bahwa MongoDB mengkonfirmasi operasi tulis hanya setelah melakukan ke jurnal. Namun, ini memiliki kelemahan – ketika Anda menentukan “j”:true dengan getLastError, MongoDB akan menunggu sekitar 1/3 dari komit jurnal internal sebelum melakukan data jurnal. Interval komit jurnal default adalah 100 md – jadi MongoDB akan menunggu 30 md dan mengkomit data. Ini pada dasarnya berarti bahwa pada satu utas, Anda hanya bisa mendapatkan sekitar 33,3 penulisan/detik, dan praktik terbaik yang disarankan adalah mengelompokkan tulisan Anda. Misalnya, jika Anda memiliki 50 penulisan, gunakan pengaturan "j":true hanya pada penulisan terakhir – ini akan menyatakan bahwa semua 50 penulisan sebelumnya telah selesai.
Ringkasan
Setiap instance MongoDB produksi harus dijalankan dengan penjurnalan diaktifkan. Jika Anda tidak mengaktifkan penjurnalan dan server atau proses MongoDB Anda mogok, MongoDB tidak akan dapat memastikan integritas data. Anda harus menjalankan operasi "perbaikan" pada database, yang, tergantung pada jumlah data, dapat memakan waktu beberapa jam untuk diselesaikan. Matikan hanya jika Anda benar-benar tahu apa yang Anda lakukan. Di ScaleGrid, semua instance kami mengikuti konfigurasi praktik terbaik MongoDB dan penjurnalan telah diaktifkan secara default.