J'ai rencontré de nombreuses bases de données NoSQL et bases de données SQL. Il existe différents paramètres pour mesurer la force et les faiblesses de ces bases de données et l'évolutivité est l'un d'entre eux. Quelle est la différence entre la mise à l'échelle horizontale et verticale de ces bases de données?
Réponses
Trop de publicités?Mise à l'échelle horizontale signifie que la mise à l'échelle en ajoutant plus de machines dans votre pool de ressources où la mise à l'échelle Verticale signifie que la mise à l'échelle en ajoutant plus de puissance (CPU, RAM) de votre ordinateur existant.
Dans une base de données mondiale horizontale-échelle est souvent basée sur le partitionnement des données, c'est à dire que chaque nœud ne contient qu'une partie des données , à la verticale-échelle les données se trouve sur un nœud unique et mise à l'échelle est effectuée par le biais de multi-cœur, c'est à dire la répartition de la charge entre le CPU et la RAM ressources de la machine.
Avec l'horizontale-échelle, il est souvent plus facile de faire évoluer dynamiquement en ajoutant plus de machines dans la piscine existante - Verticale-échelle est souvent limitée à la capacité d'une seule machine, mise à l'échelle au-delà de cette capacité implique souvent des temps d'arrêt et est livré avec une limite supérieure.
Un bon exemple pour la mise à l'échelle horizontale est Cassandra , MongoDB .. et un bon exemple pour la mise à l'échelle verticale est MySQL - Amazon RDS (Le nuage de version de MySQL) fournit un moyen facile d'évoluer verticalement par le passage de la petite à la plus grande des machines de ce processus implique souvent de temps d'arrêt.
Les Données en Mémoire Grilles telles que GigaSpaces XAP, Cohérence , etc.. sont souvent optimisées pour à la fois horizontale et verticale de mise à l'échelle, simplement parce qu'ils ne sont pas liés à disque. Horizontale-échelle à travers le partitionnement et verticale-échelle à travers un support multi-core.
Vous pouvez en lire plus sur ce sujet sur mes précédents posts: Scale-out vs Scale-up et Les Principes Communs Derrière le NOSQL Alternatives
Il existe une architecture qui n'était pas mentionné - SQL-base de données des services qui permettent la mise à l'échelle horizontale sans la complexité de manuel de la fragmentation. Ces services font de la fragmentation, dans le fond, de sorte qu'ils vous permettent d'exécuter un traditionnel de base de données SQL et d'évoluer comme vous le feriez avec des moteurs NoSQL comme MongoDB ou CouchDB. Deux services, je suis familier avec sont EnterpriseDB pour PostgreSQL et Xeround pour MySQL. J'ai vu un en profondeur post par Xeround ce qui explique pourquoi 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 car c'est un vendeur de poste. Également consulter Wikipedia Cloud entrée de Base de données, il y a une belle explication de SQL vs NoSQL et de service vs auto-hébergé, une liste des fournisseurs et des options d'échelle pour chaque combinaison. ;)
Oui mise à l'échelle horizontale implique l'ajout de plus de machines, mais il implique aussi que les machines sont égaux dans le cluster. MySQL peut l'échelle horizontale en termes de Lecture de données, par le biais de l'utilisation de répliques, mais une fois qu'il atteint la capacité du serveur mem/disque, vous avez pour commencer la fragmentation des données sur les serveurs. Cela devient de plus en plus complexes. Gardant souvent des données cohérentes à travers des répliques est un problème de taux de réplication sont souvent trop lent pour suivre les données de changement de taux.
Couchbase est aussi un fantastique NoSQL mise à l'Échelle Horizontale de la base de données, utilisé dans de nombreux commerces de la haute disponibilité des applications et des jeux, et sans doute le plus grand artiste de la catégorie. Il se répartit automatiquement les données à travers le cluster, l'ajout de nœuds est simple, et vous pouvez utiliser le matériel de base, moins cher vm instances (à l'aide de Gros au lieu de Haute Mem, Haut Disques des machines à AWS, par exemple). Il est construit au large de la Membase (Memcached), mais ajoute la persistance. Aussi, dans le cas de Couchbase, chaque nœud peut faire les lectures et les écritures, et sont égaux dans le cluster, avec seulement le basculement de la réplication (pas l'ensemble complet des données de réplication entre les serveurs comme dans mySQL).
En terme de Performance, vous pouvez voir un excellent Cisco de référence: http://blog.couchbase.com/understanding-performance-benchmark-published-cisco-and-solarflare-using-couchbase-server
Voici un excellent billet de blog sur Couchbase Architecture: http://horicky.blogspot.com/2012/07/couchbase-architecture.html
Traditionnels de bases de données relationnelles où conçue en tant que client/serveur systèmes de base de données. Ils peuvent être étendus à l'horizontale, mais le processus de le faire a tendance à être complexes et sujettes à erreur. NewSQL bases de données likeNuoDB sont la mémoire centrée sur base de données distribuée de systèmes conçus à l'échelle horizontalement tout en maintenant le SQL/propriétés ACID des SGBDR traditionnels.
Pour plus d'informations sur NuoDB, de lire leur livre blanc technique à http://goo.gl/uzLIWB.