Migracje dla języka Java

85

Używam zarówno Ruby on Rails, jak i Java. Naprawdę lubię używać migracji, gdy pracuję nad projektem szynowym. więc zastanawiam się, czy istnieje migracje, takie jak narzędzie dla języka Java? Jeśli nie ma takiego narzędzia, czy warto używać migracji jako narzędzia do kontrolowania bazy danych używanej przez projekt Java?

Josh Moore
źródło

Odpowiedzi:

8

Użyłem programu Hibernate SchemaUpdate, aby wykonać tę samą funkcję co migracje. W rzeczywistości jest to łatwiejsze niż migracje, ponieważ za każdym razem, gdy uruchamiasz aplikację, sprawdza strukturę bazy danych i synchronizuje ją z mapowaniami, dzięki czemu nie ma dodatkowego rake: db: migrate step, a Twoja aplikacja nigdy nie może stracić synchronizacji z uruchomioną bazą danych przeciwko. Pliki mapowania Hibernacji nie są bardziej złożone niż migracje Railsów, więc nawet jeśli nie korzystałeś z Hibernacji w aplikacji, możesz to wykorzystać. Wadą jest to, że nie jest tak elastyczny, jeśli chodzi o wycofywanie, migrację w dół, uruchamianie instrukcji DML. Jak wskazano w komentarzach, nie usuwa również tabel ani kolumn. Uruchamiam osobną metodę, aby zrobić to ręcznie w ramach procesu inicjalizacji Hibernacji.

Nie rozumiem jednak, dlaczego nie mógłbyś używać migracji Railsów - dopóki nie masz nic przeciwko zainstalowaniu stosu (Ruby, Rake, Rails), nie musiałbyś dotykać swojej aplikacji.

Brian Deterling
źródło
22
Nie synchronizuje go w 100%. Nie zmienia kolumn, nie usuwa kolumn ani tabel, nie usuwa FK itp.
cherouvim
88

Aby porównać funkcje między

  • Flyway
  • Liquibase
  • c5-db-migracja
  • dbdeploy
  • mybatis
  • MIGRATEdb
  • migrate4j
  • dbmaintain
  • AutoPatch

zajrzyj na http://flywaydb.org

Powinien to być dobry początek dla Ciebie i każdego innego, aby wybrać odpowiednie narzędzie do pracy

Axel Fontaine
źródło
2
Hej, nie byłem świadomy Flyway. Wygląda całkiem interesująco i przyjrzę się temu bliżej. Dziękuję za wspomnienie Flyway!
Pascal Thivent
@ Pascal Thivent Dzięki za komentarz! Jeśli to oceniasz, z przyjemnością usłyszę Twoją opinię / krytykę / sugestie na ten temat, albo tutaj, albo w trackerze problemów Flyway :-) Zajrzę też do dodania DbMaintain do macierzy porównawczej, bo wygląda na świetny zawodnik ...
Axel Fontaine
Jasne, że tak. A dzięki za dodanie DbMaintain do porównania, bardzo fajnie mieć taką matrycę.
Pascal Thivent
3
Dzięki za opublikowanie tego. Właśnie dzisiaj zacząłem używać Flyway. Wcześniej korzystałem z liquibase iw jednym projekcie opracowali własne rozwiązanie. Flyway jest tym, czego się spodziewałem. Prosty, bez XML i mogę pisać bardziej złożone migracje w javie. Idealny. Czekamy na wsparcie mrówek.
nogridbag
1
Obecna wersja strony wydaje się porównywać tylko Flyway, Liquibase i MyBatis. Czy pełne porównanie jest nadal dostępne gdzie indziej?
Zero3
13

Liquibase to kolejny projekt w tej dziedzinie, który warto sprawdzić.

Adam Monsen
źródło
10

Grails ma narzędzie dbmigrate wzorowane na narzędziu Rails. Ponieważ jest zaimplementowany w Groovy, powinieneś móc go używać z dowolnego projektu Java.

Kyle Burton
źródło
6

Natknąłem się na ten post, badając to samo pytanie. Nie doszedłem jeszcze do żadnych wniosków na temat najlepszego narzędzia lub podejścia, ale jednym z narzędzi, które spotkałem, a które nie zostało dotąd wymienione w innych odpowiedziach, jest dbdeploy . Byłbym zainteresowany przeczytaniem wszelkich porównań tych narzędzi.

Inne istotne źródła: nieco przestarzały post Martina Fowlera i Pramoda Sadalage'a o Evolutionary Database Design oraz książka Refactoring Databases: Evolutionary Database Design autorstwa Sadalage i Scot Ambler.

Kief
źródło
6

Istnieją również dwie niezależne implementacje migracji podobnych do szyn dla Javy:

1) Migracje oparte na Maven z Carbon Five

2) Zadania oparte na mrówkach z Hashrocket (mój osobisty ulubiony)

Chociaż te pakiety zostały napisane specjalnie dla Mavena i Anta, przy odrobinie pracy można je dostosować do prawie wszystkiego.

Winky
źródło
5
Hashrocket nie został dotknięty od 2007 roku. Produkt Carbon Five c5-db-migracja nie był aktualizowany od 2010 roku.
Green
4

Migrate4j wydaje się być kandydatem, ale projekt nie wygląda na wystarczająco dojrzały, aby można go było wykorzystać w produkcji.

reacuna
źródło
2

Istnieje również DbMaintain, który został pierwotnie opracowany w Unitils, ale teraz jest projektem dedykowanym. Obecnie z niego korzystamy i jesteśmy bardzo zadowoleni (co nie znaczy, że nie ma dobrych alternatyw). Więcej z nich wymieniam w mojej bazie danych + zakładki migracyjne (ze szczególnym uwzględnieniem narzędzi wspierających Mavena).

Pascal Thivent
źródło
1
Takie narzędzia pomogą nam rozwijać się szybciej i bezpieczniej
Arthur Ronald
@Arthur Tak, to bardzo dobrze, że mamy też takie narzędzia. Kaskadowe aktualizacje schematów z jednego środowiska do drugiego są teraz dla nas przyjemnością :)
Pascal Thivent