MySQL

MySQL : système de gestion de bases de données relationnelles

  • Site web
  • Système : UNIX-like, Windows, MacOS X
  • Téléchargement
  • Version évaluée : V 5.1
  • Langue(s) de l'interface : français, anglais
  • Licence : gpl

    Il y a deux versions : “MySQL Community Server” avec une licence libre et “MySQL Entreprise Server” dont la licence est propriétaire. Cette fiche décrit la version libre “MySQL Community Server”.

Description
Fonctionnalités générales

MySQL est un système de gestion de base de données relationnelles (SGBDR) qui permet de spécifier et de gérer des données structurées suivant les principes de l’algèbre relationnelle. Pour en savoir plus sur la théorie des bases de données relationnelles, consultez les travaux de Edgar Frank Codd.

Ces points forts sont :

  • Rapide et robuste, performances élevées en lecture
  • Multi-threads, multi-utilisateurs
  • Souple d'utilisation, manuel d'utilisation en ligne
Autres fonctionnalités

L'activité autour de ce logiciel étant considérable, des fonctionnalités sont ajoutées à chaque nouvelle version. En voici les principales :

Système de privilèges : A partir de la version 3.22.11, les commandes "GRANT" et "REVOKE" ont été introduites pour permettre à l'administrateur système de créer et supprimer des comptes utilisateur et de leur donner ou retirer des droits. Après authentification, les utilisateurs se voient accorder des privilèges (ou droits), leur donnant accès :
- aux tables,
- aux routines (requête ou fonction stockée),
- aux champs de tables (ou colonne).

Transactions : A partir de la version 3.23, les commandes "BEGIN", "COMMIT" et "ROLLBACK" ont été introduites pour assurer le bon fonctionnement des requêtes. Cette prise en charge des transactions permet d'annuler les modifications faites si ces dernières ne sont pas satisfaisantes ou si elles ne se sont pas bien déroulées. Cette prise en charge est indispensable dans le cas de bases de données financières. Attention, elles ne fonctionnent que sur des tables de type "innoDB".

Contraintes d'intégrité : la contrainte "clef primaire" est native par contre la contrainte "clef étrangère" nécessite un moteur de type innoDB.

Sous-requêtes : Depuis la version 4.1, MySQL supporte les sous-requêtes qui sont des requêtes imbriquées, (un "SELECT" à l'intérieur d'un autre "SELECT").

MySQL offre différents moteurs de persistance (développés par Sun/MySQL ou autres :Oracle/InnoDB, IBM, …). L’utilisation de ces moteurs peut se faire par table et on peut ‘mélanger’ ces technologies dans un schéma.

Interopérabilité

MySQL est souvent utilisé en conjonction avec des langages de scripts et programmes CGI dans les applications WEB.

Les langages tel que PHP et PERL ont des interfaces génériques permettant de converser avec des serveurs de bases de données supportant le standard SQL. Il existe des pilotes de base de données (DataBase Driver : DBD) permettant de communiquer avec le serveur de bases de données qu'on utilise. De cette manière, on peut écrire un programme avec des requêtes SQL standards et tout ce qu'il faut faire pour qu'il marche avec MySQL ou un autre SGBD est d'installer le pilote de base de données correspondant.

Il existe également des programmes passerelles pour traduire une base de données d'un tel type vers un autre et vice versa. Par exemple une base de données Oracle vers MySQL.

Des API de persistance de données permettent un niveau d'abstraction supérieur (exemple : Hibernate en Java et dbagen en C++) sous forme d'un schéma XML pour réaliser une traduction entre la représentation relationnelle et la représentation objet des données.

Contexte d'utilisation dans mon laboratoire/service

MySQL est le SGBD le plus utilisé pour les sites web dynamiques et en particulier par les CMS (SPIP, Joomla , ...). Il est utilisé par Drupal, CMS avec lequel ce site est construit. Marten Mickos, le vice-président de Sun Microsystems et l'ancien exécutif en chef de MySQL AB a estimé en Janvier 2008, qu'il y a 12 millions de sites WEB qui utilisent MySQL.

MySQL est utilisé par exemple au LAAS/CNRS dans de nombreux projets comme STM (Source de Trafic et Métrologie), EMET (Pilotage d'injecteur de trafic).

Limitations, difficultés, fonctionnalités importantes non couvertes

On note de nombreux documents comparatifs citant les avantages et inconvénients de MySQL par rapport à PostgreSQL :
- http://www.siteduzero.com/tutoriel-3-31600-mysql-e...
- http://www.phpindex.com/index.php/2007/10/30/3896-...

Il y a également quelques restrictions dans MySQL par rapport à d'autres SGBD comme Oracle, telles que :

  • Restrictions par rapport aux procédure stockées, aux déclencheurs, et aux évènements
  • Restrictions sur les sous-requêtes
  • Restrictions sur les vues
  • Restrictions sur les transactions XA
  • Restrictions sur les jeux de caractères

Néanmoins ces restrictions sont minimes et ne posent pas de problème dans un contexte habituel, quand l'application est écrite dès le début en MySQL. Il faut être prudent quand on convertit une application d'un autre SGBD vers MySQL.

MySQL inclut des extensions qui ne respectent pas les normes SQL-92. Si on utilise ces extensions, le code ne sera pas compatible avec d'autres serveurs de bases de données. Voir http://dev.mysql.com/doc/refman/5.0/fr/differences...

Limitations dans MySQL :

  • Le nombre maximum de tables qui peuvent être référencées dans un même "join" est 61
  • Le nombre maximum de colonnes par table est 4096

MySQL est mis à jour régulièrement et ses restrictions et limitations diminuent chaque fois.

Environnement du logiciel
Distributions dans lesquelles ce logiciel est intégré

MySQL fait partie d'un grand nombre de produits intégrés de type LAMP ou WAMP et en particulier
easyPHP (Environnement de développement Apache/PHP/MySQL/PHPMyAdmin) et toutes les distributions Linux

Plates-formes

MySQL fonctionne sur de nombreuses plateformes : Windows, Linux, Mac OS X, et de nombreux types d'UNIX.
Quelle que soit la plate-forme, MySQL est souvent associé à Apache et PHP (LAMP, WAMP...)
Voir la page de téléchargement : http://dev.mysql.com/downloads/mysql/5.0.html#downloads

Logiciels connexes

ODBC (Open DataBase Connectivity) : une API qui permet aux logiciels du monde Microsoft de communiquer avec MySQL
JDBC (Java DataBase Connectivity) : une API qui permet aux programmes Java de communiquer avec MySQL
PHPMyAdmin : un outil écrit en PHP pour effectuer la gestion d’un SGBD MySQL à travers une interface Web (cf la fiche plume du produit)
SQLYog : un outil Windows, concurrent à PHPMyAdmin, pour effectuer la gestion d'un SGBD MySQL.
MySQL Workbench : un logiciel pour concevoir, générer et gérer visuellement tous les types de bases de données
Hibernate, dbagen : des API de persistances de données

Autres logiciels aux fonctionnalités équivalentes
  • PostgreSQL,
  • Microsoft SQL Server,
  • Microsoft Access,
  • Oracle,
  • DB2,
  • Sybase...
Environnement de développement
Type de structure associée au développement

MySQL est l'œuvre d'une société suédoise, MySQL AB, fondée par David Axmark, Allan Larsson et Michael Widenius.

MySQL AB a été acheté le 16 janvier 2008 par Sun Microsystems et en 2009, Sun Microsystems a été acquis par Oracle Corporation, mettant entre les mains d'une même société les deux produits concurrents que sont Oracle Database et MySQL (Ce rachat a été autorisé par l'Union européenne le 21 janvier 2010).

Depuis mai 2009, Michael Widenius a créé MariaDB pour continuer son développement en tant que projet Open Source.

A suivre ...

Eléments de pérennité

Avec 12 millions de sites WEB utilisant MySQL, la question de sa pérennité ne devrait pas se poser !

Depuis le 28 novembre 2008, la release 5.1 (version 5.1.30) est la version de production officielle, MariaDB se base sur le code source de MySQL 5.1.

A suivre ...

Environnement utilisateur
Liste de diffusion ou de discussion, support et forums

Des listes de discussion pour MySQL peuvent être trouvées ici : http://dev.mysql.com/doc/refman/5.0/fr/mailing-lis...
Forum francophone :http://www.lemug.fr
Forum anglophone : http://forums.devshed.com/ms-sql-development-95

Documentation utilisateur

Manuel utilisateur (version anglaise) : http://dev.mysql.com/doc/refman/5.0/en/index.html
Manuel utilisateur (version francaise) : http://dev.mysql.com/doc/refman/5.0/fr/index.htm

Commentaires

Protocole disponible via le Groupe Logiciel

A noter que le Groupe Logiciel propose un protocole https://www.projet-plume.org/ressource/protocoles-....