Introdução ao Oracle Berkeley DB XML

Por Rodrigo Almeida
Postado en outubro 2011

Neste artigo vamos conhecer uma solução de banco de dados para gerenciar arquivos em XML (Extensible Markup Language) para aplicações que trabalham com um grande volume desses arquivos em seus ambientes corporativos ou na web. A solução será adotar o Oracle Berkeley DB XML.

Mas, o que é Oracle Berkeley DB XML?

O Oracle Berkeley DB XML é um banco de dados XML escrito em C++ que está sobre a camada de outro banco de dados, Oracle Berkeley DB. Sua principal função é fornecer suporte à consultas, inserções e manipulação dos arquivos XML armazenados nele, usando recursos como XQuery 1.0, XPath 2.0, índices, validação dos arquivos, controle das transações e até mesmo replicação.

O Oracle Berkeley DB XML pode trabalhar isoladamente da camada principal do banco de dados do Oracle Berkeley DB, isso é possível por que o Oracle Berkeley DB XML é um banco de dados embutido que pode trabalhar diretamente nas aplicações. E quando mencionamos embutido, dizemos que não é necessário nenhum processo de servidor (daemon) para iniciar ou parar seus serviços, tudo pode ser acessado através de API (Application Programming Interface) próprio.
Assim sendo, os dados dos arquivos XML podem ser acessados diretamente através de bibliotecas pela aplicação ou pelo console do Oracle Berkeley DB XML, e pode ser distribuído no mesmo pacote de instalação da aplicação. Para melhorar a compreensão da arquitetura de um banco de dados embutido, vamos pensar nos exemplos abaixo:

  1. Uma aplicação de Catálogo de Endereços possui um banco de dados embutido, certo? Pois será necessário armazenar todos os registros que inserimos e depois manipular, seja na edição ou exclusão;
  2. Aplicação de E-mail também trabalha com um banco de dados embutido, pois não conseguimos realizar consultas em nossos e-mails? Adicionar e-mail em biblioteca própria ou até mesmo realizar um backup da mensagens? Deste modo, a aplicação pode utilizar um banco de dados embutido para armazenar e gerenciar as suas mensagens;
  3. Outro exemplo interessante é aplicações que realizam controle de log em servidores ou até mesmo aplicações que realizam diversas manipulações em arquivos XML para diversas finalidades na web, um exemplo seria o controle dos seus Feeds, gerador de RSS ou até mesmo controle de produtos em loja virtual.

Todos os exemplos que estou citando, são para aplicações que não precise de um banco de dados relacional como Oracle Database, SQL Server ou IBM DB2.

Além do Oracle Berkeley DB XML ser um banco de dados embutido (Embedded database) possui diversas outras características importantes na sua utilização, veja algumas dessas características:

  • Agrupamento de arquivos através de Containers;
  • Validação de esquema ou método por arquivo;
  • Suporte a XML namespace;
  • Suporte a XQuery debugging;
  • Indexação de nós (nodes), elementos, atributos e metadata;
  • Utilização de índices específicos para os arquivos XML para aumentar performance;
  • Query Engine baseado em otimizador por custo;
  • API para linguagens como Java, C++, Python, Php, Perl, Ruby on Rails e etc;
  • Integração com Apache;
  • Suporte a 256TB de armazenamento de arquivos;
  • Não há necessidade de administração por parte do DBA;
  • Suporte de instalação em Windows, Linux, Unix, MacOS e qualquer sistema operacional POSIX;
  • Streaming dos documentos por URI, memória ou diretamente do arquivo;
  • E possibilidade de atualização/inclusão de novos nós ou elementos dos arquivos XML.

Para ter uma noção da utilização do Oracle Berkeley DB XML em sua aplicação, veja um exemplo da arquitetura de como podemos trabalhar com este banco de dados, veja a imagem abaixo:

Oracle Berkeley DB XML

Na imagem acima, a arquitetura do Oracle Berkeley está divido em dois produtos, o Oracle Berkeley DB e Oracle Berkeley DB XML, ambos com funcionalidades diferentes e distintas.

Como o Oracle Berkeley DB dentro do ambiente, pode fornecer recursos ao Oracle Berkeley DB XML como:

  • Replicação para fornecer alta-disponibilidade;
  • Logging;
  • Cache de resultados, que com o Oracle Berkeley DB XML pode trabalhar com o componente DOM-like;
  • Controle de transações;
  • E controle de acesso aos elementos do XML.

A utilização em conjunto com o Oracle Berkeley DB pode trazer mais recursos na utilização do Oracle Berkeley DB XML em sua aplicação, além dos recursos nativos de XQuery e XPath.

O importante é não confundir um banco de dados relacional com um banco de dados embutido, que é o caso do Oracle Berkeley DB XML, porque não está presente em sua arquitetura, requisitos básicos como:

  1. Modelo de dados relacional;
  2. Padrões SQL (ANSI, ISO, SQL-1992, SQL:1999, SQL:2003 e etc);
  3. Serviços de administração do banco de dados (daemons);
  4. E extensões processuais, tais como PL/SQL, T-SQL, SQL PL e etc.

Deste modo, o Oracle Berkeley DB XML torna-se um banco de dados embutido bem simples, de fácil utilização e com um objetivo principal, manipular e gerenciar os arquivos XML, esse é o objetivo principal.

Outro ponto interessante que o Oracle Berkeley DB XML possui um CLI (Command Line Interface) para realizar uma iteração direta por query usando os recursos de XQuery/XPath, esse CLI é o DBXML, que permite realizar acesso os elementos e atributos dos arquivos XML diretamente, algo como o SQL*PLUS do Oracle ou Query Analyzer do MS SQL Server. A imagem abaixo mostra o prompt de comando do Oracle Berlekey DB XML.

Oracle Berlekey DB XML

Espero que tenham gostado de conhecer um pouco sobre a utilização do Oracle Berkeley DB XML que está incorporado no portfólio da Oracle Corporation desde 2006 quando a Oracle comprou a empresa Sleepycat software, que foi a criadora do Berkeley DB, conhecido também como BDB.




Postado por Rodrigo Almeida. Bloggers regionais Externo mas que conhecemos.