IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2014
    Messages
    1 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 1 089
    Points : 26 554
    Points
    26 554
    Par défaut Facebook explique les défis auxquels il a dû faire face lors de la migration de MySQL 5.6 vers la version 8.0
    Facebook explique les défis auxquels il a dû faire face lors de la migration de MySQL 5.6 vers la version 8.0,
    une migration qui a duré des années avec à la clé des gains non négligeables

    Depuis le mois de mai, la dernière version du système de gestion de bases de données relationnelles MySQL est disponible. Facebook, qui utilise ce logiciel pour gérer les pétaoctets de données qu’il agrège, a effectué la migration vers MySQL 8.0 afin de profiter de toutes les dernières fonctionnalités de ce système de base de données. Toutefois, bien que hautement bénéfique au réseau social, cette migration ne s’est pas faite sans peine.

    Facebook et MySQL : un amour inséparable

    Lorsque les utilisateurs cliquent sur les boutons likes, font des commentaires ou partagent des éléments sur la plateforme sociale Facebook, toutes ces actions sont enregistrées dans un moteur de stockage. Dans MySQL, les principaux moteurs de stockage sont MyISAM et InnoDB. Pendant longtemps, Facebook a retenu InnoDB pour gérer ces activités ci-dessus sur ses serveurs de bases de données. Cependant, quoiqu'InnoDB offre des performances et une fiabilité exceptionnelles pour une variété de charges de travail, il présente des inefficacités en termes d'espace et d'amplification d'écriture lorsqu'il est utilisé avec un stockage flash.

    Pour résoudre ces problèmes, Facebook a conçu de toute pièce un moteur de stockage nommé RocksDB qui est un fork de LevelDB de Google. Ce moteur de stockage est un magasin clé-valeur persistant et intégrable pour un stockage rapide. Il présente plusieurs avantages par rapport à InnoDB comme une meilleure compression des données, l’usage d’un plus petit nombre de lectures et écritures séquentielles, le gain d'espace avec la possibilité de supprimer des clés de préfixe identiques ou encore la possibilité de remplacer les identifiants de séquence par la valeur zéro. En outre, il offre d'autres avantages comme une réplication plus rapide et le chargement plus rapide de données.

    En 2014, Facebook a commencé à rechercher l'intégration RocksDB et MySQL. Facebook n’a jamais voulu se séparer de MySQL, car il se prête facilement à l’automatisation et permet à une petite équipe de gérer facilement des milliers de serveurs MySQL tout en fournissant un service de haute qualité. L'automatisation comprend la sauvegarde, la restauration, le basculement, les modifications de schéma et le remplacement du matériel défaillant. En plus, MySQL dispose de fonctionnalités de réplication flexibles et extensibles, notamment la réplication asynchrone et la réplication semi-synchrone sans perte, ce qui permet d'effectuer un basculement sans perdre de données.

    Facebook : MySQL 5.6 c’est bien, mais MyRocks basé sur MySQL 8.0, c’est mieux

    En voulant combiner à la fois le moteur de base de données RocksDB et les fonctionnalités de MySQL avec des extensions ajoutées, cela a donné lieu au projet MyRocks qui permet d’avoir le meilleur des deux mondes. Pour ce faire, le réseau social s’est appuyé sur MySQL 5.6. Mais déjà à ce niveau, beaucoup de difficultés se sont fait sentir. Pour passer de la version précédente à la version 5.6 de MySQL, cela a pris un an. Et lorsque la version 5.7 de MySQL est sortie, les ingénieurs de Facebook étaient encore en train de développer le nouveau moteur de stockage MyRocks en s’appuyant sur la version 5.6 de MySQL. Vu le retard accumulé, Facebook a décidé d’ignorer MySQL 5.7 pour se concentrer sur la version 5.6 de MySQL dans le développement de MyRocks.

    Nom : MyRocks.png
