<span>Estamos</span> <a href="//gzht888.com/tagged/generating" target="_blank">generando</a> datos todos los días. Y también lo son los miles de millones de personas en el mundo. Cada base de <a href="//gzht888.com/tagged/database" target="_blank">datos</a> debe escalarse para abordar la gran cantidad de datos que se generan cada día.
Companies Mentioned
Escalabilidad de Bases de Datos. ¿Cuál es la diferencia entre la escala horizontal y vertical? ¿Cuál es mejor y por qué?
Estamos generando datos todos los días. Y también lo son los miles de millones de personas en el mundo. Cada base de datos debe escalarse para abordar la gran cantidad de datos que se generan cada día.
En definitiva, una base de datos tiene que ser escalable para que esté disponible en todo momento. Cuando la memoria de la base de datos se agota o cuando no puede manejar varias solicitudes, no es escalable.
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.
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 escalar fácilmente para abordar las necesidades de recursos de la aplicación en uso.
Tipos de escalado
Fuente : 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: 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 escalado vertical . Está comprando un solo servidor caro y más grande.
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.
Las bases de datos relacionales utilizan principalmente la escala vertical.
Ventajas
Sencillo, ya que todo existe en un único servidor. No es necesario administrar varias instancias.
Ganancia de rendimiento , porque tiene una RAM y una potencia de memoria más rápidas en cada actualización.
Mismo Código. Sin cambios : no necesita cambiar su implementación o su código en absoluto.
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:
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 reduce la carga en el servidor y brinda 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 NoSQL utilizan principalmente la escala horizontal. Es menos adecuado para RDBMS ya que se basa en reglas estrictas de consistencia y atomicidad.
Ventajas
Es barato en comparación con el escalado vertical.
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 elástica. La elasticidad, como se dijo antes, es la capacidad de manejar los cambios en la carga de trabajo.
Además, es dinámico. 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.
Los grandes datos se almacenan principalmente en bases de datos NoSQL, que siguen a la fragmentación horizontal de las bases de datos.
Esta es la razón por la que NoSQL usa escalamiento horizontal o fragmentación.
Dado que sigue el concepto de desnormalización , no hay necesidad de un solo punto de verdad. Puede almacenar 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 Master Slave Replication , que involucra múltiples réplicas que tienen un solo maestro.
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 información no se actualice en las réplicas esclavas. Entonces, la última transacción podría perderse.
Replicación en NoSQL
Toma a Casandra por ejemplo.
La replicación ocurre en Cassandra usando nodos virtuales , que contienen filas de datos aleatoriamente.
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
Cada valor de datos se almacena de acuerdo con el valor de rango del nodo en el que se encuentra. Fuente:
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 reparación de lectura para otros valores, en caso de que esté desactualizado.
Escribo historias sobre lecciones de vida, codificación y tecnología. Para leer más, sígueme en y