Predis Sharding (hash consistente)
Pergunta
Predis afirma ter sharding do lado do cliente (suporte para hash consistentes de chaves). http://github.com/nrk/predis
Eu posso fazer sharding usando o Connect a uma matriz de perfis (nós), mas não é um hash consistente. Quando adiciono outro nó à piscina, algumas das chaves não podem ser encontradas. Alguém tem alguma experiência nisso?
Usando o PHP 5.2 (e a versão PHP 5.2 da Redis).
Solução
Parece uma questão de permissões com a conta do domínio \ sn_spappprod.Tem um login SQL com os direitos necessários?Se você tiver uma fazenda multi-servidor, você tem um alias em cada servidor?
Um bom truque para ver se o seu usuário tem acesso é usar um testfile, consulte a seção inferior do Este artigo sobre como fazer isso.Se esse teste retornar sem erros, sua conexão com o SQL Server está OK - Certifique-se de usar o servidor de alias Name2 ao executar o teste.
Se o teste retornar um erro, seu alias provavelmente não será configurado corretamente no servidor.
Também pode ser que sua conta não tenha as permissões necessárias para executar o assistente de configuração.Consulte a seção "Configuração da Conta de Administração do Usuário" em Este artigo .
Outras dicas
A solução é usar o sharding virtual. Não conheço o Predis Framework, mas prevejo que ele usa algum tipo de matriz - você provavelmente o preenche com informações sobre cada fragmento na start -up.
Suponha que você tenha no máximo 10 fragmentos (é improvável que esse número seja alcançado). Em seguida, crie a matriz de sharding que aponta para apenas três servidores reais. No futuro, quando você adicionará novos nós, migrará dados relacionados para o novo shard e o mapeamento de alterações. Essa abordagem preserva a função de alteração de hash da forma.
Mapeamento inicial:
0 => 0 //node #0
1 => 0
2 => 0
3 => 1 //node #1
4 => 1
5 => 1
6 => 2 //node #2
7 => 2
8 => 2
9 => 2
Quando você adiciona um novo nó, você altera apenas o mapeamento:
0 => 0
1 => 0
2 => 3 // new node #3
3 => 1
4 => 1
5 => 3 // new node #3
7 => 2
8 => 2
9 => 3 // new node #3
Portanto, você precisa mover dados com h (x) = 9 ou 5 ou 2 para o nó nó #3.