Armazenamento de XML em bases de dados Problemas do armazenamento de XML em bases de dados Uma base de dados é uma colecção de informação organizada de forma sistemática para facilitar o seu acesso e análise. Desde a sua origem têm sido desenvolvidos diversos modelos de organização de informação que têm dado origem a diferentes modelos de bases de dados. Actualmente, os modelos relacional e objecto-relacional são os mais utilizados pelas empresas. Alguns autores colocam a questão se um documento XML pode constituir por si só uma base de dados. Pode afirmar-se que um documento XML é uma base de dados no seu sentido mais estrito, ou seja, como uma colecção de dados. Nesta óptica, o documento XML não é diferente de qualquer outro ficheiro que contenha dados. Contudo, quando encarado como um formato de base de dados, o XML apresenta algumas vantagens como o de ser auto-descrito (os nomes dados às marcações descrevem a estrutura embora não a semântica dos dados), a portabilidade (sistema Unicode de representação) e a capacidade de organizar dados como estruturas em árvore. Contudo, apresenta também desvantagens como a verbosidade (uso excessivo de palavras) e o acesso a dados lento devido ao esforço de parsing. Uma possibilidade mais útil é investigar se a XML e as suas tecnologias associadas podem constituir uma base de dados num sentido mais lato, ou seja, um SGBD (Sistema de Gestão de Bases de Dados). De certa forma pode afirmar-se que tal é possível já que o XML tem características presentes em bases de dados como o armazenamento (o próprio documento) e esquemas (DTD e XML Schemas). Têm sido desenvolvidas várias linguagens de pesquisa e interrogação como é o caso da XQuery como working draft do W3C em Abril de 2005, a Quilt, a XQL da Software AG em Março de 2000 e Agosto de 1999 respectivamente, e a XML-QL como submissão ao W3C em Agosto de 1998. Para além das linguagens de pesquisa existem também as interfaces de programação (DOM e SAX). Mas por outro lado, faltam à XML e tecnologias associadas as características essenciais encontradas em SGBDs reais como: armazenamento eficiente, índices, segurança, transacções, integridade de dados, acesso concorrente, mecanismos de triggers, interrogações de vários documentos em simultâneo, etc. Embora possa ser possível usar um ou mais documentos XML como uma base de dados em ambientes com pequenas quantidades de dados, com poucos utilizadores e requisitos de desempenho modestos, esse suporte falha na maioria dos ambientes de produção, com muitos utilizadores e elevados requisitos de integridade de dados e desempenho. Rapidamente se percebeu que a XML, mesmo acompanhada de tecnologias associadas não é suficiente para implementar um SGBD com requisitos reais. Devido à crescente produção de conteúdos XML existe uma grande necessidade de os armazenar de forma eficiente e que permita extrair deles informação facilmente. Como as bases de dados relacionais e objecto-relacionais são actualmente as mais utilizadas, foram desenvolvidos esforços para implementar mecanismos de carregamento de informação contida em documentos XML para as suas estruturas. A forma de organizar informação é, no entanto, consideravelmente diferente num documento XML e numa base de dados relacional ou objecto-relacional. A tabela 1 compara as características em que as diferenças são mais evidentes. Carecterisrtícas Documento XML Mod.Relacional Mod. Objecto-Realcional Representação Árvore Classes Dados Esquema Aninhados em elementos Pode ser importante Opcional Tabelas normalizadas Campos de tabelas Não existe ordem definida Obrigatório Extracção XQuery SQL SQL3 Ordenação Atributos de classes Não existe ordem definida Obrigatório Tabela 1 Comparação de diferentes formas de organizar informação A representação da informação em documentos XML é através de uma estrutura hierárquica em árvore com os dados aninhados em elementos, sendo a meta-informação remetida para os atributos. No modelo relacional a informação é organizada em tabelas com vários registos (ou linhas). Os dados estão acessíveis nos campos (ou colunas) de cada linha das tabelas. No modelo objecto-relacional, a informação é representada através de classes. As classes são instanciadas em objectos que podem ser mapeados numa linha de uma tabela. Os dados estão nos atributos das classes. A ordenação pode ser importante num documentos XML no caso de conter informação semi-estruturada ou ser irrelevante no caso de conter informação estruturada. No casos dos modelos relacionais e objecto-relacionais a ordem dos registos ou objectos não está pré-definida, podendo, contudo ser definidos campos para a controlar. A existência de um esquema é opcional num documento XML. Normalmente a informação estruturada é acompanhada de um esquema, no entanto, tal raramente acontece quando se representa informação semi-estruturada. A estrutura das tabelas no modelo relacional obedece sempre a um esquema bem definido. Da mesma forma, há sempre um diagrama de classes que suporta o esquema de uma base de dados do modelo objecto-relacional. Os métodos de extracção de informação num documento XML são variados, sendo actualmente a linguagem XQuery a mais explorada. No que diz respeito ao modelo relacional, a linguagem SQL constitui a base sobre as quais os vários SGBDs introduzem variações, pelo que pode ser considerada um padrão para este modelo. Para o modelo objecto-relacional foram sendo desenvolvidas extensões à linguagem SQL como é o caso da SQL3 da Oracle. Atendendo às diferenças de representação, verifica-se que o problema de transferir informação de um documento XML para uma base de dados relacional ou objecto-relacional não é trivial. A estratégia habitual consiste em estabelecer mapeamentos entre o esquema do documento XML para o esquema da base de dados. Tem sido desenvolvido software para efectuar estes mapeamento usando linguagens de interrogação de XML ou simplesmente transferindo os dados fazendo corresponder os elementos a campos de tabelas ou a atributos de classes. Quando as duas estruturas não têm uma correspondência perfeita, é necessário efectuar transformações XSLT para adaptar a estrutura do documento XML à das tabelas ou classes. Os mapeamentos entre esquemas de documentos e esquemas de bases de dados são efectuados em elementos, atributos e texto. Quase sempre omitem as estruturas físicas (entidades, secções CDATA e informação de codificação) e as estruturas lógicas (instruções de processamento, comentários e a ordem no documento). Esta filtragem faz sentido, uma vez que pretende-se que a base de dados fique com uma réplica dos dados do documento. Verifica-se, no entanto, que pode haver perda de alguma informação contida no documento XML. A consequência desta eventual perda é que um documento XML gerado a partir dos dados transferidos para a base de dados pode ser diferente do documento XML original. Este facto pode ser ou não aceitável, dependendo das necessidades do sistema que o utilize, e pode condicionar a escolha na tecnologia que efectua o mapeamento. São utilizados habitualmente dois tipos de mapeamento entre um esquema XML e um esquema de bases de dados: o mapeamento baseado em tabelas e mapeamento objectorelacional. O mapeamento baseado em tabelas é utilizado por muitos produtos para transferir dados entre um documento XML e uma base de dados relacional. Modeliza o documento XML como uma tabela ou um conjunto de tabelas. Dependendo do software utilizado, pode ser possível especificar que colunas correspondem a elementos e a atributos bem como os nomes a atribuir a essas colunas. Este tipo de mapeamento é útil para serializar dados num cenário de migração de dados entre bases de dados relacionais. A sua desvantagem mais evidente é que não pode ser usado para documentos XML que não sejam fortemente estruturados. O mapeamento objecto-relacional modeliza o documento XML como uma árvore de objectos específicos para os dados no documento. Neste modelo, os atributos e o texto dentro dos elementos são modelizados como atributos de classes. No caso do SGBD Oracle , o mapeamento é efectuado com instruções de SQL3 ou em alternativa, usando pacotes como o XSU que automatizam o processo. Este modelo sofre, no entanto, da mesma desvantagem do anterior no que diz respeito à rigidez da estrutura receptora do conteúdo XML. Bases de dados XML enabled e XML nativas Todas as bases de dados que incluem mecanismos de tratamento de documentos XML designam-se por XML enabled. São bases de dados que não trabalham directamente com a representação de informação em XML. No entanto, conseguem de alguma forma armazenar documentos XML e extrair deles informação. As primeiras tentativas de manipular documentos XML estavam sempre associadas a motores de pesquisa sobre ficheiros de texto carregados em bases de dados relacionais. Estas abordagens apresentam três grandes problemas. O primeiro deles é a escalabilidade, que se manifesta na degradação do desempenho com o aumento do documento XML, ou ao terem de lidar com vários documentos em simultâneo. O segundo problema é a falta de queries estruturadas. Os motores de pesquisa não reconhecem a estrutura da sintaxe do XML, não distinguindo elementos de atributos e respectivos conteúdos. As interrogações após carregamento em bases de dados relacionais estão sempre limitadas aos campos mapeados e à estrutura desse mapeamento. O terceiro problema é a falta de possibilidade de tirar partido no documento dos mecanismos das bases de dados como concorrência, segurança, atomicidade, etc. A solução para tentar dar resposta a estes problemas foi a introdução de bases de dados XML nativas, que ao contrário das XML enabled, trabalham directamente com a representação de informação em XML. Destacam-se as características seguintes das bases de dados XML nativas que melhor as diferenciam das XML enabled : Separação de informação no carregamento Quando um documento XML é inserido, é efectuado de imediato o parsing (separação e classificação dos dados) em que são separados os elementos, atributos e os respectivos valores. A indexação do documento é também efectuada no momento do carregamento. Interrogação directa com tecnologias associadas à XML O parsing em simultâneo com o carregamento permite que os documentos possam ser interrogados facilmente com a consulta de índices. As linguagens de interrogação variam, mas a XQuery tem vindo a ser implementada em muitas soluções comerciais e open-source. A tecnologia associada XPath assume também um papel importante na interrogação porque permite identificar grupos de elementos num documento. Capacidade de manipulação de grandes documentos O único ónus existente na manipulação de grandes documentos é o aumento do tempo de carregamento, mas daí em diante como não há mais esforços de parsing. Deixa de haver relação entre o tamanho de um documento e a facilidade de manipulação. Flexibilidade em acompanhar a evolução do esquema As alterações no modelo de dados vão acontecendo naturalmente com as alterações nos processos de negócio. Devido à rigidez dos esquemas relacionais, a flexibilidade para o acompanhamento dessas alterações nem sempre é simples. As bases de dados XML nativas não implicam a utilização de esquemas fixos e conseguem manipular os mesmos dados com versões diferentes do esquema. O mapeamento dados-esquema não possui a rigidez do modelo relacional o que torna esta tecnologia mais adequada para manipulação de ficheiros XML centrados em documentos, ou seja, com informação semi-estruturada. Praticamente todos os produtos de sistemas de gestão de bases de dados que têm sido largamente usados por empresas incluem de alguma forma capacidades de manipulação de documentos XML. Os líderes de mercado como a Oracle, a IBM e a Microsoft foram os que mais cedo se preocuparam em incorporar essas capacidades no seus produtos. Outras empresas de menor quota de mercado foram também progressivamente incluindo essas capacidades nos seus produtos, porque verificaram que só assim podiam manter o seu nível competitivo. A capacidade de manipular XML tornou-se assim um requisito obrigatório nos produtos de bases de dados. As bases de dados XML nativas são uma tecnologia ainda em fase experimental. A par de soluções comerciais como o Tamino XML Server da Software AG e o Sonic XML Server da Sonic Software, existem também alguns projectos de investigação open-source como o sistema Natix da Universidade de Mannheim e o sistema Timber da Universidade de Michigan. Tratando-se de uma tecnologia emergente, não está ainda no nível de maturação das bases de dados relacionais e objectorelacionais.