Índice:
- Cache de dados na memória
- Replicando dados para escravos
- Modelagem de dados em lojas de valores-chave
- Operando em dados
- Avaliando a Redis
Vídeo: What’s New in Google’s IoT Platform? Ubiquitous Computing at Google (Google I/O '17) 2024
As lojas de valor-chave no NoSQL são todas sobre velocidade. Você pode usar várias técnicas para maximizar essa velocidade, desde o armazenamento em cache de dados, até múltiplas cópias de dados ou usando as estruturas de armazenamento mais apropriadas.
Cache de dados na memória
Como os dados são acessados facilmente quando armazenados em memória de acesso aleatório (RAM), escolher uma loja de valores-chave que armazena em cache dados na RAM pode acelerar significativamente o acesso aos dados, embora ao preço dos custos mais elevados do servidor.
Muitas vezes, porém, essa compensação vale a pena fazer. Você pode calcular facilmente qual a porcentagem de seus dados armazenados solicitados com freqüência. Se você sabe que cinco por cento são geralmente solicitados a cada poucos minutos, tire cinco por cento do seu tamanho de dados e adicione esse número como espaço de RAM de reposição em seus servidores de banco de dados.
Tenha em mente que o sistema operacional, outras aplicações e o servidor de banco de dados também possuem requisitos de memória.
Replicando dados para escravos
Nas lojas de valores-chave, uma chave específica é armazenada em um dos servidores no cluster. Esse processo é chamado partição de chave . Isso significa que, se essa chave for constantemente solicitada, esse nó receberá a maior parte dos pedidos. Este nó, portanto, será mais lento do que a sua velocidade média de solicitação, afetando potencialmente a qualidade do serviço para seus usuários.
Para evitar esta situação, algumas lojas de valor-chave suportam a adição de réplicas de somente leitura, também chamadas de escravos. Redis, Riak e Aerospike são bons exemplos. A replicação permite que a chave seja armazenada várias vezes em vários servidores, o que aumenta a velocidade de resposta, mas ao custo de mais hardware.
Algumas lojas de valores-chave garantem que as réplicas da chave sempre terão o mesmo valor que o mestre. Esta garantia se chama ser totalmente consistente. Se uma atualização acontecer no servidor mestre segurando a chave, todas as réplicas devem ser atualizadas.
Nem todas as lojas de valores-chave garantem esse status (Riak, por exemplo), portanto, se for importante estar atualizado com o milissegundo, escolha um banco de dados cujas réplicas sejam totalmente consistentes (como Aerospike).
Modelagem de dados em lojas de valores-chave
Muitas lojas de valores-chave suportam apenas estruturas básicas para seus tipos de valor, deixando o programador de aplicativos o trabalho de interpretação dos dados. O suporte de tipo de dados simples geralmente inclui cadeias de caracteres, números inteiros, JSON e valores binários.
Para muitos casos de uso, isso funciona bem, mas às vezes é útil um acesso ligeiramente mais granular aos dados.Redis, por exemplo, suporta os seguintes tipos de valores de dados:
-
String
-
List
-
Set
-
Conjunto ordenado
-
Mapas Hash
-
Arrays de bits
-
Registros Hyperlog
Conjuntos classificados podem ser consultado para combinar intervalos de valores - bem como consultar um índice de valores ordenados por data, o que é muito útil para pesquisar um subconjunto de dados digitados.
Operando em dados
Redis inclui operações para incrementar e diminuir valores de chave diretamente, sem ter que fazer um conjunto de etapas de leitura-modificação-atualização (RMU). Você pode fazê-lo dentro de uma única transação para garantir que nenhum outro aplicativo altere o valor durante uma atualização. Essas operações específicas de tipo de dados incluem adicionar e remover itens para listas e conjuntos também.
Você pode até fornecer funcionalidades de preenchimento automático na interface do usuário de um aplicativo, usando o comando Redis ZRANGEBYLEX. Este comando recupera um conjunto de chaves que combina parcialmente com uma string. Então, se você escrevesse "NoSQL for" na barra de pesquisa de um aplicativo criado no Redis, você veria a sugestão "NoSQL For Dummies". "
Avaliando a Redis
A Redis orgulha-se de ser uma loja de valores-chave muito leve, mas brilhante. Originalmente foi projetado para ser uma loja de valores-chave na memória, mas agora possui armazenamento de dados baseado em disco.
Você pode usar o Redis para proteger dados, habilitando o modo AOF (anexar apenas o arquivo) e instruindo o Redis para forçar os dados no disco em cada consulta (conhecida como forçada fsync flushing ). A AOF diminui as escritas, é claro, mas fornece um maior nível de durabilidade para os dados. Esteja ciente, no entanto, de que ainda é possível perder até um segundo de comandos.
Além disso, a Redis apenas adicionou suporte para o clustering recentemente. Na verdade, no momento desta redação, o suporte de cluster da Redis está na fase de teste beta. Felizmente, a Redis usa um modelo de cluster compartilhado, com maestros para chaves e escravos específicos que nunca são escritos diretamente por um cliente; apenas o mestre faz isso. Fornecer compartilhamento de nada agrupamento deve tornar mais fácil para a Redis para implementar o cluster confiável do que é para bancos de dados que permitem gravações para todas as réplicas.
Se você quer uma camada de cache de memória de alta velocidade na frente de outro banco de dados - MongoDB ou Riak são comumente usados com o Redis - então avalie Redis como uma opção. À medida que o suporte ao cluster e a durabilidade dos dados evoluem, talvez a Redis possa ultrapassar outros bancos de dados back-end.