Escalado de bases de datos horizontal frente al vertical

A medida que tu aplicación crece, tu base de datos puede convertirse en un cuello de botella de tu sistema si no cuentas con la infraestructura o las modificaciones adecuadas. Cuando el tráfico aumenta de forma repentina, los ingenieros suelen tener que tomar una decisión difícil: ¿deberían hacer que su servidor actual sea más potente o añadir más servidores? Esta guía explica la diferencia entre el escalado horizontal y el vertical, las ventajas y desventajas de cada uno y cómo elegir el enfoque adecuado para tus necesidades.

Escalar e innovar con las bases de datos de Google Cloud

¿Qué significa escalar una base de datos?

El escalado de bases de datos es el proceso mediante el cual se aumenta la capacidad, el rendimiento y la disponibilidad de un sistema. Permite que tu base de datos pueda admitir más datos y se adapte a un número creciente de usuarios.

En el sector, los expertos usan dos términos principales para referirse a este proceso. El escalado vertical es "escalar hacia arriba", mientras que el escalado horizontal es "escalar hacia afuera". Comprender estas dos rutas es el primer paso para crear un sistema de datos fiable.

¿Qué es el escalado vertical?

El escalado vertical, también conocido como escalado hacia arriba, consiste en añadir más potencia a tu servidor actual. Mantienes el mismo nodo de la base de datos, pero le asignas más CPU, memoria o almacenamiento para que pueda hacer su trabajo.

Suele considerarse la forma tradicional de escalar bases de datos relacionales. La arquitectura sigue siendo sencilla, porque todos tus datos siguen estando en un solo lugar.

Ventajas y retos del escalado vertical

Ventajas

  • Simplicidad: tu código sigue siendo el mismo porque la base de datos aparece como una sola máquina en tu aplicación
  • Mantenimiento más sencillo: solo tienes que gestionar y actualizar un servidor
  • Coherencia: no tienes que preocuparte por sincronizar datos entre varios servidores

Retos

  • Límites fijos: cada máquina tiene una capacidad máxima. Llega un momento en el que no puedes añadir más hardware a un solo servidor
  • Periodo de inactividad: a menudo, tienes que desconectar la base de datos un momento para realizar estas actualizaciones de hardware
  • Punto único de fallo: si ese servidor se estropea, toda tu aplicación puede dejar de funcionar

Los servicios de bases de datos gestionados, como Cloud SQL, pueden facilitar el escalado vertical, ya que permiten cambiar el tamaño de la máquina con solo unos clics. Sin embargo, es importante recordar que es posible que sigas topándote con los límites del hardware físico.

Ejemplos y casos prácticos habituales de escalado vertical

Pequeña escala: imagina una empresa emergente que está creciendo rápidamente y lleva una aplicación web con una sola base de datos. Cuando el tráfico empieza a aumentar, pueden pasarse a una instancia más grande, lo que a su vez les dará más potencia de computación para gestionar el aumento de visitantes sin necesidad de reescribir el código de la aplicación.

Nivel empresarial: una gran empresa con un sistema antiguo también puede escalar verticalmente. Estos sistemas suelen basarse en relaciones complejas entre los datos. Como su código está diseñado para una sola base de datos, pueden escalar verticalmente añadiendo más potencia a esa máquina en lugar de intentar pasarse a un sistema distribuido.

Necesidades internas: algunas empresas también utilizan el escalado vertical para la generación de informes internos. Pueden añadir más RAM al servidor de su base de datos principal para que pueda procesar consultas grandes y que consumen muchos recursos más rápido sin ralentizar la experiencia de los usuarios normales.

¿Qué es el escalado horizontal?

El escalado horizontal, o escalado hacia afuera, consiste en añadir más máquinas a tu sistema de bases de datos en lugar de hacer que una máquina sea más potente, lo que distribuye el trabajo entre un grupo de servidores. Es un concepto fundamental en el cloud computing moderno y en los sistemas distribuidos.

Para ello, los ingenieros utilizan técnicas como la fragmentación, que consiste en dividir los datos en fragmentos más pequeños en diferentes servidores, y la replicación, que consiste en copiar los datos en varios nodos.

Ventajas y retos del escalado horizontal

Ventajas

  • Crecimiento ilimitado: puedes seguir añadiendo más máquinas a medida que aumenten tus necesidades
  • Alta disponibilidad: como tienes varios servidores, el sistema permanece online aunque falle un nodo
  • Rentabilidad: puedes usar hardware estándar más barato en lugar de comprar un servidor enorme y caro

Retos

  • Complejidad: tu aplicación debe saber cómo comunicarse con varios servidores, lo que añade retos de diseño.
  • Coherencia de los datos: la gestión necesaria para mantener los datos sincronizados en muchas máquinas diferentes puede ser complicada
  • Cambios en el código: es posible que tengas que cambiar el código de la aplicación para gestionar un entorno de base de datos distribuida

Una base de datos SQL distribuida como Spanner puede ayudarte a gestionar estos retos. Spanner se encarga de sincronizar los datos entre varias máquinas, por lo que no tienes que dividirlos manualmente ni perder la seguridad de una base de datos relacional. Esto te permite escalar horizontalmente sin que tu sistema sea demasiado complejo.

Ejemplos y casos prácticos habituales de escalado horizontal

Capacidad: una plataforma de comercio electrónico global puede usar el escalado horizontal durante grandes eventos de rebajas. Cuando millones de personas visitan tu sitio a la vez, el sistema puede reequilibrar automáticamente los datos en nuevos nodos para gestionar el tráfico, lo que garantiza que ningún servidor se sature.

