MySQL

**MySQL** é un sistema de xestión de base de datos relacional, multifío e multiusuario con máis de seis millóns de instalacións. MySQL AB desenvolve MySQL como software libre con licenza GNU General Public License ou propietaria.

Por unha banda ofréceo baixo a GNU GPL, pero, empresas que queiran incorporalo en produtos privativos poden comprar á empresa unha licenza que lles permita ese uso. Está desenvolvido na súa maior parte en ANSI C.

Ó contrario de proxectos como o Apache, onde o software é desenvolvido por unha comunidade pública, e o copyright do código está en poder do autor individual, MySQL é propiedade e está patrocinado por unha empresa privada, que posúe o copyright da maior parte do código.

Isto é o que posibilita o esquema de licenciamiento anteriormente mencionado. Ademais da venda de licenzas privativas, a compañía ofrece soporte e servizos. Para as súas operacións contratan traballadores ao redor do mundo que colaboran vía Internet. MySQL AB foi fundado por David Axmark, Allan Larsson, e Michael Widenius.

## Historia do proxecto 
SQL (*Linguaxe de Consulta Estruturado*) foi comercializado por primeira vez en 1981 por IBM, o cal foi presentado a ANSI e desde ese entón foi considerado como un estándar para as bases de datos relacionais. Dende 1986, o estándar SQL apareceu en diferentes versións por exemplo: SQL:92, SQL:99, SQL:2003. MySQL é unha idea orixinaria da empresa opensource MySQL AB establecida inicialmente en Suecia en 1995. Os seus fundadores son David Axmark, Allan Larsson, e Michael "Monty" Widenius. O obxectivo que persegue esta empresa consiste en que MySQL cumpra o estándar SQL, pero sen sacrificar velocidade, fiabilidade ou usabilidade.

Michael Widenius na década dos 90 tratou de usar mSQL para conectar as táboas usando rutinas de baixo nivel ISAM, con todo, mSQL non era rápido e flexible para as súas necesidades. Isto levouno a crear unha API SQL denominada MySQL para bases de datos moi similar á de mSQL pero máis portable.

O nome de MySQL ven da combinación de *My*, filla do cofundador Michael "Monty" Widenius, co acrónimo SQL (segundo a documentación da última versión en inglés ). Doutra banda, o directorio base et moitas das librarías usadas polos desenvolvedores tiñan o prefijo `My`.

O nome do golfiño de MySQL é Sakila e foi seleccionado polos fundadores de MySQL AB no concurso “Name the Dolphin”. Este nome foi enviado por Ambrose Twebaze, un desenvolvedor de Opensource Africano, derivado da lingua suazi, a lingua local de Swazilandia e corresponde ao nome dunha cidade en Arusha, Tanzania, preto de Uganda a cidade orixe de Ambrose.

## Linguaxes de programación 
Existen varias APIs que permiten, a aplicacións escritas en diversos linguaxes de programación, acceder ás bases de datos MySQL, incluíndo C, C++, C#, Pascal, Delphi (vía dbExpress), Eiffel, Smalltalk, Xava (cunha implementación nativa do driver de Xava), Lisp, Perl, PHP, Python, Ruby,Gambas, REALbasic (Mac), FreeBASIC, e Tcl; cada un destes utiliza unha API específica. Tamén existe unha interface ODBC, chamado MyODBC que permite a calquera linguaxe de programación que soporte ODBC comunicarse coas bases de datos MySQL.

## Aplicacións 
MySQL é moi utilizado en aplicacións web como MediaWiki ou Drupal, en plataformas (Linux/Windows-Apache-MySQL-PHP/Perl/Python), e por ferramentas de seguimento de erros como Bugzilla. A súa popularidade como aplicación web está moi ligada a PHP, que a miúdo aparece en combinación con MySQL.
MySQL é unha base de datos moi rápida na lectura cando utiliza o motor non transaccional MyISAM, pero pode provocar problemas de integridade en contornas de alta concorrencia na modificación. En aplicacións web hai baixa concorrencia na modificación de datos e en cambio a contorna é intensivo en lectura de datos, o que fai a MySQL ideal para este tipo de aplicacións.

## Especificacións 
### Plataformas 
MySQL funciona sobre múltiples plataformas, incluíndo AIX, BSD, FreeBSD, HP-UX, GNU/Linux, Mac VOS X, NetBSD, Novell Netware, OpenBSD, VOS/2 Warp, QNX, SGI IRIX, Solaris, SunOS, SCO OpenServer, SCO UnixWare, Tru64, Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Vista e outras versións de Windows.
Tamén existe MySQL para OpenVMS en https://web.archive.org/web/20060629030134/http://www.pi-net.dyndns.org/anonymous/kits/.

### Características da versión 5.0.22 
* Un amplo subconjunto de ANSI SQL 99, e varias extensións.
* Soporte a multiplataforma
* Procedementos almacenados
* Triggers
* Cursors
* Vistas actualizables
* Soporte a VARCHAR
* INFORMATION_SCHEMA
* Modo Strict
* Soporte X/Open XA de transaccións distribuídas; transacción en dúas fases como parte disto, utilizando o motor InnoDB de Oracle
* Motores de almacenamento independentes (MyISAM para lecturas rápidas, InnoDB para transaccións e integridade referencial)
* Transaccións cos motores de almacenamento InnoDB, BDB E Cluster; puntos de recuperación(savepoints) con InnoDB
* Soporte para SSL
* Query caching
* Sub-SELECTs (ou SELECTs aniñados)
* Replicación cun mestre por escravo, varios escravos por mestre, suporte non automático para múltiples mestres por escravo.
* indexing e buscando campos de texto completos usando o motor de almacenamento MyISAM
* Embedded database library
* Soporte completo para Unicode
* Conforme ás regras ACID usando os motores InnoDB, BDB e Cluster
* Shared-nothing clustering through MySQL Cluster

## Características adicionais 
* Usa GNU Automake, Autoconf, e Libtool para portabilidade
* Uso de multifios mediante fíos do kernel.
* Usa táboas en disco b-tree para procuras rápidas con compresión de índice
* Táboas hash en memoria temporais
* O código MySQL próbase con Purify (un detector de memoria perdida comercial) así como con Valgrind, unha ferramenta GPL
* Completo soporte para operadores e funcións en cláusulas select e where.
* Completo soporte para cláusulas group by e order by, soporte de funcións de agrupación
* Seguridade: ofrece un sistema de contrasinais e privilexios seguro mediante verificación baseada no host e o tráfico de contrasinais está cifrado ao conectarse a un servidor.
* Soporta gran cantidade de datos. MySQL Server ten bases de datos de ata 50 millóns de rexistros.
* Permítense ata 64 índices por táboa (32 antes en MySQL 4.1.2). Cada índice pode consistir desde 1 ata 16 columnas ou partes de columnas. O máximo ancho de límite son 1000 bytes (500 antes de MySQL 4.1.2).
* Os clientes conéctanse ao servidor MySQL usando sockets TCP/IP en calquera plataforma. En sistemas Windows pódense conectar usando named pipes e en sistemas Unix usando ficheiros socket Unix.
* En MySQL 5.0, os clientes e servidores Windows pódense conectar usando memoria compartida.
* MySQL contén o seu propio paquete de probas de rendemento proporcionado co código fonte da distribución de MySQL

### Características (versión 4.0) 
Inicialmente, MySQL carecía de elementos considerados esenciais nas bases de datos relacionales, tales como integridade referencial e transaccións. A pesar diso, atraeu aos desenvolvedores de páxinas web con contido dinámico, xustamente polo seu simplicidad.

Aos poucos os elementos dos que carecía MySQL están sendo incorporados tanto por desenvolvementos internos, como por desenvolvedores de software libre. Entre as características dispoñibles nas últimas versións pódese destacar:
* Amplo subconxunto da linguaxe SQL. Algunhas extensións son incluídas igualmente.
* Dispoñibilidade en gran cantidade de plataformas e sistemas.
* Diferentes opcións de almacenamento segundo se se desexa velocidade nas operacións ou o maior número de operacións dispoñibles.
* Transaccións e claves foráneas.
* Conectividad segura.
* Replicación.
* Procura e indexación de campos de texto.

MySQL é un sistema de administración de bases de datos. Unha base de datos é unha colección estruturada de táboas que conteñen datos. Esta pode ser desde unha simple lista de compras a unha galería de pinturas ou o vasto volume de información nun rede corporativa. Para agregar, acceder a e procesar datos gardados nun computador, vostede necesita un administrador como MySQL Server. Dado que os computadores son moi bos manexando grandes cantidades de información, os administradores de bases de datos xogan un papel central en computación, como aplicacións independentes ou como parte doutras aplicacións.

MySQL é un sistema de administración relacional de bases de datos. Unha base de datos relacional arquiva datos en táboas separadas no canto de colocar todos os datos nun grande arquivo. Isto permite velocidade e flexibilidade. As táboas están conectadas por relacións definidas que fan posible combinar datos de diferentes táboas sobre pedido.

MySQL é software de fonte aberta. Fonte aberta significa que é posible para calquera persoa usalo e modificalo. Calquera persoa pode baixar o código fonte de MySQL e usalo sen pagar. Calquera interesado pode estudar o código fonte e axustalo ás súas necesidades. MySQL usa o GPL (GNU Xeral Public License) para definir que pode facer e que non pode facer co software en diferentes situacións. Se vostede non se axusta ao GPL ou require introducir código MySQL en aplicacións comerciais, vostede pode comprar unha versión comercial licenciada.

### Melloras futuras 
O mapa de ruta de MySQL 5.1 indica soporte para:
* Particionado da base de datos
* Backup en liña para todos os motores de almacenamento
* Replicación segura
* Restricións a nivel de columna
* Planificación de eventos
* Funcións XML

### Características distintivas 
As seguintes características son implementadas unicamente por MySQL:
* Múltiples motores de almacenamento (MyISAM, Merge, InnoDB, BDB, Memory/heap, MySQL Cluster, Federated, Arquive, CSV, Blackhole e Example en 5.x), permitindo ao usuario escoller a que sexa máis adecuada para cada táboa da base de datos.
* Agrupación de transaccións, reunindo múltiples transaccións de varias conexións para incrementar o número de transaccións por segundo.

### Tipos de compilación do servidor 
Hai tres tipos de compilación do servidor MySQL:
* Estándar: Os binarios estándar de MySQL son os recomendados para a maioría dos usuarios, e inclúen o motor de almacenamento InnoDB.
* Max (Non se trata de MaxDB, que é unha cooperación con SAP): Os binarios inclúen características adicionais que non foron o bastante probadas ou que normalmente non son necesarias.
* MySQL-Debug: Son binarios que foron compilados con información de depuración extra. Non debe ser usada en sistemas en produción porqué o código de depuración pode reducir o rendemento.

### Especificacións do código fonte 
MySQL está escrito nunha mestura de C e C++. Hai un documento que describe algunhas das súas estruturas internas en http://dev.mysql.com/doc/internals/en/ (en inglés).

## Desenvolvemento do proxecto 
O desenvolvemento de MySQL fundaméntase no traballo dos desenvolvedores contratados pola empresa MySQL AB quen se encargan de dar soporte aos socios comerciais e usuarios da comunidade MySQL e dar solución aos problemas atopados polos usuarios. Os usuarios ou membros da comunidade MySQL poden reportar bugs revisando o manual en liña http://dev.MySQL.com/doc/ que contén as solucións a problemas atopados; o historial de cambios https://web.archive.org/web/20080718101206/http://dev.mysql.com/doc/mysql/en/News.html; a base de datos bugs http://bugs.MySQL.com/ que contén bugs reportados e solucionados e nas listas de correo MySQL http://lists.MySQL.com/.

A través das listas de correo os usuarios poden enviar preguntas e estas serán contestadas por desenvolvedores brindándolles soporte. Outras funcionalidades das listas de correo son:
* Anuncios: informan sobre novas versións de MySQL e programas relacionados.
* MySQL: lista principal de discusión de MySQL.
* Bugs: permite á xente buscar e arranxar bugs.
* Temas internos: para xente que traballa co código de MySQL. É o fórum para discutir sobre o desenvolvemento de MySQL.
* MySQLdoc: para xente que traballa en documentación.
* Probas de rendemento: para xente interesada en temas de rendemento non só de MySQL, senón doutros motores de bases de datos.
* Empaquetadores: para discusións sobre empaquetamiento e distribución de MySQL.
* Xava: discusións sobre MySQL Server e Xava.

Outras listas de correo son: MyODBC, Ferramentas GUI, Cluster, Dotnet, PlusPlus e Perl.

Adicional ás listas de correo, atópase o soporte de IRC da comunidade MySQL. Ademais, hai soporte a través de foros http://forums.MySQL.com agrupados en categorías tales como: Migración, Uso de MySQL, Conectores MySQL, Tecnoloxía MySQL e Negocios

## Estruturas organizativas/asociativas ou de decisión 
A dirección e o patrocinio dos proxectos MySQL está a cargo da empresa MySQL AB quen posúe o copyrigth do código fonte MySQL, a súa icona e marca rexistrada. MySQL, Inc. e MySQL GmbH son exemplos de empresas subsidiarias de MySQL AB. Están establecidas nos Estados Unidos e Alemaña, respectivamente. MySQL AB, conta con máis de 200 empregados en máis de 20 países e funcionan baixo a estratexia de teletraballo.

## Industria relacionada 
A industria radica na venda de produtos software e dalgúns servizos relacionados a numerosas empresas que utilizan estes produtos.

MySQL AB clasifica os produtos así:
* MySQL Enterprise: inclúe MySQL Enterprise Server , Monitoreo da rede MySQL, servizos de consulta e soporte de produción MySQL
* MYSQL Cluster
* MySQL Embedded Database
* MySQL Drivers: para JDBC, ODBC e .Net
* MySQL Tools: MySQL Administrator, MySQL Query Browser, e the MySQL Migration Toolkit
* MaxDB: MaxDB é unha base de datos open source certificada para SAP/R3
Os ingresos desta empresa pola venda de licenzas privativas dos seus produtos e os servizos suma os Ou2 millóns.

## MySQL en cifras 
* Segundo as cifras do fabricante, existirían máis de seis millóns de copias de MySQL funcionando na actualidade, o que supera a base instalada de calquera outra ferramenta de bases de datos.
* O tráfico do sitio web de MySQL AB superou en 2004 ao do sitio de IBM.

## Que licenza utilizar 
A licenza GNU GPL de MySQL obriga a que a distribución de calquera produto derivado (aplicación) fágase baixo esa mesma licenza. Se un desenvolvedor desexa incorporar MySQL no seu produto pero desexa distribuílo baixo outra licenza que non sexa a GNU GPL, pode adquirir unha licenza comercial de MySQL que lle permite facer xustamente iso.

## Estado actual 
A serie en desenvolvemento de MySQL Server actualmente, é a 5.1 ao cal engádense novas características en relación á serie 5.0. A serie de produción actual de MySQL é 5.0, cuxa penúltima versión estable é a 5.0.26 lanzada en outubro de 2006. Actualmente, pódese descargar a serie 5.0.27. A serie de produción anterior foi a 4.1, cuxa versión estable é 4.1.7 lanzada en outubro de 2004. A estas versións de produción só se arranxan problemas, é dicir, xa non se engaden novas características. E ás versións anteriores soamente corríxenselles bugs críticos.

## Usuarios destacados 
* Amazon.com
* Cox Communications - A cuarta televisión por cable máis importante dos Estados Unidos, teñen máis de 3.600 táboas e aproximadamente dous millóns de insercións cada hora.
* Craigslist
* Digg - Sitio de noticias.
* Google - Para o motor de procura da aplicación AdWords
* LiveJournal - Preto de 300 millóns de páxinas servidas  cada día.
* NASA
* Omniture
* RightNow
* Sabre, e o seu sistema de reserva de viaxes Travelocity
* Slashdot - con preto de 50 millóns de páxinas servidas http://www.alexa.com/data/details/traffic_details?&compare_sites=&e=p&q=&url=slashdot.org  cada día.
* Yahoo! - para moitas aplicacións críticas.
* Nokia, usa un cluster MySQL para manter información en tempo real sobre usuarios de redes de móbiles.
* flickr, usa MySQL para xestionar millóns de fotos e usuarios.
* NetQOS, usa MySQL para a xestión dalgunhas das redes máis grandes do mundo como as de Chevron, American Express e Boeing.
* Universidade de Piura, Campus Lima, para o seu sistema académico denomidado SIAD.
* CNET Networks
* Friendster, serve máis de 85 millóns de páxinas dinámicas cada día.
* Wikipedia, serve máis de 200 millóns de consultas e 1,2 millóns de actualizacións cada día, con picos de 11.000 consultas por segundo. En 2012 Wikipedia está a migrar as bases de datos a MariaDB.
* Joomla!, con millóns de usuarios
* WordPress, con centos de blogs aloxados nel.

## Notas 
## Véxase tamén 
### Outros artigos 
* PostgreSQL Outra base de datos baseada en software libre.
* PHP Linguaxe en web comunmente usado con MySQL.
* Base de datos
* Bonsai cvs
* Appserv
* MariaDB

### Ligazóns externas 
* Manual Referencia Oficial Ver 5.0 .
* Manual de Referencia MySQL .
* MySQL en español .
* Extensión mellorada de MySQL para PHP .
* Páxina oficial de MySQL .
* https://web.archive.org/web/20181123161530/http://www.mysqldevelopment.com/ MySQL development .
* http://www.planetmysql.org MySQL Blogs .