Image Image Image Image Image
Scroll to Top

Topo

23

nov
2011

Sem Comentários

Em Blog
Dados

Por Allison

Além de MySQL – Ramificando o banco de dados popular

Em 23, nov 2011 | Sem Comentários | Em Blog, Dados | Por Allison

Embora MySQL seja um dos programas mais populares, muitos desenvolvedores sentiram necessidade de ramificá-lo em outros projetos, cada um oferecendo sua própria especialidade. Essa necessidade, junto com o medo de que a Oracle irá desacelerar o crescimento do produto principal, levou à criação de muitos subprojetos e ramificações de interesse para desenvolvedores.

Introdução

MySQL é um dos programas de software livre mais populares da história. É o backbone de banco de dados de milhares de websites e pode-se dizer que detém o crédito (junto com Linux®) pelo crescimento explosivo da Internet nos últimos 10 anos.

Então, se o MySQL é tão importante, por que está aumentando o número de ramificações de alto perfil do produto MySQL principal? Como MySQL é software livre e gratuito, desenvolvedores sempre puderam pegar o código, modificá-lo conforme a necessidade e distribuir por conta própria. Por muito tempo, não havia nenhuma ramificação do MySQL em que um desenvolvedor confiasse em seu próprio ambiente de produção. No entanto, isso está mudando rapidamente. Várias ramificações estão recebendo muita atenção.

Este artigo irá discutir três ramificações populares do MySQL que estão atraindo atenção: Drizzle, MariaDB e Percona Server, incluindo o mecanismo XtraDB. Este artigo irá discutir brevemente os motivos para cada ramificação e suas metas e se o seu uso em seu ambiente de produção. Quando terminar de ler este artigo, você deve e star apto a responder à pergunta “Esses produtos de ramificação do MySQL são uma boa solução para o meu ambiente?”.

Por que ramificar?

Por que o MySQL precisa ser ramificado? Essa é uma pergunta legítima. Milhares de websites dependem dele e parece ser uma solução boa para muitas pessoas. No entanto, como acontece com frequência, o que é bom para muitas pessoas não é bom para todas as pessoas. Alguns desenvolvedores são incentivados a melhorar as coisas para suas próprias necessidades. O que poderia ser melhor do que transformar uma solução ótima numa solução perfeita?

Vamos examinar em melhores detalhes o que essas ramificações queriam mudar. Algumas ramificações acharam que o MySQL estava se tornando muito inchado e estava oferecendo muitos recursos que nunca iam interessar aos usuários, sacrificando simplicidade e desempenho. Se as pessoas estavam perfeitamente felizes com o MySQL 4, simplificado, por que deveriam lidar com a complexidade que foi incluída no MySQL 5? Para essa ramificação, uma ramificação do MySQL seria mais simples e mais rápida — oferecer menos recursos, mas torná-los extremamente rápidos, tendo em mente um público alto, nesse caso websites de alta disponibilidade.

Para outras ramificações, MySQL não estava oferecendo novos recursos suficientes ou os estava incluindo muito devagar. Eles talvez achassem que o MySQL não estava acompanhando seus mercados alvos de websites de alta disponibilidade executando em processadores com vários núcleos com muita RAM. Como sabem as pessoas familiarizadas com MySQL, ele oferece dois diferentes mecanismos de armazenamento — MyISAM e InnoDB. Essa ramificação achava que nenhum dos dois mecanismos de armazenamento oferecia exatamente o que eles queriam, por isso criaram um novo mecanismo perfeitamente adequado para seus objetivos.

Além disso, algumas ramificações têm como objetivo ser uma substituição de “entrada” (“drop in”) para o MySQL, na qual é possível simplesmente entrar na ramificação e não precisar escrever uma linha de código. A ramificação usa o mesmo código e interfaces que o MySQL, o que torna a transição o mais fácil possível. Outra ramificação afirma não ser compatível com MySQL e exige alterações no código. Cada ramificação também é muito diferente no nível de maturidade, com algumas afirmando estar prontas para produção, e outras afirmam estar longe desse objetivo no momento.

Por fim, há incerteza sobre como será o destino do MySQL com a Oracle. A Oracle comprou a Sun, que comprou MySQL, e agora a Oracle controla o produto MySQL, e lidera o desenvolvimento da comunidade na produção de novos produtos concluídos. Como a Oracle já tem um banco de dados comercial, há a preocupação de que a empresa pode não colocar recursos suficientes no MySQL para mantê-lo na ponta. Portanto, muitas ramificações também são resultado do medo subjacente de que o MySQL, o banco de dados grátis e de software livre líder, pode receber menos recursos, ciclos de release mais lentos e suporte mais caro.

XtraDB

XtraDB não é um produto independente, mas ainda é considerado uma ramificação de MySQL. XtraDB é, na verdade, um mecanismo de armazenamento para bancos de dados baseados em MySQL. Seria considerado um mecanismo de armazenamento adicional além do padrão MyISAM e InnoDB que já são parte do MySQL. MySQL 4 e 5 é instalado com cada tabela usando o mecanismo de armazenamento padrão MyISAM. InnoDB também é uma opção relativamente nova para mecanismo de armazenamento, e administradores e desenvolvedores de banco de dados podem escolher os tipos de mecanismo por tabela quando configuram o banco de dados. A principal diferença entre esses dois mecanismos de armazenamento é que MyISAM não oferece suporte transacional, mas InnoDB oferece. Outras diferenças são pequenas diferenças de desempenho, com InnoDB oferecendo pequenas melhorias de desempenho em relação a MyISAM, e mais confiabilidade e segurança ao lidar com perda de dados em potencial. Como InnoDB parece ser o mecanismo de armazenamento mais adequado para melhorias futuras, MySQL alterou o mecanismo padrão para InnoDB em vez de MyISAM a partir do release 5.5.

Construindo sobre essas vantagens, o mecanismo de armazenamento InnoDB foi ramificado em um novo mecanismo chamado XtraDB. Qual é a idade desse mecanismo de armazenamento? Ele foi lançado pela primeira vez há menos de 3 anos pela Percona. Portanto, é relativamente nova. Foi projetado especificamente para lidar com websites de alta disponibilidade modernos executando em servidores modernos. Foi projetado para executar em servidores com uma dúzia ou mais de núcleos e muita RAM (32 GB e mais). Esses são o tipo de servidores que qualquer empresa pode comprar de uma empresa de gerenciamento de servidores, e, portanto, um banco de dados deve ser projetado para aproveitá-los ao máximo.

A ramificação XtraDB tinha outro objetivo — ser uma substituição simples de entrada para o mecanismo de armazenamento InnoDB, de modo que usuários poderiam simplesmente alternar seu mecanismo de armazenamento sem ter que alterar o código do aplicativo subjacente. XtraDB tinha que ter compatibilidade retroativa com o InnoDB, além de fornecer todos os novos recursos e melhorias que eles queriam incluir. Eles atingiram esse objetivo.

Qual é a velocidade do XtraDB? Um teste de desempenho que eu encontrei diz que ele oferece 2.7x mais transações por minuto que o mecanismo InnoDB integrado no MySQL 5.1 (consulte Recursos). Certamente não é algo que pode ser ignorado, especialmente considerando que pode ser usado imediatamente.

Percona

XtraDB oferece ótimas melhorias sobre mecanismos de armazenamento MySQL integrados, mas não é um produto independente, e não é algo que se possa colocar em uma instalação MySQL existente. Portanto, se você quiser usar esse novo mecanismo de armazenamento, é preciso usar um produto que o ofereça.

Percona Server é esse produto, lançado pela Percona, empresa líder em consultoria de MySQL. É um produto de banco de dados independente que oferece aos usuários a capacidade de retirar sua instalação do MySQL e colocar o produto Percona Server, e assim obter a vantagem do mecanismo de armazenamento XtraDB. Afirma ser totalmente compatível com MySQL, portanto em teoria nenhum código precisaria ser alterado no software. Isso é, certamente, uma enorme vantagem. É ótimo para controle de qualidade quando você está procurando por uma melhoria de desempenho rápida. Portanto, um bom motivo para considerar Percona Server é aproveitar o mecanismo XtraDB com o menor número de alterações possível no código principal.

