The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

15.02.2017 09:53  Выпуск Flyway 4.1.0, инструмента для контроля версий БД

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

Иными словами, Flyway позволяет привязать состояние структуры БД к версии приложения и изменять данную структуру в зависимости от выбранной версии программы. Например, при переходе на новую версию приложения Flyway позволяет на всех серверах привести схему хранения данных к новой версии. Flyway также даёт возможность быстро узнать какой версии ПО соответствует имеющаяся БД, проверить целостность схемы и в случае нарушения структуры (например, ручного добавления/удаления поля) исправить схему.

Код проекта написан на языке Java и распространяется под лицензией Apache 2.0. Flyway может работать с СУБД PostgreSQL, MySQL, MariaDB, Oracle, SQL Server, SQL Azure, DB2, DB2 z/OS, Google Cloud SQL Redshift, Vertica, EnterpriseDB, H2, Hsql, Derby и SQLite. Имеются встроенные средства для интеграции с системами сборки Maven, Gradle, Ant и SBT, а также плагины для Spring Boot, Dropwizard, Grails, Play, Griffon, Grunt и Ninja. Применение Flyway возможно на любых системах для которых доступен язык Java, в том числе Windows, macOS, Linux и Android.

В новой версии добавлена поддержка EnterpriseDB, возможность использования в PostgreSQL не работающих внутри транзакций конструкций (CREATE INDEX CONCURRENTLY, ALTER TYPE, VACUUM ), улучшена поддержка репликации MySQL, увеличена производительность массовых миграций.

  1. Главная ссылка к новости (https://flywaydb.org/blog/flyw...)
Лицензия: CC-BY
Тип: Программы
Ключевые слова: flyway, database
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, Аноним (-), 10:19, 15/02/2017 [ответить] [показать ветку] [···]    [к модератору]
  • +5 +/
    Очень круто.
     
  • 1.2, Аноним (-), 10:22, 15/02/2017 [ответить] [показать ветку] [···]    [к модератору]
  • +3 +/
    Вот только даунгрейд миграций flyway не поддерживает. Модно только дропнуть базу через clean и затем снова накатить через migrate
     
     
  • 2.5, Аноним (-), 10:42, 15/02/2017 [^] [ответить]    [к модератору]
  • –1 +/
    Миграции ещё и на SQL пишутся. Тот же liquidbase поддерживает YAML, что гораздо удобней.
     
  • 2.17, Аноним (-), 14:27, 15/02/2017 [^] [ответить]    [к модератору]
  • +/
    Хотите чтобы flyway сам все дропал вместов вас?
     
  • 2.26, аноним_ (?), 20:50, 15/02/2017 [^] [ответить]    [к модератору]
  • +/
    это и на обычном sql невозможно
     
  • 1.3, _pochtynet_ (?), 10:26, 15/02/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –2 +/
    Лучше бы добавили роллбэки.
     
     
  • 2.19, Аноним (-), 16:28, 15/02/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    Для Oracle на DDL
     
     
  • 3.39, Аноним (-), 23:42, 19/02/2017 [^] [ответить]    [к модератору]  
  • +/
    Очень сильно удивился в своё время что оракл не может такое, а постгрес без проблем.
    Проприетарщики мучались и вручную писали скрипты для отката в liquidbase.
     
  • 2.38, Dmitry (??), 23:36, 19/02/2017 [^] [ответить]    [к модератору]  
  • +/
    Это работа базы данных
     
  • 1.4, Пользователь Debian (?), 10:31, 15/02/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Лого у проекта отличное.

    Майкрософту бы поучиться!

     
     
  • 2.6, A.Stahl (ok), 10:59, 15/02/2017 [^] [ответить]    [к модератору]  
  • +/
    Вполне схожие логотипы по трудозатратам. У Микрософта нелепо раскрашенные квадратики, у этих ребят коряво нарисованная бочка с крылышками.
     
     
  • 3.11, Аноним (-), 13:10, 15/02/2017 [^] [ответить]    [к модератору]  
  • +3 +/
    А, так это крылья? Долго не мог понять, что не так с ногами
     
     
  • 4.20, Аноним (-), 16:29, 15/02/2017 [^] [ответить]    [к модератору]  
  • +/
    > А, так это крылья? Долго не мог понять, что не так с
    > ногами

    Это много каблуков

     
  • 3.36, б.б. (?), 07:09, 17/02/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    у perl6 на логотипе бабочка, чтобы заинтересовать семилетних девочек

    а это - кого заинтересовать?

     
  • 3.37, Dmitry77 (ok), 23:32, 19/02/2017 [^] [ответить]    [к модератору]  
  • +/
    а мне нравится логотип logstash - чурбан с усами
     
  • 1.7, Аноним (-), 11:03, 15/02/2017 [ответить] [показать ветку] [···]     [к модератору]  
  • –1 +/
    Так а что оно умеет то Просканить папку, посмотреть - выполнены ли все миграции... весь текст скрыт [показать]
     
     
  • 2.9, A (?), 12:25, 15/02/2017 [^] [ответить]    [к модератору]  
  • +/
    Неюзабельно. Как выше заметили: downgrade не поддерживается, разработка в команде очень проблематична в силу версионности через имя файла (ад для релиз-инженера).

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

     
  • 2.14, VoDA (ok), 14:06, 15/02/2017 [^] [ответить]    [к модератору]  
  • +/
    > там 20 строчек кода от силы, я такой функционал в своем фреймворке
    > реализовал за пол часа...

    Там несколько больше. И самому еще написать нужно. А так взял и получил результат.

    > Еще у них версия базы, как я понял, зависит от имени файла.
    > Т.е. что-то типа V1_****, V2_*** и т.д. А что будет если
    > будет несколько файлов с именем VN_**** ??? Ошибка или типа одна
    > версия базы? А если эти файлы добавлены в одно время разными
    > людьми, которые работают над непересекающимися фичами? Версии то разные должны быть.

    Если правильно помню (юзал лет 5 назад), то там запоминается какие ФАЙЛЫ накатили на БД. Так что все ок. Когда смержат в мастер и выкатят на прод - применяться оба файла.

    Важно знать эту особенность и сделать naming convention на имена файлов. 100+ миграций все ок.

    > Есть тут те, кто этим реально пользуется? Есть ли у данного продукта
    > какие-то килл*р-фичи?

    Основная килл*р фича - Just works. Самописные костыли из старых проектов менее удобны. Проще перейти на флайвей, чем поддерживать старье.

    Из удобных лично мне - работа с pure-SQL. Ликвибейс умеет то же самое. Вопрос пристрастий.


     
     
  • 3.21, Аноним (-), 16:29, 15/02/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    я про основной код понятно, что там и обвязка для maven-плагина, и некоторый на... весь текст скрыт [показать]
     
  • 2.32, Led (ok), 23:31, 15/02/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    > Так а что оно умеет то? Просканить папку

    Почему только папку? Мамку тоже.

     
  • 1.8, LinuxID (ok), 11:07, 15/02/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Ага! Летающая 200 литровая бочка с няшками ))
     
  • 1.12, Аноним (-), 13:38, 15/02/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Я не совсем понял, запросы же все равно писать придется, какой профит?
     
     
  • 2.13, VoDA (ok), 13:59, 15/02/2017 [^] [ответить]    [к модератору]  
  • +/
    Удобная либа которая проверит текущую версию БД и накатит нужные обновления. Проще взять готовое чем писать на коленке свое.

    По сравнению с ликвидом - проще и удобнее работой через SQL. Ликвид тоже умеет pure-SQL, но тогда теряются плюшки rollback.

    Плюс флайвей позволяет для сложных преобразований делать java migrations. Иногда это проще, чем писать тонну Sql.

     
     
  • 3.22, Аноним (-), 16:30, 15/02/2017 [^] [ответить]     [к модератору]  
  • +/
    А можно поподробнее про java migrations Ну или хотя бы ссылочку - что это вообщ... весь текст скрыт [показать]
     
     
  • 4.27, qsdg (ok), 20:50, 15/02/2017 [^] [ответить]    [к модератору]  
  • +/
    Я так понимаю товарищ про то, что flyway не обязательно вызывать из командной строки, можно писать свою логику на любимой java, дёргая flyway либу как вздумается.
     
     
  • 5.31, Аноним (-), 23:11, 15/02/2017 [^] [ответить]     [к модератору]  
  • +/
    я пробежался по примерам чтобы сделать нормальную интеграцию под мои требован... весь текст скрыт [показать]
     
  • 5.34, VoDA (ok), 16:01, 16/02/2017 [^] [ответить]    [к модератору]  
  • +/
    > Я так понимаю товарищ про то, что flyway не обязательно вызывать из
    > командной строки, можно писать свою логику на любимой java, дёргая flyway
    > либу как вздумается.

    Наоборот. Flyway может дергать кастомный java который будет выполнять эпические преобразования. К примеру, инвалидирует Elastic cache или пересчитает данные новым алгоритмом.

     
  • 4.33, VoDA (ok), 15:59, 16/02/2017 [^] [ответить]    [к модератору]  
  • +/
    Лови :)

    https://flywaydb.org/documentation/migration/java

     
     
  • 5.35, Аноним (-), 17:05, 16/02/2017 [^] [ответить]    [к модератору]  
  • +/
    > Лови :)
    > https://flywaydb.org/documentation/migration/java

    как интересно... и кто-то этим реально пользуется?

     
  • 1.15, Аноним (-), 14:20, 15/02/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    А есть аналоги этой флайвей?
     
     
  • 2.28, qsdg (ok), 20:54, 15/02/2017 [^] [ответить]    [к модератору]  
  • +/
    > А есть аналоги этой флайвей?

    MyBatis migrations http://www.mybatis.org/migrations/ наверно самая простая.

    Liquibase -- xml синтаксис, умеет делать diff между реальной базой и твоим XML скриптом.
    Также поддерживает scope (там это называется context), когда можно указать что вот эти вот нужно накатывать только на прод, некоторые -- только на тестовую бд. При вызове указываешь какой context хочешь накатить.

     
  • 1.16, Аноним (-), 14:25, 15/02/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    http://www.liquibase.org/
     
  • 1.18, Шкурка_от_головки (ok), 15:19, 15/02/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Мой личный опыт с этой программой.
    Понравилось:
    1. именование файлов как версию миграции
    2. чистый SQL
    3. гибкая конфигурация

    Не понравилось:
    1. отсутствие транзакций. например, если пишите запрос в несколько строк, и одна из них ушла в fail, то откатить исполнившиеся строки нельзя.
    2. Никакая работа с несколькими схемами. Вполне логично было бы разделить миграции для разных схем на разные директории, а работать с ними через одну программу.
    3. отсутствие downgrade

     
     
  • 2.23, Аноним (-), 16:32, 15/02/2017 [^] [ответить]     [к модератору]  
  • +/
    как по мне - очень спорно в чем это проявляется не все БД умеют транзакционност... весь текст скрыт [показать]
     
     
  • 3.24, Шкурка_от_головки (ok), 17:26, 15/02/2017 [^] [ответить]    [к модератору]  
  • +/
    > как по мне - очень спорно

    Помимо версии указывается еще описание миграции. По мне, так это лучше, чем тyпой таймстамп.

    > в чем это проявляется?

    Различные префиксы, суффиксы, разделители для именования файлов и т.д. Подробности в комментариях файла конфигурации.

    > не все БД умеют транзакционность DDL (тот же mysql - не умеет)

    Если программа берет на себя версионность БД, то как-то на уровне ПО можно это реализовать.

    > а как же гибкая конфигурация?

    Да, не все в ней гладко

    > насколько реально это нужно и как часто востребовано?

    Ну, это уже у каждого по-разному. Downgrade удобно использовать для отмены миграции, что приводит, соответственно, к уменьшению количества upgrade'ов.

     
     
  • 4.25, Аноним (-), 17:32, 15/02/2017 [^] [ответить]     [к модератору]  
  • +/
    Чем это лучше чем например тyпой таймстамп для сортировки и краткое описание м... весь текст скрыт [показать]
     
     
  • 5.29, Шкурка_от_головки (ok), 22:33, 15/02/2017 [^] [ответить]    [к модератору]  
  • +/
    > Чем это лучше чем например тyпой таймстамп (для сортировки) и краткое описание миграции? ПОтенциальную проблему с версией я уже выше описал - как по мне это достаточно частый use-case

    Да, при наличии двух и более файлов с одной версией он ругается. Но как часто Вы меняете базу, что не можете угнаться за версиями? Поэтому я и говорю о downgrad'е, что если необходимо внести изменения в миграцию, можно было ее downgrade'нуть изменить и upgrade'нуть измененную. А так получается, что при дальнейших изменениях, которые можно было бы объединить в один файл, приходится плодить маленькие миграции, тем самым увеличивая номер версии типи V1_2_45.

    > каким способом в данном случае? возможности rollback нет (не уверен, что эта задача в случае pure SQL вообще решается, даже для одной БД). Как по мне - в данном случае претензия не по адресу.

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

    > Не понимаю. Допустим я добавил...

    Описал в начале, что я имел в виду говоря об уменьшении upgrade'ов.

     
     
  • 6.30, Аноним (-), 23:09, 15/02/2017 [^] [ответить]     [к модератору]  
  • +/
    в активной фазе разработки проекта база меняется очень часто потом пилятся фичи... весь текст скрыт [показать]
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor