Sharding é apenas outro nome para "particionamento horizontal" de um banco de dados. Você pode procurar esse termo para torná-lo mais claro.
Da Wikipedia :
O particionamento horizontal é um princípio de design no qual as linhas de uma tabela de banco de dados são mantidas separadamente, em vez de serem divididas por colunas (como na normalização). Cada partição faz parte de um shard, que por sua vez pode estar localizado em um servidor de banco de dados separado ou em um local físico. A vantagem é que o número de linhas em cada tabela é reduzido (isso reduz o tamanho do índice e melhora o desempenho da pesquisa). Se o sharding se basear em algum aspecto do mundo real dos dados (por exemplo, clientes europeus versus clientes americanos), poderá ser possível inferir a associação apropriada do shard de maneira fácil e automática, e consultar apenas o shard relevante.
Mais algumas informações sobre sharding:
Primeiramente, cada servidor de banco de dados é idêntico, tendo a mesma estrutura de tabela. Em segundo lugar, os registros de dados são logicamente divididos em um banco de dados fragmentado. Diferentemente do banco de dados particionado, cada registro de dados completo existe em apenas um shard (a menos que haja espelhamento para backup / redundância) com todas as operações CRUD executadas apenas nesse banco de dados. Você pode não gostar da terminologia usada, mas isso representa uma maneira diferente de organizar um banco de dados lógico em partes menores.
Atualização: Você não quebrará o MVC. O trabalho de determinar o shard correto onde armazenar os dados seria realizado de forma transparente pela sua camada de acesso a dados. Lá, você teria que determinar o shard correto com base nos critérios usados para fragmentar seu banco de dados. (Como você precisa fragmentar manualmente o banco de dados em alguns shards diferentes, com base em alguns aspectos concretos do seu aplicativo.) Em seguida, você deve tomar cuidado ao carregar e armazenar os dados do / no banco de dados para usar o shard correto.
Talvez este exemplo com código Java torne mais claro (é sobre o projeto Hibernate Shards ) como isso funcionaria em um cenário do mundo real.
Para resolver o " why sharding
": é principalmente apenas para aplicativos de escala muito grande, com muitos dados. Primeiro, ajuda a minimizar os tempos de resposta para consultas ao banco de dados. Segundo, você pode usar máquinas mais baratas e "low-end" para hospedar seus dados, em vez de um servidor grande, que pode não ser mais o suficiente.