Понимание ведения журнала в MongoDB



В блоге кратко рассказывается о ведении журнала в MongoDB.

Работа с операцией записи Mongod

Mongod в основном размещает операции записи в памяти в общем представлении. Он называется общим, потому что он имеет отображение памяти на реальном диске.





Например, файл данных пользователя хранится по адресу data dd и имеет отображение памяти. Здесь он сначала помещает все данные в память, а после заданного интервала мигает данные в память, что происходит каждые шестьдесят секунд, и этот процесс не влияет на пользователя.

Здесь этот процесс называется опцией «Нет журнала», что означает, что в случае 60-секундной задержки для сохранения данных из памяти на диск или внезапного завершения работы это означает, что любые данные, находящиеся в памяти, не могут быть извлечены. Таким образом, здесь становится актуальным ведение журнала.



как пройти по ссылке в java

Важно знать, что до версии 2.4.10 ведение журнала было отключено по умолчанию, но после этого оно было включено.

В момент запуска процесса mongod можно наблюдать следующее утверждение:

Журнал dir = D: Rana2custom datajournal



Здесь каталог журналов является дочерним каталогом внутри каталога данных и по умолчанию включен.

Что такое ведение журнала в MongoDB?

В этом процессе в mongod выполняется операция записи, которая затем создает изменения в частном представлении. Первый блок - это память, а второй - «мой диск». По истечении заданного интервала, который называется «интервалом фиксации журнала», частное представление записывает эти операции в каталог журнала (находящийся на диске).

Как только происходит фиксация журнала, mongod помещает данные в общее представление. Как часть процесса, он записывается в реальный каталог данных из общего представления (поскольку этот процесс происходит в фоновом режиме). Основное преимущество в том, что у нас есть сокращенный цикл с 60 секунд до 200 миллисекунд.

В сценарии, когда в любой момент времени происходит прерывание или флеш-диск остается недоступным в течение последних 59 секунд (с учетом существующих данных в каталоге журнала / операций записи), затем при следующем запуске mongod он в основном воспроизводит все операции записи регистрирует и записывает в фактический каталог данных.

Как это устроено?

Здесь, когда происходит фиксация, та же операция воспроизводится в общем представлении, а затем, через шестьдесят секунд, происходит флэш-диск.

После прошивки данные обрабатываются. Данные здесь помечаются как обработанные в каталоге журнала, что означает, что каждые шестьдесят секунд он проверяет скопированные данные и те, которые предполагается удалить из журнала.

Использование ведения журнала аналогично использованию журнала, поскольку оно создает журнал операций записи для повышения надежности. Ведение журнала - это временное хранилище, что означает, что в каталоге журнала хранится только журнал операций записи как отложенный. Кроме того, общее представление содержит данные, а каталог журнала - операции.

Например, если пользователь записывает некоторые данные без ведения журнала, то какие бы данные ни записывались, их отображение в памяти позволяет пользователю узнать место, в которое записаны данные.

Связь между частным просмотром и общим просмотром

После совершения фиксации он помечается как процесс в каталоге журнала, и выполняется еще одно сопоставление для текущего представления общего / частного представления (без обмена данными).

В таблице все синие элементы находятся в ОЗУ (оперативная память), а шафран обозначает диск.

Если в этом случае данные не записываются в каталог данных, а операции записи находятся в каталоге данных, то mongod повторно обработает и применит операции записи к каталогу данных.

Важно отметить, что в сценарии, когда сбой происходит до фиксации журнала, данные, которые былидобавленв течение 200 миллисекунд будет потеряно.

Java разница между орудиями и расширениями

Также обратите внимание, что в каталоге журнала мы продолжаем записывать фактическую операцию.

В примере утверждения, например ‘Db.class.insert’ которая является операцией вставки, данные вставляются в операции класса. Таким образом, операция класса фактически не остается, но операция остается.

Также следует отметить, что задержка в использовании журнала влияет на производительность.

Также можно использовать ведение журнала в фоновом режиме как асинхронный процесс и ничего не делать в операциях синхронным образом. Журналирование также рекомендуется в производстве.

Во-вторых, можно настроить интервал фиксации журнала в 200 миллисекунд, который можно включить с помощью параметра «- - journal commit interval» от 3 до 300 миллисекунд, что все зависит от нефункционирующих требований (как часто происходит запись и как часто хочется писать в справочнике журнала). В случае, если выполняются тяжелые операции записи, рекомендуется использовать меньшие миллисекунды.

Также обратите внимание, что частное представление содержит фактические данные, поскольку частное отображается с общим представлением. Общий вид здесь мигает в каталог данных.

В этом процессе мы получаем преимущество в том, что в случае сбоя сервера и отсутствия данных, которые необходимо записать во флэш-память, при следующем перезапуске сервера mongod проверит каталог журнала на предмет восстановления. Он восстановит, воспроизведет и запишет операции в каталог данных, а затем запустится.

Есть вопрос к нам? Упомяните их в разделе комментариев, и мы свяжемся с вами.

Похожие сообщения:

синхронизация потоков в примере java