Différence entre l'échelle horizontale et verticale pour les bases de données

j'ai rencontré de nombreuses bases de données NoSQL et SQL. Il existe différents paramètres pour mesurer la force et les faiblesses de ces bases de données et l'évolutivité en est un. Quelle est la différence entre l'échelle horizontale et verticale de ces bases de données?

467
demandé sur London guy 2012-07-29 12:40:08

9 réponses

mise à l'échelle horizontale signifie que vous mettez à l'échelle en ajoutant plus de machines dans votre réserve de ressources tandis que mise à l'échelle verticale signifie que vous mettez à l'échelle en ajoutant plus de puissance (CPU, RAM) à une machine existante .

un moyen facile de se souvenir de cela est de penser à une machine sur un rack serveur, nous ajoutons plus de machines à travers le horizontale direction et ajouter plus de ressources à une machine dans le direction verticale .

Horizontal Scaling/Vertical Scaling Visualisation

dans un monde de base de données, la mise à l'échelle horizontale est souvent basée sur le partitionnement des données, c'est-à-dire que chaque noeud ne contient qu'une partie des données; dans la mise à l'échelle verticale, les données résident sur un seul noeud et la mise à l'échelle se fait par multi-noyau, c'est-à-dire en répartissant la charge entre les ressources CPU et RAM de la machine.

avec mise à l'échelle horizontale il est souvent plus facile de mettre à l'échelle de façon dynamique en ajoutant plus de machines dans le bassin existant-la mise à l'échelle verticale est souvent limitée à la capacité d'une seule machine, la mise à l'échelle au - delà de cette capacité implique souvent des temps d'arrêt et vient avec une limite supérieure.

de Bons exemples de mise à l'échelle horizontale sont Cassandra, MongoDB, Google Cloud Clé .. et un bon exemple d'échelle verticale est MySQL-Amazon RDS (la version cloud de MySQL). Il offre un moyen facile de dimensionner verticalement en passant de petites machines à de plus grandes. Ce processus implique souvent des temps d'arrêt.

En Mémoire des Grilles de Données telles que GigaSpaces XAP , "1519290920 de" Cohérence etc.. sont souvent optimisés pour l'échelle horizontale et verticale simplement parce qu'ils ne sont pas liés au disque. Mise à l'échelle horizontale par partitionnement et mise à l'échelle verticale par support multi-core.

vous pouvez lire plus à ce sujet dans mes billets précédents: Scale-out vs Scale-up et the Common Principles Behind the NOSQL Alternatives

828
répondu Nati Shalom 2018-04-05 09:57:44

l'évolutivité horizontale est la capacité d'augmenter la capacité en connectant plusieurs entités matérielles ou logicielles afin qu'elles fonctionnent comme une seule unité logique.

lorsque les serveurs sont groupés, le serveur d'origine est mis à l'échelle horizontale. Si un cluster nécessite plus de ressources pour améliorer les performances et fournir une haute disponibilité (HA), un administrateur peut mettre à l'échelle en ajoutant plus de serveurs au cluster.

un avantage important de évolutivité horizontale est qu'il peut offrir aux administrateurs la possibilité d'augmenter la capacité à la volée. Un autre avantage est qu'en théorie, l'évolutivité horizontale n'est limitée que par le nombre d'entités pouvant être connectées avec succès. Le système de stockage distribué Cassandra, par exemple, fonctionne sur des centaines de noeuds de marchandises réparties à travers différents centres de données. Parce que le matériel de base est étalonné horizontalement, Cassandra est tolérant aux défauts et n'a pas un seul point de echec (SPoF).

évolutivité verticale, d'autre part, augmente la capacité en ajoutant plus de ressources, comme plus de mémoire ou un CPU supplémentaire, à une machine. La mise à l'échelle verticale, qui est aussi appelée mise à l'échelle vers le haut, nécessite généralement un temps d'arrêt pendant que de nouvelles ressources sont ajoutées et a des limites qui sont définies par le matériel. Lorsque les clients D'Amazon RDS ont besoin d'une échelle verticale, par exemple, ils peuvent passer d'une machine plus petite à une machine plus grande, mais la plus grande instance RDS D'Amazon n'a que 68 Go de mémoire.

échelle horizontale présente à la fois des avantages et des inconvénients. Par exemple, l'ajout d'ordinateurs bon marché à un cluster pourrait sembler être une solution rentable à première vue, mais il est important pour l'administrateur de savoir si les coûts de licence pour ces serveurs supplémentaires, les coûts d'exploitation supplémentaires de l'alimentation et du refroidissement et la grande empreinte qu'ils occuperont dans le centre de données fait vraiment échelle horizontale meilleur choix que l'échelle verticale.

31
répondu seriy23 2015-06-01 10:53:05

il y a une architecture supplémentaire qui n'a pas été mentionnée - des services de base de données basés sur SQL qui permettent une mise à l'échelle horizontale sans la complexité de l'aiguisage manuel. Ces services font le découpage en arrière-plan, de sorte qu'ils vous permettent d'exécuter une base de données SQL traditionnelle et de mettre à l'échelle comme vous le feriez avec des moteurs NoSQL comme MongoDB ou CouchDB. Deux services que je connais sont Enterprise B pour PostgreSQL et Xeround pour MySQL. J'ai vu un "post en profondeur de Xeround qui explique pourquoi le scale-out sur les bases de données SQL est difficile et comment ils le font différemment - traiter cela avec un grain de sel comme c'est un post vendeur. Consultez aussi la rubrique De La base de données en nuage de Wikipédia , il y a une belle explication de SQL vs. NoSQL et de service vs. auto-hébergé, une liste de fournisseurs et des options de mise à l'échelle pour chaque combinaison. ;)

8
répondu Dina Kaiser 2012-09-10 09:52:20

Oui Mettre à l'échelle horizontalement signifie ajouter plus de machines, mais cela implique aussi que les machines sont égales dans le groupe. MySQL peut se dimensionner horizontalement en termes de lecture de données, grâce à l'utilisation de répliques, mais une fois qu'il atteint la capacité du serveur mem/disque, vous devez commencer à partager des données entre les serveurs. Cela devient de plus en plus complexes. Le maintien de la cohérence des données entre les répliques est souvent un problème, car les taux de réplication sont souvent trop lents pour suivre les taux de changement des données.

