Também mergulhei nisso e, embora eu seja de longe a referência sobre o assunto, há alguns fatos importantes que reuni e pontos que gostaria de compartilhar:
Uma partição é uma divisão de um banco de dados lógico ou de seus elementos constituintes em partes independentes distintas. O particionamento de banco de dados normalmente é feito por motivos de gerenciamento, desempenho ou disponibilidade, como para balanceamento de carga.
https://en.wikipedia.org/wiki/Partition_(database)
Sharding é um tipo de particionamento, como Horizontal Partitioning (HP)
Há também o particionamento vertical (VP), no qual você divide uma tabela em partes distintas menores. A normalização também envolve essa divisão de colunas entre tabelas, mas o particionamento vertical vai além disso e particiona as colunas mesmo quando já normalizadas.
https://en.wikipedia.org/wiki/Shard_(database_architecture)
Eu realmente gosto da resposta de Tony Baco no Quora, onde ele faz você pensar em termos de esquema (em vez de colunas e linhas). Ele afirma que ...
O " particionamento horizontal ", ou sharding, está replicando [copiando] o esquema e depois dividindo os dados com base em uma chave de shard.
" Particionamento vertical " envolve dividir o esquema (e os dados acompanham o percurso).
https://www.quora.com/Whats-the-difference-between-sharding-DB-tables-and-partitioning-them
O Guia de Particionamento de Banco de Dados da Oracle tem alguns números interessantes. Copiei alguns trechos do artigo.
https://docs.oracle.com/cd/B28359_01/server.111/b32024/partition.htm
Quando particionar uma tabela
Aqui estão algumas sugestões para quando particionar uma tabela:
- Tabelas com mais de 2 GB devem sempre ser consideradas candidatas ao particionamento.
- Tabelas contendo dados históricos, nos quais novos dados são adicionados à partição mais recente. Um exemplo típico é uma tabela histórica em que apenas os dados do mês atual são atualizáveis e os outros 11 meses são somente leitura.
- Quando o conteúdo de uma tabela precisa ser distribuído entre diferentes tipos de dispositivos de armazenamento.
Poda de Partição
A remoção de partição é o meio mais simples e também o mais substancial para melhorar o desempenho usando o particionamento. A remoção de partição geralmente pode melhorar o desempenho da consulta em várias ordens de magnitude. Por exemplo, suponha que um aplicativo contenha uma tabela Pedidos contendo um registro histórico de pedidos e que essa tabela tenha sido particionada por semana. Uma consulta solicitando pedidos por uma única semana acessaria apenas uma única partição da tabela Pedidos. Se a tabela Pedidos tivesse 2 anos de dados históricos, essa consulta acessaria uma partição em vez de 104 partições. Essa consulta pode ser executada 100 vezes mais rápido, simplesmente devido à remoção da partição.
Estratégias de particionamento
Você pode ler o texto e visualizar as imagens que explicam tudo muito bem.
E, por último, é importante entender que os bancos de dados são extremamente intensivos em recursos:
Muitos DBAs particionarão na mesma máquina, onde as partições compartilharão todos os recursos, mas fornecerão uma melhoria no disco e nas E / S dividindo os dados e / ou o índice.
Enquanto outras estratégias empregam uma arquitetura de "nada compartilhado", onde os shards residem em unidades de computação separadas e distintas (nós), tendo 100% da CPU, disco, E / S e memória para si. Fornecendo seu próprio conjunto de vantagens e complexidades.
https://en.wikipedia.org/wiki/Shared_nothing_architecture