Pretendo desenvolver um pequeno aplicativo (Java) para gerenciar minhas finanças. Acredito que preciso usar um banco de dados embutido, mas não tenho experiência com relação a esse problema. Tentei ver alguns dos produtos disponíveis , mas não consigo decidir qual seria o mais adequado para mim. H2 , HSQLDB , Derby e Berkeley DB parecem ser bons candidatos, mas ainda não vejo como eles se comparam. Agradeço sua ajuda em compará-los e me ajudar a decidir qual usar.
Pretendo usar o Hibernate para meu aplicativo (a menos que você recomende usar a API fornecida pelo DBMS), mas também quero ter a capacidade de editar o banco de dados facilmente usando uma ferramenta de navegação SQL (modificando o esquema e alterando os dados).
Obrigado.
java
database
comparison
embedded-database
Hosam Aly
fonte
fonte
Respostas:
Ou
ou
O que você usar é com você, dependendo de quanto desempenho e quanta estabilidade você precisa.
O desenvolvedor do H2 fez uma boa avaliação de desempenho:
http://www.h2database.com/html/performance.html
fonte
Eu uso o Apache Derby para praticamente todas as minhas necessidades de banco de dados embutido. Você também pode usar o Java DB da Sun que é baseado no Derby, mas a versão mais recente do Derby é muito mais recente. Ele oferece suporte a várias opções de bancos de dados nativos comerciais, mas é muito menor e mais fácil de incorporar. Tive algumas tabelas de banco de dados com mais de um milhão de registros sem problemas.
Eu costumava usar HSQLDB e Hypersonic cerca de 3 anos atrás. Ele tem alguns problemas importantes de desempenho no momento e eu mudo para o Derby a partir dele por causa desses problemas. O Derby foi sólido mesmo quando estava na incubadora da Apache.
fonte
Eu precisava usar o banco de dados Java embarcado em um de meus projetos e fiz muitas pesquisas para entender os prós e contras de cada banco de dados. Eu escrevi um blog listando prós e contras de bancos de dados Java embutidos populares (H2, HSQLDB, Derby, ObjectDB, Neo4j, OrientDB), você pode dar uma olhada. Escolhi H2 porque achei que fosse mais adequado aos meus requisitos. Link para o blog: http://sayrohan.blogspot.in/2012/12/choosing-light-weight-java-database.html Espero que ajude!
fonte
Eu iria com H2, o desempenho é muito melhor do que Derby. Leia http://www.h2database.com/html/performance.html para obter mais informações.
fonte
HSQLDB é um bom candidato (o fato de ser usado no OpenOffice pode convencer alguns de vocês), mas para um aplicativo pessoal tão pequeno, por que não usar um banco de dados de objetos (em vez de um banco de dados relacionais clássico)?
Usei DB4O em um de meus projetos e estou muito satisfeito com ele. Sendo orientado a objetos, você não precisa de toda a camada do Hibernate e pode inserir / atualizar / excluir / consultar objetos diretamente! Além disso, você não precisa se preocupar com o esquema, você trabalha diretamente com os objetos e o DB4O faz o resto!
Concordo que pode demorar um pouco para se acostumar com esse novo tipo de banco de dados, mas verifique o tutorial do DB40 para ver como é fácil trabalhar com o DB!
EDIT: Como dito nos comentários, DB4O lida automaticamente com as versões mais recentes das classes. Além disso, uma ferramenta para navegar e atualizar o banco de dados fora do aplicativo está disponível aqui: http://code.google.com/p/db4o-om/
fonte
Java DB (distribuição da Sun do Apache Derby) agora vem no JDK 6!
Eu queria fazer algo como Jason Cohen e tenho achado que essa parece ser a maneira mais fácil de estar na distro JDK (que na semana passada agora é um requisito para meu aplicativo). Ou talvez eu seja apenas preguiçoso assim.
fonte
Usamos HSQLDB na produção como uma opção "sem configuração" para nosso aplicativo. Ele permite que as pessoas experimentem sem o incômodo de configurar um banco de dados real.
No entanto, não oferecemos suporte para uso normal. Os motivos são vários:
Para pelo menos (2) e (3), existem maneiras de contornar isso, mas é difícil; é muito mais fácil, por exemplo, instalar o MySQL.
fonte
neo4j é:
Ainda não tive a chance de experimentar - mas parece muito promissor. Observe que este não é um banco de dados SQL - seu gráfico de objeto é persistente para você - portanto, pode não ser apropriado para seu aplicativo existente.
fonte
Uma boa ferramenta de comparação pode ser encontrada aqui: http://www.jpab.org/All/All/All.html
Observe também as comparações diretas de DBMS / JPA
fonte
A maioria das coisas já foi dita, mas posso apenas acrescentar que usei HSQL, Derby e Berkely DB em alguns dos meus projetos favoritos e todos funcionaram perfeitamente. Então eu não acho que realmente importa muito para ser honesto. Uma coisa que vale a pena mencionar é que o HSQL se salva como um arquivo de texto com instruções SQL, o que é muito bom. Torna realmente mais fácil para quando você está desenvolvendo fazer testes e configurar dados rapidamente. Também pode fazer edições rápidas, se necessário. Acho que você pode facilmente transferir tudo isso para qualquer banco de dados se precisar alterar também :)
fonte
HSQLDB pode causar problemas para aplicativos grandes, não é tão estável.
O melhor que já ouvi (mas não em primeira mão) é berkleyDB. Mas, a menos que você abra o código-fonte, vai custar-lhe um braço e uma perna para usar devido ao licenciamento ... consulte este http://www.oracle.com/technology/software/products/berkeley-db/htdocs/licensing.html para detalhes.
ps. berkleyDB não é um banco de dados relacional, caso você não saiba.
fonte
Eu sou um grande fã de DB4O para .Net e Java .
O desempenho melhorou muito desde os primeiros lançamentos. O modelo de licenciamento também não é tão ruim. Gosto particularmente das opções disponíveis para consultar seus objetos. A consulta por exemplo é muito poderosa e fácil de se acostumar.
fonte
Que critérios você usará para avaliá-los? Se você ainda não sabe, não precisa decidir agora. Tente tornar seu aplicativo o mais agnóstico possível em termos de implementação de banco de dados - fornecendo os wrappers apropriados, objetos de acesso a dados, etc., e tome essa decisão quando tiver todos os fatos à mão e precisar decidir.
Se você estiver usando bancos de dados relacionais e SQL, o procedimento acima não deve ser muito difícil (usando JDBC etc). Certifique-se de ter muitos testes circundantes para que, quando quiser alternar entre os bancos de dados, você possa determinar se a funcionalidade do seu aplicativo permanece a mesma.
Eu tive o mesmo problema há algum tempo. Eu não sabia qual banco de dados usar, então minha primeira solução usou Derby (ou HSQLDB?), E mais tarde pude mudar para HSQLDB (ou Derby? Não me lembro qual solução funcionou) depois de determinar onde Tive problemas (relacionados ao desempenho) e qual solução realmente funcionaria para mim.
fonte
Eu usei o Derby e realmente odeio suas funções de conversão de tipo de dados, especialmente funções de data / hora. (Tipo de número) <--> A conversão de Varchar é uma dor.
Portanto, se você planeja usar conversões de tipo de dados em suas instruções de banco de dados, considere o uso de outro banco de dados embutido, eu aprendi tarde demais.
Conversões de tipo de dados da versão mais recente do Derby
fonte
Pessoalmente, sou a favor do HSQLDB, mas principalmente porque foi o primeiro que tentei.
H2 é dito ser mais rápido e fornece um frontend GUI mais agradável (que é genérico e funciona com qualquer driver JDBC, aliás).
Pelo menos HSQLDB, H2 e Derby fornecem modos de servidor que são ótimos para desenvolvimento, porque você pode acessar o banco de dados com seu aplicativo e alguma ferramenta ao mesmo tempo (que o modo embutido geralmente não permite).
fonte
Acho que estou um pouco atrasado (muito atrasado ;-)) para este post, mas gostaria de adicionar o Prest, um banco de dados incorporado orientado a objetos e de código aberto para Java e .NET. para sua consideração. Prest é um banco de dados integrado de código aberto / licença dupla para Java. A distribuição é compatível com a plataforma Android do Google e também inclui Prest Lite para Java ME. Até construímos um benchmark Android e produzimos um white paper sobre o assunto ... você pode dar uma olhada aqui: http://www.mcobject.com/index.cfm?fuseaction=download&pageid=581§ionid=133
Atenciosamente, Chris
fonte
Se estou correto, H2 é dos mesmos caras que escreveram HSQLDB. É muito melhor se você confiar nos benchmarks de seu site. Além disso, há alguma noção de que a comunidade do sol saltou muito rapidamente para o Derby.
fonte
Sei que você mencionou a navegação SQL, mas todo o resto em sua pergunta me faz querer sugerir que você também considere o DB4O , que é um banco de dados excelente e simples .
fonte