Pochopenie denníka v MongoDB



Tento blog poskytuje stručné informácie o denníku v MongoDB

Práca s operáciou zápisu Mongod

Mongod primárne hostí operácie zápisu do pamäte v zdieľanom zobrazení. Nazýva sa zdieľaný, pretože má mapovanie pamäte na skutočnom disku.





Napríklad dátový súbor používateľa sa uchováva na dátovom disku dd a má mapovanie pamäte. Tu najskôr zatlačí všetky dáta do pamäte a po stanovenom intervale tieto dáta flashuje do pamäte, čo nastáva každých šesťdesiat sekúnd a používateľ nie je týmto procesom ovplyvnený.

Tu sa tento proces nazýva No Journal Option, čo znamená, že v prípade 60-sekundového oneskorenia na uloženie údajov z pamäte na disk alebo náhleho vypnutia znamená, že sa nebudú dať načítať akékoľvek údaje, ktoré sú v pamäti. Preto sa tu stáva relevantným denník.



získať dĺžku poľa javascript

Je dôležité vedieť, že denník bol pred verziou 2.4.10 predvolene zakázaný, ale potom bol povolený.

V okamihu, keď sa začne mongodský proces, možno pozorovať nasledujúce vyhlásenie:

Denník dir = D: Rana2custom datajournal



Tu je Denníkový adresár podradený adresár v dátovom adresári a je predvolene povolený.

Čo je denníkovanie v MongoDB?

V tomto procese sa v mongode uskutoční operácia zápisu, ktorá potom vytvorí zmeny v súkromnom zobrazení. Prvý blok je pamäť a druhý blok je „môj disk“. Po zadanom intervale, ktorý sa nazýva „interval potvrdenia žurnálu“, súkromné ​​zobrazenie zapíše tieto operácie do adresára žurnálu (uloženého na disku).

Akonáhle dôjde k potvrdeniu denníka, mongod posúva údaje do zdieľaného zobrazenia. V rámci procesu sa zo zdieľaného pohľadu zapíše do skutočného dátového adresára (pretože tento proces prebieha na pozadí). Základnou výhodou je, že máme znížený cyklus zo 60 sekúnd na 200 milisekúnd.

V scenári, kde k prerušeniu dôjde v ktoromkoľvek okamihu alebo flash disk zostane nedostupný posledných 59 sekúnd (pamätajte na existujúce údaje v operáciách adresára žurnálu / zápis), potom pri ďalšom spustení mongodu v zásade nahradí všetky operácie zápisu prihlási a zapíše do skutočného adresára údajov.

Ako to funguje?

Tu, keď dôjde k potvrdeniu, sa rovnaká operácia prehrá v zdieľanom zobrazení a potom sa po šesťdesiatich sekundách uskutoční flash disk.

Po jeho blikaní sa údaje spracujú. Údaje tu sú označené ako spracované v adresári žurnálu, čo znamená, že každých šesťdesiat sekúnd kontroluje dáta, ktoré skopírovala, a tie, ktoré majú byť z denníka odstránené.

Používanie denníka je ako použitie denníka, pretože sa vytvára protokol operácie zápisu, ktorý zvyšuje trvanlivosť. Žurnálovanie je dočasné úložisko, čo znamená, že v adresári žurnálu ponecháva iba čakajúci protokol operácie zápisu. Zdieľané zobrazenie má tiež údaje, ale operácia sa týka adresára žurnálu.

Napríklad, ak používateľ zapisuje niektoré údaje bez denníka, potom bez ohľadu na to, aké údaje sa zapíšu, jeho mapovanie pamäte umožní používateľovi poznať miesto, kde sa údaje zapisujú.

Prepojenie medzi súkromným a zdieľaným zobrazením

Keď dôjde k potvrdeniu, je označený ako proces v adresári žurnálu a je urobené ďalšie mapovanie pre aktuálne zobrazenie zdieľaného / súkromného pohľadu (bez zdieľania údajov).

V grafe sú všetky modré položky v RAM (pamäť s náhodným prístupom) a šafran označuje disk.

Ak v takom prípade dáta neblikajú v dátovom adresári, ale operácie zápisu sú tam v dátovom adresári, potom mongod znovu spracuje a použije operácie zápisu do dátového adresára.

Je dôležité poznamenať, že v scenári, v ktorom dôjde k zlyhaniu pred potvrdením denníka, budú údaje, ktoré bolipripojenýstratí sa do 200 milisekúnd.

k sile v jave

Pamätajte tiež, že v adresári žurnálu neustále zapisujeme skutočnú operáciu.

V ukážkovom výroku, ako napr „Db.class.insert“ čo je operácia vloženia, dáta sa vložia do operácií triedy. Takže operácia triedy v skutočnosti nezostane, ale operácia prebýva.

Je tiež potrebné poznamenať, že ak dôjde k oneskoreniu pri používaní denníka, bude to mať vplyv na výkon.

Jeden môže mať tiež denník na pozadí ako asynchrónny proces a nič nerobiť v operáciách synchrónnym spôsobom. Vo výrobe sa tiež odporúča denník.

Po druhé je konfigurovateľný časový rámec intervalu zapisovania do denníka „200 milisekúnd“, ktorý je možné povoliť pomocou „- - intervalu zapisovania do denníka“ kdekoľvek medzi 3 až 300 milisekundami, čo všetko závisí od nefungujúcich požiadaviek (ako často sa zápisy vyskytujú a ako často sa chce písať do adresára denníka). V prípade, že prebiehajú náročné operácie zápisu, je vhodné mať menej milisekúnd.

Upozorňujeme tiež, že súkromné ​​zobrazenie obsahuje skutočné údaje, pretože súkromné ​​sa mapujú so zdieľaným zobrazením. Zdieľané zobrazenie ho tu flashuje do dátového adresára.

Výhodou tohto procesu je, že v prípade, že dôjde k zlyhaniu servera a nie sú k dispozícii žiadne údaje, ktoré je potrebné zapísať na blesky, nasledujúci server reštartujúci mongod skontroluje, či sa adresár žurnálu neobnovil. Obnoví, prehrá a zapíše operácie do dátového adresára a potom sa spustí.

Máte na nás otázku? Uveďte ich v sekcii komentárov a my sa vám ozveme.

Súvisiace príspevky:

c ++ ako používať menné priestory