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.
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?
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.
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
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.
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.
Qual foi o objeto que foi persistido 12000 instancias por segundo.
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
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?
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.
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.”