Berkeley DB

Content

Origem

Berkeley DB originou -se na Universidade da Califórnia, Berkeley como parte da BSD, versão de Berkeley do sistema operacional UNIX. Após 4.3BSD (1986), os desenvolvedores do BSD tentaram remover ou substituir todo o código originário da AT&T UNIX original do qual o BSD foi derivado. Ao fazer isso, eles precisavam reescrever o pacote de banco de dados do UNIX. Seltzer e Yigit criaram um novo banco de dados, não onerado por nenhuma patente da AT&T: uma tabela de hash de disco que superou as bibliotecas DBM existentes. O próprio Berkeley DB foi lançado pela primeira vez em 1991 e posteriormente incluído no 4.4BSD. Em 1996, o Netscape solicitou que os autores do Berkeley DB melhorassem e estendessem a biblioteca, depois na versão 1.86, para atender aos requisitos do Netscape para um servidor LDAP e para uso no navegador Netscape. Essa solicitação levou à criação do software Sleepycat. Esta empresa foi adquirida pela Oracle Corporation em fevereiro de 2006, que continua a desenvolver e vender o Berkeley DB.

Desde o seu lançamento inicial, o Berkeley DB passou por várias versões. Cada ciclo de liberação principal introduziu um único novo recurso principal, geralmente colocando em cima dos recursos anteriores para adicionar funcionalidade ao produto. As liberações 1.x focaram no gerenciamento do armazenamento de dados de chave/valor e são chamadas de "armazenamento de dados" (DS). As versões 2.x adicionaram um sistema de travamento, permitindo acesso simultâneo aos dados. Isso é conhecido como "armazenamento de dados simultâneo" (CDS). As versões 3.x adicionaram um sistema de registro para transações e recuperação, chamado "armazenamento de dados transacionais" (TDS). As versões 4.x adicionaram a capacidade de replicar registros de log e criar um banco de dados multi-replica de mestre único distribuído. Isso é chamado de conjunto de recursos "alta disponibilidade" (ha). A evolução de Berkeley DB às vezes levou a pequenas alterações na API ou alterações no formato de log, mas muito raramente os formatos de banco de dados são alterados. O Berkeley DB HA suporta atualizações on -line de uma versão para a outra, mantendo a capacidade de ler e aplicar os registros de log da versão anterior.

Os sistemas operacionais FreeBSD e OpenBSD continuam a usar o Berkeley DB 1.8X por razões de compatibilidade; [Dubious-Discuta] Os sistemas operacionais baseados em Linux geralmente incluem várias versões para acomodar aplicativos ainda usando interfaces/arquivos mais antigos.

Começando com a versão 6.0.21 (Oracle 12C), todos os produtos Berkeley DB são licenciados sob o GNU AGPL. Anteriormente, o Berkeley DB foi redistribuído sob a licença BSD de 4 cláusulas (antes da versão 2.0) e a licença pública do Sleepycat, que é uma licença de código aberto aprovado pela OSI e uma licença de software gratuita aprovada pela FSF. O produto é enviado com código fonte completo, script, suíte de teste e documentação. O recurso abrangente, juntamente com os termos de licenciamento, levou ao seu uso em uma infinidade de software gratuito e de código aberto. Aqueles que não desejam cumprir os termos do GNU AGPL ou usam uma versão mais antiga com a licença pública do Sleepycat têm a opção de comprar outra licença proprietária para redistribuição da Oracle Corporation. Esta técnica é chamada de licenciamento duplo.

O Berkeley DB inclui interfaces de compatibilidade para algumas bibliotecas históricas do banco de dados Unix: DBM, NDBM e HSEARCH (A System V e Posix Library para criar tabelas de hash na memória).

Arquitetura

O Berkeley DB possui uma arquitetura notavelmente mais simples do que a de outros sistemas de banco de dados, como sistemas de gerenciamento de banco de dados relacionais. Por exemplo, como o SQLite, ele não se baseia em um modelo de servidor/cliente e não fornece suporte ao acesso à rede-os programas acessem o banco de dados usando chamadas de API em processo. O Oracle adicionou suporte ao SQL na versão 11g R2 com base na popular API SQLite, incluindo uma versão do SQLite em Berkeley DB (usa Berkeley DB para armazenamento). Há suporte de terceiros para PL/SQL em Berkeley DB por meio de um produto comercial chamado Metatranz Stepsqlite.

Um programa que acessa o banco de dados é gratuito para decidir como os dados devem ser armazenados em um registro. Berkeley DB não coloca restrições nos dados do registro. O registro e sua chave podem ter até quatro gigabytes.

Apesar de ter uma arquitetura simples, o Berkeley DB suporta muitos recursos avançados de banco de dados, como transações ácidas, bloqueio de granulação fina, backups quentes e replicação.

Oracle Corporation Uso do nome "Berkeley DB"

O nome "Berkeley DB" é usado pela Oracle Corporation para três produtos diferentes, dois dos quais não são BDB:

Berkeley DB, the C database library that is the subject of this articleBerkeley DB Java Edition, a pure Java library whose design is modelled after the C library but is otherwise unrelatedBerkeley DB XML, a C++ program that supports XQuery, and which includes a legacy version of the C database library

Programas de código aberto ainda usando Berkeley DB

O BDB já foi muito difundido, mas o uso caiu abruptamente a partir de 2013 (consulte a seção de licenciamento). Software notável que ainda usa o Berkeley DB para armazenamento de dados inclui:

Bitcoin Core – The first implementation of the Bitcoin cryptocurrency retains use of 2009 Berkeley DB 4.8 for one featureBogofilter – A free/open source spam filter that saves its wordlists using Berkeley DB by defaultCitadel – A free/open source groupware platform that keeps all of its data stores, including the message base, in Berkeley DB. Citadel is licensed under the GPLv3 which is compatible with Oracle BDB licensingSendmail – A free/open source MTA for Linux/Unix systems no longer in widespread useSpamassassin – A free/open source anti-spam application

Licenciamento

Berkeley DB v2.0 e superior está disponível sob uma licença dupla:

Oracle commercial license The GNU AGPL v3.

A troca da licença de código aberto em 2013 da licença Sleepycat para o AGPL teve um grande efeito no software de código aberto. Como o BDB é uma biblioteca, qualquer aplicativo vinculando a ele deve estar sob uma licença compatível com AGPL. Muitos aplicativos de código aberto e todos os aplicativos de código fechado precisariam ser relicheados para se tornarem compatíveis com AGPL, o que não era aceitável para muitos desenvolvedores e sistemas operacionais de código aberto. Em 2013, havia muitas alternativas ao BDB, e o Debian Linux era típico em sua decisão de eliminar completamente o Berkeley DB, com uma preferência pelo Banco de Dados com memória da Lightning (LMDB).