Sobes.tech
Junior — Middle

Можеш ли да говориш о различитим методима расподеле података у бази за скалирање?

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.