Můžeš mluvit o různých metodách rozdělení dat v databázi pro škálování?
sobes.tech AI
Odpověď od AI
Pro škálování databází se často používají různé metody rozdělení dat:
-
Sharding (Rozdělení na shardy) — rozdělení dat na části (shardy) podle určitého klíče. Každý shard je uložen na samostatném serveru. Například uživatelé s ID od 1 do 10 000 na jednom shardu, od 10 001 do 20 000 na jiném.
-
Replikace — kopírování dat na více serverů za účelem zvýšení dostupnosti a odolnosti vůči chybám. Záznamy se zapisují na master, čtení může probíhat z replik.
-
Partitioning (Dělení) — logické rozdělení tabulek v rámci jedné databáze podle rozsahů nebo hash funkcí.
-
Caching (Ukládání do mezipaměti) — uchovávání často požadovaných dat v paměti (Redis, Memcached) ke snížení zátěže databáze.
Příklad sharding na základě hash funkce:
func getShard(key string, shardCount int) int {
h := fnv.New32a()
h.Write([]byte(key))
return int(h.Sum32()) % shardCount
}
Tato metoda umožňuje rovnoměrné rozdělení dat mezi více shardů.