У меня нет большого опыта работы с ES на производстве, но, по сути, обеспечение того, чтобы при сохранении данных они сохранялись, особенно в распределенной системе, было трудно. Есть много, много крайних случаев, которые очень трудно понять правильно, и требуется время для базы данных, чтобы созреть и разобраться в этих крайних случаях. Менее надежная база данных - это та, которая, вероятно, не устранила все эти проблемы.
Конечно, ElasticSearch является популярной базой данных с открытым исходным кодом, и процветающее сообщество поддерживает ее, поэтому, скорее всего, нет четко определенных случаев, когда «ваши данные будут потеряны при таких обстоятельствах», скорее всего, есть случаи, которые либо не были получены или когда пользователи столкнулись с ними в дикой природе, пользователи, которые сталкивались с ними, не заботились о том, чтобы их отладить, потому что они использовали только ES как вторичное хранилище данных и смогли восстановить его из своего основного хранилище данных. Всякий раз, когда обнаруживается случай, что ES теряет данные при хорошо понятных обстоятельствах, сопровождающие ES быстро исправят это.
Наиболее типичные варианты использования ES - это хранилище вторичной базы данных, и в этом случае долговечность не так важна, поскольку хранилище данных можно восстановить из первичного. Соответственно, вы обнаружите, что долговечность не так важна для сопровождающих ES, потому что их пользователи не просят об этом - это не значит, что она не имеет высокого приоритета, просто по сравнению с другими базами данных, она не так высока.
Таким образом, если вы используете ES, у вас больше шансов столкнуться с ошибками, когда вы потеряете данные, чем с другими базами данных, которые либо более развиты, либо уделяют больше внимания долговечности при разработке.
Что касается того, должны ли вы регулярно удалять свою базу данных ES и воспроизводить события, это действительно зависит от вашего варианта использования и того, насколько важно для вашей базы данных ES быть согласованным. Многие крайние случаи, связанные с долговечностью ES, вероятно, приводят к серьезным повреждениям со значительной потерей данных, т. Е. Вы будете знать, если это произойдет, поэтому в этом случае нет необходимости регулярно отбрасывать и воспроизводить. Еще одна вещь, которую следует учитывать, заключается в том, что из-за того, как работают стороны чтения CQRS, у вас будет только ограниченное число записывающих в хранилище ES, и вы сможете легко контролировать этот параллелизм. Это означает, что скачок нагрузки не приведет к скачку числа записывающих устройств, а произойдет то, что ваше хранилище ES может временно отставать по согласованности от основного хранилища. Из-за этого вы, вероятно, с меньшей вероятностью столкнетесь с крайними случаями, которые могут привести к тому, что ES потеряет данные.
Итак, вы, вероятно, не потрудитесь сбросить и перестроить, если не произойдет что-то катастрофическое, если только последствия незаметной потери небольших объемов данных способом, который вы не заметите, настолько велики, что невероятно малый шанс, что это может случиться недопустимо.