Jak wprowadzać zmiany schematu w aktywnej bazie danych bez przestojów?
Załóżmy na przykład, że mam bazę danych PostgreSQL z tabelą zawierającą różne dane użytkownika, takie jak adresy e-mail itp., Wszystkie powiązane z określonymi użytkownikami. Gdybym chciał przenieść adresy e-mail do nowej dedykowanej tabeli, musiałbym zmienić schemat, a następnie przeprowadzić migrację danych e-mail do nowej tabeli. Jak można to zrobić bez zatrzymywania zapisów na oryginalnym stole? Z pewnością podczas gdy dane są zapisywane ze starej tabeli do nowej, nowe dane byłyby nadal zapisywane do starej tabeli i byłyby pomijane, prawda?
Wydaje mi się, że ten problem pojawia się dość często, ale nie mogę znaleźć standardowego rozwiązania tego problemu.
W tym artykule omówiono problem, ale tak naprawdę nie zrozumiałem kroku 3. Mówi, aby napisać do obu tabel, a następnie przenieść stare dane z pierwszej tabeli do nowej. Jak upewnić się, że migrujesz tylko stare dane?
(Używam PostgreSQL na Heroku .)