MariaDB ou MySQL: qual sistema de ge­ren­ci­a­mento de banco de dados está na frente? Embora o foco inicial do MariaDB fosse de­sen­vol­ver um subs­ti­tuto direto que atendesse altos padrões da co­mu­ni­dade de código aberto, atu­al­mente ambos os projetos seguem objetivos de de­sen­vol­vi­mento com­ple­ta­mente di­fe­ren­tes. Saiba quais são estes objetivos conosco.

MariaDB vs. MySQL: prin­ci­pais ca­rac­te­rís­ti­cas

MySQL é um sistema de ge­ren­ci­a­mento de banco de dados, testado e aprovado por usuários, dis­po­ní­vel como software de código aberto e que pode ser com­ple­men­tado com diversas extensões em­pre­sa­ri­ais. A equipe de de­sen­vol­vi­mento do MariaDB, liderada por Michael Widenius, in­cor­po­rou o melhor da software central do MySQL e adicionou vários recursos. A seguinte tabela mostra para quem vale a pena a mudança de MySQL para MariaDB, com­pa­rando ca­rac­te­rís­ti­cas centrais de ambos os SGBD.

Ca­rac­te­rís­tica MySQL 8.0 MariaDB 11
Ano de lan­Ã§a­mento 1995 2009
De­sen­vol­ve­dor Oracle MariaDB Cor­po­ra­tion / Fundação
Licença GPL + pro­pri­e­tá­ria GPL v2
Suporte a SO Linux, Windows, macOS Suporte mais amplo para Linux
Re­pli­ca­Ã§Ã£o GTID, Master/Slave GTID, Galera Cluster
Par­ti­ci­o­na­mento MySQL Cluster Spider, Galera
Controle baseado em funções Desde 8.0 Desde 10.0.5
Au­ten­ti­ca­Ã§Ã£o SHA-256 ed25519
Crip­to­gra­fia InnoDB InnoDB, Aria, Logs
Firewall e mas­ca­ra­mento Pro­pri­e­tá­rio Via MaxScale (BSL)
Funções de análise – Co­lumnS­tore
Backup Backup em­pre­sa­rial MariaDB Backup (GPL)
Motores de banco de dados InnoDB, MyISAM … + Co­lumnS­tore, MyRocks, Aria …
In­ter­fa­ces SQL/NoSQL Sim / Sim Sim / Sim
Co­nec­to­res incl. C, Java, PHP + Excel, Swift, R

MySQL e MariaDB: de­sen­vol­vi­mento

A figura chave por trás do MariaDB e do MySQL é o de­sen­vol­ve­dor de software finlandês Michael “Monty” Widenius. Junto com os suecos David Axmark e Alan Larsson, Widenius fundou a empresa de ações MySQL AB, que em 1995 lançou a primeira versão do sistema de ge­ren­ci­a­mento de banco de dados (DBMS) de código aberto MySQL. Isso culminou em 2008 com a venda do projeto de software para a Sun Mi­crosys­tems. Em 2009, Widenius deixou o projeto de software junto com outros de­sen­vol­ve­do­res e de­sen­vol­ve­do­ras centrais do MySQL e passou a se con­cen­trar no de­sen­vol­vi­mento do Fork MySQL MariaDB. A equipe de de­sen­vol­vi­mento temia que a Oracle entrasse em um conflito de in­te­res­ses ao de­sen­vol­ver o software de código aberto MySQL e, ao mesmo tempo, um software de banco de dados pro­pri­e­tá­rio.

O de­sen­vol­vi­mento do Fork MySQL ocorreu ini­ci­al­mente pela Monty Program AB, fundada em 2009. Esta se fundiu em 2014 com a SkySQL para formar a MariaDB Cor­po­ra­tion. O projeto co­mu­ni­tá­rio MariaDB Server é de­sen­vol­vido pela MariaDB Foun­da­tion. O MariaDB tem um forte foco no de­sen­vol­vi­mento aberto. Em destaque estão dois prin­cí­pios:

  • O código-fonte de partes de programas em de­sen­vol­vi­mento está dis­po­ní­vel em re­po­si­tó­rios públicos.
  • Todos os passos de de­sen­vol­vi­mento são do­cu­men­ta­dos pu­bli­ca­mente.

