Sun Inner Circle: For Business & Technology Leaders Sun Inner Circle: For Business & Technology Leaders

Sun e MySQL: O que ele acrescenta aos desenvolvedores



Por Rick Palkovic, Fevereiro 2008

A maioria dos analistas de negócios aplaudiram a aquisição do provedor de bancos de dados de código aberto MySQL AB anunciada pela Sun Microsystems. Mesmo que o objetivo comercial da inclusão do MySQL sob o teto da Sun esteja claro, a aquisição fez com que muitos desenvolvedores se perguntem, quais seriam as vantagens para eles.

Os desenvolvedores procuram produtos fáceis de usar durante o desenvolvimento, que possam ser facilmente expandidos para níveis empresariais e que sejam eficientes por um período suficiente para compensar o tempo investido no domínio das tecnologias. Alguns membros da comunidade MySQL querem saber se eles continuarão a aproveitar produtos de código aberto de plano superior de empresas combinadas e se a comunidade continuará forte no futuro.

MySQL a opção líder de código aberto
MySQL é líder do mercado de bancos de dados de código aberto e ao que tudo indica, o futuro do MySQL na Sun está na comunidade de código aberto. Segundo Mårten Mickos, CEO da MySQL o comprometimento da Sun com software livre e de código aberto contribuiu para que o acordo fosse firmado. Durante um cortejo de quatro anos que Jonathan Schwartz registra em seu blog ficou claro para a diretoria da MySQL que o comprometimento histórico da Sun com os sistemas livres expandiu-se para o software de código aberto, e que a Sun seria um lar, no qual a comunidade MySQL poderia prosperar. Tanto a tecnologia Java como o MySQL estão licenciados no GPL Version 2 já com a perspectiva do GPL Version 3, assim que a licença estiver desenvolvida.

Para os desenvolvedores MySQL haverá poucas mudanças. No entanto, o cliente empresarial MySQL pode esperar um nível de serviços e apoio até maior, baseado em uma empresa Fortune 500. E como o MySQL está sendo usado mais amplamente, todos os usuários podem esperar uma inovação mais rápida de produtos, testes mais rigorosos e em geral um produto MySQL melhor.

MySQL e o pacote de software Sun
Quem duvida do comprometimento da Sun com o código aberto possivelmente teme ser sutilmente convencido a adotar outros produtos Sun — especialmente o Solaris OS, que por sua vez está sendo relançado como código aberto. Eventos na Sun, inclusive parcerias com a Intel, Microsoft, Oracle e outros concorrentes, indicam que a Sun se adaptará ao mercado ao invés de tentar empurrar qualquer regime de software aos desenvolvedores.

O acrônimo LAMP (sistema operacional Linux, servidor de rede Apache, servidor do banco de dados MySQL, linguagens PHP/Perl/Python) descreve o esquema de software favorecido pelos desenvolvedores de código aberto. Para cada elemento no esquema há alternativas, tanto de código aberto como patenteadas, de forma que o LAMP não é muito útil como acrônimo descritivo. Por exemplo, dos 50.000 downloads diários do MySQL, a maioria dos binários é para sistemas operacionais Windows — estes talvez para desenvolvedores WAMP? Valores semelhantes são aplicáveis a outras ferramentas de código aberto e produtos patrocinados pela Sun, especialmente o servidor de aplicação GlassFish. Apesar de sua determinação em competir agressivamente pelas parte de mercado entre os desenvolvedores LAMP, a Sun está apresentando suas ferramentas e seu software em toda plataforma popular.

Desenvolvedores que estão comprometidos com o software Sun podem possivelmente temer que a MySQL substituia as bases de dados alternativas como PostgreSQL e JavaDB em seu esquema de software. E novamente a Sun deixou clara a sua intenção de apoiar qualquer software de gestão popular que os desenvolvedores queiram inserir no slot de banco de dados, inclusive o Apache Derby. Segundo afirmação de Josh Berkus da equipe núcleo do PostgreSQL, a "Sun não está abandonando o suporte do PostgreSQL. O objetivo da Sun é tornar-se o vendedor número um de datacenters, não o vendedor número um de MySQL .... No mundo dos bancos de dados não há 'tamanho único'."

Se você já estiver usando MySQL em seu pacote de software de aplicações de rede você pode ter certeza que o MySQL continuará sendo o mesmo banco de dados livre e da comunidade que você estava usando até o momento, independente do sistema operacional, do servidor de rede ou da linguagem. Se você quiser escalonar para um desempenho no plano empresarial, a Sun providenciará o apoio e os serviços que você precisar. Se você estiver usando outro banco de dados, pode esperar que este rode bem com os produtos da Sun.

Mesmo que não exista banco de dados de tamanho único, a popularidade do MySQL mostra como ele está perto do ideal. Sua adaptabilidade e a facilidade de uso deve-se basicamente à sua arquitetura e sua habilidade de expansão. Essa arquitetura é uma das explicações por que o MySQL é a melhor opção para mais de 11 milhões de instalações ativas com mais de 100 milhões de cópias baixadas ou distribuídas até o momento. Enquanto isso está sendo escrito, uma nova cópia do MySQL está sendo baixada a cada dois segundos.

Habilidades de expansão horizontal
A estratégia que muitos usuários MySQL aplicam para o sucesso é conhecido como expansão horizontal. O termo refere-se a um design arquitetural que separa e distribui a carga de trabalho do banco de dados em produtos de hardware, replicando dados em diferentes servidores físicos. Essa estratégia se opõe ao aumento de potência da CPU, de armazenamento e da memória em um número menor de servidores monolíticos — uma estratégia muitas vezes denominada de expansão horizontal. A estratégia de expansão horizontal fornece tipicamente uma tolerância melhor de erros e uma tolerância geral para o dinheiro conforme mostrado em vários sites MySQL muito acessados que alcançou altos níveis de tempo de operação com esta abordagem.

Arquitectura Scale-out
Clique aqui para aumentar a imagem.

Em uma situação típica, usuários iniciam seções em servidores de rede ou aplicações orientadas ao cliente. Esses servidores enviam consultas conforme solicitação aos servidores de bancos de dados MySQL por meio de estabilizadores de carga ou outra lógica de aplicação que direciona as consultas. Se uma consulta faz com que o servidor escreva em um banco de dados, o servidor duplica seus dados em outros servidores MySQL para mantê-los atualizados para consultas posteriores.

Em cenários de alta disponibilidade e altos volumes um defeito em qualquer servidor MySQL costuma ser corrigido retirando o servidor defeituoso da linha e trocando este por outro servidor. Em alguns minutos o banco de dados pode ser reproduzido em um novo servidor e o serviço de consultas pode ser continuado como antes. O baixo custo de servidores convencionais proporciona a essa estratégia de expansão horizontal uma boa relação custo-benefício.

Arquitetura do mecanismo de armazenamento
A arquitetura do mecanismo de armazenamento do MySQL o torna único no mundo dos bancos de dados. Especialmente interessante é a camada de mecanismos de armazenamento conectável, conforme exibida na figura 2.

Arquitectura de motores de almacenamiento
Clique aqui para aumentar a imagem.

Acima da camada do mecanismo de armazenamento, o MySQL parece qualquer outro sistema de gestão do banco de dados. Um grupo de conectores está disponível para consultar o banco de dados. Um pool para conexão no servidor realiza a autenticação e o gerenciamento de threads, conexões, memória e caches. Os módulos no servidor analisam consultas, otimizam caminhos de acesso, etc.

Sob essa camada, diversos mecanismos de armazenamento podem ser conectados na arquitetura. Os mecanismos de armazenamento são componentes do servidor do banco de dados que realizam ações nos dados básicos que estão sendo mantidos em um nível físico do servidor. O mecanismo de armazenamento conectável permite um conjunto padrão de serviços de gerenciamento e suporte para aplicar a todos os mecanismos de armazenamento básicos. O resultado é como se houvessem muitos bancos de dados em baixo da cúpula de um único gerenciador.

Alguns mecanismos de armazenamento, assim como os usados para arquivamento, são de natureza não transacional. Esses mecanismos de armazenamento podem inserir e ler dados de forma bastante eficiente. Outros mecanismos de armazenamento garantem eficiência quando houver necessidade de operações transacionais e outros proporcionam alta disponibilidade mediante clustering. Esses mecanismos de armazenamento evitam o overhead natural de sistemas patenteados que tipicamente terão que aceitar o overhead da transação de suas arquiteturas de tabela mesmo quando não for necessário.

