sharding

Sharding : définition, utilisation, avantages et inconvénients

DataScientest

DataScientest

3 min

Le mot « sharding » signifie « éclater » en anglais. Dans le domaine de la data, le sharding est une méthode qui permet de partitionner un ensemble de données venant d’une même base de données. On fractionne ainsi notre base de données en plusieurs sous-ensembles de données également appelées « datasets ». ​

Qu'est-ce que le sharding ?

Il existe deux principales méthodes de sharding ou partitionnement : le partitionnement horizontal et le partitionnement vertical. Le partitionnement horizontal permet de séparer les lignes et de les stocker dans différents serveurs.

Considérons l’exemple d’une chaîne de magasins qui possède une base de données de ses clients et leurs produits achetés. Le schéma suivant représente un partitionnement horizontal. Dans le premier fragment, nous avons toutes les informations concernant les produits qui coûtent moins de 100€ alors que dans le deuxième, nous avons les informations concernant les produits qui coûtent plus de 100€.

exemple de partitionnement horizontal

Le partitionnement vertical quant à lui permet de séparer les colonnes et de les stocker dans différents serveurs.

En reprenant l’exemple précédent, nous pouvons également effectuer un partitionnement vertical. Le premier fragment contiendra les informations personnelles d’un utilisateur alors que le deuxième fragment contiendra les informations sur les produits achetés.

exemple de partionnement vertical

Si le sharding vertical permet de séparer plusieurs catégories, le sharding horizontal permet de répartir les données sur plusieurs serveurs. 

Ainsi, les grandes entreprises du Web par exemple auront davantage recours au sharding horizontal. 

Le principe du sharding permet d’établir une meilleure gestion de base de données. Les données qui sont partitionnées (appelés fragments logiques) sont ainsi réparties dans des nœuds de bases de données distinctes (appelés fragments physiques).

Quels sont les avantages du sharding ?

Le sharding permet de dépasser la capacité d’une seule machine en hébergeant les données sur différents serveurs.  Ce système de décentralisation possède de nombreux avantages. 

Le principal avantage est tout d’abord la rapidité : beaucoup plus d’informations pourront être traitées chaque seconde. 

Ce système sera également plus sécurisé (c’est plus sécurisant de répartir ses données sur plusieurs serveurs). Il sera également moins coûteux (moins de moyens à mettre en œuvre pour acheter et  sécuriser un gros serveur).

Quels sont les inconvénients du sharding ?

Le Sharding a cependant quelques inconvénients.

Tout d’abord, une mauvaise implémentation peut engendrer une perte de données plus ou moins conséquente qu’on ne pourra plus récupérer. De plus, il peut y avoir un problème de déséquilibre entre les fragments.

En effet, imaginons que nous possédons un jeu de données sur les caractéristiques de plusieurs voitures appartenant à des utilisateurs. Nous souhaitons alors partitionner les données en deux fragments distincts (les voitures de couleurs claires et celles de couleurs foncées).

Prenons le cas où une quasi-totalité des utilisateurs possède des voitures foncées. Dans ce cas-là, les fragments seront déséquilibrés et engendreront un ralentissement dans le traitement des informations. De plus, le fait de posséder plusieurs serveurs peut aussi poser un problème de cybersécurité, une personne pourra en attaquer un plus facilement. Par ailleurs, les profils experts en cybersécurité sont très recherchés sur le marché du travail, d’où l’engouement du public pour les formations spécialisées en cybersécurité.

Le sharding dans les Crypto-monnaies

La scalabilité (qui signifie la capacité de passer à l’échelle) est un élément très recherché en crypto-monnaie.  Plusieurs cryptomonnaies comme le Bitcoin créé par Satoshi Nakomoto en 2009 ou l’Ethereum créé par Vitalik Buterin en 2015 possèdent des réseaux souvent congestionnés qui se manifestent par des temps de traitements trop longs ou des coûts de transaction assez élevés. Vitalik Buterin et son équipe ont alors pensé à utiliser le sharding pour résoudre ce problème et répartir le stockage des données.

Si le Bitcoin traite une petite dizaine de transactions par seconde, Ethereum veut se voir traiter plusieurs milliers de transactions par seconde grâce au sharding.

Les prérequis pour effectuer du sharding

Un des premiers pré-requis pour effectuer du Sharding et d’avoir accès à l’ensemble de nos données. Tous les accès à nos données se font via une clé de partition (appelée Shard Key)

Ainsi, lors du processus de préparation d’une partition, une série de transformations du sous modèle de nos données doit être mise en œuvre. 

Chaque table d’une base de données partitionnée doit posséder une colonne correspondant à la shard key. Il doit y avoir unicité de toutes les partitions. Aussi, la jointure entre les tables doit être réalisée à partir de la même clé de partition.

Conclusion

Le Sharding représente un réel avantage, en partitionnant les données il engendre un gain de vitesse, un gain de sécurité et une diminution des coûts. Son implémentation se déroule selon un processus strict. Cette technique est très utilisée en cryptomonnaies. Elle est également très utile pour les géants du Web comme Google, Wikipédia, Amazon, Facebook, LinkedIn, etc.