Lançamento do DB4Objects 6.0

Para quem não conhece, o DB4Objects é um banco Orientado a Objetos Open Source (GPL) nativo em Java.

As novidades na versão 6.0 são:

:arrow:90% menos consumo de memória em comparação com a versão 5.
:arrow: Melhoria de performance

:arrow: Desfragmentação mais rápida

:arrow: ObjectManager v6.0 - Na versão anterior não existia suporte para Mac OS. Seria necessário utilizar Eclipse como IDE.

:arrow: Nova arquitetura de indice de árvore B.

:arrow: dRS 6.0 - Sistema de replicação da base db4O para banco de dados relacionais backend. Ele utiliza o Hibernate na ver. 3.2 para fazer a a interface na replicação.

:arrow: Melhor performance com as Lazy-Querys

Como existem pessoas do forum que também programam em dot Net, também existe uma versão do db4O nas versões 1.x e 2.0 do .net.

Maiores detalhes no NewsLetter:

http://www.db4o.com/about/news/newsletter/2007_01.aspx

Português:

Forum:

http://developer.db4o.com/forums/18/ShowForum.aspx

Artigos:

GUJ:
http://www.db4o.com/portugues/guj-db4o.pdf

DevMedia:


Linha de Código:
http://www.linhadecodigo.com.br/artigos.asp?id_ac=962&pag=1

iMasters:
http://www.imasters.com.br/artigo/5056/bancodedados/db4o_banco_oo

English:

dRS
http://www.linuxdevices.com/news/NS2660933911.html

Native Querys

Performance

Object Databases for Embedded Applications
http://www.atcanewsletter.com/English/Newsletters/2006/Articles/200610_Article_ObjectDatabases.html

Site oficial:
www.db4o.com

Português:
http://www.db4o.com/portugues/

Um abraço!

Eu morro de medo de testar esses bancos e gostar… heheh :slight_smile:

Mas sério, tenho um projetinho meu, que estou com muita vontade de usar um banco OO nele, dai mais uma oportunidade de analisar a viabilidade.

Alguém tem usado em produção esse banco?

Eu já utilizo com aplicações web, mas na versão 5. A aplicação não é nada critica, mas eu já vi um aumento de desempenho muito grande, principalmente na criação de novos projetos. Evitar o mapeamento no Hibernate já é uma mão na roda.

Estou tentando convencer o pessoal agora de migrar o Catalog do SuperWaba para o DB4O. Acredito que o desempenho vai aumentar de forma absurda. Vamos ver.

Infelizmente não testei nada embarcado, então fica dificil argumentar alguma coisa aqui na empresa. Queria saber da opnião do pessoal, para quem já utilizou em aplicações para palm ou celular mesmo.

Um abraço!

Pretendo fazer alguns trabalhos, e usar esse DB para como arquivos de configuração, acho que ele cairá como uma luva, melhor do que usar properties ou XML em muitos casos, ainda mais quando não se precisa divulgar os arquivos de configuração

Excelente maneira de escrever uma noticia!!!

Medo de usar e gostar by Luiz…(Idem) :slight_smile:

Os artigos citados são bem interessantes, recomendo a leitura.

Bem, se vocês tem medo de gostar, então não testem…rs

Eu usei e gostei pra caramba, fiz alguns projetos pessoais e eles funcionaram de forma execelente, além de o desenvolvimento ser absurdamente mais rápido.

Esses bancos OO ainda tem muito que evoluir, mas já são uma execelente alternativa para projetos não criticos, que tendem a mudar muito rapidamente e necessitam de um desenvolvimento que acompanhe esta evolução.

90% menos? :shock: Meu Deus que código era esse :smiley:

Renato,

Na verdade ele diminui os picos de consumo de memória. Existe um gráfico neste link que você pode visualizar melhor:
http://www.db4o.com/about/productinformation/db4o%20Product%20Information%20New%20in%20V6.0.pdf

Trecho do documento acima:

[code]
"Memory consumption, often dubbed the ?little sibling? of
performance (because a virtual machine gives you trade-offs
between the two), has also been improved in version 6 and makes
db4o?s technology available in a whole new class of small
footprint devices and applications on mobile platforms, for instance…

The PolePosition Benchmark also measures memory consumption
over its entire set of test cases (depicted in the x-axis above).
Of course, the real memory consumption depends from your
application itself, but ? given this arbitrary scenario ? the benchmark
shows very well how different products and versions fare against
each other.

Specifically, db4o version 6, when compared to version 5.2,
manages to keep memory consumption throughout most test
cases below 3 MB, reducing it by up to 90%.
As a result, memory consumption is much more predictable
and deterministic than before."[/code]

Um abraço!

Tenho um professor de BD que abomina “esses novos paradigmas”, especialmente os “bancos orientados a objeto”. Coitado… cachorros velhos não aprendem truques novos. E o mais triste é ver as pessoas que querem de todas as formas denegrir as novidades só pq não querem aprender coisas novas.

Muito legal.

Vejam as empresas que já usam:

Bosch, Hertz, BMW, Intel, Seagate entre outras.

Outra notícia:

