Zmiana nazwy kolumny bez łamania aplikacji
Zmiana nazwy kolumny bez łamania aplikacji
sp_rename jest szybkie.
Problem w tym, że wszystkie zależności nie stają się automatycznie zgodne z nową nazwą.
Ryzykowny wariant
| |
Jeżeli stara aplikacja nadal odwołuje się do Name, przestaje działać natychmiast.
Wariant kompatybilny
Zamiast rename:
- dodaj nową kolumnę,
- utrzymuj zgodność obu wartości,
- przełącz kod,
- usuń starą kolumnę dopiero później.
| |
Backfill
| |
Przy dużej tabeli wykonaj go partiami.
Okres przejściowy
W tym czasie można zastosować:
- dual-write w aplikacji,
- trigger jako rozwiązanie przejściowe,
- procedurę aktualizującą oba pola,
- widok zgodności.
Trigger bywa wygodny, ale zwiększa ukrytą logikę i powinien mieć jasno określony termin usunięcia.
Jak znaleźć zależności?
| |
To nie wykryje wszystkiego, np. dynamicznego SQL poza bazą.
Potrzebne są też telemetryka i analiza aplikacji.
Ostateczne usunięcie
Stara kolumna może zostać usunięta dopiero wtedy, gdy:
- stary kod nie działa już w żadnej instancji,
- nie ma raportów ani integracji używających starej nazwy,
- monitoring nie pokazuje odwołań,
- rollback nie wymaga starego kontraktu.
Podsumowanie
Rename jest operacją techniczną. Migracja nazwy jest zmianą kontraktu.
W Relacyjnym Renesansie kontrakty zmieniamy etapami.