UNIVERSIDADE FEDERAL DE SANTA CATARINA CENTRO TECNOLÓGICO DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA CURSO DE SISTEMAS DE INFORMAÇÃO Ferramenta de conversão de esquemas XML Schema para esquemas relacionais Acadêmica: Crislane Spricigo da Silva Orientador: Ronaldo dos Santos Mello, Dr. Florianópolis, SC. Novembro de 2007 1 SUMÁRIO 1. INTRODUÇÃO....................................................................................................2 2. XML E XML SCHEMA......................................................................................3 2.1 Visão Geral sobre XML....................................................................................3 2.2 Linguagem XML Schema.................................................................................4 3. TRABALHOS RELACIONADOS.....................................................................6 3.1 Mapeamento de definições XML Schema para SQL:1999..............................6 3.2 Geração automática de esquemas relacionais a partir de esquemas XML.......7 4. FERRAMENTA XRCONVERSION.................................................................8 4.1 Introdução.........................................................................................................8 4.2 Módulos............................................................................................................9 4.2.1 Módulo de Pré-processamento......................................................................9 4.2.2 Módulo de Mapeamento..............................................................................10 4.3 5. Tecnologias.....................................................................................................11 BIBLIOGRAFIA................................................................................................12 2 1. INTRODUÇÃO Atualmente muitos sistemas heterogêneos necessitam interagir entre si, com trocas de dados comuns que levam a informação aos usuários. Com a finalidade de tornar eficiente o processo de troca de dados entre aplicações distintas, a W3C definiu a linguagem XML como formato padrão para comunicação na web. É verificado que no mesmo contexto, o modelo de dados mais utilizado nas corporações é o relacional. Este por sua vez, possui uma maturidade que foi adquirida durante muitos anos de testes e aprimoramentos. Dessa forma, é claramente verificada a necessidade de interoperabilidade de dados XML com o modelo relacional. Para que isso exista, deve ser feito um mapeamento entre os modelos, e este trabalho é uma proposta dessa importante tarefa. Baseada na proposta de [CRM05], está sendo desenvolvido como trabalho de conclusão de curso, a ferramenta XRConversion, que possui como entrada uma estrutura em XML Schema, e fornecerá como saída um script SQL para criação de tabelas no modelo relacional. Assim, boa parte da necessidade tecnológica exposta acima pode ser contemplada com esta ferramenta. 3 2. XML E XML SCHEMA 2.1 Visão Geral sobre XML A W3C (World Wide Web Consortium) é um consórcio de empresas de tecnologia que desenvolve padrões para a criação e a interpretação dos conteúdos para a Web. Os padrões estipulados pela W3C permitem uma comunicação eficiente dos serviços na rede, uma vez que os desenvolvedores façam uso destes padrões [WKP07]. Entre estes, encontra-se a XML (eXtensible Markup Language) , que é uma linguagem de marcação usada para descrição de informações. Os documentos XML sao baseados em dois principais conceitos de estruturação: elementos e atributos. A figura 1 mostra um exemplo de um documento XML. De forma semelhante ao html, os elementos são identificados por tags de inicio e tags de fim. Os elementos complexos sao formados por outros elementos dentro da hierarquia e os elementos simples contêm valores de dados. Figura 1 - exemplo de Documento XML – [XML07] 4 É possível observar que a representação textual do XML é correspondente a uma estrutura de dados em árvore. Na representação de uma árvore, os nodos internos são os elementos complexos e os nodos folha representam elementos simples. Dessa forma, os documentos XML são chamados de Modelo de Árvore ou Hierárquico. É possível caracterizar os documentos XML dentro de três categorias: 1) Documentos XML centrados em dados: é baseado em itens de pequenos dados, seguindo uma estrutura específica. Costumam ser extraídos a partir de banco de dados estruturados e são comunicados na Web. 2) Documentos XML centrados em documentos: são documentos com grande quantidade de texto, como artigos de jornais ou livros. Normalmente não apresentam dados estruturados. 3) Documentos XML híbridos: são os documentos que podem possuir partes com dados estruturados e outras partes predominantemente textuais ou não-estruturados [ELM05]. Quando um documento XML está em conformidade com um esquema DTD ou com XML Schema, é considerado que o documento possui dados estruturados. Se o documento XML permite a entrada de dados sem definição no esquema, é considerado que ele possui dados semi-estruturados, também chamado de XML sem esquema (schemaless)[ELM05]. 2.2 Linguagem XML SCHEMA XML schema é um padrão para especificar documentos XML. É baseado nas mesmas regras de sintaxe dos documentos XML comuns, ou seja, também é baseado no modelo de dados de árvore, com elementos e atributos como os principais conceitos de estruturação. Um esquema definido em XML schema – chamado XSD define a estrutura de um XML como: seus elementos, a ordem de 5 apresentação destes, restrições de conteúdo, atributos, grupos reusáveis, novos tipos de dados, ou seja, todas as regras que não permitam um documento com ambigüidade ou mal formado. [CRM05] Por ser um esquema mais elaborado, garante a ocorrência de dados estruturados utilizando conceitos adicionais de banco de dados e de modelos de objeto, tais como chaves, referências e identificadores[ELM05]. Um esquema XSD é formado por um elemento raiz chamado schema. Este elemento pode ter vários elementos filhos. O esquema é dividido em dois grupos: grupo de gerenciamento: encontram-se sempre no início do documento, gerenciam a definição do esquema quando ele está distribuído em vários arquivos. grupo de componentes de construção do modelo: são os elementos que compõem o documento propriamente dito. Neste trabalho o enfoque será dado ao grupo de componentes de construção do modelo, será proposta a conversão destes elementos para o esquema relacional. 3. TRABALHOS RELACIONADOS 3.1 Mapeamento de definições XML Schema para SQL:1999 O objetivo da abordagem de [MAR05] é prover um algoritmo para o mapeamento das construções que apresentam uso mais comum. O resultado do mapeamento é um esquema objeto-relacional. Para o início do trabalho, foram feitos levantamentos de conteúdo a partir de 199 esquemas XSD’s obtidos da web, a fim de identificar as construções efetivamente usadas na prática, e para em seguida identificar mapeamentos eficientes para esquemas SQL:1999. A partir de um conjunto de esquemas XSD, foram realizados testes estatísticos para verificar quais construções XML Schema são mais utilizadas. A partir deste ponto, foram elaborados mapeamentos específicos para os mesmos. 6 O início da geração de esquemas ocorre com o armazenamento dos dados das instâncias válidas em relação ao esquema referido. Para cada XSD, deve ser mapeado um esquema SQL:1999 correspondente, de forma a ser possível armazenar os dados do XML extraído sem perdas estruturais significativas. Como principais características desta proposta, têm-se: - Apenas XSD’s válidos são considerados – subentende-se que já passou por um módulo de validação independente desta abordagem; - Apenas XSD’s que não fazem uso de construções contidas em outros esquemas podem ser mapeadas; - São desconsiderados esquemas que utilizam espaços de nomes diferentes do padrão; - Não são contemplados esquemas que possam gerar conteúdo misto, que apresentam recursão e que usam recursos de derivação para a criação de tipos. 3.2 Geração automática de esquemas relacionais a partir de esquemas XML A ferramenta desenvolvida com o nome de XRMap é uma proposta de mapeamento automático usando regras pré-definidas [STE06]. Leva-se em consideração a integridade referencial dos dados através da identificação de relacionamentos no esquema XML e posteriormente é gerado o conjunto de chaves primárias e chaves estrangeiras no modelo relacional. A ferramenta possui duas formas de mapeamento: uma totalmente automática e outra com intervenção do usuário. A primeira etapa pela qual o XSD passa é uma função de pré-processamento. Em seguida, é criado um XML de metadados da seguinte forma: 7 - Cada elemento do XSD é mapeado como um elemento TABLE, seu nome é definido em um atributo chamado NAME; - Cada elemento filho é mapeado como um COLUMN, com atributos NAME e TYPE. A etapa seguinte é o mapeamento deste XML de metadados para o esquema relacional. Em caso de ter sido escolhido o modo automático, o XRMap decide quais colunas serão chaves primárias e estrangeiras, de acordo com a cardinalidade dos elementos. Isto é feito com base no elemento CARDINALITY criado dentro do XML de metadados. Quando é optado pelo mapeamento com intervenção do usuário, o usuário define quais chaves primárias e estrangeiras devem ser criadas durante o mapeamento. Isto é feito através da especificação dos elementos KEY e KEYREF no XSD de entrada da ferramenta. No final do mapeamento, a ferramente XRMap cria um script SQL com as cláusulas para criação das tabelas. 4 FERRAMENTA XRCONVERSION 4.1 Introdução Como proposta para facilitar a comunicação de dados dos ambientes computacionais que utilizam XML, com as estruturas providas pelo modelo relacional, foi escolhido desenvolver a ferramenta em questão, chamada XRConversion. As vantagens que esta ferramenta proporciona são diversas, abaixo seguem algumas: - Possibilita a integração de dados através da definição de protocolos XML para transferência de dados entre banco de dados relacionais; - Gera redução de custos nos projetos, pois reduz o impacto na transformação de dados entre sistemas, evitando o retrabalho na manutenção; - Proporciona o reaproveitamento das estruturas de banco de dados legadas, uma vez que os modelos relacionais continuam sendo os mais estáveis e performáticos. Com 8 isso, novamente há a redução de custos, pois é desnecessária a aquisição de um novo SGBD. O mapeamento é feito a nível lógico e foi elaborado para que chegue a uma solução mais abstrata e flexível possível, com isso, permite ao usuário que aplique seus conhecimentos para obter um modelo físico mais otimizado para o seu SGBD relacional. Quando há situações de mapeamento que a ferramenta possui mais de uma possibilidade de decisão, é questionado ao usuário qual decisão ele deseja tomar. Esta comunicação com o usuário é feita através de uma caixa de diálogos da interface gráfica. 4.2 Módulos Para que seja feito um tratamento eficiente no esquema XSD de entrada, a ferramenta foi dividida em módulos, deixando as tarefas independentes e bem definidas. 4.2.1 Módulo de Pré-processamento Este módulo consiste em adequar o esquema XSD de entrada para uma melhor forma de tratamento e leitura pelas regras de mapeamento. Visa a redução de complexidade na aplicação do algoritmo. As alterações realizadas por este módulo são: - Incorporação de conteúdo externo no mesmo esquema, quando há referência a outro arquivo no grupo de gerenciamento; - Conversão de grupos de substituição para a tag choice; - Substituição de definições chamadas extension pelo próprio conteúdo a ser extendido; - Eliminação de referências. 4.2.2 Módulo de mapeamento Depois de pré-processado, o esquema é lido pelo módulo de mapeamento. Neste módulo, o algoritmo de conversão varre o esquema e identifica seus elementos e suas possíveis correspondências no modelo relacional. Caso seja necessário a intervenção do usuário, é 9 disparado uma ação para a interface gráfica questionar qual decisão deve ser tomada, e em seguida o processamento continua de onde parou. A definição em alto nível do algoritmo é a seguinte: Figura 2 – algoritmo de conversão [CRM04]. - Utilizando a recursão, o algoritmo de conversão lê o XSD o pré-processado; - Para cada elemento global encontrado no XSD, é executado o procedimento TrataElemento, também recursivo, passando como parâmetro o elemento global; - O procedimento TrataElemento identifica o tipo de elemento do parâmetro recebido e encaminha uma regra de mapeamento para o tipo identificado. Neste momento, o TrataElemento verifica a existência de atributos e aplica as regras de mapeamento para os atributos. Por último, verifica se há sub-elementos e em caso positivo, o TrataElemento chama ele mesmo, passando como parâmetro o subelemento. No esquema relacional gerado, as colunas que foram mapeadas a partir de elementos ou atributos indicados com opcionais, devem poder assumir valores nulos (padrão para atributos no modelo relacional) e para aqueles indicados como obrigatórios, as colunas não podem assumir valores nulos. Como saída, a ferramenta vai gerar um script SQL para a criação das tabelas. 4.3 Tecnologias 10 Para implementar as regras de mapeamento já definidas no trabalho de [CRM05], foi escolhido a linguagem de programação JAVA/JSE na sua versão 6.0 [SUN07]. Foram encontradas diversas bibliotecas, conhecidas como API’s externas à linguagem JAVA, que manipulam dados XML. Foi escolhido trabalhar com a API JAXP (JAVA API for XML Processing) na sua versão 1.4.2 que contempla funcionalidades direcionadas ao tema deste trabalho [JAX07]. O ambiente de desenvolvimento escolhido foi o Oracle JDeveloper versão 10, o qual tem auxiliado satisfatoriamente na implementação das rotinas e da interface gráfica [ORA07]. Figura 3 – Tela principal da ferramenta XRConversion. 11 BIBLIOGRAFIA [ELM05] ELMASRI, R.; NAVATHE S.B. Sistemas de banco de dados. São Paulo: Addison Wesley, 2005. [WKP07] W3C. Disponível em: http://pt.wikipedia.org/wiki/W3C. 2007. Acessado em 2 de novembro de 2007. [CRM05] MAURICIO, C.R.M. Uma proposta de Mapeamento do Modelo XML Schema para o Modelo Relacional – disponível em http://www.grupobd.inf.ufsc.br, 2007. [MAR05] MARTINS, Patrícia; LAENDER, Alberto H. F. Mapeamento de definições XML Schema para SQL:1999. Departamento de Ciências da Computação – Universidade Federal de Minas Gerais. Disponível em http://www.sbbd- sbes2005.ufu.br/arquivos/artigo-07-novo_Martins.pdf, 2005. Acessado em 10 de novembro de 2007. [STE06] VIAPIANA, Stevan F.; DORNELES, Carina F. Geração automática de esquemas relacionais a partir de esquemas XML. Instituto de Ciências Exatas e Geociências – Universidade de Passo Fundo(UPF). Disponível em http://ccet.ucs.br/erbd2007/artigos/26119.pdf, 2006. Acessado em: 10 de novembro de 2007. [SUN07] JAVA TECHNOLOGY. Disponível em: http://java.sun.com/, 2007. Acessado em 12 de setembro de 2007. [JAX07] JAXP 1.4.2. Disponível em: http://jaxp.dev.java.net/1.4, 2007. Acessado em 17 de setembro de 2007. [ORA07] Oracle Jdeveloper 10. Disponível em http://www.oracle.com, 2007. Acessado em 10 de março de 2007.