Как flyway/liquibase справляется с деструктивными апгрейдами в эксплуатации?

Основываясь на моем понимании flyway/liquibase, они предоставляют способы выполнения обновлений базы данных с помощью предварительно настроенных сценариев (запросы SQL, файлы Java и т. д.). Но мне не очень ясно следующее:

  1. Что произойдет, если есть деструктивное обновление.

    У меня есть вариант использования, например изменение столбца bigint (содержащего данные) на тип даты. Если я попытаюсь изменить его напрямую, я получу поврежденные данные для столбца. Как flyway/liquibase справляется с такими обновлениями?

  2. Являются ли предварительно настроенные сценарии единственным способом сказать flyway/liquibase, что это мои изменения, или есть какой-то другой способ в этом отношении. Если есть какой-то другой способ, будет ли он выводить разницу в виде запросов?

Будет очень полезно, если кто-то прольет свет на вышеизложенное.


person Sai    schedule 23.05.2013    source источник


Ответы (2)


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

person Axel Fontaine    schedule 24.05.2013
comment
Аксель, спасибо. Основываясь на вашем документе по миграции на основе Java здесь, кажется, мне нужно реализовать jdbcMigrations для справляться с деструктивными обновлениями, подобными тому, о котором я упоминал в своем первом вопросе. В таких случаях, как я могу обрабатывать динамические (новые) вставки/обновления во время миграции? Есть ли какая-либо обработка/конфигурация в пролетном пути, которую я могу использовать для этой обработки? Короче говоря, предоставляет ли flyway какой-либо механизм для обработки деструктивных обновлений или это просто структура для выполнения предоставленных запросов к настроенной схеме/схемам. - person Sai; 24.05.2013
comment
Магии нет. Он делает то, что вы ему говорите. В вашем случае вам, вероятно, следует сделать это в несколько шагов по этим направлениям: добавить новый столбец в новом формате, перенести данные, изменить код на новый формат и столбец, удалить старый столбец. - person Axel Fontaine; 24.05.2013
comment
Аксель, это логично. Так что мне решать, как я буду обрабатывать операции вставки/обновления/удаления, которые происходят во время миграции. И у flyway нет никакого обработчика / конфигурации для поддержки того же, я прав? - person Sai; 24.05.2013

В Liquibase вы можете выполнить эту работу, используя сценарии SQL Formated, я предполагаю, что вы пытаетесь использовать теги разметки XML, чтобы избежать необходимости выполнять необработанный SQL и столкнуться с падением, когда XML переводит именно то, что вы хотите сделать . Упростите жизнь, используя сценарии SQL и Liquibase.

person Kuberchaun    schedule 23.05.2013