Além disso, eles são os autores originais do mecanismo de armazenamento XtraDB. A Percona lançou o código como software livre, de modo que ele pode ser encontrado em outros produtos, mas os criadores originais do mecanismo são as mesmas pessoas que criaram este produto. Usem essas informações como quiser.

Aqui estão as afirmações feitas para o Percona Server, retiradas do website deles:

  • Escalabilidade: lida com mais transações; faz ajuste de escala em servidores eficientes
  • Desempenho: Percona Server com XtraDB é extremamente rápido
  • Confiabilidade: resiliência a corrupção, replicação com segurança contra quebra
  • Gerenciamento: backup on-line, importação/exportação de tabela on-line
  • Diagnóstico: perfil e instrumentação avançados
  • Flexibilidade: tamanho de página variável, gerenciamento de buffer pool melhorado

A afirmação final da equipe do Percona é que o produto é o “mais próximo dos releases oficiais MySQL Enterprise da Oracle”, assim se diferenciando de outras ramificações que alteraram o código MySQL principal subjacente. Um ponto negativo do Percona Server é que eles gerenciam o código por si mesmos e não aceitam contribuições de desenvolvedores externos sem revisá-la antes, o que garante que eles controlem os recursos colocados no produto.

MariaDB

Outro produto que oferece o mecanismo de armazenamento XtraDB é o produto MariaDB. É muito semelhante ao produto Percona, mas oferece mais alterações no código subjacente para tentar obter ainda mais melhorias de desempenho em relação ao MySQL padrão. Utiliza o mecanismo XtraDB diretamente da Percona, portanto não á diferenças subjacentes nos mecanismos de armazenamento que cada um emprega, já que usam exatamente o mesmo.

Além disso, MariaDB oferece os mecanismos de armazenamento padrão oferecidos pelo MySQL, MyISAM e InnoDB. Portanto, na prática, pode ser considerado um superconjunto de MySQL, oferecendo tudo que o MySQL oferece e mais. Também afirma ser uma substituição de entrada para o MySQL, portanto pode ser instalado com o conhecimento de que não serão necessárias alterações no código subjacente ao passar o MySQL para o MariaDB.

Por fim, e talvez o mais importante, o criador chefe do MariaDB é Monty Widenius, o criador original do MySQL. Monty formou uma empresa para gerenciar o desenvolvimento do MariaDB, chamada Monty Program, que contrata desenvolvedores para criar e melhorar o produto MariaDB. Isso pode ser algo bom e ruim: é bom porque eles lideram os recursos e correções de erros no Maria, mas pode causar problemas porque a empresa não está focada em receita, mas sim em produto. Empresas que não geram receita não duram para sempre.

Drizzle

O último produto que iremos examinar é o Drizzle. Ao contrário dos outros dois produtos finalizados que examinamos, o Drizzle apresenta grande diferença em relação ao MySQL e até mesmo afirmam que o produto não é uma substituição simples para o MySQL. Eles estão tentando fazer mais mudanças importantes no MySQL e tem como objetivo fornecer uma ótima solução para o problema da alta disponibilidade, mesmo que isso signifique alterar aspectos do MySQL com os quais estamos acostumados.

No FAQ da empresa, a leitura das questões reforça os objetivos subjacentes. Eles não estavam satisfeitos com as alterações feitas no núcleo do MySQL após o release 4.1, afirmando que muitos desenvolvedores não queriam aquela sobrecarga adicional. Eles admitem que seu produto não é sequer um banco de dados de relação compatível com SQL. Isso é realmente diferente do MySQL.

Então, com uma mudança tão drástica em relação ao MySQL familiar, por que deveríamos considerar esse produto? Exatamente por esses motivos — é uma grande reescrita dos mecanismos do MySQL, com os recursos que foram considerados não ideais removidos, e com grande parte do código sendo reescrita para ser otimizada, chegando a ponto de trocarem C por C++ no código. E não acaba aí: esse produto tem um mercado alvo específico em mente com seu design — servidores com vários núcleos e muita RAM, máquinas de 64 bits executando Linux, servidores usados em computação em nuvem, servidores hospedando websites, servidores obtendo dezenas de milhares de ocorrências por minuto. É um mercado bem específico. É específico demais? Lembre-se do quanto esse tipo de empresa gasta com seus bancos de dados atualmente — se ela pode instalar Drizzle em vez de MySQL e cortar os custos com servidor pela metade, isso é muito dinheiro!

Então todos deveriam estar usando Drizzle, certo? Espere, pois, como eles destacam repetidamente, não é compatível com MySQL. Portanto, se você tem uma plataforma MySQL existente, haveria muitas alterações a serem feitas no código para fazer com que ele funcione corretamente no seu ambiente.

Embora exija mais trabalho para executar e não pareça ser tão rápido e fácil de usar como Percona ou MariaDB, eu incluo Drizzle porque, embora ele possa não ser sua escolha hoje, em alguns anos será provavelmente a escolha de algumas pessoas. Como o objetivo deste artigo é informar sobre as ferramentas que você usará no futuro, essa é uma boa oportunidade de mostrar esse produto. Muitos especialistas de DB líderes acham que o Drizzle será a escolha de instalações de alta disponibilidade em cinco anos.

Drizzle é 100% software livre e recebe contribuições abertamente de desenvolvedores. Não há uma empresa subjacente financiando o desenvolvimento, como no MariaDB, e não é fechado para contribuições de fora, como Percona. Está em uma boa posição para crescimento e novos recursos, que ele pode precisar, dado seu escopo de reescrever grande parte do MySQL.

Gráfico de comparação

Aqui está um resumo dos três produtos de ramificação MySQL mencionados neste artigo.

Produto Preços Objetivo Recurso Principal Pronto para Produção?
Percona Server Grátis Fornece um wrapper para mecanismo de armazenamento XtraDB e ferramentas de análise adicionais XtraDB Sim
MariaDB Grátis Estendeu MySQL para incluir XtraDB e outras melhorias de desempenho XtraDB Sim
Drizzle Grátis Oferece grandes melhorias de escalabilidade e desempenho em relação ao MySQL Alta disponibilidade Sim

Conclusão

Este artigo discutiu três novas ramificações do produto MySQL que intencionam resolver alguns problemas identificados com o MySQL. Os três são grátis e são produtos de software livre. É preciso pesar as vantagens e desvantagens de usá-los em relação ao que o MySQL já oferece. Eu acredito que, para quase todos que leem este artigo, MySQL será ainda a escolha preferencial para suas necessidades de bancos de dados. Eu duvido que muitos leitores deste artigo sejam proprietários de websites que recebem 1.000.000 de ocorrências por hora. Quero destacar isso novamente — MySQL ainda é um produto incrível que é um banco de dados perfeitamente adequado para a maioria dos casos de uso.

No entanto, para vocês que acham que seu site requer mais alta disponibilidade, escalabilidade e desempenho do que o MySQL pode oferecer atualmente, um desses três produtos pode ser a solução que vocês procuram. No futuro, se você acha que seu site irá se tornar uma ideia de um bilhão de dólares, deve-se considerar começar com um desses três produtos e assim resolver esses tipos de problemas antes mesmo que eles comecem.

Por fim, o motivo principal dessas ramificações do MySQL é alterar alguns recursos subjacentes do MySQL, sendo que os autores acharam que não podiam esperar que o MySQL fizesse isso. Além disso, o espectro da Oracle ronda sobre o futuro do MySQL, e muitos desenvolvedores, incluindo o desenvolvedor original do MySQL, estão preocupados sobre o futuro do produto e se a Oracle irá mostrar a devoção ao produto que um banco de dados de ponta exige. Na minha opinião, todas essas preocupações são válidas, e, por esse motivo, você deve manter esses três produtos em mente enquanto caminhamos para o futuro.

Recursos

Aprender

Obter produtos e tecnologias

  • Como você está interessado no desenvolvimento de banco de dados, talvez queira experimentar o produto gratuito IBM DB2 Express-C.
  • Experimente outro software IBM sem custo. Faça o download de uma versão de avaliação, faça login em uma versão de avaliação on-line, trabalhe com o produto em um ambiente de simulação ou acesse-o por meio da nuvem. Escolha dentre mais de 100 versões de avaliação de produtos IBM.

Fonte: Michael Abernethy/IBM

Redes Sociais

Tags | , , , , , ,

Enviar um Comentário