2016-10-21 8 views
4

Я искал Flyway в качестве инструмента миграции базы данных.Flyway: запуск нескольких миграций за одну транзакцию

Единственное, что мне не удалось найти однозначный ответ на следующий:

Может ли я заставить пролетный путь, чтобы выполнить все, как-из-: еще непримененных миграций в одной транзакции, вместо того, чтобы каждый миграции быть собственной сделкой?

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

Обходной бы просто втиснуть все SQL, необходимые в одном файле, но есть проблемы с этим:

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

  • Контрольные суммы будут отличаться, как только будет добавлено новое изменение.

Неужели Flyway не поддерживает такую ​​функцию? Ли Liquibase или любой другой инструмент миграции?

+0

Liquibase пытается запустить каждый changeSet в транзакции. Вероятно, вы можете использовать команду updateSql для генерации SQL-файла и последующей обработки для настройки требуемого поведения транзакции и после ее применения с помощью некоторого инструмента. Этот трубопровод может быть реализован для dev/prod, чтобы избежать проблем, связанных с продуктами. – dbf

ответ

2

Нет такой функции из коробки. Это большой вопрос, хотя, и я бы поспорил, о нем думали, поскольку Flyway обеспечивает транзакционные границы на миграцию - надеюсь, что Axel Fontaine будет перекликаться с техническими соображениями и соображениями дизайна, которые привели к тому, что это не было функцией.

Вопросы и ответы: this и this сказать о понижении/отказах. Политика сводится к:

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

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

Я использовал Liquibase на гораздо меньшем проекте до этого и не помню никакой такой функции, кроме предоставления процедур отката.

 Смежные вопросы

  • Нет связанных вопросов^_^