| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/12/2007 12:33:22
|
Olivier
Debugger
Membro desde: 15/11/2006 12:43:15
Mensagens: 52
Localização: Curitiba/PR
Offline
|
A nova versão do banco de dados OO para java está Disponível. http://odb.neodatis.org
Esta versão traz várias novas funcionalidades e muito mais performance.
- Melhor 'refactoring' automático do banco de dados
- 'Refactoring manual'via API e ODB Explorer
- Indíves mais rápidos
- melhora na ferramenta gráfica ODB Explorer
- 4 Distribuções : full, light, ODB Explorer , runtime
- Melhor Cache
- Menor consumo de memoria
- Operações básicas como insert, updates, select e delete mais rápidos
- ...
Com o intuito de aumentar a comunidade do NeoDatis ODB, foi criado um wiki com exemplos e sobretudo explicando como funciona o banco de dados.
Também está disponível o benchmark de performance PolePosition comparando a performance entre o NeoDatis ODB e o Db4O.
clique aqui para baixar o relatório diretamente http://sourceforge.net/project/showfiles.php?group_id=179124&package_id=255373
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/12/2007 19:51:01
|
LuizClaudio
JavaEvangelist
![[Avatar]](/images/avatar/a9cf46a38a9b05e959f33215e5cdc38a.png)
Membro desde: 03/04/2006 21:50:51
Mensagens: 388
Offline
|
Alguem ja usou um banco OO em producao, o que achou?
|
"Porque Deus amou o mundo de tal maneira que deu seu filho unigênito para que todo aquele que nele crê não pereça, mas tenha vida eterna." João 3.16 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/12/2007 20:57:45
|
genildof
Debugger
![[Avatar]](/images/avatar/6e2c22ab08479b1da4206a0c5d7da31e.jpg)
Membro desde: 30/09/2006 09:38:16
Mensagens: 70
Localização: Campo Grande - MS
Offline
|
Uso o db4o em 02 projetos pequenos, estou satisfeito com os resultados. Mas ainda espero que no futuro queries complexas nesses bancos sejam feitas de modo menos trabalhoso.
|
/genildof. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/12/2007 21:01:05
|
Olivier
Debugger
Membro desde: 15/11/2006 12:43:15
Mensagens: 52
Localização: Curitiba/PR
Offline
|
Olá genildof,
você pode dar exemplo dessas queries?
This message was edited 1 time. Last update was at 12/12/2007 00:45:18
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/12/2007 08:16:33
|
Luiz Aguiar
Moderador
![[Avatar]](/images/avatar/843a4d7fb5b1641b0bb8e3c2b2e75231.jpg)
Membro desde: 23/01/2005 00:05:55
Mensagens: 3840
Localização: São Paulo
Offline
|
LuizClaudio wrote:Alguem ja usou um banco OO em producao, o que achou?
conheço algumas pessoas que usam o DB4O e estão muito satisfeitas.
|
-
Blog de Tecnologia
GitHub
@AguiarLuiz
Recicla SP na App Store!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/12/2007 09:58:54
|
glaucioguerra
Java Ninja
![[Avatar]](/images/avatar/4bbb5420ed2dc9a8eaaedc7ae59de448.jpg)
Membro desde: 12/05/2006 09:18:54
Mensagens: 253
Localização: Porto, Portugal
Offline
|
Eu uso o db4o desde a versão 5.4. Realmente a parte de queries complexas dão um pouco de trabalho, mas queries complexas no sql ansi também dão . Atualmente não estou mais trabalhando com ele, mas na época atendeu muito bem. A última versão 7.0 beta também está muito boa, principalmente a parte de desempenho.
http://www.theserverside.com/news/thread.tss?thread_id=47646
Um abraço!
This message was edited 1 time. Last update was at 12/12/2007 10:03:00
|
Glaucio Guerra
http://glaucioguerra.wordpress.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/12/2007 10:58:21
|
andre_guitar7
JavaEvangelist
![[Avatar]](/images/avatar/73f9ddba165b5c59c61dd64960ba8b2d.jpg)
Membro desde: 29/03/2006 16:03:32
Mensagens: 435
Localização: Ctba/PR
Offline
|
Também gostaria de saber se vale a pena usar esse tipo de banco. Estou cansado de usar Hibernate. Alguém pode relatar vantagens e desvantages? Ficaria muito grato...
Obrigado
|
Vivo estou, pois um dia Ele morreu por mim... livre estou, pois um dia condenado foi... |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/12/2007 11:43:30
|
Olivier
Debugger
Membro desde: 15/11/2006 12:43:15
Mensagens: 52
Localização: Curitiba/PR
Offline
|
André,
vou tentar citar alguns
Algumas Vantagens :
- Simplicidade, simplicidade, simplicidade
- não há necessidade de mapear seus objetos para o paradigma relacional. Assim, vc tb não tem limitações no seu modelo de objetos de negócio. Simples cria seus objetos de negócio e manda persistir. Isto traz muita produtividade pois vc se concentra na sua lógica de negócio.
- Os relacionamentos são automáticos pois são definidos nos seus objetos
- Refactoring : Alguns bancos OO possuem Refactoring automático. Ou seja, vc alterou uma classe persistente, o BD se ajusta sozinho. Obviamente, algumas situações não poderam ser tratadas automaticamente e haverá necessidade de refactoring manual
- Apesar de não ser uma vantagem dos BD OO, mas muitos dos BDs OO funcionam em Modo embarcado(embedded) e/ou Client/Server. O modo local permite usar o BD junto com a sua aplicação sem a necessidade de instalação de servidor. Isso pode ser uma vantagem interessante quando é necessário distribuir uma aplicação Desktop ou até para uma aplicação Web onde vc não controla o ambiente de execução.
- Em modo embedded, vc consegue uma performance superior e em geral um tamanho de biblioteca inferior a 500Kb. Se vc usa Hibernate para acessar um banco relacional no minimo vc tem 3Mo de jars. Com esses BD OO (como NeoDatis) o runtime é menor que 400K. As vezes faz a diferença.
Algumas desvantagens :
- Fica dificil ter uma equipe que cuida do banco e outra do desenvolvimento pois o modelo do banco de dados acaba sendo o modelo de negócio.
- Bancos relacionais que estão há mais tempo no mercado devem ser mais robustos e confiáveis.
O mais importante ao meu ver é Simplicidade e Produtividade. Qdo começa a trabalhar com um BD OO como NeoDatis ODB ou DB4O e que tem que voltar a usar Hibernate para acessar um banco relacional, vc fica triste .
Já tive que migrar uma aplicação que eu tinha feito com NeoDatis ODB para Hibernate/Oracle. Muitas coisas são simples mas quando começa a ter que mapear relações 1-n e n-n, vc percebe a diferença.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/12/2007 12:01:21
|
bandrade
GUJ Ranger
Membro desde: 20/01/2003 15:45:15
Mensagens: 782
Offline
|
Pessoas, nunca usei banco OO mas tenho uma duvida...
Bem, suponha que eu tenha uma classe transação.
Transação{
Id (int)
Hora (datetime)
Valor (decimal 10,4)
}
No banco de dados relacional eu posso ter infinitas transações com o mesmo valor e hora, pois elas serão identificadas pelo ID.
Num banco OO, como isso funciona? Alguém tem que distribuir os Id´s (identity, sequence, etc...). O banco faz isso??
Valeu.
|
Will Code For Food |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/12/2007 12:16:10
|
Olivier
Debugger
Membro desde: 15/11/2006 12:43:15
Mensagens: 52
Localização: Curitiba/PR
Offline
|
Olá Bandrade,
No banco OO, vc não precisa usar chave para seus objetos. O próprio banco se encarrega de criar um OID (Object ID) para cada objeto.
Mas em alguns casos vc pode precisar identificar o objeto de maneira única e o seu objeto não tem chave natural (que é o caso que vc citou da transação). Neste caso, vc pode pedir ao banco o OID do(s) objeto(s).
Um caso comum para isso é numa consulta WEB onde vc mostraria todas as transações e onde o usuário poderia clicar em uma das transações para ver o seu detalhe ou alterar a mesma. Nesse caso, eu aconselho usar o OID do BD. No NeoDatis ODB vc tem um método ODB.getObjectId(Object o) que te retorna o OID do objecto no banco (uma vez que o mesmo já tinha sido persistido no BD).
Vc depois pode recuperar um objeto pelo OID a qualquer momento mesmo em outra transação usando ODB.getObjectFromId(OID oid).
Era isso sua dúvida?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/12/2007 12:20:19
|
bandrade
GUJ Ranger
Membro desde: 20/01/2003 15:45:15
Mensagens: 782
Offline
|
Exatamente.... muito bacana isso então.
Como ele trata views? é possível criar StoredProcedures que retorne um dataset customizado?
Fazer relatório com esse paradigma não deve ser o mais produtivo no começo... ));
|
Will Code For Food |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/12/2007 12:35:38
|
Olivier
Debugger
Membro desde: 15/11/2006 12:43:15
Mensagens: 52
Localização: Curitiba/PR
Offline
|
Bandrade,
Sobre Views e Stored Procedure não sei responder para todos os BD OO, Eu sei NeoDatis ODB ainda não suporta e acho que Db4O também não. NeoDatis ODB suporta triggers.
Com relação a relatórios, vai depender da ferramenta. Se não me engano, se vc usa JasperReport, vc pode passar um Model que contém os objetos (não tenho certeza disso)
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/12/2007 13:28:20
|
bandrade
GUJ Ranger
Membro desde: 20/01/2003 15:45:15
Mensagens: 782
Offline
|
Dei uma pesquisada nas páginas desses bancos, o NeoDatis não tem suporte oficial a .net ainda, o Db4O já tem....
Atualmente trabalho com .net (todos produtos MS), todos os relatorios q o pessoal do BI faz usa o Reports da MS mesmo...
Exemplo: Com a transação lá, vou fazer uma modificação na classe/tabela
class Transacao{
idTransacao
idCliente
Data
Valor
}
É possível fazer um somatório de todas as transações de um cliente em determinado periodo de maneira simples? No relacional isso é até sem graça de fazer. \o/
--Editado--
Como o banco trata esse retorno dessa função/procedure?? No relacional ele volta um datareader ou dataset e você se vira, no relaciona ele retorna um objeto?? Ele tem que carregar a coleção dessas transações para fazer a soma?
This message was edited 1 time. Last update was at 12/12/2007 13:32:38
|
Will Code For Food |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/12/2007 14:21:36
|
andre_guitar7
JavaEvangelist
![[Avatar]](/images/avatar/73f9ddba165b5c59c61dd64960ba8b2d.jpg)
Membro desde: 29/03/2006 16:03:32
Mensagens: 435
Localização: Ctba/PR
Offline
|
É possível usar generics? Ou tenho que ficar fazendo cast sempre quando vou recuperar um objeto?
|
Vivo estou, pois um dia Ele morreu por mim... livre estou, pois um dia condenado foi... |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/12/2007 14:24:40
|
Olivier
Debugger
Membro desde: 15/11/2006 12:43:15
Mensagens: 52
Localização: Curitiba/PR
Offline
|
Bandrade,
realmente BDOO não são muitos bons nesses tipos de query pois eles trabalham com objetos e a suma de um dos atributos acaba fugindo do conceito do objeto
Mas vc tem razão isso é importante.
O NeoDatis ODB tem um recurso para isso : O Trigger AfterSelect.
vc pode registrar um trigger chamando o ODB.addSelectTrigger( ISelectTrigger trigger );
Esse trigger irá receber todos os objetos selecionados e ai vc faz o que quiser em Java, por exemplo soma o valor da Transação. No nosso exemplo o trigger seria assim:
Até testei para se funcionava e funcionou.
o código principal seria assim :
Agora, vc tem razão, fazendo isso, o ODB acaba lendo todas as instâncias que atendem a query. Poderia ser otimizado para só ler o valor que está sendo somado. Provavelmente numa próxima versão terá uma otimização para isso
|
|
|
 |
|
|