Mysql

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 14 de septiembre de 2022; la verificación requiere 1 edición .
mysql
Tipo de DBMS relacional , software de código abierto y software de servidor
Desarrollador MySQL AB , Sun Microsystems y Oracle
Escrito en C++ [2] y C [3]
Sistema operativo Linux [4] , Microsoft Windows [4] , macOS [4] , FreeBSD [4] , Solaris [4] y sistema operativo similar a Unix
Primera edición 1995
plataforma de hardware x86_64 [5] , IA-32 [5] , A64 [d] [5] y SPARC [5]
ultima versión
Formatos de archivo legibles Formato de definición de tabla MySQL [d]
Formatos de archivo generados Formato de definición de tabla MySQL [d]
Licencia GNU GPL 2 [6] y propietario [7]
Sitio web mysql.com_
 Archivos multimedia en Wikimedia Commons

MySQL ( IPA: [maɪ ˌɛskjuːˈɛl] ) es un sistema gratuito de gestión de bases de datos relacionales [8] . MySQL es desarrollado y respaldado por Oracle Corporation , que adquirió los derechos de la marca comercial junto con Sun Microsystems , que anteriormente había adquirido la empresa sueca MySQL AB . El producto se distribuye bajo la Licencia Pública General GNU y bajo su propia licencia comercial. Además, los desarrolladores crean funcionalidades para usuarios con licencia. Fue gracias a este orden que el mecanismo de replicación apareció en casi las primeras versiones .

MySQL es la solución para pequeñas y medianas aplicaciones. Incluido en servidores WAMP , AppServ , LAMP y en montajes portátiles de servidores Denver , XAMPP , VertrigoServ . MySQL generalmente se usa como un servidor al que acceden clientes locales o remotos, pero la distribución incluye una biblioteca de servidor interna que le permite incluir MySQL en programas independientes.

La flexibilidad de MySQL DBMS está respaldada por una gran cantidad de tipos de tablas: los usuarios pueden elegir entre tablas MyISAM que admiten búsquedas de texto completo y tablas InnoDB que admiten transacciones a nivel de registros individuales. Además, MySQL viene con un tipo de tabla EJEMPLO especial que demuestra cómo crear nuevos tipos de tablas. Gracias a su arquitectura abierta y licencia GPL, constantemente se agregan nuevos tipos de tablas a la base de datos MySQL.

El 26 de febrero de 2008, Sun Microsystems adquirió MySQL AB por $ 1 mil millones [9] , el 27 de enero de 2010, Oracle adquirió Sun Microsystems por $ 7,4 mil millones [10] y agregó MySQL a su línea DBMS [11] .

La comunidad de desarrolladores de MySQL ha creado varias bifurcaciones del código , como DrizzlePercona Server y MariaDB . Todas estas bifurcaciones ya existían en el momento de la adquisición de Sun por parte de Oracle.

Orígenes de MySQL

MySQL se originó como un intento de aplicar mSQL a los desarrollos propios de la empresa: tablas para las que se usaba ISAM  - rutinas de bajo nivel. Como resultado, se desarrolló una nueva interfaz SQL , pero la API se heredó de mSQL. No se sabe con certeza de dónde proviene el nombre "MySQL". Los desarrolladores dan dos opciones: ya sea porque casi todos los desarrollos de la compañía comenzaron con el prefijo "My ..." (del  inglés  -  "my ..."), o en honor a la hija de Myu ( fin. My ) uno de los desarrolladores del sistema Mikael Widenius [12] [13] .

El logo del delfín de MySQL lleva el nombre " Sakila ". Fue elegido de una gran lista de "nombres de delfines" sugeridos por los usuarios. El nombre " Sakila " fue presentado por el desarrollador de código abierto Ambrose Twebaze .

Licencias

MySQL tiene doble licencia. MySQL puede distribuirse bajo términos de licencia. Sin embargo, según los términos de la GPL, si algún programa utiliza las bibliotecas MySQL (o incluye otro código GPL), también debe distribuirse bajo la licencia GPL. Esto puede estar en desacuerdo con los planes de los desarrolladores que no quieren abrir sus programas. Para tales casos, se proporciona una licencia comercial, que también brinda soporte de servicio de alta calidad. Para el software gratuito, Oracle proporciona una excepción separada a la regla que permite explícitamente que MySQL se use y se redistribuya con software con licencia bajo una lista especificada por Oracle. [catorce]

Plataformas

MySQL ha sido portado a una gran cantidad de plataformas: AIX , BSDi , FreeBSD , HP-UX , Linux , macOS , NetBSD , OpenBSD , OS/2 Warp, SGI IRIX , Solaris , SunOS , SCO OpenServer , UnixWare , Tru64 , Windows 95 , Windows 98 , Windows NT , Windows 2000 , Windows XP , Windows Server 2003 , WinCE, Windows Vista , Windows 7 y Windows 10 . También hay un puerto MySQL para OpenVMS . En el sitio web oficial de DBMS, no solo se proporcionan códigos fuente para su descarga gratuita, sino también módulos ejecutables MySQL DBMS listos para usar, compilados y optimizados para sistemas operativos específicos.

Lenguajes de programación

MySQL tiene APIs [15] y conectores para Delphi , C , C++ , Eiffel , Java , Lisp , Perl , PHP , Python , Ruby , Smalltalk , Component Pascal , Tcl y Lua , bibliotecas para lenguajes de plataforma .NET y también brinda soporte para ODBC utilizando el controlador ODBC MyODBC .

MyODBC es un controlador ODBC (2.50) de nivel 0 (con algunas funciones de nivel 1 y 2) para conectar una aplicación compatible con ODBC a MySQL. MyODBC se ejecuta en todos los sistemas Microsoft Windows y en la mayoría de las plataformas Unix .

Historial de lanzamientos

[16] [17] [18] [19] [20] [21] [22]

MySQL 4.0

Aunque la versión 4.0 está obsoleta, todavía tiene una distribución significativa. . Características principales de esta versión:

MySQL 4.1

La versión recomendada para 2005 es MySQL 4.1, lanzada el 27 de octubre de 2004 . Contiene las siguientes novedades:

MySQL 5.0

Lanzada el 24 de octubre de 2005, MySQL 5.0 es una versión con una funcionalidad significativamente mejorada que pone a MySQL a la par de los DBMS comerciales . Si MySQL anterior fue acusado de soporte insuficiente para el estándar SQL , entonces con el advenimiento de la quinta versión de esta popular base de datos, apareció un soporte casi completo para el estándar SQL. MySQL 5.0 contiene las siguientes innovaciones:

MySQL 5.1

MySQL 5.1 continúa el camino hacia el estándar SQL:2003 . MySQL 5.1 contiene las siguientes innovaciones [25] [26] .

Maria tipo de tabla

Maria (desde la versión 5.2.x - Aria) es una versión extendida del repositorio MyISAM , con la adición de medios para mantener la integridad de los datos después de un bloqueo.

Las principales ventajas de María [27] :

  • En caso de bloqueo, los resultados de la operación actual se revierten o vuelven al estado anterior al comando LOCK TABLES. Implementación a través de operaciones de registro.
  • Capacidad para restaurar el estado desde cualquier parte del registro de actividad, incluida la compatibilidad con CREATE/DROP/RENAME/TRUNCATE. Se puede utilizar para crear copias de seguridad incrementales copiando periódicamente el registro de actividad.
  • Compatibilidad con todos los formatos de columna de MyISAM, ampliada con un nuevo formato de "filas en bloque" que utiliza una forma paginada de almacenar datos, en la que los datos de las columnas se pueden almacenar en caché.
  • En el futuro, se implementarán dos modos: transaccional y sin reflejo en el registro de transacciones, para datos no críticos.
  • El tamaño de la página de datos es de 8 KB (en MyISAM 1 KB), lo que le permite lograr un mejor rendimiento para los índices en campos de tamaño fijo, pero más lento en el caso de indexar claves de longitud variable.

MySQL 5.5

La rama MySQL 5.5 se basa en la serie inédita MySQL 5.4 y contiene una serie de mejoras significativas de escalabilidad y rendimiento, que incluyen:

  • Usando el motor InnoDB predeterminado.
  • Soporte para un mecanismo de replicación semisincrónico basado en parches a InnoDB de Google.
  • Mejora de las funciones de partición de datos. Sintaxis extendida para dividir tablas grandes en varias partes ubicadas en sistemas de archivos (particionamiento). Se agregaron operaciones de RANGO, LISTA y método de optimización de "poda de partición".
  • Nuevo mecanismo de optimización para consultas anidadas y operaciones JOIN.
  • El sistema de bloqueo interno ha sido rediseñado.
  • Parches de Google integrados con optimización InnoDB en procesadores con gran número de núcleos.

MySQL 6.0

MySQL 6.0 se ha congelado en las pruebas alfa. Inicialmente, se decidió crear la versión 5.2, pronto esta versión pasó a llamarse 6.0. Sin embargo, más tarde la información de MySQL 6.0 desapareció del sitio y los desarrolladores se centraron en la versión 5.5 y la próxima versión 5.6.

Una de las principales innovaciones de la versión 6.0 fue el nuevo tipo de tabla Falcon , desarrollado como un posible reemplazo de InnoDB por Innobase , adquirida por Oracle . En relación con la adquisición de Sun Microsystems por el mismo Oracle en 2010 , el destino de Falcon sigue en duda.

MySQL 5.7

La primera versión de la rama MySQL 5.7.1 se anunció el 23 de abril de 2013. MySQL 5.7.8 está adaptado para Debian 8 y Ubuntu 15.04. La última versión es 5.7.32 con fecha 19/10/2020. [24]

MySQL 8.0

La versión 8.0.0 se lanzó el 12/09/2016, pero la versión 8.0.11, lanzada el 19/04/2018, se pudo utilizar oficialmente en todo el mundo. La última versión es la 8.0.22 (publicada el 19/10/2020) [28]

Especificaciones

Tamaños máximos de tabla

El tamaño máximo de las tablas en MySQL 3.22 es de hasta 4 gigabytes, en versiones posteriores no hay restricciones.

El tamaño de una tabla está limitado por su tipo. En general, el tipo MyISAM está limitado por el límite de tamaño de archivo del sistema de archivos del sistema operativo . Por ejemplo, en NTFS este tamaño podría ser teóricamente de hasta 32 exabytes . En el caso de InnoDB , una tabla se puede almacenar en varios archivos que representan un solo tablespace . El tamaño de este último puede alcanzar los 64 terabytes .

A diferencia de MyISAM , InnoDB tiene un límite significativo en la cantidad de columnas que se pueden agregar a una sola tabla. El tamaño de página de memoria predeterminado es de 16 kilobytes, de los cuales 8123 bytes están reservados para datos. El tamaño del puntero a campos dinámicos es de 20 bytes. Así, en el caso de utilizar el formato dinámico de filas ( ROW_FORMAT=DYNAMIC), una tabla puede contener un máximo de 409 columnas de tipo blobo text.

Localización

A partir de la versión 4.1, se ha implementado un nuevo sistema de codificaciones y cotejos en MySQL DBMS . Al usar la codificación Windows-1251, antes de ejecutar sentencias SQL, debe configurar la codificación de conexión usando los operadores:

SET character_set_client = 'cp1251' ; SET character_set_results = 'cp1251' ; SET character_set_connection = 'cp1251' ;

Estas tres declaraciones son equivalentes a llamar a una sola declaración:

ESTABLECER NOMBRES 'cp1251'

La variable character_set_clientestablece la codificación de los datos enviados desde el cliente, la variable character_set_resultsestablece la codificación de los datos enviados al cliente, la variable character_set_connectionestablece la codificación en la que se convierte la información recibida del cliente antes de ejecutar la solicitud en el servidor.

Cuando se usa Unicode UTF-8, esta declaración se ve así:

ESTABLECER NOMBRES 'utf8mb4'

No se admite la codificación ISO 8859-5 .

El problema con Unicode

MySQL no permite el uso correcto de expresiones regulares (operadores REGEXP y RLIKE) en cadenas en codificaciones multibyte, como Unicode (UTF-8) [29] . Si tales operaciones son necesarias, uno debe cambiar a codificaciones de un solo byte, por ejemplo, Russian Win-1251 o KOI-8 .

Notas

  1. Cambios en MySQL 8.0.30 (2022-07-26, disponibilidad general) - 2022.
  2. The mysql Open Source Project en Open Hub: Página de idiomas  (inglés) - 2006.
  3. El proyecto de código abierto mysql en Open Hub: página de idiomas - 2006.
  4. 1 2 3 4 5 Plataformas compatibles: base de datos MySQL 
  5. 1 2 3 4 Plataformas compatibles: base de datos MySQL
  6. https://github.com/mysql/mysql-server/blob/mysql-8.0.3/COPYING
  7. https://www.mysql.com/about/legal/licensing/oem/
  8. http://dev.mysql.com/doc/refman/5.7/en/what-is-mysql.html Archivado el 14 de julio de 2017 en Wayback Machine 1.3.1. ¿Qué es MySQL? Manual de referencia de MySQL 5.7.
  9. MySQL :: Observaciones de Kaj Arnö @Sun Archivado el 22 de marzo de 2012.  (Inglés)
  10. Oracle to Buy Sun (enlace no disponible) . Consultado el 24 de abril de 2013. Archivado desde el original el 22 de abril de 2009. 
  11. Oracle completa la adquisición de Sun. Archivado el 27 de enero de 2012 en Wayback Machine . 
  12. MySQL. Guía de administración = MySQL. Guía del administrador. - M. : Williams Publishing House , 2005. - S.  624 . — ISBN 5-8459-0805-1 .
  13. [ Historia de MySQL  ] . Consultado el 25 de marzo de 2008. Archivado desde el original el 31 de agosto de 2009. Historia  de MySQL
  14. Excepción de licencia FOSS . Consultado el 6 de mayo de 2016. Archivado desde el original el 15 de mayo de 2016.
  15. MySQL :: Manual de referencia de MySQL 8.0 :: 28 Conectores y API . dev.mysql.com. Consultado el 15 de abril de 2019. Archivado desde el original el 5 de abril de 2019.
  16. B.3. Cambios en la versión 3.23.x (Soporte de ciclo de vida finalizado) (enlace inactivo) . Oráculo. Consultado el 24 de agosto de 2010. Archivado desde el original el 4 de abril de 2013.  
  17. B.2. Cambios en la versión 4.0.x (Soporte de ciclo de vida finalizado) (enlace inactivo) . Oráculo. Consultado el 24 de agosto de 2010. Archivado desde el original el 4 de abril de 2013. 
  18. B.1. Cambios en la versión 4.1.x (Soporte de ciclo de vida finalizado) (enlace inactivo) . Oráculo. Consultado el 24 de agosto de 2010. Archivado desde el original el 4 de abril de 2013. 
  19. C.1. Cambios en la versión 5.0.x (Soporte de ciclo de vida finalizado) (enlace inactivo) . Oráculo. Consultado el 24 de agosto de 2010. Archivado desde el original el 4 de abril de 2013. 
  20. C.1. Cambios en la Versión 5.1.x (Producción) (enlace descendente) . Oráculo. Consultado el 24 de agosto de 2010. Archivado desde el original el 4 de abril de 2013. 
  21. C.1. Cambios en la Versión 5.5.x (Producción) (enlace descendente) . Oráculo. Consultado el 24 de agosto de 2010. Archivado desde el original el 4 de abril de 2013. 
  22. C.1. Cambios en la versión 5.6.x (Desarrollo) (enlace no disponible) . Oráculo. Consultado el 24 de agosto de 2010. Archivado desde el original el 4 de abril de 2013. 
  23. [Cambios en MySQL 5.6.50 (2020-10-19, disponibilidad general) Anuncio de lanzamiento de MySQL 5.6.50 del 19/10/2020]
  24. 1 2 Anuncio de lanzamiento de MySQL 5.7.32 del 19/10/2020 . Consultado el 16 de enero de 2021. Archivado desde el original el 28 de febrero de 2021.
  25. Novedades en MySQL 5.1 (enlace descendente) . Fecha de acceso: 13 de agosto de 2009. Archivado desde el original el 28 de junio de 2009. 
  26. Descripción general de las innovaciones en MySQL 5.1 en ruso . Consultado el 22 de diciembre de 2008. Archivado desde el original el 26 de diciembre de 2008.
  27. Descripción general de las funciones de almacenamiento de Maria en opennet.ru . Fecha de acceso: 7 de enero de 2009. Archivado desde el original el 9 de febrero de 2009.
  28. Anuncio de lanzamiento de MySQL 8.0.22 del 19/10/2022 . Consultado el 16 de enero de 2021. Archivado desde el original el 26 de febrero de 2021.
  29. "Los operadores REGEXP y RLIKE funcionan en forma de byte, por lo que no son seguros para varios bytes y pueden producir resultados inesperados con juegos de caracteres de varios bytes". . Fecha de acceso: 30 de julio de 2014. Archivado desde el original el 29 de julio de 2014.

Literatura

  • V. Vaswani. MySQL: uso y administración = uso y administración de la base de datos MySQL. - M. : "Piter" , 2011. - 368 p. - ISBN 978-5-459-00264-5 .
  • Steve Swaring, Tim Converse, Joyce Park. PHP y MySQL. La Biblia del Programador 2da Edición = Biblia PHP 6 y MySQL 6. - M. : "Dialéctica" , 2010. - 912 p. - ISBN 978-5-8459-1640-2 .
  • Robert Sheldon, Geoffrey Moyet. MySQL 5: curso básico = MySQL principiante. - M. : "Dialéctica" , 2007. - 880 p. - ISBN 978-5-8459-1167-4 .
  • Kuznetsov Maxim, Simdianov Igor. MySQL por ejemplo. - San Petersburgo. : "BHV-Petersburg" , 2008. - S. 952. - ISBN 978-5-9775-0066-1 .
  • Pablo Dubois. MySQL, 3ra edición = MySQL, 3ed. - M. : "Williams" , 2006. - 1168 p. — ISBN 5-8459-1119-2 .
  • Kuznetsov Maxim, Simdianov Igor. MySQL 5. Original. - San Petersburgo. : "BHV-Petersburg" , 2006. - S. 1024. - ISBN 5-94157-928-4 .
  • Kuznetsov Maxim, Simdianov Igor. Tutorial MySQL 5. - San Petersburgo. : "BHV-Petersburg" , 2006. - S. 560. - ISBN 5-94157-754-0 .

Enlaces