Gerenciando a disponibilidade em NoSQL

Tal como acontece com outros tipos de bancos de dados NoSQL, com lojas de valor-chave, você pode negociar alguma consistência para alguma disponibilidade. lojas de valores-chave normalmente fornecem uma ampla gama de modelos de consistência e durabilidade - ou seja, entre a disponibilidade e tolerância a partição e entre a tolerância consistente e partição.

Algumas lojas de valor-chave ir muito mais longe no braço consistência, abandonando base para apoio total consistência transacional ACID. Compreender onde traçar a linha pode ajudá-lo a reduzir a lista de bancos de dados potenciais a considerar para o seu caso de uso.

consistência negociação

lojas de valor chave tipicamente comércio consistência dos dados (isto é, a capacidade de ler sempre a última cópia de um valor imediatamente após uma actualização), a fim de melhorar o tempo de gravação.

Voldemort, Riak, e Oracle NoSQL são todos eventualmente, consistente lojas de valor-chave. Eles usam um método chamado leia reparação. Aqui estão as duas etapas envolvidas na leia reparação:

  1. No momento da leitura de um disco, determinar quais dos vários valores disponíveis para a chave é o mais recente e válido por um.

  2. Se o valor mais recente não pode ser decidido, então o cliente de banco de dados é apresentado com todas as opções de valor e é deixado para decidir por si mesmo.

Bons exemplos para utilizar lojas de valor-chave, eventualmente consistentes incluem o envio de mensagens de mídia social e entregar anúncios para usuários de destino. Se um tweet chega tarde ou uma propaganda de cinco minutos de idade, é mostrado, não há nenhuma perda catastrófica de dados.

suporte de Execução ACID

Aerospike e Redis são notáveis ​​exceções a consistência eventual. tanto para uso compartilhado nada aglomerados, o que significa que cada tecla tem o seguinte:

  • Um nó mestre: Apenas os mestres fornecer respostas para uma única chave, que garante que você tem a cópia mais recente.

  • Vários nós de réplica escravo: Estes contêm cópias de todos os dados em um nó mestre. Aerospike fornece completa ACID consistência transacional, permitindo modificações para ser liberado imediatamente para o disco antes que a transação é sinalizada como completo para o cliente de banco de dados.

Aerospike consegue fazer isso em velocidades muito altas (que refuta alegações que ter ACID diminui a velocidade de gravação). Aerospike nativamente lida com SSDs brutos para dados de escrita, ignorando suporte ao sistema de arquivos sistemas operacionais mais lentas '.

Claro, mais SSDs significa custos de servidor mais elevados. Você pode decidir que o uso de Redis (configurado para limpar todos os dados para o disco como chega) é rápido o suficiente e garante a durabilidade suficiente para suas necessidades. A configuração padrão no Redis é liberar dados para o disco a cada poucos segundos, deixando uma pequena janela de potencial perda de dados se um servidor falhar.

Aqui estão alguns exemplos de quando você pode precisar de uma loja de key-value ACID-compliant:

  • Ao receber dados sensor que você precisa para uma experiência.

  • Em um sistema de mensagens onde você deve garantir o recebimento.

    Redis, por exemplo, fornece um mecanismo de publicação / assinatura, que atua como um back-end servidor de mensagens. Esta característica, combinada com o apoio ACID permite mensagens durável.

menu