6 MIESIĘCY Z GÓRY −28% · 1 ROK Z GÓRY −50%Porównaj plany
PrivacyNodes
INŻYNIERIA WYDAŃ

Zachowaj zgodność zmiany bazy danych między wydaniami

Traktuj wycofanie aplikacji i wycofanie danych jako osobne decyzje. Dodanie zmiany w schemacie może zachować ścieżkę powrotu do zgodnego kodu. Zmiana nazw lub usunięcie danych w tej samej wersji może zamknąć tę ścieżkę, zanim aplikacja zostanie zweryfikowana.

Notatki inżynieryjne PrivacyNodes · Zweryfikowano · 3 min czytania

Zmapuj każdego czytelnika i pisarza

Pracuj na odizolowanym schemacie z reprezentatywnymi zanonimizowanymi danymi. Potrzebujesz bieżącej i następnej wersji aplikacji, znajomości swojego frameworka migracji, zweryfikowanej strategii kopii zapasowych oraz wglądu w długie transakcje. Uwzględnij workery, zadania zaplanowane, raporty i starsze instancje aplikacji. API może aktualizować się szybko, podczas gdy długo działający worker wciąż zapisuje do starej kolumny.

Nasza ilustracyjna usługa raportowania przechowuje etykietę eksportu w label i chce display_name. To przykład projektowy, a nie uniwersalny wykonywalny SQL. Potwierdź dokładną wersję PostgreSQL i framework przed wyborem składni migracji lub ustawień blokad.

Rozszerzaj bez wycofywania starej reprezentacji

Najpierw wprowadź nowe pole nullable. Wdróż wersję zgodności, która zapisuje obie wartości w jednej transakcji i odczytuje z wymaganym fallbackiem, gdy dane są niekompletne. Zdefiniuj, co się dzieje, gdy klient edytuje rekord podczas uzupełniania danych. Ponowna próba nie może utworzyć drugiego logicznego eksportu.

PostgreSQL ALTER TABLE operacje pozyskują blokady, a poziom zależy od podkomendy. Niewielka zmiana może czekać za długą transakcją, a następnie blokować inne prace. Przejrzyj konkretną operację i obserwuj oczekiwania podczas próby; addytywne nie oznacza wolne od blokad.

Dokumentacja techniczna: PostgreSQL ALTER TABLE · PostgreSQL jawne blokowanie.

Uczyń granicę zgodności widoczną

Ilustracyjna macierz zgodności wydania
Schemat i pisarzeZachowanie czytelnikaDecyzja o odzyskiwaniu
Istnieje tylko labelObsługiwany stary kodNajpierw dodaj nowe pole
Oba pola; pozostają pisarze tylko starego polaOdczytuj label jako autorytatywnyJeszcze nie przełączaj czytelników
Wszyscy pisarze zapisują podwójnie; zweryfikowane uzupełnienie danychNowe pole może stać się autorytatywneWycofaj tylko do zgodnego kodu podwójnego zapisu
Stare pole usunięteŻaden kod nie może odwoływać się do labelStary artefakt jest niezgodny

Fallback dla brakujących wartości nie może wykryć niepustej, ale nieaktualnej nowej wartości. Przed przełączeniem czytelników wycofaj pisarzy zapisujących tylko stare pole i zweryfikuj spójność. Wycofanie do kodu obsługującego tylko stare pole po przełączeniu czytelników może ponownie stworzyć rozbieżność. Zamiast tego zachowaj wersję zgodności jako zweryfikowany artefakt odzyskiwania.

Uzupełnij dane w ograniczonych, wznawialnych partiach

Znajdź wiersze wymagające skopiowania bez nadpisywania nowszej edycji klienta. Użyj stabilnego porządkowania, warunku aktualizacji bezpiecznego dla współbieżności i partii dobranych do obciążenia. Utrwal postęp, aby awaria mogła wznowić od znanej granicy. Monitoruj wolumen zapisów, oczekiwania na blokady, opóźnienie żądań i replikację, jeśli występuje.

Żaden rozmiar partii nie jest bezpieczny dla każdej aplikacji. Podczas próby porównaj małą partię ze zwykłym ruchem, a następnie wybierz regułę pauzy lub zatrzymania. Jeśli partia zawiedzie, sprawdź, co zostało zatwierdzone przed ponowną próbą. Nieograniczona pętla ponownych prób może zamienić odwracalną niezgodność w trwałe obciążenie bazy danych.

Sprawdź semantykę, nie tylko wypełnione wiersze

Zweryfikuj brakujące wartości, reprezentatywne etykiety, nowe rekordy i aktualizacje istniejących eksportów. Zliczanie niepustych wierszy może wyglądać poprawnie, mimo że wartości skopiowano z niewłaściwego źródła. Przetestuj artefakt zgodności na częściowo wypełnionych danych i uruchom worker rozpoczęty przed wdrożeniem.

Zapisz wersję schematu, rewizję migracji, kryteria ukończenia i niezgodne kombinacje. Przed usunięciem któregokolwiek sprawdź użycie fallbacku i spójność. Jeśli kontrole zawiodą, zatrzymaj uzupełnianie danych lub promocję, zachowaj dowody i wybierz zgodny artefakt albo zweryfikowaną naprawę do przodu. Nie twierdź, że wycofanie aplikacji odtworzy zatwierdzone dane.

Wycofaj stare pole w innej zweryfikowanej wersji

Usuń stare odczyty i zapisy po spełnieniu kryteriów przez uzupełnienie danych i okres obserwacji. Sprawdź rzadkie zadania, a także trasy interaktywne. Usunięcie starego pola należy do późniejszej zmiany z własną decyzją o odzyskiwaniu, aby problem z wydaniem nie zmuszał do łączenia naprawy kodu z rekonstrukcją danych.

Jeśli po wycofaniu pojawią się złe dane, zatrzymaj dalsze szkody i użyj planu odzyskiwania lub zatwierdzonej naprawy. Nie stosuj destrukcyjnej migracji w dół tylko dlatego, że narzędzia udostępniają przycisk wycofania. Dołącz macierz do rekordu wydania i przećwicz odzyskiwanie danych przed zmianą produkcji. Użytecznym wynikiem jest wyraźna granica zgodności, a nie gwarancja zerowego przestoju.

Oficjalne odniesienia

Dokumentacja została zweryfikowana dla tego artykułu. Przykłady są ćwiczeniami planistycznymi, a nie poleceniami przetestowanymi na serwerze PrivacyNodes. Sprawdź dokumentację dla swojej zainstalowanej wersji.