db4o (database for objects) foi um Banco de Dados Orientado a Objetos e open source que possuía interface para desenvolvimento de aplicações utilizando a Plataforma Java da Oracle, a Plataforma .NET da Microsoft e Projeto MONO.

db4objects (db4o) - Banco de Dados para Objetos O Banco de Dados Orientado a Objetos db4objects (db4o) foi projetado para aplicações do tipo embarcada, cliente-servidor e desktop. Possui modo nativo para Java e .Net. Usa uma única biblioteca de desenvolvimento que se integra facilmente às aplicações e executa de forma altamente confiável e escalável tarefas de persistência com somente algumas linhas de código, não importando o quanto são complexas as estruturas.MACHADO, David Rodrigues. Comparação entre Banco de Dados Relacionais e Banco de Dados Orientado a Objetos: Características e Implementação de um Protótipo. 2009. 41p. Monografia (Bacharelado em Engenharia de Computação) – Curso de Engenharia de Computação da Universidade São Francisco, Campus de Itatiba. http://www.saofrancisco.edu.br/cursos/graduacao/producao_download.asp?arquivo=1716 Não necessita utilizar-se de consultas SQL para CRUD (Create, Read, Update e Delete), eliminando a troca de orientado a objetos por performance.db4o: Banco de objetos de código aberto. [ca. 2009]. Disponível via URL em: http://www.db4o.com/portugues/db4o%20Product%20Information%20V5.0(Portuguese).pdf. Acesso em: 17 jun. 2009. Empresas como a Boing, Bosch, Hertz, BMW, Intel, Seagate entre outras Customers and Partners. [ca. 2009]. Disponível via URL em: http://www.db4o.com/about/customers/. Acesso em: 20 nov. 2009. já utilizam o db4o. Apresenta vantagens em relação ao Banco de Dados Relacional: oferece rapidez de inserção, utiliza pouco recurso computacional, tem fácil aprendizado, acesso direto ao Banco de Dados sem utilizar ORM (Mapeamento Objeto-Relacional) e ambiente de administração zero, já que as rotinas de melhoria podem ser feitas por um programador.GUERRA, Glaucio. DB4Objects na terra de gigantes do BD relacional com Java: Parte I. Out. 2007. Disponível via URL em: http://www.devmedia.com.br/articles/viewcomp.asp?comp=4121. Acesso em: 14 jun. 2009. Na Espanha, a Indra Sistemas, uma empresa de desenvolvimento de softwares, foi contratada para criar o centro de controle do sistema espanhol de trens bala AVE. Neste projeto, o db4o foi utilizado como a base de dados de tempo real para controlar o tráfego. A capacidade de processamento do sistema da Indra fica em torno de 200 mil objetos por segundo.ROSENBERG, Dave. INDRA: Sistema de Missão Crítica para controle de trens de alta velocidade. [ca. 2009]. Disponível via URL em: http://www.db4o.com/portugues/db4o%20Success%20Story%20%20INDRA%20Sistemas(Portuguese).pdf. Acesso em: 17 jun. 2009. A Figura abaixo mostra que o objeto é desmontado para o armazenamento em estruturas de tabelas no Banco de Dados Relacional. Já no db4o, o objeto é diretamente armazenado como objeto.

Ficheiro:Banco Dados Relacional X db4o ver2.png

Armazenamento de objetos em um B.D. Relacional e em um B.D. db4o

De acordo com a empresa que produz o db4o, este banco roda até 44 vezes mais rápido que os Bancos de Dados conhecidos como MySQL com Hibernate. O benchmark de licença GPL, PolePosition, tem um método de teste chamado Barcelona que faz escrita, leitura, consultas e remoção de objetos com uma estrutura de herança de 5 níveis.PolePosition. [ca. 2009]. Disponível via URL em: http://www.polepos.org/. Acesso em: 20 nov. 2009. Segundo o teste, o db4o se saiu melhor em relação a vários Bancos de Dados conforme detalhes da Tabela Abaixo.

Ficheiro:Benchmarks db4o.jpg

Detalhes do benchmark open source PolePosition gerado para comparar o db4o.Benchmarks: Performance advantages to store complex object structures. [ca. 2009] Disponível via URL em: http://www.db4o.com/about/productinformation/benchmarks/. Acesso em: 21 nov. 2009.

Os recursos de consultas são fundamentais para qualquer Banco de Dados e o db4o oferece vários métodos de recuperação de dados:PATERSON, Jim; EDLICH, Stefan; HÖRNING, Henrik; HÖRNING, Reidar. The Definitive Guide to db4o. New York: Apress, 2006. ISBN 1-59059-656-0

