Ferramenta de atualização do PostgreSQL?

1

Existe uma ferramenta (PHP, Perl, Ruby, shell, SaaS on-line) que pode fazer um despejo de banco de dados PostgreSQL, um novo esquema e migrar (sem perda de dados)? Lidar com a queda e adição de dependências é um pouco trabalhoso.

    
por Devin Ceartas 03.11.2011 / 20:53

1 resposta

2

Resposta curta: Não.

Resposta mais longa: A determinação mágica do caminho do Esquema A para o Esquema B está além das capacidades de um programa de computador, mesmo que seja tão complexo quanto um sistema de banco de dados. Um humano precisa se envolver.

O procedimento de atualização do banco de dados deve incluir a criação de um script de atualização (por exemplo, updates-1.3.0.sql ) que faça as coisas apropriadas e necessárias, incluindo:

  • CREATE TABLE , ALTER TABLE e DROP TABLE comandos
  • CREATE INDEX e DROP INDEX comandos
  • Qualquer SQL Magic (inserção / exclusão / atualização de dados)
  • Criar acionadores / restrições apropriados
  • Fazendo VACUUM (ou VACUUM FULL / VACUUM ANALYZE conforme apropriado)

Em seguida, compare sua versão atual do esquema (você pode armazenar isso no banco de dados em algum lugar) na lista de scripts de atualização que você possui e execute os scripts de atualização para fazer a transição para o novo esquema. Por exemplo, se você estiver executando a revisão de esquema 1.2.0 e desejar fazer a transição para o 1.3.0, você aplicaria o updates-1.2.1.sql , updates-1.2.2.sql ,. . ., updates-1.3.0.sql

Algumas dicas sobre os scripts de atualização:

  1. Certifique-se de que tudo esteja agrupado em uma transação ( BEGIN ... ROLLBACK ... COMMIT ).
    Se algo der errado, você será capaz de abortar todo o desastre sem deixar seu banco de dados em um estado estragado / inconsistente.

  2. Escreva seus scripts de atualização à medida que você escreve seu novo esquema.
    Na verdade, meu método usual de escrever um arquivo SQL para criar o novo esquema em um banco de dados vazio é desenvolver o script de upgrade, executá-lo em um banco de dados vazio e despejar o esquema resultante - Isso garante que o script "bare metal" produz resultados idênticos aos que você obteria do processo de atualização.

  3. Espere que as atualizações falhem - Inclua erros detalhados ( RAISE EXCEPTION / RAISE NOTICE ) e certifique-se de que os programas que executam os scripts SQL de atualização parem se um erro for encontrado.

por 03.11.2011 / 21:14

Tags