MariaDB o MySQL: ¿cuál se adapta mejor a tu proyecto? Aunque MariaDB nació como un “drop-in re­pla­ce­me­nt” con fuerte apoyo de la comunidad de código abierto, hoy ambos proyectos persiguen metas de de­sa­rro­llo muy distintas. Esta co­m­pa­ra­ti­va explica sus pri­n­ci­pa­les di­fe­re­n­cias.

MariaDB vs. MySQL: co­m­pa­ra­ción de las pri­n­ci­pa­les ca­ra­c­te­rí­s­ti­cas

MySQL es un sistema de gestión de bases de datos am­plia­me­n­te co­n­so­li­da­do, di­s­po­ni­ble como software de código abierto y ampliable con numerosas funciones em­pre­sa­ria­les. El equipo de MariaDB, liderado por Michael Widenius, tomó lo mejor del núcleo de MySQL y lo amplió con nuevas funciones. La siguiente tabla muestra para quién puede resultar in­te­re­sa­n­te migrar de MySQL a MariaDB, co­m­pa­ra­n­do las ca­ra­c­te­rí­s­ti­cas más de­s­ta­ca­das de ambos sistemas.

Ca­ra­c­te­rí­s­ti­ca MySQL 8.0 MariaDB 11
Año de la­n­za­mie­n­to 1995 2009
De­sa­rro­lla­dor Oracle MariaDB Co­r­po­ra­tion / Fou­n­da­tion
Licencia GPL + pro­pie­ta­ria GPL v2
Co­m­pa­ti­bi­li­dad con sistemas ope­ra­ti­vos Linux, Windows, macOS Co­m­pa­ti­bi­li­dad ampliada, es­pe­cia­l­me­n­te en Linux
Re­pli­ca­ción GTID, Primario/Réplica GTID, Galera Cluster
Pa­r­ti­cio­na­mie­n­to MySQL Cluster Spider, Galera
Control basado en roles Desde 8.0 Desde 10.0.5
Au­te­n­ti­ca­ción SHA-256 ed25519
Cifrado InnoDB InnoDB, Aria, Registros
Firewall y en­ma­s­ca­ra­mie­n­to Pro­pie­ta­rio A través de MaxScale (BSL)
Funciones ana­lí­ti­cas Co­lu­m­n­S­to­re
Backup En­te­r­pri­se Backup MariaDB Backup (GPL)
Motores de base de datos InnoDB, MyISAM … + Co­lu­m­n­S­to­re, MyRocks, Aria …
In­te­r­fa­ces SQL/NoSQL Sí / Sí Sí / Sí
Co­ne­c­to­res p. ej. C, Java, PHP + Excel, Swift, R

La evolución de MySQL y MariaDB

La figura clave detrás de MariaDB y MySQL es el de­sa­rro­lla­dor finlandés Michael “Monty” Widenius. Junto con los suecos David Axmark y Alan Larsson fundó la empresa MySQL AB, que en 1995 lanzó la primera versión de MySQL como sistema de gestión de bases de datos (DBMS) de código abierto. En 2008, el proyecto fue adquirido por Sun Mi­cro­s­y­s­te­ms.

En 2009, Widenius dejó el proyecto junto con varios de los de­sa­rro­lla­do­res pri­n­ci­pa­les de MySQL y comenzó a trabajar en el fork MariaDB. La decisión estuvo motivada por el temor a un posible conflicto de intereses en Oracle, que tras comprar Sun pasó a de­sa­rro­llar tanto MySQL como su propia base de datos pro­pie­ta­ria.

El fork empezó bajo la compañía Monty Program AB, creada en 2009, que en 2014 se fusionó con SkySQL para formar la MariaDB Co­r­po­ra­tion. Pa­ra­le­la­me­n­te, el proyecto co­mu­ni­ta­rio MariaDB Server está ge­s­tio­na­do por la MariaDB Fou­n­da­tion, que mantiene un fuerte co­m­pro­mi­so con un de­sa­rro­llo abierto y tra­n­s­pa­re­n­te, basado en dos pri­n­ci­pios fu­n­da­me­n­ta­les:

  • El código fuente de las partes en de­sa­rro­llo se publica en re­po­si­to­rios abiertos.
  • Todos los pasos del de­sa­rro­llo se do­cu­me­n­tan de manera tra­n­s­pa­re­n­te.

