При в параллельной среде
Я собираюсь использовать liquibase в качестве плагина запуска приложений в некоторой параллельной среде (кластеризация или многопоточная инициализация). Есть ли гарантия корректного обновления базы данных в параллельной среде, поддерживаемой библиотекой liquibase, или мне придется делать это вручную? Спасибо!
1 ответ:
Liquibaseреализует исключительную блокировку, используя транзакционные функции ACID вашей СУБД. Это предотвращает одновременное выполнение миграций схем несколькими экземплярами Liquibase. Это достигается путем выполнения транзакционных обновлений таблицы
Однако этот механизм не предотвращает другие потенциальные проблемы параллелизма, которые могут возникнуть в результате операций, не выполняемых непосредственно Liquibase. Рассмотреть дело где один узел в кластере выполняет миграцию схемы, а другие узлы пытаются выполнить нормальную бизнес-логику с этой схемой. Другие узлы кластера видят схему в стабильном состоянии A , за которым следует некоторое количество промежуточных вариаций, а затем, наконец, в стабильном состоянии B. Приложение должно быть разработано для обработки такого рода переходов, иначе во время миграции потребуется время простоя.DATABASECHANGELOGLOCK
, которая добавляется в вашу схему с помощью Liquibase.Аналогичным образом, это приложение ответственность за работу с более старыми и новыми клиентами (например, во время скользящего обновления), когда концепция "правильной" версии схемы не является единогласно согласованной, если такая среда требуется.