Scalanie tabel bez przestoju: kiedy dwa modele mają stać się jednym
Scalanie tabel bez przestoju: kiedy dwa modele mają stać się jednym
Podział tabeli to jeden kierunek. Czasem po latach chcemy zrobić odwrotnie: kilka struktur połączyć w jeden model.
Przykład
Mamy:
| |
i chcemy przejść do:
| |
Nowy model
| |
Najpierw mapowanie semantyki
Scalenie nie jest tylko UNION ALL.
Trzeba ustalić:
- jak mapują się klucze,
- które kolumny mają wspólne znaczenie,
- co zrobić z kolizjami identyfikatorów,
- jak reprezentować pola istniejące tylko w jednym modelu.
Stabilny klucz
Jeżeli stare tabele mogą mieć ten sam CustomerId, potrzebna jest warstwa mapowania.
| |
Backfill i delta
Najpierw przenosimy stan historyczny. Potem synchronizujemy zmiany przychodzące w trakcie procesu.
CDC, kolejka zdarzeń albo dual-write mogą pełnić tę rolę.
Przełączanie konsumentów
Nie wszystkie aplikacje muszą przejść jednocześnie.
Można najpierw przełączyć:
- nowe API,
- raporty,
- wybrany moduł aplikacji,
- procesy batchowe.
Największa pułapka
Nie usuwaj starych tabel tylko dlatego, że nowa została poprawnie zasilona.
Najpierw udowodnij, że nikt już nie korzysta ze starego kontraktu.
Podsumowanie
Scalanie tabel to migracja danych, kluczy i semantyki jednocześnie.
Bez mapowania i telemetrii łatwo uzyskać nowy model, którego nie da się bezpiecznie zweryfikować.