Міграції для Java


85

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

Відповіді:


8

Я використовував схему Hibernate SchemaUpdate для виконання тієї ж функції, що і міграція. Насправді це простіше, ніж міграція, тому що кожного разу, коли ви запускаєте програму, вона перевіряє структуру бази даних та синхронізує її з вашими зіставленнями, тому немає додаткових граблів: db: крок міграції, і ваша програма ніколи не може бути не синхронізованою з базою даних, яку вона запускає проти. Файли зіставлення Hibernate не складніші, ніж міграції Rails, тому навіть якщо ви не використовували Hibernate у програмі, ви можете скористатися цим. Недоліком є ​​те, що він не такий гнучкий, як відкат, міграція вниз, запуск операторів DML. Як зазначено в коментарях, він також не скидає таблиці та стовпці. Я запускаю окремий метод, щоб робити це вручну як частину процесу ініціалізації сплячого режиму.

Я не розумію, чому ви не могли використовувати міграції Rails - поки ви не проти встановити стек (Ruby, Rake, Rails), вам не доведеться торкатися вашого додатка.


22
Це не синхронізує його на 100%. Він не змінює стовпці, видаляє стовпці або таблиці, видаляє ФК тощо
cherouvim

88

Для порівняння функцій між

  • Flyway
  • Liquibase
  • c5-db-міграція
  • dbdeploy
  • mybatis
  • MIGRATEdb
  • migrate4j
  • dbmaintain
  • AutoPatch

подивіться на http://flywaydb.org

Це має бути гарним початком для вас та всіх інших, щоб вибрати правильний інструмент для роботи


2
Гей, я не знав про Flyway. Це виглядає досить цікаво, і я детальніше його розгляну. Дякуємо, що згадали про Flyway!
Pascal Thivent

@Pascal Thivent Дякую за ваш коментар! Якщо ви все-таки оціните це, я був би радий почути вашу думку / критику / пропозиції щодо цього, будь то тут, або у програмі відстеження випусків Flyway :-) Я також розгляну можливість додати DbMaintain до матриці порівняння, оскільки це виглядає чудово конкурент ...
Аксель Фонтен

Звичайно, буду. І дякую за додавання DbMaintain до порівняння, дуже приємно мати таку матрицю.
Pascal Thivent

3
Дякуємо, що розмістили це. Я щойно почав користуватися Flyway сьогодні. Раніше я використовував liquibase, і в одному проекті вони створили власне рішення. Flyway - це те, що я очікував від liquibase. Просто, без xml, і я можу писати більш складні міграції в Java. Ідеально Чекаємо на підтримку мурашок.
nogridbag

1
Поточна версія веб-сайту, схоже, порівнює лише Flyway, Liquibase та MyBatis. Повне порівняння все ще доступне в інших місцях?
Zero3


10

Grails має утиліту dbmigrate , яка має шаблон після назви з Rails. Оскільки він реалізований у Groovy, ви зможете використовувати його з будь-якого з ваших проектів Java.


6

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

Деякі інші відповідні ресурси: Мартін Фаулер і Прамод Садаладж, дещо постарілий допис про еволюційний дизайн бази даних , і книга " Рефакторинг баз даних: еволюційний дизайн бази даних " Садалаге та Шотла Амблера.


6

Існують також дві незалежні реалізації міграцій, подібних до рейок, для Java:

1) Міграції на основі Maven з вуглецевої п’ятірки

2) Завдання на основі мурашок від Hashrocket (мій особистий улюблений)

Хоча ці пакети були написані спеціально для Maven та Ant, з деякою роботою ви можете адаптувати їх майже до всього.


5
Hashrocket не торкався з 2007 року. Продукт міграції c5-db Carbon Five не оновлювався з 2010 року.
Зелений

4

Migrate4j здається кандидатом, але проект виглядає недостатньо зрілим для виробничого використання.


2

Існує також DbMaintain, який спочатку розроблявся всередині Unitils, але зараз є спеціальним проектом. Наразі ми ним користуємось і дуже задоволені (що не означає, що хороших альтернатив немає). Більше їх я перелічую в своїй базі даних + закладки міграції (з акцентом на інструменти, що підтримують Maven).


1
Такі інструменти допоможуть нам розвиватися швидше і безпечніше
Артур Рональд

@Arthur Так, дуже добре, що ми теж отримали такі інструменти. Оновлення каскадної схеми з одного середовища в інше зараз для нас приємне :)
Паскаль Тівент
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.