La fusión es casi la antítesis de la replicación, aunque son conceptos ortogonales y funcionan bien juntos.
Sharding, también conocido como particionamiento, está dividiendo los datos por clave; Mientras que la replicación, también conocida como duplicación, es copiar todos los datos.
El sharding es útil para aumentar el rendimiento, reduciendo el impacto y la carga de memoria en cualquier recurso. La replicación es útil para una alta disponibilidad de lecturas. Si lee desde varias réplicas, también reducirá la tasa de acierto en todos los recursos, pero el requisito de memoria para todos los recursos sigue siendo el mismo. Debe tenerse en cuenta que, aunque puede escribir a un esclavo, la replicación es master-> slave solamente. Entonces no puedes escalar escribe de esta manera.
Supongamos que tiene las siguientes tuplas: [1: Apple], [2: Banana], [3: Cherry], [4: Durian] y tenemos dos máquinas A y B. Con Sharding, podríamos almacenar claves 2,4 en la máquina A; y las teclas 1,3 en la máquina B. Con la Replicación, almacenamos las claves 1,2,3,4 en la máquina A y 1,2,3,4 en la máquina B.
El sharding se implementa típicamente al realizar un hash consistente sobre la llave. El ejemplo anterior se implementó con la siguiente función hash h (x) {return x% 2 == 0? A: B}.
Para combinar los conceptos, podemos replicar cada fragmento. En los casos anteriores, todos los datos (2,4) de la máquina A podrían replicarse en la máquina C y todos los datos (1,3) de la máquina B podrían replicarse en la máquina D.
Cualquier tecla- el almacén de valores (del cual Redis es solo un ejemplo) admite sharding, aunque ciertas funciones cruzadas ya no funcionarán. Redis admite la replicación fuera de la caja.
genial. creo que la respuesta no solo se limita a redis – joetsuihk
Buena respuesta (en general), pero realmente no responde la pregunta imho :) –
Creo que esta respuesta ofrece una buena respuesta a lo que preguntó el interlocutor. Una explicación muy simplificada pero correcta. +1 –