Oto coś, co robię. Nie powoduje to zerowego przestoju, ale może zakończyć się w mniej niż sekundę.
Utwórz bazę danych, która zawiera tylko elementy interfejsu do Twojej prawdziwej bazy danych. W moim przypadku zawiera tylko definicje widoków, a wszystkie zapytania użytkowników przechodzą przez tę bazę danych.
Każdej nocy twórz nową bazę danych. Po zakończeniu zaktualizuj definicje widoku, aby odwoływały się do nowej bazy danych. Zalecam wyłączenie dostępu użytkownika do bazy danych zawierającej widoki podczas ich aktualizacji lub usunięcie wszystkich widoków i ponowne ich utworzenie - zapobiega to częściowemu dostępowi do starej bazy danych. Ponieważ tworzenie widoków jest szybkie, powinno to być bardzo szybkie działanie.
Wszystko to robimy poprzez pracę. W rzeczywistości przed zmianą widoków produkcyjnych testujemy tworzenie widoku w innej bazie danych, aby upewnić się, że wszystkie działają.
Oczywiście, jeśli użyjesz alter view
zamiast wymagać spójności we wszystkich widokach, nie ma przestojów, tylko krótki okres niespójności.