Seções iMasters
Banco de Dados + Oracle + XML

Introdução ao Oracle Berkeley DB XML

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.

E o que é 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 a 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 porque 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ópria.

Dessa forma, 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 seguintes exemplos:

  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 na 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? Desse modo, a aplicação pode utilizar um banco de dados embutido para armazenar e para gerenciar as suas mensagens;
  3. Outro exemplo interessante são 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 precisem de um banco de dados relacional como Oracle Database, SQL Server ou IBM DB2.

Além de o 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 termos uma noção da utilização do Oracle Berkeley DB XML em sua aplicação, veremos um exemplo da arquitetura de como podemos trabalhar com esse banco de dados:

Na imagem acima, a arquitetura do Oracle Berkeley está divida em dois produtos, o Oracle Berkeley DB e o 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.

Desse 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 o Query Analyzer do MS SQL Server. A imagem abaixo mostra o prompt de comando do 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.

Para maiores informações sobre os produtos e recursos citados neste artigo, recomendo os links abaixo:

  1. Oracle Berkeley DB;
  2. Oracle Berkeley DB XML;
  3. XQuery e XPath;
  4. W3C XQuery 1.0;
  5. XPath Tutorial.

Até o próximo artigo sobre Oracle Berkeley DB.

Mais informações no meu blog ou me siga no twitter @dbarodrigo.

Abraços,

 

Rodrigo Almeida

Rodrigo Almeida, DBA Oracle há mais de 10 anos é um dos DBA’s mais influentes do pais e mantém seu próprio Portal e Fórum (www.rodrigoalmeida.net), eleito ORACLE ACE em 2009 pela Oracle Corporation, cursou Eng. da Computação pela UNISANTA, graduado em Analise de banco de dados e pós-graduando em BI pela Veris Faculdades, especialista em Micro-eletrônica pelo INSA em Toulouse/França. Possui certificações OCP 9i/10g/11g, OCE SQL Expert, OCS 11g Implementations e Exadata e mais de 14 certificações Oracle. É vice-presidente do grupo de usuários Oracle do Brasil (GUOB), colunista Oracle do portal iMasters e colaborador técnico para os principais portais e revistas Brasileiras e internacionais. É participante dos Beta Program da Oracle Coporation para soluções de banco de dados e instrutor oficial da Oracle University Brasil para os treinamentos de BD e Exadata e atualmente é DBA Oracle e DMA Exadata na CDS e consultor técnico da Oracle do Brasil focado no gerenciamento e implementação de Oracle Exadata, Exalogic e tecnologias de banco de dados e aplicações Oracle. Também é proprietário da empresa UNIDBA Treinamento & Consultoria em TI (www.unidba.net)

Email
Comente também

4 Comentários

Silmar de Paula Santos

Rodrigo, sempre os seus artigos são muito bons!

Tira uma dúvida, este Oracle Berkeley DB XML é como se fossem estes bancos de dados não relacionais, com alta escalabilidade. Ex; Cassandra, MongoDB?

Jean Nascimento

Sim ele é um banco de dados NOSQL porém não utiliza dos principios CAP e sim MVCC.

Hercules Jener Delfino

muito legal! me ajudou!

George

Trabalho sistemas em Visual Foxpro e por um lado é excelente devido aos seus recursos de mainpulação de dados em DBF, mas por outro encontro a limitação de que um DBF não pode passar de 2 Gb. Lamentável ! O Berkeley DB seria uma opção para isto ? Tenho a impressão que tudo eu teria que criar classes que implementam chamadas às funções de acesso a dados da API do Berkeley DB. Se for assim, eu perderia todos os recursos já prontos que a linguagem Visual Foxpro já trás para manipulação dos DBF’s e teria que investir em uma solução própria dentro mesmo do Visual Foxpro para usar o Berkeley DB e eliminar o problema da limitação do DBF em 2 Gb. Estou certo ? Qual solução poderia me indicar para isto ?

Qual a sua opinião?