Por exemplo, um site cuja função prioritária é a busca de dados pode evitar qualquer overhead de transações usando o mecanismo de busca MyISAM, que é o mecanismo padrão para MySQL. O mecanismo MyISAM oferece consultas de alta-velocidade e capacidade de inserção, não-transacional, proporciona bloqueios em nível de tabela e apóia índices. É um bom mecanismo para os depósitos de dados universais tradicionais.

O servidor de banco de dados MySQL é fornecido com um grupo de mecanismos de armazenamento internos. Mecanismos de armazenamento externos são ajustados para otimizar o desempenho de produtos e situações específicas e são fornecidos tanto pelos vendedores independentes de software como pela comunidade MySQL.

Com múltiplos mecanismos de armazenamento você tem a capacidade de múltiplos bancos de dados. Se você migrar de outro banco de dados para MySQL você não precisa alterar a forma, como as suas aplicações interagem com o servidor de banco de dados — o código SQL é o mesmo. Mas dentro do servidor MySQL você pode escolher e selecionar mecanismos de busca que correspondam às suas necessidades de aplicação.

Por exemplo, se você descobrir que precisa de um banco de dados transacional, você pode usar uma única instrução para mudar o seu banco de dados de um sistema não-transacional para um sistema transacional. Se você depois decidir que precisa de um depósito de dados universal, um único comando pode lhe fornecer um poderoso banco de dados em coluna especializado na recuperação de dados. Se a sua principal atividade for a captura e o armazenamento de dados, o mecanismo de armazenamento Archive foi criado para manusear de forma eficiente grandes volumes de inserções e comprimir dados em um pequeno footprint.

Alta disponibilidade
Os ISPs (provedores de serviços de Internet) e as empresas de mainstream poderão achar que o recurso de replicação do servidor MySQL é suficiente para as suas necessidades de alta disponibilidade.

Para aumentar a disponibilidade, os clientes podem adicionar tecnologia de rede de área de armazenamento (SAN) ou Dispositivo de blocos replicados distribuídos (DRBD), um módulo para o kernel Linux do LINBIT que distribui replicação de dispositivo de blocos pela rede. A disponibilidade mais alta — "cinco noves," ou 99,999% — é fornecida pelo Cluster MySQL, que realiza replicação sincronizada entre nós de dados, chaveamento automático em caso de falha (failover) e replicação entre clusters.

A capacidade do MySQL de fornecer os mais altos níveis de desempenho para os locais de muito tráfego, combinado com a facilidade de uso no desenvolvimento de produto, ajuda a contabilizar sua grande popularidade

Se é livre, por que pagar?
Vinte e cinco por cento dos usuários do MySQL são desenvolvedores. Em muitas empresas pequenas, especialmente nas recém constituídas, o desenvolvedor é ao mesmo tempo administrador do banco de dados. Quando a empresa cresce e o volume de trabalho e os lucros aumentarem, alguns indivíduos importantes descobrem que podem aplicar melhor seu tempo em outras atividades que não sejam administração do banco de dados. A alta confiabilidade e as despesas com funcionários tornam-se cada vez mais importantes. Nesse ponto, a aquisição do MySQL Enterprise traz vantagens econômicas, por suas capacidades de monitoramento e suporte.

A versão livre do MySQL possui ferramentas idênticas à versão MySQL Enterprise — no entanto, a versão Enterprise é atualizada com mais freqüência. Esses dispositivos incluem as ferramentas de gerenciamento GUI, os kits de ferramentas de migração para migrar dados de outros servidores, conectores para JDBC e ODBC, etc.. O acesso à documentação e aos fóruns de usuários também é gratuito para a comunidade. Você pode desenvolver gratuitamente com o MySQL e não haverá surpresas, quando você começar a expandir a sua aplicação e migrar para uma versão paga do MySQL.

Conclusão
Ao adotar o modelo de código aberto para a tecnologia Java, o sistema operacional Solaris e outras propriedades, a Sun Microsystems tornou-se o maior contribuinte corporativo do mundo à comunidade de código aberto. O MySQL, que já é o banco de dados de código aberto mais popular do mundo, preenche um nicho importante no esquema de software da Sun. Com o apoio do alcance e dos recursos da Sun, o MySQL será adotado com uma freqüência cada vez maior. O resultado deverá beneficiar a Sun, a MySQL, a comunidade de desenvolvedores e clientes empresariais de grande e pequeno porte.