MariaDB vs. MySQL: com­pa­ra­ção

Os sistemas de ge­ren­ci­a­mento de banco de dados MySQL e MariaDB são baseados no mesmo núcleo de software. O MariaDB é um fork (uma divisão) do MySQL 5.1, mas ao longo do tempo se de­sen­vol­veu em um sistema de ge­ren­ci­a­mento de banco de dados in­de­pen­dente. Com­pa­ra­mos as di­fe­ren­ças entre as versões atuais de GA (Dis­po­ni­bi­li­dade Geral) do MariaDB e MySQL, MySQL 8.0.43 e MariaDB 11.8.2.

Cloud Compute Engine da IONOS

Empresas de médio e grande porte optam pela nuvem da Alemanha. Serviços IaaS e PaaS são para campeões.

  • Seguro
  • Confiável
  • Flexível

Estrutura do banco de dados

O de­sen­vol­vi­mento do MariaDB tem como objetivo garantir total com­pa­ti­bi­li­dade com a estrutura do banco de dados, APIs e arquivos de con­fi­gu­ra­ção do MySQL, per­mi­tindo aos usuários um Drop-in-Re­pla­ce­ment. Um upgrade do MySQL para MariaDB ou vice-versa deve ser tão fácil quanto um upgrade entre duas di­fe­ren­tes versões do MySQL.

Em princípio, ambos os sistemas de ge­ren­ci­a­mento de banco de dados têm a mesma estrutura de banco de dados sub­ja­cente. Ambos os sistemas seguem o modelo de banco de dados re­la­ci­o­nal. No entanto, desde a versão 10.5, MariaDB não utiliza mais mysqldump ou mysqladmin para tarefas de ad­mi­nis­tra­ção e backups como no MySQL, mas sim mariadb-dump e mariadb-admin.

Nota

MariaDB se es­ta­be­le­ceu como um subs­ti­tuto binário 1:1 para MySQL. No entanto, a partir da versão 8.0 do MySQL, essa com­pa­ti­bi­li­dade não é mais garantida.

Motores de banco de dados

MariaDB pretende se di­fe­ren­ciar do MySQL no futuro, prin­ci­pal­mente por meio da fle­xi­bi­li­dade. Os usuários têm, além dos motores padrão su­por­ta­dos pelo MySQL, uma quan­ti­dade crescente de motores de banco de dados al­ter­na­ti­vos dis­po­ní­veis para casos de uso es­pe­cí­fi­cos.

A tabela a seguir mostra os motores de banco de dados dis­po­ní­veis para MySQL 8.0.43 e MariaDB 11.8.2 (de acordo com a do­cu­men­ta­ção).

Motor de banco de dados MySQL 8.0.43 MariaDB 11.8.2 Descrição
InnoDB / XtraDB ✓ ✓ InnoDB é padrão em ambos os sistemas. XtraDB foi utilizado no MariaDB até a versão 10.1
MyISAM ✓ ✓ Sistema de ar­ma­ze­na­mento obsoleto sem suporte a tran­sa­Ã§Ãµes
MEMORY ✓ ✓ Para tabelas tem­po­rá­rias na memória com acessos rápidos
CSV ✓ ✓ Armazena tabelas no formato CSV
Arquivo ✓ ✓ Comprime dados para ar­ma­ze­na­mento de longo prazo
BLACKHOLE ✓ ✓ Aceita dados, mas não os armazena, usado para registro/teste
Merge ✓ ✓ Une várias tabelas MyISAM com a mesma estrutura
Federated / Fe­de­ra­tedX ✓ ✓ Acesso a tabelas remotas via rede (MariaDB: Fe­de­ra­tedX)
Co­lumnS­tore ✗ ✓ Engine orientada a colunas para análise de grandes volumes de dados
Aria ✗ ✓ Al­ter­na­tiva ao MyISAM com suporte tran­sa­ci­o­nal para tabelas tem­po­rá­rias
CONNECT ✗ ✓ Acesso a fontes de dados externas como CSV, XML, ODBC
Sequence ✗ ✓ Gera sequên­cias numéricas (ex. 1, 2, 3 …)
Spider ✗ ✓ Engine de sharding com suporte para tran­sa­Ã§Ãµes XA

