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.
------------------------------------------------------------------------------------------------------------------------------------------------------------
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 USD, 10.001 USD a 24.000 USD, de 24.001 USD a 50.000 USD, de 50.001 USD a 120.000 USD y de 120.001 USD en adelante.
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