Mysql

Compartir Imprimir Citar

MySQL () es un sistema de gestión de bases de datos relacionales (RDBMS) de código abierto. Su nombre es una combinación de "My", el nombre de My, la hija del cofundador Michael Widenius, y "SQL", el acrónimo de Structured Query Language. Una base de datos relacional organiza los datos en una o más tablas de datos en las que los datos pueden estar relacionados entre sí; estas relaciones ayudan a estructurar los datos. SQL es un lenguaje que utilizan los programadores para crear, modificar y extraer datos de la base de datos relacional, así como para controlar el acceso de los usuarios a la base de datos. Además de las bases de datos relacionales y SQL, un RDBMS como MySQL funciona con un sistema operativo para implementar una base de datos relacional en el sistema de almacenamiento de una computadora, administra usuarios, permite el acceso a la red y facilita las pruebas de integridad de la base de datos y la creación de copias de seguridad.

MySQL es un software gratuito y de código abierto según los términos de la Licencia Pública General de GNU, y también está disponible bajo una variedad de licencias propietarias. MySQL era propiedad y estaba patrocinado por la empresa sueca MySQL AB, que fue comprada por Sun Microsystems (ahora Oracle Corporation). En 2010, cuando Oracle adquirió Sun, Widenius bifurcó el proyecto MySQL de código abierto para crear MariaDB.

MySQL tiene clientes independientes que permiten a los usuarios interactuar directamente con una base de datos MySQL usando SQL, pero más a menudo, MySQL se usa con otros programas para implementar aplicaciones que necesitan capacidad de base de datos relacional. MySQL es un componente de la pila de software de aplicaciones web LAMP (y otras), que es un acrónimo de Linux, Apache, MySQL, Perl/PHP/Python. MySQL es utilizado por muchas aplicaciones web basadas en bases de datos, incluidas Drupal, Joomla, phpBB y WordPress. Muchos sitios web populares también utilizan MySQL, incluidos Facebook, Flickr, MediaWiki, Twitter y YouTube.

Resumen

MySQL está escrito en C y C++. Su analizador SQL está escrito en yacc, pero utiliza un analizador léxico casero. MySQL funciona en muchas plataformas de sistemas, incluidas AIX, BSDi, FreeBSD, HP-UX, ArcaOS, eComStation, IBM i, IRIX, Linux, macOS, Microsoft Windows, NetBSD, Novell NetWare, OpenBSD, OpenSolaris, OS/2 Warp, QNX, Oracle Solaris, Symbian, SunOS, SCO OpenServer, SCO UnixWare, Sanos y Tru64. También existe un puerto de MySQL a OpenVMS.

El propio software del servidor MySQL y las bibliotecas del cliente utilizan una distribución de licencia dual. Se ofrecen bajo GPL versión 2 o una licencia propietaria.

Se puede obtener soporte del manual oficial. El soporte gratuito también está disponible en diferentes canales y foros de IRC. Oracle ofrece soporte pago a través de sus productos MySQL Enterprise. Se diferencian en el alcance de los servicios y en el precio. Además, existen varias organizaciones de terceros para brindar apoyo y servicios.

MySQL ha recibido críticas positivas y los revisores notaron que "funciona extremadamente bien en el caso promedio" y que las "interfaces de desarrollador están ahí, y la documentación (sin mencionar la retroalimentación en el mundo real a través de sitios web y similares) es muy, muy buena". También ha sido probado para ser un "servidor de base de datos SQL multiproceso, rápido, estable y verdadero multiusuario".

Historia

David Axmark (izquierda) y Michael "Monty" Widenius, fundadores de MySQL AB, en 2003

MySQL fue creado por una empresa sueca, MySQL AB, fundada por los suecos David Axmark, Allan Larsson y el sueco finlandés Michael "Monty" Widenio. El desarrollo original de MySQL por parte de Widenius y Axmark comenzó en 1994. La primera versión de MySQL apareció el 23 de mayo de 1995. Inicialmente se creó para uso personal a partir de mSQL basado en el lenguaje de bajo nivel ISAM, que los creadores consideraban demasiado lento e inflexible. Crearon una nueva interfaz SQL, manteniendo la misma API que mSQL. Al mantener la API consistente con el sistema mSQL, muchos desarrolladores pudieron usar MySQL en lugar del antecedente mSQL (con licencia patentada).

Hitos

Hitos adicionales en el desarrollo de MySQL incluyeron:

El desarrollador del Motor de Almacenamiento Federado afirma que "El Motor de Almacenamiento Federado es un motor de almacenamiento de prueba de contacto", pero las principales distribuciones de la versión 5.0 de MySQL la incluyeron y la activaron por defecto. La documentación de algunos de los cortos aparece en "MySQL Federated Tables: The Missing Manual".
Versión 5.1 contenía 20 fallos conocidos y errores de resultado incorrectos además de los 35 presentes en la versión 5.0 (casi todas fijadas a partir de la liberación 5.1.51).
MySQL 5.1 y 6.0-alpha mostraron mal rendimiento cuando se utiliza para almacenamiento de datos – en parte debido a su incapacidad para utilizar múltiples núcleos de CPU para procesar una sola consulta.
Geir Høydalsvik, actual Director Senior de Desarrollo de Software para MySQL en Oracle en 2018

Historial de versiones

Liberación Disponibilidad general Última versión menor Última publicación Fin del apoyo
Versión antigua, ya no se mantiene: 5.1 14 de noviembre de 2008; hace 14 años()2008-11-14)5.1.73 2013-12-03 Dec 2013
Versión antigua, ya no se mantiene: 5,5 3 de diciembre de 2010; hace 12 años()2010-12-03)5.5.62 2018-10-22 Dec 2018
Versión antigua, ya no se mantiene: 5.6 5 de febrero de 2013; hace 9 años()2013-02-05)5.6.51 2021-01-20 Feb 2021
Versión más antigua, sin embargo, mantenida: 5.7 21 de octubre de 2015; hace 7 años()2015-10-21)5.7.40 2022-10-11 2023
Versión estable actual: 8.019 de abril de 2018; hace 4 años()2018-04-19)8.0.31 2022-10-11 Apr 2026
Leyenda:
Versión antigua
Versión más antigua, todavía mantenida
Última versión
Última versión de vista previa
Liberación del futuro

El trabajo en la versión 6 se detuvo después de la adquisición de Sun Microsystems. El producto MySQL Cluster utiliza la versión 7. Se tomó la decisión de saltar a la versión 8 como el siguiente número de versión principal.

Disputas legales y adquisiciones

El 15 de junio de 2001, NuSphere demandó a MySQL AB, TcX DataKonsult AB y sus autores originales Michael ("Monty") Widenius y David Axmark en el Tribunal de Distrito de EE. UU. en Boston por "incumplimiento de contrato, injerencias ilícitas en contratos y relaciones de terceros y competencia desleal".

En 2002, MySQL AB demandó a Progress NuSphere por infracción de derechos de autor y marca registrada en un tribunal de distrito de los Estados Unidos. NuSphere supuestamente había violado los derechos de autor de MySQL AB al vincular el código GPL de MySQL con la tabla NuSphere Gemini sin cumplir con la licencia. Después de una audiencia preliminar ante la jueza Patti Saris el 27 de febrero de 2002, las partes iniciaron conversaciones para llegar a un acuerdo y finalmente llegaron a un acuerdo. Después de la audiencia, la FSF comentó que "la jueza Saris dejó en claro que ve la GNU GPL como una licencia ejecutable y vinculante".

En octubre de 2005, Oracle Corporation adquirió Innobase OY, la empresa finlandesa que desarrolló el motor de almacenamiento InnoDB de terceros que permite que MySQL proporcione funciones como transacciones y claves externas. Después de la adquisición, un comunicado de prensa de Oracle mencionó que los contratos que hacen que el software de la empresa esté disponible para MySQL AB se renovarán (y presumiblemente se renegociarán) en algún momento de 2006. Durante la Conferencia de Usuarios de MySQL en abril de 2006, MySQL AB emitió un comunicado de prensa que confirmó que MySQL AB e Innobase OY acordaron un acuerdo "multianual" extensión de su acuerdo de licencia.

En febrero de 2006, Oracle Corporation adquirió Sleepycat Software, creadores de Berkeley DB, un motor de base de datos que proporciona la base para otro motor de almacenamiento MySQL. Esto tuvo poco efecto, ya que Berkeley DB no se usaba mucho y se eliminó (debido a la falta de uso) en MySQL 5.1.12, una versión anterior a GA de MySQL 5.1 lanzada en octubre de 2006.

En enero de 2008, Sun Microsystems compró MySQL AB por mil millones de dólares.