Consultas de banco de dados

Na aplicação, as di­fe­ren­ças entre MariaDB e MySQL são ine­xis­ten­tes. Ambos os SGBD buscam uma com­pa­ti­bi­li­dade de 100% com a linguagem de banco de dados SQL. Os usuários utilizam comandos SQL idênticos para criar, atualizar, consultar ou excluir registros de banco de dados.

De­sem­pe­nho

O MariaDB oferece melhor de­sem­pe­nho em com­pa­ra­ção ao MySQL? Testes de benchmark como o DBT-3 indicam que sim. Um fator decisivo é qual mecanismo de banco de dados é utilizado. Testes de benchmark para con­fi­gu­ra­ções com di­fe­ren­tes me­ca­nis­mos de banco de dados são dis­po­ni­bi­li­za­dos pelas co­mu­ni­da­des de de­sen­vol­ve­do­res em seus res­pec­ti­vos sites de projeto.

O MariaDB se destaca aqui não só por sua ampla seleção de me­ca­nis­mos de banco de dados al­ter­na­ti­vos, mas também por oferecer um oti­mi­za­dor eficiente para consultas SQL. A partir da versão 10.0.1, MariaDB não utiliza mais es­ta­tís­ti­cas internas da res­pec­tiva engine para oti­mi­za­ção, mas sim es­ta­tís­ti­cas de tabelas in­de­pen­den­tes de engine. Estas são ar­ma­ze­na­das como tabelas con­ven­ci­o­nais no banco de dados, per­mi­tindo capturar e avaliar muito mais valores, a fim de de­ter­mi­nar um plano ideal para a execução de comandos SQL.

Nota

Na do­cu­men­ta­ção do MariaDB, in­te­res­sa­dos encontram diversas ins­tru­ções para oti­mi­za­ção da per­for­mance do banco de dados. O MySQL também oferece amplo material in­for­ma­tivo sobre ajuste de bancos de dados (ne­ces­sá­rio conta web da Oracle).

Alta dis­po­ni­bi­li­dade

Tanto o MySQL quanto o MariaDB são adequados para cenários com bancos de dados dis­tri­buí­dos. Para oferecer aos usuários sistemas altamente dis­po­ní­veis com es­ca­la­bi­li­dade linear, ambos os projetos de software dis­po­ni­bi­li­zam soluções de cluster:

  • MySQL Cluster
  • MariaDB Galera Cluster

O MySQL Cluster é um banco de dados em tempo real, com­pa­tí­vel com ACID, com ar­qui­te­tura multi-master e sem ponto único de falha. Ele oferece até 99,9999% de dis­po­ni­bi­li­dade, es­ca­la­bi­li­dade ho­ri­zon­tal em hardware padrão, auto-sharding, além de in­ter­fa­ces SQL e NoSQL.

O MariaDB Galera Cluster está integrado di­re­ta­mente desde a versão 10.1. Ele também se baseia em uma ar­qui­te­tura multi-master e utiliza ex­clu­si­va­mente InnoDB (ou XtraDB). Para bancos de dados dis­tri­buí­dos, o MaxScale é utilizado. O proxy con­fi­gu­rá­vel para ba­lan­ce­a­mento de carga oferece funções como failover, caching, divisão de leitura/escrita e medidas de proteção contra DoS. Plugins permitem a per­so­na­li­za­ção e filtragem de acessos ao banco de dados.

Nota

Desde a versão 2, o MaxScale está sob a Business Source License (BSL). O código-fonte está li­vre­mente dis­po­ní­vel, mas o uso é restrito. Após três anos, a licença se torna au­to­ma­ti­ca­mente uma licença Open Source se­me­lhante à GPL.

Segurança

Tanto o MySQL quanto o MariaDB oferecem funções de crip­to­gra­fia para dados em repouso. O MySQL im­ple­menta a crip­to­gra­fia dos dados ar­ma­ze­na­dos no banco de dados usando o mecanismo de banco de dados InnoDB no nível do espaço de tabelas. A crip­to­gra­fia de tabelas in­di­vi­du­ais do banco de dados não é possível.

Nota

Os Ta­bles­pa­ces (espaços de tabelas) são unidades de ar­ma­ze­na­mento lógico de me­ca­nis­mos de bancos de dados re­la­ci­o­nais como o InnoDB, que contêm todos os dados do sistema de banco de dados. Cada Ta­bles­pace inclui pelo menos um arquivo de dados, um arquivo físico do sistema ope­ra­ci­o­nal sub­ja­cente onde tanto tabelas de banco de dados quanto índices são ar­ma­ze­na­dos.

O MariaDB, por outro lado, oferece desde a versão 10.1 funções de crip­to­gra­fia sig­ni­fi­ca­ti­va­mente mais di­fe­ren­ci­a­das. Estas incluem uma crip­to­gra­fia de dados em repouso nos seguintes níveis do banco de dados:

  • Espaços de tabelas InnoDB
  • Tabelas InnoDB
  • Arquivos de log InnoDB
  • Tabelas Aria
  • Arquivos tem­po­rá­rios
  • Dados de log binários

Com as Chaves de Crip­to­gra­fia Rolling, o MariaDB oferece uma função que permite definir uma data de validade para as chaves de crip­to­gra­fia.

Ambos os sistemas de ge­ren­ci­a­mento de banco de dados suportam o Key Ma­na­ge­ment Service (KMS) da Amazon Web Services (AWS) via plugin, bem como conexões crip­to­gra­fa­das por SSL. Na au­ten­ti­ca­ção de usuários, MySQL e MariaDB também utilizam um sistema de plugins. A equipe de de­sen­vol­ve­do­res do MySQL dis­po­ni­bi­liza aos usuários dois plugins de au­ten­ti­ca­ção: sha256_password e caching_sha2_password. Este último oferece, além da au­ten­ti­ca­ção padrão via Secure Hash Algorithm, um cache do lado do servidor que permite uma re­au­ten­ti­ca­ção mais rápida. MariaDB até a versão 10.1.21 também utiliza o Secure Hash Algorithm com SHA-1. A partir da versão 10.1.22, o plugin ed25519 está em uso. O ed25519 é um esquema de as­si­na­tura do EdDSA que combina o SHA-2 com o Curve25519.

O di­fe­ren­cial do MariaDB no campo da segurança de banco de dados é o controle de acesso baseado em papéis Role Based Access Control, RBAC, que está im­ple­men­tado na­ti­va­mente no SGBD desde a versão 10.0.5. Isso sim­pli­fica sig­ni­fi­ca­ti­va­mente a gestão de direitos de acesso e reduz erros na concessão manual de per­mis­sões. No entanto, o MySQL também adotou esse recurso: desde o MySQL 8.0.0 (2018), o MySQL também suporta papéis (roles) como parte de suas funções de ge­ren­ci­a­mento de usuários e direitos.

Ecos­sis­tema

Com o sistema de li­cen­ci­a­mento duplo, a Oracle aplica uma es­tra­té­gia Open-Core no MySQL. Enquanto o núcleo do programa MySQL está dis­po­ní­vel como Community Edition com código fonte público e gratuito, várias extensões para o sistema de ge­ren­ci­a­mento de banco de dados são ofe­re­ci­das apenas em conjunto com uma das edições co­mer­ci­ais. Graças a uma forte rede com a co­mu­ni­dade de código aberto, a equipe de de­sen­vol­ve­do­res do MariaDB consegue im­ple­men­tar in­ter­fa­ces para al­ter­na­ti­vas de código aberto para a maioria dos produtos pro­pri­e­tá­rios do MySQL no MariaDB.

Função MySQL MariaDB Server
Mo­ni­to­ra­mento MySQL En­ter­prise Monitor (pro­pri­e­tá­rio) Webyog Monyog (pro­pri­e­tá­rio)
Backup MySQL En­ter­prise Backup (pro­pri­e­tá­rio) MariaDB Backup (Fork do Percona Xtra­Bac­kup, GPL)
Ge­ren­ci­a­mento de SQL MySQL Workbench (GPL/pro­pri­e­tá­rio) Webyog SQLyog (GPL/pro­pri­e­tá­rio)
Ba­lan­ce­a­mento de carga e ro­te­a­mento MySQL Router (GPL/pro­pri­e­tá­rio) MariaDB MaxScale (BSL)
Firewall MySQL En­ter­prise Firewall (pro­pri­e­tá­rio) MariaDB MaxScale (BSL)

