Wykonywanie skryptu sql tylko raz przez aplikację webową

Odpowiedz Nowy wątek
2015-11-25 20:42

Rejestracja: 8 lat temu

Ostatnio: 3 tygodnie temu

0

Witam

Wraz z kolegami stworzyłem mały webservice w javie i natknęliśmy się na następujący problem. Każdy ma swoją bazę danych lokalnie, ale jest ona też postawiona na serwerze. No i teraz jak zmienimy coś w bazie to jak zrobić, by każdy miał tą samą bazę (chodzi mi o kolumny, tabele ogólnie schemat).

Prawdopodobne rozwiązania problemu.

  1. Zapiąć aplikacje javy każdemu na serwer. Jest to niemożliwe ponieważ nasz webhosting oferuje dostęp do bazy tylko lokalnie, czyli tylko od strony aplikacji na serwerze. Mógłbym utworzyć bazę danych na jakimś innym hostingu, ale wydaję mi się to raczej niebezpieczne i znacznie zwolniło by działanie webservicu (aplikacja musiałaby się łączyć ze zdalną bazą zamiast lokalną). O wiele bardziej podoba mi się opcja druga.

  2. Pracowałem kiedyś w firmie, w której ten problem był rozwiązany następująco. Był plugin do mavena, który był skonfigurowany tak by podczas budowania aplikacji wykonywał wszystkie skrypty sql znajdujące się w danym folderze i pamiętał, które wykonał, by przy następnym budowaniu już ich nie ruszać. Było to moim zdaniem super rozwiązanie bo jak ktoś coś chciał zmienić na bazie to po prostu wrzucał skrypt do tego folderu pushował na repo. I podczas budowania aplikacji zarówno jemu, każdemu z programistów i na serwerze wykonywał się skrypt także każdy korzystał z tej samej bazy. Niestety nie mogę znaleźć tego plugina ani konfiguracji. Również nie znalazłem nigdzie w google, by ktoś borykał się z podobnym problemem co wydaję mi się dziwne. A może da się to zrobić jakoś w Springu? Jeśli nie będę musiał sam to napisać w javie, jak to zrobić?

Pozostało 580 znaków

2015-11-25 20:52

Rejestracja: 7 lat temu

Ostatnio: 9 miesięcy temu

Może chodzi Ci o Liquibase (ma plugin do mavena). Jest też najprostszy przypadek ustawić opcję ddl-auto, np: spring.jpa.hibernate.ddl-auto=update. Jeśli inna osoba zmieni coś w encji to po pobraniu najnowszej wersji z Gita i uruchomieniu baza danych zostanie zaktualizowania na podstawie encji.

Tak tylko chodzi by kontrolować jakie zmiany mają trafić do bazy a a jakie nie."Aktualizowanie na podstawie encji brzmi dla mnie dosyć ogólnie". Czasami trzeba dodać kolumnę, czasami tabelę, a czasami rekord, wolałbym to kontrolować przy pomocy skryptów. - dagi12 2015-11-25 21:57
Sory za zamieszanie rzeczywiście jest to liquibase, zmyliła mnie ta opcja aktualizacji na podstawie encji, nie było to potrzebne. - dagi12 2015-11-29 20:28
Drugie zdanie mojego posta to rozwiązanie alternatywne ;) - Marszal 2015-11-30 14:37

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0