Forstå journalføring i MongoDB



Bloggen gir en kort om Journaling i MongoDB

Arbeider med Mongod Write Operation

Mongod vert primært skriveoperasjonane i minnet i delt visning. Det kalles delt fordi det har minnekartlegging på den faktiske platen.





For eksempel holdes brukerens datafil på data dd, og den har en minnekartlegging. Her skyver den først alle dataene til minnet, og etter et spesifisert intervall blinker dataene inn i minnet, som oppstår hvert seksti sekund, og brukeren blir ikke påvirket av denne prosessen.

Her kalles denne prosessen No Journal Option, som betyr at i tilfelle det er en 60 sekunders forsinkelse for å lagre data fra minne til plate eller brå nedleggelse, betyr det at uansett hvilke data som er i minnet, kanskje ikke blir hentet. Dermed blir journalføring relevant her.



java forskjell mellom hashmap og hashtable

Det er viktig å vite at journalføring ble deaktivert før versjon 2.4.10 som standard, men etter det er den aktivert.

I det øyeblikket mongodsprosessen starter, kan følgende uttalelse observeres:

Journal dir = D: Rana2custom datajournal



Her er Journal Directory en underkatalog i datakatalogen og er som standard aktivert.

Hva er journalføring i MongoDB?

I denne prosessen skjer en skriveoperasjon i Mongod, som deretter skaper endringer i privat visning. Den første blokken er minne og den andre blokken er 'min plate'. Etter et spesifisert intervall, som kalles et 'journal commit interval', skriver den private visningen de operasjonene i journalkatalogen (som ligger på platen).

Når journalforpliktelsen skjer, skyver Mongod data i delt visning. Som en del av prosessen blir den skrevet til den faktiske datakatalogen fra den delte visningen (ettersom denne prosessen skjer i bakgrunnen). Den grunnleggende fordelen er at vi har en redusert syklus fra 60 sekunder til 200 millisekunder.

I et scenario der det oppstår et avbrudd når som helst eller flash-platen forblir utilgjengelig de siste 59 sekundene (med tanke på de eksisterende dataene i journalkatalogen / skriveoperasjoner), og når neste gang mongod starter, spiller den i utgangspunktet all skrivedrift logger og skriver inn i selve datakatalogen.

Hvordan det fungerer?

Her, når en forpliktelse skjer, blir den samme operasjonen avspilt i delt visning, og deretter, etter seksti sekunder, skjer flash-platen.

Etter at den er blinket, blir dataene behandlet. Dataene her er merket som behandlet i journalkatalogen, noe som betyr at det sjette sekund sjekker dataene det har kopiert og de som skal fjernes fra journalen.

Å bruke journal er som å bruke en logg, fordi det oppretter en skrivoperasjonslogg for å øke holdbarheten. Journalføring er midlertidig lagring, noe som betyr at det bare holder skriveoperasjonsloggen som ventende i journalkatalogen. Den delte visningen har også dataene, men journalkatalogen har operasjonene.

For eksempel, hvis brukeren skriver noen data uten journalføring, og uansett hvilke data som skrives, vil minnekartleggingen la brukeren vite stedet der dataene skrives.

Kobling mellom privat visning og delt visning

Etter at forpliktelsen har skjedd, blir den merket som en prosess i journalkatalogen, og det blir gjort en annen kartlegging for gjeldende visning av delt / privat visning (uten datadeling).

I diagrammet er alle de blå elementene i RAM (random access memory) og Safran betegner platen.

Hvis data i tilfelle ikke blinker i datakatalogen, men skriveoperasjoner er der i datakatalogen, vil Mongod behandle og bruke skriveoperasjoner i datakatalogen.

Et viktig poeng å merke seg er at i et scenario der et krasj skjer før journalforpliktelse, dataene som varvedlagtinnen 200 millisekunder vil gå tapt.

c ++ sortere en matrise

Vær også oppmerksom på at vi i journalkatalogen fortsetter å skrive den faktiske operasjonen.

I eksempeluttalelsen, som f.eks ‘Db.class.insert’ som er en innsatsoperasjon, dataene blir satt inn i klasseoperasjoner. Så klasseoperasjonen forblir faktisk ikke, men operasjonen ligger.

Det må også observeres at hvis det er en forsinkelse i bruk av journal, påvirker det ytelsen.

Man kan også ha journalføring i bakgrunnen som en asynkron prosess og ikke gjøre noe i operasjonene på en synkron måte. Journaling anbefales også i produksjonen.

For det andre kan tidsintervallet for journalforpliktelsesintervall på '200 millisekunder' konfigureres, som kan aktiveres med '- - journalforpliktingsintervall' hvor som helst mellom 3 og 300 millisekunder, alt avhenger av ikke-fungerende krav (hvor ofte skriving skjer og hvor ofte man vil skrive i journalkatalogen). I tilfelle tunge skriveoperasjoner pågår, er det tilrådelig å ha mindre millisekunder.

Vær også oppmerksom på at privat visning inneholder faktiske data som privat er kartlagt med delt visning. Den delte visningen her blinker den til datakatalogen.

I denne prosessen er fordelen vi får, i tilfelle vi har serverkrasj og det ikke er data tilgjengelig som trenger å skrives på blink, så vil neste server som starter Mongod, sjekke journalkatalogen for gjenoppretting. Den vil gjenopprette, spille av og skrive operasjoner i datakatalogen, og så starter den.

Har du et spørsmål til oss? Nevn dem i kommentarfeltet, så kommer vi tilbake til deg.

Relaterte innlegg:

forskjellige typer rammer i selen