Pergunta

Eu pretendo desenvolver uma pequena aplicação (Java) para gerenciar minhas finanças. Eu acredito que eu preciso usar um banco de dados embutido, mas eu não tenho nenhuma experiência sobre este assunto. Eu tentei olhar em alguns dos produtos disponíveis , mas eu não posso decidir qual seria o mais adequado para mim. H2 , HSQLDB , Derby e Berkeley DB parecem ser bons candidatos, mas eu ainda não vejo como eles se comparam uns aos outros. Eu aprecio sua ajuda comparando-os e ajudando-me decidir qual usar.

Eu pretendo usar o Hibernate para a minha candidatura (a menos que você recomendaria usar DBMS-fornecidos API), mas eu também quero ter a capacidade de editar o banco de dados facilmente usando uma ferramenta de navegação SQL (modificando esquema e alterar dados).

Obrigado.

Foi útil?

Solução

De qualquer

  • HSQLDB - Usado por OpenOffice, testado e estável. É fácil de usar. Se você quiser editar o seu db-dados, você pode simplesmente abrir o arquivo e editar as instruções de inserção.

ou

  • H2 - Disse para ser mais rápido (pelo desenvolvedor, que originalmente concebido hsqldb, também)

qual você usa é até você, dependendo de como desempenho muito e quanto estabilidade que você precisa.

O desenvolvedor de H2 colocou-se uma avaliação de desempenho agradável:
http://www.h2database.com/html/performance.html

Outras dicas

Eu uso Apache Derby para praticamente todas as minhas necessidades de banco de dados incorporados. Você também pode usar o Sun Java DB que é baseado em Derby, mas a última versão do Derby é muito mais recente. Ele suporta uma grande quantidade de opções que comerciais, bancos de dados nativas suportam, mas é muito menor e mais fácil de incorporar. Eu tive algumas tabelas de banco de dados com mais de um milhão de discos, sem problemas.

Eu costumava usar HSQLDB e Hypersonic cerca de 3 anos. Ele tem alguns dos principais problemas de desempenho no momento e eu mudar para Derby a partir dele por causa dessas questões. Derby tem sido sólido, mesmo quando ele estava na incubadora a Apache.

eu precisava usar Java banco de dados incorporado em um dos meus projetos e eu fiz muitos prós compreensão de pesquisa e contras de cada banco de dados. Eu escrevi um blog listando prós e contras de bancos de dados populares Java incorporado (H2, HSQLDB, Derby, ObjectDB, Neo4j, OrientDB), você pode ter um olhar para ele. Eu escolhi H2 como eu pensei que o mais adequado as minhas necessidades. Fazer a ligação para o blog: http://sayrohan.blogspot.in/2012/12 /choosing-light-weight-java-database.html Espero que ajude!

Eu iria com H2, o desempenho é para muito melhor do Derby. Leia http://www.h2database.com/html/performance.html para mais informações .

HSQLDB é um bom candidato (o fato de que ele é usado em OpenOffice pode convenceu alguns de vocês), mas para uma pequena aplicação, tais personnal, por que não usar um banco de dados de objeto (em vez de um banco de dados relationnal clássico)?

DB4O em um dos meus projetos, e eu estou muito satisfeito com ele. Ser orientada a objetos, você não precisa de toda a camada de hibernação, e pode inserir diretamente / update / objetos / consulta de exclusão! Além disso, você não precisa se preocupar com o esquema, você diretamente o trabalho com os objetos e DB4O faz o resto!

Eu concordo que isso pode levar algum tempo para se acostumar com este novo tipo de banco de dados, mas verificar o DB40 tutorial para ver como é fácil torna o trabalho com o DB!

EDIT: Como disse 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 da aplicação está disponível aqui: http: // code.google.com/p/db4o-om/

Java DB (distribuição de Apache Derby do Sol) agora navios em JDK 6!

Eu tenho quis fazer algo como Jason Cohen e estive pensando esta parece ser a maneira mais fácil estar na distro JDK (que, na semana passada, é agora um requisito para o meu app). Ou talvez eu sou apenas preguiçoso dessa forma.

Nós usamos HSQLDB na produção como uma opção de "não-configuração" para a nossa aplicação. Ele permite que as pessoas a julgamento sem a necessidade de criação de um banco de dados real.

No entanto fazemos não apoiá-lo para uso normal. As razões são várias:

  1. Retarda proporcionalmente ao tamanho dos dados.
  2. difícil acesso fora do nosso aplicativo (por exemplo, para relatórios personalizados).
  3. Transações / disk-sync é difícil de acertar, por isso é fácil de dados perder.

Para, pelo menos, (2) e (3), existem maneiras de contornar isso, mas é difícil; é muito mais fácil, por exemplo, instalar o MySQL.

Neo4j é:

um incorporado, baseado em disco, totalmente transacional Java motor de persistência que armazena dados estruturados em gráficos ao invés de tabelas

