MySQL

MySQL Descripción de la imagen Mysql-screenshot.PNG. Información
Desarrollado por MySQL AB , Sun Microsystems y Oracle
Primera versión 1994
Última versión 8.0.24 (20 de abril de 2021)
Versión avanzada 8.0 RC1 (25 de septiembre de 2017)
Depositar MySQL en GitHub
Estado del proyecto En constante desarrollo
Escrito en C y C ++
Sistema de explotación Tipo Linux , Microsoft Windows , macOS , FreeBSD , Solaris y Unix
Leer formatos Formato de definición de tabla MySQL ( d )
Formatos escritos Formato de definición de tabla MySQL ( d )
Idiomas inglés
Tipo Sistema de gestión de bases de datos relacionales ( en )
Servidor de software ( d )
Política de distribución Libre
Licencia Licencia pública general GNU versión 2 y licencia propietaria
Sitio web www.mysql.com

MySQL (pronunciado [ maj.ɛs.ky.ɛl ]) es un sistema de gestión de bases de datos relacionales (RDBMS). Se distribuye bajo una licencia propietaria y GPL dual. Es uno delossoftware de gestión de bases de datos más utilizados en el mundo, tanto por el público en general (principalmente aplicaciones web) como por profesionales, en competencia con Oracle , PostgreSQL y Microsoft SQL Server .

Su nombre proviene del primer nombre de la hija del co-creador Michael Widenius , My  (sv) (se pronuncia [ my ]). SQL se refiere al lenguaje de consulta estructurado , el lenguaje de consulta utilizado.

MySQL AB se compró el16 de enero de 2008por Sun Microsystems por mil millones de dólares . En 2009, Sun Microsystems fue adquirida por Oracle Corporation , colocando los dos productos competidores Oracle Database y MySQL en manos de una sola empresa . Esta compra fue autorizada por la Comisión Europea el21 de enero de 2010.

Desde Mayo de 2009, su creador Michael Widenius creó MariaDB (Maria es el primer nombre de su segunda hija) para continuar su desarrollo como un proyecto de código abierto .

Caracteristicas

MySQL es un servidor de base de datos SQL relacional desarrollado con un alto rendimiento de lectura en mente, lo que significa que está más orientado a servir datos ya existentes que a actualizaciones frecuentes y altamente seguras. Es multiproceso y multiusuario.

Es un software gratuito , de código abierto , desarrollado bajo una licencia dual dependiendo de si se distribuye con un producto gratuito o con un producto propietario. En el último caso, la licencia es de pago; de lo contrario, se aplica la Licencia Pública General GNU (GPL). Por lo tanto, el software que integra código MySQL o integra MySQL durante su instalación debe ser gratuito o adquirir una licencia de pago. Sin embargo, si la base de datos está separada del software propietario que solo usa API de terceros (por ejemplo, en C # o php ), entonces no es necesario adquirir una licencia MySQL de pago. Este tipo de licencia dual es utilizado por otros productos como el marco de desarrollo de software Qt (para versiones anteriores a la 4.5).

Sistemas operativos compatibles

MySQL se ejecuta en muchos sistemas operativos diferentes, incluidos AIX , IBM i-5, BSDi , FreeBSD , HP-UX , Linux , Mac OS X , NetWare , NetBSD , OpenBSD , OS / 2 Warp, SGI IRIX , Solaris , SCO OpenServer , SCO UnixWare , Tru64 Unix, Windows .

Las bases de datos son accesibles utilizando los lenguajes de programación C , C ++ , VB , VB .NET , C # , Delphi / Kylix , Eiffel , Java , Perl , PHP , Python , Windev , Ruby y Tcl  ; una API específica está disponible para cada uno de ellos. También está disponible una interfaz ODBC llamada MyODBC . En Java, MySQL se puede utilizar de forma transparente con el estándar JDO .

Idiomas de computadora admitidos

MySQL admite dos lenguajes informáticos , el lenguaje de consulta SQL y SQL / PSM (módulos almacenados persistentes), una extensión de procedimiento estandarizada de SQL incluida en el estándar SQL: 2003. SQL / PSM, introducido en la versión 5 de MySQL, le permite combinar consultas SQL e instrucciones de procedimiento (bucles, condiciones, etc.), para crear procesos complejos destinados a ser almacenados en el servidor de la base de datos (servidor de objetos), por ejemplo procedimientos almacenados o desencadenantes .

usar

MySQL es parte del cuarteto LAMP  : Linux , Apache , MySQL, PHP . También pertenece a sus variantes WAMP (Windows) y MAMP (Mac OS).

La pareja PHP / MySQL es ampliamente utilizada por los sitios web y ofrecida por la mayoría de los servidores web . Más de la mitad de los sitios web se ejecutan en Apache , que se usa con mayor frecuencia junto con PHP y MySQL.

Histórico

Wikipedia utilizó MySQL hasta finales de 2012 ( actualmente se utiliza MariaDB ), muchas empresas, incluidas Google , Yahoo! , YouTube , Adobe , Airbus , Alstom , Crédit Agricole , AFP , Reuters , BBC News , Ernst & Young , Alcatel-Lucent todavía lo usan.

Versión SQL

MySQL soporta el estándar SQL2 (uso de RIGHT JOIN y LEFT JOIN ), el cumplimiento de este estándar asegura que cumplirá con las consultas estandarizadas correspondientes. Sin embargo, las funcionalidades de los estándares SQL más recientes no están todas implementadas y algunas no respetan la sintaxis recomendada (concatenación por ejemplo), impidiendo la interoperabilidad de consultas entre diferentes DBMS .

Características

Dos motores principales están presentes en MySQL: MyISAM e InnoDB.

MyISAM, a diferencia de InnoDB , no admite transacciones o integridad automática de tablas, no está diseñado para aplicaciones donde la consistencia de datos es crítica; sin embargo, su rendimiento lo hace adecuado para aplicaciones que requieren una base de datos sencilla y económica de implementar.

Para los usuarios, phpMyAdmin es una herramienta web a menudo disponible para crear, completar y usar bases de datos MySQL.

Interoperabilidad

Las tablas de las bases de datos SQL y las de las hojas de cálculo se comunican bien en ambas direcciones (solo para datos numéricos y cadenas) mediante el formato CSV . Existen formatos de copia de seguridad y restauración, en forma de comandos SQL, así como en formato XML .

Uso de producción

El interés en utilizar herramientas abiertas también ha llevado a algunos establecimientos bancarios como Crédit Mutuel , Crédit Agricole , Crédit Lyonnais y el Banco de Desarrollo de Canadá a incluir MySQL en el catálogo de sus productos de TI internos.

Denominación

MySQL es el trabajo de una empresa sueca, MySQL AB, fundada por David Axmark , Allan Larsson y Michael "Monty" Widenius .

El nombre MySQL proviene de la combinación de My , hija del cofundador Michael "Monty" Widenius , con el acrónimo SQL (según la documentación de la última versión en inglés). Por otro lado, la carpeta base y gran parte de las bibliotecas que utilizan los desarrolladores utilizan el prefijo My.

El nombre del logo de MySQL (el delfín ) Sakila , fue elegido por los creadores de MySQL sobre la base de un concurso. Fue presentado por Ambrose Twebaze, desarrollador de Swazilandia . Según Ambrose, el nombre Sakila tiene sus orígenes en Siswati , el idioma local de Swazilandia .

Histórico

La primera versión de MySQL apareció en 23 de mayo de 1995. Primero fue creado para uso personal desde dentro de mSQL basado en el lenguaje ISAM de bajo nivel que ellos Encontraron demasiado lento y demasiado rígido. Crearon una nueva interfaz SQL manteniendo la misma API que mSQL.

MySQL está bajo licencia GPL desde la versión 3.23.19 (Junio ​​de 2000)

En 2003, MySQL AB y SAP AG celebran un acuerdo. El resultado se llamará MaxDB . Es el resultado de la integración del sistema SAP (SAP DB) en MySQL.

La 20 de abril de 2009, Oracle Corporation anuncia la compra de Sun Microsystems por 7.400 millones de dólares, lo que crea el temor de que MySQL desaparezca, o al menos ya no se desarrolle, a favor de Oracle , el DBMS de Oracle Corporation. MySQL, sin embargo, está lejos de tener toda la funcionalidad de Oracle, por lo que la empresa podría verlo por el contrario como un producto gratuito que trivializa el uso de SQL y, por lo tanto, prepara sus futuras ventas.

Motores de base de datos incluidos

Una de las especificidades de MySQL es poder administrar varios motores dentro de una sola base de datos. Cada tabla puede utilizar un motor diferente dentro de una base de datos. Esto es para optimizar el uso de cada tabla.

Estos son los diferentes motores históricos de MySQL:

Motores de almacenamiento de código abierto:

Motores de almacenamiento comercial:

La facilidad de uso de varios motores de almacenamiento en una sola base de datos con MySQL permite una enorme flexibilidad en la optimización de la base de datos: utilizaremos MyISAM para almacenar datos que no son muy sensibles y requieren un acceso rápido a los datos (por ejemplo, una lista de ' usuarios), InnoDB para funciones avanzadas y datos más sensibles (por ejemplo, para una lista de transacciones bancarias), MEMORIA para datos que pueden perderse al reiniciar la máquina y que a menudo se modifican (por ejemplo, una lista de usuarios en línea), ARCHIVO para un historia (o registro) que requiere poca lectura ...

Clústeres de servidores

Existen dos métodos para distribuir la carga en un conjunto de máquinas que se ejecutan en MySQL Server. Estos métodos permiten asegurar la redundancia (si una máquina se avería, otras pueden hacerse cargo), mejorar la velocidad de las búsquedas (SELECCIONAR) o incluso establecer una máquina dedicada a guardar datos.

Replicación

MySQL puede, desde la versión 3.23.15, utilizar un sistema de replicación unidireccional que es relativamente fácil de configurar: un servidor maestro que contiene la base de datos fuente y recibirá todas las modificaciones, y un servidor esclavo que contiene una base de datos con un estructura idéntica y que se conectará al servidor maestro para buscar nuevas modificaciones y actualizar sus bases de datos. Un maestro puede tener varios esclavos y un esclavo a su vez puede convertirse en maestro de otro servidor esclavo, logrando así una cadena de replicación.

Todas las modificaciones (UPDATE, DELETE, INSERT ...) deben enviarse al servidor maestro y se reflejarán automáticamente en sus esclavos, pero las solicitudes de búsqueda (SELECT), a menudo más numerosas y con más recursos, se pueden realizar en uno o más esclavos. Como las solicitudes de modificación deben ser redireccionadas al servidor maestro, el diseño de la aplicación debe adaptarse a la arquitectura: el programador abrirá dos conexiones en su programa, una en el servidor maestro, en el que ejecutará todas sus modificaciones y otra en el servidor esclavo donde ejecutará todas sus búsquedas.

Sin embargo, este sistema solo permite una redundancia limitada:

En la mayoría de los casos, se tomará una acción del administrador para restaurar el orden y la aplicación dejará de funcionar durante este tiempo. El interés de esta solución aparece entonces en la gestión de las copias de seguridad, porque la aplicación que utiliza solo el servidor maestro, no se detendrá si falla el servidor de respaldo esclavo, pero una copia de seguridad de la base de datos estará disponible en caso de que el servidor maestro baja.

Si desea agregar un nodo, debe colocarlo al final de la cadena como esclavo y modificar la aplicación para administrar este nuevo nodo.

Desde el punto de vista de MySQL, cada nodo se administra de forma independiente, por lo que es el programador quien debe administrar el equilibrio de carga.

Extensión Memcached que permite el acceso NoSQL a los datos del motor InnoDB

La interfaz "memcached" es una extensión de MySQL desde la versión 5.6 en forma de servicio residente que se ejecuta en el servidor y permite que los datos almacenados por el motor InnoDB se almacenen en la memoria caché . La ventaja es una ganancia de rendimiento (los datos están en la memoria caché) y la posibilidad de acceder y modificar los datos a través de una interfaz estilo NoSQL (acceso a los datos mediante una sintaxis de estilo @@get key), lo que permite evitar el tiempo de interpretación de la consulta por el analizador de consultas.

Clúster MySQL

MySQL es capaz, desde la versión 4.1 y gracias al motor de almacenamiento NDB , de gestionar un clúster de servidores completo. Su estructura se basa en la duplicación de datos, es decir que cada nodo formará parte de un grupo de nodos que serán todos dueños de toda la base de datos.

Un protocolo configurado en cada nodo se encarga de dirigir cada transacción a los distintos nodos involucrados en el clúster, se necesitan un mínimo de dos máquinas para establecer una solución de clúster MySQL y una máquina (que puede integrar un servidor MySQL) que jugará el papel de equilibrador de carga al redirigir las solicitudes a los nodos disponibles y menos ocupados.

Las solicitudes de búsqueda (SELECT) serán más rápidas, pero cuando se modifiquen los datos (una solicitud UPDATE, DELETE o INSERT, por ejemplo), se realizará en todos los nodos, lo que bloqueará todo el clúster durante esta operación.

En comparación con un sistema de replicación, la redundancia mejora: si un nodo falla, los otros nodos se hacen cargo automáticamente de su carga.

Se puede agregar un nuevo nodo sin necesidad de volver a particionar la base de datos, basta con que el clúster lo reconozca y se puede reiniciar un nodo sin tener que reiniciar el clúster.

Desde el punto de vista de MySQL, cada nodo es parte de un conjunto que podría reconocerse como una sola máquina. Para el programador, debe programar su aplicación para comunicarse con el balanceador de carga.

Esta solución es ideal cuando la disponibilidad y seguridad de los datos es un problema crítico y cuando se requiere particionamiento técnico para la escritura. Junto con funcionalidades en tiempo real y una API de programación asíncrona, NDB Cluster aborda principalmente los requisitos del mercado de las telecomunicaciones.

Notas y referencias

  1. Cambios en MySQL 8.0.24 (2021-04-20, disponibilidad general)  " ,20 de abril de 2021
  2. MySQL 8.0 RC1 - Aspectos destacados  "
  3. (en) Clasificación de DB-Engines
  4. (in) Sun adquiere MySQL , blogs.mysql.com
  5. UE autoriza la compra de Sun por parte de Oracle , Reuters
  6. (en) La Comisión Europea aprueba incondicionalmente la adquisición de Sun , Oracle por parte de Oracle
  7. https://www.mysql.fr/products/
  8. http://bazaar.launchpad.net/~mysql/mysql-server/5.5/view/head:/sql/sql_parse.cc#L869
  9. (en) http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=34135 .
  10. Wikipedia abandona MySQL a favor de MariaDB silicon.fr Diciembre de 2012
  11. (en) MySQL :: Clientes de MySQL por industria
  12. (en) http://www.scriptol.com/programming/mysql.php
  13. http://dev.mysql.com/doc/refman/5.0/fr/join.html
  14. http://sqlpro.developpez.com/cours/sqlaz/fonctions/
  15. “  siteduzero.com/tutoriel-3-3160…  ” ( ArchivoWikiwixArchive.isGoogle • ¿Qué hacer? ) .
  16. “  Manual de MySQL 5.5: Historia de MySQL  ” .
  17. http://www.oracle.com/us/corporate/press/1904335
  18. "  Cómo prepararse para la actualización de MySQL 5.7  " , en digitalocean.com ,2016.
  19. (in) "  ¿Qué hay de nuevo en MySQL 8.0? (Generalmente disponible)  ” , en el blog del servidor MySQL ,19 de abril de 2018(consultado el 7 de septiembre de 2020 ) .
  20. Artículo Oracle compra Sun por $ 7.4 mil millones en O1Net.com
  21. http://dev.mysql.com/doc/refman/5.0/fr/replication-intro.html .
  22. “  NoSQL a InnoDB con Memcached  ” .
  23. http://dev.mysql.com/doc/refman/5.0/fr/mysql-cluster-overview.html

Ver también

Bibliografía

Artículos relacionados

Herramientas de gestión, administración y diseño para MySQL