DB4Objects na terra de gigantes do BD relacional com Java – Parte I
Banco de dados orientado a objetos pode ser a alternativa para reduzir custos e aumentar a praticidade frente ao mercado BD relacional

 

Enquanto Í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 – de acordo com estimativas do mercado –, o resto do mundo ainda está apegado ao tradicional banco de dados relacional. A alternativa é recente, acredita-se que tenha surgido em 2000, sendo um software open-source (GPL). Adquirindo a licença, o recurso pode gerar uma economia que impacta diretamente no bolso das empresas, tendo ainda como aliado a redução do tempo de desenvolvimento, já que não demanda mapeamento objeto-relacional.  


O db4o é um banco de dados inteiramente orientado a objetos, projetado para aplicações tipo embarcada, cliente-servidor e desktop. A ferramenta permite armazenar classes Java diretamente no banco, sem precisar utilizar consultas SQL ou qualquer tipo de framework que faça o mapeamento objeto-relacional (Hibernate por exemplo). A natureza open-source do software não descarta, no entanto, que a empresa interessada em implementar esse tipo de banco de dados pague uma taxa de uso caso não queira disponibilizar o código fonte.

 

Empresas como a Bosch, Hertz, BMW, Intel, Seagate entre outras, já utilizam o db4o. São inúmeras as vantagens em relação ao banco de dados relacional: a ferramenta é nativa em Java (ou .Net), oferece rapidez de inserção e consulta (processamento de 200 mil objetos por segundo), utiliza pouco recurso computacional, tem fácil aprendizado, não possui nenhuma linha de código SQL para CRUD (Create, Read, Update e Delete), e disponibiliza acesso direto ao banco sem utilizar ORM (Mapeamento Objeto-Relacional).

 

db4objectsfig01.JPG

(*) RDBMS – Relational Database Management System                                               Fonte: www.db4o.com

 

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

 

Desconstruindo o DB4Objects – Conhecendo as funcionalidades da ferramenta

 

O db4o é simples ao extremo para inserir e recuperar dados e executar manutenção. Com apenas uma linha de comando é possível armazenar um objeto. Além disso, não precisa ser submetido a um administrador, já que as rotinas de melhoria de performance podem ser feitas por um programador.


Com um tamanho de 400k de utilização de memória, comparativamente aos bancos de dados relacionais, o db4o reduz agressivamente o uso de recurso computacional. E ainda, é possível executar consultas nativas tanto do seu código Java quanto do ObjectManager Browser (que será mostrado mais adiante).

 

Desempenho

De acordo com o site do db4o (www.db4o.com), este banco roda até 44 vezes mais rápido que os B.Ds que já conhecemos (Hibernate com Mysql). Mais detalhes no site que gerou o benchmark PolePosition (www.polepos.org).


db4objectsfig02.JPG

 

Estrutura de armazenamento / segurança do db4o

O armazenamento dos dados é feito através de um ou mais arquivos (a escolha é sua) gravados de forma binária. Há a possibilidade de inserir senha e de “encripitar” as informações no banco, caso seja de interesse do usuário. O algoritmo utilizado é o XTEA (eXtend Tiny Encryption Algorithm)  com chave de até 128 bits. A capacidade máxima de um arquivo de objetos é de 254 GB.

 

Recuperação dos dados

Quanto à recuperação de dados, que pode ser feita através query nativas, há também a  possibilidade de recuperar as informações através de QbE (Query by Example), S.O.D.A e XML ( que será mostrado mais adiante).

 

Plataformas

Em Java é possível utilizar em JSE, JEE, JME com reflexão, Servlets e Java WebStart. Para os programadores.Net segue a dica das plataformas suportadas: .Net 1.X, 2.0, CompactFramework, Windows Móbile 5.0 e Mono.

 

Controle de transações

Além do suporte a transações (Commit e Rollback) o db4o oferece a criação de Sessions (início e fim), fácil manipulação do arquivo de B.D (Criar, abrir, fechar e pagar) e CRUD em objetos.

 

Indexação

Em apenas uma linha de comando é possível criar / desfazer um índice. Escolha uma propriedade de sua classe para ser o índice e pronto: o índice foi criado. Com a mesma facilidade que é criado, o índice também é removido.

 

Replicação de dados

Para o controle de replicação é necessário ter a garantia da unicidade de um objeto. Para isso, o db4o utiliza o UUID (Unique Universal IDs), que é um dispositivo que fornece uma chave única para uma instância de objeto. Pode ser aplicado de forma global ou para uma classe individualmente. Por padrão, este dispositivo não está habilitado devido ao espaço utilizado no armazenamento e à perda de performance para a manutenção deste índice.

 

Refatoração

Caso seja feita alguma modificação em suas classes, não será necessário fazer absolutamente nada no banco, já que nele as modificações serão transparentes sem a necessidade de reestruturação ou algo parecido. Adicionar novas funcionalidades ao sistema será algo natural, aumentando o desempenho do desenvolvimento do software.

 

Tipos de dados suportados

Os tipos suportados vão desde classes wrappers até arrays multidimensionais de objetos. É possível ter campos blob, mas estes são armazenados fora do arquivo de banco de dados.

 

Ferramentas de Gerenciamento

O ObjectManager é uma ferramenta gráfica utilizada para acessar, navegar, executar querys e editar arquivos db4o. O download pode ser feito nas versões Windows, Linux e .net (msi Installer).

 

db4objectsfig03.JPG

 

Plugin do Eclipse

Para quem prefere manter tudo em uma mesma IDE (como eu) está disponível o download do plugin db4o para o Eclipse. Atualmente está na versão 0.2.0 com as seguintes funcionalidades:

  • Abrir e criar Banco de dados db4o
  • Conectar a um servidor de B.D
  • Navegação no conteúdo
  • CRUD nos objetos
  • Executar querys
  • Backup

  • Perspectivas
    • Explorer View
      • Leitura e conexão com o Banco de Dados e exibição das classes
    • Object View
      • Visualiza as propriedades dos objetos em forma de tabulação
    • Query View
        • É utilizada para a criação de querys no banco. Também pode ser adicionada na Explorer View.

Apesar de todas essas funcionalidades, ainda não saiu uma versão do plugin que atenda à versão db4o 5.5. Funciona somente na versão 5.0.

 

db4objectsfig04.JPG

 

Estudo de Caso

Aconteceu na Espanha: a Indra Sistemas, uma empresa de desenvolvimento de softwares, foi contratada para criar um 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. Além disso, a administração do banco é zero, com um tamanho reduzido de utilização de memória.


De acordo com José Miguel Rubio Sánchez, gerente técnico da Indra Sistemas, “possivelmente o benefício mais importante é a habilidade de consultar diretamente os objetos, permitindo ter um projeto em Java muito complexo sem necessidade de transformar os  dados. Outro benefício chave é o ambiente de administração zero, o que é obrigatório em  sistemas de tempo real.

Leia também