ODB: Nova versão do banco de dados Objeto

Chun,

NeoDatis ODB ou Db4O não se comparam diretamente com Hibernate. Hibernate é uma camada de mapeamento entre Mundo OO e Mundo relacional. ODB e Db4O são banco de dados! não são camada de mapeamento. Hibernate ainda usa um banco de dados, os bancos OO ‘são o banco’.

Para responder ‘giulianocosta’, quando há mudança na estrutura de objetos já persistidos, ODB tem um mecanismo de refactorig automático que detecta as mudanças nos objetos e faz o refactoring no modelo do banco tb (quando possível).

Não posso baixar aqui do trampo, mas dei uma olhada no tutorial, parecel sim bem fácil e bastante útil para criação de arquivos de configuração (projetando um pequeno banco para configuração de uma aplicação) e também para sistemas pequenos possa cair como uma luva.

Se vocês querem realmente pensar num banco destes, dicas:

1 - Vejam a política de migration schema dele
2 - Vejam se existem ferramentas de gerenciamento

Se 1 e 2 forem ruins, ESQUEÇAM.

pcalcado, voce esta dizendo entao que por essas razoes BDOO sao ruins???

Pq o db4o tem uma ferramenta básica de auxilio chamada ObjectManager.
o que nao da pra comparar com um Enterprise Manager naturalmente…

E migracao pra BDR?? Nao sei como…

o NeoDatis ODB tem uma ferramenta ODBExplorer que permite:

  • Se conectar ao um banco local ou remoto

  • Consultar o meta modelo da bases (as classes)

  • Consultar os objetos (como hierarquia de objetos ou como tabela)

  • Criar query de maneira gráfica

  • Apagar objetos

  • Atualizar objetos

  • Criar novos objetos

  • Importar e Exportar de/para XML

Olá,

Pelo que estou vendo, esses bancos OO fazem o mesmo que o Prevayler, armazenar objetos em memória e persisti-los em arquivos serializaveis/xml. Está certo?

Obrigadão!

voce pode usar annotations :slight_smile: [/quote]

Com cerveja fmeyer, o que quis dizer implicitamente é que sair desse arremedo que é OO mapeado para relacional é um grande salto. Quando pudermos fazer isso com toda segurança e tranquilidade sem sombra de dúvida será bem melhor do que ficar fazendo arremedo para amarrar relacional ao OO.

[quote]Olá,

Pelo que estou vendo, esses bancos OO fazem o mesmo que o Prevayler, armazenar objetos em memória e persisti-los em arquivos serializaveis/xml. Está certo?

Obrigadão!
[/quote]

Na verdade não…

Falo pelo db4o que conheço e já testei bastante, ele não usa XML, é um arquivo de dados em formato binário mesmo.
Na última versão dele implementarão isto com a ajuda de árvores B+, o que deve ter melhorado a performance (não tenho certeza pq não testei depois :P)

O que eles permitem é que você exporte tudos os dados para XML o que facilita na hora de uma migração, em bancos pequenos é claro…rs

abcs

ODB e DB4o têm muitas diferenças com Prevayler. Seguem algumas:

  • Prevayler traz toda sua estrutura para memória. ODB e DB4O só trazem o que vc pediu.
  • ODB e Db4O têm linguagens de query.
  • Prevayler usa serialização de objetos o que traz problemas se seu modelo de classes muda…
  • e várias outras…

Por favor, não leve ao pé da letra :D. Chamemos de “Hibernate”, aqui, o uso conjunto do próprio Hibernate com o seu SGBD relacional favorito.

Agora podemos fazer uma comparação, não é? Deixo aqui algumas sugestões de aspectos a serem debatidos: curva de aprendizado, facilidade de configuração/uso, facilidade de manutenção e de migração.

bzanchet.

ok, foi mal. Neste caso tem como comparar sim.

Apesar de ser subjetivo, com relação á curva de aprendizado e a facilidade de uso, o ODB é muito simples de se usar e rápido de aprender, basta dar uma olhada nos mini-tutorias (http://odb.neodatis.org/1MTutorial.jsp?section=doc e http://odb.neodatis.org/5MTutorial.jsp?section=doc).

Migração : Migração para outras versões do ODB,para outros Banco OO ou para outros bancos relacionais ? ODB tem mecanismo de importação e exportação para XML.

Com relação a manutenção, vou deixar em aberto.

Tenho algumas duvidas:

  1. Qual foi o objeto que foi persistido 12000 instancias por segundo.

  2. O banco OO está rodando remotamente em outra máquina e se comunicando via tcp com o cliente java? Ou está rodando embedded e por isso não existe o principal delay de casos simples que é o envio de dados pela rede

  3. As mais de 100 mil buscas por segundo envolvem o mesmo objeto que está em cache na memória (isto é, 99999 mil hits de cache) ou envolvem 100 mil buscas remotas de dados enviados via tcp?

Acho que a pergunta que fica é a qual foi a métrica utilizada no teste mesmo. Foi remoto? Foi local? Com cache local? Sem?

  1. Se eu desejo fazer uma busca de todos os jogadores que tem data dentro de tal período fechado, que estrutura de dados ele utiliza para fazer essa busca? Tem como indexar por esse campo? Afinal, não quero uma busca linear e lenta.

A real é que eu acho que esses benchmarks são meio marketeiros mesmo… Pq os caras nao postaram métricas…

Não conheço o ODB, mas o db4o é projetado para aplicações embeddable, mobile, desktop…

Segue um trecho do site:

“db4o is designed to provide a full-featured, embeddable database engine for equipment, mobile, desktop, and server platforms in
object-oriented environments. Where relational databases fall short
in providing zero-administration, small footprint, high performance, smooth synchronisation, and easy refactorability, db4o is the answer.”

Os benchmarks foram feitos pelo PolePosition http://www.polepos.org/

Segue o endereço:

http://polepos.sourceforge.net/results/html/melbourne_write.html

O site disponibiliza as classes para fazer os testes.

Um abraço!

Glaucio Guerra

Segue o link para download do PolePosition:

http://downloads.sourceforge.net/polepos/poleposition-0.20.zip?modtime=1119489390&big_mirror=0
Um abraço!

Glaucio Guerra

Detalhes sobre os benchmarks citados podem ser encontrados em http://odb.neodatis.org/performance.jsp.

os benchmarks do PolePosition foram implementados. Daqui a pouco os resultados do ODB serão integrados no PolePosition.