Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Diferença de replicação do Redis e fragmentação do redis (cluster)


Sharding é quase a antítese da replicação, embora sejam conceitos ortogonais e funcionem bem juntos.

Sharding, também conhecido como particionamento, é dividir os dados por chave; Enquanto a replicação, também conhecida como espelhamento, é copiar todos os dados.

A fragmentação é útil para aumentar o desempenho, reduzindo a ocorrência e a carga de memória em qualquer recurso. A replicação é útil para obter uma alta disponibilidade de leituras. Se você ler várias réplicas, também reduzirá a taxa de acertos em todos os recursos, mas o requisito de memória para todos os recursos permanecerá o mesmo. Deve-se notar que, embora você possa escrever em um escravo, a replicação é apenas mestre->escravo. Portanto, você não pode dimensionar gravações dessa maneira.

Suponha que você tenha as seguintes tuplas:[1:Apple], [2:Banana], [3:Cherry], [4:Durian] e temos duas máquinas A e B. Com Sharding, podemos armazenar as chaves 2,4 em máquina A; e chaves 1,3 na máquina B. Com a Replicação, armazenamos as chaves 1,2,3,4 na máquina A e 1,2,3,4 na máquina B.

A fragmentação geralmente é implementada executando um hash consistente na chave. O exemplo acima foi implementado com a seguinte função hash h(x){return x%2==0?A:B}.

Para combinar os conceitos, podemos replicar cada fragmento. Nos casos acima, todos os dados (2,4) da máquina A podem ser replicados na máquina C e todos os dados (1,3) da máquina B podem ser replicados na máquina D.

Qualquer armazenamento de valor-chave (do qual o Redis é apenas um exemplo) oferece suporte à fragmentação, embora certas funções de chave cruzada não funcionem mais. O Redis oferece suporte à replicação pronta para uso.