Zero Downtime Migration w PHP

0

Witam,

Czy ktoś robi migracje struktury bazy danych z ZDM? Jezeli tak jakiej biblioteki uzywacje, jak rozwiazaliscie lock timeout etc? Nie moge nic znalezc, normalnie zero artykułów w PHP. Python etc tak, w PHP nic, zero.

Innymi słowy jak np dodajecie nową kolumne na produkcji do tabeli ktora ma np 50 milionow rekordów do tego sama aplikacja ma caly czas wysoki traffic?

1

Dobre pytanie. Samo dodawanie pustych kolumn nie zajmuje wiele. Ja bym zrobił kopię bazy, dodał do niej kolumnę i na produkcji przepiął źródło na tą sklonowaną bazę. Voila :)

1

Możesz zrobić to on-line:

  • dodajesz nową tabelę z lepszą strukturą
  • w kodzie zmieniasz logikę:
    a) czytanie: czytasz z nowej tabeli, jeśli nie znalezione, czytasz ze starej i uzupełniasz jak trzeba
    b) zapis modyfikacji: zapisujesz tylko w nowej tabeli a jeśli zapis w nowej był pierwszy raz (insert) w starej usuwasz rekord
    c) kasowanie: kasujesz w nowej, jeśli nie znaleziony rekord - także w starej tabeli
    d) wstawianie nowego rekordu: tylko w nowej
  • dodatkowo możesz dodać proces w tle który będzie czytał paczkami rekordy i przenosił je do nowej struktury
  • do raportów będziesz musiał użyć widoku z unią

Taki upgrejd może trwać bardzo długo, zanim zaczniesz kolejny, poprzedni proces upgrejdu musi byc skończony.
Tabela może mieć dowolną liczbę rekordów.
Po skończeniu upgrejdu stara tabela powinna być pusta.

0

Spoko, a jak to wszystko latwo i przyjemnie ogarnoac? Widzialem, ze np Python/Django ma gotowa biblioteke do tego. Latwa w uzyciu, latwa w konfiguracji. W PHP nie znalazlem, zadnej biblioteki na composera, nic. Nawet temat nie istnieje w google. To jak ludzie migruja DB?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.