El sharding es el tipo de escalado más instaurado por el cual optan muchas grandes empresas en la actualidad, desde entidades gigantes como Facebook o hasta negocios más pequeños que descubren los distintos beneficios de ello. En la práctica, esta técnica es una manera por la cual podemos realizar el particionado de los datos de una forma horizontal, siempre manteniendo la lógica de los mismos y haciendo que después el proceso de redireccionado resulte más sencillo.
Dentro del trabajo que hacemos en el sharding podemos optar por distintos sistemas que nos llevarán a que los datos se agrupen en base a múltiples factores, como que una cantidad de usuarios determinada esté agrupada en orden alfabético o numeral, por ejemplo. Una de las particularidades que hace del sharding una técnica muy recomendada es que no requiere que los datos se encuentren en la misma tabla o en una columna determinada. Esto implica que podemos combinar datos del total de tablas con el que estemos trabajando, ahorrando así esfuerzo y tiempo.
Ventajas del sharding
En la práctica lo primero que vamos a notar es que el sharding nos ofrece unos accesos de gran velocidad. No importa, si por ejemplo disponemos de servidores en distintas zonas del mundo, dado que el sharding se ocupa de que se reduzca el volumen de latencia y el rendimiento sea superior. Con el sharding vamos a poder gestionar mejor las empresas en las que se ha llegado a alcanzar una cantidad de datos enorme que ha llevado a que la velocidad de acceso se reduzca de forma considerable. Si por el contrario nuestro servidor no tiene tantos datos, pero sí registra una gran cantidad de escrituras, también nos veremos beneficiados de ello. Al fin y al cabo, hay que tener en cuenta que las escrituras se interpretan como bloqueos en el uso de los recursos, lo que acaba derivando en que haya problemas de rendimiento en la forma en la que los usuarios interactúan con nuestro sistema.
El sharding se encuentra presente en la mayor parte de los sistemas actuales, desde Hibernate hasta Apache, MongoDB o MySQL a través de distintas implementaciones. Por ejemplo, Oracle NoSQL Database introduce el sharding de manera automatizada con expansión online, mientras que la base de datos Spanner de Google lo ofrece por medio de distintas máquinas Paxos.
Otras de las ventajas de este escalado residen en cómo se reduce la cantidad de filas en las tablas de las bases de datos, minimizando de manera simultánea el tamaño de los índices. El efecto posterior de esto no es solo el aumento de espacio liberado, sino también que vamos a comprobar cómo las búsquedas se realizan con una mayor rapidez. Además, teniendo en cuenta que el sharding utiliza distintas máquinas para los shards, esto también beneficia a un aumento en el rendimiento.
Desventajas del sharding
Hay expertos que no recomiendan utilizar el sharding en el inicio de un proyecto debido a que hay que entender sobre todo cuándo utilizarlo y dentro de qué límites de magnitud aprovecharlo. En parte por algunas de las desventajas que podemos comentar, como que la complejidad del SQL se incrementa, llevando a que los desarrolladores tengan que escribir código más elaborado. Este volumen de complejidad no solo se aplica al código, sino que también deriva en que la integridad del sistema se pueda encontrar en mayor riesgo, con distintos factores que pueden sufrir problemas, como el balance y las particiones.
Otra desventaja importante es cómo solo la corrupción que se pueda sufrir en uno de los shards del sistema puede llevar a que se produzca un fallo del sistema generalizado. Además, los servidores de recuperación están obligados a contar con copias de los shards de la base de datos, los backups son más complicados de realizar y se introduce una complejidad operacional que lo hace todo más complicado en términos globales.