Môžete rozprávať o rôznych metódach rozdeľovania dát v databáze na škálovanie?
sobes.tech AI
Odpoveď od AI
Za skalovanie databáz sa často používajú rôzne metódy rozdeľovania dát:
-
Sharding (Rozdeľovanie) — rozdelenie dát na časti (shardy) podľa určitého kľúča. Každý shard je uložený na samostatnom serveri. Napríklad používatelia s ID od 1 do 10 000 na jednom sharde, od 10 001 do 20 000 na inom.
-
Replikácia — kopírovanie dát na viacero serverov na zvýšenie dostupnosti a odolnosti voči chybám. Záznamy sa zapisujú na master, čítania môžu byť z replik.
-
Partitioning (Delenie) — logické rozdelenie tabuliek v rámci jednej databázy podľa rozsahov alebo hash funkcií.
-
Caching (Ukladanie do vyrovnávacej pamäte) — uchovávanie často požadovaných dát v pamäti (Redis, Memcached) na zníženie záťaže na databázu.
Príklad sharding na základe hash funkcie:
func getShard(key string, shardCount int) int {
h := fnv.New32a()
h.Write([]byte(key))
return int(h.Sum32()) % shardCount
}
Táto metóda umožňuje rovnomerné rozdeľovanie dát medzi viaceré shardy.