MariaDB vs. MySQL

MySQL y MariaDB comparten el mismo núcleo de software, aunque han seguido caminos distintos. MariaDB nació como un fork (bi­fu­r­ca­ción) de MySQL 5.1, pero con el tiempo evo­lu­cio­nó hasta co­n­ve­r­ti­r­se en un sistema de gestión de bases de datos in­de­pe­n­die­n­te. En esta sección se comparan las di­fe­re­n­cias entre las versiones GA (General Avai­la­bi­li­ty) más recientes: MySQL 8.0.43 y MariaDB 11.8.2.

Es­tru­c­tu­ra de la base de datos

El de­sa­rro­llo de MariaDB partió del objetivo de asegurar plena co­m­pa­ti­bi­li­dad con la es­tru­c­tu­ra de bases de datos, las APIs y los archivos de co­n­fi­gu­ra­ción de MySQL, para ofrecer a los usuarios un drop-in re­pla­ce­me­nt. De este modo, ac­tua­li­zar de MySQL a MariaDB o a la inversa debía resultar tan sencillo como pasar de una versión de MySQL a otra.

Amvos sistemas comparten la misma es­tru­c­tu­ra de base de datos y se basan en el modelo re­la­cio­nal. Sin embargo, desde la versión 10.5, MariaDB utiliza mariadb-dump y mariadb-admin en lugar de mysqldump y mysqladmin para tareas de ad­mi­ni­s­tra­ción y copias de seguridad.

Nota

MariaDB se consolidó como un reemplazo binario completo de MySQL (1:1). No obstante, a partir de MySQL 8.0 esta co­m­pa­ti­bi­li­dad ya no está ga­ra­n­ti­za­da.

Motores de base de datos

MariaDB busca di­fe­re­n­ciar­se de MySQL ofre­cie­n­do mayor fle­xi­bi­li­dad. Además de los motores estándar co­m­pa­ti­bles con MySQL, incorpora un número cada vez mayor de motores al­te­r­na­ti­vos pensados para ne­ce­si­da­des es­pe­cí­fi­cas.

Nota

Un motor de base de datos es un su­b­si­s­te­ma de al­ma­ce­na­mie­n­to que permite al gestor de bases de datos crear, leer, ac­tua­li­zar y eliminar in­fo­r­ma­ción en las tablas; en otras palabras, realizar ope­ra­cio­nes CRUD.

La siguiente tabla muestra los motores de base de datos di­s­po­ni­bles en MySQL 8.0.43 y MariaDB 11.8.2, según la do­cu­me­n­ta­ción oficial.

Motor de base de datos MySQL 8.0.43 MariaDB 11.8.2 De­s­cri­p­ción
InnoDB / XtraDB InnoDB es el motor estándar en ambos sistemas. XtraDB se utilizó en MariaDB hasta la versión 10.1
MyISAM Sistema obsoleto sin soporte de tra­n­sac­cio­nes
MEMORY Para tablas te­m­po­ra­les en memoria con accesos rápidos
CSV Guarda las tablas en formato CSV
Archive Comprime datos para al­ma­ce­na­mie­n­to a largo plazo
BLACKHOLE Acepta datos, pero no los guarda; útil para el registro de ac­ti­vi­da­des o pruebas
Merge Combina varias tablas MyISAM con la misma es­tru­c­tu­ra
Federated / Fe­de­ra­te­dX Permite acceder a tablas remotas a través de red (MariaDB: Fe­de­ra­te­dX)
Co­lu­m­n­S­to­re Motor orientado a columnas para análisis de grandes volúmenes de datos
Aria Al­te­r­na­ti­va tra­n­sac­cio­nal a MyISAM para tablas te­m­po­ra­les
CONNECT Acceso a fuentes de datos externas como CSV, XML, ODBC
Sequence Genera se­cue­n­cias de números (p. ej. 1, 2, 3 …)
Spider Motor de pa­r­ti­cio­na­do ho­ri­zo­n­tal (sharding) con soporte para tra­n­sac­cio­nes XA

