Noções básicas sobre registro em diário no MongoDB



O blog fornece um resumo sobre registro no diário no MongoDB

Trabalhando com a operação Mongod Write

O Mongod hospeda principalmente as operações de gravação na memória em visualização compartilhada. É chamado de compartilhado porque possui mapeamento de memória no disco real.





Por exemplo, o arquivo de dados do usuário é mantido no data dd e possui um mapeamento de memória. Aqui, ele primeiro empurra todos os dados para a memória e, após um intervalo especificado, ele os coloca na memória, o que ocorre a cada sessenta segundos e o usuário não é impactado neste processo.

Aqui, este processo é chamado de No Journal Option, o que significa que caso haja um atraso de 60 segundos para salvar os dados da memória para o disco ou desligamento abrupto, significa que quaisquer dados que estejam na memória não podem ser recuperados. Assim, o registro no diário torna-se relevante aqui.



como cortar em java

É importante saber que o Journaling foi desabilitado antes da versão 2.4.10 por padrão, mas depois disso foi habilitado.

No momento em que o processo mongod começa, a seguinte afirmação pode ser observada:

Journal dir = D: Rana2custom datajournal



Aqui, Journal Directory é um diretório filho dentro do diretório de dados e, por padrão, está habilitado.

O que é registro no diário no MongoDB?

Nesse processo, uma operação de gravação ocorre no mongod, que então cria mudanças na visualização privada. O primeiro bloco é a memória e o segundo bloco é ‘meu disco’. Após um intervalo especificado, que é chamado de 'intervalo de confirmação do diário', a visão privada grava essas operações no diretório do diário (que reside no disco).

Assim que a confirmação do diário acontece, o mongod coloca os dados na visualização compartilhada. Como parte do processo, ele é gravado no diretório de dados real a partir da visão compartilhada (já que esse processo acontece em segundo plano). A vantagem básica é que temos um ciclo reduzido de 60 segundos para 200 milissegundos.

Em um cenário onde ocorre um descolamento em qualquer ponto do tempo ou o disco flash permanece indisponível pelos últimos 59 segundos (tendo em mente os dados existentes no diretório de diário / operações de gravação), então, quando da próxima vez que o mongod for iniciado, ele basicamente repetirá todas as operações de gravação registra e grava no diretório de dados real.

Como funciona?

Aqui, uma vez que um commit acontece, a mesma operação é reproduzida na visão compartilhada e então, após sessenta segundos, o disco flash acontece.

Depois de piscar, os dados são processados. Os dados aqui são marcados como processados ​​no diretório do diário, o que significa que a cada sessenta segundos, ele verifica os dados que copiou e aqueles que devem ser removidos do diário.

Usar o Journaling é como usar um log, a razão é, ele cria um log de operação de gravação para aumentar a durabilidade. O registro no diário é um armazenamento temporário, o que significa que ele mantém apenas o registro da operação de gravação pendente no diretório do diário. Além disso, a visão compartilhada contém os dados, mas o diretório do diário tem as operações.

o que é pesquisa binária em java

Por exemplo, se o usuário está gravando alguns dados sem registro no diário, então, quaisquer dados são gravados, seu mapeamento de memória permite ao usuário saber a localização onde os dados são gravados.

Link entre visão privada e visão compartilhada

Depois que o commit acontece, ele é marcado como um processo no diretório do diário, e há outro mapeamento feito para a visão atual da visão compartilhada / privada (sem compartilhamento de dados).

No gráfico, todos os itens azuis estão na RAM (memória de acesso aleatório) e o Saffron denota o disco.

Se for esse o caso, os dados não são flasheados no diretório de dados, mas as operações de gravação estão lá no diretório de dados, então o mongod irá reprocessar e aplicar as operações de gravação ao diretório de dados.

Um ponto importante a se notar é que em um cenário onde uma falha acontece antes da confirmação do diário, os dados que foramanexadodentro de 200 milissegundos serão perdidos.

Observe também que, no diretório do diário, continuamos escrevendo a operação real.

Na declaração de exemplo, como ‘Db.class.insert’ que é uma operação de inserção, os dados são inseridos nas operações de classe. Portanto, a operação de classe não permanece, mas a operação reside.

Deve-se observar também que o atraso na utilização do diário tem impacto no desempenho.

Também é possível ter o registro no diário em segundo plano como um processo assíncrono e não fazer nada nas operações de maneira síncrona. O registro no diário também é recomendado na produção.

Em segundo lugar, o intervalo de tempo de confirmação de diário de '200 milissegundos' é configurável, que pode ser habilitado com '- - intervalo de confirmação de diário' em qualquer lugar entre 3 a 300 milissegundos, o que tudo depende dos requisitos de não funcionamento (com que frequência as gravações estão acontecendo e com que freqüência se deseja escrever no diretório do diário). No caso, operações pesadas de gravação estão acontecendo, então é aconselhável ter menos milissegundos.

Observe também que a visão privada mantém os dados reais, pois os privados são mapeados com a visão compartilhada. A visão compartilhada aqui a transfere para o diretório de dados.

Nesse processo, a vantagem que ganhamos é, caso haja travamentos do servidor e não haja dados disponíveis que precisem ser gravados em flashes, então o próximo servidor que reiniciar o mongod verificará o diretório do diário para recuperação. Ele irá recuperar, reproduzir e gravar operações no diretório de dados e então iniciar.

Tem alguma questão para nós? Mencione-os na seção de comentários e entraremos em contato com você.

Postagens relacionadas:

o que é classe pojo em java