Чому і коли Liquibase?


98

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

  • Чому Liquibase?
  • Коли саме слід використовувати Liquibaseв проекті?

Я знаю, що це дозволяє зберегти всі зміни бази даних в одному місці, але подібне можна зробити, створивши прості SQLфайли в якійсь системі сховищ і постійно оновлюючи їх з часом.

Відповіді:


69

Ключовим відмінником між самокерованим файлом створення схеми та Liquibase (або іншими інструментами міграції схеми ) є те, що останній надає журнал змін схеми. Це запис змін схеми з часом. Це дозволяє конструктору баз даних вказувати зміни в схемі та дозволяє програмне оновлення або зниження версії схеми на вимогу.

Є й інші переваги, такі як:

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

Одним з альтернативних інструментів є маховий шлях .

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


1
Але припустимо, ми створимо файл і напишемо в ньому наш перший скрипт і запустимо його, скажімо, git. Тепер із часом схема буде оновлена, і ми можемо повернутися до будь-якого інтервалу часу і також змінити схему назад, ні?
Shakeel Shahzad

1
З таким підходом ви можете відтворити схему, але не можете понизити / оновити. Різниця полягає у втраті даних.
Synesso

1
Але інша частина, коли використовувати відсутня?
Shakeel Shahzad

1
Synesso Я ще не бачу, як можна автоматично знизити виробничу базу даних після того, як вона деякий час використовується, а щодо даних приймаються рішення за допомогою скажімо щойно доданих стовпців. Ви не можете просто просто скинути їх зараз. Крім того, я не розумію, чому це краще, ніж просто серія версій сценаріїв SQL, які зберігаються в елементі керування джерелом, які включають просту вставку в таблицю версій на початку та оновлення до неї в кінці для відстеження того, що було застосовано.
Хоркрак,

Ще одне питання, яке додає ... як ми можемо реєструвати помилку електронною поштою в Java. коли зміни SQL змінюються через XML?
УмаШанкар

18

Я бачив, як liquibase створює дисципліну серед розробників, коли йдеться про зміну схеми. Ви просто не можете піти і перезаписати зміни та виконати інші розробники. Натомість ви створюєте власний набір змін і додаєте його в кінець послідовності змін, які потрібно виконати. Це також вносить ясність щодо того, які зміни відбулися коли і хто їх вніс.

Дуже "версійний" підхід до підтримки схеми.

Для початківців це створює враження "непотрібної роботи".


4
Який я (Це створює точне враження, що ви згадали: P) +1 за цю вирішальну рішучість
Ісмаїл Сахін

Ви маєте рацію, ми можемо відстежувати всі зміни, які і коли вносили останні зміни. якщо ми не повернемося до певної точки, liquibase буде корисним
Anoop PS

7

Якщо у вас є кілька екземплярів баз даних у dev, qa, виробництві, і ви хочете мати інструмент для автоматичного відстеження історії змін та інтелектуального застосування змін (застосувати різницю поточної схеми та кінцевої схеми), такі інструменти, як liquibase або flyway, будуть дуже корисними .


3

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

Liquibase сам по собі не є проблемою, але він дає змогу розробникам програм розробляти базу даних. У цьому проблема.


19
Змінюються характеристики, додаються нові функції, виправляються помилки. Навіть якщо припустити, що "база даних розроблена для ТОЧНОГО відображення ділових відносин", це нормально і очікується, що вам доведеться вносити зміни в БД з часом, оскільки бізнес та ділові відносини змінюються з часом. Liquibase просто допомагає вам керувати цими змінами. Це воно.
Стівен Байкс,

З мого досвіду, дуже мало DBA і ціла низка розробників використовують Liquibase - я думаю, що @ bob-barry є привабливим для більшості кінцевих результатів. Бази даних адміністраторів, які використовують такі інструменти, як Liquibase (або просто старий git для історії змін), будуть корисні.
PhillipHolmes

Еволюційні практики БД та, як правило, гнучкі, заохочують та дозволяють експертні оцінки. Для БД, що потребує продуктивності, адміністратори баз даних все ще працюють із командами програм для змін БД. Такі інструменти, як Liquibase, дозволяють спростити рефакторинг, що суперечить вашому аргументу денормалізації. 10 років тому я працював над продуктом, встановленим для 20+ клієнтів, кожен зі своїми циклами виправлення та оновлення. Після 2 років кошмару та спроб написати такий інструмент від руки, ми перейшли на liquibase, як тільки дізналися про це. І у нас були таблиці із записами 200 млн., На той час теж не величезними, але дещо потребували DBA.
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, якщо схема DB створюється разом із нею, це економить багато часу та ресурсів. Вам не доведеться мати іншу особу, яка керує вашою базою даних для цього клієнта.

ORM, такі як Flyway, Liquibase, EF тощо допомагає досягти цього.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.