Gerenciamento de chaves em NoSQL
rápidos recursos de leitura lojas de valores-chave 'haste de seu uso de chaves bem definidos. Estas chaves são tipicamente hash, o que dá um armazenamento de chave-valor uma maneira muito previsível de determinar qual partição (e, portanto, servidor) reside dados sobre. Um determinado servidor gere uma ou mais partições.
Uma boa chave permite identificar de forma exclusiva o único registro que responde a uma consulta sem ter de olhar para todos os valores dentro desse registro. Uma chave de ruim vai exigir que o código do aplicativo interpreta o seu registro para determinar se, de fato, correspondem a consulta.
Se você não projetar seu bem-chave, você pode acabar com um servidor tendo uma carga desproporcionalmente mais pesado do que os outros, levando a um desempenho ruim. Usando o sistema de tempo atual como uma chave, por exemplo, empurra todos os novos dados para o último nó do cluster, o que leva a um cenário de pesadelo de reequilíbrio.
particionamento
design de partição é importante porque algumas lojas de valor-chave, como o Oracle NoSQL, não permitem que o número de partições a ser modificado uma vez por cluster é criado. A sua distribuição entre os servidores, no entanto, pode ser modificado. Então comece com um grande número de partições que você pode espalhar-se no futuro.
Um exemplo de particionamento é a abordagem hashing consistente de Voldemort, como mostrado. Aqui você vê as mesmas partições, distribuídos por três servidores inicialmente e, em seguida, através de quatro servidores mais tarde. O número de partições permanece o mesmo, mas a sua atribuição é diferente entre os servidores. O mesmo é verdadeiro de suas réplicas.
Acesso a dados em partições
lojas de valores-chave são altamente distribuído com nenhum ponto único de falha. Isto significa que não há necessidade de um mestre coordenação nó para manter o controle de servidores dentro de um cluster. gerenciamento de cluster é feito automaticamente por um protocolo de conversação entre os nós do servidor.
Você pode usar um truque no driver cliente para espremer o máximo desempenho fora de recuperar e armazenar chaves e valores - o driver cliente mantém o controle de quais servidores posse que gama de chaves. Portanto, o driver cliente sempre sabe qual servidor para conversar.
A maioria dos bancos de dados, NoSQL incluída, passe um pedido para todos os membros de um cluster. Esse cluster seja aceita a gravação interna ou passa-o um sob o capô para o nó correto. Esta configuração significa uma viagem extra de rede entre os nós é possível, o que pode adicionar à latência.
A fim de evitar a latência descoberta, controladores de cliente a maioria das lojas de valor-chave "manter uma lista de metadados dos nós atuais em um cluster e quais faixas de teclas partição cada aceno administra. Desta forma, o driver cliente pode entrar em contato com o servidor correto, o que torna as operações mais rápido.
Se um novo nó é adicionado a um cluster e os metadados está desatualizado, o cluster informa o condutor cliente, o qual transfere os metadados mais recente de cluster antes de reenviar o pedido para o nó correto. Desta forma, o rendimento máximo é mantida com um mínimo de sobrecarga durante o desenvolvimento. Outro benefício colateral é que não há necessidade de um balanceador de carga para passar consultas para o próximo disponível, ou menos ocupado, servidor - apenas um servidor (ou ler servidor de réplica) já recebe uma solicitação do cliente, por isso não há necessidade de balanceamento de carga .