En abril de 2009, Oracle Corporation celebró un acuerdo para comprar Sun Microsystems, entonces propietarios de los derechos de autor y la marca registrada de MySQL. La junta directiva de Sun aprobó el acuerdo por unanimidad. También fue aprobado por los accionistas de Sun y por el gobierno de los EE. UU. el 20 de agosto de 2009. El 14 de diciembre de 2009, Oracle se comprometió a continuar mejorando MySQL como lo había hecho durante los cuatro años anteriores.

Un movimiento contra la adquisición de MySQL AB por parte de Oracle, para "Salvar MySQL" from Oracle fue iniciado por uno de los fundadores de MySQL AB, Monty Widenius. La petición de más de 50.000 desarrolladores y usuarios pidió a la Comisión Europea que bloqueara la aprobación de la adquisición. Al mismo tiempo, algunos líderes de opinión del Software Libre (incluyendo a Pamela Jones de Groklaw, Jan Wildeboer y Carlo Piana, quien también actuó como co-asesor en el procedimiento de regulación de la fusión) abogaron por la aprobación incondicional de la fusión. Como parte de las negociaciones con la Comisión Europea, Oracle se comprometió a que el servidor MySQL continúe utilizando la estrategia de doble licencia utilizada durante mucho tiempo por MySQL AB, con versiones propietarias y GPL disponibles hasta al menos 2015. El antimonopolio de la UE había estado "presionándolo para que se deshiciera de MySQL como condición para la aprobación de la fusión". Pero, como reveló WikiLeaks, el Departamento de Justicia de EE. UU., a pedido de Oracle, presionó a la UE para que aprobara la fusión sin condiciones. La Comisión Europea finalmente aprobó incondicionalmente la adquisición de MySQL AB por parte de Oracle el 21 de enero de 2010.

En enero de 2010, antes de que Oracle adquiriera MySQL AB, Monty Widenius inició una bifurcación exclusiva de GPL, MariaDB. MariaDB se basa en el mismo código base que el servidor MySQL 5.5 y tiene como objetivo mantener la compatibilidad con las versiones proporcionadas por Oracle.

Características

MySQL se ofrece en dos ediciones diferentes: MySQL Community Server de código abierto y Enterprise Server patentado. MySQL Enterprise Server se diferencia por una serie de extensiones propietarias que se instalan como complementos del servidor, pero por lo demás comparte el sistema de numeración de versiones y está construido a partir de la misma base de código.

Características principales disponibles en MySQL 5.6:

Los desarrolladores lanzan actualizaciones menores del servidor MySQL aproximadamente cada dos meses. Las fuentes se pueden obtener del sitio web de MySQL o del repositorio GitHub de MySQL, ambos bajo licencia GPL.

Limitaciones

Al usar algunos motores de almacenamiento distintos al predeterminado de InnoDB, MySQL no cumple con el estándar SQL completo para algunas de las funciones implementadas, incluidas las referencias de clave externa. Todos los motores de almacenamiento analizan las restricciones de verificación, pero las ignoran antes de la versión 8.0.15 de MySQL.

Hasta MySQL 5.7, los disparadores están limitados a uno por acción/momento, lo que significa que como máximo se puede definir un disparador para que se ejecute después de una operación INSERT, y uno antes INSERT en la misma tabla. No se pueden definir disparadores en las vistas.

Las funciones incorporadas de la base de datos MySQL como UNIX_TIMESTAMP() devolverán 0 después de las 03:14:07 UTC del 19 de enero de 2038. Recientemente, se había intentado solucionar el problema que se había asignado a la cola interna.

Despliegue

MySQL se puede compilar e instalar manualmente desde el código fuente, pero se instala más comúnmente desde un paquete binario, a menos que se requieran personalizaciones especiales. En la mayoría de las distribuciones de Linux, el sistema de administración de paquetes puede descargar e instalar MySQL con un esfuerzo mínimo, aunque a menudo se requiere una configuración adicional para ajustar la configuración de seguridad y optimización.

LAMP paquete de software, mostrado aquí junto con Squid.

Aunque MySQL comenzó como una alternativa de gama baja a bases de datos propietarias más potentes, ha evolucionado gradualmente para admitir también necesidades de mayor escala. Todavía se usa más comúnmente en implementaciones de un solo servidor de pequeña a mediana escala, ya sea como un componente en una aplicación web basada en LAMP o como un servidor de base de datos independiente. Gran parte del atractivo de MySQL se origina en su relativa simplicidad y facilidad de uso, que está habilitada por un ecosistema de herramientas de código abierto como phpMyAdmin. En el rango medio, MySQL se puede escalar implementándolo en un hardware más potente, como un servidor multiprocesador con gigabytes de memoria.

