MySQL
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
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.
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.
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).
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.
Commentaires
Protocole disponible via le Groupe Logiciel
A noter que le Groupe Logiciel propose un protocole https://www.projet-plume.org/ressource/protocoles-....