Difference between revisions of "VT2017 Vitess"

From air
Jump to navigation Jump to search
Line 35: Line 35:
   
 
==Differences avec le NoSQL==
 
==Differences avec le NoSQL==
  +
  +
Vitess reprend les avantages de mise à l’échelle du NoSQL mais tout en restant très different.
  +
  +
Pour commencer Vitess fonctionne avec des requêtes SQL complexes, comme des fonctions d’agrégation, alors que le NoSQL ne supporte pas ce type de requêtes. Une autre difference important est que Vitess prend en charge les transactions, une transaction est une suite d'operations que font passer la base de donnée d'un état A à un état B, alors que le NoSQL ne les supporte pas. Enfin Vitess reprend deux principes du MySQL qui sont totalement different du NoSQL. Tout d'abord l’impossibilité de modifier le comportement de l'API, cela dans le but de garder base de donnée au quel les utilisateurs sont habitués. Enfin une possibilité d'indexation assez puissante qui permet d’améliorer la performance lors de l'envoie de requêtes.
   
 
==Sharding==
 
==Sharding==

Revision as of 10:36, 28 September 2017

Présentation

Logo de Vitess
  • Sujet : Vitess
  • Auteur : Oriane Dalle
  • Enseignants : Didier Donsez, Georges-Pierre Bonneau
  • Date : 29/09/2017




Résumé

Les bases de donnée des sites web deviennent de plus en plus importante, cela entraîne des complications comme la perte de performance lors d'appel de requête mais aussi la gestion de la base devient de plus en plus ingérable. Vitess est une technologie qui permet de mettre à l'échelle une base de donnée MySQL, ce qui lui permet de rester performante et gérable. Elle regroupe les grands avantages du MySQL en y alliant la mise à l'échelle du NoSQL, cela se base sur un découpage de la base de données de façon organisé mais aussi sur une topologie de la base de données qui permet de mieux orienter les requêtes. Vitess propose aussi un grand nombre d'outils .. [TODO]

Abstract

Synthèse

Contexte

Vitess est un projet open-source qui a vu le jour, grâce à Sugu Sougoumarane et Mike Solomon, en 2011 suite à l’expansion de YouTube. La taille de la base de donnée de Youtube ainsi que le nombre de connexion journalière étaient devenu trop important pour assurer la performance de la base de donnée et la gérer convenablement.

Deux solutions s'offrait à eux : Faire de la "scalabilité verticale" ou de la "scalabilité horizontale".

La scalabilité verticale revient à acheter une machine encore plus puissante afin de pouvoir gérer plus de données et plus de requêtes. Cette solution à évidement des limites visibles. La deuxième solution, qui est celle de Vitess, est la scalabilité horizontale, utilise le "Sharding" ou autrement dit la "distribution des données". Cette technique vise à repartir la base de données sur plusieurs machines de façon ordonné afin de mieux redirigé les requêtes faites sur la base. De cette façon Vitess à pu augmenter 50 fois la taille de la base de donné de Youtube, tout en la rendant plus facilement administrable.

Differences avec le MySQL

Vitess reprend les grandes lignes de MySQL avec quelques améliorations.

Dans un premier temps les connexions entre les nœuds de la base de données ont étaient allégés avec l’utilisation du protocole gRPC et de Go (langage de programmation servant à mapper les connexions). Vitess a également intégré un système d’analyse de requêtes SQL qui permet de vérifier avant chaque envoie de requête si elle ne va pas endommager la base de donnée et si elle va pouvoir aboutir. De plus comme je l’ai dis précédemment Vitess support le sharding, ce qui n’est pas le cas du MySQL natif. Le sharding permet de mettre a l’échelle notre base de donnée quand elle est devenu trop grande pour une machine, en MySQL cela est possible uniquement si l’on le gère manuellement, avec Vitess cela est gérer automatiquement mais on à encore la possibilité de le gérer sois même, si le cœur nous en dis. Enfin Vitess gère lui meme le cycle de vie de la base de donnée alors que en MySQL il faut gérer nous même les réplique de notre bases afin qu’elle soit à jour en cas de panne de la base principale.

Differences avec le NoSQL

Vitess reprend les avantages de mise à l’échelle du NoSQL mais tout en restant très different.

Pour commencer Vitess fonctionne avec des requêtes SQL complexes, comme des fonctions d’agrégation, alors que le NoSQL ne supporte pas ce type de requêtes. Une autre difference important est que Vitess prend en charge les transactions, une transaction est une suite d'operations que font passer la base de donnée d'un état A à un état B, alors que le NoSQL ne les supporte pas. Enfin Vitess reprend deux principes du MySQL qui sont totalement different du NoSQL. Tout d'abord l’impossibilité de modifier le comportement de l'API, cela dans le but de garder base de donnée au quel les utilisateurs sont habitués. Enfin une possibilité d'indexation assez puissante qui permet d’améliorer la performance lors de l'envoie de requêtes.

Sharding

Architecture

Conclusion

Bibliographie/Webographie