Pergunta

O que muda para um banco de dados (MySQL, neste caso) o Hibernate sobreviver (dados, esquema, ...)?

Pergunto isso porque o tempo de inatividade zero com o Hibernate.

Alterar banco de dados, servidores de aplicação dividido em dois grupos, reimplantar o aplicativo em um dos clusters e aplicação switch.

Graças Stephan

Foi útil?

Solução

Eu vou responder a isso por experiência pessoal e não a partir de qualquer visão especial de hibernação. Portanto, tome isso com um grão de sal. Também um pouco de uma pergunta vaga ao que parece, adicionar comentários onde appropiate. :)

Em primeiro lugar, mudar / adicionar / remover o material para o esquema que não está mapeada no Hibernate nunca vai causar quaisquer problemas. Todos hibernação realmente faz é gerar consultas, uma vez que traduz um monte de coisas para SQL seu aplicativo vai simplesmente continuar a trabalhar enquanto as consultas continuam trabalhando. Isto significa adicionar colunas a uma tabela ou a adição de tabelas não é um problema, removendo colunas você não mapeou não é um problema, quer etc etc.

O que é mais problemático é muda para o material que está mapeado. Suponha que você alterar um número (10,0) para um número (11,0), isso geralmente funciona. Se você começar a fazer coisas como mudar um campo (1) CHAR para um campo de bits ou algo similar, você terá certas mudanças em seus mapeamentos de hibernação, o que tornará uma implantação existente falhar. Este é o senso comum. Se você tem que fazer mudanças como este, executar o ALTER TABLE no servidor db regular irá provavelmente bloquear a tabela de qualquer maneira, então reiniciar o aplicativo não é o seu maior problema.

Lidar com grandes mudanças de esquema sob alta disponibilidade não é algo de hibernação é destinado a lidar com diretamente. Hibernate assume um banco de dados relacional tradicional, onde as alterações de esquema são frequentemente muito caro.

Os três outros problemas que você menciona:

  • mudando fontes de dados: provavelmente requer um aplicativo restart
  • servidor de aplicações divisão: se você quer dizer que eu acho que você quer dizer, você pode simplesmente implantar em diferentes servidores de aplicativos. Se switchovers são exigência, uso algo entre seu aplicativo web eo cliente para lidar com eles, ou seja, um balanceador de carga de nível IP ou similar.
  • alteração de dados: os problemas normais com bancos de dados transacionais e vários escritores aplicar. Hibernate pode acabar com uma visão inconsistente do banco de dados. Pode substituir as alterações por outros usuários e, em alguns casos, isso pode gerar algumas exceções, mas você deve ser possível antecipar e agir em situações como essas AFAICT.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top