MySQL

MySQL és un sistema de gestió de bases de dades relacional (anglès RDBMS - Relational DataBase Management System) multi-fil (multithread) i multiusuari, que usa el llenguatge SQL (Structured Query Language).

MySQL ha esdevingut molt popular gràcies a la seva velocitat en executar consultes i el seu suport de forma nativa per part del llenguatge PHP (fins a la versió 4.X d'aquest llenguatge, ja que a partir de la versió 5 deixa d'estar-ho), en l'elaboració d'aplicacions web, en l'entorn del programari lliure.

Es pot fer ús de MySQL en aplicacions de tota mena (web, d'escriptori o d'altres) de forma lliure i gratuïta sota les condicions de la llicència GPL. Si es vol integrar MySQL com a part d'un producte privatiu cal adquirir una llicència d'ús específica per a aquest propòsit.

MySQL és un dels components de l'arquitectura LAMP (de Linux - sistema operatiu) i la WAMP (de Windows - sistema operatiu). Les tres sigles que segueixen (A,M i P) fan referència al conjunt format per Apache (servidor web), MySQL (base de dades) i PHP (llenguatge de programació). Una plataforma per a la construcció de llocs web utilitzant programari lliure.

Al contrari d'altres projectes com el servidor d'HTTP Apache, MySQL pertanyia a, i estava esponsoritzat per, l'empresa sueca MySQL AB. La companyia desenvolupava i mantenia el programari en la versió lliure i la comercial. Fins que el 16 de gener del 2008, Mysql AB fou adquirida per Sun Microsystems. I el 20 d'abril del 2009, Oracle Corporation adquirí Sun Microsystems i, per tant, MySQL.

Història del projecte 
SQL (Llenguatge de Consulta Estructurat) va ser comercialitzat per primera vegada en 1981 per IBM, el qual va ser presentat a ANSI i des de llavors ha estat considerat com un estàndard per les bases de dades relacionals. Des de 1986, l'estàndard SQL ha aparegut en diferents versions com per exemple: SQL:92, SQL:99, SQL:2003. MySQL és una idea originària de l'empresa opensource MySQL AB establerta inicialment a Suècia en 1995, els fundadors de la qual són David Axmark, Allan Larsson, i Michael "Monty" Widenius. L'objectiu que persegueix aquesta empresa és que MySQL compleixi l'estàndard SQL, però sense sacrificar velocitat, fiabilitat o usabilitat.

Michael Widenius en la dècada dels 90 va tractar d'usar mSQL per connectar les taules usant rutines de baix nivell ISAM, no obstant això, mSQL no era ràpid i flexible per a les seves necessitats. Això ho va portar a crear una API SQL denominada MySQL per a bases de dades molt similar a la de mSQL però més portable.

La procedència del nom de MySQL no és clara. Des de fa més de 10 anys, les eines han mantingut el prefix My. També, es creu que té relació amb el nom de la filla del cofundador Monty Widenius qui es diu My.

D'altra banda, el nom del dofí de MySQL és Sakila i va ser seleccionat pels fundadors de MySQL AB en el concurs ?Name the Dolphin?. Aquest nom va ser enviat per Ambrose Twebaze, un desenvolupador de programari de codi obert africà, derivat de l'idioma SiSwate, l'idioma local de Swazilàndia i correspon al nom d'una ciutat en Arusha, Tanzània, prop d'Uganda la ciutat origen d'Ambrose.

Llenguatges de programació 
Existeixen diverses APIs que permeten, a aplicacions escrites en diversos llenguatges de programació, accedir a les bases de dades MySQL, incloent C, C++, C#, Pascal, Delphi (via dbExpress), Eiffel, Smalltalk, Java (amb una implementació nativa del driver de Java), Lisp, Perl, PHP, Python, Ruby, Gambes, REALbasic (Mac i Linux), (x)Harbour (Eagle1), FreeBASIC, i Tcl; cadascun d'aquests utilitza una API específica. També existeix una interfície ODBC, anomenat MyODBC que permet a qualsevol llenguatge de programació que suporti ODBC comunicar-se amb les bases de dades MySQL. També es pot accedir des del sistema SAP, llenguatge ABAP.

Aplicacions 
MySQL és molt utilitzat en aplicacions web, com Drupal o phpBB, en plataformes (Linux/Windows-Apatxe-MySQL-PHP/Perl/Python), i per eines de seguiment d'errors com Bugzilla. La seva popularitat com a aplicació web està molt lligada a PHP, que sovint apareix en combinació amb MySQL.
MySQL és una base de dades molt ràpida en la lectura quan utilitza el motor no transaccional MyISAM, però pot provocar problemes d'integritat en entorns d'alta concurrència en la modificació. En aplicacions web hi ha baixa concurrència en la modificació de dades i en canvi l'entorn és intensiu en lectura de dades, la qual cosa fa a MySQL ideal per a aquest tipus d'aplicacions.
Sigui el que sigui l'entorn en el qual va a utilitzar MySQL, és important avançar monitoreos sobre l'acompliment per detectar i corregir errors tant de SQL com de programació.

Versions de MySQL

Especificacions

Plataformes 
MySQL funciona sobre múltiples plataformes, incloent:
 AIX
 BSD
 FreeBSD
 HP-UX
 GNU/Linux
 Mac US X
 NetBSD
 Novell Netware
 OpenBSD
 US/2 Warp
 QNX
 SGI IRIX
 Solaris
 SunOS
 SCO OpenServer
 SCO UnixWare
 Tru64
 eBD
 Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Vista, Windows 7 i Windows Server (2000, 2003 i 2008) Windows.
 OpenVMS (vegeu: http://www.pi-net.dyndns.org/anonymous/kits/ ).

Característiques de la versió 5.0.22 
 Un ampli subconjunt d'ANSI SQL 99, i diverses extensions.
 Suport a multiplataforma
 Procediments emmagatzemats
 Disparadors (triggers)
 Cursors
 Vistes actualitzables
 Suport a VARCHAR
 INFORMATION_SCHEMA
 Manera Strict
 Suport X/Open XA de transaccions distribuïdes; transacció en dues fases com a part d'això, utilitzant el motor InnoDB d'Oracle
 Motors d'emmagatzematge independents (MyISAM per a lectures ràpides, InnoDB per a transaccions i integritat referencial)
 Transaccions amb els motors d'emmagatzematge InnoDB, BDB I Cluster; punts de recuperació (savepoints) amb InnoDB
 Suport per a SSL
 Query caching
 Sub-SELECTs (o SELECTs niats)
 Rèplica amb un mestre per esclau, diversos esclaus per mestre, sense suport automàtic per a múltiples mestres per esclau.
 indexing i buscant camps de text complets usant el motor d'emmagatzematge MyISAM
 Embedded database library
 Suport complet per a Unicode
 Conforme a les regles ACID usant els motors InnoDB, BDB i Cluster
 Shared-nothing clustering through MySQL Cluster

Característiques addicionals 
 Usa GNU Automake, Autoconf, i Libtool per a portabilitat
 Ús de multifils mitjançant fils del kernel.
 Usa taules en disc b-tree per a recerques ràpides amb compressió d'índex
 Taules hash en memòria temporals
 El codi MySQL es prova amb Purify (un detector de memòria perduda comercial) així com amb Valgrind, una eina GPL 
 Complet suport per a operadors i funcions en clàusules select i where.
 Complet suport per a clàusules group by i order by, suport de funcions d'agrupació
 Seguretat: ofereix un sistema de contrasenyes i privilegis segur mitjançant verificació basada en la host i el tràfic de contrasenyes està xifrat en connectar-se a un servidor.
 Suporta gran quantitat de dades. MySQL Server té bases de dades de fins a 50 milions de registres.
 Es permeten fins a 64 índexs per taula (32 abans de MySQL 4.1.2). Cada índex pot consistir des d'1 fins a 16 columnes o parts de columnes. El màxim ample de límit són 1000 bytes (500 abans de MySQL 4.1.2).
 Els clients es connecten al servidor MySQL usant sockets TCP/IP en qualsevol plataforma. En sistemes Windows es poden connectar usant named pipes i en sistemes Unix usant fitxers socket Unix.
 En MySQL 5.0, els clients i servidors Windows es poden connectar usant memòria compartida.
 MySQL conté el seu propi paquet de proves de rendiment proporcionat amb el codi font de la distribució de MySQL.

Característiques (versió 4.0) 
Inicialment, MySQL mancava d'elements considerats essencials en les bases de dades relacionals, tals com integritat referencial i transaccions. Malgrat això, va atreure als desenvolupadors de pàgines web amb contingut dinàmic, justament per la seva simplicitat.

A poc a poc els elements dels quals mancava MySQL estan sent incorporats tant per desenvolupaments interns, com per desenvolupadors de programari lliure. Entre les característiques disponibles en les últimes versions es pot destacar:

 Ampli subconjunt del llenguatge SQL. Algunes extensions són incloses igualment.
 Disponibilitat en gran quantitat de plataformes i sistemes.
 Diferents opcions d'emmagatzematge segons si es desitja velocitat en les operacions o el major nombre d'operacions disponibles.
 Transaccions i claus foranes.
 Connectivitat segura.
 Replicació.
 Recerca i indexació de camps de text.

MySQL és un sistema d'administració de bases de dades. Una base de dades és una col·lecció estructurada de taules que contenen dades. Aquesta pot ser des d'una simple llista de compres a una galeria de pintures o el vast volum d'informació en una xarxa corporativa. Per agregar, accedir a i processar dades guardades en un computador, vostè necessita un administrador com MySQL Server. Atès que els computadors són molt bons manejant grans quantitats d'informació, els administradors de bases de dades tenen un paper central en computació, com a aplicacions independents o com a part d'altres aplicacions.

MySQL és un sistema d'administració relacional de bases de dades. Una base de dades relacional arxiva dades en taules separades en comptes de col·locar totes les dades en un gran arxiu. Això permet velocitat i flexibilitat. Les taules estan connectades per relacions definides que fan possible combinar dades de diferents taules sobre comanda.

MySQL és programari de font oberta. Font oberta significa que és possible per a qualsevol persona usar-ho i modificar-ho. Qualsevol persona pot baixar el codi font de MySQL i usar-ho sense pagar. Qualsevol interessat pot estudiar el codi font i ajustar-ho a les seves necessitats. MySQL usa el GPL (GNU General Public License) per definir que pot fer i que no pot fer amb el programari en diferents situacions. Si vostè no s'ajusta al GPL o requereix introduir codi MySQL en aplicacions comercials, vostè pot comprar una versió comercial llicenciada.

Millores futures 
 Partició de la base de dades
 Còpia de seguretat en línia per a tots els motors d'emmagatzematge
 Replicació segura
 Restriccions a escala de columna
 Planificació d'esdeveniments
 Funcions XML

Característiques distintives 
Les següents característiques són implementades únicament per MySQL:
 Múltiples motors d'emmagatzematge (MyISAM, Merge, InnoDB, BDB, Memory/heap, MySQL Cluster, Federated, Arxivi, CSV, Blackhole i Example en 5.x), permetent a l'usuari escollir la que sigui més adequada per a cada taula de la base de dades.
 Agrupació de transaccions, reunint múltiples transaccions de diverses connexions per incrementar el nombre de transaccions per segon.

Tipus de compilació del servidor 
Hi ha tres tipus de compilació del servidor MySQL:

 Estàndard: Els binaris estàndard de MySQL són els recomanats per a la majoria dels usuaris, i inclouen el motor d'emmagatzematge InnoDB.
 Max (No es tracta de MaxDB, que és una cooperació amb SAP): Els binaris inclouen característiques addicionals que no han estat el bastant provades o que normalment no són necessàries.
 MySQL-Debug: Són binaris que han estat compilats amb informació de depuració extra. No ha de ser usada en sistemes en producció perquè el codi de depuració pot reduir el rendiment.

Especificacions del codi font 
MySQL està escrit en una barreja de C i C++. Hi ha un document que descriu algunes de les seves estructures internes en http://dev.mysql.com/doc/internals/en/ (en anglès).

Desenvolupament del projecte 
El desenvolupament de MySQL es fonamenta en el treball dels desenvolupadors contractats per l'empresa MySQL AB els qui s'encarreguen de donar suport als socis comercials i usuaris de la comunitat MySQL i donar solució als problemes oposats pels usuaris. Els usuaris o membres de la comunitat MySQL poden reportar bugs revisant el manual en línia  que conté les solucions a problemes oposats; l'historial de canvis  ; la base de dades bugs  que conté bugs reportats i solucionats i en les llistes de correu MySQL .

A través de les llistes de correu els usuaris poden enviar preguntes i aquestes seran contestades per desenvolupadors brindant-los suport.

Altres funcionalitats de les llistes de correu 
 Anuncis: informen sobre noves versions de MySQL i programes relacionats.
 MySQL: llista principal de discussió de MySQL.
 Bugs: permet a la gent buscar i arreglar bugs.
 Temes interns: per a gent que treballa amb el codi de MySQL. És el fòrum per a discutir sobre el desenvolupament de MySQL.
 MySQLdoc: per a gent que treballa en documentació.
 Proves de rendiment: per a gent interessada en temes de rendiment no només de MySQL, sinó d'altres motors de bases de dades.
 Empaquetadores: per a discussions sobre empaquetamiento i distribució de MySQL.
 Java: discussions sobre MySQL Server i Java.

Altres llistes de correu són: MyODBC, Eines GUI, Cluster, Dotnet, PlusPlus i Perl.

Addicional a les llistes de correu, es troba el suport d'IRC de la comunitat MySQL. A més, hi ha suport a través de fòrums  agrupats en categories tals com: Migració, Ús de MySQL, Connectors MySQL, Tecnologia MySQL i Negocis.

Estructures organitzatives/associatives o de decisió 
L'adreça i el patrocini dels projectes MySQL estan a càrrec de l'empresa MySQL AB qui posseeix el copyrigth del codi font MySQL, el seu logo i marca registrada. MySQL, Inc. i MySQL GmbH són exemples d'empreses subsidiàries de MySQL AB. Estan establertes als Estats Units i Alemanya respectivament. MySQL AB, compta amb més de 200 empleats en més de 20 països i funcionen sota l'estratègia de teletreball.

Al gener del 2008 Sun Microsystems anuncia la seva compra.

Indústria relacionada 
La indústria radica en la venda de productes programari i d'alguns serveis relacionats a nombroses empreses que utilitzen aquests productes.

MySQL AB classifica els productes així:
 MySQL Enterprise: inclou MySQL Enterprise Server, Monitoreo de la xarxa MySQL, serveis de consulta i suport de producció MySQL 
 MySQL Cluster
 MySQL Embedded Database
 MySQL Drivers: per JDBC, ODBC i. Net
 MySQL Tools: MySQL Administrator, MySQL Query Browser, and the MySQL Migration Toolkit
 MaxDB: MaxDB és una base de dades de codi obert certificada per SAP/R3
Els ingressos d'aquesta empresa per la venda de llicències privatives dels seus productes i els serveis suma els O$12 milions.

Llicencia 
La llicència GNU GPL de MySQL obliga al fet que la distribució de qualsevol producte derivat (aplicació) es faci sota aquesta mateixa llicència. Si un desenvolupador desitja incorporar MySQL en el seu producte però desitja distribuir-ho sota una altra llicència que no sigui la GNU GPL, pot adquirir una llicència comercial de MySQL que li permet fer justament això.

Estat actual 
La sèrie en desenvolupament de MySQL Server actualment, és la 5.1 a la qual s'afegeixen noves característiques en relació a la sèrie 5.0. La sèrie de producció actual de MySQL és 5.0, la penúltima versió de la qual estable és la 5.0.26 llançada a l'octubre de 2006. Actualment, es pot descarregar la sèrie 5.0.27. La sèrie de producció anterior va ser la 4.1, la versió estable de la qual és 4.1.7 llançada a l'octubre de 2004. A aquestes versions de producció només s'arreglen problemes, és a dir, ja no s'afegeixen noves característiques. I a les versions anteriors solament se'ls corregeixen bugs crítics.

Usuaris destacats 
 Amazon.com
 Coix Communications - La quarta televisió per cable més important dels EUA, tenen més de 3.600 taules i aproximadament dos milions d'insercions cada hora.
 Craigslist
 CNET Networks
 Digg - Lloc de notícies.
 flickr, usa MySQL per gestionar milions de fotos i usuaris.
 Google - Per al motor de recerca de l'aplicació AdWords.
 Joomla!, amb milions d'usuaris.
 phpBB, Un dels més famosos llocs de fòrums, amb milers d'instal·lacions i amb milions d'usuaris.
 LiveJournal - Prop de 300 milions de pàgines servides cada dia.
 NASA
 NetQOS, usa MySQL per a la gestió d'algunes de les xarxes més grans del món com les de Chevron, American Express i Boeing.
 Nokia, usa un cluster MySQL per mantenir informació en temps real sobre usuaris de xarxes de mòbils.
 Omniture
 Sabre, i el seu sistema de reserva de viatges Travelocity
 Slashdot - amb prop de 50 milions de pàgines servides cada dia.
 Wikipedia, serveix més de 200 milions de consultes i 1,2 milions d'actualitzacions cada dia, amb pics d'11.000 consultes per segon.
 WordPress, amb centenars de blogs allotjats en ell.
 Yahoo! - per a moltes aplicacions crítiques.

Referències

Vegeu també 
 MariaDB
 PostgreSQL
 PHP
 Base de dades
 Bonsai cvs
 Appserv
 Firebird SQL
 phpMyAdmin
 BASAP

Enllaços externs 

 
 http://www.openoffice.org/  Inclou una interfície gràfica per a MySQL
 http://www.mysqldevelopment.com   MySQL development

Sistemes de gestió de bases de dades lliures
Sun Microsystems