Sin embargo, existen límites en cuanto a cuánto se puede escalar el rendimiento en un solo servidor ('ampliación'), por lo que en escalas más grandes, MySQL multiservidor ('ampliación horizontal') se requieren implementaciones para proporcionar un mejor rendimiento y confiabilidad. Una configuración típica de gama alta puede incluir una poderosa base de datos maestra que maneja las operaciones de escritura de datos y se replica en múltiples esclavos que manejan todas las operaciones de lectura. El servidor maestro envía continuamente eventos binlog a los esclavos conectados para que, en caso de falla, se pueda promocionar un esclavo para que se convierta en el nuevo maestro, lo que minimiza el tiempo de inactividad. Se pueden lograr mejoras adicionales en el rendimiento almacenando en caché los resultados de las consultas de la base de datos en la memoria usando Memcached, o dividiendo una base de datos en fragmentos más pequeños llamados fragmentos que se pueden distribuir en varios clústeres de servidores distribuidos.

Software de alta disponibilidad

Oracle MySQL ofrece una solución de alta disponibilidad con una combinación de herramientas que incluyen el enrutador MySQL y el shell MySQL. Se basan en Group Replication, herramientas de código abierto.

MariaDB ofrece una oferta similar en términos de productos.

Despliegue en la nube

MySQL también se puede ejecutar en plataformas de computación en la nube como Microsoft Azure, Amazon Elastic Compute Cloud, Oracle Cloud Infrastructure. Algunos modelos de implementación comunes para MySQL en la nube son:

Imagen de máquina virtual
En esta implementación, los usuarios de la nube pueden subir una imagen de su propia máquina con MySQL instalado, o utilizar una imagen de máquina lista con una instalación optimizada de MySQL en ella, como la proporcionada por Amazon EC2.
MySQL como servicio
Algunas plataformas de nubes ofrecen MySQL "como un servicio". En esta configuración, los propietarios de aplicaciones no tienen que instalar y mantener la base de datos MySQL por su cuenta. En cambio, el proveedor de servicios de base de datos tiene la responsabilidad de instalar y mantener la base de datos, y los propietarios de aplicaciones pagan según su uso. Notables servicios basados en la nube MySQL son el servicio de base de datos relacional de Amazon; Oracle MySQL Cloud Service, Azure Database for MySQL, Rackspace; HP Converged Cloud; Heroku y Jelastic. En este modelo el proveedor de servicios de base de datos se encarga de mantener el host y la base de datos.

Interfaces de usuario

Interfaces gráficas de usuario

Una interfaz gráfica de usuario (GUI) es un tipo de interfaz que permite a los usuarios interactuar con dispositivos electrónicos o programas a través de iconos gráficos e indicadores visuales, como notación secundaria, a diferencia de las interfaces basadas en texto, etiquetas de comandos escritos o navegación de texto..

Existen aplicaciones de administración gráfica gratuitas y patentadas de terceros (o "front-ends") que se integran con MySQL y permiten a los usuarios trabajar visualmente con la estructura de la base de datos y los datos.

MySQL Workbench corriendo en macOS

Mesa de trabajo MySQL

MySQL Workbench es el entorno integrado para MySQL. Fue desarrollado por MySQL AB y permite a los usuarios administrar gráficamente bases de datos MySQL y diseñar visualmente estructuras de bases de datos.

MySQL Workbench está disponible en tres ediciones, la Community Edition gratuita y de código abierto que se puede descargar del sitio web de MySQL, y la Standard Edition propietaria que amplía y mejora el conjunto de funciones de Community Edition y MySQL Cluster CGE.

Otras herramientas de GUI

Interfaces de línea de comandos

Una interfaz de línea de comandos es un medio de interactuar con un programa de computadora donde el usuario emite comandos al programa escribiendo líneas sucesivas de texto (líneas de comando). MySQL viene con muchas herramientas de línea de comandos, desde las cuales la interfaz principal es el cliente mysql.

MySQL Utilities es un conjunto de utilidades diseñadas para realizar tareas administrativas y de mantenimiento comunes. Originalmente incluidas como parte de MySQL Workbench, las utilidades son una descarga independiente disponible de Oracle.

Percona Toolkit es un conjunto de herramientas multiplataforma para MySQL, desarrollado en Perl. Percona Toolkit se puede utilizar para demostrar que la replicación funciona correctamente, reparar datos corruptos, automatizar tareas repetitivas y acelerar los servidores. Percona Toolkit se incluye con varias distribuciones de Linux, como CentOS y Debian, y también hay paquetes disponibles para Fedora y Ubuntu. Percona Toolkit se desarrolló originalmente como Maatkit, pero a finales de 2011, Maatkit ya no se desarrolla.

El shell de MySQL es una herramienta para el uso interactivo y la administración de la base de datos MySQL. Es compatible con los modos JavaScript, Python o SQL y se puede utilizar con fines de administración y acceso.

Interfaces de programación de aplicaciones

Muchos lenguajes de programación con API específicas del lenguaje incluyen bibliotecas para acceder a bases de datos MySQL. Estos incluyen MySQL Connector/Net para.NET/CLI Languages y el controlador JDBC para Java.

Además, una interfaz ODBC llamada MySQL Connector/ODBC permite lenguajes de programación adicionales que admiten la interfaz ODBC para comunicarse con una base de datos MySQL, como ASP o ColdFusion. El método de consulta basado en URL HTSQL también se envía con un adaptador MySQL, lo que permite la interacción directa entre una base de datos MySQL y cualquier cliente web a través de URL estructuradas. Existen otros controladores para lenguajes como Python o Node.js.

Bifurcaciones del proyecto

Existe una variedad de bifurcaciones de MySQL, incluidas las siguientes.

Actual

MariaDB
MariaDB es un tenedor desarrollado por la comunidad del sistema de gestión de bases de datos relacionales MySQL destinado a permanecer libre bajo la GNU GPL. El tenedor ha sido liderado por los desarrolladores originales de MySQL, quienes lo abandonaron debido a preocupaciones sobre su adquisición por Oracle.
Percona Server para MySQL
Percona Server for MySQL, forked por Percona, pretende mantener una compatibilidad estrecha con las versiones oficiales de MySQL. También está incluido en Percona Server para MySQL es XtraDB, el tenedor de Percona del motor de almacenamiento InnoDB.

Abandonado

Drizzle
Drizzle era un sistema gratuito de gestión de bases de datos relacionales de código abierto (DBMS) que fue preseleccionado de la rama de desarrollo de 6.0 ahora defunct del MySQL DBMS. Como MySQL, Drizzle tenía una arquitectura cliente/servidor y utiliza SQL como su idioma de comando primario. Drizzle fue distribuido bajo la versión 2 y 3 de la GNU General Public License (GPL) con porciones, incluyendo los controladores de protocolo y mensajería de replicación bajo la licencia BSD.
WebScaleSQL
WebScaleSQL fue una rama de software de MySQL 5.6, y fue anunciado el 27 de marzo de 2014 por Facebook, Google, LinkedIn y Twitter como un esfuerzo conjunto para proporcionar una estructura de desarrollo centralizada para ampliar MySQL con nuevas características específicas de sus implementaciones a gran escala, como la construcción de grandes bases de datos replicadas que se ejecutan en granjas de servidores. Así, WebScaleSQL abrió un camino para deduplicar los esfuerzos que cada empresa había estado poniendo en mantener su propia rama de MySQL, y para reunir a más desarrolladores. Combinando los esfuerzos de estas empresas e incorporando diversos cambios y nuevas características en MySQL, WebScaleSQL tiene como objetivo apoyar el despliegue de MySQL en entornos a gran escala. El código fuente del proyecto está licenciado en la versión 2 de la Licencia Pública General de GNU, y está alojado en GitHub.
OurDelta
La distribución OurDelta, creada por la empresa australiana Open Query (más tarde adquirida por Catalyst IT Australia), tenía dos versiones: 5.0, que se basaba en MySQL, y 5.1, que se basaba en MariaDB. Incluye parches desarrollados por Open Query y por otros miembros notables de la comunidad MySQL, incluyendo Jeremy Cole y Google. Una vez que los parches fueron incorporados en la línea principal de MariaDB, se alcanzaron los objetivos de OurDelta y OurDelta pasó su cadena de herramientas de construcción y embalaje al Programa Monty (ahora MariaDB Corp).