MySQL

Un article de Wikipédia, l'encyclopédie libre.

(Redirigé depuis MySql)
Image:Mysql.gif
Développeur MySQL AB / Sun
Dernière version 5.0.51a (le 29 janvier 2008)
Version avancée 5.1.22rc (le 30 septembre 2007)
Environnement Multi-plateforme
Type Base de données relationnelle
Licences GPL et une licence propriétaire
Site web www.mysql.com
b:Accueil

Wikibooks propose un ouvrage abordant ce sujet : Découverte de MySQL, PostgreSQL et Oracle.

Une session Mysql dans une Konsole de KDE.
Une session Mysql dans une Konsole de KDE.

MySQL est un système de gestion de base de données. Selon le type d'application, sa licence est libre ou 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 ou Microsoft SQL Server.

MySQL AB a été acheté le 16 janvier 2008 par Sun Microsystems pour un milliard de dollars américains[1].

Sommaire

[modifier] Caractéristiques

MySQL est un serveur de 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 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 produit libre ou dans un produit propriétaire. Dans ce dernier cas, la licence est payante, sinon c'est LGPL qui s'applique. Ce type de licence double est utilisé par d'autres produits .

[modifier] Systèmes d'exploitation supportés

MySQL fonctionne sur de nombreux systèmes d'exploitation différents, incluant AIX, BSDi, FreeBSD, HP-UX, Linux, Mac OS X, NetWare, NetBSD, OpenBSD, OS/2 Warp, SGI Irix, Solaris, SunOS, SCO OpenServer, SCO UnixWare, Tru64 Unix, Windows 95, 98, NT, 2000, XP et Vista.

Les bases de données sont accessibles en utilisant les langages de programmation C, C++, C#, Delphi / Kylix, Eiffel, Java, Perl, PHP, Python, Ruby et Tcl ; une 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.

[modifier] Utilisation

MySQL fait partie du quatuor LAMP : Linux, Apache, MySQL, PHP. Le couple PHP/MySQL est très utilisé par les sites Web et proposé par la majorité des hébergeurs.

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), RATP, URSSAF, AFP, Reuters, BBC News, Leader Price, Système U, Cap Gemini, Ernst & Young, Alcatel-Lucent et d'autres[2].

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éclencheurs. 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.

[modifier] 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 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.

[modifier] Historique

David Axmark, fondateur de MySQL
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 ISAM qu'ils trouvaient trop lent et trop rigide. Ils ont créé une nouvelle interface SQL en gardant la même API que mSQL.

MySQL est passé en licence GPL à partir de la version 3.23.19 (juin 2000)

En 2003, MySQL AB et 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.

[modifier] 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 InnoBase (Racheté par Oracle le 7 octobre 2005). Il gère les transactions et les clefs étrangères. 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.
  • MEMORY (HEAP) : moteur où les tables sont stockées uniquement en mémoire.
  • CSV : moteur utilisant des fichiers textes (au format 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 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.

[modifier] Grappes de serveurs

Structure d'une grappe de serveurs MySQL.
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 réplication des données, c'est-à-dire que chaque nœud de la grappe possédera une copie de la base localement.

Un répartisseur de charge s'occupe d'adresser la requête au nœud le moins chargé de la grappe, il faut donc, au minimum, trois machines pour établir une solution de clustering MySQL. Si l'un des nœuds de la grappe ne répond plus, le répartisseur de charge n'enverra plus de requêtes vers celui-ci, la grappe pourra toujours fonctionner tant qu'au moins un nœud de la grappe sera toujours en état de marche.

Du point de vue des performances, le temps de traitement des opérations de récupération de données sera réduit mais lors d'une modification des données (une requête UPDATE par exemple), celle-ci se fera sur chacun des nœuds de la grappe, il n'y a donc aucun gain à ce niveau. De plus, étant donné que la base se trouve sur chaque élément, il faut n fois le nombre d'espace disque nécessaire pour stocker les données au total (n représentant le nombre de nœuds). L'ajout d'un nouveau nœud peut se faire sans avoir besoin de repartitionner la base.

Cette solution s'adapte donc à une grappe de serveurs disposant d'un petit nombre de nœuds et lorsque la disponibilité et la sécurité des données est un problème critique.

Cette technique de réplication des données est aussi utilisée sur PostgreSQL avec pgCluster.

[modifier] Voir aussi

[modifier] Articles connexes

  • PhpMyAdmin, outil d'administration de bases de données MySQL écrit en PHP.
  • XAMPP, ensemble de logiciels (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
Outils
  • 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

[modifier] Liens externes

Outils
  • MySQL Migration Toolkit, logiciel permettant de migrer une base de données vers une base de données MySQL.
  • MySQL Query Browser, interface graphique pour maintenir la base et y faire des requêtes.
  • MySQL Workbench, logiciel de conception et de modélisation de base de données.
  • eSKUeL, interface Web écrite en PHP pour l'administration d'une base de données MySQL.
  • MysqlFront, logiciel pour créer et éditer des tables SQL (Maintenant interdit par le moteur MySQL). Il a plusieurs clones : heidisql et SQLyog .

[modifier] Bibliographie

[modifier] Notes

Récupérée de « http://fr.wikipedia.org/wiki/MySQL »