Usando Pluggable armazenamento com NoSQL

Há momentos em que você deseja fornecer # 8208-estilo 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 # 8208 valor-chave como o acesso aos dados requer um # 8208-value armazenamento de chaves para ser em camadas diretamente sobre um desses outros bancos de dados. Basicamente, você usar outro banco de dados como a camada de armazenamento, em vez de uma combinação de um sistema de arquivos para armazenamento e um gasoduto de ingestão para copiar dados de um banco de dados relacional.

Este processo simplifica fornecendo uma chave # loja 8208 de valor alta velocidade enquanto estiver usando um banco de dados relacional tradicional para o armazenamento.

Alterar mecanismos de armazenamento

Diferentes cargas de trabalho requerem diferentes mecanismos de armazenamento e características de desempenho. Aerospike é grande em alta ingerida 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 8208-valor como uma camada separada da gestão de dados, Voldemort trata o # armazenamento de chaves 8208-valor como uma API e adiciona um em # camada de cache 8208-memória, o que significa que você pode ligar para a parte de trás end que faz mais sentido para suas necessidades particulares.

Se você quer uma camada de armazenamento em 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 # 8208-end para Voldemort.

Esta capacidade combinada com tipos de dados personalizados permite a utilização de loja simples a # de armazenamento de chaves 8208-value / recuperar API para puxar eficazmente volta e directamente informações de cache em uma volta # loja 8208-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 # 8208 key-value (Riak, por exemplo). Com este dois # abordagem 8208 camadas, você tem que desenvolver 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.

armazenar dados na memória

Voldemort tem um built # 8208-in em # cache de 8208 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 o Redis ou Oracle produto cache de dados de aplicativos Java Coerência no topo.

A capacidade de fornecer alta # camadas de armazenamento 8208-velocidade com caching é por isso LinkedIn usa Voldemort para determinados casos de utilização 8208 no desempenho de alta #.

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

avaliando Voldemort

No Harry Potter livros Lord Voldemort realizou um monte de magia nele, bom e mau, embora ele é usado 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ê poderia 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 os quadros de serialização, embora. 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, fazendo com que o desenvolvimento de aplicações intuitivas.

Voldemort não lidar com coerência, bem como outros sistemas fazem. Voldemort usa o leia reparação abordagem, em que números de versões inconsistentes para o mesmo registro são fixados em tempo de leitura, em vez de serem mantidos consistentes no momento da gravação.

Também não há indexação secundária 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 # 8208-valor que é altamente disponível, é partição # 8208 tolerantes, executado em Java, e usa diferentes fins de armazenamento de volta, então Voldemort pode ser para você.

menu