Wpis z mikrobloga

Załóżmy, że mamy dwie bazy danych- produkcyjną(do której nie ma dostępu zdalnego) i testową u siebie na miejscu. Co jakiś czas chcemy, aby baza produkcyjna miała identyczne obiekty bazodanowe jak baza testowa(wysyłamy kogoś aby dograł brakujące elementy). Pytanie w jaki sposób najłatwiej to robić? Eksportować bazę testową i zastępować produkcyjną? Monitorować wszystskie zmiany w bazie testowej?


#programowanie #oracle #bazydanych
  • 8
@tallman: Zakładając że chodzi Ci o sytuacje w której w wyniku dewelopmentu aplikacji powstają nowe tabele/kolumny/indeksy/klucze obce/widoki/procedury etc... to zmiany należy dokumentować, zbierać w skrypt i uruchamiać na produkcji jako element procedury wdrożenia nowej wersji aplikacji.

Alternatywnie możesz próbować zaprząc do śledzenia takich operacji oracle'owy auditing, ale on nie powinien Ci zastępować dokumentacji.
@tallman: Więc chcesz pchnąć zmiany z dev do produkcji? Robisz skrypty, najczęściej po prostu pliki SQL z poleceniami dla bazy lub migracje jeśli twój framework je wspiera i wykonujesz je podczas rolloutu. Można robić to ręcznie lub ustawić Ansible żeby robił to za ciebie.
@tallman: Migracje. Jak nie macie gotowego narzędzia to koncepcja jest taka:

W bazie tabela i pole z id ostatniego zapytania ( czyli wersja bazy )
Program/skrypt, do którego developerzy wrzucają zapytania modyfikujące bazę z kolejnymi idekami.
Program/skrypt który te zapytania na żądanie wykonuje od wersji bazy do ostatniego zatwierdzonego zapytania i jednocześnie aktualizuje pole z wersją bazy po każdym poprawnie wykonanym zapytaniu, a w razie wypierdki przerywa.

Sprawa się komplikuje jeśli
@tallman tak jak napisali poprzednicy, najlepiej kazda zmiane w obiektach dokumentowac w osobnych skryptach i dogrywac na produkcje, dobrze jest tez wersjonowac to co wgrywasz, to pozwala utrzymać większy porzadek i w razie potrzeby daje mozliwosc sprawdzenia wstecz co w danej wersji zostało zainstalowane. Archiwum takich zmian tez nie jest złym pomyslem. Przy takim porównywaniu jak teraz robicie - "co jakiś czas" - często można cos pominąć wiec inicjalnie możesz spróbować wykorzystać