Affichages : 467314
Taille : 55,3 Ko

    Mais avec la fin du cycle de vie de la 5.6 de MySQL qui approchait, Facebook a dû se résoudre à se tourner vers une version supérieure de MySQL 5.6. Le réseau social a choisi de migrer vers MySQL 8.0. Avec des améliorations comme le DDL instantané, les ingénieurs de Facebook se sont dit que cela pourrait accélérer les changements de schéma de MyRocks. Mais vu la charge de travail qui attendait les ingénieurs de Facebook, il était clair que passer à la version 8.0 serait encore plus difficile que de migrer vers la version 5.6 ou MyRocks.

    Et pour cause, passer de MyRocks (la branche personnalisée de MySQL 5.6 intégrant RocksDB) à la version 8.0 exigerait de :
    • porter 1700 correctifs de MyRocks vers MySQL 8.0 ;
    • mettre à jour toute application utilisant les API de la version 5.6 de MySQL qui devenaient de facto obsolètes ou seraient éventuellement supprimées avec la mise à niveau vers version 8.0 de MySQL ;
    • déprécier ou migrer un certain nombre de fonctionnalités de Facebook qui n’étaient pas compatibles avec les fonctionnalités similaires de la version 8.0 ;
    • apporter des améliorations à MyRocks afin de pouvoir l’exécuter dans la version 8.0, y compris au niveau du partitionnement natif et la récupération après incident.


    Pour mieux s’organiser à gérer tous ces soucis, Facebook a divisé ces problèmes en quatre catégories :
    • Abandon : les fonctionnalités qui n'étaient plus utilisées ou qui avaient des fonctionnalités équivalentes dans la version 8.0 n'avaient pas besoin d'être portées ;
    • Build/Client : des fonctionnalités non-serveur prenant en charge l’environnement de build et des outils MySQL modifiés tels que mysqlbinlog, ou des fonctionnalités supplémentaires telles que l'API client asynchrone, ont été portées ;
    • Serveur non-MyRocks : les fonctionnalités du serveur mysqld qui n'étaient pas liées au moteur de stockage MyRocks ont été portées ;
    • Serveur MyRocks : les fonctionnalités prenant en charge le moteur de stockage MyRocks ont été portées.


    Avec tous les changements liés au client porté, Facebook a pu mettre à jour ses outils client et son code de connecteur vers la version 8.0. Une fois toutes les fonctionnalités du serveur non-MyRocks portées, le réseau a pu déployer mysqld 8.0 pour les serveurs InnoDB. La finalisation des fonctionnalités du serveur MyRocks a permis de mettre à jour les installations de MyRocks.

    Certaines des fonctionnalités les plus complexes nécessitaient des modifications importantes pour la version 8.0, et quelques domaines présentaient des problèmes de compatibilité majeurs. Finalement, le serveur 5.6 a dû être patché pour qu'il soit compatible avec la version 8.0. Il a fallu quelques années pour terminer le portage de toutes ces fonctionnalités. Au moment où tout ce travail a été achevé, plus de 2 300 correctifs ont été comptabilisés et 1 500 d'entre eux ont été portés vers la version 8.0.

    Et au final ?

    « Malgré tous les obstacles sur notre chemin de migration, nous avons déjà vu les avantages de l'exécution de la version 8.0. Certaines applications ont opté pour une conversion anticipée vers la version 8.0 pour utiliser des fonctionnalités telles que Document Store et une prise en charge améliorée de la date et de l'heure. Nous avons réfléchi à la manière de prendre en charge les fonctionnalités du moteur de stockage telles que Instant DDL sur MyRocks. Dans l'ensemble, la nouvelle version développe considérablement ce que nous pouvons faire avec MySQL », a déclaré Facebook au soir de son périple.

    Source : Facebook

    Et vous ?

    Avez-vous migré vers la version 8.0 de MySQL ? Quels gains en avez-vous tirés ?

    Avez-vous déjà testé MyRocks de Facebook ? Qu’en pensez-vous ?

    À la suite du partage d’expérience de Facebook au sujet de la migration vers MySQL 8.0, pensez-vous que en vaut la peine ?

    Connaissez-vous d’autres moteurs de stockage qui offrent les mêmes avantages de MyRocks ? Lesquels ?
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Invité
    Invité(e)
    Par défaut
    Le choix de Facebook de continuer avec MySQL est assez bizarre. Oracle a coutume de tuer les produits qu'il rachète.

  3. #3
    Membre extrêmement actif Avatar de darklinux
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2005
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 570
    Points : 1 023
    Points
    1 023
    Par défaut
    Mème chose que plus haut : Oracle est tout sauf fiable , sauf pour les audits . Maria DB est tout aussi fiable et lui est free

  4. #4
    Expert confirmé Avatar de AoCannaille
    Inscrit en
    Juin 2009
    Messages
    1 413
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 1 413
    Points : 4 734
    Points
    4 734
    Par défaut
    Je croyais que Facebook avait pondu un nouveau concept de SGBD avec Cassandra pour être adapté à leurs besoin, pourquoi on parle encore de mysql du coup ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 124
    Points : 559
    Points
    559
    Par défaut
    Citation Envoyé par AoCannaille Voir le message
    Je croyais que Facebook avait pondu un nouveau concept de SGBD avec Cassandra pour être adapté à leurs besoin, pourquoi on parle encore de mysql du coup ?
    On peut supposer sans trop se tromper que vu la taille de Facebook tous leurs besoins ne sont pas couvert par un seul SGBD ou alors ils ont trouvé le Graal !

  6. #6
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    @AoCannaille , je ne pense pas que Cassandra répond à tous les besoins d'une base relationnelle. Je pense notamment aux transactions lorsque tu effectues des opérations d'écriture sur plusieurs tables.
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  7. #7
    Membre expérimenté
    Profil pro
    Ingénieur système Linux N3
    Inscrit en
    Juillet 2008
    Messages
    416
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur système Linux N3

    Informations forums :
    Inscription : Juillet 2008
    Messages : 416
    Points : 1 517
    Points
    1 517
    Par défaut My 2 cents
    Je ne suis pas assez pointu en SGBDR pour donner un avis technique pertinent sur ce qui a été dit. Par contre:
    - Oracle a tout intérêt à ne pas trop faire chier Facebook qui a un tel pouvoir de communication qu'il est dangereux de se les mettre à dos
    - Travailler avec des logiciels libres offre la possibilité d'adapter le logiciel à son besoin spécifique pour peu qu'on dispose des moyens humains et financiers pour le faire

  8. #8
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2009
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 91
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2009
    Messages : 374
    Points : 783
    Points
    783
    Par défaut C'est vrai
    Je le plains

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut
    J'aimerais migrer de 5.7 vers 8.
    Savez-vous si la méthode et les difficultés sont documentées quelque part ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/12/2019, 09h04
  2. Réponses: 0
    Dernier message: 09/12/2019, 13h38
  3. Réponses: 0
    Dernier message: 17/02/2017, 08h21
  4. [suisse] salaire et les frais auxquels il faut penser
    Par tipiak dans le forum Salaires
    Réponses: 18
    Dernier message: 16/07/2010, 06h19
  5. Réponses: 2
    Dernier message: 30/05/2006, 23h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo