Índice:
Vídeo: Microsoft Azure OpenDev—June 2017 2024
Há momentos em que você deseja fornecer acesso de alta velocidade de estilo de valor-chave aos dados mantidos em um banco de dados relacional. Este banco de dados pode ser, por exemplo, Berkeley DB (Java Edition for Voldemort) ou MySQL.
Fornecer acesso de chave como acesso aos dados requer uma loja de valores-chave para ser colocada em camadas diretamente em 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 uma tubulação de ingestão para copiar dados de um banco de dados relacional.
Este processo simplifica o fornecimento de uma loja de valores-chave de alta velocidade enquanto usa um banco de dados relacional tradicional para armazenamento.
Alterando os mecanismos de armazenamento
Cargas de trabalho diferentes requerem diferentes mecanismos de armazenamento e características de desempenho. Aerospike é ótimo para ingerir alto; Redis é ótimo para grandes números de leituras. Cada um é construído em torno de um caso de uso específico.
Voldemort assume uma abordagem diferente. Em vez de tratar a loja de valor-chave como uma camada separada de gerenciamento de dados, o Voldemort trata a loja de valores-chave como uma API e adiciona uma camada de cache na memória, o que significa que você pode conectar-se ao back-end que faz mais sentido para suas necessidades particulares.
Se você quer um nível de armazenamento de disco direto, você pode usar o mecanismo de armazenamento Berkeley DB Java Edition. Se ao invés você quiser armazenar dados relacionais, você pode usar o MySQL como back-end para o Voldemort.
Esse recurso combinado com tipos de dados personalizados permite que você use a API de armazenamento / recuperação simples de uma loja de valor-chave para retirar e armazenar informações de cache diretamente em uma loja back-end diferente.
Esta abordagem contrasta com a abordagem usual de ter bancos de dados separados - um, por exemplo, Oracle para dados transacionais e outro em sua loja de valor-chave (Riak, por exemplo). Com esta abordagem de duas camadas, você precisa desenvolver código para mover dados de um nível para o outro para armazenamento em cache. Com o Voldemort, existe um nível combinado - seu nível de dados - de modo que o código extra é redundante.
Cache de dados na memória
O Voldemort possui um cache embutido interno, que diminui a carga no mecanismo de armazenamento e aumenta o desempenho da consulta. Não é necessário usar uma camada de cache separada, como o produto de cache de dados da aplicação Cois de Redis ou Oracle, no topo.
A capacidade de fornecer níveis de armazenamento de alta velocidade com armazenamento em cache é por que o LinkedIn usa o Voldemort para certos casos de uso de alto desempenho.
Com o Voldemort, você obtém o melhor dos dois mundos - um mecanismo de armazenamento para seus requisitos de dados exatos e um cache de memória de alta velocidade para reduzir a carga nesse motor.Você também obtém uma loja de armazenamento de valor-chave simples / recupera semânticas em cima do seu mecanismo de armazenamento.
Avaliando Voldemort
Nos livros Harry Potter Lord Voldemort teve muita magia nele, tanto bom quanto ruim, embora ele usasse isso para aterrorizar trouxas. O banco de dados Voldemort, como se revela, também pode armazenar grandes quantidades de dados, mas pode ser usado para sempre por magos de dados em todos os lugares!
O Voldemort ainda é um produto em desenvolvimento. Muitas peças ainda estão faltando, por isso não suporta a variedade de mecanismos de armazenamento que você pode esperar. Esse foco para a comunidade de desenvolvimento do Voldemort é provável porque o Voldemort é construído na linguagem de programação Java, que requer um conector Java Native Interface (JNI) para ser construído para integração na maioria dos bancos de dados C ou C ++.
No entanto, o Voldemort possui boa integração com estruturas de serialização. Os frameworks suportados incluem serialização Java, Avro, Thrift e Protocol Buffers. Isso significa que os wrappers da API fornecidos combinam o método de serialização familiar de cada linguagem de programação, tornando o desenvolvimento de aplicativos intuitivo.
O Voldemort não lida com consistência, como também com outros sistemas. O Voldemort usa a abordagem de read repair , onde números de versão inconsistentes para o mesmo registro são corrigidos em tempo de leitura, em vez de serem mantidos consistentes no tempo de gravação.
Também não há indexação secundária ou suporte de consulta; A Voldemort espera que você use as instalações do mecanismo de armazenamento subjacente para lidar com esse caso de uso. Além disso, o Voldemort não possui disparadores de banco de dados nativos ou uma estrutura de processamento de alertas ou eventos com a qual construir um.
Se você precisar de uma loja de valores-chave altamente disponível, é tolerante a partição, é executado em Java e usa diferentes back-ends de armazenamento, então o Voldemort pode ser para você.