Sobes.tech
Junior — Middle

Tudsz beszélni az adatok elosztásának különböző módszereiről az adatbázisban a skálázáshoz?

sobes.tech MI

Válasz az MI-től

Az adatbázisok skálázásához gyakran különböző adatelosztási módszereket alkalmaznak:

  • Sharding (Particionálás) — az adatok felosztása részekre (shardokra) egy meghatározott kulcs szerint. Minden shard külön szerveren tárolódik. Például az ID 1-től 10 000-ig terjedő felhasználók egy shardon, 10 001-től 20 000-ig egy másikon.

  • Replikáció — az adatok másolatának készítése több szerveren a rendelkezésre állás és a hibatűrés növelése érdekében. A bejegyzések a masterbe kerülnek, az olvasások a replikákból történhetnek.

  • Partitioning (Partíciózás) — a táblák logikus felosztása egy adatbázison belül tartományok vagy hash-függvények szerint.

  • Caching (Gyorsítótárazás) — gyakran kért adatok memóriában való tárolása (Redis, Memcached), hogy csökkentse az adatbázis terhelését.

Hash-függvényen alapuló sharding példája:

func getShard(key string, shardCount int) int {
    h := fnv.New32a()
    h.Write([]byte(key))
    return int(h.Sum32()) % shardCount
}

Ez a módszer lehetővé teszi az adatok egyenletes elosztását több shard között.