Como você faz alterações de esquema em um banco de dados ativo sem tempo de inatividade?
Por exemplo, digamos que eu tenha um banco de dados PostgreSQL com uma tabela incluindo vários dados de usuário, como endereços de e-mail, etc., todos associados a usuários específicos. Se eu quisesse mover os endereços de e-mail para uma nova tabela dedicada, teria que alterar o esquema e migrar os dados de e-mail para a nova tabela. Como isso poderia ser feito sem interromper as gravações na tabela original? Certamente, enquanto os dados são gravados da tabela antiga para a nova, os novos dados continuariam a ser gravados na tabela antiga e seriam perdidos, certo?
Acho que esse problema surge com bastante frequência, mas não consigo encontrar nenhuma solução padrão para lidar com isso.
Este artigo trata do problema, mas eu realmente não entendi a etapa 3. Ele diz para gravar nas duas tabelas e depois migrar os dados antigos da primeira tabela para a nova. Como você garante que está migrando apenas dados antigos?
(Eu uso PostgreSQL no Heroku .)