Redundancia: las aplicaciones financieras esenciales a veces también usan el escalado horizontal. Pueden distribuir su base de datos en varias ubicaciones físicas, conocidas como zonas de disponibilidad. Esta configuración ayuda a garantizar que, si un centro de datos tiene un problema, la aplicación siga funcionando, cumpliendo la promesa de mantener la coherencia de los datos.

Proximidad: una empresa de videojuegos internacional podría desplegar nodos de bases de datos en distintas partes del mundo. Al colocar un nodo de la base de datos más cerca del jugador, puede ofrecer una experiencia rápida y fluida con muy poca latencia. Por ejemplo, si un jugador vive en Tokio, los datos de su perfil se almacenan en un nodo de la base de datos de Tokio para que las lecturas y escrituras sean ultrarrápidas.

Preguntas frecuentes

Cuando hablamos del escalado en la nube, el escalado vertical consiste en aumentar el tamaño de la máquina virtual que aloja tu base de datos. El escalado horizontal consiste en añadir más instancias de máquinas a un grupo de autoescalado o a un clúster distribuido.

Algunas empresas utilizan una combinación de ambos métodos, lo que se denomina escalado diagonal. En este caso, se añaden más nodos a un sistema (escalado horizontal) y se mejora la capacidad del hardware (escalado vertical). Las grandes empresas pueden usar esta opción para disfrutar de lo mejor de ambos mundos, asegurándose de que su base de datos tenga una alta disponibilidad y la potencia suficiente para tareas locales complejas.

Sí. Aunque tradicionalmente era difícil, las bases de datos SQL distribuidas modernas, como Spanner, usan una sincronización de reloj avanzada y protocolos inteligentes para hacer posible el escalado horizontal y, al mismo tiempo, mantener tus datos organizados y precisos.

Presta atención a las señales de advertencia, como un uso elevado de la CPU o de la memoria, tiempos de consulta lentos y un aumento de la latencia para los usuarios durante las horas de mayor actividad. Todas estas son señales de que tu base de datos actual podría estar teniendo dificultades para seguirte el ritmo.

Diferencias clave entre el escalado horizontal y el vertical

La principal diferencia entre el escalado horizontal y el vertical es cómo añaden recursos a tu sistema. El escalado vertical aumenta la potencia de una máquina, mientras que el escalado horizontal añade más máquinas a tu red.

Función

Escalado vertical

Escalado horizontal

Concepto

Añadir recursos a una máquina

Añade más máquinas a la red

Capacidad

Límites de hardware estrictos

Prácticamente ilimitado

Inactividad

Suele requerir un periodo de inactividad

Sin periodos de inactividad (los nodos se añaden de forma dinámica)

Complejidad

Menor (arquitectura sencilla)

Mayor (requiere lógica distribuida)

Coste

Costes más altos para hardware de gran tamaño


Escalado lineal con máquinas estándar

Función

Escalado vertical

Escalado horizontal

Concepto

Añadir recursos a una máquina

Añade más máquinas a la red

Capacidad

Límites de hardware estrictos

Prácticamente ilimitado

Inactividad

Suele requerir un periodo de inactividad

Sin periodos de inactividad (los nodos se añaden de forma dinámica)

Complejidad

Menor (arquitectura sencilla)

Mayor (requiere lógica distribuida)

Coste

Costes más altos para hardware de gran tamaño


Escalado lineal con máquinas estándar

Comparación del escalado de SQL y NoSQL: desmontando los mitos

Hay varias ideas obsoletas sobre las bases de datos SQL y NoSQL que aún circulan por el sector. Gran parte de la dificultad de escalar las bases de datos SQL tradicionales se ha centrado en cómo gestionan las uniones y la coherencia de los datos. Distribuir una base de datos relacional entre muchos servidores puede ser un reto técnico, pero las soluciones distribuidas modernas han resuelto muchos de estos problemas, lo que permite a los desarrolladores escalar SQL horizontalmente sin perder las funciones relacionales que necesitan. A continuación, te mostramos tres ideas equivocadas comunes y la verdad que esconden:

Realidad: Sí se puede. Mientras que los diseños relacionales más antiguos favorecían el escalado vertical, los sistemas SQL distribuidos modernos permiten que las bases de datos relacionales abarquen varias máquinas. Este enfoque combina la coherencia de SQL con la capacidad de crecimiento horizontal de la arquitectura de nube moderna.

Verdad: NoSQL es eficaz para conjuntos de datos masivos y no estructurados, pero las bases de datos SQL suelen ser mejores para consultas complejas y estructuradas. En muchos casos, una base de datos SQL bien ajustada supera a NoSQL si tu aplicación se basa en relaciones profundas entre puntos de datos.

Verdad: no tienes que elegir. Los patrones de arquitectura modernos te permiten escalar tu sistema en muchas máquinas y, al mismo tiempo, mantener reglas estrictas de seguridad de los datos, lo que se conoce como cumplimiento de ACID, en todo el clúster.

Elegir la estrategia de escalabilidad adecuada

A la hora de decidir cómo quieres escalar tu base de datos, la elección suele depender de tu presupuesto, de la cantidad de datos que tengas y del tiempo de actividad que necesites. El consejo habitual es el siguiente:

  • Si tienes una cantidad de tráfico moderada y predecible, es más fácil empezar con el escalado vertical, ya que es más sencillo y rápido de configurar.
  • Si quieres crear una aplicación a escala mundial o necesitas que esté disponible de forma constante, te recomendamos que planifiques el escalado horizontal desde el principio. Requiere más trabajo de diseño, pero puede ahorrarte muchos quebraderos de cabeza más adelante.

Ve un paso más allá

Empieza a crear en Google Cloud con 300 USD en crédito gratis y más de 20 productos Always Free.

Google Cloud