DBM (computação) - DBM (computing)

Na computação, um DBM é uma biblioteca e formato de arquivo que fornece acesso rápido aos dados com uma única chave. Um banco de dados de valor-chave do Unix original , dbm é um dos primeiros exemplos de sistema NoSQL .

História

A biblioteca e formato de arquivo dbm original era um mecanismo de banco de dados simples , originalmente escrito por Ken Thompson e lançado pela AT&T em 1979. O nome é um acrônimo de três letras para DataBase Manager e também pode se referir à família de mecanismos de banco de dados com APIs e recursos derivado do dbm original .

Os dbm lojas biblioteca arbitrário de dados por uso de uma chave única (uma chave primária ) em de tamanho fixo baldes e usos hashing técnicas para permitir a recuperação rápida dos dados pela chave.

O esquema de hashing usado é uma forma de hashing extensível , de modo que o esquema de hashing se expande à medida que novos depósitos são adicionados ao banco de dados, o que significa que, quando quase vazio, o banco de dados começa com um depósito, que é dividido quando fica cheio. Os dois depósitos filho resultantes serão divididos quando ficarem cheios, de modo que o banco de dados cresce à medida que as chaves são adicionadas.

A biblioteca dbm e seus derivados são bancos de dados pré- relacionais  - eles gerenciam matrizes associativas , implementadas como tabelas hash em disco . Na prática, eles podem oferecer uma solução mais prática para armazenamento de alta velocidade acessado por chave, pois não exigem a sobrecarga de conexão e preparação de consultas. Isso é contrabalançado pelo fato de que geralmente só podem ser abertos para escrita por um único processo de cada vez. Um daemon de agente pode lidar com solicitações de vários processos, mas introduz sobrecarga de IPC .

Implementações

A biblioteca AT&T dbm original foi substituída por suas muitas implementações sucessoras. Exemplos notáveis ​​incluem:

  • ndbm ("new dbm"), baseado no dbm original com alguns novos recursos.
  • GDBM ("GNU dbm"), GNU reescrita da biblioteca implementando recursos ndbm e sua própria interface. Também oferece novos recursos, como tolerância a falhas para garantir a consistência dos dados.
  • sdbm ("small dbm"), uma reescrita de dbm em domínio público . É uma parte das distribuições padrão para Perl e Ruby .
  • qdbm ("Quick Database Manager"), um dbm de alto desempenho que emprega muitas das mesmas técnicas do Gabinete de Tóquio / Kyoto. Escrito pelo mesmo autor antes de passar para os gabinetes.
  • tdb ("Trivial Database"), um banco de dados simples usado pelo Samba que oferece suporte a vários gravadores. Possui uma API baseada em gdbm.
  • Berkeley DB , 1991 substituição do ndbm pelo Sleepycat Software (agora Oracle ) criado para contornar os direitos autorais do AT&T Unix no BSD . Ele apresenta muitas extensões, como paralelismo, controle transacional, hashing e armazenamento em árvore B.
  • LMDB : implementação da árvore B + com mapeamento de memória de cópia na gravação em C com uma API ao estilo de Berkeley.

Os bancos de dados a seguir são inspirados em dbm, mas não fornecem diretamente uma interface dbm, embora seja trivial encapsular uma:

  • cdb ("banco de dados constante"), banco de dados de Daniel J. Bernstein , arquivos de banco de dados só podem ser criados e lidos, mas nunca modificados
  • Tkrzw , um sucessor licenciado do Apache 2.0 para o Gabinete de Kyoto e o Gabinete de Tóquio
  • WiredTiger : banco de dados com armazenamento tradicional orientado por linha e por coluna.

Disponibilidade

Em 2001, a implementação ndbm do DBM era padrão no Solaris e IRIX, enquanto o gdbm é onipresente no Linux . As implementações do Berkeley DB eram padrão em alguns sistemas operacionais livres. Após uma mudança de licenciamento do Berkeley DB para GNU AGPL em 2013, projetos como o Debian mudaram para o LMDB.

Confiabilidade

Um teste de difusão AFL 2018 em muitos bancos de dados da família DBM expôs muitos problemas nas implementações quando se trata de arquivos de banco de dados corrompidos ou inválidos. Apenas o freecdb de Daniel J. Bernstein não apresentou travamentos. Os autores de gdbm, tdb e lmdb foram solicitados a responder. Berkeley DB ficou para trás devido à grande quantidade de outras emissões; as correções seriam irrelevantes para usuários de software de código aberto devido à mudança de licenciamento que os trava de volta para uma versão antiga.

Veja também

Referências

Bibliografia