Jak większość „popularnych” systemów baz danych (MySQL, Postgres ...) obsługuje zmienianie tabel w bazach danych na żywo (takich jak dodawanie, usuwanie lub zmiana typu kolumn)?
Wiem, że poprawnym sposobem jest tworzenie kopii zapasowej wszystkich harmonogramów przestojów, a następnie wprowadzanie zmian.
Ale ... czy jakiś obecny system baz danych obsługuje robienie tych rzeczy „on-line” bez zatrzymywania czegokolwiek? (być może opóźniając zapytania odnoszące się do właśnie zmienianej / usuwanej kolumny)
A co się stanie, gdy po prostu ALTER TABLE...
uruchomię działającą bazę danych na żywo? Czy wszystko się kończy, kiedy to się dzieje? Czy dane mogą ulec uszkodzeniu? itp.
Ponownie mam na myśli głównie Postgres lub MySQL, ponieważ to właśnie się spotykam.
(I tak, za każdym razem, gdy musiałem to zrobić, zanim zrobiłem to „we właściwy sposób”, wykonując kopie zapasowe, planując przestoje itp.… Ale chcę tylko wiedzieć, czy można to zrobić i to „szybko i szybko” brudne ”lub jeśli istnieje system DB, który faktycznie obsługuje zmiany schematu„ szybkie, aktywne i brudne ”)
Ktoś właśnie zasugerował zmianę schematu online dla MySQL ze skryptu Facebooka (z tutorialem tutaj i źródłem tutaj ) ... wydaje się być dobrym sposobem na zautomatyzowanie zestawu „hackich” sposobów, aby to zrobić ... w którym ktoś kiedykolwiek go używał coś przypomina produkcję?
pg_reorg
może pomóc w trudniejszych scenariuszach.