Sharding es solo otro nombre para "particionamiento horizontal" de una base de datos. Es posible que desee buscar ese término para aclararlo.
De Wikipedia :
La partición horizontal es un principio de diseño mediante el cual las filas de una tabla de base de datos se mantienen por separado, en lugar de dividirse por columnas (como en el caso de la normalización). Cada partición forma parte de un fragmento, que a su vez puede ubicarse en un servidor de base de datos o ubicación física por separado. La ventaja es que se reduce el número de filas en cada tabla (esto reduce el tamaño del índice y, por lo tanto, mejora el rendimiento de búsqueda). Si el fragmento se basa en algún aspecto de los datos del mundo real (p. Ej., Clientes europeos frente a clientes estadounidenses), entonces es posible inferir la membresía del fragmento apropiado de manera fácil y automática, y consultar solo el fragmento relevante.
Alguna información más sobre el fragmentación:
En primer lugar, cada servidor de base de datos es idéntico y tiene la misma estructura de tabla. En segundo lugar, los registros de datos se dividen lógicamente en una base de datos fragmentada. A diferencia de la base de datos particionada, cada registro de datos completo existe en un solo fragmento (a menos que haya reflejo para respaldo / redundancia) con todas las operaciones CRUD realizadas solo en esa base de datos. Puede que no le guste la terminología utilizada, pero esto representa una forma diferente de organizar una base de datos lógica en partes más pequeñas.
Actualización: No romperás MVC. El trabajo de determinar el fragmento correcto donde almacenar los datos sería realizado de manera transparente por su capa de acceso a datos. Allí tendría que determinar el fragmento correcto en función de los criterios que utilizó para fragmentar su base de datos. (Como debe fragmentar manualmente la base de datos en algunos fragmentos diferentes en función de algunos aspectos concretos de su aplicación.) Luego debe tener cuidado al cargar y almacenar los datos desde / en la base de datos para utilizar el fragmento correcto.
Tal vez este ejemplo con código Java lo hace algo más claro (se trata del proyecto Hibernate Shards ), cómo funcionaría esto en un escenario del mundo real.
Para abordar el " why sharding
": es principalmente solo para aplicaciones a gran escala, con muchos datos. Primero, ayuda a minimizar los tiempos de respuesta para las consultas de la base de datos. En segundo lugar, puede usar máquinas más baratas y de "gama baja" para alojar sus datos, en lugar de un gran servidor, lo que podría no ser suficiente.