Razumijevanje novinarstva u MongoDB-u

Blog daje kratki podatak o Journalingu u MongoDB-u

Rad s operacijom Mongod Write

Mongod je primarno domaćin operacija pisanja u memoriji u zajedničkom prikazu. Zove se dijeljeno, jer ima mapiranje memorije na stvarnom disku.





Na primjer, korisnička podatkovna datoteka čuva se na data dd i ima mapiranje memorije. Ovdje prvo potiskuje sve podatke u memoriju, a nakon određenog intervala podatke prebacuje u memoriju, što se događa svakih šezdeset sekundi i korisnik u tom procesu nema utjecaja.

Ovdje se ovaj postupak naziva No Journal Option (Opcija bez dnevnika), što znači da u slučaju kašnjenja od 60 sekundi radi spremanja podataka iz memorije na disk ili naglog isključivanja, to znači da se svi podaci koji se nalaze u memoriji ne mogu dohvatiti. Stoga Journaling ovdje postaje relevantan.



što je bafer čitač

Važno je znati da je Journaling bio onemogućen prije verzije 2.4.10, ali je nakon toga omogućen.

U trenutku kada započne mongod proces, može se primijetiti sljedeća izjava:

Dir časopisa = D: Rana2custom datajournal



Ovdje je Imenik dnevnika podređeni direktorij unutar direktorija podataka i prema zadanim je postavkama omogućen.

Što je vođenje dnevnika u MongoDB-u?

U ovom se procesu događa operacija pisanja u mongod, koja zatim stvara promjene u privatnom prikazu. Prvi blok je memorija, a drugi blok je 'moj disk'. Nakon određenog intervala, koji se naziva ‘interval urezivanja dnevnika’, privatni prikaz zapisuje te operacije u direktorij dnevnika (koji se nalazi na disku).

Jednom kada se dogodi predavanje dnevnika, mongod gura podatke u zajednički prikaz. Kao dio procesa, on se zapisuje u stvarni direktorij podataka iz zajedničkog prikaza (jer se taj proces događa u pozadini). Osnovna prednost je u tome što imamo smanjeni ciklus sa 60 sekundi na 200 milisekundi.

U scenariju u kojem dolazi do prekida u bilo kojem trenutku ili flash disk ostaje nedostupan posljednjih 59 sekundi (imajući na umu postojeće podatke u direktoriju dnevnika / operacijama pisanja), a onda, kada sljedeći put mongod započne, u osnovi ponavlja sve operacije pisanja zapisuje i upisuje u stvarni direktorij podataka.

Kako radi?

Ovdje se, nakon što se dogodi urezivanje, ista operacija ponavlja u zajedničkom prikazu, a zatim, nakon šezdeset sekundi, događa se flash disk.

Nakon bljeska, podaci se obrađuju. Ovdje su podaci označeni kao obrađeni u direktoriju dnevnika, što znači da svakih šezdeset sekundi provjerava podatke koje je kopirao i one koji bi trebali biti uklonjeni iz dnevnika.

Korištenje Journalinga je poput korištenja dnevnika, što je razlog tome što stvara dnevnik rada pisanja kako bi se povećala trajnost. Dnevnik je privremena pohrana, što znači da zadržava samo dnevnik operacija pisanja kao na čekanju u direktoriju dnevnika. Također, zajednički prikaz ima podatke, ali direktorij dnevnika ima operacije.

koja je razlika između gita i githuba

Na primjer, ako korisnik piše neke podatke bez dnevnika, tada god se podaci upisivali, njegovo mapiranje memorije omogućuje korisniku da zna mjesto na kojem su podaci zapisani.

Veza između privatnog pogleda i zajedničkog prikaza

Nakon što se urezivanje dogodi, označeno je kao proces u direktoriju dnevnika, a izvršeno je još jedno mapiranje trenutnog prikaza zajedničkog / privatnog pogleda (bez dijeljenja podataka).

Na grafikonu su sve plave stavke u RAM-u (memorija s slučajnim pristupom), a Šafran označava disk.

Ako u slučaju da podaci nisu bljeskali u direktoriju podataka, ali se operacije pisanja nalaze u direktoriju podataka, tada će mongod ponovno obraditi i primijeniti operacije pisanja na direktorij podataka.

Važno je napomenuti da se u scenariju u kojem se pad dogodi prije urezivanja dnevnika, podaci koji jesuu priloguu roku od 200 milisekundi bit će izgubljeni.

Također imajte na umu da u direktorij dnevnika nastavljamo s upisivanjem stvarne operacije.

U primjeru izjave, kao što je ‘Db.class.insert’ što je operacija umetanja, podaci u umetnuti u operacije klase. Dakle, operacija klase zapravo ne ostaje, ali operacija ostaje.

Također se mora primijetiti da ako postoji kašnjenje u korištenju dnevnika, to utječe na performanse.

Dnevnik se također može imati u pozadini kao asinkroni postupak, a ne raditi ništa u operacijama na sinkroni način. Dnevnik se također preporučuje u produkciji.

Drugo, vremenski okvir intervala urezivanja dnevnika od '200 milisekundi' može se konfigurirati, što se može omogućiti s '- - interval urezivanja dnevnika' bilo gdje između 3 i 300 milisekundi, što sve ovisi o nefunkcionalnim zahtjevima (koliko često se upisivanje događa i koliko često netko želi pisati u direktorij dnevnika). U slučaju da se odvijaju teške operacije pisanja, poželjno je imati manje milisekunde.

Također imajte na umu da privatni prikaz sadrži stvarne podatke jer su privatni mapirani sa zajedničkim prikazom. Zajednički prikaz ovdje ga prebacuje u direktorij podataka.

U ovom procesu, prednost koju stječemo je u slučaju da imamo pad sustava i nema dostupnih podataka koje trebamo upisivati ​​u bljeskalice, tada će sljedeći poslužitelj koji ponovo pokreće mongod provjeriti oporavak direktorija dnevnika. Oporavit će, ponoviti i zapisati operacije u direktorij podataka, a zatim započinje.

Imate pitanje za nas? Spomenite ih u odjeljku za komentare i javit ćemo vam se.

Vezane objave:

kako koristiti bitne operatore u javi -