Escalabilidad de Bases de Datos. ¿Cuál es la diferencia entre la escala horizontal y vertical? ¿Cuál es mejor y por qué? Estamos datos todos los días. Y también lo son los miles de millones de personas en el mundo. Cada base de debe escalarse para abordar la gran cantidad de datos que se generan cada día. generando datos En definitiva, una base de datos tiene que para que esté en todo momento. Cuando la memoria de la base de datos se agota o cuando no puede manejar varias solicitudes, no es escalable. ser escalable disponible La escalabilidad es la capacidad de un sistema, red o proceso para manejar una cantidad creciente de trabajo, o su potencial para ampliarse para adaptarse a ese crecimiento. —Wikipedia El escalado se puede clasificar en escalado vertical y horizontal. Elasticidad La elasticidad es el grado en que un sistema puede adaptarse a los cambios en la carga de trabajo mediante el aprovisionamiento y desaprovisionamiento de recursos según demanda, de modo que, En cada momento, los recursos disponibles coinciden lo más posible con la demanda actual. — NuoDB Un sistema es elástico cuando se puede de la aplicación en uso. escalar fácilmente para abordar las necesidades de recursos Tipos de escalado Fuente : Turbonomic Blog Imagina que estás comprando un coche nuevo. Tienes un auto Nissan que puede acomodar a 4 personas en él. Ahora, digamos que usted y 10 de sus amigos necesitan irse de vacaciones. ¿Qué harías? ¿Comprarías un coche más grande? — Escala vertical ¿Comprarías un auto Nissan más? — Escala horizontal Esta es una explicación básica de los dos tipos. Aprendamos dónde se puede usar cada tipo y cuál es mejor. Escalado vertical: escalar hacia arriba Fuente: Paquete El escalado vertical se adoptó cuando la base de datos no podía manejar la gran cantidad de datos. Suponga que tiene un servidor de base de datos con 10 GB de memoria y se ha agotado. Ahora, para manejar más datos, compra un servidor caro con memoria de 2 TB. Su servidor ahora puede manejar grandes cantidades de datos. Esto se llama . Está comprando un solo servidor caro y más grande. escalado vertical El proceso implica agregar más potencia, como CPU y potencia de disco, para mejorar su proceso de almacenamiento. Ahora, ¿es esto útil? Depende de la aplicación y su uso. Tomemos, por ejemplo, Instagram. Cuando se inventó, se dirigió a una pequeña multitud. Entonces, un solo servidor hubiera sido suficiente. Pero ahora, millones de personas usan la aplicación. Es imposible comprar un servidor de este tipo que pueda almacenar todos los datos. En segundo lugar, los datos también deben consultarse. Cuando un solo nodo enfrenta muchas consultas, es difícil de manejar. Para una aplicación grande que implica un montón de consultas, el escalado vertical es definitivamente un no-no. Si su aplicación involucra un rango limitado de usuarios y consultas mínimas, puede continuar con este tipo de escalado. utilizan principalmente la escala vertical. Las bases de datos relacionales Ventajas ya que todo existe en un único servidor. No es necesario administrar varias instancias. Sencillo, , porque tiene una RAM y una potencia de memoria más rápidas en cada actualización. Ganancia de rendimiento Mismo Código. : no necesita cambiar su implementación o su código en absoluto. Sin cambios Desventajas Dificultad para realizar múltiples consultas simultáneamente. Las posibilidades de tiempo de inactividad son altas cuando el servidor supera la carga máxima. Caro. Después de todo, los recursos de hardware son costosos. Escalado horizontal — Escalado horizontal Fuente: Paquete El escalado horizontal, como se muestra en la imagen, es escalar el servidor horizontalmente agregando más máquinas. Divide el conjunto de datos y distribuye los datos en varios servidores o fragmentos. Cada fragmento es una base de datos independiente. En lugar de comprar un solo servidor de 2 TB, está comprando doscientos servidores de 10 GB. La escala vertical se enfoca en aumentar la potencia y la memoria, mientras que la escala horizontal aumenta la cantidad de máquinas. La misma pregunta. ¿Cómo es útil? ¿Recuerdas el problema de Instagram que discutimos antes? Busquemos una solución para ello. Suponga que, en lugar de un solo servidor, compra varias máquinas del mismo tamaño y potencia. Supongamos que un servidor almacenó información de perfil de usuario, otro almacenó historias y momentos destacados y otro almacenó imágenes. Ahora, la consulta se dirige a servidores específicos, lo que y brinda reduce la carga en el servidor un mejor rendimiento. Genial, ¿eh? Si su aplicación implica transacciones atómicas, es mejor que utilice el escalado vertical. Si su aplicación puede permitir la redundancia e implica menos uniones, entonces puede usar la escala horizontal. Las bases de datos utilizan principalmente la escala horizontal. Es menos adecuado para RDBMS ya que se basa en reglas estrictas de consistencia y atomicidad. NoSQL Ventajas Es en comparación con el escalado vertical. barato Menos carga, mejor rendimiento. Las posibilidades de tiempo de inactividad son menores. Resiliencia y tolerancia a fallos. Desventajas Hacer uniones es difícil, ya que puede implicar la comunicación entre servidores. La consistencia eventual sólo es posible. Puede que no sea el más adecuado para transacciones bancarias, que ocurren simultáneamente. No podemos categorizar fácilmente cada función para cada servidor. A veces, las imágenes pueden ocupar más espacio del que puede manejar un solo servidor. ¿Por qué la gente opta por el escalado horizontal? Para decirlo en palabras simples, la escala horizontal es La elasticidad, como se dijo antes, es la capacidad de manejar los cambios en la carga de trabajo. elástica. Además, es Puede mantener sus recursos existentes en línea y agregar tantos servidores como desee. Dado que cada uno de ellos es independiente, no causa ningún daño. dinámico. se almacenan principalmente en bases de datos NoSQL, que siguen a la fragmentación horizontal de las bases de datos. Los grandes datos Esta es la razón por la que NoSQL usa escalamiento horizontal o fragmentación. Dado que sigue el concepto , no hay necesidad de un solo punto de verdad. Puede almacenar de desnormalización duplicados. Por ejemplo, si desea obtener la cantidad frecuente de etiquetas utilizadas, puede mantener una tabla separada con el ID de usuario y la etiqueta utilizada. NoSQL no sigue ningún concepto de clave externa o normalización. Replicación para lograr HA (alta disponibilidad) Escalar es aumentar nuestros recursos para manejar datos y consultas. La replicación consiste en almacenar copias de seguridad de datos actualizados para superar fallas en los nodos. Replicación en RDBMS La replicación en RDBMS es principalmente , que involucra múltiples réplicas que tienen un solo maestro. Master Slave Replication El maestro realiza y registra las escrituras y luego pasa la información actualizada a los esclavos (réplicas). Los esclavos pueden realizar lecturas en cualquier momento. Esto es para reducir la carga en la réplica maestra. Cuando un nodo maestro deja de funcionar, cualquiera de las réplicas se convierte en el maestro. Las desventajas de este enfoque son que, si el maestro deja de funcionar mientras realiza una escritura, existe la posibilidad de que la en las réplicas esclavas. Entonces, la última transacción podría perderse. información no se actualice Replicación en NoSQL Toma a Casandra por ejemplo. La replicación ocurre en Cassandra usando , que contienen filas de datos aleatoriamente. nodos virtuales La categorización de una fila en particular a un nodo ocurre mediante el hash de la clave principal. Cada nodo en el clúster tiene un rango específico. El valor hash resultante de la fila determina su posición de nodo. Considere este ejemplo de claves de partición y sus valores hash Murmur3. Datos de ejemplo de la documentación de DataStax Cada valor de datos se almacena de acuerdo con el valor de rango del nodo en el que se encuentra. Fuente: documentación de DataStax No hay un nodo maestro. El proceso de lectura se realiza leyendo todas las réplicas y devolviendo el valor más actualizado. Luego se realiza una para otros valores, en caso de que esté desactualizado. reparación de lectura Escribo historias sobre lecciones de vida, codificación y tecnología. Para leer más, sígueme en y Twitter Medium.