Índia, Estados Unidos, Austrália, Canadá, Espanha, Nova Zelândia e Alemanha já deram a largada para o uso do DB4Objects com cerca de 2% de abrangência.

Ambas as notícias tiradas do link:

Outra coisa interessante, é que no site o db4o, fala sobre um caso de sucesso em um projeto crítico (INDRA: Sistema de Missão Crítica para controle de trens de alta velocidade).

Agora, o tempo aliado aos bons resultados obtidos, farão com que a adoção de bancos Orientados a Objetos se tornem comum.

Não estou, com isso, querendo dizer que bancos Orientados a Objetos são a solução para todos os tipos de problemas e adequado para todos os casos. Só quero dizer que, dependendo do caso, os bancos Orientados a Objetos podem ser uma boa solução, assim como o Prevayler, Mapeamento Objeto-Relacional e etc…

60% me convenceu…

bom vou ter que usar né, afinal o medo vou deixar para o professor citado acima : )

So nao entendi o q tem “nao usar hibernate” com isso.
Estou comendo peixe ou ele tem razao?

[quote=afsrj]So nao entendi o q tem “nao usar hibernate” com isso.
Estou comendo peixe ou ele tem razao?[/quote]

afsrj,

O db4o é um banco orientado a objetos e por isso não existe necessidade de utilizar o mapeamento Objeto Relacional. Com isso, o Hibernate é desnecessário. Agora se você quiser fazer uma Replicação do Banco para outras bases relacionais, é necessário utilizar o Hibernate juntamente com o dRS, API que serve para sincronizar o db4o com outras bases relacionais como MySql ou Oracle.

Dá um olhada nessa imagem que descreve o uso do dRS:

Um abraço!

Eu salvei os link para ler. Achei alguns no devmedia e em outros lugares.

A imagem ficou confusa …

Mas pow é algo que eu daria um select para uma table, e meu objeto seria populado automaticamente?

Tem um trecho curto de exemplo ai?

afsrj,

No artigo que eu escrevi no devmedia tá bem simples:

http://www.devmedia.com.br/articles/viewcomp.asp?comp=4137

Na verdade você armazena os seus objetos no banco. Por isso que ele é orientado a objetos. Quando você for recuperar as informações do banco, você também recupera objetos. Ele não seria populado, mas sim o próprio objeto!

Dá um olhada no código abaixo:

ObjectContainer db=Db4o.openFile("c:/guerra.yap");
ObjectSet<Cliente> lista = db.get(Cliente.class);

O ObjectContainer é a Interface para o db4o Database.

O ObjectSet é uma classe que herda de java.util.List. Neste código o ObjectSet vai receber uma lista de objetos da classe Cliente entendeu? Seria algo semelhante a um “select * from cliente”, com a diferença que a query recupera objetos e não “dados soltos”. Para fazer as consultas semelhante ao SQL, o db4o utiliza as S.O.D.A querys e QbE (Query by Example).

Acho que essa imagem vai explicar melhor:

Um abraço!

Bem interessante também vou dar uma estudada e montar um projetinho para testar.

Uma dúvida como é feita a parte de constraints? Por exemplo só pode haver um único cpf na lista de objetos cliente?

[]s

[quote=Edufa]Bem interessante também vou dar uma estudada e montar um projetinho para testar.

Uma dúvida como é feita a parte de constraints? Por exemplo só pode haver um único cpf na lista de objetos cliente?

[]s[/quote]

Edufa,

Unique Constraint não é suportada pelo db4o. Dá um olhada no tracker para você ver a thread:

http://tracker.db4o.com/jira/browse/COR-178;jsessionid=B8D4E40318148FEBF701138400D924B1?page=all

Outro tópico no forum falando sobre:

http://developer.db4o.com/forums/thread/31823.aspx

Na minha opnião essa feature deveria existir a muito tempo.

Eu faço esse controle na manualmente. Inclusive no post que eu citei acima existe um exemplo.

Um abraço!

APROVEITANDO A DEIXA

Olá estou usando o db4o
e me deparei com uma situação que não to conseguindo resolver
tenho um cadastro de cliente e um de cidade cada cliente pertence a uma cidade
na hora de gravar ao inves de gravar o nome da cidade estou gravando o
codigo da cidade ?
A pergunta é como eu faço para que em uma busca eu copare o codigo da tabela
Cliente com a tabela cidade e mostro o nome da cidade ao inves do codigo da cidade em
sql iria ficar mais ou menos assim

Select t.NomCliente 'Nome', c.NomCidade 'Cidade' From Cliente t, Cidade c
Where t.CodCid = c.CodCid

essa query mostraria :

Nome Cidade
Cassio São José do Rio Preto


Considerando que haveria relacionamento entre o Cliente Cassio e a Cidade São José do
Rio Preto!!!
Não estou conseguindo!!!

Eu dei uma olhada e testei a parte de acesso ao banco por meio de usuarios (grantaccess) e achei simples, mas porém, nao achei nada documentado a respeito de como funciona essas permissoes, ou seja, elas ficam gravadas por tempo indeterminado? como alterar ou excluir uma permissão dessas?