Consultas de bases de datos

En la práctica, no hay di­fe­re­n­cias entre MySQL y MariaDB. Ambos sistemas de gestión de bases de datos buscan una co­m­pa­ti­bi­li­dad total con el lenguaje SQL. Los usuarios emplean las mismas se­n­te­n­cias SQL para crear, ac­tua­li­zar, consultar o eliminar registros en la base de datos.

Re­n­di­mie­n­to

¿MariaDB ofrece un mejor re­n­di­mie­n­to que MySQL? Según pruebas como DBT-3, la respuesta es afi­r­ma­ti­va. Un factor clave es el motor de base de datos utilizado en cada caso. Ambas co­mu­ni­da­des publican be­n­ch­ma­r­ks con distintas co­n­fi­gu­ra­cio­nes en sus páginas oficiales.

MariaDB sobresale no solo por su amplia variedad de motores de base de datos al­te­r­na­ti­vos, sino también por contar con un op­ti­mi­za­dor de consultas SQL muy eficiente. Desde la versión 10.0.1, ya no se basa en las es­ta­dí­s­ti­cas internas de cada motor, sino en es­ta­dí­s­ti­cas de tablas in­de­pe­n­die­n­tes. Estas se almacenan como tablas normales dentro de la base de datos y permiten recopilar y analizar muchos más valores para generar planes de ejecución óptimos de las se­n­te­n­cias SQL.

Nota

La do­cu­me­n­ta­ción oficial de MariaDB incluye varias guías de op­ti­mi­za­ción del re­n­di­mie­n­to. MySQL también ofrece abundante in­fo­r­ma­ción sobre tuning, aunque en algunos casos es necesario disponer de una cuenta de Oracle para acceder.

Alta di­s­po­ni­bi­li­dad

MySQL y MariaDB son adecuados para entornos con bases de datos di­s­tri­bui­das. Para ga­ra­n­ti­zar sistemas altamente di­s­po­ni­bles y con es­ca­la­bi­li­dad lineal, ambos proyectos ofrecen so­lu­cio­nes de clúster:

MySQL Cluster es una base de datos en tiempo real, conforme con ACID y con ar­qui­te­c­tu­ra multi-master sin Single Point of Failure. Ofrece hasta un 99,9999 % de di­s­po­ni­bi­li­dad, escalado ho­ri­zo­n­tal sobre hardware estándar, pa­r­ti­cio­na­do au­to­má­ti­co (auto-sharding) y soporte tanto para SQL como para NoSQL.

MariaDB Galera Cluster, integrado desde la versión 10.1, también utiliza una ar­qui­te­c­tu­ra multi-master y se basa ex­clu­si­va­me­n­te en InnoDB (o XtraDB). En es­ce­na­rios di­s­tri­bui­dos, MariaDB añade además MaxScale, un proxy co­n­fi­gu­ra­ble para el balanceo de carga que incorpora funciones como failover, caché, se­pa­ra­ción de lectura/escritura y pro­te­c­ción frente a ataques DoS. Gracias a los plugins, es posible pe­r­so­na­li­zar y filtrar los accesos a la base de datos.

Nota

Desde la versión 2, MaxScale se di­s­tri­bu­ye bajo la Business Source License (BSL). El código fuente es público, pero su uso está limitado. Tra­n­s­cu­rri­dos tres años, la licencia pasa au­to­má­ti­ca­me­n­te a un modelo de código abierto similar a la GPL.

Seguridad

MySQL y MariaDB ofrecen funciones de cifrado para datos en reposo (data at rest). En el caso de MySQL, el cifrado se aplica a los datos al­ma­ce­na­dos mediante el motor InnoDB a nivel de ta­ble­s­pa­ce. No es posible cifrar tablas in­di­vi­dua­les de forma separada.

Nota

Los ta­ble­s­pa­ces (espacios de tablas) son unidades lógicas de al­ma­ce­na­mie­n­to en motores de bases de datos re­la­cio­na­les como InnoDB. Cada ta­ble­s­pa­ce incluye al menos un archivo de datos, un archivo físico del sistema operativo en el que se guardan tablas e índices de la base de datos.

MariaDB, por su parte, ofrece desde la versión 10.1 un conjunto de funciones de cifrado más amplio. Incluye cifrado de datos en reposo en los si­guie­n­tes niveles:

  • Ta­ble­s­pa­ces de InnoDB
  • Tablas de InnoDB
  • Archivos de registro de InnoDB
  • Tablas de Aria
  • Archivos te­m­po­ra­les
  • Registros binarios

Además, con función Rolling En­cr­y­p­tion Keys (rotación au­to­má­ti­ca de claves de cifrado), MariaDB permite es­ta­ble­cer una fecha de caducidad para las claves de cifrado.

Ambos sistemas son co­m­pa­ti­bles con el Key Ma­na­ge­me­nt Service (KMS) de Amazon Web Services (AWS) mediante plugins, así como con co­ne­xio­nes SSL/TLS seguras. En cuanto a la au­te­n­ti­ca­ción de usuarios, tanto MySQL como MariaDB recurren a un sistema de plugins. MySQL incorpora sha256_password y caching_sha2_password. Este último incorpora au­te­n­ti­fi­ca­ción mediante Secure Hash Algorithm, un sistema de caché en el servidor que agiliza las reau­te­n­ti­ca­cio­nes.

MariaDB utilizó hasta la versión 10.1.21 SHA-1 como algoritmo de hash seguro. Desde la versión 10.1.22 emplea el plugin ed25519, un esquema de firma EdDSA que combina SHA-2 con Curve25519.

Una de las pri­n­ci­pa­les di­fe­re­n­cias de MariaDB en materia de seguridad es el control de acceso basado en roles Role Based Access Control, RBAC. Integrado de forma nativa en el DBMS desde la versión 10.0.5, si­m­pli­fi­ca la gestión de permisos y reduce errores en la asi­g­na­ción manual. MySQL incorporó esta función más tarde: desde la versión 8.0.0 (2018) también admite roles como parte de su sistema de gestión de usuarios y permisos.

Eco­si­s­te­ma

Oracle aplica en MySQL una es­tra­te­gia open core basada en un sistema de licencias dual. El núcleo del programa se ofrece gra­tui­ta­me­n­te como Community Edition de código abierto, pero muchas funciones avanzadas del sistema de gestión de bases de datos solo están di­s­po­ni­bles en las ediciones co­me­r­cia­les.

En cambio, gracias a su estrecha vi­n­cu­la­ción con la comunidad open source, el equipo de MariaDB ha co­n­se­gui­do integrar in­te­r­fa­ces hacia al­te­r­na­ti­vas de código abierto para la mayoría de las funciones pro­pie­ta­rias de MySQL.

Función MySQL MariaDB Server
Mo­ni­to­ri­za­ción MySQL En­te­r­pri­se Monitor (pro­pie­ta­rio) Webyog Monyog (pro­pie­ta­rio)
Backup MySQL En­te­r­pri­se Backup (pro­pie­ta­rio) MariaDB Backup (fork de Percona Xtra­Ba­c­kup, GPL)
Gestión SQL MySQL Workbench (GPL/pro­pie­ta­rio) Webyog SQLyog (GPL/pro­pie­ta­rio)
Balanceo de carga y en­ru­ta­mie­n­to MySQL Router (GPL/pro­pie­ta­rio) MariaDB MaxScale (BSL)
Firewall MySQL En­te­r­pri­se Firewall (pro­pie­ta­rio) MariaDB MaxScale (BSL)

Soporte

El soporte pro­fe­sio­nal en MySQL y MariaDB está di­s­po­ni­ble solo mediante su­s­cri­p­cio­nes de pago. MySQL lo ofrece mediante la licencia Oracle Premier Support, que incluye asi­s­te­n­cia 24/7, parches, ac­tua­li­za­cio­nes, ase­so­ra­mie­n­to técnico y re­so­lu­ción remota de in­ci­de­n­cias.

