Introducción
El objetivo de este artículo es evaluar y resaltar las principales similitudes y diferencias entre el servidor de base de datos MySQL y el servidor de base de datos MariaDB. Analizaremos los aspectos de rendimiento, seguridad, características principales y enumeraremos todos los aspectos que deben considerarse antes de elegir la base de datos adecuada para sus requisitos.
¿Qué es Maria DB?
MariaDB es una bifurcación del sistema de gestión de bases de datos MySQL. Ofrece capacidades de procesamiento de datos para tareas pequeñas y empresariales.
Este DBMS es una versión mejorada de MySQL. Viene con numerosas funciones potentes incorporadas y muchas mejoras de usabilidad, seguridad y rendimiento que no puede encontrar en MySQL.
¿Qué es MySQL?
Desarrollado a mediados de los 90, MySQL fue una de las primeras bases de datos de código abierto disponibles en el mercado. Hoy existen muchas variantes alternativas de MySQL. Sin embargo, las diferencias entre las variantes no son significativas ya que usan la misma sintaxis, y la funcionalidad básica también sigue siendo la misma.
MySQL es un DBMS que ayuda a mantener organizados los datos que existen en una base de datos. Se utiliza con la combinación de PHP y el servidor Web Apache, además de una distribución de Linux. MySQL usa el lenguaje SQL para consultar la base de datos.
¿Quién está usando MySQL y MariaDB?
Tanto MySQL como MariaDB publican una lista de clientes respetables que utilizan su base de datos como su infraestructura de datos central.
Para MySQL, podemos ver nombres como Facebook, Github, YouTube, Twitter, PayPal, Nokia, Spotify, Netflix y más.
Para MariaDB, podemos ver nombres como Redhat, DBS, Suse, Ubuntu, 1 y 1, Ingenico y más.
Comparando características – MySQL vs MariaDB
Probablemente valga la pena mencionar muchas características nuevas y emocionantes, como las funciones de Windows, los roles o las expresiones de tabla comunes (CTE), pero no se mencionarán en este artículo. Estamos a punto de comparar los dos motores de base de datos, por lo tanto, solo discutiremos las características que están disponibles solo en uno de ellos, para permitirles determinar el motor que funciona mejor para usted.
Veamos varias características que están disponibles solo en una de las bases de datos, exclusivamente:
- JSON datatype – A partir versión 5.7, MySQL soporta datos nativos JSON definido por el RFC 7159 que permite el acceso eficiente a los datos en JSON (JavaScript Object Notation) documentos.
MariaDB decidió no implementar esta mejora, ya que afirman que no es parte del estándar SQL. En cambio, para admitir la replicación desde MySQL, solo definieron un alias para JSON , que en realidad es una columna LONGTEXT. MariaDB afirma que no hay una diferencia de rendimiento significativa entre los dos, pero recientemente no se realizaron puntos de referencia para respaldar esa afirmación.
Vale la pena señalar que tanto MySQL como MariaDB ofrecen diferentes funciones relacionadas con JSON que permiten un acceso, análisis y recuperación de datos JSON más fáciles. - Default authentication: en MySQL 8.0, caching_sha2_password es el complemento de autenticación predeterminado en lugar de mysql_native_password. Esta mejora debería mejorar la seguridad mediante el uso del algoritmo SHA-256.
- MySQL Shell: MySQL Shell es un cliente avanzado de línea de comandos y editor de código para MySQL. Además de SQL, MySQL Shell también ofrece capacidades de secuencias de comandos para JavaScript y Python. No podrá acceder a los servidores de MariaDB utilizando mysqlsh , ya que MariaDB no es compatible con el protocolo MySQL X.
- Encryption: MySQL cifra los registros de rehacer / deshacer (cuando está configurado para hacerlo), mientras que no cifra el espacio de tabla temporal o los registros binarios. MariaDB, por otro lado, admite cifrado de registro binario y cifrado de tabla temporal.
- Key Management: MariaDB ofrece un complemento de administración de claves de AWS listo para usar. MySQL también proporciona varios complementos para la administración de claves, pero solo están disponibles en la edición Enterprise.
- Sys esquema – MySQL 8.0 incluye el esquema sys , un conjunto de objetos que ayuda a los administradores de bases e ingenieros de software interpretar los datos recogidos por el esquema de rendimiento. Los objetos de esquema Sys se pueden usar para la optimización y el diagnóstico de casos de uso. MariaDB no tiene esta mejora incluida.
- Validate_password: el objetivo del complemento validate_password es probar las contraseñas y mejorar la seguridad. MySQL tiene este complemento habilitado de forma predeterminada, mientras que MariaDB no.
- Super read-only: MySQL mejora las capacidades de solo lectura al proporcionar el modo súper de solo lectura. Si la variable del sistema read_only está habilitada, el servidor permite actualizaciones de clientes solo de usuarios que tienen el privilegio SUPER. Si la variable del sistema super_read_only también está habilitada, el servidor prohíbe las actualizaciones de clientes incluso de usuarios que tienen SUPER. Vea la descripción de read_only.
- Columnas invisibles: esta función, que está disponible en MariaDB, aunque no en MySQL, permite crear columnas que no figuran en los resultados de una instrucción SELECT *, ni es necesario asignarles un valor en una instrucción INSERT cuando su nombre no se menciona en la declaración.
- Threadpool: MariaDB admite agrupaciones de hilos de conexión, que son más efectivas en situaciones donde las consultas son relativamente cortas y la carga está vinculada a la CPU (cargas de trabajo OLTP). En la edición comunitaria de MySQL, el número de subprocesos es estático, lo que limita la flexibilidad en estas situaciones. El plan empresarial de MySQL incluye las capacidades de agrupación de hilos.
Rendimiento y benchmarking
Con los años, se ejecutaron muchas pruebas de rendimiento en motores MySQL y MariaDB. No creemos que haya una respuesta a la pregunta «¿cuál es más rápido, MySQL o MariaDB?». Depende mucho del caso de uso, las consultas, el número de usuarios y conexiones, y muchos otros factores que deben considerarse.
Estas son las pruebas de referencia más recientes que encontramos en línea, que podrían proporcionar alguna indicación de cuál funciona mejor. Asegúrese de leer los detalles de cada una de las pruebas de referencia (cómo se realizó, en qué entorno, qué hardware, qué se probó, qué no se probó, etc.).
- MySQL 8.0 (InnoDB) and MariaDB 10.3.7 (MyRocks) benchmark test
- MariaDB 10.1 and MySQL 5.7 performance on commodity hardware
- MySQL 8.0 and MariaDB 10.3.5 performance and the UTF8 impact
Independientemente del cambio importante que esté planeando: migrar de un tipo de base de datos (o motor) a otro, de un sistema operativo a otro, de servidores locales a la nube, creo que debe asegurarse de ejecutar sus propias pruebas, planificar las suyas propias. proceso de referencia de base de datos y realizar las pruebas de estrés relevantes. Estos son algunos libros que encontramos en Amazon que pueden ayudarlo a planificar su próximo proceso de referencia:
- Database Benchmarking and Stress Testing: An Evidence-Based Approach to Decisions on Architecture and Technology – by Bert Scalzo
- High Performance MySQL: Optimization, Backups, and Replication – Chapter 2 – by Baron Schwartz, Peter Zaitsev, Vadim Tkachenko
Si ya cuentas con una instalación de uno de estos motores de bases de datos, en los siguientes enlaces puedes encontrar algunas recomendaciones para optimizar el rendimiento de tu base de datos:
- Cómo optimizar el rendimiento de MariaDB/Mysql – Parte 1
- Cómo optimizar el rendimiento de MariaDB/Mysql – Parte 2
Replicación
Ambas bases de datos ofrecen la capacidad de replicar datos de un servidor a otro. La principal diferencia que vimos aquí es que la mayoría de las versiones de MariaDB le permitirán replicarlas desde bases de datos MySQL, lo que significa que puede migrar fácilmente las bases de datos MySQL a MariaDB. Al revés no es tan fácil, ya que la mayoría de las versiones de MySQL no permitirán la replicación de los servidores de MariaDB.
Además, vale la pena señalar que MySQL GTID es diferente de MariaDB GTID, por lo que una vez que replica los datos de MySQL a MariaDB, los datos de GTID se ajustarán en consecuencia.
Algunos ejemplos de las diferencias entre las configuraciones de replicación:
- El formato predeterminado de binlog en MySQL está basado en filas . En MariaDB, el formato predeterminado de binlog es mixto.
- Log_bin_compress – Esta característica determina si o no el registro binario se puede comprimir. Esta mejora es exclusiva de MariaDB y, por lo tanto, no es compatible con MySQL.
Incompatibilidades entre MySQL y MariaDB
La documentación de MariaDB enumera cientos de incompatibilidades entre las bases de datos MySQL y MariaDB , en diferentes versiones. La principal conclusión de esta documentación es que no puede confiar en una migración fácil de un tipo de base de datos a otro.
La mayoría de los administradores de bases de datos esperaban que MariaDB se mantuviera como una rama de MySQL, por lo que sería muy fácil migrar entre los dos. Para las últimas versiones, ese ya no es el caso. Desde hace mucho tiempo, MariaDB es en realidad una bifurcación de MySQL, lo que significa que debe pensar un poco cuando migra de uno a otro.
Motores de almacenamiento
MariaDB admite más motores de almacenamiento que MySQL. Dicho esto, no se trata de qué base de datos admite más motores de almacenamiento, sino de qué base de datos admite el motor de almacenamiento adecuado para sus requerimientos.
- Motores de almacenamiento compatibles en MariaDB : XtraDB, InnoDB, MariaDB ColumnStore, Aria, Archive, Blackhole, Cassandra Storage Engine, Connect, CSV, FederatedX, Memory storage engine, Merge, Mroonga, MyISAM, MyRocks, QQGraph, Sequence Storage Engine, SphinxSE, Spider , TokuDB.
- Motores de almacenamiento compatibles en MySQL : InnoDB, MyISAM, Memory, CSV, Archive, Blackhole, Merge, Federated, Example.
Implementado en distribuciones de Linux por defecto
En algunas distribuciones de Linux, cuando instala la base de datos MySQL, puede terminar realmente instalando la base de datos MariaDB, ya que es el valor predeterminado en muchas distribuciones de Linux (aunque no en todas).
MariaDB se instalará por defecto en las últimas distribuciones de Red Hat Enterprise / CentOS / Fedora / Debian. Por otro lado, MySQL sigue siendo el predeterminado en otras distribuciones populares como Ubuntu.
En los siguientes enlaces puedes encontrar una guía de cómo instalar un servidor por tu cuenta:
- Cómo instalar Apache 2.4 + PHP-FPM 7.2 + MariaDB 10 para mejorar el rendimiento de nuestro servidor Web
- Como prevenir ataques de fuerza bruta en MariaDB/Mysql: guía de configuración de fail2ban
Disponibilidad en plataformas en la nube
MariaDB está disponible como un servicio en Amazon Web Services (AWS), Microsoft Azure y Rackspace Cloud.
MySQL está disponible en las tres plataformas mencionadas anteriormente, mientras que también está disponible en la plataforma de Google Cloud, como un servicio administrado.
Por lo tanto, si está utilizando GCP y desea que su proveedor de la nube administre el servicio por usted, es posible que deba considerar usar MySQL, a menos que desee instalar y administrar instancias de MariaDB por su cuenta.
Licencia
MariaDB Server tiene licencia como GPLv2, mientras que MySQL tiene dos opciones de licencia: GPLv2 (para la edición comunitaria) y Enterprise.
La principal diferencia entre las dos licencias para MySQL son las funciones y el soporte disponibles. Si bien recibe el paquete con todas las funciones cuando usa MariaDB, ese no es el caso con MySQL. La edición comunitaria no incluye características como Threadpool, que pueden tener un impacto significativo en la base de datos y el rendimiento de las consultas.
Velocidad de lanzamiento y actualizaciones
Por lo general, MariaDB tiene lanzamientos más frecuentes que MySQL. Sin embargo, esta realidad tiene sus pros y sus contras. Por el lado positivo, las funciones y las correcciones de errores se lanzan con mayor frecuencia. Por otro lado, administrar esos servidores MariaDB requiere más actualizaciones para mantenerlos actualizados en todo momento.
Soporte técnico
El equipo de soporte de MySQL, que incluye tanto desarrolladores de MySQL como ingenieros de soporte, ofrece soporte 24/7 para los clientes. Oracle ofrece varios paquetes de soporte, que incluyen soporte extendido, soporte sostenido y soporte Premier, según los requisitos del cliente. El equipo de soporte de MariaDB incluye ingenieros de soporte que están familiarizados y son expertos con las bases de datos MariaDB y MySQL (ya que muchas de las características fueron escritas originalmente por el equipo de MySQL). Ofrecen soporte empresarial para sistemas de producción, con disponibilidad 24/7.
Desarrollo en curso
Para MySQL, el desarrollador exclusivo es el equipo MySQL de Oracle. Por otro lado, el proceso de desarrollo de MariaDB está abierto para una votación pública y discusiones de listas de correo. Además, cualquiera puede enviar parches a MariaDB, que se considerarán agregados al repositorio principal. Por lo tanto, en cierto modo, MariaDB es desarrollada por la comunidad, mientras que MySQL es desarrollado principalmente por Oracle.
Optimización de consultas SQL
Ya sea que elija MySQL o MariaDB como su proveedor de base de datos, probablemente terminará luchando con algunas consultas lentas que ralentizan su aplicación.
Debe realizar una análisis de los índices requeridos en cada tabla para la optimización de las consultas, otro factor que puede influir en el rendimiento es el motor de almacenamiento, si su tabla es altamente transaccional considere cambiarla a MyIsam si esta en MySql o Aria si esta utilizando MariaDB.
Conclusiones
No podemos tomar la decisión por ti. Lo que podemos hacer es hacerle las preguntas correctas para guiarlo a tomar una decisión:
- ¿Probó el rendimiento de su producto con ambas bases de datos? ¿Cuál se desempeñó mejor en promedio y por qué?
- ¿Planea utilizar una función que esté disponible exclusivamente en una de estas bases de datos?
- ¿Tiene el objetivo de utilizar uno de los motores de base de datos que se admite exclusivamente en una de estas bases de datos?
- ¿Qué tan importante es para usted tener un impacto en el proceso de desarrollo de la base de datos que está utilizando? ¿Qué tan importante es para usted que la comunidad vote por los próximos cambios?
- ¿Vas a pagar por las versiones empresariales o utilizarás la versión comunitaria? ¿La versión de la comunidad tiene suficientes características para cumplir con sus requisitos?
- ¿Su sistema operativo admite la base de datos elegida por defecto? ¿Qué tan fácil será para usted implementarlo?
- ¿Qué proveedor de la nube estás usando? ¿Ofrecen un servicio administrado que incluye la base de datos que ha elegido?
- ¿Planea migrar de un tipo de base de datos a otro en el futuro? Si es así, ¿pensó en las implicaciones en términos de incompatibilidades y replicación?
Una vez que responda estas preguntas, probablemente ya tenga una buena idea sobre qué base de datos es la mejor opción para usted.
Referencias