Pergunta

Como você desenvolver um aplicativo de banco de dados altera inevitavelmente pop-up.O truque que eu encontrar é manter seu banco de dados de criar no passo com o seu código.No passado, eu adicionei um passo de compilação que executar scripts SQL contra o banco de dados de destino, mas que é perigoso, tanto quanto você pode inadvertanly adicionar dados falsos ou pior.

A minha pergunta é: quais são as dicas e truques para manter o banco de dados na etapa com o código?O que acontece quando você reverter o código?Ramificação?

Foi útil?

Solução

Números de versão incorporada no banco de dados são úteis.Você tem duas opções, a incorporação de valores em uma tabela (o que permite o controle de versão de múltiplos itens) que podem ser consultados, ou ter um explicitamente chamado de objeto (como uma tabela ou algo do tipo), você pode testar.

Quando você soltar a produção, você tem um plano de reversão no caso de inesperada catástrofe?Se o fizer, é a aplicação de um esquema de reversão script?Use a sua reversão script para reverter o banco de dados para um código anterior versão.

Outras dicas

Você deve ser capaz de criar o seu banco de dados a partir do zero em um estado conhecido.

Ao ser capaz de fazer isso é útil (especialmente nas fases iniciais de um novo projeto), muitos (a maioria?) bancos de dados irá rapidamente tornar-se muito grande para que isso seja possível.Além disso, se você tem qualquer BLOBs, então você vai ter problemas de geração de scripts SQL para o banco de dados inteiro.

Eu definitivamente estava interessado em algum tipo de banco de dados sistema de controle de versão, mas eu não encontrei nada ainda.Assim, em vez de uma solução, você terá o meu voto.:-P

Você realmente quer ser capaz de fazer uma máquina limpa, obter a versão mais recente do controle de origem, construir em uma única etapa, e executar todos os testes em uma única etapa.Fazendo isso rápido o faz produzir um bom software mais rápido.

Assim como bibliotecas externas, configuração de banco de dados também deve estar no controle de origem.

Note que eu não estou dizendo que todo o seu banco de dados ao vivo conteúdo deve ser da mesma fonte de controle, apenas o suficiente para chegar a um estado limpo.(Fazer backup de seu banco de dados de conteúdo, embora!)

Definir seus objetos de esquema e seus dados de referência em controle de versão de arquivos de texto.Por exemplo, você pode definir o esquema de Torque o formato e os dados O dbunit formato (ambos usam XML).Em seguida, você pode usar ferramentas (escrevemos nossa própria) para gerar a DDL e DML que levam você de uma versão de seu aplicativo para outro.A nossa ferramenta pode ter como entrada (um) a versão anterior do esquema de dados, arquivos XML ou (b) um banco de dados existente, para que você esteja sempre capaz de obter um banco de dados de qualquer estado para o estado correto.

Eu gosto da maneira que o Django faz.Você construir modelos e o quando você executar um syncdb aplica-se a modelos que você criou.Se você adicionar uma modelo que você só precisa executar syncdb novamente.Isso seria fácil ter o seu script de compilação fazer cada vez que você feito um esforço.

O problema vem quando você precisar alterar uma tabela que já está feito.Eu não acho que syncdb alças.O que exigem que você entrar e adicionar manualmente a tabela e também adicionar uma propriedade ao modelo.Você provavelmente quer para a versão de que a instrução alter.Os modelos sempre estar sob controle de versão, porém, assim se você precisar você pode obter um esquema de banco de dados em uma nova caixa sem executar os scripts sql.Outro problema com este é manter o controle de dados estáticos que você sempre quer no db.

Trilhos de scripts de migração são muito boas também.

Um DB sistema de controle de versão seria ótimo, mas eu realmente não sei de uma coisa.

Ao ser capaz de fazer isso é útil (especialmente nas fases iniciais de um novo projeto), muitos (a maioria?) bancos de dados irá rapidamente tornar-se muito grande para que isso seja possível.Além disso, se você tem qualquer BLOBs, então você vai ter problemas de geração de scripts SQL para o banco de dados inteiro.

Cópias de segurança e compressão pode ajudá-lo lá.Desculpe, não há desculpa para não ser capaz de obter um bom conjunto de dados para desenvolver contra.Mesmo se é apenas um sub-conjunto.

Coloque seu banco de dados desenvolvimentos sob controle de versão.Eu recomendo dar uma olhada no neXtep designer :http://www.nextep-softwares.com/wiki

É um livre GPL produto que oferece uma nova abordagem para desenvolvimento de banco de dados e implantação de ligar informações de versão com um SQL mecanismo de geração de que poderia calcular automaticamente qualquer script de atualização que você precisa para atualizar qualquer versão do seu banco de dados para outro.Qualquer banco de dados existente pode ser versão controlada por uma sincronização inversa.

Actualmente suporta Oracle, MySql e PostgreSql.DB2 suporte está em desenvolvimento.É um banco de dados completo ambiente de desenvolvimento onde você trabalhar sempre em versão controlada elementos a partir de um repositório.Você pode publicar suas atualizações por simples de sincronização durante o desenvolvimento e pode gerar exportável base de dados de entregas que você vai ser capaz de executar em qualquer voltado banco de dados através de um instalador autônomo que valida as versões, executa estruturais verifica e aplica os scripts de atualização.

O IDE também oferece SQL editores, dependência de gestão, suporte para modular modelo de banco de dados componentes, o modelo de dados de diagramas, clientes de SQL e muito mais.

Toda a documentação e conceitos podem ser encontradas no wiki.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top