Bon, autant mon dernier pavé sur
les méthodes de consensus de la blockchain fait partie des bases à connaître (si si), autant
la technologie du sharding, ça devient relativement complexe. Du coup, je compte sur vous pour me corriger ou me compléter si besoin.
"Shard" et "sharding" on retrouve ces mots de plus en plus souvent et dans de plus en plus de projets.
Quand on parle de sharding, on parle de
bases de données horizontales. Ouais voilà, je sais, ça commence mal.
Alors reprenons. Une base de données, c'est comme un tableur excel avec plusieurs colonnes et plusieurs lignes, où chaque ligne représente une nouvelle entrée. Sauf que la taille d'une base de données peut vite atteindre des proportions importantes.
Par exemple, Amazon et Youtube ont chacun des bases de données contenant plus de 45To d'informations ! Dans le cas de Facebook, et l'info date de 2013, c'est plus de 30Po de données !
http://www.base-de-donnees.com/plus-grosse-base-de-donnees/Puisque toutes les nouvelles données sont ajoutées les unes à la suite des autres, on parle de base de données verticale. Dans ce genre de bases de données gigantesques, la moindre recherche prend tout de suite une éternité et nécessite en plus des ressources informatiques considérables. On parle de charge informatique.
C'est là qu'intervient la technologie du sharding. Le concept fondamental du sharding repose sur l'idée que la taille d'une base de données augmente de façon linéaire, mais le temps de réponse pour interroger la base de données augmente lui de façon exponentielle. Le sharding se propose donc de découper une base de données en plusieurs petites bases de données indépendantes les unes des autres, mais interconnectées si nécessaire. Ces « sous-bases » de données sont appelées "shards". En somme, le sharding constitue une nouvelle architecture pour les bases de données. C'est à cause de ce découpage d'une base de données en plusieurs parties que l'on parle d'architecture horizontale.
Ça apporte de nombreux avantages et c'est pas pour rien que beaucoup de projet récents s'appuient désormais sur cette technologie.
Concrètement, ça sert à quoi ?- Chacun de ces shards peut être stockés sur différents serveurs. Cela permet de distribuer la base de données entre plusieurs serveurs ou même plusieurs lieux géographiques et donc de répartir les charges nécessaires pour y accéder.
- Puisque les shards sont de plus petite taille, la taille des index (genre de sommaire à BdD) est, elle aussi, considérablement réduite. Les requêtes sont donc beaucoup plus rapides et nécessitent beaucoup moins de ressources.
- Il est possible de n'utiliser que le shard où se trouve l'information requise. Un exemple qui revient souvent est celui des consommateurs américains et des consommateurs européens. Selon le marché désiré, on pourra désormais se concentrer uniquement sur le shard contenant les données pertinentes et plus sur l'intégralité de la base de données. À nouveau, on a une économie de charge informatique et un gain de temps.
- Des petites BdD sont beaucoup plus simples à mettre en place et à gérer et elles sont également beaucoup moins coûteuses.
- Même si un shard est momentanément indisponible, les autres shards restent accessibles.
En fin de compte, le sharding est une grande avancée dans tous les domaines où des bases de données de taille conséquente sont requises. Et comme une blockchain n'est jamais qu'une base de données, blockchain et sharding vont de pair.
Il y a malgré tout quelques points négatifs qui ressortent :- Une plus grande dépendance à l'interconnexion entre les serveurs, puisque les shards sont répartis sur plusieurs serveurs.
- Une augmentation de la latence si l'on doit accéder à plusieurs shards à la fois lors d'une requête.
- Les données ou les index ne sont souvent "shardés" que d'une seule façon, de sorte que certaines requêtes seront optimales, tandis que d'autres seront plus lentes ou même impossibles.
- Il faut gérer et maintenir un parc de serveurs.
Bon, voilà qui devrait suffire.
C'est très théorique, mais ça permet de se faire une idée de ce qu'est le sharding. Puis ça commence à dépasser mes compétences de toutes façons !
N'hésitez pas si vous avez des remarques.
Deux liens sur lesquels je me suis appuyés :
https://en.wikipedia.org/wiki/Shard_(database_architecture)https://searchcloudcomputing.techtarget.com/definition/sharding