Forståelse af journalføring i MongoDB



Bloggen giver en kort beskrivelse af Journaling i MongoDB

Arbejder med Mongod Write Operation

Mongod er primært vært for skriveoperationerne i hukommelsen i delt visning. Det kaldes delt, fordi det har hukommelseskortlægning på den aktuelle disk.





For eksempel opbevares brugerens datafil på data dd, og den har en hukommelseskortlægning. Her skubber det først alle data til hukommelsen, og efter et specificeret interval blinker dataene ind i hukommelsen, hvilket forekommer hvert 60. sekund, og brugeren påvirkes ikke af denne proces.

Her kaldes denne proces No Journal Option, hvilket betyder, at hvis der er en 60 sekunders forsinkelse for at gemme data fra hukommelse til disk eller pludselig nedlukning, betyder det, at uanset hvilke data der er i hukommelsen, muligvis ikke kan hentes. Således bliver journaling relevant her.



lære pl sql online gratis

Det er vigtigt at vide, at journaling som standard var deaktiveret før version 2.4.10, men derefter er det blevet aktiveret.

I det øjeblik mongod-processen starter, kan følgende udsagn overholdes:

Journal dir = D: Rana2custom datajournal



Her er Journal Directory et underordnet bibliotek i datakataloget og er som standard aktiveret.

Hvad er journaling i MongoDB?

I denne proces opstår en skriveoperation i Mongod, som derefter skaber ændringer i privat visning. Den første blok er hukommelse, og den anden blok er 'min disk'. Efter et specificeret interval, der kaldes et 'journal commit interval', skriver den private visning disse operationer i journalbiblioteket (der findes på disken).

Når journalforpligtelsen sker, skubber Mongod data til delt visning. Som en del af processen bliver den skrevet til den aktuelle datakatalog fra den delte visning (da denne proces sker i baggrunden). Den grundlæggende fordel er, at vi har en reduceret cyklus fra 60 sekunder til 200 millisekunder.

I et scenarie, hvor der opstår en afbrydelse på et hvilket som helst tidspunkt, eller flashdisken forbliver utilgængelig i de sidste 59 sekunder (under hensyntagen til de eksisterende data i journalkatalog / skrivefunktioner), og når næste gang mongod starter, afspilles den grundlæggende al skrivehandling logger og skriver ind i den aktuelle datakatalog.

Hvordan det virker?

Her, når en begivenhed sker, afspilles den samme handling i delt visning, og derefter, efter tres sekunder, sker flashdisken.

Når det er blinket, behandles dataene. Dataene her er markeret som behandlet i journalkataloget, hvilket betyder, at det hvert 60. sekund kontrollerer de data, det har kopieret, og dem, der skal fjernes fra journal.

Brug af journaling er som at bruge en log, fordi det opretter en skrivoperationslog for at øge holdbarheden. Journaling er midlertidig opbevaring, hvilket betyder, at det kun holder skriveoperationslog som afventende i journalkataloget. Den delte visning har også dataene, men journalkataloget har operationerne.

For eksempel, hvis brugeren skriver nogle data uden journalføring, så uanset hvilke data der skrives, lader hukommelseskortingen brugeren kende det sted, hvor dataene skrives.

Forbindelse mellem privat visning og delt visning

Efter forpligtelsen er markeret som en proces i journalbiblioteket, og der udføres en anden kortlægning for den aktuelle visning af delt / privat visning (uden datadeling).

I diagrammet er alle de blå emner i RAM (tilfældig adgangshukommelse), og Safran betegner disken.

Hvis i tilfælde af, at data ikke blinker i datakataloget, men der er skriveoperationer i datakataloget, så vil Mongod genbehandle og anvende skriveoperationer til datakataloget.

Et vigtigt punkt at bemærke er, at de data, der var, i et scenarie, hvor der sker et nedbrud inden journalforpligtelsevedhæftetinden for 200 millisekunder går tabt.

spørgsmål til Google Data Scientist Interview

Bemærk også, at vi i journalkataloget fortsætter med at skrive den aktuelle handling.

I eksempelsætningen, såsom 'Db.klasse.indsættelse' som er en indsætningsoperation, dataene indsættes i klasseoperationer. Så klasseoperationen forbliver faktisk ikke, men operationen ligger.

Det skal også bemærkes, at hvis der er en forsinkelse i brugen af ​​journal, påvirker det præstationen.

Man kan også have journalføring i baggrunden som en asynkron proces og ikke gøre noget i operationerne på en synkron måde. Journalering anbefales også i produktionen.

For det andet kan tidsintervallet for journalforpligtelsesinterval på '200 millisekunder' konfigureres, hvilket kan aktiveres med '- - journalforpligtelsesinterval' hvor som helst mellem 3 og 300 millisekunder, hvilket alt afhænger af de ikke-fungerende krav (hvor ofte skrivning sker, og hvor ofte man vil skrive i journalkataloget). Hvis der foregår tunge skriveoperationer, anbefales det at have mindre millisekunder.

Bemærk også, at privat visning indeholder faktiske data, da privat kortlægges med delt visning. Den delte visning her blinker den til datakataloget.

I denne proces er den fordel, vi opnår, i tilfælde af at vi har servernedbrud, og der ikke er nogen tilgængelige data, der skal skrives på blink, så vil den næste server, der genstarter mongod, kontrollere journalkataloget for gendannelse. Det vil gendanne, afspille og skrive operationer i datakataloget, og så starter det.

Har du et spørgsmål til os? Nævn dem i kommentarfeltet, så vender vi tilbage til dig.

Relaterede indlæg:

hvad er .format i python