Przez ostatnie dwa miesiące szukałem rozwiązań lub praktyk do obsługi zarządzania wydaniami w bazach danych. Szukam tego, co ludzie uważają za najlepszy proces radzenia sobie z tym.
Mamy 3 środowiska dla naszych baz danych:
- Rozwój
- Testy akceptacji użytkownika (UAT)
- Produkcja
Problem polega na tym, że czasami wprowadzamy zmiany do kilku rzeczy w naszej bazie danych programowania i przychodzi czas na wdrożenie, niektóre funkcje mogą nie być gotowe do wydania w UAT.
Ostatnio zaczęliśmy używać kontroli źródła SQL Red Gate do przechowywania wszystkich naszych encji (z regularnymi zatwierdzeniami).
Myślałem o wyjściu z zestawu zmian (tj. Powiedzmy, że wszystko od zestawu zmian X i wstecz jest teraz wypychane do UAT), ale oznacza to, że ludzie sprawdzają kod pod kontrolą źródła tylko przed wykonaniem wdrożenia, które może być mylące ( zwłaszcza, że ludzie zapominają). Innym problemem związanym z podejściem do zestawu zmian jest to, że jeśli w procedurze przechowywanej występuje błąd, który należy naprawić, numer zestawu zmian skończyłby się poza zakresem naszego maksymalnego zestawu zmian dla wersji, dlatego też jest tak, że jeśli musimy odtworzyć bazę danych z maksymalnego zestawu zmian, ponownie wypchniemy błąd.
Wszelkie sugestie dotyczące procesu?
Dzięki
źródło
Odpowiedzi:
Migracje
W górę i w dół, które są w twoim repozytorium i oznaczone wraz z aplikacją.
Możesz nawet wykonać majsterkowanie za pomocą plików płaskich SQL, które modyfikują schemat i aktualizują wersję schematu. Wszystko, co naprawdę musisz zrobić, to:
Cóż, możesz wprowadzać zmiany programistyczne w dev, ale zawsze powinieneś zdmuchnąć db i odbudować go z migracji po zarejestrowaniu zmiany.
źródło
Kontrola źródła!
Nie wdrażasz binarnych programów rozwojowych bezpośrednio na produkcje bez przechodzenia przez svn / git / p4. Dlaczego więc same bazy danych miałyby to robić? Uzyskaj prywatne wystąpienia dla programistów, aby przetestować ich lokalne zmiany, ale kiedy musi przejść do bazy danych rozwoju, musi przejść przez sprawdzone pliki ddl. Możesz nawet napisać narzędzia do automatycznego stosowania tych zmian ddl (nie znam żadnego istniejącego sposobu, aby zrobić to poprawnie).
Po wprowadzeniu ograniczeń dotyczących zmian schematu db (Koniec z sqlplus -> wystawienie ddl!) I ścisłej kontroli konta (brak dostępu ddl do wszystkich), powinno to stać się łatwiejsze do zarządzania.
źródło
W następstwie sugestii użycia migracji ... być może użyj O / RM, który obsługuje migracje, takie jak Ruby on Rails i Entity Framework 4.3 Problem z obydwoma podejściami polega jednak na tym, że migracja to wszystko albo nic. Nie można (zwykle) wybrać, które migracje mają zostać zastosowane, podobnie jak w przypadku zestawów zmian.
Inną realną opcją (jeśli jesteś na stosie Microsoft, nigdy nie wspominałeś o platformie) jest zarządzanie SQL za pomocą narzędzi Visual Studio Database. Ma wbudowane refaktoryzację (zmiana nazwy / usuwanie kolumn itp.) I weryfikuje model. Jeśli na przykład przechowywany proc odwołuje się do kolumny, której już nie ma, poinformuje o tym.
źródło