Gerenciando chaves em nosql
rápidos recursos de leitura lojas de valor-chave resultam 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 qualquer valor dentro desse registro. Uma chave de ruim vai exigir que o código do aplicativo interpreta seu registro para determinar se ele, de fato, corresponde à 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.
Partitioning
projeto 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 partição é a abordagem de hashing consistente de Voldemort, como mostrado. Aqui você vê as mesmas partições espalhados por três servidores inicialmente e depois por 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.
Acessando os dados em partições
lojas de valor-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 segurar qual 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 uma 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, drivers de clientes 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 do cliente, que, em seguida, transfere os metadados mais recente conjunto 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 é 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 .