sql >> Base de Datos >  >> NoSQL >> Redis

Diferencia de replicación de Redis y fragmentación de Redis (clúster)

Sharding es casi la antítesis de la replicación, aunque son conceptos ortogonales y funcionan bien juntos.

La fragmentación, también conocida como partición, consiste en dividir los datos por clave; Mientras que la replicación, también conocida como duplicación, consiste en copiar todos los datos.

La fragmentación es útil para aumentar el rendimiento, reduciendo el impacto y la carga de memoria en cualquier recurso. La replicación es útil para obtener una alta disponibilidad de lecturas. Si lee desde varias réplicas, también reducirá la tasa de aciertos en todos los recursos, pero el requisito de memoria para todos los recursos sigue siendo el mismo. Cabe señalar que, si bien puede escribir en un esclavo, la replicación es solo maestro->esclavo. Por lo tanto, no puede escalar las escrituras de esta manera.

Suponga 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 las claves 2,4 en máquina A; y las claves 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.

La fragmentación generalmente se implementa realizando un hash consistente en la clave. El ejemplo anterior se implementó con la siguiente función hash h(x){return x%2==0?A:B}.

Para combinar los conceptos, podríamos 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 almacén de clave-valor (de los cuales Redis es solo un ejemplo) admite la fragmentación, aunque ciertas funciones de clave cruzada ya no funcionarán. Redis admite la replicación lista para usar.