Qu'est-ce que le partitionnement de base de données ?
Le partitionnement de base de données est le processus de stockage d'une base de données volumineuse sur plusieurs machines. Une seule machine, ou un seul serveur de base de données, ne peut stocker et traiter qu'une quantité limitée de données. Le partitionnement des bases de données permet d'éliminer cette limitation en divisant les données en petits fragments, appelés partitions, et en les stockant sur plusieurs serveurs de base de données. Tous les serveurs de base de données utilisent généralement les mêmes technologies sous-jacentes et fonctionnent ensemble pour stocker et traiter de grands volumes de données.
Pourquoi le partitionnement des bases de données est-il important ?
À mesure qu'une application se développe, le nombre d'utilisateurs de l'application et la quantité de données qu'elle stocke augmentent au fil du temps. La base de données devient un goulot d'étranglement si le volume de données devient trop important et que trop d'utilisateurs tentent d'utiliser l'application pour lire ou enregistrer des informations simultanément. L'application ralentit et affecte l'expérience client. Le partitionnement de bases de données est l'une des méthodes permettant de résoudre ce problème, car il permet le traitement parallèle de jeux de données plus petits entre différentes partitions.
Quels sont les avantages du partitionnement de bases de données ?
Les organisations utilisent le partitionnement des bases de données pour bénéficier des avantages suivants :
Améliorer le temps de réponse
La récupération des données prend plus de temps sur une seule base de données volumineuse. Le système de gestion de base de données doit effectuer des recherches dans de nombreuses lignes pour récupérer les données correctes. En revanche, les partitions de données comportent moins de lignes que la base de données dans son ensemble. Par conséquent, la récupération d'informations spécifiques ou l'exécution d'une requête à partir d'une base de données partitionnée prend moins de temps.
Éviter les pannes de service totales
Si l'ordinateur hébergeant la base de données tombe en panne, l'application qui dépend de la base de données tombe également en panne. Le partitionnement de base de données évite cela en distribuant des parties de la base de données sur différents ordinateurs. La défaillance de l'un des ordinateurs n'arrête pas l'application car elle peut fonctionner avec d'autres partitions fonctionnelles. Le partitionnement est également souvent effectué en combinaison avec la réplication des données entre les partitions. Ainsi, si une partition devient indisponible, les données peuvent être consultées et restaurées à partir d'une autre partition.
Mettre efficacement à l'échelle
Une base de données en pleine expansion consomme davantage de ressources informatiques et finit par atteindre la capacité de stockage. Les entreprises peuvent utiliser le partitionnement de base de données pour ajouter des ressources informatiques supplémentaires afin de soutenir la mise à l'échelle de la base de données. Elles peuvent ajouter de nouvelles partitions lors de l'exécution sans arrêter l'application à des fins de maintenance.
Comment fonctionne le partitionnement de base de données ?
Une base de données stocke les informations dans plusieurs jeux de données composés de colonnes et de lignes. Le partitionnement de base de données divise un seul jeu de données en partitions ou en segments. Chaque partition contient des lignes d'informations uniques que vous pouvez stocker séparément sur plusieurs ordinateurs, appelées nœuds. Toutes les partitions s'exécutent sur des nœuds distincts, mais partagent le schéma ou la conception de la base de données d'origine.
Par exemple, une base de données non partitionnée contenant un jeu de données pour les enregistrements clients peut ressembler à ceci :
ID client |
Nom |
État |
1 |
John |
Californie |
2 |
Jane |
Washington |
3 |
Paulo |
Arizona |
4 |
Wang |
Géorgie |
Le partitionnement consiste à séparer différentes lignes d'informations de la table et à les stocker sur différentes machines, comme le montre ce qui suit :
Ordinateur A
ID client |
Nom |
État |
1 |
John |
Californie |
2 |
Jane |
Washington |
Ordinateur B
ID client |
Nom |
État |
3 |
Paulo |
Arizona |
4 |
Wang |
Géorgie |
Partitions
Les blocs de données partitionnés sont appelés partitions logiques. La machine qui stocke la partition logique est appelée partition physique ou nœud de base de données. Une partition physique peut contenir plusieurs partitions logiques.
Clé de partition
Les développeurs de logiciels utilisent une clé de partition pour déterminer comment partitionner le jeu de données. Une colonne du jeu de données détermine les lignes de données qui se regroupent pour former une partition. Les concepteurs de bases de données choisissent une clé de partition dans une colonne existante ou en créent une nouvelle.
Architecture sans partage
Le partitionnement de base de données fonctionne sur une architecture sans partage. Chaque partition physique fonctionne indépendamment et ne connaît pas les autres partitions. Seules les partitions physiques contenant les données que vous demandez traiteront les données en parallèle pour vous.
Une couche logicielle coordonne le stockage des données et l'accès à celles-ci à partir de ces multiples partitions. Par exemple, certains types de technologie de base de données intègrent des fonctionnalités de partitionnement automatique. Les développeurs de logiciels peuvent également écrire du code de partitionnement dans leur application pour stocker ou récupérer des informations à partir de la ou des partitions appropriées.
Quelles sont les méthodes de partitionnement de bases de données ?
Les méthodes de partitionnement de la base de données appliquent différentes règles à la clé de partition afin de déterminer le bon nœud pour une ligne de données particulière. Voici des architectures de partitionnement courantes :
Partitionnement basé sur la plage
Le partitionnement basé sur la plage, ou partitionnement dynamique, divise les lignes de la base de données en fonction d'une plage de valeurs. Ensuite, le concepteur de base de données attribue une clé de partition à la plage respective. Par exemple, le concepteur de la base de données partitionne les données selon la première lettre du nom du client comme suit :
Nom |
Clé de partition |
Commence par A à I |
A |
Commence par J à S |
B |
Commence par T à Z |
C |
Lorsqu'elle écrit un enregistrement client dans la base de données, l'application détermine la clé de partition correcte en vérifiant le nom du client. Ensuite, l'application associe la clé à son nœud physique et stocke la ligne sur cette machine. De même, l'application se livre à une correspondance inverse lors de la recherche d'un enregistrement particulier.
Avantages et inconvénients
Selon les valeurs des données, le partitionnement basé sur la plage peut entraîner la surcharge des données sur un seul nœud physique. Dans notre exemple, la partition A (contenant des noms commençant par A à I) peut contenir un nombre de lignes de données beaucoup plus important que la partition C (contenant des noms commençant par T à Z). Cependant, il est plus facile à mettre en œuvre.
Partitionnement haché
Le partitionnement haché attribue la clé de partition à chaque ligne de la base de données à l'aide d'une formule mathématique appelée fonction de hachage. La fonction de hachage prend les informations de la ligne et produit une valeur de hachage. L'application utilise la valeur de hachage comme clé de partition et stocke les informations dans la partition physique correspondante.
Les développeurs de logiciels utilisent le partitionnement haché pour répartir uniformément les informations d'une base de données entre plusieurs partitions. Par exemple, le logiciel sépare les enregistrements clients en deux partitions avec des valeurs de hachage alternatives de 1 et 2.
Nom |
Valeur de hachage |
John |
1 |
Jane |
2 |
Paulo |
1 |
Wang |
2 |
Avantages et inconvénients
Bien que le partitionnement haché entraîne une répartition uniforme des données entre les partitions physiques, il ne sépare pas la base de données en fonction de la signification des informations. Par conséquent, les développeurs de logiciels peuvent avoir des difficultés à réaffecter la valeur de hachage lors de l'ajout de partitions physiques supplémentaires à l'environnement informatique.
Partitionnement d'annuaires
Le partitionnement d'annuaires utilise une table de recherche pour faire correspondre les informations de la base de données à la partition physique correspondante. Une table de recherche est similaire à une table de feuille de calcul qui relie une colonne de base de données à une clé de partition. Par exemple, le diagramme suivant montre une table de recherche pour des couleurs de vêtements.
Couleur |
Clé de partition |
Bleu |
A |
Rouge |
B |
Jaune |
C |
Noir |
D |
Lorsqu'une application stocke des informations sur les vêtements dans la base de données, elle se reporte à la table de recherche. Si une robe est bleue, l'application stocke les informations dans la partition correspondante.
Avantages et inconvénients
Les développeurs de logiciels utilisent le partitionnement d'annuaires parce qu'il est flexible. Chaque partition est une représentation significative de la base de données et n'est pas limitée par des plages. Toutefois, le partitionnement d'annuaire échoue si la table de recherche contient des informations incorrectes.
Partitionnement géographique
Le partitionnement géographique divise et stocke les informations de la base de données en fonction de l'emplacement géographique. Par exemple, un site web de service de rencontres utilise une base de données pour stocker les informations clients de différentes villes comme suit :
Nom |
Clé de partition |
John |
Californie |
Jane |
Washington |
Paulo |
Arizona |
Les développeurs de logiciels utilisent les villes comme clés de partition. Ils stockent les informations de chaque client dans des partitions physiques dont l'emplacement géographique correspond aux villes en question.
Avantages et inconvénients
Le partitionnement géographique permet aux applications de récupérer les informations plus rapidement en raison de la distance plus courte entre la partition et le client qui fait la demande. Si les modèles d'accès aux données sont principalement basés sur la position géographique, cela fonctionne bien. Cependant, la partitionnement géographique peut également entraîner une distribution inégale des données.
Comment optimiser le partitionnement des bases de données pour une distribution uniforme des données
Lorsqu'une surcharge de données se produit sur des partitions physiques spécifiques alors que d'autres restent sous-chargées, cela entraîne la création de points chauds de base de données. Les zones réactives ralentissent le processus de récupération dans la base de données, ce qui va à l'encontre de l'objectif du partitionnement des données.
Une bonne sélection de clés de partition peut répartir uniformément les données sur plusieurs partitions. Lors du choix d'une clé de partition, les concepteurs de bases de données doivent prendre en compte les facteurs suivants :
Cardinalité
La cardinalité décrit les valeurs possibles de la clé de partition. Elle détermine le nombre maximum de partitions possibles sur des bases de données séparées orientées colonnes. Par exemple, si le concepteur de base de données choisit un champ de données oui/non comme clé de partition, le nombre de partitions est limité à deux.
Fréquence
La fréquence est la probabilité de stocker des informations spécifiques dans une partition particulière. Par exemple, un concepteur de base de données choisit l'âge comme clé de partition pour un site web de fitness. La plupart des enregistrements peuvent être placés dans des nœuds pour les abonnés âgés de 30 à 45 ans et devenir des base de données de secours.
Changement monotone
Le changement monotone est le taux de changement de la clé de partition. Une clé de partition croissante ou décroissante de façon monotone entraîne des partitions déséquilibrées. Par exemple, une base de données de commentaires est divisée en trois partitions physiques différentes comme suit :
- La partition A stocke les commentaires des clients qui ont effectué entre 0 et 10 achats.
- La partition B stocke les commentaires des clients qui ont effectué entre 11 et 20 achats.
- La partition C enregistre les commentaires des clients ayant effectué 21 achats ou plus.
Au fil de la croissance de l'entreprise, les clients finiront par effectuer plus de 21 achats ou plus. L'application stocke leurs commentaires dans la partition C. Cela entraîne une partition déséquilibrée car la partition C contient plus d'enregistrements de commentaires que les autres partitions.
Quelles sont les alternatives au partitionnement de bases de données ?
Le partitionnement de base de données est une stratégie de mise à l'échelle horizontale qui alloue des nœuds ou des ordinateurs supplémentaires pour partager la charge de travail d'une application. L'avantage de la mise à l'échelle horizontale pour les entreprises est que son architecture est tolérante aux pannes. Lorsqu'un ordinateur tombe en panne, les autres continuent de fonctionner sans interruption. Les concepteurs de bases de données réduisent les temps d'arrêt en répartissant les partitions logiques sur plusieurs serveurs.
Cependant, le partitionnement n'est qu'une stratégie de mise à l'échelle de la base de données parmi de nombreuses autres. Explorez d'autres techniques et comprenez comment elles se comparent les unes aux autres.
Mise à l'échelle verticale
La mise à l'échelle verticale augmente la puissance de calcul d'une seule machine. Par exemple, l'équipe informatique ajoute un processeur, de la RAM et un disque dur à un serveur de base de données pour gérer le trafic croissant.
Comparaison du partitionnement de base de données et de la mise à l'échelle verticale
La mise à l'échelle verticale est moins coûteuse, mais les ressources informatiques que vous pouvez mettre à l'échelle verticale sont limitées. Parallèlement, le partitionnement, une stratégie de mise à l'échelle horizontale, est plus facile à mettre en œuvre. Par exemple, l'équipe informatique installe plusieurs ordinateurs au lieu de mettre à niveau le matériel informatique ancien.
Réplication
La réplication est une technique qui permet de créer des copies exactes de la base de données et de stocker ces dernières sur différents ordinateurs. Les concepteurs de bases de données utilisent la réplication pour concevoir un système de gestion de base de données relationnelle tolérant aux pannes. Lorsque l'un des ordinateurs hébergeant la base de données tombe en panne, les autres réplicas restent opérationnels. La réplication est une pratique courante dans les systèmes informatiques distribués.
Comparaison du partitionnement de base de données et de la réplication de base de données
Le partitionnement de base de données ne crée pas de copies des mêmes informations. Au lieu de cela, il divise une base de données en plusieurs parties et les stocke sur différents ordinateurs. Contrairement à la réplication, le partitionnement de base de données ne se traduit pas par une haute disponibilité. Le partitionnement peut être utilisée en combinaison avec la réplication pour profiter à la fois d'une évolutivité et d'une haute disponibilité.
Dans certains cas, le partitionnement de base de données peut consister en des réplications de jeux de données spécifiques. Par exemple, un magasin qui vend des produits à des clients américains et européens peut stocker des répliques de tables de conversion de taille sur des partitions différentes pour les deux régions. L'application peut utiliser les copies dupliquées de la table de conversion pour convertir la taille des vêtements sans accéder à d'autres serveurs de base de données.
Partitioning
Le partitionnement est le processus qui consiste à diviser une table de base de données en plusieurs groupes. Le partitionnement est classé en deux types :
- Le partitionnement horizontal divise la base de données par lignes.
- Le partitionnement vertical crée différentes partitions des colonnes de la base de données.
Comparaison du partitionnement et du partitionnement des bases de données
Le partitionnement de base de données est similaire au partitionnement horizontal. Les deux processus divisent la base de données en plusieurs groupes de lignes uniques. Le partitionnement stocke tous les groupes de données sur le même ordinateur, mais le partitionnement de la base de données les répartit sur différents ordinateurs.
Quels sont les défis du partitionnement de base de données ?
Les entreprises peuvent être confrontées aux défis suivants lors de la mise en œuvre du partitionnement de base de données :
Points d'accès de secours
Certaines partitions sont déséquilibrées en raison de la distribution inégale des données. Par exemple, une seule partition physique contenant des noms de clients commençant par A reçoit plus de données que les autres. Ce segment physique utilisera plus de ressources informatiques que les autres.
Solution
Vous pouvez répartir les données de manière uniforme en utilisant des clés de partition optimales. Certains jeux de données sont mieux adaptés au partitionnement que d'autres.
Complexité opérationnelle
Le partitionnement de base de données crée une complexité opérationnelle. Au lieu de gérer une seule base de données, les développeurs doivent gérer plusieurs nœuds de base de données. Lorsqu'ils récupèrent des informations, les développeurs doivent interroger plusieurs partitions et combiner les informations. Ces opérations de récupération peuvent compliquer les analyses.
Solution
Dans le portefeuille de bases de données AWS, la configuration et les opérations de base de données ont été automatisées dans une large mesure. Cela permet d'utiliser plus facilement une architecture de base de données partitionnée.
Coûts d'infrastructure
Pour les entreprises, les coûts d'infrastructure sont plus élevés lorsqu'elles ajoutent des ordinateurs supplémentaires en tant que partitions physiques. Les coûts de maintenance peuvent s'accumuler si vous augmentez le nombre de machines de votre centre de données sur site.
Solution
Les développeurs utilisent Amazon Elastic Compute Cloud (Amazon EC2) pour héberger et mettre à l'échelle des partitions dans le cloud. Vous pouvez faire des économies en utilisant une infrastructure virtuelle entièrement gérée par AWS.
Complexité des applications
La plupart des systèmes de gestion de bases de données ne disposent pas de fonctionnalités de partitionnement intégrées. Cela signifie que les concepteurs de bases de données et les développeurs de logiciels doivent diviser, distribuer et gérer manuellement la base de données.
Solution
Vous pouvez migrer vos données vers les bases de données sur mesure AWS appropriées, qui disposent de plusieurs fonctionnalités intégrées qui soutiennent la mise à l'échelle horizontale.
Comment AWS peut-il vous aider avec le partitionnement de base de données ?
AWS est une plateforme mondiale de gestion des données que vous pouvez utiliser pour élaborer une stratégie de données moderne. Avec AWS, vous pouvez choisir la bonne base de données sur mesure, atteindre des performances à grande échelle, exécuter des bases de données entièrement gérées et compter sur la haute disponibilité et la sécurité.
Commencez à utiliser la gestion des données sur AWS en créant un compte AWS dès aujourd'hui.