MySQL

système de gestion de base de données SQL
Ceci est une version archivée de cette page, en date du 12 février 2008 à 18:01 et modifiée en dernier par GML (discuter | contributions). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

Modèle:Wikilivres

MySQL
[[Fichier:Fichier:Mysql.gif |frameless |upright=0.55 |alt=Description de l'image Fichier:Mysql.gif. ]]
Description de l'image Mysql-screenshot.PNG.
Informations
Développé par MySQL AB / Sun
Première version Voir et modifier les données sur Wikidata
Dernière version 5.0.51a ()
Version avancée 5.1.22rc ()
Dépôt github.com/mysql/mysql-serverVoir et modifier les données sur Wikidata
Écrit en C++ et CVoir et modifier les données sur Wikidata
Système d'exploitation Type Unix, Microsoft Windows, FreeBSD, Solaris, Linux et macOSVoir et modifier les données sur Wikidata
Environnement Multiplate-forme
Formats lus MySQL Table Definition Format (d) et MySQL View Definition Format (d)Voir et modifier les données sur Wikidata
Formats écrits MySQL Table Definition Format (d) et MySQL View Definition Format (d)Voir et modifier les données sur Wikidata
Typ Base de données relationnelle
Licences GPL et une licence propriétaire
Seite web www.mysql.com


Fichier:Mysql.png
Une session Mysql dans une Konsole de Linux KDE.

MySQL est un gestionnaire de base de données libre. Il est très utilisé dans les projets libres et dans le milieu industriel. MySQL AB a été acheté le 16 janvier 2008 par Sun Microsystems au coût de 1 milliard de dollars américains[1].

Caractéristiques

MySQL est un serveur de bases de données relationnelles SQL développé dans un souci de performances élevées. Il est multi-thread, 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 (open-source) ou dans un produit propriétaire. Dans ce dernier cas, la licence est payante, sinon elle est libre.

Systèmes supportés

MySQL fonctionne sur beaucoup de plates-formes différentes, 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.

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 tels que YouTube ou Adobe utilisent MySQL.

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.

Historique

 
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.

Moteurs de base de données inclus

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 fournis 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) : Network DataBase. Moteur de base de données réseau gérant le clustering.
  • 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.

Clustering

 
Structure d'un cluster MySQL.

MySQL propose une solution de clustering depuis sa version 4.1 grâce au moteur de stockage NDB.

Sa structure se base 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 va s'occuper de faire 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 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 que au moins un nœud de la grappe sera toujours en état de marche.

Au niveau 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 re-partitionner la base.

Cette solution s'adapte donc à un cluster 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.

Voir aussi

Outils associés à MySQL

Produits de MySQL AB

  • MySQL administrator, logiciel d'administration de bases de données.
  • MySQL Query Browser[2]; interface graphique pour maintenir la base et y faire des requêtes.
  • MySQL Workbench[3], logiciel de conception et de modélisation de base de données.
  • MySQL Migration Toolkit[4], logiciel permettant de migrer votre base de données vers votre base de données MySQL.

Autres produits

Liens externes

Bibliographie

Notes