Saltar al contenido

¿Qué es el Sharding? Fragmentación de Datos para la Escalabilidad

junio 17, 2018

El sharding es un concepto que se está poniendo de moda dentro de la comunidad criptográfica, debido a los grandes problemas de escalabilidad que tienen las principales plataformas como Bitcoin o Ethereum.

El sharding es una forma de segmentar los datos de una base de datos de forma horizontal, es decir, partir la base de datos principal en varias en bases de datos más pequeñas y repartiendo la información. De esta forma lo que se consigue es una partición de datos en diferentes bases que tengan cierta homogeneidad, para conseguir una escalabilidad mucho más rápida. Para ver su eficacia, vamos a analizar un ejemplo sencillo.

Como Funciona el Sharding?

Imaginemos una única tabla donde se contienen todos los datos de los usuarios, por razón de edad, sexo, capacidad económica, y geografía. Y ahora pensemos en otro caso donde apliquemos el sharding y dividamos en diferentes tablas a los usuarios por sexo, edad, localización geográfica, y capacidad económica, y yendo aún más allá, dentro de cada rango los dividiremos en más fases, por ejemplo por localización geográfica separemos en diferentes tablas a los usuarios según país de nacimiento, por edades separaremos las tablas por franjas comprendidas entre 18 – 30 años, 31 – 45 años, 46 – 65 años, y 66 en adelante, por capacidad económica haremos lo mismo y diferenciaremos por tablas a las personas con un poder adquisitivo de 0 – 10.000€, 10.001€ a 24.000€, de 24.001€ a 50.000€, de 50.001€ a 120.000€ y de 120.001€ en adelante.

Sharding Que es

Como podemos comprobar, en el primer ejemplo, tenemos a todos los usuarios en una única tabla, por lo que cuando una base de datos empieza a ser muy numerosa, nos encontramos ante grandes problemas al tener los datos de forma desorganizada y se vuelve inmanejable.

Sin embargo, si aplicamos el sharding como en el segundo ejemplo, podemos encontrar una infinidad de tablas horizontales clasificadas en un cierto grado de homogeneidad, de esta forma, al final lo que estamos consiguiendo es fragmentar una única tabla en múltiples tablas con menos datos cada uno, con esto conseguimos mejorar la escalabilidad al agrupar menos datos en tablas más pequeñas, de esta forma el acceso a ellos es mucho más rápido, y también se consigue mejorar la monitorización de los mismos.

Para entender mejor este concepto en términos de la blockchain, hay que saber en en la actualidad, la red de Ethereum que es la que más problemas presenta de escalabilidad, funciona de forma que todos los datos que contiene cada transacción deben ser validados por todos los nodos de la cadena, por eso, al fragmentar los datos en shards, lo que estamos consiguiendo es que los nodos se repartan los shards y sólo tengan que validar una parte de los datos que contiene cada transacción, es decir, cada uno valida una parte de la información (se reparten la información) y luego toda la información una vez validada se incorpora a la cadena de forma completa, por lo que conseguimos mantener toda la información en el bloque, con la diferencia de que los nodos tan sólo contienen una parte de la información y no toda como hasta ahora. Con este método se consigue mejorar la eficacia y la escalabilidad al fragmentar la información.

En la actualidad, la plataforma que cuenta con el mayor número de nodos es la de Ethereum, ya que es la más popular tras Bitcoin, pero permite muchas más funcionalidades como el desarrollo de DAPS, smart contracts, etc, por eso supera por bastante el número de nodos del Bitcoin.

Esta gran cantidad de nodos está provocando que la red se vuelva muy lenta y poco escalable, y de ahí que hayan optado por centrase en el sharding para mejorar estos problemas. La implementación del nuevo protocolo Casper en la red, traerá consigo la tecnología sharding, por lo que una vez que llegue ese día se podrá comprobar si este concepto va a solucionar los problemas de escalabilidad de la red.

Otras plataformas que están mucho más enfocadas a la escalabilidad y en la tecnología sharding son Zilliqa y Quarckchain, por lo que posiblemente presenten soluciones mucho más eficaces que Ethereum en este campo.

Todavía queda un tiempo para comprobar que plataforma se lleva el gato al agua utilizando el concepto sharding para realizar el mayor número de transacciones por segundo, aunque sin duda, hay que destacar que el sharding no es la única solución planteada en el campo de la escalabilidad, tan sólo es una más en la que parecen haberse centrado las grandes plataformas, pero habrá que esperar como se desarrolla el mercado y que nos pueden ofrecer otros proyectos, por lo que estaremos muy atentos a todas las soluciones que se implementen para solucionas los problemas de escalabilidad de las redes.