MySQL, c'est quoi ?

MySQL est un système de gestion de base de données relationnelles (SGBDR) open source qui peut facilement être mis en place et géré en local ou via le cloud par le biais d'un prestataire d'hébergement. Il soutient plusieurs écritures et échelles simultanées via reproduction (cependant, cela peut s'avérer compliqué). Pour cette raison, et du fait des frais de maintenance/d'adaptation relativement bas, il est principalement utilisé comme base de données de production.

Créé en 1994, MySQL est l'un des RDBMS les mieux établis, et depuis son lancement, a considérablement évolué. 90 % des sites web utilisent MySQL. Parmi ces sites, on trouve des géants comme Youtube, Twitter, Wikipedia et Facebook.

Choisir MySQL comme base de données

Capacités Open source

MySQL a été conçu comme une solution open source, il peut donc être déployé sur un matériel basique et adapté avec des frais prévisibles. La large compatibilité de MySQL signifie également que le système peut à tout moment être échangé contre une solution plus adaptée (de nombreuses bases de données transactionnelles concurrentes sont conformes à MySQL pour cette raison).

Haut performance

En matière de base de données, MySQL est l'équivalent d'une voiture de course à laquelle on a retiré le siège arrière pour qu'elle aille plus vite. Les développeurs de MySQL ont pris la décision d'accorder la priorité à la vitesse et à la performance par rapport aux fonctions, c'est pour cette raison que MySQL est une base de données plus limitée certes, mais aussi plus rapide que d'autres solutions dans la catégorie des bases de donnée transactionnelles.

Disponibilité et évolutivité

La capacité de MySQL à être répliqué et distribué pour une plus grande disponibilité et une meilleure évolutivité est extrêmement puissante. Notons cependant, que les niveaux plus hauts de disponibilité et d'évolutivité doivent être compensés par une plus grande complexité et des frais plus importants.

Dans quel cadre MySQL est-il idéal ?

Applications web

MySQL a été principalement conçu pour les applications web. Ce système est particulièrement bien adapté aux applications web structurées et bien planifiées. Oracle a créé une excellente ressource qui décrit les raisons pour lesquelles MySQL est une solution adaptée aux applis web.

Entreprises plus jeunes sans équipe de données sophistiquée

MySQL est souvent le premier choix pour les entreprises plus petites ou les start-ups, du fait de sa fiabilité, de son ubiquité et de sa performance. MySQL est également une option attrayante car vous pouvez facilement créer une réplique d'une base de données de production MySQL et l'utiliser comme une base de données d'analyse. MySQL possède une communauté de développeurs robuste, c'est l'un des systèmes DB les mieux documentés sur le marché, et il est vendu par un grand nombre de vendeurs.

Options d'hébergement MySQL et tarification

Le logiciel MySQL est open source et peut être téléchargé gratuitement. MySQL est également proposé par de nombreux vendeurs dans le cloud.

MySQL déployé en local

Déployé en local, le logiciel MySQL peut être téléchargé et déployé gratuitement. Cependant, le montant total des opérations dépendra énormément du matériel alloué : plus d'espace disque, de CPU et de mémoire signifie plus de frais. Les frais liés au stockage de serveurs et à la maintenance sont des frais supplémentaires associés avec la solution MySQL auto hébergée.

MySQL déployé dans le cloud

L'hébergement de MySQL dans le cloud est moins complexe à gérer qu'une solution en local, mais il offre moins de transparence et de contrôle.

Il existe des douzaines de prestataires MySQL, mais parmi les plus importants hébergés dans le cloud, on trouve :

Amazon RDS

Les tarifs Amazon RDS à la demande commencent à partir de quelques cents par heure pour les instances les plus petites. Si vous pouvez vous engager à plus long terme, les tarifs baissent de manière importante. Amazon propose des déploiements avec zones à disponibilité multiple qui « offrent une meilleure disponibilité et une meilleure durabilité pour les instances de base de données ». Les frais de stockage ne sont pas inclus et les tarifs sont calculés par GB par mois. Il n'y a pas de frais supplémentaires pour le stockage de sauvegarde.

Google Cloud SQL

Google propose deux schémas tarifaires différents pour Cloud SQL (leur offre MySQL). La première génération est proposée en forfait complet ou peut être facturé à l'utilisation. La seconde génération est facturée à la minute durant l'exécution de l'instance, et est plus configurable.
Utilisez le calculateur de tarification de Google pour estimer le plan le mieux adapté à vos besoins spécifiques. Veuillez noter que Google offre 300 $ de crédit gratuit à dépenser durant les 12 premier mois.

Oracle Cloud

La tarification Oracle Cloud est plutôt simple, avec des plans à l'heure et au mois pour les temps de fonctionnement. Les tarifs de stockage sont étagés pour les services à l'heure, et commence à partir de quelques cents par Go par mois. Le plan de stockage mensuel commence à 30 $ par To par mois. Le transfert de données sortantes cause des frais supplémentaires au-delà du premier Go par mois.

Architecture MySQL

L'architecture MySQL consiste en plusieurs couches :

Couches d'application

La couche d'application MySQL permet aux différents clients de se connecter à MySQL et d'émettre des requêtes. Les applications telles que MySQL Workbench et Looker se connectent à la couche d'application MySQL pour envoyer des requêtes et contrôler l'accès des utilisateurs à la base de données.

Processeur de requête

Lorsqu'une requête a été émise de la couche d'application pour lire et écrire des données du stockage sous-jacent, le processeur de requête traduit la requête en plan de requête que la base de données peut exécuter.

Gestion de transactions

MySQL est conforme à ACID, ce qui signifie que plusieurs requêtes peuvent être regroupées dans une transaction, et qu'elles réussissent toutes ou échouent toutes. Le gestionnaire de transactions gère cela en émettant une commande COMMIT pour exécuter chaque transaction. Si une transaction échoue, le gestionnaire de transactions émettra une commande ROLLBACK pour annuler tout changement effectué sur la base de données durant la transaction échouée.

Gestion de la récupération

MySQL est extrêmement résilient, et le gestionnaire de récupération est responsable du retour de la base de données à son dernier état stable en cas de crash. Il note toutes les opérations effectuées dans la base de données (depuis sa création) et en cas de crash, exécute toutes les commandes dans le journal, et de ce fait, ramène la base de données à son dernier état stable.

Gestion du stockage

Le gestionnaire de stockage est responsable de l'allocation des ressources de mémoire nécessaires pour retirer les données du disque physique et fournir les résultats au client.

Stockage portable

Le SGBDR MySQL diffère des autres bases de données transactionnelles en matière de moteur de stockage du fait de son architecture portable. Comme le code de serveur noyau de MySQL est séparé de son moteur de stockage, les moteurs de stockage dans MySQL peuvent être échangés ce qui donnent aux utilisateurs la flexibilité et la capacité de personnaliser leur stockage en fonction de leur besoin.

Ceci est important, parce que le moteur de stockage que vous utilisez affecte la performance de base de données de manière importante. La documentation MySQL contient une liste complète des moteurs de stockage pris en charge.

Compatibilité

MySQL prend en charge des transactions avec l'intégration des moteurs BDB et InnoDB (le moteur par défaut). Cela permet un traitement plus sécurisé des opérations d'écriture simultanées, ce qui a lancé la tendance d'ajout de fonctions par les environnements Enterprise.

MySQL fonctionne avec Linux, Solaris, Windows, AIX et HPUX et offre des versions 32-bit et 64-bit.

MySQL est principalement compatible avec MariaDB et Amazon Aurora. Comme pur tous les dialectes, certaines différences existent (ex. : Aurora ne prend en charge que les répliques à lire), mais les trois dialectes sont des cousins proches. L'un des avantages de MariaDB  est qu'il offre des fonctions fenêtre, alors que MySQL ne le fait pas.

Types de données

Les performances de MySQL sont meilleures avec des données transactionnelles bien structurées et des données structurées 3NF. Les performances MySQL sont également meilleures avec des sets de donnés plus petits et plus complets. Il fonctionne moins bien avec les données lacunaires ou les tableaux larges. Plus le tableau est lacunaire, plus l'écriture est difficile : plus le tableau est large, plus la lecture est difficile.

MySQL peut prendre en charge des tableaux larges et très larges, mais la conséquence est une plus grande complexité et des frais plus importants. Comme MySQL dépend beaucoup de l'index, le fait de connaître à l'avance les types de requête que vous effectuez peut avoir un effet important sur la performance.

Taille maximale de données recommandée

S'il n'y a pas de limite supérieure fixe, le chargement de plus d'un milliard de rangs est déconseillé. Les tables InnoDB ont un maximum fixe de 1017 colonnes.

Mise en œuvre et réglage de performance MySQL

Mise en œuvre de MySQL

Vous pourriez écrire un livre entier sur le réglage de MySQL (et certaines personnes l'ont fait !).

Il va sans dire que vous disposez de plus d'options de personnalisation (et de plus de risques de faire une erreur) lorsque vous hébergez en local. Lorsque vous choisissez une solution hébergée dans le cloud, la création d'un compte avec Google Cloud Storage ou la création d'un cluster avec Amazon RDS vous permettent de commencer en quelques minutes. Comme ces solutions sont hébergées, la plupart des préoccupations liées au déploiement de serveurs sont prises en charge pour vous.

L'insertion d'un nouveau flux de données est populaire lors d'une utilisation transactionnelle. Vous pouvez également faire des inserts par batch.

Maintenance et adaptation MySQL

MySQL est bien adapté dès l'installation aux petits sets de données et charges, mais au fur et à mesure que les données et la demande en simultanéité évoluent, MySQL peut être adapté de plusieurs façons.

Réplication La réplication est un moyen commun de configurer plusieurs serveurs dans une instance unique MySQL, et chaque réplique est provisionnée pour des tâches spécifiques.

Il existe deux types de réplication :

  • Réplication maître-esclave, caractérisée par une base de données de production chargée d'écrire les données, et par potentiellement de nombreuses bases de données esclave qui sont des répliques lecture seule de la base de données maître. Cela permet à un administrateur d'adapter les lectures simultanées pour une instance.

  • Réplication multi-maître, similaire à une réplication maître-esclave, mais qui vous permet d'adapter les écritures et d'augmenter la disponibilité. Cependant, la complexité plus élevée imposée par ce système de réplication augmente la latence.

Clustering Le clustering est différent de la réplication parce qu'au lieu de répliquer les données dans plusieurs bases de données différentes pour développer les lectures ou les écritures, la donnée elle-même est distribuée dans différents serveurs pour optimiser la performance. La mise en œuvre d'un cluster MySQL implique également la mise en œuvre d'un moteur de stockage spécifique au clustering, appelé MySQL NDB cluster.

Partitionnement Le partitionnement est un outil pour séparer les tables de bases de données en sous-groupes plus petits pour diminuer la taille de l'index, et donc augmenter la performance. Le « sharding » est une méthode de partitionnement populaire. Le « sharding » est une pratique au cours de laquelle les tables sont divisées horizontalement et partitionnées dans des bases de données différentes sur une ou plusieurs machines. Pinterest est notoire pour l'évolution de leur base de données MySQL. Ils utilisent le sharding, la réplication maître-maître et le clustering pour distribuer leurs tables massives sur une instance unique MySQL.

Prenez goût à l'analytique

Business intelligence, analyse de big data ou vue client à 360° :
quels que soient vos besoins, Looker peut vous aider. Parlez à nos experts en données.

Demander une démo