Как вы вносите изменения в схему действующей базы данных без простоев?
Например, допустим, у меня есть база данных PostgreSQL с таблицей, включающей различные пользовательские данные, такие как адреса электронной почты и т. Д., Все они связаны с конкретными пользователями. Если бы я хотел переместить адреса электронной почты в новую выделенную таблицу, мне пришлось бы изменить схему, а затем перенести данные электронной почты в новую таблицу. Как это можно сделать без остановки записи в исходную таблицу? Конечно, пока данные записываются из старой таблицы в новую, новые данные будут продолжать записываться в старую таблицу и будут пропущены, верно?
Я думаю, что эта проблема возникает довольно часто, но я не могу найти никакого стандартного решения для решения этой проблемы.
Эта статья посвящена проблеме, но я не совсем понял шаг 3. Он говорит записать в обе таблицы, а затем перенести старые данные из первой в новую. Как убедиться, что вы переносите только старые данные?
(Я использую PostgreSQL на Heroku .)
Ответы:
Вы уже почти получили свой ответ:
Что касается шага 3 , используйте что-то вроде этого (в одной транзакции):
Вставьте то, чего еще нет:
Обновите то, что изменилось за это время:
Новые данные не будут затронуты, потому что они идентичны в обоих местах.
источник