MySQL 7022 31769561 2008-07-21T18:22:40Z David Berardan 26481 Correction des [[Projet:Liens vers les pages d'homonymie|liens vers les pages d'homonymie]] {{Infobox Logiciel | logo = [[Image:Mysql.gif]] | développeur = [[MySQL AB]] / [[Sun Microsystems|Sun]] | dernière version = 5.0.51b | date de dernière version = {{Date|24|avril|2008|en informatique}} | version avancée = 5.1.26rc | date de version avancée = {{Date|14|juillet|2008|en informatique}} | environnements = [[Multiplate-forme]] | type = [[Base de données relationnelle]] | licences = [[Licence publique générale GNU|GNU GPL]] et une licence propriétaire | site web = [http://www.mysql.com/ www.mysql.com] }} {{wikilivres|Découverte de MySQL, PostgreSQL et Oracle|Découverte de MySQL, PostgreSQL et Oracle}} [[Image:Mysql.png|thumb|408px|right|Une session MySQL dans une [[Konsole]] de [[KDE]].]] '''MySQL''' est un [[système de gestion de base de données]] (SGDB). Selon le type d'application, sa licence est [[logiciel libre|libre]] ou [[logiciel propriétaire|propriétaire]]. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels, au même titre que [[Oracle (base de données)|Oracle]] ou [[Microsoft SQL Server]]. MySQL AB a été acheté le {{date|16|janvier|2008|en informatique}} par [[Sun Microsystems]] pour un milliard de dollars US<ref>{{en}} [http://blogs.mysql.com/kaj/2008/01/16/sun-acquires-mysql/ ''Sun acquires MySQL], blogs.mysql.com</ref>. == Caractéristiques == MySQL est un serveur de [[base de données relationnelle|bases de données relationnelles]] [[SQL]] développé dans un souci de performances élevées en lecture, ce qui signifie qu'il est davantage orienté vers le service de données déjà en place que vers celui de mises à jour fréquentes et fortement sécurisées. Il est [[processus léger|multi-thread]] et multi-utilisateurs. C'est un [[logiciel libre]] développé sous double licence en fonction de l'utilisation qui en est faite : dans un [[logiciel libre|produit libre]] ou dans un produit propriétaire. Dans ce dernier cas, la licence est payante, sinon c'est la [[licence publique générale GNU|GPL]] qui s'applique. Ce type de licence double est utilisé par d'autres produits . == Systèmes d'exploitation supportés == MySQL fonctionne sur de nombreux [[système d'exploitation|systèmes d'exploitation]] différents, incluant [[AIX]], [[BSDi]], [[FreeBSD]], [[HP-UX]], [[Linux]], [[Mac OS X]], [[Novell NetWare|NetWare]], [[NetBSD]], [[OpenBSD]], [[OS/2]] Warp, [[SGI]] [[Irix]], [[solaris (informatique)|Solaris]], [[SunOS]], [[SCO]] [[OpenServer]], SCO [[UnixWare]], [[Tru64]] Unix, [[Microsoft Windows|Windows]] 95, 98, NT, 2000, XP et Vista. Les bases de données sont accessibles en utilisant les [[langages de programmation]] [[C (langage)|C]], [[C++]], [[C sharp|C#]], [[Delphi (langage)|Delphi / Kylix]], [[Eiffel (langage)|Eiffel]], [[Java (langage)|Java]], [[Perl (langage)|Perl]], [[PHP: Hypertext Preprocessor|PHP]], [[Python (langage)|Python]], [[Ruby]] et [[Tool Command Language|Tcl]] ; une [[Application Programming Interface|API]] spécifique est disponible pour chacun d'entre eux. Une interface [[ODBC]] appelée [[MyODBC]] est aussi disponible. En Java, MySQL peut être utilisé de façon transparente avec le standard [[JDO]]. Depuis le rachat de MySQL AB par [[Sun]], MySQL est devenu officieusement la base de données à utiliser conjointement avec le language de programmation [[Java (langage)|Java]], ce qui donne une notoriété supplémentaire au SGDB auprès des entreprises utilisant Java. == Utilisation == MySQL fait partie du quatuor [[LAMP]] : [[Linux]], [[Apache HTTP Server|Apache]], MySQL, [[PHP: Hypertext Preprocessor|PHP]]. Le couple PHP/MySQL est très utilisé par les [[site web|sites web]] et proposé par la majorité des hébergeurs. Plus de la moitié des sites web fonctionennt sous Apache <ref>http://fr.wikipedia.org/wiki/Apache_HTTP_Server#Historique</ref>, qui est le plus souvent utilisé conjointement avec PHP et MySQL. [[Wikipédia]] ainsi que de nombreuses autres entreprises et services utilisent MySQL, tels que [[Google]], [[Yahoo!]], [[YouTube]], [[Adobe]], [[Airbus]], [[Alstom]], [[Crédit agricole]], Linden Lab (''[[Second Life]]''), [[Régie autonome des transports parisiens|RATP]], [[Union de recouvrement des cotisations de sécurité sociale et d'allocations familiales|URSSAF]], [[Agence France-Presse|AFP]], [[Reuters]], [[BBC News]], [[Leader Price]], [[Système U]], [[Cap Gemini]], [[Ernst & Young]], [[Alcatel]]-[[Lucent]] et d'autres<ref>{{en}} [http://www.mysql.com/customers/ MySQL :: MySQL Customers by Industry<!-- Titre généré automatiquement -->]</ref>. MySQL étant récent, il grossit au fil de ses versions. Depuis la version 5, il est possible d'utiliser le PL/SQL originairement développé par Oracle afin d'utiliser des procédures et fonctions stockées ainsi que des [[déclencheur]]s. Par ailleurs, MySQL supporte la norme SQL2 (utilisation des JOIN), ce qui fait de lui un SGBD sûr puisque la conformité à cette norme garantira sa compatibilité avec les requêtes normalisées. Son absence de support des transactions et d'une gestion de l'intégrité des tables automatique (sauf en utilisant certains moteurs comme InnoBD) ne lui permet pas d'être utilisée dans des applications à données particulièrement sensibles comme, par exemple, dans les sociétés bancaires, cependant, ses performances étant généralement plus importantes que la majorité des autres systèmes concurrents, et son prix d'implantation nettement inférieur, lui permet d'obtenir un certain succès auprès des entreprises ayant besoin d'une base de données peu onéreuse et/ou performante. == Dénomination == MySQL est l'œuvre d'une société suédoise, MySQL AB, fondée par [[David Axmark]], [[Allan Larsson]] et [[Michael Widenius]]. Le nom MySQL vient de leur habitude à préfixer par « My » une grande partie de leurs dossiers, bibliothèques et outils. La fille de Michael Widenius était surnommée « My ». Le nom du [[Logotype|logo]] de MySQL (le [[dauphin]]) [[Sakila]], a été choisi par les créateurs de MySQL sur la base d'un concours. Il a été proposé par Ambrose Twebaze, développeur du [[Swaziland]]. D'après Ambrose, le nom Sakila puise ses origines du [[siswati]], la langue locale du Swaziland. == Historique == [[Image:David Axmark.jpg|thumb|David Axmark, fondateur de MySQL]] La première version de MySQL est apparue le [[23 mai]] [[1995]]. Il a d'abord été créé pour un usage personnel à partir de [[mSQL]] en s'appuyant sur le langage de bas niveau [[Indexed Sequential Access Method|ISAM]] qu'ils trouvaient trop lent et trop rigide. Ils ont créé une nouvelle interface [[SQL]] en gardant la même [[Application programming interface|API]] que [[mSQL]]. MySQL est passé en [[Licence publique générale GNU|licence GPL]] à partir de la version 3.23.19 ([[juin 2000]]) * Version 4.0 : première version en [[octobre 2001]], [[Version d'un logiciel#Version stable|stable]] depuis [[mars 2003]] * Version 4.1 : première version en [[avril 2003]], stable depuis [[octobre 2004]] * Version 5.0 : première version en [[décembre 2003]], stable depuis [[octobre 2005]] * Version 5.1 : première version en [[novembre 2005]], [[Version d'un logiciel#Release candidate (RC) ou pre-release|Release Candidate]] distribuée depuis [[septembre 2007]] * Version 5.2 : distribuée en avant-première (ajout du nouveau moteur de stockage ''Falcon'') en [[février 2007]], cette ligne a ensuite été renommée 6.0 * Version 6.0 : première version [[Version d'un logiciel#Version alpha|alpha]] en avril 2007 En [[2003]], MySQL AB et [[SAP AG|SAP]] concluent un accord. Le résultat s’appellera [[MaxDB]]. Il est issu de l'intégration du système de SAP (SAP DB) dans MySQL. == Moteurs de base de données inclus == L'une des spécificités de MySQL est de pouvoir gérer plusieurs moteurs au sein d'une seule base. Chaque table peut utiliser un moteur différent au sein d'une base. Ceci afin d'optimiser l'utilisation de chaque table. Voici les différents moteurs que MySQL gère : *'''MyISAM''' : moteur par défaut de MySQL. Il est le plus simple à utiliser et à mettre en œuvre. Il utilise plusieurs fichiers qui grandissent au fur et à mesure que la base grossit. Il ne supporte pas les transactions, ni les clefs étrangères. *'''InnoDB''' : moteur créé et maintenu par [http://www.innodb.com InnoBase] (Racheté par Oracle le 7 octobre 2005). Il gère les [[Transaction informatique|transactions]] et les [[Clé étrangère|clefs étrangères]] (et donc une gestion d'intégrité de table). En contrepartie, les bases qui l'utilisent occupent bien plus d'espace sur le disque. *'''BerkeleyDB (BDB)''' : moteur fourni par [[Sleepycat Software]] qui gère les transactions. *'''MERGE''' : moteur fait pour fusionner plusieurs tables qui doivent être identiques. *'''ARCHIVE''' : moteur adapté à l'archivage de données. Les lignes sont compressées au fur et à mesure de leur insertion. Les requêtes de recherches sont alors sensiblement plus lentes. *'''MEMORY (HEAP)''' : moteur où les tables sont stockées uniquement en mémoire. La structure de la base est stockée sur le disque dur mais les données sont stockées dans la [[ram]], si la machine serveur redémarre, les données seront perdues. Cependant, étant donné qu'il n'y a plus d'acces disque, une requête de modification (UPDATE, INSERT, ...) s'exécutera sensiblement plus rapidement. *'''CSV''' : moteur utilisant des fichiers textes (au format [[Comma-separated values|CSV]]) comme stockage. *'''BLACKHOLE''' : moteur réceptionnant les données, les transférant mais ne les stockant pas. Il peut être utilisé comme répéteur ou comme filtre de données. *'''ISAM''' : moteur d'origine de MySQL, maintenant obsolète et remplacé par MyISAM. Il est resté pour des raisons de compatibilité. *'''NDB''' (uniquement dans la version [[MaxDB]]) : moteur de base de données réseau gérant les [[grappe de serveurs|grappes de serveurs]]. *'''FEDERATED''' : moteur permettant d'accéder à des tables d'une base de données distantes plutôt que dans les fichiers locaux. *'''EXEMPLE''' : moteur fictif et inutilisable, mis à disposition pour les développeurs. *'''FALCON''' : ce nouveau moteur devrait faire son apparition avec MySQL 6. Depuis le rachat de InnoBase par [[Oracle]], MySQL AB s'est vu obligé de créer un nouveau moteur transactionnel pour ne plus dépendre de son concurent. Il devrait remplacer petit à petit InnoBD. La facilité d'utilisation de plusieurs moteurs de stockage dans une seule base avec MySQL permet une énorme flexibilité dans l'optimisation de la base : on utilisera MyISAM pour stocker les données peu sensibles et nécéssitant un acces rapide aux données (par exemple une liste d'utilisateurs), InnoBD pour les fonctions avancées et les données plus sensibles (par exemple pour une liste des transactions banquaires), MEMORY pour des données pouvant être perdues lors du redémarrage de la machine et souvent modifiées (par exemple une liste d'utilisateurs en ligne), ARCHIVE pour un historique (ou log) ne néssitant que peu de lecture, ... == Grappes de serveurs == [[Image:Clustering mysql.png|thumb|250px|left|Structure d'une grappe de serveurs MySQL.]]MySQL est capable de communiquer avec une [[grappe de serveurs]] depuis sa version 4.1 grâce au moteur de stockage NDB. Sa structure repose sur la [[duplication et le partitionnement]] des données, c'est-à-dire que chaque nœud fera partie d'un groupe de noeud qui possédera la totalité de la base. Un protocole implementé dans chaque noeud s'occupe d'adresser chaque transaction aux differents nœuds concernés dans la grappe, il faut un minimum de 3 machines pour établir une solution de ''clustering'' MySQL car une machine externe doit gérer les scénarios de coupure réseau et décider des noeuds qui doivent rester vivants . Si l'un des nœuds de la grappe ne répond plus, la copie passive des données d'un autre noeud est utilisée. Du point de vue des performances, le temps de traitement des opérations de récupération de données sera augmenté de la latence introduite par le réseau mais permet malgré tout une augmentation de la charge lié a la répartition des traitements sur les differents noeuds. Lors d'une modification des données (une requête UPDATE par exemple), celle-ci sera effectuée de manière synchrone (2PC) sur chacun des nœuds possédant le même fragment de donnée, il y'a donc des pertes proportionelles à la latence du réseau mais de gros gains de charge en écriture car celle ci sont partitionnées sur plusieurs groupes de nœud. L'ajout d'un nouveau nœud peut se faire sans avoir besoin de repartitionner la base. Le redémarrage d'un nœud peut se faire sans arrêt de la base. Cette solution s'adapte parfaitement lorsque la disponibilité et la sécurité des données est un problème critique et que l'on recherche un partionnement technique en charge d'écriture. Couplé a des fonctionalités temps réel et a une API de programmation asynchrone NDB Cluster s'adresse principalement aux exigences du marché des télécomunications. == Voir aussi == === Articles connexes === * [[XAMPP]], ensemble de logiciels ([[Apache HTTP Server|Apache]], MySQL, [[Perl]], [[PHP]]) permettant une mise en oeuvre rapide d'un site Web, ensemble proposé sous [[GPL]] aussi bien pour [[Linux]] que pour [[Windows]] * [[EasyPHP]], ensemble de logiciels ([[Apache HTTP Server|Apache]], MySQL, [[PHP]], [[PhpMyAdmin]]) permettant une mise en oeuvre rapide d'un site web, sous [[Windows]] ; Outils * [[PhpMyAdmin]], outil d'administration de bases de données MySQL écrit en PHP. * [[MySQL administrator]], logiciel d'administration de bases de données. * [[Dbdesigner]], système de conception de base de données sous forme graphique qui intègre tous les niveaux de conception, de modification, de création et de maintenance sur la structure d'une base de données === Liens externes === * Site officiel : {{en}} [http://www.mysql.com/], {{fr}} [http://www-fr.mysql.com/] * [http://www.visolve.com/database/MySQL_HPUX_Perf.pdf MySQL Performance] * {{fr}} {{dmoz|MySQL|http://www.dmoz.org/World/Fran%c3%a7ais/Informatique/Logiciels/Outils_de_d%c3%a9veloppement/Bases_de_donn%c3%a9es/MySQL/}} * {{fr}} [http://mysql.developpez.com/ Club d'entraide des développeurs francophones] ; Outils * [http://www.mysql.fr/products/tools/migration-toolkit/ MySQL Migration Toolkit], logiciel permettant de migrer une base de données vers une base de données MySQL. * [http://dev.mysql.com/downloads/query-browser/1.1.html MySQL Query Browser], interface graphique pour maintenir la base et y faire des requêtes. * [http://dev.mysql.com/downloads/workbench/1.0.html MySQL Workbench], logiciel de conception et de modélisation de base de données. === Bibliographie === * Paul Dubois, Stefan Hinz, Carsten Pedersen ([[2004]]), ''MySQL - Guide officiel'' {{ISBN|2-7440-1782-5}} * Michael Kofler ([[2005]]), ''MySQL 5 : Guide de l'administrateur et du développeur'' {{ISBN|2212116330}} == Notes == {{Références}} {{Systèmes de gestion de base de données}} {{Portail|Logiciels libres|Bases de données|Informatique}} [[Catégorie:Système de gestion de base de données libre]] [[ar:ماي إس كيو إل]] [[bg:MySQL]] [[bs:MySQL]] [[ca:MySQL]] [[cs:MySQL]] [[da:MySQL]] [[de:MySQL]] [[en:MySQL]] [[eo:MySQL]] [[es:MySQL]] [[et:MySQL]] [[eu:MySQL]] [[fa:مای‌اس‌کیوال]] [[fi:MySQL]] [[ga:MySQL]] [[gl:MySQL]] [[he:MySQL]] [[hr:MySQL]] [[hu:MySQL]] [[id:MySQL]] [[it:MySQL]] [[ja:MySQL]] [[ko:MySQL]] [[ku:MySQL]] [[lt:MySQL]] [[lv:MySQL]] [[mk:MySQL]] [[ms:MySQL]] [[nl:MySQL]] [[no:MySQL]] [[pl:MySQL]] [[pt:MySQL]] [[ro:MySQL]] [[ru:MySQL]] [[simple:MySQL]] [[sk:MySQL]] [[sl:MySQL]] [[sr:MySQL]] [[sv:MySQL]] [[th:MySQL]] [[tr:MySQL]] [[uk:MySQL]] [[vi:MySQL]] [[zh:MySQL]]