InternacionalAcceso estudiantes

¿Qué es el sharding, cómo funciona y para qué se usa?

El sharding es un concepto basado en la división de bases de datos grandes en otras más pequeñas para aumentar la capacidad de almacenamiento del sistema y su rapidez.

Consiste en distribuir un gran conjunto de datos en varias bases de datos.

La evolución tecnológica de la última década va acompañada de un crecimiento exponencial de la información que generan, almacenan y procesan las organizaciones, haciendo que las bases de datos que soportan las aplicaciones de negocio se conviertan en un cuello de botella para el funcionamiento de estas. Para evitarlo o mitigarlo, el sharding o fragmentación se convierte en una técnica fundamental.

El sharding es un método que consiste en distribuir un gran conjunto de datos en varias bases de datos y almacenarlo entre distintas máquinas. Esto es, los conjuntos de datos grandes se dividen en fragmentos más pequeños y se almacenan en múltiples nodos de datos, lo que aumenta la capacidad de almacenamiento total del sistema y su rapidez.

Esta técnica se basa en el concepto de escalado horizontal, que consiste en incorporar al sistema nodos adicionales que comparten la carga de trabajo y dotan al sistema de una escalabilidad casi ilimitada permitiéndole trabajar con el Big Data.

La fragmentación implica una configuración compleja, el mantenimiento de los fragmentos de datos en cada nodo y el enrutamiento de las cargas de trabajo, por lo que es necesario considerar si otras alternativas menos costosas podrían ser suficientes:

  • Escalado vertical, es decir, incrementar los recursos de la máquina que soporta la BBDD (RAM, CPU, disco…).
  • Desplegar la base de datos en una máquina dedicada distinta a las otras que soportan la aplicación o sistema (frontend, backend, etc.).
  • Si la carga de trabajo de la aplicación o sistema es principalmente de lectura, una alternativa interesante es la replicación, que consisten en desplegar copias adicionales de la base de datos y distribuir las operaciones de lectura mediante un balanceo de carga o mediante el enrutamiento de consultas geolocalizadas.

Ventajas del sharding

La fragmentación le permite escalar una base de datos para manejar una mayor carga de trabajo, de manera casi ilimitada, al proporcionar un mayor rendimiento de lectura/escritura, capacidad de almacenamiento y alta disponibilidad:

Mayor rendimiento de lectura/escritura

Al distribuir el conjunto de datos en varios fragmentos, la capacidad de operaciones de lectura y escritura aumenta siempre que las operaciones de lectura y escritura se limiten a un solo fragmento.

sharding

Mayor capacidad de almacenamiento

De manera similar, al aumentar la cantidad de fragmentos también puede incrementar la capacidad de almacenamiento total general, lo que permite una escalabilidad casi infinita.

Alta disponibilidad

Finalmente, los fragmentos brindan alta disponibilidad de dos maneras. En primer lugar, dado que cada fragmento es un conjunto de réplicas, todos los datos se replican. En segundo lugar, incluso si un fragmento completo deja de estar disponible desde que se distribuyen los datos, la base de datos en su conjunto sigue siendo parcialmente funcional, con parte del esquema en diferentes fragmentos.

Desventajas del sharding

La fragmentación tiene varios inconvenientes: la sobrecarga en la compilación de resultados de consultas, la complejidad de la administración y el aumento de los costes de infraestructura.

Sobrecarga de consultas

Cada base de datos fragmentada debe tener una máquina o servicio independiente que comprenda cómo enrutar una operación de consulta al fragmento apropiado. Esto introduce una latencia adicional en cada operación. Además, si los datos necesarios para la consulta se dividen horizontalmente en varios fragmentos, el enrutador debe consultar cada fragmento y fusionar el resultado. Esto puede hacer que una operación que de otro modo sería simple sea bastante costosa y ralentizar los tiempos de respuesta.

sharding

Complejidad de la administración

Con una sola base de datos no fragmentada, solo el servidor de la base de datos en sí requiere mantenimiento. Con cada base de datos fragmentada, además de administrar los propios fragmentos, hay nodos de servicio adicionales que se deben mantener. Además, en los casos en que se utiliza la replicación, cualquier actualización de datos debe reflejarse en cada nodo replicado. En general, una base de datos fragmentada es un sistema más complejo que requiere más administración.

Mayores costes de infraestructura

La fragmentación, por su naturaleza, requiere máquinas adicionales y capacidad de computación en cada servidor de base de datos. Si bien esto permite que la base de datos crezca más allá de los límites de una sola máquina, cada fragmento adicional conlleva costes más altos. El coste de un sistema de base de datos distribuido, especialmente si le falta la optimización adecuada, puede ser significativo.

Principales tipos de sharding

Si bien existen muchos métodos de fragmentación diferentes, los principales tipos son:

