Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Testando a virtualização de banco de dados - Revista SQL Magazine 93
O artigo aborda uma avaliação de desempenho de bancos de dados virtualizados para auxiliar os profissionais que consideram a utilização de um projeto de virtualização em seus ambientes.
[Artigo disponível no Leitor Digital DevMedia. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da SQL Magazine 93
A utilização de virtualização computacional é uma técnica relativamente antiga, porém no decorrer dos últimos anos soluções que envolvem a virtualização vêm ganhando fôlego novo devido às diversas inovações recentes nesta área. Outro fator que impulsiona consideravelmente a utilização desta tecnologia é a crescente migração de aplicações para ambientes baseados na nuvem (cloud computing), uma vez que a infraestrutura para suportar aplicações na nuvem se baseia fortemente na virtualização de servidores computacionais.
Apesar de diversos esforços dos fornecedores de hardware e de software em otimizar cada vez mais o desempenho de soluções de virtualização que envolvem banco de dados, ainda existe uma diferença perceptível de desempenho entre um ambiente virtual e um ambiente real.
Do ponto de vista operacional, a questão de desempenho do banco de dados virtualizado ainda é uma das principais dúvidas para os profissionais que planejam montar projetos com esta tecnologia motivados pela promessa de redução de custos e facilidade de gerenciamento da infraestrutura.
Este artigo abordará uma avaliação de desempenho de bancos de dados virtualizados para auxiliar os profissionais que consideram a utilização de um projeto de virtualização em seus ambientes. O artigo se concentrará na explicação de virtualização, nas melhores práticas e na elaboração de um teste que compara métricas de desempenho de processamento (CPU), memória e disco em um ambiente real e virtualizado, envolvendo o uso de um banco de dados no SQL Server. Apesar da comparação apresentada neste artigo se limitar a um contexto específico, o leitor poderá ter uma base de comparação inicial para formar sua opinião e levar em consideração quando estiver envolvido na elaboração de projetos de virtualização de banco de dados.
A tecnologia de virtualização
Para começar a compreender o que é a virtualização é preciso entender um conceito chave: a emulação de instruções. Cada microprocessador possui um conjunto de instruções que ele pode executar de forma nativa, ou seja, este conjunto de instruções assembly é 'programado' fisicamente como um micro-código dentro do microprocessador. O exemplo clássico é o conjunto de instruções de microcomputadores conhecido apenas como x86, que contém as instruções assembly comuns em computadores do tipo PC que recebem o nome de plataforma baixa.
Porém, existe como emular outro conjunto de instruções por meio de software. Esta emulação é o que permite que softwares criados para uma determinada plataforma com um conjunto de instruções específicas sejam executados em diferentes plataformas com outros conjuntos de instruções. Um exemplo disso é o uso de emuladores de arcades e consoles de vídeo games. Como estas plataformas têm um conjunto específico de instruções associadas com seus processadores, os jogos desenvolvidos teoricamente não poderiam ser executados em microcomputadores cujo processador suporte o conjunto de instruções x86. Para atender a esta limitação (e permitir que jogos antigos possam ser executados em micro-computadores) é preciso programar um emulador para o conjunto de instruções da plataforma em questão. Por exemplo: o famoso emulador MAME permite que um microcomputador com o conjunto de instruções x86 possa rodar jogos antigos de arcade devido à sua capacidade de emulação de instruções do processador de 8 bits Motorola 6809, dentre outros.
Um programa que permite a virtualização, chamado apenas de virtualizador, faz algo similar: ele emula instruções de uma determinada plataforma. No entanto, é muito comum encontrar virtualizadores que emulam o próprio conjunto de instruções na qual eles estão sendo executados. A lógica aqui é que é possível criar um ou mais ambientes emulados (chamado de guests) completamente independentes entre si, mas dentro da plataforma que executa as virtualizações (o host). Em outras palavras, um computador com um virtualizador é chamado de host e uma ou mais máquinas virtuais gerenciadas pelo virtualizador são chamadas de guests. Dentre os principais programas virtualizadores para microcomputadores podemos citar o VMWare, o VirtualBox, o Parallels e o Microsoft Hyper-V.
O virtualizador emula o conjunto de instruções de forma que ele seja o mais parecido possível com a plataforma alvo (que será emulada). Isso quer dizer que um software que será instalado e executado em um guest não 'sabe' que está dentro de um ambiente virtual, pois as instruções que ele utiliza estão todas emuladas. Por isso é preciso realizar todo o trabalho de instalação de softwares em uma máquina virtual como se ela fosse uma máquina real, incluindo a instalação do sistema operacional, drivers, configurações, etc.
"
Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Mauro Pichiliani
Mauro Pichiliani é bacharel em Ciência da Computação, Mestre e doutorando em computação pelo ITA (Instituto Tecnológico de Aeronáutica). Trabalha há mais de 10 anos utilizando diversos bancos de dados e ferramentas de programação. Pode ser contatato no twitter como @pichiliani e no e-mail pichiliani...
8 COMENTÁRIOS
Ele irá me ajudar a decidir se devo ou não virtualizar servidores de Banco de Dados.
[]s
Fábio Prado
www.fabioprado.net
Pena não poder imprimir o artigo para compartilhar com os meus colegas e equipe.
Gostaria de perguntar sobre a questão do risco de perda de dados. Este risco é maior em ambientes virtualizados ou não faz diferença (considerando as mesmas configurações de transaction log de um BD em uma máquina física dedicada)?.
Bem, do ponto de vista do banco de dados nada muda em relação à perda de dados. Porém você deve se preocurar com a imagem da máquina virtual, pois se algo acontecer com ela todos os dados que estão dentro do banco de dados da máquina virtual podem ser comprometidos.
Mauro Pichiliani
No topo da página você pode encontrar a opção "código-fonte".
Um abraço
Acredito que a utilizacao de ferramentas de virtualizacao cooporativas (vSphere ESXi, Xen, etc) possam mudar drasticamente estas comparacoes, pois sao hipervisors voltados especificamentes para esta funcionalidade, com baixa latencia e gerenciamento de memoria/drivers mais eficientes.
Abs
Sim, é bem provável que você tenha razão. Para mais informações e uma discussão aprofundada sobre este tópico recomendo a você ouvir o episódio 21 do DatabaseCast onde conversei com um autor de livro brasileiro sobre este assunto:
http://imasters.com.br/artigo/24032/banco-de-dados/databasecast-21-virtualizacao-de-banco-de-dados
Mauro Pichiliani



