MySql

MySql

MySQL

MySQL
Mysql.gif

Apparu en 1995
Développeur MySQL AB / Sun Microsystems
Dernière version 5.1.39 (le 21 septembre 2009) [+/−]
Version en développement 6.0.11-alpha / 5.4.1-beta (le 22 mai 2009 / 22 juin 2009) [+/−]
Système d'exploitation Windows (95, 98, NT, 2000, XP et Vista), Linux, Mac OS X, et d'autres (voir plus bas)
Licence Licence publique générale GNU ou licence propriétaire (voir Caractéristiques)
Site Web mysql.com/

Wikibooks-logo-fr.png

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

Une session MySQL dans une Konsole de KDE.

MySQL est un système de gestion de base de données (SGBD). 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, en concurrence avec Oracle ou Microsoft SQL Server.


MySQL AB a été acheté le 16 janvier 2008 par Sun Microsystems pour un milliard USD[1]. 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 et MySQL.

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


Sommaire

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 la GPL qui s'applique. Ce type de licence double est utilisé par d'autres produits comme le framework de développement d'applications Qt (pour les versions antérieures à la 4.5).

Systèmes d'exploitation supportés

MySQL fonctionne sur de nombreux systèmes d'exploitation différents, incluant AIX, IBM i-5, 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++,VB,VB .NET, 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.

Depuis le rachat de MySQL AB par Sun Microsystems, MySQL est devenu officieusement la base de données à utiliser conjointement avec le langage de programmation 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, MySQL, PHP. Il appartient également à ses variantes WAMP (Windows) et MAMP (Mac).

Le couple PHP/MySQL est très utilisé par les sites Web et proposé par la majorité des hébergeurs. Plus de la moitié des sites web fonctionnent sous Apache[2], qui est le plus souvent utilisé conjointement avec PHP et MySQL.

Wikipédia utilise MySQL, ainsi que de nombreuses entreprises, dont Google, Yahoo!, YouTube, Adobe, Airbus, Alstom, Crédit agricole, Linden Lab (Second Life), RATP, URSSAF, AFP, Reuters, BBC News, Leader Price, Système U, Capgemini, Ernst & Young, Alcatel-Lucent...[3].

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.

Son absence par défaut de support des transactions et de l'intégrité automatique des tables (sauf en utilisant certains moteurs comme InnoDB) rendent son adoption plus compliquée par exemple dans les sociétés bancaires, cependant, ses performances étant généralement meilleures 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.

L'intérêt d'utiliser les outils du www en remplacement du client serveur 2 ou 3 tiers, a poussé certaines banques telles que le Crédit mutuel, le Crédit agricole, le LCL, la Banque de développement du Canada à proposer MySQL au catalogue de leurs produits informatiques internes.

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.

Le 20 avril 2009, Oracle Corporation annonce racheter Sun Microsystems pour 7,4 milliards de dollars[4], créant la crainte de voir MySQL disparaître - ou du moins ne plus être développé - au profit d'Oracle, le SGBD d'Oracle Corporation. MySQL est cependant loin d'avoir toutes les fonctionnalités d'Oracle, et pourrait donc être vu au contraire par la société comme un produit gratuit d'appel banalisant l'usage de SQL et préparant donc ses futures ventes.

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 historiques de MySQL  :

  • 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 (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'accès disque, une requête de modification (UPDATE, INSERT...) s'exécutera sensiblement plus rapidement.
  • 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.
  • 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 concurrent. Il devrait remplacer petit à petit InnoDB.
  • MARIA : evolution ACID de MyISAM

Des moteurs de stockages OPEN Source :

  • Infobright : Moteur VLDB
  • Sphinx : Moteur orienté recherche full text
  • PBXT : Moteur transactionnel proche des performance d'InnoDB
  • Memcached : Moteur orienté table de hash en mémoire
  • M4q : Moteur orienté gestion de file d'attente

Des moteurs de stockages commerciaux :

  • DB2 Moteur transactionnel copyright IBM
  • SolidDB Moteur transactionnel copyright IBM
  • NitroEDB Moteur VLDB copyright BrightHouse
  • Tokutek Moteur VLDB

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écessitant un accès 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 bancaires), 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écessitant que peu de lecture, ...

Grappes de serveurs

Deux méthodes existent pour répartir la charge sur un ensemble de machines fonctionnant sous MySQL Server. Ces méthodes permettent d'assurer une redondance (si une machine tombe en panne, d'autres peuvent prendre la relève), d'améliorer la rapidité des recherches (SELECT) ou encore d'établir une machine dédiée à la sauvegarde des données

Réplication

Réplication sous MySQL

MySQL est capable, depuis la version 3.23.15 d'utiliser un système de réplication à sens unique relativement simple à mettre en place : un serveur maître contient la base de données source et va recevoir l'ensemble des modifications, et un serveur esclave qui contient une base à structure identique et qui va se connecter au serveur maître pour aller chercher les nouvelles modifications et mettre à jour ses bases. Un maître ne peut avoir qu'un seul esclave, mais cependant un esclave peut devenir à son tour maître pour un autre serveur esclave, réalisant ainsi une chaîne de réplication[5].

Toutes les modifications (UPDATE, DELETE, INSERT, ...) doivent êtres envoyées au serveur maître et seront automatiquement répercutées sur ses esclaves, mais les requêtes de recherche (SELECT), souvent plus nombreuses et plus gourmandes en ressources pourront être effectuées sur un ou plusieurs esclaves. Comme les requêtes de modifications doivent être redirigées sur le serveur maître, la conception de l'application doit s'adapter à l'architecture : le programmeur va ouvrir deux connexions dans son programme, une sur le serveur maître, sur lequel il exécutera toutes ses modifications et une sur le serveur esclave sur lequel il exécutera toutes ses recherches.

