Можеш ли да говориш о различитим методима расподеле података у бази за скалирање?
sobes.tech АИ
Одговор од АИ
Za skaliranje baza podataka često se koriste različite metode raspodele podataka:
-
Sharding (Particionisanje) — deljenje podataka na delove (shardove) prema određenom ključu. Svaki shard se čuva na posebnom serveru. Na primer, korisnici sa ID od 1 do 10.000 na jednom shard-u, od 10.001 do 20.000 na drugom.
-
Replikacija — kopiranje podataka na više servera radi povećanja dostupnosti i otpornosti na kvarove. Zapisi se vrše na masteru, čitanja mogu ići sa replika.
-
Partitioning (Particionisanje) — logičko deljenje tabela unutar jedne baze podataka po opsezima ili hash funkcijama.
-
Caching (Keširanje) — čuvanje često traženih podataka u memoriji (Redis, Memcached) radi smanjenja opterećenja baze.
Primer sharding-a zasnovanog na hash funkciji:
func getShard(key string, shardCount int) int {
h := fnv.New32a()
h.Write([]byte(key))
return int(h.Sum32()) % shardCount
}
Ova metoda omogućava ravnomerno raspoređivanje podataka na više shardova.