Pergunta

Eu posso entender os benfeitos por trás dos serviços sem estado de encaixe, como servidores da Web, aplicativos, balanceadores de carga, etc ... Se você estiver executando esses serviços em um cluster de máquinas, é muito fácil mover esses contêineres com baixoa sobrecarga.O que eu não entendo, mas é o propósito por trás de bancos de dados contentórios?Os bancos de dados são conectados a um volume de dados persistentes em um disco rígido específico.Por causa do estado, não é fácil, e não é eficiente para mover o contêiner de banco de dados.Então, alguém pode ver porque encaixerizando um banco de dados pode ser útil em tudo?

Foi útil?

Solução

.

"Então alguém pode ver porque encaixerização de um banco de dados pode ser útil?"

Boa pergunta Keeto. Uma das principais razões para contentorar seus bancos de dados é para que você possa ter o mesmo ambiente consistente para todo o seu aplicativo, não apenas as peças apátridas, entre dev, encenação e produção. Um ambiente consistente é uma das promessas do Docker, mas quando seu banco de dados vive fora deste modelo, há uma grande diferença que não pode ser contabilizada em seus testes. Além disso, contentando seu banco de dados, bem como o restante do seu aplicativo, é mais provável que você possa mover todo o aplicativo entre os provedores de hospedagem (digamos da AWS ao Google Compute). Se você usar o Amazon RDS, por exemplo, mesmo se você puder mover seus nós da Web para o Google, você não poderá mover seu banco de dados, o que significa que você é fortemente dependente do seu provedor de nuvem.

Outra razão para contentorar os serviços de dados é o desempenho. Isso é particularmente verdadeiro para provedores de serviços (todo o banco de dados como ofertas de serviços - por exemplo, Bancos de dados da nuvem do RackSpace - Executar em contêineres), porque os recipientes permitem fornecer garantias de serviço que não são possíveis usando a virtualização e a execução de um banco de dados por máquina física não é financeiramente viável. É provável que você não esteja executando um serviço de hospedagem de bancos de dados, mas essa analogia faz sentido semelhante se você estiver executando em metal nu e deseja usar contêineres para o isolamento do processo, em vez de VMs. Você obterá melhor desempenho para seus bancos de dados por causa do bem conhecido de I / O que você leva ao executar um dB em uma VM.

Não estou dizendo que você deve conter seu banco de dados, mas estas são algumas das razões pelas quais faria sentido.

Divulgação Completa, trabalho para o ClusterHQ, esse novo projeto que Mark O'Connor mencionado em sua resposta. Temos um projeto OpenSource chamado Flocker que torna muito mais fácil migrar bancos de dados e seus volumes entre os hosts para que os benefícios que mencionei acima não são completamente superados pelos negativos que você levantou em sua pergunta.

Outras dicas

Não tenho certeza se concordaria com o seu comentário sobre eficiência ... é muito mais fácil de fazer o download e executar um contêiner de banco de dados, em comparação com a instalação nativamente. A documentação do Docker descreve como implementar uma separação lógica limpa entre um recipiente de estado e seus dados:

mas ... você está correto que um recipiente muito bem estaria ligado ao seu servidor host, a menos que haja algum mecanismo para portar os dados também.

Uma solução óbvia é montar um volume de armazenamento compartilhado em todos os hosts que podem estar executando seu banco de dados.

O artigo a seguir discute uma solução muito inovadora, onde um cliente de um bittorrent é usado para replicar um contêiner de dados entre os hosts.

Finalmente, um novo projeto chamado Flocker está tentando resolver esse problema, gerenciando os contêineres estaduais e seus volumes zfs associados:

Este é um bom segmento, e o progresso recente na clonagem do SQL Server adicionaria recursos adicionais a usarem de contêineres com clones.Isso aborda alguns dos problemas de trabalho com grandes conjuntos de dados.Divulgação completa, trabalho para windocks, onde lançamos 2.0 com os recipientes do SQL Server com clonagem integrada do banco de dados.

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