QBE (Query by Example): No método QBE, você cria um modelo de objeto, que é uma instância da classe que você deseja pesquisar. Se atribuir valores para um ou mais atributos no seu modelo, então db4o procura por objetos no Banco de Dados com os atributos correspondentes. É um método simples e de fácil aprendizagem, mas só é ideal para consultas que não precisam de operadores lógicos. SODA (Simple Object Data Access): Constrói um grafo de consulta navegando referências em classes e as restrições que impõe. Utiliza strings para identificar os campos. Rápido, mas o conceito pode ser difícil de acostumar. NQ (Native Query): É uma consulta nativa expressa inteiramente na linguagem de programação e com checagem de tipos durante a compilação. Oferece consultas com várias vantagens importantes.

Codificação db4o - Exemplo em Java Abaixo segue um código simples de exemplo para inserção, atualização, consulta e remoção, escrito na linguagem Java:

Declaração da classe Pessoas em Java package exemploobjetos; /** * * @author David Rodrigues Machado **/ public class Pessoas { private int cod; private String nome; public void setCod(int cod) { this.cod = cod;

public void setNome(String nome) { this.nome = nome;

public int getCod() { return (cod);

public String getNome() { return (nome);

Código em Java utilizando o Banco de Dados Orientado a Objetos db4o package exemploobjetos; import com.db4o.*; /** * * @author David Rodrigues Machado **/ public class Main { public static void main(String[] args) { //Variável do arquivo do Banco de Dados ObjectContainer db = Db4o.openFile("Banco.yap"); //Criando um objeto do tipo Pessoas Pessoas p = new Pessoas(); //Objeto do tipo Pessoas para obter o objeto que se deseja do banco Pessoas achou_p; //Variável para obter o resultado do objeto recuperado ObjectSet result;

//INSERÇÃO p.setCod(20);//Instanciando o objeto com o código 20 p.setNome("David");//Instanciando o objeto com o nome David db.set(p);//Armazenando o objeto no banco System.out.println("O objeto foi inserido"); //ATUALIZAÇÃO p.setCod(20);//Instanciando o objeto com o código 20 result = db.get(p);//Recupera o objeto p do Banco achou_p = (Pessoas) result.next();//retorna o objeto se existir achou_p.setCod(20);//Instanciando o objeto encontrado com código 20 achou_p.setNome("Jaqueline");//Alterando o objeto para o nome Jaqueline db.set(achou_p);//Armazenando o objeto no Banco System.out.println("O objeto foi atualizado"); //CONSULTA p.setCod(20); result = db.get(p); achou_p = (Pessoas) result.next(); System.out.println("O objeto foi consultado"); //Imprime o resultado da consulta System.out.println("O resultado da consultado é:"); System.out.println("Código: " + achou_p.getCod()); System.out.println("Nome: " + achou_p.getNome()); //REMOÇÃO p.setCod(20); result = db.get(p); achou_p = (Pessoas) result.next(); db.delete(achou_p);//Apaga o objeto System.out.println("O Objeto foi apagado"); db.close();//Fechando o Banco

Saída do Programa

O objeto foi inserido

O objeto foi atualizado

O objeto foi consultado

O resultado da consultado é:

Código: 20

Nome: Jaqueline

O objeto foi apagado

Ver também Banco de dados orientado a objetos Orientação a objeto Mapeamento objeto relacional Persistência ESKELSEN, Cassio Rogerio. db4o: Banco de Dados Orientado a Objetos. Dez. 2005. Disponível via URL em: http://www.bizness.com.br/weblog/post/2008/08/05/db4o-Banco-de-Dados-Orientado-a-Objetos.aspx. Acesso em: 21 nov. 2009.

http://www.saofrancisco.edu.br/cursos/graduacao/producao_download.asp?arquivo=1716 http://www.db4o.com/portugues/db4o%20Product%20Information%20V5.0(Portuguese).pdf http://www.db4o.com/about/customers/ http://www.devmedia.com.br/articles/viewcomp.asp?comp=4121 http://www.db4o.com/portugues/db4o%20Success%20Story%20%20INDRA%20Sistemas(Portuguese).pdf http://www.polepos.org/ http://www.db4o.com/about/productinformation/benchmarks/ ISBN 1-59059-656-0

Categoria:Sistemas de gerenciamento de banco de dados Categoria:Sistemas livres de gerenciamento de banco de dados Categoria:SQL Categoria:Software livre programado em Java