Banco de dados de valores-chave - Key–value database

Um cartão de dados tabular proposto para o mecanismo analítico de Babbage mostrando um par de valores-chave, neste caso um número e seu logaritmo de base dez.

Um banco de dados de valor-chave , ou armazenamento de valor-chave , é um paradigma de armazenamento de dados projetado para armazenar, recuperar e gerenciar matrizes associativas e uma estrutura de dados mais comumente conhecida hoje como dicionário ou tabela hash . Os dicionários contêm uma coleção de objetos , ou registros , que por sua vez têm muitos campos diferentes dentro deles, cada um contendo dados. Esses registros são armazenados e recuperados por meio de uma chave que identifica exclusivamente o registro e é usada para localizar os dados no banco de dados .

Uma tabela que mostra diferentes valores de dados formatados associados a diferentes chaves

Os bancos de dados de valor-chave funcionam de uma maneira muito diferente dos bancos de dados relacionais (RDB) mais conhecidos . RDBs predefinem a estrutura de dados no banco de dados como uma série de tabelas contendo campos com tipos de dados bem definidos . Expor os tipos de dados ao programa de banco de dados permite que ele aplique várias otimizações. Em contraste, os sistemas de valores-chave tratam os dados como uma única coleção opaca, que pode ter campos diferentes para cada registro. Isso oferece flexibilidade considerável e segue mais de perto os conceitos modernos, como a programação orientada a objetos . Como os valores opcionais não são representados por marcadores ou parâmetros de entrada, como na maioria dos RDBs, os bancos de dados de valor-chave geralmente usam muito menos memória para armazenar o mesmo banco de dados, o que pode levar a grandes ganhos de desempenho em certas cargas de trabalho.

Desempenho, falta de padronização e outras questões limitaram os sistemas de valor-chave a nichos de uso por muitos anos, mas a rápida mudança para a computação em nuvem após 2010 levou a um renascimento como parte do movimento NoSQL mais amplo . Alguns bancos de dados gráficos , como ArangoDB , também são bancos de dados de valores-chave internamente, adicionando o conceito de relacionamentos ( ponteiros ) entre registros como um tipo de dados de primeira classe.

Tipos e exemplos notáveis

Os bancos de dados de valor-chave podem usar modelos de consistência que variam de consistência eventual a serializabilidade . Alguns apóiam o pedido de chaves.

Alguns mantêm os dados na memória (RAM) , enquanto outros empregam unidades de estado sólido ou discos rotativos .

Cada entidade (registro) é um conjunto de pares de valores-chave. Uma chave possui vários componentes, especificados como uma lista ordenada. A chave principal identifica o registro e consiste nos componentes principais da chave. Os componentes subsequentes são chamados de teclas secundárias. Essa organização é semelhante a uma especificação de caminho de diretório em um sistema de arquivos (por exemplo, / Major / minor1 / minor2 /). A parte “valor” do par chave-valor é simplesmente uma string não interpretada de bytes de comprimento arbitrário.

O sistema Unix fornece dbm (gerenciador de banco de dados), que é uma biblioteca de 1979 originalmente escrita por Ken Thompson . Ele também é portado para o Microsoft Windows , fornecido por meio de linguagens de programação como Perl para Win32 . O dbm gerencia matrizes associativas de dados arbitrários usando uma única chave (uma chave primária). Implementações modernas incluem Berkeley DB , sdbm e GNU dbm . Embora dbm preceda o conceito de NoSQL e seja raramente mencionado no discurso moderno, ele é usado por muitos softwares.

Fornecedor Licença Eventualmente consistente Ordenado RAM Disco
Aerospike AGPL sim sim
Apache Ignite AL2 sim sim
ArangoDB AL2 sim sim
Berkeley DB AGPL , proprietário sim
CDB Domínio público
Servidor de banco de dados Clusterpoint Proprietário
Servidor Couchbase Proprietário
Dínamo Proprietário sim
etcd AL2 sim
FoundationDB AL2 sim
GigaSpaces AL2 , proprietário sim
Sistemas GridGain Proprietário sim
GT.M AGPL , proprietário
Hazelcast AL2 , proprietário sim
Hibari AL2
IBM Informix C-ISAM Proprietário sim
imudb AL2 sim
InfinityDB Proprietário sim
Kvrocks BSD3 sim
KeyDB BSD3
Keyspace Proprietário
LevelDB BSD3 sim
LMDB OpenLDAP (semelhante a BSD) sim sim
memcached BSD3 sim
MemcacheDB BSD sim
Microsoft SQL Server Proprietário sim sim
NoSQLz freeware
Coerência Proprietário sim
Banco de dados Oracle NoSQL AL2 , proprietário sim
Projeto Voldemort AL2 sim
Redis BSD3 sim
Riak AL2 sim
RocksDB AL2 ou GPL 2 sim
Scylla AGPL , proprietário
Tarantool BSD sim
Tkrzw AL2 sim
Venti GPLv2 , BSD sim
OpenLink Virtuoso GPLv2 , proprietário sim sim

Veja também

Referências