Sharding a distancia/dinámico

Toma un campo del registro como entrada y, en función de un rango predefinido, asigna ese registro a la partición adecuada. Requiere que haya una tabla de búsqueda o un servicio disponible para todas las consultas o escrituras. El campo en el que se basa el rango es la clave de partición.

Naturalmente, la elección de la clave de fragmento, así como los rangos, son fundamentales para que la fragmentación basada en rango sea efectiva. Una mala elección de la clave de fragmento dará lugar a fragmentos desequilibrados, lo que conduce a una disminución del rendimiento. Una clave de fragmento eficaz permitirá que las consultas se orienten a un número mínimo de fragmentos.

Dos atributos clave de una clave de fragmento eficaz son la alta cardinalidad y la frecuencia bien distribuida. La cardinalidad se refiere al número de valores posibles de esa clave. Si una clave de fragmento tiene únicamente tres valores posibles, solo puede haber un máximo de tres fragmentos. La frecuencia se refiere a la distribución de los datos a lo largo de los posibles valores. Si el 95 % de los registros se producen con un solo valor de clave de fragmento, entonces, debido a este punto de acceso, el 95 % de los registros se asignarán a un solo fragmento.

sharding

Sharding algorítmico/hashed

Toma un registro como entrada y le aplica una función hash que genera una salida o valor de hash. Esta salida se usa luego para asignar cada registro al fragmento apropiado. La función puede tomar cualquier subconjunto de valores en el registro como entradas. Esto es similar a la fragmentación basada en rango: un conjunto de campos determina la asignación del registro a una partición determinada.

El hash de las entradas permite una distribución más uniforme entre fragmentos, incluso cuando no hay una clave de fragmento adecuada y no es necesario mantener una tabla de búsqueda. Sin embargo, hay algunos inconvenientes.

En primer lugar, es más probable que las operaciones de consulta de varios registros se distribuyan en varios fragmentos. Mientras que la fragmentación a distancia refleja la estructura natural de los datos entre fragmentos, la fragmentación hash generalmente ignora el significado de los datos. Esto se refleja en una mayor ocurrencia de operaciones de transmisión.

En segundo lugar, volver a fragmentar puede ser costoso. Cualquier actualización de la cantidad de fragmentos probablemente requiera reequilibrar todos los fragmentos para mover los registros, lo cual implicará una interrupción de servicio.

Sharding basado en entidad/relación

Mantiene los datos relacionados juntos en un único fragmento físico. En una base de datos relacional (como PostgreSQL, MySQL o SQL Server), los datos relacionados a menudo se distribuyen en varias tablas diferentes. Mantener los datos relacionados en el mismo fragmento reduce la necesidad de operaciones de transmisión, lo que aumenta el rendimiento.

Sharding basado en geografía o geosharding

También mantiene los datos relacionados juntos en un solo fragmento, pero en este caso, están vinculados por la geografía. Esto es esencialmente fragmentación a distancia donde la clave de fragmento contiene información geográfica y los propios fragmentos están geolocalizados.

La fragmentación es una excelente solución para aplicaciones con grandes requisitos de datos y cargas de trabajo de lectura/escritura de alto volumen, pero tiene una complejidad importante. Se debe considerar si los beneficios superan los costes o si existe una solución más simple antes de comenzar con su implementación. En todo caso, es fundamental contar con especialistas formados con posgrados como el Máster en Big Data online de UNIR.

    Títulos que te pueden interesar

    Noticias relacionadas

    Producción de multimedia y de arte digital interactivo, ¿cuál es su campo laboral?

    ¿Qué diferencia a un diseñador multimedia? Una pregunta clave que desde el Máster de Diseño y Producción Multimedia abordamos brindándote todos los conocimientos para desarrollar las mejores experiencias multimediales.

    El diseñador de interfaces, el profesional que te ayuda a interactuar con la máquina

    Lograr que una web, una app o un programa sean atractivos para el usuario y al mismo tiempo le resulten sencillos de utilizar es el reto al que se enfrenta un diseñador de interfaces.

    Qué es producción de contenido multimedia y cómo convertirse en un experto

    Descubre nuevas oportunidades profesionales en un campo en crecimiento. Te contamos cómo ser un experto en producción multimedia y qué tipo de compañías los solicitan.

    Docencia 100% online

    Nuestra metodología te permite estudiar sin desplazarte mediante un modelo de aprendizaje personalizado

    Clases en directo

    Nuestros profesores imparten 4.000 horas de clases online a la semana. Puedes asistir en directo o verlas en otro momento

    Mentor - UNIR

    En UNIR nunca estarás solo. Un mentor realizará un seguimiento individualizado y te ayudará en todo lo que necesites

    La fuerza que necesitas

    Nuestra vida académica y social

    Acompañamiento personalizado