Eu controle a versão da maior parte do meu trabalho com o Git : código, documentação, configuração do sistema. Sou capaz de fazer isso porque todo o meu valioso trabalho é armazenado como arquivos de texto.
Também escrevi e lidei com muitos esquemas SQL para nosso banco de dados Postgres. O esquema inclui visões, funções SQL e escreveremos funções do Postgres na linguagem de programação R (via PL / R ).
Eu estava tentando copiar e colar o esquema de partes que eu e meus colaboradores escrevemos, mas esqueço de fazer isso. A cópia e a ação passada são repetitivas e propensas a erros.
O método pg_dump / pg_restore não funcionará porque perde comentários.
Idealmente, eu gostaria de ter uma maneira de extrair meu esquema atual em um arquivo ou arquivos e preservar os comentários para que eu possa fazer o controle de versão.
Qual é a melhor prática para o esquema de controle de versão com comentários?
fonte
COMMENT ON
disponível em um ambiente não postgres? Eu não acho que é SQL padrão. o que significa que isso pode ser específico do postgres.Respostas:
Por que você não usa
COMMENT ON
os váriosSCHEMA
componentes, para que seus comentários estejam no esquema e serão descartados.fonte
Os esquemas de controle de versão sempre foram problemáticos para mim. Geralmente controlo a versão do esquema gerado pela ferramenta de modelagem de dados que estou usando. O modelo também é controlado por versão. Eu uso diffs entre o esquema atual e o anterior para criar o patch necessário para atualizar o esquema. Algumas ferramentas de modelagem criam scripts de atualização de esquema utilizáveis. Os scripts de atualização também são controlados por versão.
Ocasionalmente, vejo scripts destinados a despejar o esquema em um formato adequado para regenerar o esquema. Um deles pode ser o que você está procurando. Algumas das ferramentas de modelagem e consulta são capazes de criar scripts de regeneração de esquema de um esquema existente. Se você pode criar um script, poderá fornecer um arquivo adequado para controle de versão.
fonte
Uma alternativa (ou você pode combiná-los) à minha proposta anterior é escrever seu código SQL no seu editor (IDE), salvar os arquivos e enviá-los ao seu VCS, depois executar o código no banco de dados usando
psql -1f
. Dessa forma, o código é controlado por versão antes de ser executado.fonte
Estou trabalhando em um projeto semelhante. Esta é a minha proposta de design:
Se não estiver usando um repositório, crie uma tabela simples no formato .CSV de texto, como a tabela abaixo:
version | file name | date | description | 1.0 | yyyymmdd-v10.dump | yyyymmdd | new version of user table | 1.1 | backupDB-v11.dump | yyyymmdd | normalized reports tables |
mantendo um relacionamento no arquivo CSV dos despejos gerados por nome de arquivo, você pode rastreá-los de alguma maneira facilmente e garantir que a restauração funcione porque você despejou absolutamente tudo.
Hoje em dia, qualquer armazenamento na nuvem ou no local não deve ser tão caro, mesmo que se trate de TBs de dados. existem alguns preços entre 700 e 1000 USD com até 16 TB .
Você pode até economizar muito mais $$$ se mudar para uma nuvem de armazenamento como as mais populares da AWS S3
Se um bom design e os padrões da organização são definidos para acompanhar toda a infraestrutura e ativos de TI, não deve ser doloroso uma vez implementado, pode ser relativamente simples e economizará as dores da configuração e, o mais importante, o tempo ...
fonte