Qu'est-ce que l'évolutivité des bases de données ?
Cette page aborde les points suivants pour vous aider à mieux comprendre l'évolutivité des bases de données :
- Mise à l'échelle horizontale ou verticale
- Défis liés à l'évolutivité des bases de données
- Comment améliorer l'évolutivité des bases de données
- Évolutivité des bases de données NoSQL par rapport aux bases de données relationnelles
- Conclusion
Qu'est-ce que l'évolutivité d'une base de données ? L'évolutivité d'une base de données n'est pas seulement la capacité d'une base de données à gérer une charge plus importante, mais aussi à améliorer les performances à mesure que les exigences de l'entreprise vis-à-vis d'une application augmentent. Il convient de noter que l'évolutivité ne signifie pas seulement l'augmentation des ressources pour répondre à une demande plus importante, mais aussi leur réduction si la demande diminue.
L'échec de la mise à l'échelle d'une base de données a trois conséquences typiques : La surcharge de l'unité centrale et de la mémoire, l'atteinte de la capacité de stockage et la surcharge du réseau qui réduit le trafic de données. Chacun de ces problèmes, ou une combinaison d'entre eux, peut entraîner l'arrêt de votre application et avoir un impact sérieux sur votre activité.
Cette page présente deux types d'évolutivité, les défis qu'ils posent et les solutions recommandées pour les surmonter. Enfin, elle compare les bases de données NoSQL et relationnelles dans le contexte de l'évolutivité et montre pourquoi Couchbase est le meilleur choix pour l'évolutivité.
Mise à l'échelle horizontale ou verticale
Il existe deux façons pour une base de données d'améliorer sa disponibilité et son comportement lorsque davantage de ressources sont demandées : la mise à l'échelle verticale et la mise à l'échelle horizontale.
Qu'est-ce que la mise à l'échelle horizontale ?
La mise à l'échelle horizontale, mieux adaptée aux systèmes non relationnels, consiste à ajouter des nœuds supplémentaires pour répartir une charge accrue. Ces nœuds font partie d'une grappe qui peut être répartie sur plusieurs serveurs, et les données peuvent être connectées par des jointures. La mise à l'échelle horizontale est également connue sous le nom de "scaling out".
Qu'est-ce que la mise à l'échelle verticale ?
La mise à l'échelle verticale consiste à ajouter des ressources physiques ou virtuelles à une base de données fonctionnant sur un seul serveur. Cela peut se faire en augmentant la puissance de l'unité centrale, la mémoire ou la capacité de stockage. La mise à l'échelle verticale est également connue sous le nom de mise à l'échelle supérieure.
Quelle est la meilleure solution, l'échelle horizontale ou l'échelle verticale ?
Le type de mise à l'échelle que vous devez choisir dépend de votre application et des défis particuliers que vous devez relever. Facteurs à prendre en compte :
- La mise à l'échelle verticale est une bonne première option lorsque vous n'avez pas besoin d'un saut d'échelle massif et que vous souhaitez minimiser les changements apportés à l'ensemble du système au-delà des changements apportés à vos ressources de calcul.
- La mise à l'échelle verticale peut nécessiter des temps d'arrêt si vous changez de machine pour obtenir plus de ressources.
- En fin de compte, à mesure que vos ressources informatiques augmentent, il peut s'avérer plus coûteux de développer et de maintenir votre base de données à l'aide d'une mise à l'échelle verticale
Lorsque vous rencontrez ces problèmes, ou si vous voulez que votre système soit à l'épreuve du temps pour différents scénarios de croissance, la mise à l'échelle horizontale est la voie à suivre.
- La mise à l'échelle horizontale peut améliorer la tolérance aux pannes et la disponibilité, car elle réduit l'impact de la défaillance d'un seul serveur.
- La mise à l'échelle horizontale peut nécessiter des modifications de l'architecture et du code de votre application, mais l'impact est atténué par les bases de données modernes telles que Couchbase, qui offrent des capacités de mise à l'échelle automatique.
Défis liés à l'évolutivité des bases de données
La mise à l'échelle d'une base de données peut être compliquée, et les défis que vous rencontrerez dépendront d'un certain nombre de facteurs. La première difficulté peut résider dans le fait que vous disposez d'une application ancienne qui fonctionne sur une base de données relationnelle. Dans ce cas, vous devez choisir entre l'ajout de ressources physiques/virtuelles ou la refonte de votre application pour qu'elle s'exécute sur une base de données prenant en charge la mise à l'échelle horizontale.
Un autre défi lié à la mise à l'échelle des applications modernes est la gestion des coûts en fonction des différentes charges. Vous ne voulez pas payer le même prix pour les ressources informatiques pendant les périodes de faible utilisation et de forte utilisation. Vous voulez que vos coûts correspondent à votre demande.
Un troisième défi est que les bases de données à échelle horizontale peuvent être plus compliquées à maintenir et à gérer. Couchbase Capella™ est une solution idéale dans ce cas, car il s'agit d'une base de données en tant que service (DBaaS) entièrement gérée qui prend en charge la réplication et le sharding, ainsi que la gestion des données. l'échelonnement multidimensionnel.
Comment améliorer l'évolutivité des bases de données
Vous pouvez améliorer la mise à l'échelle horizontale en prenant en charge à la fois la réplication et le partage.
Réplication
La réplication est une forme de mise à l'échelle qui crée des copies d'une base de données ou de nœuds de base de données. Si un nœud tombe en panne, une copie de ses données peut être récupérée à partir d'un autre nœud. Un autre avantage de la réplication est que les demandes peuvent être adressées à différents nœuds en différents endroits, ce qui réduit la charge sur un nœud particulier.
Quelques composants clés de Couchbase sont basés sur une topologie de réplication maître-maître dans laquelle plusieurs instances Couchbase peuvent agir en tant que nœuds maîtres et répliquer les données les unes vers les autres :
- Couchbase utilise flux de réplication pour répliquer les données entre les nœuds. Un flux de réplication est un flux bidirectionnel continu de données entre deux nœuds.
- Couchbase stocke les données dans des ensembles (buckets)Il s'agit de conteneurs logiques qui regroupent des données connexes. Chaque godet peut être configuré pour répliquer ses données vers un ou plusieurs autres nœuds.
- Réplication croisée des centres de données (XDCR) est une fonctionnalité de Couchbase qui permet la réplication entre les centres de données. XDCR permet la réplication entre les clusters Couchbase, qui peuvent être situés dans différentes régions ou zones de disponibilité.
- Dans une topologie de réplication maître-maître, des conflits peuvent survenir lorsque plusieurs nœuds mettent à jour simultanément le même élément de données. Couchbase dispose d'un mécanisme de résolution des conflits qui s'appuie sur la version et l'horodatage des documents pour résoudre les conflits.
Le sharding
Le sharding, également connu sous le nom de partitionnement, est également basé sur le principe du déplacement des données entre plusieurs nœuds. Contrairement à la réplication, le sharding consiste à diviser les données plutôt que d'en faire des copies. Partage de base de données divise l'ensemble des données en plusieurs groupes appelés "shards". Une fois divisé, chaque groupe peut être stocké indépendamment, généralement sur plusieurs serveurs souvent appelés "cluster". Chaque groupe est accessible indépendamment, ce qui signifie que vous pouvez accéder aux données plus rapidement et disposer de plus de ressources pour le traitement, le calcul et le stockage.
Le sharding permet d'obtenir des performances plus rapides, mais introduit également une plus grande complexité. Cette complexité inclut le concept de rééquilibrage, qui consiste à déplacer les données entre les différents compartiments au fil du temps afin de les répartir de manière homogène.
Pour plus de détails, voir ce guide sur le sharding dans Couchbase.
Évolutivité des bases de données NoSQL par rapport aux bases de données relationnelles
Les bases de données NoSQL sont intrinsèquement plus évolutives que les bases de données relationnelles, car elles peuvent être mises à l'échelle verticalement et horizontalement. De plus, elles ont une architecture distribuée conçue pour gérer de grands volumes de données sur plusieurs serveurs.
Les systèmes traditionnels de gestion de bases de données relationnelles (SGBDR), tels qu'Oracle, privilégient la cohérence à la disponibilité. À l'inverse, les bases de données NoSQL privilégient la disponibilité à la cohérence et se concentrent davantage sur la prise en charge de volumes plus importants d'utilisateurs et de données. En outre, la distribution des données est plus tolérante aux pannes si certains nœuds tombent en panne.
Conclusion
Pour garder une longueur d'avance sur vos demandes d'évolutivité, effectuez régulièrement des tests de charge et choisissez une base de données qui prend en charge la méthode d'évolutivité la mieux adaptée à votre application et aux besoins de votre entreprise. Sachez qu'il y a des compromis à faire pour les approches d'évolutivité horizontale et verticale, comme choisir le coût plutôt que la complexité ou le temps de fonctionnement plutôt que la cohérence.
Utilisez ces ressources pour en savoir plus sur la mise à l'échelle des bases de données avec Couchbase :
- Mise à l'échelle des bases de données multidimensionnelles - détails sur les services Couchbase, le rééquilibrage, les statuts, les événements et les travaux
- Pourquoi choisir une base de données NoSQL ? - ce qu'est le NoSQL, comment il fonctionne et à quoi servent les bases de données NoSQL
- Bases de données sans serveur - pour les développeurs, la persistance des données pour les applications et les applications prises en charge.
- Couchbase Capella DBaaS - la façon la plus simple et la plus rapide de commencer à utiliser Couchbase et d'éliminer la gestion des bases de données