Couchbase est également une fantastique base de données NoSQL de mise à L'échelle horizontale, utilisée dans de nombreuses applications commerciales de haute disponibilité et les jeux et sans doute le plus haut niveau dans la catégorie. Il divise les données automatiquement à travers le cluster, l'ajout de noeuds est simple, et vous pouvez utiliser du matériel de base, des instances vm moins chères (en utilisant grand au lieu de Mem élevé, machines à disque élevé à AWS par exemple). Il est construit à partir de la Membase (Memcached) mais ajoute de la persistance. Aussi, dans le cas de Couchbase, chaque noeud peut faire des lectures et des Écritures, et sont égaux dans le cluster, avec seulement la réplication de failover (pas la réplication complète d'un ensemble de données sur tous les serveurs comme dans mySQL).

du point de vue des performances, vous pouvez voir une excellente référence Cisco: http://blog.couchbase.com/understanding-performance-benchmark-published-cisco-and-solarflare-using-couchbase-server

voici un grand billet de blog sur L'Architecture de Couchbase: http://horicky.blogspot.com/2012/07/couchbase-architecture.html

7
répondu scalabl3 2012-08-01 06:39:47

bases de données relationnelles traditionnelles conçues comme des systèmes de bases de données client/serveur. Ils peuvent être mis à l'échelle horizontale, mais le processus pour le faire tend à être complexe et sujet à des erreurs. Les bases de données NewSQL comme uodb sont des systèmes de bases de données distribuées centrées sur la mémoire et conçues pour s'étendre horizontalement tout en maintenant les propriétés SQL/acide des RDBM traditionnels.

pour plus d'information sur NuoDB, lire leur livre blanc technique à http://goo.gl/uzLIWB .

6
répondu Michael Waclawiczek 2014-07-14 12:03:58

permet de commencer avec le besoin de mise à l'échelle qui augmente les ressources de sorte que votre système peut maintenant traiter plus de requêtes qu'il ne le pourrait plus tôt .

lorsque vous réalisez que votre système est lent , et qu'il est incapable de traiter le nombre actuel de requêtes , vous devez mettre le système à l'échelle .

cela vous fournit deux options , soit vous augmentez les ressources dans le serveur que vous utilisez actuellement I. e augmenter la quantité de ram, cpu , gpu et d'autres ressources .Ceci est connu comme la mise à l'échelle verticale .

l'échelle verticale est généralement coûteuse . Cela ne rend pas le défaut du système tolérant , I. e si vous mettez à l'échelle une application fonctionnant avec un seul serveur , si ce serveur tombe en panne, votre système tombera en panne . Aussi la quantité de fils reste la même dans l'échelle verticale . La mise à l'échelle verticale peut exiger que votre système descende pendant un moment où le processus a lieu . L'augmentation des ressources sur un serveur nécessite redémarrez et désactivez votre système .

une autre solution à ce problème est d'augmenter le nombre de serveurs présents dans le système . Cette solution est très utilisée dans l'industrie de technologie . Cela diminuera éventuellement le taux de requête par seconde dans chaque serveur . Si vous avez besoin à l'échelle du système , il suffit d'ajouter un autre serveur , et vous avez terminé . Vous ne seriez pas tenu de redémarrer le système . Le nombre de fils dans chaque système diminue, ce qui donne un débit élevé . De séparez les requêtes , de la même façon à chaque serveur d'application, vous devez ajouter l'équilibreur de charge qui agirait comme mandataire inverse aux serveurs web . Ce système entier peut être appelé en un seul groupe. Votre système peut contenir un grand nombre de requêtes qui nécessiteraient un plus grand nombre de clusters comme celui-ci .

J'espère que vous obtenez tout le concept de l'introduction de la mise à l'échelle du système

6
répondu yathartha 2018-02-13 07:41:05

les bases de données SQL comme Oracle, db2 prennent également en charge l'échelle horizontale par le biais D'un cluster de disques partagés. Par exemple Oracle RAC, IBM DB2 purescale ou Sybase ASE Cluster edition. Un nouveau noeud peut être ajouté au système RAC D'Oracle ou au système purescale de DB2 pour obtenir une mise à l'échelle horizontale.

mais l'approche est différente de NoSQL bases de données (comme mongodb, CouchDB ou IBM Cloudant) est que le partage des données ne fait pas partie de l'échelle horizontale. Dans les bases de données noSQL les données sont déchiquetées pendant la mise à l'échelle horizontale.

5
répondu Debasish 2017-09-09 10:09:39

toutes les autres réponses semblent déjà tout à fait complètes, mais je n'ai pas vu Google Cloud Spanner comme un exemple d'une base de données relationnelle avec mise à l'échelle horizontale, c'est pourquoi j'ajoute ma petite contribution.

3
répondu Erickson Filipe 2018-04-04 11:03:06

L'ajout de beaucoup de répartiteurs de charge crée un surplus de temps et de latence et c'est l'inconvénient de la mise à l'échelle horizontale dans les bases de données nosql. C'est comme la question pourquoi les gens disent que RPC N'est pas recommandé car il n'est pas robuste.

je pense que dans un système réel, nous devrions utiliser à la fois les bases de données sql et nosql pour utiliser les capacités de multicore et de cloud computing des systèmes actuels.

d'un autre côté, les requêtes transactionnelles complexes ont performance si des bases de données sql comme oracle sont utilisées. NoSql pourrait être utilisé pour bigdata et scalability horizontale par sharding.

0
répondu farshad-nsh 2018-04-20 11:51:19