¿Puedes hablar sobre los diferentes métodos de distribución de datos en una base para escalar?
sobes.tech AI
Respuesta de la IA
Para escalar bases de datos, a menudo se utilizan diversos métodos de distribución de datos:
-
Sharding (Fragmentación) — dividir los datos en partes (fragmentos) según una clave determinada. Cada fragmento se almacena en un servidor separado. Por ejemplo, los usuarios con ID del 1 al 10,000 en un fragmento, del 10,001 al 20,000 en otro.
-
Replicación — copiar datos en varios servidores para aumentar la disponibilidad y la tolerancia a fallos. Las escrituras se realizan en el maestro, las lecturas pueden realizarse desde las réplicas.
-
Particionamiento — división lógica de tablas dentro de una misma base según rangos o funciones hash.
-
Caché — almacenamiento en memoria de datos solicitados con frecuencia (Redis, Memcached) para reducir la carga en la base.
Ejemplo de sharding basado en función hash:
func getShard(key string, shardCount int) int {
h := fnv.New32a()
h.Write([]byte(key))
return int(h.Sum32()) % shardCount
}
Este método permite distribuir uniformemente los datos entre varios fragmentos.