Eu não tive a chance de experimentá-lo ainda - mas parece muito promissor. Note que este não é um banco de dados SQL - o gráfico do objeto é mantido para você -. Por isso pode não ser apropriado para seu aplicativo existente

Boa ferramenta de comparação pode ser encontrada aqui: http://www.jpab.org/All/All/All .html

Observe também a cabeça para comparações Chefe DBMS / JPA

Eu sou um grande fã de DB4O tanto para .Net e Java .

Performance tornou-se muito melhor desde o início dos lançamentos. O modelo is not licenciamento muito ruim, qualquer um. Eu particularmente gosto das opções disponíveis para consultar seus objetos. Consulta por exemplo é muito poderoso e fácil de se acostumar.

Quais os critérios que você usa para avaliar esses? Se você não sabe ainda, então você não precisa decidir agora. Tente fazer o seu aplicativo como banco de dados aplicação agnóstica, como você pode -. Fornecendo os invólucros apropriados, acesso a dados objetos etc., e fazer esta decisão quando você tem todos os fatos a mão e você tem que decidir

Se você estiver usando bancos de dados relacionais e SQL, o texto acima não deve ser muito difícil (usando JDBC etc). Certifique-se de ter abundância de circundante testes de modo que quando você quiser alternar entre bancos de dados, você pode determinar que a funcionalidade do seu aplicativo continua o mesmo.

Eu corri para o mesmo problema há algum tempo. Eu não sabia qual banco de dados para ir para, então minha primeira solução utilizada Derby (ou HSQLDB?), E eu mais tarde foi capaz de mudar para HSQLDB (ou Derby? Não me lembro qual a solução que funcionou) uma vez que eu tinha determinado onde Eu tive problemas (relativos a performance) e qual a solução seria realmente trabalhar para mim.

A maioria das coisas foram já disse, mas eu só posso acrescentar que eu usei HSQL, Derby e Berkely DB em alguns dos meus projetos de estimação e todos eles trabalharam muito bem. Então eu não acho que realmente importa muito para ser honesto. Uma coisa vale a pena mencionar é que HSQL economiza-se como um arquivo de texto com instruções SQL que é bastante bom. Faz com que seja muito fácil para quando você está desenvolvendo para fazer testes e dados de configuração rapidamente. também pode fazer edições rápidas, se necessário. Acho que você poderia facilmente transferir tudo isso para qualquer banco de dados se você precisar mudar também:)

HSQLDB pode causar problemas para grandes aplicações, a sua não é tão estável.

A (não experiência em primeira mão no entanto) melhor que eu ouvi é berkleyDB. Mas a menos que você opensource-lo, ele vai te custar um braço e uma perna para uso devido ao licenciamento ... ver este http://www.oracle.com/technology/software/products/berkeley-db/htdocs/licensing.html para mais detalhes.

ps. berkleyDB não é um banco de dados relacional no caso de você não sabia.

Eu tenho usado Derby e eu realmente odeio de funções de conversão de tipo de dados, especialmente funções de data / hora. (Número Type) <->. Conversão Varchar é uma dor

Assim que se você planeja uso conversões tipo de dados em suas declarações DB considerar o uso de outr DB incorporado, eu aprendo muito tarde.

Últimas tipo de dados Derby Versão conversões

Eu pessoalmente favorecer HSQLDB, mas principalmente porque ele foi o primeiro que eu tentei.

H2 é dito ser mais rápido e fornece uma interface mais agradável GUI (que é genérico e funciona com qualquer driver JDBC, por sinal).

Pelo menos HSQLDB, H2 e Derby fornecer modos de servidor que é ótimo para o desenvolvimento, porque você pode acessar o banco de dados com a sua aplicação e alguma ferramenta ao mesmo tempo (modo que embutido normalmente não permite).

Eu acho que sou um pouco tarde (muito tarde ;-)) a este post, mas eu gostaria de adicionar Prest, uma fonte aberta, banco de dados integrado orientado a objeto para Java e .NET. para sua consideração. Prest é um / dual banco de dados incorporado licença de código aberto para Java. A distribuição é compatível com a plataforma Android, do Google, e também inclui Prest Lite para Java ME. Temos ainda construído um benchmark Android e produziu um white paper sobre o assunto ... você pode dar uma olhada aqui: http://www.mcobject.com/index.cfm?fuseaction=download&pageid=581§ionid=133

Todo o melhor, Chris

Se eu estou correto H2 é a partir dos mesmos caras que escreveram HSQLDB. Sua muito melhor se você confiar os benchmarks em seu site. Além disso, há alguma noção de que a comunidade sol saltou muito rapidamente em Derby.

Eu sei que você mencionou navegação SQL, mas tudo o resto na sua pergunta me faz querer sugerir que você também considerar DB4O , que é um grande, simples objeto DB .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top