MariaDB Co­r­po­ra­tion, por su parte, pro­po­r­cio­na con sus su­s­cri­p­cio­nes soporte 24/7, ac­tua­li­za­cio­nes de seguridad, asesoría en re­n­di­mie­n­to y ayuda en mi­gra­cio­nes, incluso para MySQL. Al contar con muchos de los de­sa­rro­lla­do­res ori­gi­na­les de MySQL, la compañía presume de tener un co­no­ci­mie­n­to profundo de ambos sistemas.

Do­cu­me­n­ta­ción y comunidad

MySQL pertenece a Oracle Co­r­po­ra­tion, que publica en su web oficial una completa do­cu­me­n­ta­ción de todos los proyectos open source de MySQL. Además, la comunidad de usuarios dispone de otros recursos de in­fo­r­ma­ción, como:

La do­cu­me­n­ta­ción de MariaDB está ge­s­tio­na­da por la MariaDB Fou­n­da­tion con apoyo de la comunidad. Quienes quieran pa­r­ti­ci­par en el de­sa­rro­llo o en la do­cu­me­n­ta­ción de MariaDB Server o de sus apli­ca­cio­nes open source pueden encontrar toda la in­fo­r­ma­ción en la web de la MariaDB Fou­n­da­tion.

¿Para qué casos de uso es más adecuada MariaDB o MySQL?

MariaDB resulta ideal para apli­ca­cio­nes em­pre­sa­ria­les internas que se deseen ejecutar sin costes de licencia. Muchas empresas la utilizan en pla­ta­fo­r­mas web, sistemas de gestión de co­n­te­ni­dos o como base de datos para informes y análisis. También ofrece ventajas en sistemas di­s­tri­bui­dos con un gran volumen de ope­ra­cio­nes de lectura y escritura si­mu­l­tá­neas. Para entornos Linux o cuando se desea sustituir una in­s­ta­la­ción existente de MySQL, MariaDB aporta co­m­pa­ti­bi­li­dad y fle­xi­bi­li­dad adicional.

MySQL, en cambio, demuestra su fortaleza en grandes sistemas pro­du­c­ti­vos con re­qui­si­tos de es­ta­bi­li­dad. Sus pri­n­ci­pa­les usos incluyen tiendas online, sistemas de reservas, pla­ta­fo­r­mas SaaS o apli­ca­cio­nes fi­na­n­cie­ras que requieren alta di­s­po­ni­bi­li­dad y seguridad tra­n­sac­cio­nal. En entornos Cloud, como AWS, Google Cloud u Oracle Cloud, suele im­ple­me­n­tar­se di­re­c­ta­me­n­te MySQL. Asimismo, es la opción adecuada cuando se requiere un pro­ce­sa­mie­n­to intensivo de datos en formato JSON o cuando se necesita soporte ga­ra­n­ti­za­do con SLA.

Co­n­clu­sión: MariaDB vs. MySQL

MySQL es un sistema de bases de datos maduro y muy extendido, aunque muchas de sus funciones em­pre­sa­ria­les, como la mo­ni­to­ri­za­ción, las copias de seguridad o la seguridad avanzada, solo están di­s­po­ni­bles en ediciones de pago. MariaDB surgió como un fork de MySQL y se ha co­n­so­li­da­do como una al­te­r­na­ti­va open source to­ta­l­me­n­te funcional, incluida de forma pre­de­te­r­mi­na­da en numerosas di­s­tri­bu­cio­nes Linux. Funciones ex­clu­si­vas como MaxScale y Co­lu­m­n­S­to­re evi­de­n­cian su creciente in­de­pe­n­de­n­cia.

En de­fi­ni­ti­va, la elección entre MySQL y MariaDB no depende tanto de la marca o del nombre, sino de cuál se adapta mejor a las ne­ce­si­da­des de cada proyecto.

Ir al menú principal