Assiste.com - Sécurité informatique - Vie privée sur le Web - Neutralité d'Internet

cr  01.04.2012      r+  22.10.2024      r-  22.10.2024      Pierre Pinard.         (Alertes et avis de sécurité au jour le jour)

MySQL est un système de gestion de base de données relationnelles plutôt orienté vers la très grande vitesse de réponse aux demandes (lectures de données).

MySQL est un SGBDR co-développé, dont par son principal auteur, Michael Widenius. MySQL est racheté 1 milliard d'US$ par Sun en 2008, ce qui place Michael Widenius comme l'une des 10 premières fortunes de Finlande (Sun est racheté par Oracle Corporation en 2009).

Le 5 février 2009 Michael Widenius quitte Sun et, fort du code Open Source de MySQL, développe un Fork, MariaDB, un SGBDR apportant des propriétés et performances supérieures à MySQL.

  • « My » et « Maria » sont les prénoms des filles de Michael Widenius.

  • SQL = Structured Query Language, le langage de requête utilisé.

MySQL est, initialement, assez peu transactionnel. Une « transaction », en informatique, est une action sur un ensemble de données cohérentes entre elles (la base de données) qui passent d'un état à un autre. MySQL est plutôt très largement utilisé pour « fabriquer » du stockage de données relativement statiques comme les forums de discussion.

Lorsque vous utilisez le forum d'Assiste.com, des données (les messages) sont inscrites dans une base de données MySQL, mais chaque message n'a aucune incidence sur les autres données (les autres messages) de la base. Il y a des technologies de recherches rapides (mot-clé, contributeurs, dates, etc.), des technologies de regroupement (réponses à un message constituant un fil de discussion), mais il n'y a pas de « transaction ». MySQL utilise ISAM et les B-Tree (Arbre B) pour son extrême rapidité d'extraction et la croissance simple de sa taille.

La notion de transaction informatique :

En termes « simples et imagés », lorsque vous achetez un billet d'avion auprès d'un comparateur de prix, il y a des dizaines de modifications simultanées de données très diverses (nombre de places restant libres dans l'avion, dans chacune des classes et promotions, commission financière du comparateur, commission financière de l'apporteur d'affaires, transactions interbancaires, facturation des divers intervenants et du client, bagages en soute, personnes liées dans un groupe, place(s) réservée(s) dans l'avion, réservation liée d'un taxi, réservation liée d'un hôtel, réservation liée d'un restaurant, visa, carte d'identité, références bancaires et de paiement, carte d'identité, passeport, changement à une escale, calcul par les compagnies du poids transporté et du carburant, etc.). Ces dizaines à centaines d'incidences sur un grand nombre de données hétérogènes doivent toutes être conduites à leur terme en même temps). Si la moindre opération ne peut être conduite, toutes les opérations déjà inscrites doivent être annulées (opération inverse, sans laisser de trace) pour que la base de données (ou même des bases de données réparties ou hétérogènes) revienne à son état hors de cette transaction (sachant que des milliers d'autres transactions, pour d'autres clients, ont lieu simultanément dans le monde entier).

Plus de 50% des serveurs Web du monde sont constitués du kit technologique connu sous l'acronyme LAMP :

  • Linux - Le système d'exploitation du serveur

  • Apache - Le logiciel serveur (le monde client-serveur - vous et votre appareil d'un côté, le serveur que vous atteignez de l'autre côté)

  • MySQL - Le système de gestion des bases de données

  • PHP - Sigle récursif de « Hypertext Preprocessor ». Langage de script polyvalent Open Source largement utilisé et particulièrement adapté au développement Web. Peut être intégré dans HTML. Sa syntaxe s'appuie sur C, Java et Perl et est facile à apprendre. L'objectif principal de PHP est de permettre aux développeurs Web d'écrire rapidement des pages Web générées dynamiquement (dont à partir de données stockées dans une base de données comme MySQL). En fait, on donne le P de LAMP pour « Perl/PHP/Python ».

Propriétés ACID de MySQL

ACID (Atomicité, Cohérence, Isolation, Durabilité) est un ensemble de propriétés qui garantissent que les transactions de base de données sont traitées de manière fiable.

