Почему и когда Liquibase?

99

Я искал этот ответ о переполнении стека, но не смог найти никаких вопросов по этому поводу. Я новичок Liquibaseи хочу научиться

  • Почему Liquibase?
  • Когда именно нужно использовать Liquibaseв проекте?

Я знаю, что это сделано для того, чтобы все изменения базы данных были в одном месте, но то же самое можно сделать, создав простые SQLфайлы в некоторой системе репозитория и постоянно обновляя их.

Шакил Шахзад
источник

Ответы:

70

Ключевым отличием файла создания самоуправляемой схемы от Liquibase (или других инструментов миграции схемы ) является то, что последний предоставляет журнал изменений схемы. Это запись изменений схемы с течением времени. Он позволяет разработчику базы данных указывать изменения в схеме и позволяет программно обновлять или понижать версию схемы по запросу.

Есть и другие преимущества, такие как:

  • Независимость от поставщика базы данных (это сомнительно, но они пытаются)
  • автоматизированная документация
  • различия схемы базы данных

Альтернативный инструмент - пролетный путь .

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

Synesso
источник
1
Но предположим, что мы создаем файл, записываем в него наш первый скрипт и фиксируем его, скажем, git. Теперь, со временем, схема будет обновлена, и мы сможем вернуться к любому интервалу времени и тоже изменить схему, не так ли?
Шакил Шахзад
1
При таком подходе вы можете воссоздать схему, но не можете перейти на более раннюю версию или обновить ее. Разница в потере данных.
Synesso
1
Но другая часть, когда использовать, отсутствует?
Шакил Шахзад
1
Synesso Я пока не понимаю, как можно автоматически понизить версию производственной базы данных после того, как она некоторое время использовалась и решения были приняты по данным с использованием, скажем, недавно добавленных столбцов. Вы не можете просто отказаться от них сейчас. Также я не понимаю, почему это лучше, чем просто серия сценариев SQL с версией, хранящихся в системе управления версиями, которые включают простую вставку в таблицу версий в начале и ее обновление в конце, чтобы отслеживать, что было применено.
Хоркрак 07
Еще один вопрос, добавляющий ... как мы можем зарегистрировать ошибку по электронной почте в java. когда SQL меняется через XML?
UmaShankar
18

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

Очень «версионный» подход к обслуживанию схемы.

Во-первых, создается впечатление «ненужной работы».

iCrus
источник
4
Это я (это дает мне точное впечатление, о котором вы упомянули: P) +1 за это решающее определение
Исмаил Сахин
Вы правы, мы можем отслеживать все изменения, кто и когда вносил последние изменения. если нам нужно вернуться к определенной точке, будет полезна ликибаза
Anoop PS
7

Когда у вас есть несколько экземпляров базы данных в dev, qa, production, и вы хотите иметь инструмент для автоматического отслеживания истории изменений и разумного применения изменений (применение различий текущей схемы и окончательной схемы), такие инструменты, как liquibase или flyway, будут очень полезны. .

Тед Сюй
источник
3

Я считаю, что Liquibase великолепен, когда ваша философия заключается в том, что о базе данных думают второстепенно. Эта философия является причиной большинства плохих баз данных в производстве - и большинство из них плохие. База данных должна быть спроектирована так, чтобы полностью отображать всю бизнес-систему, а не составлять отдельные части разработчиками приложений, каждый из которых работает в своей изолированной системе. Последний метод приводит к обходным путям, денормализованным данным, плохим отношениям между таблицами, дублированию бизнес-областей и общей беспорядочной системе с высокими затратами на обслуживание, которую клиент возненавидит вскоре после развертывания из-за проблем, которые она вызывает. Если база данных спроектирована так, чтобы ТОЧНО отражать деловые отношения, ее срок службы будет в 5 раз дольше и будет служить своей цели в 5 раз лучше, чем база данных, разработанная по частям, как, к сожалению, большинство.

Liquibase сама по себе не является проблемой, но позволяет разработчикам приложений разработать базу данных на практике. Это проблема.

Боб Барри
источник
19
Изменяются спецификации, добавляются новые функции, исправляются ошибки. Даже если предположить, что «база данных спроектирована так, чтобы ТОЧНО отражать деловые отношения», это нормально и ожидается, что вам потребуется вносить изменения в БД с течением времени, потому что предприятия и деловые отношения со временем меняются. Liquibase просто помогает вам управлять этими изменениями. Вот и все.
Стивен Бикс
По моему опыту, очень немногие администраторы баз данных и целый ряд разработчиков используют Liquibase - я думаю, что @bob-barry подходит для большинства конечных результатов. Тем не менее, администраторы баз данных, использующие такие инструменты, как Liquibase (или просто старый добрый git для истории изменений), сочтут это полезным.
PhillipHolmes
Эволюционные практики БД и гибкость в целом поощряют и позволяют экспертные оценки. Для БД с потребностями в производительности администраторы баз данных по-прежнему работают с командами приложений для изменения БД. Такие инструменты, как Liquibase, упрощают рефакторинг, что противоречит вашему аргументу денормализации. 10 лет назад я работал над продуктом, установленным на более чем 20 клиентах, каждый со своим патчем и циклом обновления. После двух лет кошмара и попыток написать такой инструмент вручную, мы сразу же перешли на Liquibase, как только узнали о нем. И у нас были таблицы с 200 миллионами записей, тоже немного по тем временам, но кое-что требовало администраторов баз данных.
user6317694
3
Я надеюсь однажды встретить тебя там, на небесах. Конечно, звучит неплохо.
Bijan
3

Я думаю, почему на Liquibase можно ответить, прочитав следующую статью http://shengwangi.blogspot.com/2016/04/liquibase-helloworld-example.html

Если вы внимательно прочитали его, то возможность перехода на более низкую версию с более высокой версии с помощью простых команд mvn или CLI очень полезна, чего вы не получите, если пройдете через подход к фиксации своего файла sql в GIT, потому что тогда вы необходимо вручную запускать эти сценарии, а также у вас нет набора изменений, например: - кто сделал автор изменений и т. д.

Шикхар Чаудхари
источник
0

Как DevOps человек в моей команде, я бы предпочел, чтобы все мои файлы SQL были в одном месте, то есть в моем SCM (Управление исходным кодом)

Также на этапе CI / CD, если вместе с ним создается схема БД, это экономит много времени и ресурсов. Вам не нужно было бы, чтобы другой человек управлял вашей базой данных для этого клиента.

В этом помогает ORM, например Flyway, Liquibase, EF и т. Д.

Слока Рой
источник