Utilizando o armazenamento conectável com nosql

Há momentos em que você deseja fornecer estilo de valor-chave de acesso de alta velocidade para dados mantidos em um banco de dados relacional. Esta base de dados pode ser, por exemplo, Berkeley DB (Java Edition para Voldemort) ou MySQL.

Fornecendo valor-chave como o acesso a dados requer um armazenamento de chave-valor a ser em camadas diretamente sobre um desses outros bancos de dados. Basicamente, você usa outro banco de dados como a camada de armazenamento, em vez de uma combinação de um sistema de arquivos para armazenamento e um pipeline de ingestão para copiar dados de um banco de dados relacional.

Este processo simplifica o fornecimento de um armazenamento de chaves-valor alta velocidade, enquanto utilizando uma base de dados relacional tradicional para armazenamento.

Alterar mecanismos de armazenamento

Diferentes cargas de trabalho exigem diferentes mecanismos de armazenamento e características de desempenho. Aerospike é grande em alta ingest- Redis é ótimo para um elevado número de leituras. Cada um é construído em torno de um caso de uso específico.

Voldemort tem uma abordagem diferente. Ao invés de tratar o armazenamento de chaves de valor como uma camada separada da gestão de dados, Voldemort trata o armazenamento de chaves de valor como uma API e adiciona uma camada de cache em memória, o que significa que você pode ligar para o back-end que faz mais sentido para suas necessidades particulares.

Se você quer uma camada de armazenamento de disco simples, você pode usar o mecanismo de armazenamento Edição Berkeley DB Java. Se em vez disso você deseja armazenar dados relacionais, você pode usar o MySQL como um back-end para Voldemort.

Esta capacidade combinada com tipos de dados personalizados permite que você use loja simples de uma loja de key-value / recuperar API para puxar eficazmente para trás e diretamente informações de cache em uma loja de back-end diferente.

Esta abordagem contrasta com a abordagem usual de ter bancos de dados separados - um, digamos, Oracle para dados transacionais e outra em sua loja de key-value (Riak, por exemplo). Com esta abordagem de duas camadas, você tem que desenvolver o código para mover dados de um nível para o outro para armazenamento em cache. Com Voldemort, há uma camada combinada - a sua camada de dados - para que o código extra é redundante.

cache de dados na memória



Voldemort tem um cache embutida na memória, o que diminui a carga sobre o mecanismo de armazenamento e aumenta o desempenho da consulta. Não há necessidade de usar uma camada de cache separado, como de Redis ou Oracle produto caching dados de aplicativos Java Coerência no topo.

A capacidade de fornecer camadas de armazenamento de alta velocidade com caching é por isso LinkedIn usa Voldemort para certos casos de uso de alto desempenho.

Com Voldemort, você obtém o melhor dos dois mundos - um mecanismo de armazenamento para os seus requisitos de dados exatos e uma alta velocidade cache na memória para reduzir a carga em que o motor. Você também terá loja simples loja de key-value / recuperar semântica em cima de seu mecanismo de armazenamento.

avaliando Voldemort

No Harry Potter livros Lord Voldemort realizou um monte de magia nele, bom e mau, embora ele a usou para aterrorizar os trouxas. O banco de dados Voldemort, como se vê, também pode armazenar grandes quantidades de dados, mas pode ser usado para o bem por mágicos de dados em todos os lugares!

Voldemort ainda é um produto em desenvolvimento. Muitas peças ainda estão desaparecidas, por isso não suporta a variedade de mecanismos de armazenamento que você pode esperar. Este foco para a comunidade de desenvolvimento de Voldemort é provável porque Voldemort é construído na linguagem de programação Java, o que requer um conector Java Native Interface (JNI) para ser construído para a integração de mais C ou C ++ bancos de dados baseados.

Voldemort tem boa integração com frameworks de serialização, no entanto. estruturas suportadas incluem a serialização Java, Avro, Thrift, e Protocol Buffers. Isto significa que os invólucros API fornecida coincidir com o método de serialização familiar de cada linguagem de programação, tornando o desenvolvimento de aplicações intuitivas.

Voldemort não lidar com consistência, bem como outros sistemas fazem. Voldemort usa o leia reparação abordagem, onde números de versão inconsistentes para o mesmo registro são fixados em tempo de leitura, ao invés de ser mantido consistente no momento da gravação.

Também não há indexação secundário ou consulta Support- Voldemort espera que você a utilizar as instalações do mecanismo de armazenamento subjacente para lidar com esse caso de uso. Além disso, Voldemort não tem gatilhos de banco de dados nativos ou uma estrutura de processamento de alerta ou evento com a qual construir um.

Se você precisa de um armazenamento de chaves-valor que é altamente disponível, é partição tolerante, executado em Java, e usa diferentes fins de armazenamento de volta, então Voldemort pode ser para você.


Publicações relacionadas