introdução ao db4o

20
Introdução ao DB4O Conhecendo um Banco de Dados Orientado a Objeto Ronoel Matos de Almeida Botelho Jr. Universidade Federal de Viçosa - UFV

Upload: ronoel-jr

Post on 08-Jun-2015

852 views

Category:

Documents


3 download

DESCRIPTION

Apresentação criada no final de 2007 para alunos do curso de banco de dados.

TRANSCRIPT

Page 1: Introdução Ao DB4O

Introdução ao DB4O

Conhecendo um Banco de Dados

Orientado a Objeto

Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV

Page 2: Introdução Ao DB4O

Introdução

A transformação de objetos para persistência em um SGBD Relacionaldemanda muito tempo, aumentando o custo de um software. Uma saída éutilizar um framework de persistência, mas este aumenta muito oconsumo de processo, tornando-o muitas vezes inviável.

O db4o é a solução para este problema, é um SGBD , onde os dadossão persistidos da mesma forma que são trabalhados na linguagemOrientada a Objeto.

Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV

Page 3: Introdução Ao DB4O

Sobre o db4o

• Db4o é o mais popular ODBMS (Object-oriented Database ManagementSystem) do mercado.

• É nativo das plataformas Java e .Net.

• Pode ser implantado em um sistema como Standalone ou Cliente/Servidor.

• Tem suporte a esquemas evolutivos, indexação, transações, concorrência,criptografia, todos os serviços que um SGBD Relacional convencionalpossui.

Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV

Page 4: Introdução Ao DB4O

Sobre o db4o

• Possui uma rede crescente de parceiros comerciais, assegurandocompatibilidade com líderes de plataformas, como Sun Microsystems’,Microsoft, ProSyst, Novell, OMG, OSGi, etc.

• A versão 7.2 já está em avaliação como candidata a última versão estável,mas atualmente é a 6.4.

Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV

Page 5: Introdução Ao DB4O

Casos de Sucesso

Muitas das gigantes do mercado já vem usando o db4o em seusprodutos, tais como BMW, Boing, Bosch, IBM, Intel, Ricoh e Seagate.

• Boeing, uma das maiores empresas de defesa aero espacial, selecionou o db4o para o P-8A Multi-Mission Maritime Aircraft, vigilância e reconhecimento para os aviões da marinha dos U.S.

"Para a Boeing, db4o oferece as vantagens da significativa baixa administração de dados e uma melhor produtividade para o desenvolvimento. Db4o ajuda a Boeing gerir a melhor custos e calendários e ao mesmo tempo reduzindo custos operacionais".

Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV

Page 6: Introdução Ao DB4O

Casos de Sucesso

• INDRA Sistemas, empresa líder espanhola em TI e Sistemas de Defesa, usa db4o para segurança de sistema integrado de controle críticos (IRC) no Spanish AVE High-Speed Train.

“Nós escolhemos db4o como o núcleo da base de dados em tempo real. Db4o permite que o sistema processe mais de 200.000 objetos por segundo.”

Fonte:http://www.db4o.com/about/customers/

Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV

Page 7: Introdução Ao DB4O

Algumas das Vantagens

• Elimina ferramentas de códigos para mapeamento objeto-relacional.

• Utiliza o paradigma Orientação Objeto.

• Portabilidade, Java e .NET, oferecendo multiplataforma.

• Curva de aprendizado rasa.

• Sincronismo suave.

Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV

Page 8: Introdução Ao DB4O

Algumas das Vantagens

• Fácil refatoramento.

• Alta performance.

Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV

Fonte: http://www.db4o.com/s/benchmarkdb

Page 9: Introdução Ao DB4O

Programa Exemplo

• Plataforma: Java 1.5

• Banco de Dados: db4o 6.4

Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV

Page 10: Introdução Ao DB4O

Programa Exemplo

• Domínio:

package ronoel.exemplo.db4o.dominio;

public class Aluno {

...

public String getNome() { ... }

public String getMatricula() { ... }

public double getCR() { ... }

public void addDisciplina ( Disciplina disciplina ){ ... }

public void print(){ ... }

...

}

Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV

Page 11: Introdução Ao DB4O

Programa Exemplo

• CONEXÃO COM O BANCO DE DADOS:

Exemplo:

...

ObjectContainer conexao =

Db4o.openFile(“arquivo_dados.yap”);

...

Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV

Page 12: Introdução Ao DB4O

Programa Exemplo

• PERSISTÊNCIA DE UM OBJETO :

Exemplo:

...

Aluno aluno = new Aluno();

...

conexao.set(aluno);

...

Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV

Page 13: Introdução Ao DB4O

Tipos de Querys

• QBE (Query By Example)

• NQ ( Native Query )

• SODA Query API

Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV

Page 14: Introdução Ao DB4O

Query By Example - QBE

• Query muito limitada, mas muito simples.

Exemplo:

...

Aluno aluno = new Aluno();

aluno.setMatricula(“es51468”);

ObjectSet result = conexao.get(aluno);

Aluno found;

if( result.hasNext() )

found = (Aluno) result.Next();

...

Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV

Page 15: Introdução Ao DB4O

Native Query - NQ

• 100% refatoravel.

• 100% checada em tempo de compilação.

• Orientada a Objeto

• Query mais recomendada

Exemplo:

...

final Disciplina disciplinaCompare = disciplina

ObjectSet result = conexao.query( new Predicate<Aluno>() {

public boolean match(Aluno a) {

return a.containDisciplina(disciplinaCompare);

}

});

...

Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV

Page 16: Introdução Ao DB4O

SODA Query API

• Query de baixo nível.

• Semelhante a SQL.

Exemplo:

...

Query query = conexao.query();

query.constrain(Aluno.class);

query.descend("nome").orderAscending();

ObjectSet result = query.execute();

...

Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV

Page 17: Introdução Ao DB4O

Update de um Objeto

• Basta buscar um objeto do banco, modificá-lo e fazer a operação set delenovamente.

...

Aluno aluno = new Aluno();

aluno.setMatricula(“es51468”);

ObjectSet result = conexao.get(aluno);

Aluno found;

if( result.hasNext() )

found = (Aluno) result.Next();

found.setCR(78.4);

conexao.set(found);

...

Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV

Page 18: Introdução Ao DB4O

Transações

• Commit

...

conexao.set(aluno);

conexao.commit();

...

• Rollback

...

conexao.set(aluno);

conexao.rollback();

conexao.ext().refresh(aluno, Integer.MAX_VALUE);

...

Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV

Page 19: Introdução Ao DB4O

Conclusão

• Db4o é a melhor solução para aplicações onde há a necessidade de umbanco de dados embarcado em plataformas Java ou .NET

• É uma excelente solução para dispositivos limitados.

• Ótimo para sistemas críticos e de tempo real.

• Reduz significativamente o tempo de desenvolvimento de um projeto.

Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV

Page 20: Introdução Ao DB4O

Referências Bibliográficas

• http://developer.db4o.com/

• http://www.codeproject.com/KB/cs/oop_db4o_part_2.aspx

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

• http://www.theserverside.com/tt/articles/article.tss?l=Insidedb4o

Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV