Qual é a diferença entre SQLite e Berkeley DB?
Primeiro as semelhanças: ambos são bases de dados incorporadas, o que significa que você compila em bibliotecas para acesso direto aos dados, em vez de se conectar a um processo de base de dados através de um socket de rede. Em comparação com um RDBMS tradicional, isto tem a vantagem de reduzir muito as despesas gerais, especialmente no caso de chave/valor, onde a falta de um analisador SQL o torna bastante rápido. Ambos são de código aberto; Berkeley DB é lançado sob a GPL, SQLite parece estar simplesmente no domínio público.
SQLite está focado principalmente em casos de uso de uma única thread com conjuntos de dados pequenos. Para esse fim, é uma escolha muito boa. Tão bom de facto que tanto a Apple como o Google escolheram usá-lo no iOS e Android respectivamente, entre outros. Para saber mais sobre isso, veja aqui:
Usos apropriados para SQLite
Existem vários sabores de Berkeley DB, o mais parecido com o SQLite é a biblioteca C (também compatível com C++/C#). Caso alguém esteja curioso, os outros dois são Berkeley DB JE, um banco de dados Java puro, e Berkeley DB XML, que como você provavelmente adivinhou é usado para armazenar documentos XML.
Todos os 3 são armazéns de dados chave/valor, mas desde 2010 a biblioteca C também tem uma API SQL. A API SQL é baseada no SQLite, por isso são compatíveis com a API. Você pode encontrá-la aqui:
BDB>Berkeley DB
Se nos focarmos apenas na biblioteca C, BDB tem dois pontos de comparação: API SQL e chave/valor. Comparando a API SQL, Berkeley DB é destinado a aplicações que requerem conjuntos de dados maiores ou concorrência. Nestes tipos de casos de uso, Berkeley DB terá um desempenho superior ao do SQLite. Outra é a criptografia, que não está disponível no SQLite sem uma licença.
Comparar a biblioteca key/value C é um pouco de maçãs e laranjas, mas aqui vai: em geral, se você quer o melhor desempenho e don'não precisa/quer a estrutura que SQL fornece, ou se você'gostaria de implementar seu próprio estilo de acesso aos dados orientado a objetos, vá com BDB. Se você já conhece SQL e está confortável com ele, tem um pequeno conjunto de dados e não há necessidade de alta concorrência, SQLite é provavelmente o que você quer.
BDBerkeley também tem uma opção de alta disponibilidade para escalonamento de leitura. Se você precisa tanto ler e/ou escrever em escala, lá's Oracle NoSQL Database, que é construído em cima do Berkeley DB JE.
Temos clientes em produção com conjuntos de dados terabyte usando Berkeley DB.
Eric Jensen
Oracle PM