Ce système ne permet cependant qu'une redondance limitée :

  • Si le serveur maître tombe en panne, son esclave peut prendre le relais, mais il est nécessaire au programmeur de mettre à jour son programme pour charger le serveur qui va recevoir les modifications, ou de programmer une liste de redondance pour changer de maître automatiquement.
  • Si le serveur esclave cesse de fonctionner, l'ensemble des requêtes devront être envoyées au serveur maître.
  • Si l'architecture comporte plus de 2 nœuds, et dans le cas où un serveur intermédiaire à la chaîne (qui est esclave et à la fois maître) tombe en panne, le serveur esclave devra être reconfiguré pour se répliquer sur le serveur maître du serveur tombé en panne.

Dans la plupart des cas, il faudra une action de l'administrateur pour rétablir l'ordre, et l'application cessera de fonctionner durant ce laps de temps. L'intérêt de cette solution apparaît alors dans la gestion des sauvegardes, car l'application n'utilisant que le serveur maître, elle ne sera pas stoppée si le serveur esclave de sauvegardes tombe en panne, mais une sauvegarde de la base sera disponible dans le cas où le serveur maître tombe en panne.

Si l'on souhaite rajouter un nœud, il faut le placer au bout de la chaîne en tant qu'esclave et modifier l'application pour gérer ce nouveau nœud.

Du point de vue de MySQL, chaque nœud est géré indépendamment, c'est donc au programmeur de devoir gérer la répartition de la charge.

MySQL Cluster

Structure d'une grappe de serveurs MySQL.

MySQL est capable, depuis la version 4.1 et grâce au moteur de stockage NDB de gérer une grappe de serveurs complète. Sa structure repose sur la duplication données, c'est-à-dire que chaque nœud fera partie d'un groupe de nœud qui posséderont tous la totalité de la base[6].

Un protocole implémenté dans chaque nœud s'occupe d'adresser chaque transaction aux différents nœuds concernés dans la grappe, il faut un minimum de 2 machines pour établir une solution de clustering MySQL et une machine (qui peut elle-même intégrer un serveur MySQL) qui va jouer le rôle de répartiteur de charge en redirigeant les requêtes sur les nœuds disponibles et les moins occupés.

Les requêtes de recherches (SELECT) seront plus rapides, mais lors d'une modification des données (une requête UPDATE, DELETE ou INSERT par exemple), celle-ci sera effectuée sur l'ensemble des nœuds, ce qui bloquera l'ensemble grappe pendant cette opération.

Par rapport à un système de réplication, la redondance est améliorée : si un nœud tombe en panne, sa charge est automatiquement reprise par les autres nœuds.

L'ajout d'un nouveau nœud peut se faire sans avoir besoin de repartitionner la base, il suffit de le faire reconnaître par la grappe et le redémarrage d'un nœud peut se faire sans avoir à redémarrer la grappe.

Du point de vue de MySQL, chaque nœud fait partie d'un ensemble qui pourrait être reconnue comme une seule machine. Pour le programmeur, il doit programmer son application pour communiquer avec le répartiteur de charge.

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 fonctionnalités temps réel et a une API de programmation asynchrone NDB Cluster s'adresse principalement aux exigences du marché des télécommunications.

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 et références

Voir aussi

Wikibooks-logo-fr.png

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

Articles connexes

Outils de gestion, d'administration et de conception pour MySQL
  • PhpMyAdmin, outil de gestion 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
  • MySQL-Front, outil d'administration de base de données MySQL

Liens externes

Commons-logo.svg

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.
  • Benetl, outil d'ETL gratuit pour fichiers utilisant MySQL.
  • Portail des logiciels libres Portail des logiciels libres
  • Portail des bases de données Portail des bases de données
  • Portail de l’informatique Portail de l’informatique
Ce document provient de « MySQL ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article MySql de Wikipédia en français (auteurs)

Игры ⚽ Поможем сделать НИР

Regardez d'autres dictionnaires:

  • MySQL — Developer(s) MySQL AB (A subsidiary of Oracle) Initial release May 23, 1995 (1995 05 23 …   Wikipedia

  • MYSQL — Entwickler: Sun Microsystems (bis Februar 2008: MySQL AB) Aktuelle Version: 5.1.34 (Community Server) (7. April 200 …   Deutsch Wikipedia

  • MySQL — Entwickler Oracle Corporation (bis Februar 2008: MySQL AB, bis Januar 2010: Sun Microsystems) Aktuelle Version …   Deutsch Wikipedia

  • MySql — Entwickler: Sun Microsystems (bis Februar 2008: MySQL AB) Aktuelle Version: 5.1.34 (Community Server) (7. April 200 …   Deutsch Wikipedia

  • Mysql — Entwickler: Sun Microsystems (bis Februar 2008: MySQL AB) Aktuelle Version: 5.1.34 (Community Server) (7. April 200 …   Deutsch Wikipedia

  • MySQL — Instalador de MySql Server 5.0 Desarrollador …   Wikipedia Español

  • MySQL — Логотип MySQL Тип Реляционная СУБД Разработчик MySQL AB (до 2008), Sun Microsystems (2008 2010 …   Википедия

  • MYSQL — Apparu en 1995 Développeur MySQL AB / Sun Microsystems Dernièr …   Wikipédia en Français

  • MySQL — Apparu en 1995 Développeur MySQL AB / Oracle …   Wikipédia en Français

  • Mysql — Apparu en 1995 Développeur MySQL AB / Sun Microsystems Dernièr …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”