Memahami Jurnal di MongoDB



Blog tersebut memberikan ringkas mengenai Journaling in MongoDB

Bekerja dengan Operasi Tulis Mongod

Mongod terutamanya menganjurkan operasi menulis dalam ingatan dalam pandangan bersama. Ia dipanggil bersama kerana mempunyai pemetaan memori dalam cakera sebenarnya.





Sebagai contoh, fail data pengguna disimpan pada data dd dan, ia mempunyai pemetaan memori. Di sini, pertama-tama ia mendorong semua data ke memori dan setelah selang waktu yang ditentukan, data akan dimasukkan ke memori, yang berlaku setiap enam puluh saat dan pengguna tidak terpengaruh dalam proses ini.

Di sini, proses ini dinamakan Pilihan Jurnal Tanpa Jurnal, yang bermaksud sekiranya terdapat kelewatan 60 saat untuk menyimpan data dari memori ke cakera atau penutupan secara tiba-tiba, ini bermaksud bahawa data apa pun yang ada dalam memori mungkin tidak akan diambil. Oleh itu, Jurnal menjadi relevan di sini.



Penting untuk mengetahui bahawa Jurnal dilumpuhkan sebelum versi 2.4.10 secara lalai tetapi setelah itu diaktifkan.

Sebaik sahaja proses mongod dimulakan, pernyataan berikut dapat diperhatikan:

ansible vs puppet vs chef

Jurnal dir = D: Jurnal data custom2



Di sini, Jurnal Direktori adalah direktori anak di dalam direktori data dan secara lalai diaktifkan.

Apa itu Jurnal di MongoDB?

Dalam proses ini, operasi menulis berlaku di mongod, yang kemudian membuat perubahan pada pandangan peribadi. Blok pertama adalah memori dan blok kedua adalah 'cakera saya'. Selepas selang waktu yang ditentukan, yang disebut 'jurnal komit interval', pandangan peribadi menulis operasi tersebut dalam direktori jurnal (berada di dalam cakera).

Setelah komit jurnal berlaku, mongod mendorong data ke paparan bersama. Sebagai sebahagian daripada proses, ia ditulis ke direktori data sebenar dari pandangan bersama (kerana proses ini berlaku di latar belakang). Kelebihan asasnya ialah, kita mempunyai kitaran yang berkurang dari 60 saat hingga 200 milisaat.

Dalam senario di mana gangguan berlaku pada bila-bila masa atau cakera kilat tidak dapat digunakan selama 59 saat terakhir (dengan mengingat data yang ada dalam direktori jurnal / operasi tulis), maka ketika mongod dimulakan, pada dasarnya memainkan semula semua operasi tulis log dan menulis ke dalam direktori data sebenar.

Bagaimana ia berfungsi?

Di sini, setelah melakukan komit, operasi yang sama dimainkan semula dalam pandangan bersama dan kemudian, setelah enam puluh saat, cakera kilat berlaku.

Setelah dimatikan, data diproses. Data di sini ditandai sebagai diproses dalam direktori jurnal, yang bermaksud bahawa setiap enam puluh saat, ia memeriksa data yang telah disalinnya dan data yang seharusnya dikeluarkan dari jurnal.

Menggunakan Jurnal adalah seperti menggunakan log, sebabnya, ia membuat log operasi tulis untuk meningkatkan daya tahan. Jurnal adalah penyimpanan sementara, yang bermaksud ia hanya menyimpan log operasi penulisan yang belum selesai dalam direktori jurnal. Juga, paparan bersama mempunyai data tetapi direktori jurnal mempunyai operasi.

Sebagai contoh, jika pengguna menulis beberapa data tanpa Journaling, maka data apa pun yang ditulis, pemetaan memori membolehkan pengguna mengetahui lokasi di mana data tersebut ditulis.

Pautan antara Paparan Peribadi dan Paparan Berkongsi

Setelah komit berlaku, ia ditandai sebagai proses dalam direktori jurnal, dan ada pemetaan lain yang dilakukan untuk melihat pandangan bersama / pandangan peribadi (tanpa perkongsian data).

Dalam carta, semua item biru berada dalam RAM (memori akses rawak) dan Saffron menandakan cakera.

Jika berlaku, data tidak di-flash di direktori data tetapi operasi tulis ada di direktori data, maka mongod akan memproses ulang dan menerapkan operasi tulis ke direktori data.

Titik penting untuk diperhatikan adalah bahawa dalam senario di mana kemalangan berlaku sebelum jurnal melakukan, data yang adadilampirkandalam masa 200 milisaat akan hilang.

Perhatikan juga bahawa dalam direktori jurnal, kami terus menulis operasi sebenarnya.

Dalam pernyataan contoh, seperti ‘Db.class.insert’ yang merupakan operasi memasukkan, data yang dimasukkan ke dalam operasi kelas. Oleh itu operasi kelas sebenarnya tidak kekal tetapi operasi tetap ada.

Perlu juga diperhatikan bahawa jika terdapat kelewatan dalam penggunaan jurnal, hal itu akan mempengaruhi prestasi.

Seseorang juga boleh mempunyai Journaling di latar belakang sebagai proses tidak segerak dan tidak melakukan apa-apa dalam operasi secara serentak. Jurnal disyorkan dalam pengeluaran juga.

Kedua, jurnal komit jangka masa '200 milisaat' dapat dikonfigurasi, yang dapat diaktifkan dengan '- - jurnal komit selang' di mana saja antara 3 hingga 300 milisaat, yang semuanya bergantung pada keperluan yang tidak berfungsi (seberapa kerap penulisan berlaku dan berapa kerap seseorang mahu menulis di direktori jurnal). Sekiranya, operasi menulis berat sedang dilakukan, maka disarankan untuk mempunyai milisaat kurang.

Perhatikan juga bahawa pandangan peribadi menyimpan data sebenar kerana peribadi dipetakan dengan pandangan bersama. Paparan yang dikongsi di sini memindahkannya ke direktori data.

Dalam proses ini, kelebihan yang kita peroleh adalah, sekiranya kita mengalami kerosakan server dan tidak ada data yang tersedia yang perlu ditulis pada flash, maka pelayan mongod yang akan memulakan semula pelayan berikutnya akan memeriksa direktori jurnal untuk pemulihan. Ia akan pulih, mainkan semula dan tulis operasi dalam direktori data dan kemudian ia bermula.

Ada soalan untuk kami? Sebutkannya di bahagian komen dan kami akan menghubungi anda.

Catatan berkaitan: