Diferencia entre escalar horizontalmente y verticalmente para bases de datos


Me he encontrado con muchas bases de datos NoSQL y bases de datos SQL. Hay diferentes parámetros para medir la fortaleza y las debilidades de estas bases de datos y la escalabilidad es uno de ellos. ¿Cuál es la diferencia entre escalar horizontalmente y verticalmente estas bases de datos?

Author: London guy, 2012-07-29

9 answers

Escalado horizontal significa que escala agregando más máquinas a su conjunto de recursos, mientras que Escalado vertical significa que escala agregando más potencia (CPU, RAM) a una máquina existente.

Una manera fácil de recordar esto es pensar en una máquina en un rack de servidores, agregamos más máquinas en la dirección horizontal y agregamos más recursos a una máquina en la dirección vertical.

                  Escala Horizontal / Visualización de Escala Vertical

En un mundo de base de datos, el escalado horizontal a menudo se basa en la partición de los datos, es decir, cada nodo contiene solo una parte de los datos, en el escalado vertical los datos residen en un solo nodo y el escalado se realiza a través de múltiples núcleos, es decir, la distribución de la carga entre los recursos de CPU y RAM de esa máquina.

Con el escalado horizontal, a menudo es más fácil escalar dinámicamente agregando más máquinas al grupo existente. capacidad de una sola máquina, escalar más allá de esa capacidad a menudo implica tiempo de inactividad y viene con un límite superior.

Buenos ejemplos de escalado horizontal son Cassandra, MongoDB, Google Cloud Spanner.. y un buen ejemplo de escalado vertical es MySQL-Amazon RDS (La versión en la nube de MySQL). Proporciona una manera fácil de escalar verticalmente al cambiar de máquinas pequeñas a más grandes. Este proceso a menudo implica tiempo de inactividad.

Cuadrículas de datos en memoria como GigaSpaces XAP, Coherence etc.. a menudo están optimizados para escalado horizontal y vertical simplemente porque no están vinculados al disco. Horizontal-escalado a través de particiones y vertical-escalado a través de soporte multi-core.

Puedes leer más sobre este tema en mis posts anteriores: Scale-out vs Scale-up y Los Principios Comunes Detrás de las Alternativas NOSQL

 828
Author: Nati Shalom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-05 09:57:44

La escalabilidad horizontal es la capacidad de aumentar la capacidad conectando múltiples entidades de hardware o software para que funcionen como una sola unidad lógica.

Cuando los servidores están agrupados, el servidor original se está escalando horizontalmente. Si un clúster requiere más recursos para mejorar el rendimiento y proporcionar alta disponibilidad (HA), un administrador puede escalarlo agregando más servidores al clúster.

Una ventaja importante de la escalabilidad horizontal es que puede proporcione a los administradores la capacidad de aumentar la capacidad sobre la marcha. Otra ventaja es que, en teoría, la escalabilidad horizontal solo está limitada por el número de entidades que se pueden conectar con éxito. El sistema de almacenamiento distribuido Cassandra, por ejemplo, se ejecuta sobre cientos de nodos básicos repartidos por diferentes centros de datos. Debido a que el hardware básico se escala horizontalmente, Cassandra es tolerante a fallas y no tiene un solo punto de falla (SPoF).

Vertical la escalabilidad, por otro lado, aumenta la capacidad al agregar más recursos, como más memoria o una CPU adicional, a una máquina. Escalar verticalmente, lo que también se denomina escalar, generalmente requiere tiempo de inactividad mientras se agregan nuevos recursos y tiene límites definidos por el hardware. Cuando los clientes de Amazon RDS necesitan escalar verticalmente, por ejemplo, pueden cambiar de una máquina más pequeña a una más grande, pero la instancia de RDS más grande de Amazon solo tiene 68 GB de memoria.

Escalado horizontalmente tiene ventajas y desventajas. Por ejemplo, agregar computadoras de bajo costo a un clúster puede parecer una solución rentable a primera vista, pero es importante que el administrador sepa si los costos de licencia para esos servidores adicionales, el costo de operaciones adicionales de alimentación y refrigeración y el gran espacio que ocuparán en el centro de datos realmente hacen que escalar horizontalmente sea una mejor opción que escalar verticalmente.

 31
Author: seriy23,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-01 10:53:05

Hay una arquitectura adicional que no se mencionó: los servicios de base de datos basados en SQL que permiten el escalado horizontal sin la complejidad del sharding manual. Estos servicios hacen el sharding en segundo plano, por lo que le permiten ejecutar una base de datos SQL tradicional y escalar como lo haría con motores NoSQL como MongoDB o CouchDB. Dos servicios con los que estoy familiarizado son EnterpriseDB para PostgreSQL y Xeround para MySQL. Vi un post en profundidad de Xeround lo que explica por qué la escalabilidad horizontal en bases de datos SQL es difícil y cómo lo hacen de manera diferente: trate esto con un grano de sal, ya que es una publicación de proveedor. También echa un vistazo a Wikipedia Cloud Database entry, hay una buena explicación de SQL vs.NoSQL y service vs. self-hosted, una lista de proveedores y opciones de escalado para cada combinación. ;)

 8
Author: Dina Kaiser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-10 09:52:20

Sí Escalar horizontalmente significa agregar más máquinas, pero también implica que las máquinas son iguales en el clúster. MySQL puede escalar horizontalmente en términos de lectura de datos, a través del uso de réplicas, pero una vez que alcanza la capacidad del mem/disco del servidor, debe comenzar a fragmentar datos entre servidores. Esto se vuelve cada vez más complejo. A menudo, mantener la coherencia de los datos entre las réplicas es un problema, ya que las tasas de replicación a menudo son demasiado lentas para mantenerse al día con las tasas de cambio de datos.

Couchbase es también una fantástica base de datos de escala Horizontal NoSQL, utilizada en muchas aplicaciones y juegos comerciales de alta disponibilidad y posiblemente la de mayor desempeño en la categoría. Particiona los datos automáticamente en todo el clúster, agregar nodos es simple y puede usar hardware de productos básicos, instancias de vm más baratas (usar máquinas grandes en lugar de Mem altas, máquinas de disco alto en AWS, por ejemplo). Está construido a partir de la Membase (Memcached) pero añade persistencia. Además, en el caso de Couchbase, cada node puede realizar lecturas y escrituras, y son iguales en el clúster, con solo replicación de conmutación por error (no replicación completa de conjuntos de datos en todos los servidores como en MySQL).

En cuanto al rendimiento, puede ver un excelente punto de referencia de Cisco: http://blog.couchbase.com/understanding-performance-benchmark-published-cisco-and-solarflare-using-couchbase-server

Aquí está una gran entrada de blog sobre la arquitectura Couchbase: http://horicky.blogspot.com/2012/07/couchbase-architecture.html

 7
Author: scalabl3,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-01 06:39:47

Las bases de datos relacionales tradicionales se diseñaron como sistemas de base de datos cliente/servidor. Se pueden escalar horizontalmente, pero el proceso para hacerlo tiende a ser complejo y propenso a errores. Las bases de datos NewSQL likeNuoDB son sistemas de base de datos distribuidos centrados en la memoria diseñados para escalar horizontalmente mientras se mantienen las propiedades SQL / ACID de los RDBMS tradicionales.

Para obtener más información sobre NuoDB, lea su documento técnico en http://goo.gl/uzLIWB .

 6
Author: Michael Waclawiczek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-14 12:03:58

Comencemos con la necesidad de escalar que está aumentando los recursos para que su sistema ahora pueda manejar más solicitudes de las que podía antes .

Cuando se da cuenta de que su sistema se está volviendo lento y no puede manejar el número actual de solicitudes , necesita escalar el sistema .

Esto le proporciona dos opciones , ya sea aumentar los recursos en el servidor que está utilizando actualmente , es decir , aumentar la cantidad de ram, cpu, gpu y otros recursos.Esto es conocido como escalado vertical .

El escalado vertical suele ser costoso . No hace que el sistema sea tolerante a errores, es decir, si está escalando la aplicación que se ejecuta con un solo servidor , si ese servidor se cae , su sistema se caerá . También la cantidad de hilos sigue siendo la misma en el escalado vertical . El escalado vertical puede requerir que su sistema se baje por un momento cuando se lleva a cabo el proceso . El aumento de los recursos en un servidor requiere un reinicio y poner su sistema abajo .

Otra solución a este problema es aumentar la cantidad de servidores presentes en el sistema . Esta solución es muy utilizada en la industria tecnológica . Esto eventualmente disminuirá la tasa de solicitudes por segundo en cada servidor . Si necesita escalar el sistema , simplemente agregue otro servidor y listo . No sería necesario reiniciar el sistema . El número de hilos en cada sistema disminuye, lo que conduce a un alto rendimiento . Segregar las solicitudes, igualmente a cada una de las solicitudes servidor, necesita agregar balanceador de carga que actuaría como proxy inverso a los servidores web . Todo este sistema puede ser llamado como un solo cluster . Su sistema puede contener un gran número de solicitudes que requerirían más cantidad de clústeres como este .

Espero que obtengas todo el concepto de introducir el escalado en el sistema

 6
Author: yathartha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-13 07:41:05

Las bases de datos SQL como Oracle, db2 también admiten el escalado horizontal a través del clúster de discos compartidos. Por ejemplo Oracle RAC, IBM DB2 purescale o Sybase ASE Cluster edition. Se puede agregar un nuevo nodo al sistema Oracle RAC o al sistema DB2 purescale para lograr el escalado horizontal.

Pero el enfoque es diferente de las bases de datos NoSQL (como mongodb, CouchDB o IBM Cloudant) es que el sharding de datos no es parte del escalado Horizontal. En las bases de datos NoSQL los datos se shraded durante horizontal escalar.

 5
Author: Debasish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-09 10:09:39

Todas las demás respuestas parecen ya bastante completas, pero no vi Google Cloud Spanner como un ejemplo de una base de datos relacional con escala horizontal, por eso estoy agregando mi pequeña contribución.

 3
Author: Erickson Filipe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-04 11:03:06

Agregar muchos equilibradores de carga crea sobrecarga y latencia adicionales y ese es el inconveniente para escalar horizontalmente en bases de datos nosql. Es como la pregunta por qué la gente dice que no se recomienda RPC ya que no es robusto.

Creo que en un sistema real deberíamos usar bases de datos sql y nosql para utilizar las capacidades de computación multinúcleo y en la nube de los sistemas actuales.

Por otro lado, las consultas transaccionales complejas tienen un alto rendimiento si las bases de datos sql como oracle está siendo utilizado. NoSQL podría usarse para bigdata y escalabilidad horizontal mediante sharding.

 0
Author: farshad-nsh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-20 11:51:19