Pergunta

Tenho uma pequena quantidade de experiência usando o SVN em meus projetos de desenvolvimento e tenho pouca experiência com bancos de dados relacionais. Conheço os conceitos básicos como tabelas e declarações SQL, mas estou longe de ser um especialista.

O que eu gostaria de saber é se houver algum sistema genérico de tipo de controle de versão como o SVN, mas isso funcionará com um banco de dados em vez de arquivos. Eu gostaria do mesmo tipo de recursos que você recebe com o SVN, como a capacidade de criar ramificações, criar tags e mesclar ramos. Em vez de um número de revisão associado a uma versão de um repositório de arquivos, ele estaria associado a uma versão do banco de dados.

Suas soluções genéricas estão disponíveis que podem adicionar esse tipo de funcionalidade independente do esquema real de banco de dados? Eu estaria interessado em soluções que funcionam com o MySQL ou o MS SQL Server.

Devo esclarecer também que estou tentando controlar a versão dos dados e não o esquema. Eu esperaria que o esquema permanecesse constante. Na verdade, parece que eu quero uma maneira de criar um log de todas as solicitações de inserção, atualização e exclusão enviadas ao banco de dados entre cada versão dos dados. Dessa forma, qualquer versão pode ser recriada renderizando todas as instruções SQL que foram salvas na versão desejada.

Foi útil?

Solução

Você pode script todo o seu DDL, procedimentos armazenados e outros arquivos de texto regulares.

Em seguida, você pode simplesmente usar o SVN para versão do banco de dados.

Outras dicas

Nunca encontrei uma solução que funcione e também a subversão, mas aqui estão algumas coisas que fiz que ajudaram:

  1. Faça scripts que criarão o esquema e preenchem todos os dados iniciais. Em seguida, faça um script de atualização para cada alteração depois disso. É um processo bastante manual, mas funciona. Há coisas extras que ajudam a armazenar o número da versão atual em uma tabela no banco de dados e garantir que os scripts sejam idempotent.

  2. Armazene o db de desenvolvimento completo em subversão. Isso geralmente não funciona muito bem para mim se houver muitos dados ou for frequentemente alterado. Mas em alguns projetos pode funcionar.

Eu mantenho e mantenho criar scripts no meu sistema de controle de versão.

Há duas coisas em que consigo pensar:

  • http://www.liquibase.org/ - fornece uma maneira de gerenciar geralmente as alterações do banco de dados. Cria arquivos que se comprometem com o controle de origem e ajuda a gerenciar mudanças em diferentes bancos de dados de desenvolvimento, etc.
  • http://www.viget.com/extend/backup-your-database-in-git/ - Isso descreve uma estratégia para fazer backup de um banco de dados no controle de origem, mas a mesma estratégia pode ser usada apenas no esquema. Nesse esquema, o banco de dados estaria em uma área separada do seu código principal. (Isso também pode ser usado com outros sistemas de controle de origem.)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top