Înțelegerea jurnalului în MongoDB



Blogul oferă un rezumat despre Jurnalizarea în MongoDB

Lucrul cu operația de scriere Mongod

Mongod găzduiește în primul rând operațiile de scriere în memorie în vizualizare partajată. Se numește partajat, deoarece are cartografierea memoriei pe discul real.





De exemplu, fișierul de date al utilizatorului este păstrat la datele dd și are o mapare a memoriei. Aici, mai întâi împinge toate datele în memorie și, după un interval specificat, blochează datele în memorie, care apare la fiecare șaizeci de secunde și utilizatorul nu este afectat în acest proces.

Aici, acest proces se numește Opțiune fără jurnal, ceea ce înseamnă că, în cazul în care există o întârziere de 60 de secunde pentru a salva datele de pe memorie pe disc sau pentru o oprire bruscă, înseamnă că orice date din memorie nu pot fi recuperate. Astfel, jurnalizarea devine relevantă aici.



care sunt filtrele de context în tablou

Este important să știți că Jurnalizarea a fost dezactivată în mod implicit înainte de versiunea 2.4.10, dar după aceea a fost activată.

În momentul în care începe procesul mongod, se poate observa următoarea afirmație:

Jurnal dir = D: Rana2custom datajournal



Aici, Directory Directory este un director copil din directorul de date și implicit este activat.

Ce este Journaling în MongoDB?

În acest proces, o operație de scriere are loc în mongod, care apoi creează modificări în vizualizarea privată. Primul bloc este memoria și al doilea bloc este „discul meu”. După un interval specificat, care se numește „interval de confirmare a jurnalului”, vizualizarea privată scrie acele operații în directorul jurnalului (care se află pe disc).

Odată ce se întâmplă comiterea jurnalului, mongod împinge datele în vizualizarea partajată. Ca parte a procesului, acesta este scris în directorul de date reale din vizualizarea partajată (deoarece acest proces se întâmplă în fundal). Avantajul de bază este că avem un ciclu redus de la 60 de secunde la 200 de milisecunde.

Într-un scenariu în care apare o abruptie în orice moment sau discul flash rămâne indisponibil în ultimele 59 de secunde (ținând cont de datele existente în directorul jurnal / operațiile de scriere), atunci când data viitoare când începe mongod, acesta redă practic toate operațiile de scriere înregistrează și scrie în directorul de date real.

Cum functioneaza?

Aici, odată ce se întâmplă un commit, aceeași operație este redată în vizualizarea partajată și apoi, după șaizeci de secunde, se întâmplă discul flash.

După ce se aprinde intermitent, datele sunt procesate. Datele de aici sunt marcate ca fiind procesate în directorul jurnalului, ceea ce înseamnă că, la fiecare șaizeci de secunde, verifică datele pe care le-a copiat și pe cele care ar trebui să fie eliminate din jurnal.

Folosirea jurnalului este ca utilizarea unui jurnal, motivul fiind acela, creează un jurnal de operații de scriere pentru a crește durabilitatea. Jurnalizarea este stocare temporară, ceea ce înseamnă că păstrează doar jurnalul operațiunilor de scriere ca fiind în așteptare în directorul jurnal. De asemenea, vizualizarea partajată are datele, dar directorul jurnal are operațiile.

De exemplu, dacă utilizatorul scrie unele date fără jurnalizare, atunci orice date sunt scrise, maparea memoriei sale îi permite utilizatorului să cunoască locația în care sunt scrise datele.

Legătură între Vizualizare privată și Vizualizare partajată

După ce se întâmplă comiterea, este marcat ca un proces în directorul jurnal și există o altă mapare realizată pentru vizualizarea curentă a vizualizării partajate / private (fără partajarea datelor).

În diagramă, toate elementele albastre sunt în RAM (memorie cu acces aleatoriu), iar șofranul indică discul.

Dacă în caz, datele nu sunt afișate în directorul de date, dar operațiile de scriere sunt acolo în directorul de date, atunci mongod va reprocesa și va aplica operațiile de scriere în directorul de date.

Un punct important de remarcat este că, într-un scenariu în care un accident se întâmplă înainte de comiterea jurnalului, datele care au fostanexatîn termen de 200 de milisecunde se vor pierde.

conectivitatea bazei de date în java cu mysql

Rețineți, de asemenea, că în directorul jurnalului continuăm să scriem operațiunea reală.

În afirmația de exemplu, cum ar fi „Db.class.insert” care este o operațiune de inserare, datele sunt inserate în operații de clasă. Deci, operația de clasă nu rămâne, de fapt, dar operația rezidă.

De asemenea, trebuie observat că, dacă există o întârziere în utilizarea jurnalului, aceasta afectează performanța.

Se poate avea, de asemenea, Journaling în fundal ca proces asincron și fără a face nimic în operațiuni într-un mod sincron. Jurnalizarea este recomandată și în producție.

În al doilea rând, intervalul de timp de comitere a jurnalului de „200 milisecunde” este configurabil, care poate fi activat cu „- - interval de comitere jurnal” oriunde între 3 și 300 milisecunde, care depinde de cerințele nefuncționale (cât de frecvent se întâmplă scrierile și cât de des se dorește să scrie în directorul jurnalului). În cazul în care se desfășoară operațiuni grele de scriere, atunci este recomandabil să aveți mai puține milisecunde.

Rețineți, de asemenea, că vizualizarea privată conține date reale, deoarece privată este mapată cu vizualizare partajată. Vizualizarea partajată aici o transformă în directorul de date.

În acest proces, avantajul pe care îl obținem este, în cazul în care avem blocări ale serverului și nu există date disponibile care trebuie scrise pe flash-uri, apoi următorul server care repornește mongod va verifica directorul jurnalului pentru recuperare. Acesta va recupera, reda și scrie operațiuni în directorul de date și apoi începe.

Ai o întrebare pentru noi? Menționați-le în secțiunea de comentarii și vă vom răspunde.

Postări asemănatoare:

ce este clasa pojo în java