Dans MySQL, le moteur de stockage (« InnoDB ») prend en charge les fonctionnalités compatibles ACID.

  1. Atomicité :
    L'aspect atomicité du modèle ACID implique principalement les transactions InnoDB. La propriété d'atomicité assure qu'une transaction se fait au complet ou pas du tout. Si une partie d'une transaction ne peut être faite, il faut effacer toute trace de la transaction et remettre les données dans l'état où elles étaient avant la transaction. L'atomicité doit être respectée dans toutes situations, comme une panne d'électricité, une défaillance de l'ordinateur, ou une panne d'un disque magnétique. Les fonctionnalités MySQL associées incluent :

    • Paramètre de validation automatique.

    • Instruction COMMIT.

    • Instruction ROLLBACK.

    • Données opérationnelles des tables INFORMATION_SCHEMA.

  2. Cohérence :
    L'aspect cohérence du modèle ACID implique principalement le traitement interne InnoDB pour protéger les données contre les plantages. La propriété de cohérence assure que chaque transaction amènera le système d'un état valide à un autre état valide. Tout changement à la base de données doit être valide selon toutes les règles définies, incluant, mais non limité aux contraintes d'intégrité, aux rollbacks en cascade, aux déclencheurs de base de données, et à toutes combinaisons d'événements. Les fonctionnalités MySQL associées incluent :

    • Tampon InnoDB à double écriture.

    • Récupération après incident InnoDB.

  3. Isolement :
    L'aspect isolement du modèle ACID implique principalement les transactions InnoDB, en particulier le niveau d'isolement qui s'applique à chaque transaction. Toute transaction doit s'exécuter comme si elle était la seule sur le système. Aucune dépendance possible entre les transactions. La propriété d'isolation assure que l'exécution simultanée de transactions produit le même état que celui qui serait obtenu par l'exécution en série des transactions. Chaque transaction doit s'exécuter en isolation totale : si T1 et T2 s'exécutent simultanément, alors chacune doit demeurer indépendante de l'autre. Les fonctionnalités MySQL associées incluent :

    • Paramètre de validation automatique.

    • Instruction SET ISOLATION LEVEL.

    • Les détails de bas niveau du verrouillage InnoDB. Pendant le réglage des performances, vous voyez ces détails dans les tables INFORMATION_SCHEMA.

  4. Durabilité :
    L'aspect durabilité du modèle ACID implique que les fonctionnalités du logiciel MySQL interagissent avec votre configuration matérielle particulière. En raison des nombreuses possibilités en fonction des capacités de votre CPU, de votre réseau et de vos périphériques de stockage, cet aspect est le plus compliqué à fournir des directives concrètes. La propriété de durabilité assure que lorsqu'une transaction a été confirmée, elle demeure enregistrée même à la suite d'une panne d'électricité, d'une panne de l'ordinateur ou d'un autre problème. Par exemple, dans une base de données relationnelle, lorsqu'un groupe d'énoncés SQL a été exécuté, les résultats doivent être enregistrés de façon permanente, même dans le cas d'une panne immédiatement après l'exécution des énoncés. Les fonctionnalités MySQL associées incluent :

    • Le tampon de double écriture InnoDB est activé et désactivé par l'option de configuration innodb_doublewrite.

    • Option de configuration innodb_flush_log_at_trx_commit.

    • Option de configuration sync_binlog.

    • Option de configuration innodb_file_per_table.

    • Tampon d'écriture dans un périphérique de stockage, tel qu'un lecteur de disque, un SSD ou une matrice RAID.

    • Cache avec batterie dans un périphérique de stockage.

    • Le système d'exploitation utilisé pour exécuter MySQL, en particulier, son support pour l'appel système fsync ().

    • Alimentation sans coupure (UPS) protégeant l'alimentation électrique de tous les serveurs informatiques et périphériques de stockage qui exécutent les serveurs MySQL et stockent les données MySQL.

    • Votre stratégie de sauvegarde, comme la fréquence et les types de sauvegardes, et les périodes de conservation des sauvegardes.

    • Pour les applications de données distribuées ou hébergées, les caractéristiques particulières des centres de données où se trouve le matériel pour les serveurs MySQL et les connexions réseau entre les centres de données.