Podes falar sobre os diferentes métodos de distribuição de dados numa base para escalabilidade?
sobes.tech IA
Resposta da IA
Para escalar bases de dados, frequentemente utilizam-se vários métodos de distribuição de dados:
-
Sharding (Particionamento) — dividir os dados em partes (shards) com base numa chave específica. Cada shard é armazenado num servidor separado. Por exemplo, utilizadores com IDs de 1 a 10.000 num shard, de 10.001 a 20.000 noutro.
-
Replicação — copiar dados para vários servidores para aumentar a disponibilidade e resistência a falhas. As gravações são feitas no mestre, as leituras podem ser feitas a partir das réplicas.
-
Particionamento — divisão lógica de tabelas dentro de uma mesma base por intervalos ou funções hash.
-
Caching — armazenamento em memória de dados frequentemente solicitados (Redis, Memcached) para reduzir a carga na base.
Exemplo de sharding baseado numa função hash:
func getShard(key string, shardCount int) int {
h := fnv.New32a()
h.Write([]byte(key))
return int(h.Sum32()) % shardCount
}
Este método permite distribuir uniformemente os dados por vários shards.