Banco de Dados OO NeoDatis ODB versão 1.8 está disponível  XML
Índice dos Fóruns » Notícias
Autor Mensagem
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
LuizClaudio
JavaEvangelist
[Avatar]

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
[WWW]
genildof
Debugger
[Avatar]

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.
[WWW] [MSN]
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

Luiz Aguiar
Moderador
[Avatar]

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!




[WWW] [MSN] [ICQ]
glaucioguerra
Java Ninja
[Avatar]

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
[WWW]
andre_guitar7
JavaEvangelist
[Avatar]

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...
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.



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
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?

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
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)

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
andre_guitar7
JavaEvangelist
[Avatar]

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...
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










 
Índice dos Fóruns » Notícias
Ir para:   
Powered by JForum 2.1.8 © JForum Team