Suporte

O suporte pro­fis­si­o­nal está dis­po­ní­vel tanto para MySQL quanto para MariaDB apenas para clientes pagantes. O MySQL oferece, por meio da licença paga Oracle Premier Support, suporte 24/7, patches, atu­a­li­za­ções, além de con­sul­to­ria técnica e solução de problemas.

A MariaDB Cor­po­ra­tion oferece,por meio de uma as­si­na­tura, suporte 24/7, atu­a­li­za­ções de segurança, con­sul­to­ria de de­sem­pe­nho e ajuda para migrações, também para MySQL. Como muitos dos de­sen­vol­ve­do­res originais do MySQL trabalham hoje no MariaDB, a empresa destaca seu co­nhe­ci­mento em ambos os sistemas.

Do­cu­men­ta­ção e co­mu­ni­dade

O MySQL é pro­pri­e­dade da Oracle Cor­po­ra­tion, que publica uma extensa do­cu­men­ta­ção de todos os projetos MySQL de código aberto no site oficial do MySQL. Além disso, a co­mu­ni­dade de usuários tem as seguintes opções para se informar sobre o MySQL:

A do­cu­men­ta­ção do MariaDB é de res­pon­sa­bi­li­dade da MariaDB Foun­da­tion, que se baseia na co­mu­ni­dade de usuários. Quem deseja par­ti­ci­par do de­sen­vol­vi­mento e do­cu­men­ta­ção dos ser­vi­do­res MariaDB ou dos apli­ca­ti­vos de código aberto do ecos­sis­tema MariaDB en­con­trará as in­for­ma­ções re­le­van­tes no site da MariaDB Foun­da­tion.

Quando usar MariaDB ou MySQL

O MariaDB é ideal para apli­ca­ções internas de negócios que você deseja operar sem custos de licença. Muitas empresas utilizam o MariaDB em pla­ta­for­mas web, sistemas de ge­ren­ci­a­mento de conteúdo ou como banco de dados para re­la­tó­rios e análises. Também mostra sua força em sistemas dis­tri­buí­dos com muitos acessos de leitura e escrita si­mul­tâ­neos. Se você trabalha em ser­vi­do­res Linux ou deseja subs­ti­tuir uma ins­ta­la­ção MySQL, você se beneficia da com­pa­ti­bi­li­dade e ex­ten­si­bi­li­dade.

O MySQL se destaca prin­ci­pal­mente em grandes e estáveis sistemas de produção. Áreas de aplicação típicas incluem lojas on-line, sistemas de reservas, pla­ta­for­mas SaaS ou apli­ca­ções fi­nan­cei­ras com elevadas exi­gên­cias de dis­po­ni­bi­li­dade e segurança de tran­sa­ções. Quando você opera apli­ca­ções na nuvem, como na AWS, Google Cloud ou Oracle Cloud, ge­ral­mente recorre di­re­ta­mente ao MySQL. Também é a escolha certa para pro­ces­sa­mento de JSON altamente es­tru­tu­rado ou quando você precisa de suporte coberto por SLA.

MariaDB vs. MySQL: conclusão

O MySQL é um sistema de banco de dados maduro e am­pla­mente difundido. No entanto, muitas funções em­pre­sa­ri­ais, como mo­ni­to­ra­mento, backup e segurança, estão presentes apenas em edições pagas. O MariaDB surgiu como um fork do MySQL e se es­ta­be­le­ceu como uma al­ter­na­tiva open source completa. Muitas dis­tri­bui­ções Linux o adotam como padrão. Funções ex­clu­si­vas como MaxScale e Co­lumnS­tore de­mons­tram a crescente in­de­pen­dên­cia.

A decisão entre MySQL e MariaDB depende, em última análise, menos do nome e mais de qual sistema se adapta melhor ao seu cenário de aplicação.

Dica

Em outros guias, fazemos uma com­pa­ra­ção entre MariaDB e Post­greSQL e MariaDB e MongoDB.

Ir para o menu principal