Escolar Documentos
Profissional Documentos
Cultura Documentos
Integrando BD XML
Integrando BD XML
Mauri Ferrandin
Dissertao submetida Universidade Federal de Santa Catarina como parte dos requisitos para obteno do grau de Mestre em Cincia da Computao
ii
Mauri Ferrandin
Dissertao submetida Universidade Federal de Santa Catarina como parte dos requisitos para obteno do grau de Mestre em Cincia da Computao
iii
Mauri Ferrandin
Esta Dissertao foi julgada adequada para a obteno do ttulo de Mestre em Cincia da Computao rea de Concentrao Sistemas de Computao e aprovada em sua forma final pelo Programa de Ps-Graduao em Cincia da Computao.
________________________________
Professor Fernando Ostuni Gauthier, Dr.
________________________________
Professor Roberto Willrich, Dr.
________________________________
Professor Rosvelter J. Coelho da Costa, Dr.
iv
Existem poucas coisas que jamais sero tiradas de um homem, o conhecimento com certeza uma delas.
A todos que acreditam que a educao um fundamento para construo de uma sociedade mais justa, e buscam a luz da cincia construir um mundo melhor procurando respostas para os desafios do mundo moderno.
vi
AGRADECIMENTOS
Agradeo a Deus, a minha famlia, aos amigos, a Universidade Federal de Santa Catarina, ao Centro Universitrio de Jaragu do Sul (SC).
vii
SUMRIO
AGRADECIMENTOS ...................................................................................................................... VI SUMRIO ........................................................................................................................................ VII RESUMO........................................................................................................................................... IX ABSTRACT......................................................................................................................................... X LISTA DE FIGURAS E TABELAS.................................................................................................. XI LISTAGENS DE CDIGO FONTE................................................................................................ XII LISTA DE SIGLAS.........................................................................................................................XIII 1. INTRODUO................................................................................................................................2 1.1. 1.2. 1.3. 1.4. 1.5. 2.1. 2.2. 2.3. 2.4. 2.5. 2.6. MOTIVAO .............................................................................................................................3 OBJETIVOS ................................................................................................................................3 METODOLOGIA .........................................................................................................................4 TRABALHOS CORRELACIONADOS ...............................................................................................4 ORGANIZAO DO TEXTO .........................................................................................................4
2. BANCOS DE DADOS DISTRIBUDOS E HETEROGNEOS.....................................................7 CONCEITOS BSICOS .................................................................................................................7 REQUISITOS FUNCIONAIS DE UM SGBDD ...................................................................................8 FATORES NEGATIVOS NA UTILIZAO DE SGBDD....................................................................10 ARQUITETURAS PARA SGBDD ................................................................................................10 SISTEMAS HOMOGNEOS E SISTEMAS HETEROGNEOS .............................................................12 BANCO DE DADOS DISTRIBUDO HETEROGNEO.......................................................................13 2.6.1. Sistemas Multidatabase.................................................................................................13 2.6.2. Sistema Federado e No Federado................................................................................14 2.6.3. Sistemas Legados..........................................................................................................14 2.7. TCNICAS E FERRAMENTAS DE INTEGRAO............................................................................15 2.7.1. Integrao atravs de modelos que especificam um esquema conceitual global..............16 2.7.2. O processo de integrao e traduo de esquemas ........................................................17 2.7.3. Mediadores...................................................................................................................19 2.7.4. Wrappers......................................................................................................................21 2.8. EXEMPLOS DE SISTEMAS GERENCIADORES DE BANCOS DE DADOS HETEROGNEOS ...................22 2.8.1. Multidatabase [Buretta, 1997] ......................................................................................23 2.8.2. Projeto Jupter [Murphy e Grimson, 1995].....................................................................25 2.8.3. HEROS - HetERogeneous Object System [Castro, 1998] ...............................................26 2.8.4. DDTS - Distributed Database Testbed System [Buretta, 1997] ......................................28 2.9. COMENTRIOS FINAIS .............................................................................................................30 3. A LINGUAGEM XML ..................................................................................................................31 3.1. 3.2. 3.3. 3.4. CONCEITOS BSICOS ...............................................................................................................31 IMPORTNCIA DA XML...........................................................................................................33 XML E HTML........................................................................................................................34 COMPONENTES DE UM DOCUMENTO XML................................................................................35 3.4.1. Elementos.....................................................................................................................35 3.4.2. Atributos.......................................................................................................................36 3.4.3. Outros componentes da XML ........................................................................................37
viii
3.5. ESTRUTURA LGICA DE UM DOCUMENTO XML ........................................................................39 3.5.1. Expresses de Caminho ( Path expressions) ..................................................................40 3.5.2. Xpath............................................................................................................................41 3.6. XML E DADOS SEMI-ESTRUTURADOS ......................................................................................42 3.7. LINGUAGENS PARA ESQUEMAS ................................................................................................42 3.7.1. Document Type Definition (DTD)..................................................................................43 3.7.2. XML Schema ................................................................................................................44 3.7.3. XDR .............................................................................................................................48 3.7.4. SOX..............................................................................................................................49 3.7.5. Schematron...................................................................................................................49 3.7.6. DSD .............................................................................................................................49 3.7.7. Tabela comparativa ......................................................................................................49 3.8. LINGUAGENS DE CONSULTA PARA DADOS XML .......................................................................51 3.8.1. Requisitos de uma linguagem de consulta para dados XML ...........................................51 3.8.2. Exemplo de linguagem de consulta para dados XML (XML-QL) ....................................52 3.8.3. Outras linguagens de consultas para dados XML ..........................................................57 3.9. APIS PARA XML.....................................................................................................................59 3.9.1. SAX ..............................................................................................................................59 3.9.2. DOM ............................................................................................................................60 3.10. INTEGRIDADE EM DOCUMENTOS XML............................................................................62 3.11. COMENTRIOS FINAIS ....................................................................................................64 4. INTEGRAO DE FONTES HETEROGNEAS DE DADOS UTILIZANDO XML ...............65 4.1. REPRESENTANDO BASES DE DADOS RELACIONAIS COM XML...................................................65 4.2. VISES XML ..........................................................................................................................68 4.2.1. Atualizao de vises....................................................................................................70 4.2.2. Dimenses do problema de atualizao de vises ..........................................................72 4.3. ALGUMAS PROPOSTAS EXISTENTES DE INTEGRAO UTILIZANDO VISES MATERIALIZADAS .......72 4.3.1. Sistema ARGOS............................................................................................................72 4.3.2. MIX (Metadata based Integration model for data X-change)..........................................74 4.3.3. SilkRoute ......................................................................................................................76 4.3.4. Resumo comparativo entre as principais abordagens ....................................................77 4.4. COMENTRIOS FINAIS .............................................................................................................78 5. MODELO PARA INTEGRAO DE FONTES HETEROGNEAS DE DADOS.....................79 5.1. VISO GERAL DO SISTEMA PROPOSTO.......................................................................................79 5.2. DESENVOLVIMENTO DO PROTTIPO .........................................................................................81 5.2.1. Definio dos Requisitos...............................................................................................81 5.2.2. Projeto .........................................................................................................................81 5.2.3. Especificaes atravs de UML.....................................................................................90 5.2.4. Implementao .............................................................................................................92 5.2.5. Exemplo de utilizao do prottipo ...............................................................................92 5.3. COMENTRIOS FINAIS .............................................................................................................97 6. ANLISE E INTERPRETAO DOS RESULTADOS ..............................................................98 6.1. VANTAGENS DO SISTEMA PROPOSTO ........................................................................................98 6.2. DESVANTAGENS DO SISTEMA PROPOSTO ..................................................................................99 7. CONCLUSES E PERSPECTIVAS FUTURAS........................................................................ 100 7.1. 7.2. 7.3. 7.4. RESUMO ............................................................................................................................... 100 COMPARAO COM AS SOLUES EXISTENTES ....................................................................... 101 PONTOS FRACOS E PONTOS FORTES ........................................................................................ 102 PERSPECTIVAS FUTURAS ........................................................................................................ 102
ix
RESUMO
Com objetivo de organizar e estruturar o armazenamento das informaes necessrias s organizaes, SGBDs so utilizados a fim de prover o acesso de maneira gil, eficiente e segura a estas informaes pelas aplicaes. Os dados armazenados em um SGBD so organizados de acordo com um esquema definido em cada organizao, assim, quando estas precisam integrar/trocar informaes armazenadas em seus respectivos bancos de dados, vrios problemas surgem devido a heterogeneidade dos esquemas ou plataformas de hardware/software, necessitando de uma estrutura capaz de mediar tal intercmbio. Para prover a integrao de diversos bancos de dados heterogneos, so utilizados os Sistemas Gerenciados de Bancos de Dados Distribudos Heterogneos, que controlam e possibilitam as aplicaes acesso de maneira transparente aos dados distribudos entre as bases heterogneas. Com a especificao do padro XML, o mesmo passou a ser utilizado para intercmbio de dados, uma vez que capaz de agregar a seu contedo informaes que o descrevem(metadados), possibilitando assim a representao de dados que no poderiam ser representadas atravs do modelo relacional utilizado pela maioria dos SGBDs. Com o padro XML possvel ento a criao de vises materializadas dos dados armazenados em um SGBD local e utilizar esta viso para os mais variados fins. O presente trabalho apresenta uma proposta de um sistema capaz de prover o acesso - de maneira integrada e transparente para as aplicaes s informaes armazenadas em bases heterogneas e distribudas, utilizando o padro XML para representa-las atravs da criao de vises materializadas dos dados presentes em cada uma das bases a serem integradas, agrupando posteriormente as diversas vises em uma nica viso XML. Tal integrao traz a tona uma srie de questes a serem tratadas, como a integridade dos dados que antes era controlada por cada um dos SGBDs e que agora precisa ser observada na viso integrada para garantir que os dados nela presentes possuam a mesma integridade, possibilitando assim que haja um serializao dos dados entre a viso e as bases distribudas sem que ocorram problemas de integridade. Palavras Chaves : Integrao de Banco de Dados Distribudos Heterogneos, XML.
ABSTRACT
With the objective of organize and to structuralize the storage of information necessary to the organizations, databases are used in order to provide agile, efficient secure access to these information for the applications. The data stored in a database are structuralized and organized in accordance with a project defined in each organization, thus, when two or more of those needs to integrate or exchange informations stored in its respective databases, some problems appear due the heterogenity of projects or hardware/software plataform, needing a structure capable to mediate such interchange. To provide the integration between heterogeneous databases, Distributed Heterogeneous Databases Management Systems are used, they control and make possible the applications access in transparent way to the data distributed between the heterogeneous bases. With the specification of the XML standard, it passed to be used for interchange of data, a time that its capable to add to its content informations that describe it (metadata), making possible the representation of data that could not be represented through the relational model actually used by the majority of the databases. With the XML standard, its possible create materialized views of the data stored in a local Database Managment System and use this data for the most varied ends. This work presents a proposal of a system capable to provide the access in a way integrated and transparent for the applications - to the information stored in heterogeneous and distributed databases, using XML standard for represent the data through the creation of materialized views of the data stored in each one of the bases to be integrated, grouping later the diverse views in an integrated XML view. Such integration brings a lot of questions to be considered, like the integrity of data that before was controlled by every database and that now this integrity needs to be observed in the integrated view to guarantee that those data will preserve the same integrity, making possible a serialization between the view and the distributed databases without occur integrity problems. Keywords: Distributed Heterogeneous Databases Systems Integration, XML.
xi
Tabela 1 : SGBDD: fatores complicadores. ...........................................................................................10 Tabela 2 : Caractersticas dos SGBDH. ................................................................................................23 Tabela 3 : Exemplos de predicados da linguagem XPath. ......................................................................41 Tabela 4 : Comparativo entre as seis principais linguagens para esquema. .............................................51 Tabela 5 : Comparativo entre linguagens de consulta para XML............................................................59 Tabela 6 : Exemplo de relao r1. .........................................................................................................66 Tabela 7 : Exemplo de relao r2. .........................................................................................................66 Tabela 8 : Comparativo entre abordagens de vises sobre dados semi-estruturados ................................78 Tabela 9 : Exemplo de tabela de pacientes base01. ................................................................................82 Tabela 10 : Exemplo de tabela de internao base01..............................................................................82
xii
xiii
Lista de Siglas
API APIX BNF CORBA DCD DOM DTD HTML JDBC LORE LOREL OMG OQL QBE SAX SBDD SGBD SGBDD SGBDH SGML SMBD SOX SQL URI URL W3C XDR XML XML-GL XML-QL XSL XSLT Application Programming Interface Aggregate Path IndeX Backus-Naur Form
1.Introduo
O crescimento da Internet, em especial da World Wide Web trouxe grandes benefcios as organizaes que a utilizam como meio de acesso as informaes. Os diversos e variados sistemas de informaes existentes esto gradualmente sendo integrados com servidores Web para transformarem consultas realizadas por usurios em resultados a serem exibidos em browsers de Internet. No entanto, tanto as pessoas, como as organizaes que geram informaes para a rede utilizam diferentes maneiras de estrutur-las. Assim, quando necessrio alguma transferncia de informaes entre elas, a falta de uma estrutura padronizada pode causar problemas de incompatibilidade entre o sistema transmissor e o sistema receptor. Um Sistema Gerenciador de Banco de Dados (SGBD) capaz de resolver os problemas de gerenciamento e acesso a grandes volumes de dados em uma nica plataforma, mas muitos problemas surgem quando duas ou plataformas precisam trabalhar de maneira integrada. A maioria destes problemas so conseqncias da heterogeneidade semntica - dados duplicados entre estas plataformas representados de maneira diferente nos esquemas das bases de dados [Hull, 1997]. Um dos principais requisitos para a integrao de sistemas de informaes a existncia de um mecanismo que possa mediar e compatibilizar a troca de informaes entre sistemas que utilizam diferentes formas de representaes. As novas tecnologias associadas a linguagem Extensible Markup Language (XML) possibilitam o desenvolvimento de estruturas de mediao que atendem a este requisito. Integrar diversas fontes heterogneas de dados um desafio que a anos vem fomentando pesquisas e surgimento de novos padres a fim de tornar transparente o acesso a estas fontes para os usurios e desenvolvedores de aplicaes. A idia central deste trabalho consiste na especificao e implementao de um sistema capaz de integrar dados de diversas fontes relacionais (bancos de dados heterogneos distribudos) atravs da utilizao de vises materializadas dos dados, vises estas que utilizaro o padro XML para organizar e armazenar os dados, e para as quais ser tambm proposto um meio para definio de integridade referencial para os
dados nelas presentes, a fim de possibilitar que estes dados quando alterados na viso materializada possam ser sincronizados com as bases de origem sem causar violaes de integridade. O sistema proposto no se preocupa com as questes e problemas referentes ao processo de atualizao dos dados nas bases distribudas, apenas prope a manuteno da integridade referencial dos dados exportados para evitar problemas se os mesmos forem sincronizados para as bases de origem, as demais questes referentes ao processo de sincronizao de vises materializadas e bases distribudas esto fora do escopo deste trabalho.
1.1. Motivao
Diante do contexto atual no qual as pesquisas envolvendo bancos de dados e XML esto se desenvolvendo clara a necessidade de trabalhos voltados para a questo da integrao de dados armazenados em bases relacionais e dados armazenados na Web, pois segundo [Abiteboul et al., 2000], atravs da convergncia das solues apontadas pelas tecnologias XML/dados semi-estruturados e documentos Web/banco de dados, que se acredita que uma tecnologia combinada para a Web ir emergir. J existem muitas pesquisas sendo desenvolvidas no intuito de solucionar os problemas da heterogeneidade1 dos sistemas de armazenamento de dados e este trabalho ter tambm como foco a anlise de solues j propostas confrontando-as com a realidade atual. A motivao para este trabalho a crescente necessidade de um modelo baseado em uma camada de mediao capaz recuperar informaes de bases relacionais heterogneas2 mantendo as regras de integridade na camada de mediao a fim de que os dados que estiverem materializados nesta camada possam ser sincronizados de volta a suas respectivas bases em situaes que envolvam alteraes de dados. A troca de informaes dentro do modelo ser realizada atravs de XML, e o modelo proposto conforme a Figura 22 composto de vrios mdulos que sero detalhados na seo 4.4.
1.2. Objetivos
1 2
Seja ela de hardware, sofware ou conceitual. SGBDs de diferentes fabricantes e/ou com heterogeneidade semntica em suas definies de dados.
O trabalho proposto ter os seguintes objetivos: Especificar um sistema de consulta de informaes armazenadas em
bases relacionais distribudas heterogneas atravs da criao de vises XML; Especificar um mecanismo capaz de manter/preservar a integridade dos dados exportados em casos de atualizaes dos mesmos a fim de que estas atualizaes possam ser propagadas para as bases relacionais. Pesquisar como as tecnologias XML e Java podem auxiliar na integrao de fontes heterogneas de dados; Implementar um prottipo do modelo proposto.
1.3. Metodologia
Para a realizao deste trabalho, foram pesquisadas diversas bibliografias, tais como: livros, dissertaes, teses, artigos, relatrios tcnicos, documentos oficiais de congressos, Workshops e sites da Internet. Para implementao de um prottipo do sistema tambm foi necessrio um breve estudo sobre ferramentas de programao, APIs para manipulao de dados em documentos XML j existentes desenvolvidas por outros pesquisadores e/ou empresas atuantes no ramo.
O texto deste trabalho est organizado conforme o indicado a seguir. O captulo 2 faz uma reviso do principais aspectos relacionados a bancos de dados distribudos, tais como definio, arquitetura, terminologia, problemtica, possibilidades para a distribuio dos dados. descrita tambm, a definio de sistemas distribudos heterogneos, mostrando suas arquiteturas e terminologia bem como as principais formas de integrao de bancos de dados individuais j existentes e autnomos, atravs de modelos que especificam ou no um esquema conceitual global. Detalha tambm, o processo de integrao e traduo de esquemas, destacando vantagens e desvantagens dos diferentes modelos apresentados. O captulo 3 apresenta o padro XML, suas caractersticas principais, e os outros subpadres a ele correlacionados, tais como as diversas linguagens para definio de esquemas (gramtica) para documentos XML com comparativos entre as mesmas, estrutura lgica dos documentos e as principais linguagens para consulta a dados XML existentes com um comparativo entre as suas funcionalidades. E por ltimo tambm aborda questes referentes a restries de integridade em documentos XML. O captulo 4 trata basicamente da integrao de fontes de dados heterogneas atravs da utilizao do padro XML, demonstrando como se pode representar dados de bases relacionais atravs de XML, a utilizao de vises XML em arquiteturas de integrao, caractersticas, vantagens e problemas que podem surgir mediante o emprego das mesmas para integrar fontes de dados, e por ltimo so demonstrados algumas abordagens j existentes para integrao de fontes de dados heterogneas. O captulo 5 mostra a proposta de um novo modelo para integrar fontes de dados relacionais e heterogneas utilizando o padro XML, levando em conta a problemtica da manuteno das regras de integridade da viso integrada dos dados de maneira a garantir que os dados possam ser sincronizados com as bases distribudas sem enfrentar problemas com violaes de integridade. O captulo 6 apresenta uma anlise e interpretao dos resultado obtidos com este estudo e com a proposta de um modelo para integrao de dados, vantagens, desvantagens, problemas e dificuldades encontradas. E por fim, no captulo 7 esto a concluso final sobre o trabalho e propostas de continuidade para o mesmo.
Rede de Comunicao
Site 3
Site n
Cada n de um banco de dados distribudo capaz de processar transaes locais, as quais acessam apenas dados daquele nico n, ou pode participar na execuo de
transaes globais, que fazem acesso a dados em diversos ns [Manica, 2001]. A execuo de transaes globais requer comunicaes entre os ns o que implica na existncia de uma infra-estrutura de rede para prover tal comunicao. Se o projeto de um sistema distribudo executado top-down, isto , sem um sistema j existente, conveniente desenvolver um sistema homogneo. Todavia, em alguns casos onde a criao do banco de dados distribudo for feita pela integrao de vrios bancos de dados j existentes (chamamos bottom-up), ser necessrio um SGBDD heterogneo, capaz de fornecer interoperabilidade entre os bancos de dados locais. Existem diversas razes para construir um banco de dados distribudo, como o partilhamento de dados, confiabilidade, disponibilidade e acelerao de processamento de consultas. Entretanto, juntamente com essas vantagens h diversas desvantagens, como o custo de desenvolvimento de software, maior potencial para existncia de erros e crescente sobrecarga de processamento. A principal vantagem de sistemas de bancos de dados distribudos a capacidade de dividir e fazer acesso a dados de uma maneira confivel e eficiente. Pois, se uma srie de ns diferentes esto conectados, ento um usurio em um n pode ser capaz de fazer acesso a dados disponveis em um outro n. Cada n capaz de reter um grau de controle sobre dados armazenados localmente. Em caso de uma falha em um dos ns do sistema distribudo, os ns remanescentes podem ser capazes de continuar operando, aumentando a confiabilidade e disponibilidade. Alm disso, quando uma consulta envolve dados em diversos ns, possvel dividi-la em subconsultas que podem ser executadas em paralelo, acelerando seu processamento.
de definies de trabalho e como critrios de um banco de dados distribudo. As 12 regras de Date so: 1. Autonomia local : cada n participante de um sistema distribudo deve ser independente dos outros ns; 2. No dependncia de um n central: um sistema de banco de dados distribudo no deve depender de um n central; 3. Operao contnua: um sistema de banco de dados distribudo nunca deve precisar ser desativado; 4. Transparncia e independncia de localidade: os usurios do sistema no devem saber o local (n) onde esto localizados os dados; 5. Independncia de fragmentao: as tabelas que fazem parte de um sistema de banco de dados distribudo podem estar divididas em fragmentos localizados fisicamente em diferentes ns; 6. Independncia de replicao: dados podem estar replicados em vrios ns da rede, de forma transparente; 7. Processamento de consultas distribudo: o desempenho de uma consulta deve ser independente do local onde a mesma executada; 8. Gerenciamento de transaes distribudas: um SGBDD deve suportar transaes atmicas. As propriedades ACID (Atomicidade, Consistncia, Independncia e Durabilidade) das transaes devem ser suportadas; 9. Independncia de hardware: um SGBDD deve poder operar e acessar dados em uma variedade de plataformas de hardware; 10. Independncia de sistema operacional: um SGBDD deve poder executar em sistemas operacionais diferentes; 11. Independncia de rede: um SGBDD deve ser projetado para executar independente do protocolo de comunicao; 12. Independncia de SGBD: um SGBDD ideal deve possuir capacidades para se comunicar com outros sistemas de banco de dados executando em ns
10
11
EE1
EE2
...
EEn
ECG
E C L1
E C L2
...
E C Ln
E IL1
E IL2
... ...
E ILn
O esquema interno local (EIL) refere-se aos aspectos relacionados ao armazenamento fsico dos dados do site. O esquema conceitual local (ECL) refere-se estrutura lgica (informaes) do banco de dados. O esquema conceitual global (ECG) formado pela unio dos esquemas conceituais locais, permitindo uma viso global dos dados. Finalmente o nvel mais externo, os esquemas externos (EE) so as vises definidas aos usurios globais. Esta arquitetura denominada ponto-a-ponto (peer-to-peer) devido ao fato de que cada site possui o SGBD completo, diferente da arquitetura cliente servidor que concentra o gerenciamento dos dados em servidores, enquanto nos clientes ficam as interfaces e aplicaes. Quando o projeto do banco de dados distribudo realizado a partir de base de dados j existentes o chamamos de bottom-up. Deste modo, surge uma nova arquitetura data-lgica de multi-SGBD. A Figura 3 mostra a Arquitetura data-lgica de multi-SGBD. A maior diferena entre esta arquitetura e a data-lgica forma do mapeamento entre esquemas.
12
EE1 EE2
...
EEn
ECG
EEL1
...
ECL3 EEL2
... ...
EIL1
13
O SGBDH responsvel pelo mapeamento de dados e operaes entre o banco de dados virtual (esquema conceitual global) e o banco de dados local (esquema conceitual local), por resolver diferenas entre modelos, esquemas e sistemas, e por gerenciar as transaes distribudas e o controle de concorrncia [zsu e Valduriez, 1999].
15
Na maioria das vezes, os sistemas legados foram desenvolvidos em linguagens procedurais, no implementam abstrao de dados e no possuem documentao, exceto o cdigo fonte. Tudo isso dificulta a adio de novas funcionalidades e a realizao de manuteno no sistema. Em [Brodie e Stonebraker, 1995] define-se Sistemas Legados como aqueles sistemas que contm dados valiosos, mas que carecem de poder ou agilidade para satisfazer as necessidades atuais da organizao. A necessidade de sobrevivncia dos sistemas legados, em sua grande maioria, faz com que vrias alternativas tenham sido propostas para resolver, ou pelo menos minimizar esse problema.
16
utilizados para integrar bancos de dados: arquiteturas que especificam um esquema conceitual global e arquiteturas que no especificam um esquema conceitual global.
17
EEG1 EEG2 EEGn
EEG = esquema externo global ECG = esquema conceitual global EEL = esquema externo local ECL = esquema conceitual local BD = banco de dados
ECG
EELn1
...
ECLn EELn2
... ...
EILn
BDn
18
Integrador
Esquema Intermedirio 1
Esquema Intermedirio 2
...
Esquema Intermedirio n
Tradutor 1
Tradutor 2
...
Tradutor n
BD1
BD2
...
BDn
A integrao de esquemas envolvem duas tarefas [Yan et. al., 1997]: homogeneizao e integrao. Na homogeneizao, so tratados os problemas de heterogeneidade semntica e estrutural. Problemas semnticos referem-se ao significado, interpretao e como os dados so usados. O problema mais importante de heterogeneidade semntica o de conflito de nomes: sinnimos (duas entidades com nomes diferentes, mas com o mesmo significado) e homnimos (duas entidades com o mesmo nome e com significados diferentes). Existem vrios mtodos alternativos para lidar com conflitos de nomes. Alguns dos problemas de heterogeneidade semntica e estrutural tratados na homogeneizao no so possveis de serem implementados. Isso faz com que seja essencial a interveno humana na soluo destes. Aps a homogeneizao dos esquemas feita a integrao. Os esquemas dos mltiplos bancos de dados (agora esquemas intermedirios) so combinados em um nico esquema conceitual global e reestruturados da melhor forma possvel.
19
Muitas vezes, a heterogeneidade entre os esquemas a serem integrados muito grande, tornando invivel o investimento no desenvolvimento do esquema global, principalmente quando o nmero de pesquisas globais so relativamente baixas. As principais desvantagens deste modelo so a difcil automao, necessidade de interveno humana para a soluo de conflitos semnticos e/ou estruturais, e a no adaptabilidade do sistema que faz com que toda vez que ocorram mudanas nos esquemas locais a integrao deva ser refeita.
2.7.3. Mediadores
Mediador um componente de software que explora conhecimento codificado sobre conjuntos ou subconjuntos de dados para criar informao til para uma camada de aplicaes [Wiederhold, 1992]. Uma aplicao que requer dados de fontes heterogneas necessita de uma camada intermediria de software que faa a mediao entre ela e as fontes de dados, esta camada de mediao ter tarefas como abstrao, combinao e explicao dos dados. Os mediadores tem como principal funcionalidade a disponibilizao de dados para aplicaes, agindo como uma interface inteligente para lidar com problemas de representao e abstrao presentes nas diferentes fontes de dados, eles apresentam regras ativas e contm estruturas de conhecimento que guiam as transformaes de dados, podendo inclusive manter resultados intermedirios que podem ser consultados. As principais funcionalidade de um mediador so: Transformaes e gerao de dados de bases de dados atravs da utilizao de vises e templates de objetos reorganizando os dados de maneira apropriada para serem acessados pelas aplicaes; Disponibilizao de informaes textuais como aplicao de padres para texto visando um melhor entendimento de suas informaes. Esta funcionalidade muito importante na organizao de fontes de dados semiestruturados, como os dados presentes na Web; Armazenamento de dados derivados afim de melhorar a eficincia reduzindo o acesso as fontes e mantendo conhecimento processado para uso posterior. Para
20
a implementar esta funcionalidade preciso manter o controle de integridade dos dados. A presena de mediadores pressupe a existncia de uma arquitetura bsica em trs camadas, conforme a Figura 7.
Aplicao Aplicao Aplicao
Camada Mediadora
SGBD
SGBD
SGBD
SGBD
A camada superior composta pelas aplicaes independentes, a camada intermediria formada por mltiplos mediadores, gerenciados por especialistas em domnios do conhecimento, sendo que o nmero de mediadores depende da heterogeneidade dos dados necessrios a aplicao, e a camada inferior composta de vrias fontes de dados gerenciadas por administradores de dados. A interface aplicao-mediador deve ser uma linguagem declarativa e extensvel que permita a incorporao de novas funes de modo a prover a flexibilidade e a interao com novos mediadores. A interface mediador-fonte deve ser uma linguagem de acesso a dados. Alguns aspectos devem ser levados em conta no projeto de uma arquitetura que envolva o uso de mediadores: A manuteno do mediador deve ser feita por um pequeno grupo de especialistas, responsveis pela manuteno das suas regras de transformao; Os dados mantidos por um mediador podem servir de entrada para outros mediadores ou serem consultados por usurios ou aplicaes finais;
21
Mediadores podem ser especializados para prover melhor extensibilidade, facilitar a manuteno e oferecer mais opes as aplicaes, assim, a
camada intermediria pode ser formada por uma hierarquia de especializaes de mediadores com relacionamentos de associao para troca de informaes; Eventos (Triggers)3 podem ser disparados dos sistemas gerenciadores das fontes de dados para os mediadores relacionados de modo a manter a integridade dos dados na ocorrncia de alteraes nos mesmos ou na sua estrutura; Linguagens de acesso a mediadores so objetos de pesquisas, devendo incluir capacidades funcionais da linguagem SQL, iterao, teste e ranqueamento.
2.7.4. Wrappers
Um wrapper ou tradutor, um componente de software que converte dados e consultas (query) de um modelo para outro [Papakonstantinou et al., 1995]. Neste caso, uma aplicao (que pode ser um mediador), solicita ao wrapper consultas em uma linguagem de consulta comum (SQL, OQL, XML-QL), e o mesmo converte esta consulta para uma linguagem de consulta suportada pelo banco de dados ao qual est ligado, depois recebe o resultado desta consulta e o converte para um formato suportado pela aplicao ou mediador. A Figura 8 detalha uma arquitetura baseada em mediadores com a utilizao wrappers.
Triggers so instrues de processamento armazenadas no prprio SGBD que so executadas automaticamente mediante condies especficas.
22
Aplicao Aplicao
...
Aplicao
Camada Mediadora
Wrapper
Wrapper
Wrapper
...
Wrapper
SGBD
SGBD
SGBD
...
SGBD
Podemos definir como funo bsica de um wrapper o trabalho de exportar para cada fonte de dados, informaes sobre o esquema de dados e dados, alm de traduzir as consultas de uma linguagem para outra.
Tipo de Acoplamento
Forte Forte
Modelo de Dados
Orientado a objetos Orientado a objetos
Jupter
HEROS
Forte
Orientado a
OQL
23
objetos
(da OMG)
DDTS
Fraco
Orientado a objetos
GORDAS
Pegasus
Fraco
concorrncia global um mtodo baseado no Mtodo de Tquete Implcito estendido para possibilitar a garantia de serialibilidade das transaes globais. DDTS ainda possui vrios problemas a serem solucionados, como otimizao de consultas, controle da concorrncia, regras de integridade, etc. Trata conflitos e otimizao de consultas. Utiliza metaclasse, novas idias para gerenciamento de transaes para resolver conflitos.
Vodak
Fraco
24
um intermedirio entre o esquema local do site (acessado pela linguagem do BDs locais) e um esquema intermedirio local (acessado em Daplex). O gerenciamento de consultas executado da seguinte maneira. Quando uma consulta global executada, o GDG decompe a consulta em vrias subconsultas Daplex sobre os esquemas locais e o banco de dados auxiliar. O esquema auxiliar descreve dados necessrios para o mapeamento entre os esquemas. Tambm de responsabilidade do GDG montar os resultados parciais e retorn-los ao usurio. O IDL (interface de banco de dados local) responsvel por aspectos relacionados especificamente aos bancos de dados locais. Ele traduz as consultas escritas nas linguagens dos BDs locais para Daplex e vice-versa.
Consulta Resultado
Interface de BD Local 1
BD Auxiliar
...
Interface de BD Local n
SGBD1
Esquema Local 1
...
SGBDn
Esquema Local n
O GDG composto por cinco mdulos : transformador, otimizador global, decompositor e monitor enquanto o IDL composto por trs: interface de rede, otimizador local, e tradutor. O transformador pega a consulta global em Daplex como entrada e produz como sada uma consulta global Daplex que referencia o esquema local. O otimizador global utiliza a sada do transformador para gerar um plano de consulta atravs do algoritmo de otimizao SDD-14.
SDD-1 (System for Distributed Databases), um prottipo de um sistema de banco de dados distribudo desenvolvido pela Computer Corporation of America. No SDD-1, parties de dados distribudos atravs
25
O decompositor decompe a consulta em subconsultas e o filtro elimina de cada subconsulta aquelas operaes que no so suportadas pelo SGBD correspondente. Estas operaes removidas sero executadas parte. O monitor controla a execuo da consulta. A interface de rede em cada site o mdulo responsvel por transmitir as consultas e seus resultados. O tradutor finalmente traduz a consulta para a linguagem do banco de dados local. O multidatabase tem como restrio o fato de no fazer um controle ideal da consistncia dos bancos de dados. Porm, vrias solues esto sendo propostas para lidar com inconsistncias. A mais utilizada agregar funes prprias para controle da inconsistncia de dados.
de uma rede so replicados em mltiplos sites. O controle de concorrncia do SDD-1 garante a consistncia das bases em um ambiente de distribuio.
26
System Services Transaction Services Application Services Query Services Metadata Services Object Manag. Services Data Movement Services Negotiation Services
A arquitetura de esquemas possui quatro nveis: esquema local, esquema de participao, esquema de exportao e esquema federado. Os componentes da arquitetura do Jupter so: system services, application services, dictionary (metadata), query services, transaction services, data movement services, object services e negotiation services.
27
alteraes na estrutura base do HEROS. Para integrar um novo componente, cujas caractersticas de modelo de dados ou sistema de gerncia ainda no existam na federao, basta defini-lo atravs da criao de classes que descrevam suas caractersticas, juntamente com suas respectivas regras de mapeamento, deixando, ento, que o prprio HEROS faa a traduo de esquemas automaticamente [Castro, 1998]. A arquitetura de esquemas do HEROS dividia em quatro nveis conforme demonstrado na Figura 11: esquema local (EL), esquema de exportao (EExp), esquema global (EG) e esquema externo (EE). O esquema local o prprio esquema do SGBD componente, expresso no seu prprio modelo de dados. Esquema de exportao o esquema local do SGBD componente expresso no modelo de dados do HEROS. Esquema global obtido pela integrao de todos os esquemas de exportao e esquema externo representa uma viso global do esquema integrado do HEROS.
EE1 EE2
...
EEn
EG
EExp1
EExp2
...
EExpn
EIL1
DB
EIL2
DB
... ...
EILn
DB
Conforme mencionado, o HEROS usa um modelo de dados orientado a objetos, o que permite que tudo seja modelado atravs da representao de objetos, desde a metainformao at as instncias dos bancos de dados. Os elementos do modelo de dados HEROS so representados na Figura 11.
28
O controle de concorrncia em um SGBDH deve ser efetivado tanto no nvel global quanto no nvel local. Para o controle de concorrncia local no HEROS, tendo em vista que a autonomia dos SGBDs componentes impede a interferncia do gerente global no controle de transaes, foram restringidos os tipos de SGBDs que podem participar, atravs de requisitos que devem ser atendidos pelos protocolos empregados no controle da concorrncia. Cada SGBD componente deve efetuar o controle da concorrncia com o uso do protocolo 2PL5 estrito [Bernstein et al., 1987]. Para o controle de concorrncia global, o HEROS apresenta um mtodo baseado no Mtodo de Tquete Implcito ITM [Georgakopoulos et al.,1994], estendido para possibilitar a garantia de serialibilidade das transaes globais mesmo no caso de ocorrncia de falhas acrescentando ao mecanismo original um mecanismo para controle de acessos baseado tambm no protocolo 2PL.
2PL (Two-Phase Locking) Algoritmo de controle de bloqueios em SGBDs baseado em duas fases.
29
Seus componentes conforme a Figura 12 so divididos entre Aps e DPs. Processadores de aplicao (Ap) incluem quatro mdulos: interface, tradutor e controlador de integridade, planejador de acesso e monitor de execuo distribuda. Processadores de dados (DP) incluem dois mdulos: o monitor de execuo local e o mdulo de operao local. A interface prov a interao do usurio com DDTS. Este componente fornece funes para armazenamento, edio e execuo de aplicaes. O tradutor traduz uma consulta na linguagem GORDAS para lgebra relacional. Informaes para mapeamento so armazenadas no esquemas de representao, conforme ilustra a Figura 12.
U surio Produo da C onsulta GOR DAS interface
Planejador de acesso
Esquem a de Re pre se nta o
DP DP
Mdulo de execuo local
Esque ma Local
Esque ma Local
S GBD Local
O planejador de acesso prope uma estratgia para um processamento eficiente das aplicaes distribudas. O algoritmo de otimizao implementado no DDTS determina o custo mnimo de transmisso selecionando cpias que esto mais prximas do site de origem da aplicao. Deste modo a estratgia de custo mnimo determinada. O monitor de execuo distribuda (DEM) e o monitor de execuo local (LEM) cooperam na execuo de transaes. O DEM cria um conjunto de processos LEM. Cada processo DEM retido at que a transao confirmada (commit) ou abortada
30
(abort). Os algoritmos utilizados so os 2PC (2-phase-commitment) e 2PL (2phase-locking). Finalmente, o mdulo de operao local traduz e otimiza as subtransaes.
31
Em 1996, especialistas em SGML7, a principal linguagem de marcao da qual surgiu a HTML, sob a chefia de Jon Bosak, da Sun Microsystems, se uniram para definio de um novo padro de marcao que pudesse ser utilizado na Internet,
O W3C que um grupo que especifica padres para as tecnologias relacionadas a Web (World Wide Web Consortium - http://www.w3.org).
7 6
A sigla SGML um padro ISO (ISO 8879). Esse padro especifica as regras para a criao de linguagens de marcao indepente da plataforma.
32
constituindo-se em uma verso simplificada da SGML, cujo objetivo principal era fornecer aos desenvolvedores da Web maneiras de definir e criar seus prprios marcadores e atributos quando necessrio, em vez de estarem restritos ao esquema de marcao da HTML. No final de 1996, o comit de trabalho anunciou a primeira verso da XML em uma conferncia da SGML, realizada em Boston, nos Estados Unidos. Novos recursos foram consolidados no primeiro semestre de 1997. A meta principal do comit foi desenvolver uma linguagem de marcao que tivesse a capacidade e a generalidade da SGML, e fosse fcil de ser implementada na Web. Resumidamente, as caractersticas desejadas inicialmente para a XML se referiam a trs partes: a definio da linguagem em si (XML-LANG); a definio da ligao entre os documentos (XML-LINK); a forma de apresentao dos documentos (XS8). As regras bsicas para a criao dessa linguagem de marcao, isto , as principais caractersticas desejveis para implementao na Web eram as seguintes: Criar uma linguagem simples, que possibilite a rpida construo de documentos para utilizao na Web; Fornecer suporte criao de aplicaes compatveis com a abordagem da HTML; Possibilitar o desenvolvimento de uma grande variedade de aplicativos, aproveitando-se de seus recursos; Fornecer um mecanismo de apresentao genrico e poderoso, permitindo ao desenvolvedor criar a forma de apresentao que mais se adapte s suas necessidades; Fornecer suporte para a criao de marcadores personalizados, definidos pelo desenvolvedor do documento Web;
33
Permitir a criao de documentos que pudessem ser validados, isto , que existisse uma forma de verificar a estrutura do documento, verificando se
seus elementos eram vlidos, da mesma forma que ocorria com a SGML; Fornecer suporte para criao de hiperlinks que fossem compatveis com a especificao de endereos URL, de modo a criar ligaes entre documentos; Fornecer um mecanismo de folha de estilo genrico e poderoso, que possibilitasse no apenas a formatao do documento, como tambm sua manipulao. Uma vez contempladas essas caractersticas, a XML passa a fornecer um meio completo para a elaborao e distribuio de documentos por toda a Web, sendo independente de plataformas e de sistemas. O objetivo era transformar o conceito da HTML, fornecendo a XML recursos adicionais para a criao e distribuio de documentos.
34
Estrutura: a organizao dos elementos dentro do documento, que pode possuir diversos tipos de formato, como um memorando, um contrato,
uma receita, um oramento, enfim, de acordo com as necessidades da marcao da informao; Apresentao: a forma como as informaes so apresentadas ao leitor do documento, isto , como apresentar o contedo de um documento XML, pois um mesmo documento pode ser visualizado de forma diferentes. A idia central da XML que muitos benefcios podem ser alcanados quando estes trs elementos podem ser mantidos e manipulados de forma separada.
Segundo [Abiteboul et al., 2000], a XML difere da HTML em trs aspectos: Novas tags podem ser definidas; As estruturas podem ser aninhadas e agrupadas sem limite de profundidade; Um documento XML pode conter uma descrio opcional da sua gramtica.
35
Documentos XML so ditos como bem formados quando no possuem restries quanto a marcas, nomes de atributos ou outros padres, ou seja, quando um documento XML satisfaz uma gramtica baseada na qual ele foi especificado ele considerado vlido. A XML permite a definio de novas tags para representar a estrutura dos dados, porm, ao contrrio da HTML, no traz nenhuma descrio de como os dados devem ser apresentados. Estas informaes sobre a apresentao dos dados deve ser includas em separado a uma folha de estilos (Stylesheet). As folhas de estilos em uma especificao denominada XML Stylesheet Language (XSL) so usadas para converter os dados XML para HTML, podendo assim o seu resultado ser mostrado em um navegador padro [Abiteboul et al., 2000].
3.4.1. Elementos
XML uma representao textual de dados. Um elemento formando por uma tag inicial, uma tag final e os dados compreendidos entre elas. No exemplo da Listagem 1, os dados compreendidos entre as tags <pessoa> e </pessoa> compe o elemento pessoa. O termo subelemento tambm utilizado para representar relaes entre um elemento e os elementos que o compe, assim, podemos dizer que o elemento e-mail (que composto pelos dados presentes entre as tags <e-mail> e </e-mail>) um subelemento do elemento pessoa. Na representao de dados XML usam-se elementos repetidos com as mesmas tags para representar colees. O documento XML da Listagem 3 contem um exemplo no qual vrias tags <pessoa> aparecem uma aps a outra representando assim, dados de uma coleo de pessoas.
<tabela> <descricao> Artistas Famosos </descricao> <pessoas> <pessoa>
36
<nome> Raul Seixas </nome> <idade> 46 </idade> <e-mail> raul@seixas.com.br </e-mail> </pessoa> <pessoa> <nome> Kurt Kobain </nome> <idade> 28 </idade> <e-mail> kurt@kobain.com </e-mail> </pessoa> </pessoas> </tabela> Listagem 3 : Exemplo de documento XML representando uma coleo de pessoas.
A XML permite utilizao de abreviao na representao de elementos vazios como por exemplo o elemento banda no exemplo da Listagem 4, pode ser representado apenas pela tag <banda/> conforme o descrito na Listagem 5.
<pessoa> <nome> Jimi Hendrix </nome> <idade> 42 </idade> <e-mail> jimi@hendrix.com </e-mail> <banda> </banda> </pessoa> Listagem 4 : Documento XML sem abreviao de tags. <pessoa> <nome> Jimi Hendrix </nome> <idade> 42 </idade> <e-mail> jimi@hendrix.com </e-mail> <banda/> </pessoa> Listagem 5 : Documento XML com abreviao de tags.
3.4.2. Atributos
A XML permite a associao de atributos aos elementos. Os atributos so declarados dentro da tag inicial do elemento e so definidos pelo par nome=valor. Segundo [Bradley, 1998], os atributos servem para representar informaes mais refinadas sobre um elemento. No exemplo da Listagem 6, os atributos so usados para informar o idioma, o ISBN do livro e a moeda corrente.
<produto> <livro idioma="Ingles" isbn="0-200-987508"> <titulo> The XML Companion </titulo> <preco moeda="Real"> 75.00 </preco> </livro> </produto>
Assim como tags os usurios podem definir novos atributos, sendo que o valor dos atributos deve ser sempre uma cadeia de caracteres (string) e deve ser representada entre aspas (). Existem diferenas entre os atributos e as tags. Um atributo pode ocorrer uma vez apenas juntamente com a tag, ao passo que subelementos com a mesma tag podem ser repetidos. O valor do atributo sempre uma string, enquanto que os dados compreendidos entre uma tag inicial e uma tag final podem contr subelementos. No intercmbio de dados, os atributos trazem uma certa ambigidade de quando representar as informaes como atributos ou elementos [Abiteboul et al., 2000]. Por exemplo, podemos representar as mesmas informaes sobre uma pessoa como na Listagem 7, ou como na Listagem 8, ou ainda como na Listagem 9:
<pessoa> <nome>Jimi Hendrix</nome> <idade>42</idade> <e-mail>jimi@hendrix.com</e-mail> </pessoa> Listagem 7 : Ambigidade na representao Elementos X Atributos - 1. <pessoa nome="Jimi Hendrix" idade="42" e-mail="jimi@hendrix.com"/> Listagem 8 : Ambigidade na representao Elementos X Atributos - 2. <pessoa idade="42"> <nome> Jimi Hendrix </nome> <e-mail> jimi@hendrix.com </e-mail> </pessoa> Listagem 9 : Ambigidade na representao Elementos X Atributos - 3.
3.4.3.1.
Comentrios
Os comentrios so teis para escrever notas em seus documentos (tanto XML quanto HTML ou em linguagens de programao) para que voc saiba porque utilizou
38
determinado elemento ou quando uma parte das informaes necessitam de atualizao ou maior ateno. Os comentrios em um documento XML so identificados por uma tag especial que aberta pelos caracteres <!-- e fechada pelos caracteres -->. A Listagem 10 mostra a utilizao dos comentrios em um documento XML.
<pessoa> <nome>Jimi Hendrix</nome> <!-- Nome da pessoa --> <idade>42</idade> <!-- Idade da pessoa --> <e-mail>jimi@hendrix.com</e-mail> <!-- E-mail da pessoa --> </pessoa> Listagem 10 : Utilizando comentrios em um documento XML.
3.4.3.2.
Instrues de Processamento
As instrues de processamento so definidas por tags iniciadas por <? e terminadas por ?> e permitem que o documento contenha instrues que sero executadas pelas aplicaes. Alm de declarar a verso da XML, as instrues de processamento tambm so utilizadas para especificar a folha de estilo a ser usada, entre outras coisas. A declarao XML opcional, mas se for includa, deve ser a primeira linha em seu documento conforme o exemplo da Listagem 11.
<?xml version="1.0" ?> <pessoa> <nome>Jimi Hendrix</nome> <idade>42</idade> <e-mail>jimi@hendrix.com</e-mail> </pessoa> Listagem 11 : Instruo de processamento em um documento XML.
Tambm pode ser necessrio utilizar essa instruo de processamento XML inicial para atribuir a codificao de caracteres utilizada no documento, como por exemplo UTF-8 conforme a Listagem 12, ou outra.
<?xml version=1.0 encoding=UTF-8?> <pessoa> <nome>Jimi Hendrix</nome> <idade>42</idade> <e-mail>jimi@hendrix.com</e-mail> </pessoa> Listagem 12 : Declarao do tipo de codificao atravs de uma instruo de processamento.
3.4.3.3.
Sees CDATA
39
Para inserir um contedo em um documento XML e evitar que o analisador (parser) interprete este contedo pode-se para isto criar uma seo CDATA no documento XML. Uma seo CDATA representada por uma tag aberta pelo conjunto de caracteres <![CDATA[ e finalizada por ]]>. Uma caracterstica importante dessa seo, que no possvel aninhar sees CDATA. Alm disso, o incio desta seo s pode aparecer depois do incio do elemento raiz e o final da seo CDATA tambm s pode aparecer antes do final do elemento raiz. A Listagem 13 nos mostra como uma seo CDATA pode ser utilizada em um documento XML.
<?xml version="1.0" encoding=UTF-8?> <pessoa> <![CDATA[Este texto no ser processado por nenhum parser pois o mesmo se encontra dentro de uma seo CDATA ]]> <nome>Jimi Hendrix</nome> <idade>42</idade> <e-mail>jimi@hendrix.com</e-mail> </pessoa> Listagem 13 : Utilizando uma seo CDATA em um documento XML.
40
Documento XML
bibliography
book year
1999
book
publisher
M.Kauffman
author author
Vianu
title
Data on the Web
author
Abiteboul
41
db
biblio book bi1 book
b1
author title
b2
author
a1
Buneman
t1
Data on the Web
a2
Valduriez
3.5.2. Xpath
O XPath um padro para path expressions em XML que utiliza predicados para especificar elementos ou valores de atributos e serve de base para outros padres XML tais como XSL, entre outros. A Tabela 3 mostra alguns exemplos de predicados baseados na rvore de dados XML representados na Figura 14: Predicado / /db Resultado elemento raiz do documento um elemento chamado db abaixo (como subelemento) do elemento raiz db/book db//book @price db/book/@price db/book[@price] db/book[@price=10] //book/para[2] um elemento book imediatamente abaixo do elemento db um elemento book em qualquer profundidade um atributo price um atributo price em um elemento book, em db elementos book com um atributo price elementos book com atributo price igual a 10 o 2 pargrafo do contedo de qualquer elemento book
Tabela 3 : Exemplos de predicados da linguagem XPath.
42
43
Vrios tem sido os esforos no sentido de se criar mecanismos para se representar a estrutura de um documento XML. Na seqncia sero abordadas as principais propostas de linguagens para definio de esquemas para documentos XML.
44
A primeira linha informa que o elemento raiz o <base-de-dados>. As prximas cinco linhas so declaram que o elemento <base-de-dados> deve conter um nmero qualquer de elementos pessoa cada um contendo os subelementos nome, idade e e-mail, sendo que os ltimos contem apenas dados e no contem outros elementos. Assim, pessoa* uma expresso regular, indicando que existiro qualquer nmero de ocorrncias do elemento pessoa. Outras expresses regulares permitidas so e+ (uma ou mais ocorrncias), e? (zero ou uma ocorrncia), entre outras. A DTD uma gramtica para o documento XML. No exemplo de DTD da Listagem 16, podemos notar que o mesmo define que obrigatoriamente os subelementos nome, idade e e-mail devero aparecer nesta ordem no elemento pessoa.
45
complexo (complexType): define a estrutura de um elemento, ou seja, define caractersticas como subelementos, atributos, cardinalidades dos
subelementos e obrigatoriedade dos atributos. Considere novamente o documento XML da Listagem 15, a especificao XML Schema para ela ficaria definido conforme a Listagem 17:
<?xml version="1.0"?> <schema xmlns:xsd="http://www.w3.org/1999/XMLSchema" xmlns:grp="http://meunamespace.com/base-de-dados_pessoas" targetNamespace="http://meunamespace.com/exemplobase-de-dados"> <complexType name="tbase-de-dados"> <element ref="pessoa" minOccurs='1' maxOccurs='*'/> </complexType> <complexType name="tpessoa"> <element name="nome" type="string" minOccurs='1' maxOccurs='1'/> <element name="idade" type="integer" minOccurs='1' maxOccurs='1'/> <element name="e-mail" type="string" minOccurs='1' maxOccurs='1'/> </complexType> <element name="base-de-dados" type="tbase-de-dados"/> <element name="pessoa" type="tpessoa"/> </schema> Listagem 17 : XML Schema para documento da Listagem 15.
O exemplo acima mostra a declarao de um complexType tbase-de-dados e mais adiante uma declarao:
<element name="base-de-dados" type="tbase-de-dados"/>
Esta segunda declarao liga o elemento base-de-dados ao complexType tbase-dedados, indicando que, em uma instncia de um documento XML que segue este esquema, deve-se ter um elemento base-de-dados com o subelementos pessoa, que da mesma forma est ligado ao complexType tpessoa que deve conter os elementos nome, idade e e-mail. As cardinalidades mnima e mxima so indicadas pelos atributos MinOccurs e MaxOccurs, respectivamente. ComplexTypes podem ter atributos, que so declarados atravs da tag <attribute> e devem ser do tipo simpleType. Um atributo pode ser declarado como obrigatrio ou opcional atravs da clusula use. Os valores permitidos para esta clusula so required (obrigatrio), optional (opcional) ou fixed (fixo). No ltimo caso, deve-se dizer o valor default do atributo utilizando a clusula value.
46
Ainda, pode-se restringir o contedo de um elemento atravs do uso de um atributo chamado content, que pode assumir os seguintes valores: textOnly (apenas texto); elementOnly (apenas subelementos); mixed (texto e subelementos); ou empty (contedo vazio). A XML Schema possui um mecanismo de derivao de tipos, permitindo a criao de novos tipos a partir de outros j existentes. Isto pode ser feito de duas maneiras: por restrio ou por extenso. Tipos simples s podem ser derivados por restrio, aplicando-se "facetas" a um tipo bsico ou utilizando uma linguagem de expresses regulares [Mello et al., 2000]. O exemplo abaixo mostra a derivao de um tipo simples chamado inteiroDerivado atravs da aplicao de facetas que restringem o valor mnimo e mximo de um valor inteiro.
<simpleType name="inteiroDerivado" base="integer"> <minInclusive value="1"/> <maxInclusive value="20"/> </simpleType> Listagem 18 : Derivao de tipos com a XML Schema.
Tipos complexos podem ser derivados por restrio ou por extenso. A derivao por restrio permite, por exemplo, restringir a cardinalidade de um subelemento. A derivao por extenso adiciona caractersticas a um tipo, sendo semelhante ao conceito de herana [Fallside, 2000]. O exemplo da Listagem 19 mostra o complexType tpessoacomfiliacao acrescenta os elementos "nome-do-pai" e "nome-da-mae" ao complexType tpessoa, com cardinalidades mnima igual a 1 e mxima igual a 1.
<complexType name="tpessoacomfiliacao" base="tpessoa" derivedBy="extension"> <element name="nome-do-pai" type="string" minOccurs='1' maxOccurs='1'/> <element name="nome-da-mae" type="string" minOccurs='1' maxOccurs='1'/> </complexType> Listagem 19 : Derivao de um complexType em XML Schema.
Grupos especificam restries sobre um conjunto fixo de subelementos, podendo ser de trs tipos: sequence estabelece que todos os elementos pertencentes a ele devem aparecer na ordem em que foram definidos e nenhum pode ser omitido;
47
choice estabelece que apenas um dos elementos pertencentes ao grupo deve aparecer em uma instncia XML;
all estabelece que os elementos podem aparecer em qualquer ordem e podem ser repetidos ou omitidos.
Um exemplo de definio de um grupo do tipo sequence para o complexType tpessoa pode ser visto na Listagem 20.
<group> <sequence> <complexType name="tpessoa"> <element name="nome" type="string" minOccurs='1' maxOccurs='1'/> <element name="idade" type="integer" minOccurs='1' maxOccurs='1'/> <element name="e-mail" type="string" minOccurs='1' maxOccurs='1'/> </complexType> </sequence> </group> Listagem 20 : Definio de grupos com XML Schema.
Uma declarao de atributo, elemento ou grupo pode ser referenciada, permitindo a reutilizao de declaraes, como a declarao:
<element ref="pessoa" minOccurs='1' maxOccurs='1'/>
dentro do complexType tbase-de-dados na Listagem 17. A nica restrio no uso de referncias que o elemento referido seja global, ou seja, tenha sido declarado dentro de <schema>, porm, no dentro de um complexType.
3.7.2.1.
Namespaces
Pelo fato da XML ser extensvel com a possibilidade da criao de qualquer tag, conflitos entre estas tags podem ocorrer. Num mesmo documento podem existir dois elementos com mesmo nome, mas que possuam significados diferentes. Ou ainda, como no existe um rgo global responsvel pela especificao de elementos XML (isto tiraria a flexibilidade da linguagem), um programador pode criar uma tag para armazenar determinada informao e, outro programador pode criar uma outra tag para guardar o mesmo tipo de informao. Por exemplo, um dono de uma vdeo locadora cria a tag GNERO para indicar se o filme de comdia, terror, ao ou drama. J um outro
48
dono de locadora, cria a tag TIPO para o mesmo objetivo. Se as duas empresas forem trocar informaes, ocorrer um conflito ou no entendimento dos dados contidos no documento XML. Para esta problemtica foi criada uma pequena extenso para XML denominada namespaces. Namespaces no limitam a facilidade de extenso da XML, mas insere um mecanismo para gerenci-la. Com os namespaces pode-se misturar elementos descritivos definidos por comunidades independentes, sem medo de cometer discrepncias na nomeao, uma vez que cada segmento de dados est vinculado a um URI (Universal Resource Indicator) que fornece um contexto e uma definio para tal segmento. Um esquema especificado atravs do XML Schema pode ser visto como um conjunto de declaraes de tipos e elementos cujos nomes pertencem a um namespaces [Bray et al., 1999]. Todo esquema definido atravs de XML Schema deve definir um nico namespace, sendo usual o formato de URI para a sua identificao O uso de namespaces aumenta a flexibilidade de XML Schema, permitindo a reutilizao de definies feitas em outros esquemas. A utilizao de um tipo definido em outro esquema possvel atravs da sua declarao e da associao de um prefixo a ele [Mello et al., 2000].
<?xml version=1.0?> <referencias xmlns:mau=http://mauri.org/documents/> <mau:descricao>Artigo sobre P2P</mau:descricao> <mau:autor>Mauri Ferrandin </mau:autor> <mau:data>15/07/2002</mau:data> </referencias> Listagem 21 : Utilizao de namespaces em XML
Na Listagem 21, foram utilizados elementos definidos na URI mauri.org e foi utilizado como namespace o prefixo mau, que, por sua vez, est associado a um URI. Neste URI que esto definidos o que significa cada elemento (autor, data, descricao, etc.). Com o recurso do namespace, permitido que cada autor elabore semnticas adicionais requeridas pelos tipos particulares de recursos ou por uma rea de atuao especfica.
3.7.3. XDR
49
Primeiramente chamada de XML-Data e mais tarde abreviada para XDR (XML-Data Reduced), esta linguagem um esforo da Microsoft e algumas outras empresas e foi usada no Microsoft Bizz Talk Framework. A XDR foi fortemente influenciada por outra proposta desenvolvida em cooperao entre a Microsoft e a IBM denominada DCD (Document Content Description) o que faz com que as duas tenham muitas caractersticas em comum.
3.7.4. SOX
A SOX (Schema for Objetc-Oriented XML) uma linguagem alternativa para definio da estrutura sinttica de um documento XML e parcialmente a sua estrutura semntica. Conforme o prprio nome, ela extenso da DTD incorporando funes de orientao a objetos, permitindo a herana de tipos de dados e de elementos. mantida e desenvolvida pela Commerce One.
3.7.5. Schematron
O Schematron foi criada por Rick Jelliffe, um pouco diferente das demais uma vez que seu foco est na validao de esquemas usando padres ao invs de definir esquemas. Seu esquema simples e pode ser representado em uma simples pgina, alm de permitir a definio de restries poderosas atravs da linguagem XPath.
3.7.6. DSD
A DSD foi desenvolvida pela AT&T Labs em cooperao com a BRICS com o objetivo de ser uma descrio para os elementos e atributos dependendo do contexto, com mecanismos padres de insero bem flexveis e um poder expressivo quando combinada com XSLT. Assim como a Schematron, a DSD fortemente focada na definio de esquemas baseados em restries.
50
Features Esquemas Sintaxe em XML Namespace Incluses Importaes Tipos de Dados Tipos pr-definidos Tipos definidos pelo usurio Restries de domnio Tipos nulos Atributos
DTD 1.0
XDR 1.0
SOX 2.0
Schematron 1.4
DSD 1.0
No No No No
Sim Sim No No
Sim Sim No No
Sim No Sim No
10 No No No
33 No No No
17 Sim Parcial No
0 No Sim No
0 Sim Sim No
Valor default Sim Tipo escolha (choice) No Opcional vs. Obrigatrio Sim Restries de domnio Parcial Definies condicionais No Elementos Valor default No Modelo de contedo Sim Seqncia ordenada Sim Seqncia no ordenada No Escolha Sim Ocorrncias mx. e mn. Parcial Modelo aberto No Definio condicional No Herana Tipos simples por extenso Tipos simples por restrio Tipos complexos por extenso Tipos complexos por restrio Unicidade de chaves No No No No
No No No No
No Sim Sim No
No No No No
No No No No
Unicidade para atributos Sim Unicidade para no atributos No Chave para a atributos No Chave para no atributos No Chave estrangeira para a Parcial atributos Chave estrangeira para no No atributos Outros Restries dinmicas No Verses No Documentao No HTML Embutido No Auto descrio No
Sim No No No Parcial No
No No No No No
No No Sim Sim No
52
No requer esquema. Uma linguagem de consulta para dados XML deve executar consultas a dados XML mesmo quando no existir um esquema
definido para estes dados (DTD, XML-Schema ou outro). Explora esquema disponvel. Quando o DTD estiver disponvel para a fonte de dados, a linguagem de consulta deve ser capaz de julgar quando a consulta est corretamente formulada em relao ao DTD. Preserva ordem e a associao. Uma linguagem de consulta para dados XML deve ser capaz de preservar a ordem e a associao dos elementos dos dados XML, se necessrio. Baseada em XML. Uma consulta XML deve ser capaz de conter dados arbitrrios XML, e um documento XML deve ser capaz de armazenar consultas arbitrrias. Suporta novos tipos de dados. Uma linguagem de consulta para dados XML deve conter um mecanismo de extenso para operaes e condies especficas para um tipo de dado em particular. Apropriada para metadados. A linguagem de consulta para dados XML deve poder ser utilizada como parte da descrio dos metadados. Processada no servidor. Uma linguagem de consulta para dados XML deve apresentar a possibilidade de ser executada remotamente no servidor independente do contexto local da aplicao. Manipulvel atravs de programao. Uma consulta poder ser formulada por programas em tempo de execuo. Representvel atravs de XML. Uma consulta deve ser representvel atravs de XML.
53
XML-QL, uma vez que a mesma ser utilizada na etapa de desenvolvimento do prottipo proposto por este trabalho. Tomemos um documento XML com a estrutura descrita de acordo com a DTD definida na Listagem 22 disponvel em um determinado site acessvel atravs da URI www.a.b.c/bib.xml:
<!ELEMENT livro (autor+, titulo, editora)> <!ATTLIST livro ano CDATA> <!ELEMENT artigo (autor+, titulo, ano?, (versaoresumida|versaocompleta))> <!ATTLIST artigo tipo CDATA> <!ELEMENT editora (nomeeditora, endereco)> <!ELEMENT autor (nome?, sobrenome)> Listagem 22 : DTD para exemplo de consultas XML-QL.
Esta DTD especifica que um elemento livro contm um ou mais elementos autor, um elemento titulo, um elemento editora e um atributo ano. Um artigo similar, sendo que o atributo ano opcional, no possui editora, e possui um elemento versaoresumida ou um elemento versaocompleta. Um elemento artigo possui um atributo chamado tipo. O elemento editora contm um elemento nomeeditora e um elemento endereo, e um elemento autor possui um elemento nome nomeeditora, endereo, nome e sobrenome so todos do tipo CDATA. Recuperando dados atravs da identificao de padres : a XML-QL usa elementos padres para recuperar dados de um documento XML. O exemplo de consulta da Listagem 23 retorna todos os autores que publicaram obras pela editora Addison-Wesley que esto presentes em um documento XML na URI www.a.b.c/bib.xml. Toda a URI que representa uma fonte de dados XML deve aparecer a direita da palavra reservada IN.
WHERE <livro> <editora> <nomeeditora>Addison-Wesley</nomeeditora> </editora> <titulo> $t</titulo> <autor> $a</autor> </livro> IN "www.a.b.c/bib.xml" CONSTRUCT $a Listagem 23 : Exemplo de consulta bsica XML-QL.
no
54
Na prtica, esta consulta encontra todos os elementos <livro> no documento XML presente na URI www.a.b.c/bib.xml que tenha um subelemento <titulo>, um subelemento <autor> e um subelemento <editora>, sendo que o ltimo possui um subelemento <nomeeditora> o qual possui valor igual a Addison-Wesley. Para cada elemento que se enquadre na consulta ele armazena o nome do autora na varivel a ($a) e o ttulo da obra na varivel t ($t) . Note que todos os nomes de variveis so precedidos pele caracter $ para distinguir as mesmas dos outros valores literais presentes no documento. Pode-se abreviar o fechamento da tag de cada elemento (</elemento> por exemplo) utilizando apenas a tag </>. Assim, a consulta anterior (Listagem 23) pode ser descrita conforme na Listagem 24.
WHERE <livro> <editora><nomeeditora>Addison-Wesley</></> <titulo> $t</> <autor> $a</> </> IN "www.a.b.c/bib.xml" CONSTRUCT $a Listagem 24 : Exemplo de consulta bsica XML-QL com abreviao de tags.
Montando os resultados em um documento XML: a consulta exibida anteriormente retorna a lista de todos os autores com publicaes na editora AddisonWesley presentes no documento. muito importante porm que os resultados de uma consulta XML-QL sejam retornados no formato XML por questes de padronizao. A consulta na seqncia retorna todos os nomes dos autores e os ttulos de suas publicaes dentro de um elemento raiz chamado <resultado> :
WHERE <livro> <editora><nomeeditora>Addison-Wesley</></> <titulo> $t</> <autor> $a</> </> IN "www.a.b.c/bib.xml" CONSTRUCT <resultado> <autor> $a </> <titulo> $t </> </> Listagem 25 : Consulta XML-QL formatando os resultados em XML.
55
<autor> <sobrenome> Ferrandin</sobrenome> </autor> <editora> <nomeeditora> Addison-Wesley </nomeditora> </editora> </livro> <livro ano="1998"> <titulo> Foundation for Object/Relational Databases </titulo> <autor> <sobrenome> Date </sobrenome> </autor> <autor> <sobrenome> Darwen </sobrenome> </autor> <editora> <nameeditora> Addison-Wesley </nameeditora > </editora> </livro> </bib> Listagem 26 : Documento XML contendo dados bibliogrficos.
Aplicando a consulta anterior (Listagem 25) sobre o documento exemplo acima (Listagem 26) obteremos os resultados conforme a Listagem 27:
<resultado> <autor><sobrenome> Date </sobrenome> </autor> <titulo>Na Introduction to Database Systems </titulo> </resultado> <resultado> <autor> <sobrenome> Date </sobrenome> </autor> <titulo>Foundation for Object/Relational Databases</titulo> </resultado> <resultado> <autor> <sobrenome> Darwen </sobrenome> </autor> <titulo>Foundation for Object/Relational Databases </titulo> </resultado> Listagem 27 : Formatando o resultado de uma consulta XML-QL em XML.
Agrupando dados usando consultas aninhas: a consulta anterior (Listagem 25) no agrupava os autores de acordo com o livro, ou seja, no caso da existncia de dois autores para o mesmo ttulo ela retorna um elemento <resultado> para cada autor. Para agruparmos o resultado por ttulo teremos que usar consultas aninhadas (Listagem 28) que retornar um elemento <resultado> para cada ttulo e cada um contendo a lista dos seus respectivos autores.
WHERE <livro> $p </> IN "www.a.b.c/bib.xml", <titulo> $t </>, <editora><nomeeditora>Addison-Wesley</> </> IN $p CONSTRUCT <resultado> <titulo> $t </>
56
WHERE <autor> $a </> IN $p CONSTRUCT <autor> $a</> </> Listagem 28 : Agrupando dados atravs de consultas aninhadas.
Aplicando esta consulta (Listagem 28) sobre o documento XML exemplo da Listagem 26 teremos os resultados mostrados na Listagem 29:
<resultado> <titulo> An Introduction to Database Systems </titulo> <autor> <sobrenome> Date </sobrenome> </autor> </resultado> <resultado> <titulo> Foundation for Object/Relational Databases </titulo> <autor> <sobrenome> Date </sobrenome> </autor> <autor> <sobrenome> Darwen </sobrenome> </autor> </resultado> Listagem 29 : Resultado de uma consulta agrupando o resultado.
Junes de elementos pelo valor : XML-QL pode expressar junes (joins) encontrando um ou mais elementos que contm o mesmo valor. Por exemplo, a consulta da Listagem 30, recupera todos os artigos que tenham pelo menos um autor que tenha sido escrito um livro desde 1995. Aqui, assumimos que o autor tem o mesmo nome e sobrenome (representados pelas variveis $f e $1) para livros e artigos.
WHERE <artigo> <autor> <nome> $f </> <sobrenome> $l </> </> </> CONTENT_AS $a IN "www.a.b.c/bib.xml" <livro ano=$y> <autor> <nome> $f </> <sobrenome> $l </> </> </> IN "www.a.b.c/bib.xml", y > 1995 CONSTRUCT <artigo> $a </> Listagem 30 : Junes de elementos pelo valor em uma consulta XML-QL.
Existem muitas outras consultas possveis utilizando a linguagem XML-QL, mas a inteno aqui mostrar apenas o bsico. Construes utilizando tag com variveis, expresses regulares de caminhos (regular path expressions), transformaes de dados
57
atravs de consultas XML-QL, integrao e consultas a vrias fontes simultneas, criao de funes, namespaces, semi-junes entre outras podem ser utilizadas de acordo com as necessidades das aplicaes/desenvolvedores. A gramtica completa contendo a BNF10 da linguagem XML-QL pode ser visualizada junto ao apndice deste trabalho no Anexo 1 : XML-QL Grammar.
A XQL uma linguagem que essencialmente consiste de uma busca de padres atravs de XSL com uma sintaxe bem definida para a construo dos resultados. Seu poder de reestruturao restrito a um subconjunto da linguagem XSL. A XML-GL uma linguagem de consulta grfica para XML, da mesma linha da linguagem QBE11. Na XML-GL, ambas as clusulas WHERE e CONSTRUCT so
10
58
especificadas atravs de uma interface grfica, e suas funcionalidades so similares a XML-QL. A Tabela 5 mostra um comparativo entre as seis principais linguagens de consulta para dados XML segundo [Bonifati e Ceri, 1999].
Linguagem / Caracterstica Modelos de dados especficos Gerenciamento diferencial de IDREFs Seleo de Documentos Junes Formato do resultado Especificao e expresses de caminho parciais. Parada Quando encontrar dados cclicos Quantificao existencial Qualificadores Universais Negaes Redues Construo de novos elementos Construes em grupos Funes skolem Agregao Consultas aninhadas Consultas binrias Ordenao dos resultados Preservando ordem dos resultados Consultas ordenadas por esquemas Consultas por ordem de instncias Abstrao de tipos Coero de tipos Suporte a RDF Suporte a Xpointer e Xlink Tags variveis Linguagens de atualizao LOREL Sim Sim Sim Sim Conj. de OIDs Sim Sim Sim Sim Sim No Sim Sim Sim Sim Sim Sim Sim Sim No Sim Sim Sim No No Sim Sim XML-QL Sim No Sim Sim Documento XML Sim Indefinido Sim No No No Sim No Sim No Sim Parcial Sim Sim Sim No No No No No Sim No XML-GL Sim No Sim Sim Documento XML Parcial Sim Sim No Sim No Sim Sim Parcial Sim No Sim Sim Sim No No No No No No No Sim XSL Sim No Sim No Documento XML Sim No Sim No Sim No Sim No No Parcial Sim Sim Sim Sim No No No No No No No No XQL No No Sim No Documento XML Sim Indefinido Sim Sim Sim No No No No Parcial No Sim No Sim No Sim No Partially No No No No
11
3.9.1. SAX
60
A API SAX mais voltada para a sintaxe, enquanto DOM oferece muitas funcionalidades para desenvolver algumas aplicaes com dados XML. A SAX um API padro para anlise (parsing) documentos XML. Um parser SAX l o fluxo de dados XML, analisa-os e detecta eventos ao interpretar as tags. Estes eventos so coletados pela aplicao que pode realizar aes especficas para cada um deles. Para entender como funciona uma API baseada em eventos (como e o caso da SAX), considere o documento da Listagem 32, ao ser analisado por uma API baseada em eventos. A API ir dividir a estrutura deste documento em uma srie de eventos lineares tais como : start document; start element: doc; start element: para; characters: Alo, mundo!; end element: para; end element: doc; end document;
<?xml version="1.0"?> <doc> <para>Alo, Mundo!</para> </doc> Listagem 32 : Documento para ser processado atravs de SAX.
A aplicao por sua vez ir tratar cada um destes eventos tal como trata eventos gerados por uma interface grfica de um usurio: no h necessidade de armazenar o documento inteiro na memria ou em um meio de armazenamento secundrio.
3.9.2. DOM
O DOM uma API para documentos HTML e XML. Ela define a estrutura lgica dos documentos e como estes documentos sero acessados e manipulados. Na especificao do DOM o termo documento (document) largamente usado. XML est sendo usado como uma maneira de representar muitos tipos diferentes de informaes que podem estar armazenadas nos diversos sistemas e o DOM usado para manipular estes dados [Wood, 1998]. Com o DOM, os programadores podem construir documentos, navegar na sua estrutura, modificar ou apagar elementos no seu contedo. Qualquer dado presente em um documento XML pode ser acessado, alterado, excludo, ou adicionado usando o DOM. Sendo uma especificao da W3C, o objetivo mais importante do DOM prover uma interface padro para programao que possa ser usada por uma grande quantidade de ambientes e aplicaes. O DOM foi desenvolvido para ser usado com qualquer linguagem de programao.
61
No DOM os documentos tem uma estrutura lgica que muito semelhante a uma rvore. A representao de uma tabela HTML da Listagem 33, tem a estrutura lgica representada no DOM conforme a Figura 15.
<TABLE> <TBODY> <TR> <TD>Shady Grove</TD> <TD>Aeolian</TD> </TR> <TR> <TD>Over the River, Charlie</TD> <TD>Dorian</TD> </TR> </TBODY> </TABLE> Listagem 33 : Representao de uma tabela em HTML.
O nome "Document Object Model" foi escolhido por que ele um modelo de objetos dentro do desenvolvimento orientado a objetos : os documentos so modelados usando objetos e o modelo agrega no apenas a estrutura deste documento mas tambm o comportamento do documento e dos objetos que o compe. Em outras palavras, os ns da Figura 15 no representam a estrutura dos dados, eles representam os objetos os quais possuem funes e identidade.
Segundo [Wood, 1998], a estrutura de um documento SGML tradicionalmente representada por um modelo abstrato, e no por um modelo de objetos. Em um modelo abstrato, o modelo centrado nos dados. Nas linguagens de programao orientadas a objetos, os dados esto encapsulados nos objetos que armazenam estes dados, no sendo permitido que os mesmos sejam manipulados diretamente por objetos externos. As funes associadas a estes objetos determinam como estes objetos podem ser manipulados, e elas so parte do modelo de objetos. O DOM atualmente est divido em duas partes : DOM Core - representa as funcionalidades utilizadas para manipular documentos XML e tambm serve como base
62
para a DOM HMTL, e o DOM HTML que representa as funcionalidades utilizadas para manipular documentos HTML.
63
Para superar estas limitaes, autores prope mecanismos para definio de chaves que : possam ser definidos atravs de uma ou mais expresses de caminho, possibilitando indicar precisamente um determinado n em uma rvore XML; possam ser definidas para um conjunto relativo de ns; no dependa de qualquer mecanismo utilizado para especificar a estrutura do documento, como por exemplo DTD e XML Schema. [Chen et ali., 2002] props uma notao para definio de chaves com a seguinte sintaxe : (Q, (Q,{P1,...,PP})) onde Q, Q, e P1,...,PP so expresses de caminho12. Q chamado de caminho do contexto (context path), Q o caminho alvo (target path) e P1,...,PP so caminhos chaves (keys path). A idia que o caminho de contexto Q identifique o conjunto de ns do contexto (context nodes) onde para cada n n a restrio de integridade deve ser respeitada no conjunto de ns acessveis atravs do caminho alvo Q. Por exemplo, a chave KS1 definida por : KS1= (/, (./universidade, {./nome})) indica que no caminho de contexto / (ou seja raiz do documento) uma universidade identificada por um subelemento chamado nome. Outro exemplo, tomemos uma chave KS2= (/universidade, (.//funcionario, {./@codigofuncionario})) que indica que no dentro de um nvel do documento identificado pelo elemento universidade (caminho de contexto), um funcionrio em qualquer subnvel (indicado pelo .//) do documento dentro do caminho de contexto identificado pelo por um atributo (@) do elemento funcionrio denominado codigofuncionario. Como um terceiro exemplo, tomemos uma chave KS3= (/, (.//funcionario, {./nome, /telefone})) que indica que no caminho de contexto /, ou seja todo o documento, um elemento funcionario em qualquer subnvel da rvore identificado unicamente por um elemento denominado nome e um elemento denominado telefone. Esta notao complexa, mas permite definio de restries de integridade em documentos XML. Existem muitas outras propostas diferentes e com estudos
64
aprofundados propondo algoritmos de validao para verificar um documento est de acordo com um conjunto de restries para ele pr-determinadas.
12
65
As relaes r1, r2 podem tambm ser representadas atravs de tabelas como podemos observ-las respectivamente na Tabela 6 e na Tabela 7.
66
r1: a a1 a2 b1 b2 b c1 c2 c
r2: d d1 d2 d3 e e1 e2 e3
Segundo [Abiteboul et al., 2000], podemos representar estes dados atravs de uma estrutura de rvore das mais variadas formas, dependendo da organizao desejada. As figuras Figura 16, Figura 17 e Figura 18 mostram trs maneiras de representar dados das relaes r1 e r2 atravs de rvores.
r1 r2
tupla
tupla
tupla
tupla
tupla
a a1
b b1
c c1 a2
b b2
c c2
d d1
e e1
d d2
e e2
d d3
e e3
r1
r1
r2
r2
r2
a a1
b b1
c c1 a2
b b2
c c2
d d1
e e1
d d2
e e2
d d3
e e3
67
tup la
tup la
tup la
tu p la
tu p la
r1 a a1 b b1 c c1 a2 a
r1 b b2 c c2
r2 d d1 e e1
r2 d d2 e e2
r2 d d3 e e3
Cada uma das rvores representadas na Figura 16, Figura 17 e Figura 18 pode ser representada atravs de um documento XML. A Listagem 35 mostra como podem ser representados os dados das relaes r1 e r2 em um documento XML de acordo com a representao em rvore da Figura 16.
<?xml version=1.0?> <bd> <r1> <tupla> <a> a1 </a> <b> b1 </b> <c> c1 </c> </tupla> <tupla> <a> a2 </a> <b> b2 </b> <c> c2 </c> </tupla> </r1> <r2> <tupla> <d> d1 </d> <e> e1 </e> </tupla> <tupla> <d> d2 </d> <e> e2 </e> </tupla> <tupla> <d> d3 </d> <e> e3 </e> </tupla> </r2> </bd> Listagem 35 : Representao da rvore de dados da Figura 16 com XML.
Desta maneira, podemos representar os dados de uma mesma base relacional em documentos XML com estruturas variadas. Esta estrutura esta ser determinada pela
68
organizao
pela
formatao
exigida
por
quem
69
aplica melhor quando estas fontes no sofrem alteraes com tanta freqncia, alm de ser exigido um tempo de resposta rpido para as consultas submetidas [Hull, 1996]. A abordagem virtual apropriada para informaes que mudam rapidamente, para clientes com necessidades normalmente no previsveis e para consultas que so realizadas sobre grandes quantidades de dados, a partir de um volume significativo de fontes de informaes [Widom, 1995]. No entanto esta abordagem se mostra ineficiente quando consultas so submetidas repetidas vezes, quando as fontes de informao so lentas, caras ou muitas vezes no disponveis, e quando requerido um processamento considervel para as diversas etapas de preparao dos dados, antes de seu uso. Neste caso, o uso de materializao se torna a alternativa de melhores resultados, por permitir que a informao esteja disponvel imediatamente para consultas e anlises desejadas. Em um outro artigo [Hull, 1997], Hull afirma que a materializao de vises integradas pode oferecer benefcios substanciais sobre a abordagem virtual no que se refere ao tempo de resposta para consultas, podendo isto ser observado quando so necessrias junes de grande complexidade envolvendo os dados das mltiplas bases de dados presentes na viso integrada. Alm disso, tambm se aplica adequadamente em casos nos quais no h uma chave universal para entidades referenciadas a partir destes diversos bancos de dados. No entanto, uma preocupao a ser considerada quando se trata deste tipo de abordagem diz respeito atualizao das vises materializadas, sendo necessrio implementar algum tipo de mecanismo que permita garantir a coerncia dos dados manipulados em relao aos dados armazenados nas fontes de dados integradas. Para garantir uma viso materializada consistente, algum mecanismo deve ser adotado para mant-la em relao s fontes dos dados. Uma viso materializada proporciona rpido acesso aos dados armazenados, podendo a diferena de velocidade ser crtica para aplicaes nas quais ocorrem muitas consultas, com vises to complexas que no se torna possvel refaz-las para cada nova consulta realizada [Gupta et al., 1995]. Porm, assim como uma "cache", este tipo de viso necessita de mecanismos que permitam mant-la adequada s mudanas ocorridas
70
com os dados a partir dos quais esta se originou, sendo adotado normalmente um processo denominado atualizao de vises. Outra vantagem apresentada para justificar o uso de vises materializadas descrita por Abiteboul [Abiteboul et al., 1998], quando este afirma que normalmente a prtica de materializao adotada para melhorar o desempenho de consultas, quando os dados de origem esto localizados remotamente, de forma distribuda, ou o tempo de resposta para consultas um fator crtico. Da mesma forma que os demais autores, Abiteboul descreve a importncia de que o contedo de vises desta natureza sejam sempre mantidos de forma consistente em relao s fontes de dados, seja atravs da sua redefinio a partir destas fontes, seja pela computao de mudanas incrementais em seus dados tendo como base as alteraes que ocorrerem com as fontes originais.
71
Vises adiadas: nesta tcnica, a viso atualizada em uma transao separada, fora da transao que atualiza a tabela base usada para derivar "preguiosa" (lazy
deferred): a viso atualizada to tarde quanto seja possvel, desde que esteja garantindo que todos os resultados das consultas submetidas estejam consistentes com os dados base. Em outras palavras, vises "preguiosas" adiadas no precisam estar consistentes com as tabelas sobre as quais elas foram definidas, mas as consultas sobre as vises tem de ser respondidas como se a viso estivesse consistente; (2) "peridica" (periodic deferred): a viso modificada periodicamente em intervalos preestabelecidos, em uma transao especial de atualizao. Esta tcnica permite consultas rpidas e no aumenta o tempo das atualizaes. A desvantagem que as consultas submetidas viso podem trazer resultados inconsistentes com os dados fonte; (3) forada (forced delay): a viso atualizada depois de um certo nmero de modificaes nas tabelas base usadas para derivar a viso. A atualizao imediata de vises tem a desvantagem de que cada transao de atualizao implica em "overhead" para propagar as mudanas das tabelas base e atualizar cada viso. Este "overhead" cresce com o nmero de vises e esta abordagem no escalonvel em relao a este nmero de vises. A atualizao adiada de vises remove o "overhead" criado pela propagao e "refresh" das transaes de atualizao. Entretanto, impe diferentes "overheads" nestas transaes de atualizao: as mudanas nas tabelas base devem ser registradas em um arquivo de "log", de modo que estejam disponveis mais tarde para a operao de atualizao. Esta abordagem permite que alteraes de vrias transaes de atualizao possam ser realizadas juntas, em uma nica operao de propagao e "refresh". Por outro lado, atualizao "preguiosa" adiada impe um significativo "overhead" em transaes de consulta, j que a consulta tem que esperar para que a viso materializada seja atualizada. Dependendo do tipo de aplicao, a performance da consulta pode ser melhorada usando atraso forado ou atualizao peridica. Quando a aplicao precisa de um armazenamento estvel de dados, a atualizao peridica tem
72
excelente performance, como o caso de datawarehouses que precisam rodar longas consultas de suporte deciso [Silva, 2000].
73
gerenciador de consultas: composto pelo parser de consulta, que recebe a consulta XQL e faz um parser em uma rvore de sintaxe abstrata;
Gerenciador APIX: dividido em alguns mdulos especficos. O inicializador APIX faz a inicializao da estrutura APIX (Aggregate Path IndeX) para uma determinada consulta e tambm a gerao da viso materializada de acordo com o resultado do processamento. O atualizador APIX, com a ajuda da estrutura APIX, realiza a atualizao das vises a partir de notificaes vindas do detector de atualizaes nas fontes Web. A estratgia de manuteno do sistema ARGOS se baseia em um algoritmo que faz a atualizao incremental da viso Web, a partir de modificaes que ocorram nas fontes de dados. Esta tcnica implica em custos reduzidos se comparados queles envolvidos na criao inicial da viso.
Interface do Usurio
Parser de Consulta Gerenciador de Consultas Processador de Consulta Sistema de Consulta Sites de vises Inicializador APIX Gerenciador APIX APIX PDOM Atuallizador APIX Carregador PDOM
PDOM
XML
XML
XML
74
associados com uma descrio de seu contexto original, utilizando ontologias para interpretar corretamente estes dados e tambm os metadados. A arquitetura proposta, aplicando o modelo MIX, se baseia na abordagem de mediadores e est apresentada na Figura 20. Nesta arquitetura, os wrappers so usados para extrair dados relevantes a partir das fontes, mape-los para MIX baseados em um contexto estrutural comum e retornar objetos MIX para o gerenciador de dados. O gerenciador de dados gerencia as fontes disponveis, atravs da atualizao do repositrio de metadados. Baseado na descrio do contexto das fontes de dados, este gerenciador tenta integrar dados heterogneos atravs da converso destes dados para um modelo semntico comum.
75
O servidor de ontologias armazena e gerencia o vocabulrio de um domnio especfico, possibilitando uma maneira de descrever conceitos da ontologia de forma independente de qualquer aplicao ou fonte de dados. Dados integrados so repassados para o processador de transformaes, o qual mapeia objetos MIX para o esquema do datawarehouse e carrega dados nas tabelas. Este processador se utiliza de regras de mapeamento, definidas no arquivo de mapeamentos (o sistema prope uma linguagem especfica para a definio destas regras). Por fim, o processador de atualizao incremental modifica o datawarehouse, quando as fontes Web sofrem alteraes. Este processador mantm uma cpia dos ltimos objetos MIX utilizados, fazendo comparaes com novos objetos MIX que sejam recebidos do gerenciador de dados.
DataWarehouse
Arquivos de Mapeamento
Processador de Transformaes
Servidor de Ontologia
Ontologias
Gerenciador de dados
Metadados
Wrapper 1
Wrapper 2
Wrapper 3
DB
Data File
Um exemplo de um objeto MIX est descrito a seguir Listagem 36 : Exemplo de objeto MIX.
Obj = <Artigo, { <ttulo, XML>, <Autor, { <nome, Ferrandin, Mauri, {<formato nome, Last, First>}>,
76
4.3.3. SilkRoute
A ferramenta SilkRoute [Fernandez et al., 1999] procura oferecer uma alternativa geral, dinmica e eficiente para a criao de vises e consultas sobre dados relacionais atravs de XML. Este processo realizado atravs de duas etapas principais: primeiro, definida uma viso XML para o banco de dados relacional, atravs do uso de uma linguagem de consulta especfica, denominada RXL (Relational to XML Transformation Language). Esta viso virtual e no materializada; segundo passo a formulao de consultas sobre estas vises virtuais, extraindo dados XML. Estas consultas so realizadas com uma linguagem de consulta prpria para dados XML, chamada XML-QL e apenas seu resultado enviado como resposta para a aplicao. A arquitetura geral da ferramenta SilkRoute ilustrada pela Figura 21.
Aplicao Consulta (XML-QL) Resposta (XML)
RXL
Gerador XML
SilkRoute
Tradutor
Template XML
Tuplas
SQL
SGBDR
77
A idia principal desta arquitetura servir como um middleware entre uma base de dados relacional e uma aplicao que acesse esta base atravs da Web. O mdulo principal da ferramenta o PREPARADOR DE CONSULTAS. A partir de uma viso virtual definida pelo administrador do banco de dados, este mdulo recebe a consulta do usurio (XML-QL) e gera uma nova consulta RXL (executvel) que ento enviada para o mdulo TRADUTOR. O mdulo TRADUTOR, por sua vez, particiona esta consulta executvel em uma ou mais consultas SQL, alm de gerar dados XML (template) enviados ao GERADOR XML. O TRADUTOR ainda recebe como entrada uma descrio da fonte de dados, no formato XML, para auxiliar no processo de consulta de dados no banco relacional. O mdulo GERADOR XML recebe o resultado de consultas SQL e o template XML, preparando o documento XML a ser enviado como resposta para a aplicao que formulou a consulta inicial. A linguagem RXL, que serve de base para a gerao das vises nesta abordagem, combina a parte de recuperao de dados do SQL (clusulas FROM and WHERE) com clusulas de construo da linguagem XML-QL, gerando instrues de consulta como a apresentada na Listagem 37.
from ARTIGO $A where $A.ttulo = XML construct <artigo> <ttulo> $A.ttulo </ttulo> </artigo> Listagem 37 : Instrues de consulta RXL.
Sistema de caching para Web Materializar dados Web para OLAP e DSS (datawarehouse) Middleware entre banco de dados relacional e aplicao acessando dados via Web
79
80
A Figura 22 demonstra a arquitetura geral do sistema proposto, sendo que cada mdulo do sistema ser detalhado na seo 5.2.2.
Aplicao
Aplicao
...
Aplicao
XML-QL
XML-QL
Regras de Localizao
Regras de Integridade
XML
XML
XML
XML
XML
XML Wrapper
XML Wrapper
XML
...
Wrapper
SQL
SGBD
SQL
SGBD
SQL
SGBD
Outro ponto importante desta proposta a manuteno das regras de integridade na viso XML global de modo que as alteraes nela realizadas, possam ser propagadas para as bases relacionais sem que ocorram problemas de integridade referencial. Para gerenciamento das regras de integridade que determinaro a integridade da viso XML global ser criado um repositrio de regras de integridade que armazenar as mesmas tambm atravs do padro XML. Para definio das regras, ser necessrio a
81
interveno de um especialista humano que definir a partir dos dados que sero exportados, que integridade dever ser preservada na viso XML global. O especialista dever levar em conta a manuteno de uma integridade mnima para que no ocorram problemas de integridade em casos de sincronizao de dados entre a viso XML integrada e os SGBDHs.
5.2.2. Projeto
O sistema proposto composto por vrios mdulos independentes que interagem entre si que sero detalhados nas subsees seguintes, so eles: os wrappers; integrador de vises XML locais; gerenciador de consultas; repositrio de regras de integridade;
82
5.2.2.1.
Wrappers
Um wrapper ou tradutor, um componente de software que converte dados e consultas (query) de um modelo para outro [Papakonstantinou et al., 1995]. Neste caso, uma aplicao (que pode ser um mediador), solicita ao wrapper consultas em uma linguagem de consulta comum (SQL, XML-QL), e o mesmo converte esta consulta para uma linguagem de consulta suportada pelo banco de dados ao qual est ligado e envia uma requisio ao mesmo, depois, recebe o resultado desta consulta e o converte para um formato suportado pela aplicao ou mediador. No caso especfico deste sistema, os wrappers faro acesso as informaes armazenadas nas bases relacionais heterogneas distribudas atravs da SQL e convertero os resultados para o padro XML. Vejamos um exemplo bsico do funcionamento dos wrappers : Dadas as relaes Paciente e Internao, representadas respectivamente na Tabela 9 e Tabela 10, presentes em uma base de dados base01: Paciente : CPF 01 02 Nome Joo Z
Internao : CPF 01 01 02
Como resultado teramos a viso XML representada pela Listagem 38 para a base de dados base01:
<base01> <tabelas> <pacientes> <linha> <CPF>1</CPF> <Nome>Joo</Nome> </linha>
83
<linha> <CPF>2</CPF> <Nome>Z</Nome> </linha> </paciente> <Internao> <linha> <CPF>1</CPF> <Doena>Gripe</Doena> </linha> <linha> <CPF>1</CPF> <Doena>Diarria</Doena> </linha> <linha> <CPF>2</CPF> <Doena>Sfilis</Doena> </linha> </Internao> </tabelas> </base01> Listagem 38: Viso XML gerada por wrapper a partir de uma base relaciona base01.
A implementao dos wrappers no o foco principal deste trabalho, sendo que para desempenhar as funes deste mdulo ser utilizada uma implementao j existente chamada DB2XML que um projeto de Volker Turau Copyright (C) 1999 distribudo sob a GNU (General Public License) de acordo com as normas da Free Software Foundation. O DB2XML foi implementado em Java e utiliza o JDBC (Java Database Connectivity) para fazer acesso a bases relacionais, assim, no existe a necessidade de implementao de um wrapper para cada tipo diferente de SGBD, uma vez que basta carregar o driver JDBC especfico para cada SGBD pois est API dividida em duas sub APIs que so a API da linguagem e a API do fabricante do SGBD. A Figura 23 detalha as partes da API JDBC e a Figura 24 mostra como o DB2XML ser utilizado dentro do modelo proposto. A maioria dos fabricantes de SGBD possuem API JDBC para seus produtos, sendo que a lista de todos os SGBDs que j possuem suporte pode ser encontrada no site http://industry.java.sun.com/products/jdbc/drivers mantido pela Sun Microsystems.
84
Aplicao Java
API JDBC
API JDBC da Lingugem Java API JDBC Oracle SQL API JDBC PostgreSQL SQL Postgre SQL API JDBC DB2 SQL API JDBC MySQL SQL
...
Oracle
DB2
...
MySQL
XML
...
SQL
SGBD
SQL
SGBD
SQL
SGBD
5.2.2.2.
Este mdulo ir receber os dados de cada uma das vises XML locais exportadas atravs dos wrappers e os integrar em uma nica viso XML global. Tal integrao ser feita de maneira simplificada criando um elemento raiz dentro do qual estaro contidas as vises locais. muito importante a presena de um especialista humano no momento de incluso/excluso de SGBDs componentes do sistema para resoluo de conflitos e problemas de integridade que eventualmente possam surgir. A Figura 25 mostra como ficaro organizados os dados de cada viso XML local de maneira a compor uma viso XML integrada. Na raiz do documento XML que
85
corresponde a viso integrada foi chamado de <visao_xml_integrada>, e cada uma das bases a serem representadas viso integrada identificada por um elemento raiz <basexx> que ser adicionado ao documento como sendo elemento filho do elemento raiz.
<base01> <tabelas> <pacientes> ... </paciente> ... </tabelas> </base01> <base02> <tabelas> <pacientes> ... </paciente> ... </tabelas> </base02> ... <basen> <tabelas> <pacientes> ... </paciente> ... </tabelas> </basen> <visao_xml_integrada> <base01> <tabelas> <pacientes> ... </paciente> ... </tabelas> </base01> <base02> <tabelas> <pacientes> ... </paciente> ... </tabelas> </base02> ... <basen> <tabelas> <pacientes> ... </paciente> ... </tabelas> </basen> </visao_xml_integrada>
BD1
BD2
BDn
Figura 25 : Integrao das vises XML locais em uma viso XML integrada
5.2.2.3.
As regras de integridade da viso XML global so definidas a partir das regras de integridade de cada base relacional exportada. Para o armazenamento destas regras tambm ser utilizado uma notao baseada em XML o que padroniza a troca e consulta de informaes entre os mdulos do sistema, uma vez que assim, as regras de integridade ficam acessveis a qualquer linguagem de consulta para dados XML.
86
A Listagem 39 mostra o exemplo de um arquivo de regras de integridade para um documento XML conforme o proposto neste trabalho.
<?xml version="1.0" encoding="UTF-8"?> <RegrasIntegridade> <visao_xml_integrada.basededados01.paciente.paciente_rectipo="pk"> <campo>cpf</campo> </visao_xml_integrada.basededados01.paciente.paciente_rec> . . . </RegrasIntegridade> Listagem 39 : Exemplo de um arquivo de regras de integridade para um documento XML.
Uma regra composta basicamente por uma tag que indica o contexto(path) do documento onde a regra deve ser observada, sendo que o tipo da regra indicado por um atributo denominado tipo que pode ser : pk : para indicar que a regra uma regra de chave primria (primary key); fk : para indicar que a regra uma regra de chave estrangeira (foreign key).
A tag que discrimina uma regra ter ento uma ou mais tags filhas denominadas campos que iro armazenar quais as tags que no devem possuir o mesmo valor dentro daquele contexto. Basicamente a regra acima descrita uma regra do de chave primria (tipo=pk) e indica que no nvel do documento XML indicado pelo caminho visao_xml_integrada.basededados01.paciente.paciente_rec no podero existir duas tags filhas da tag paciente_rec contendo o mesmo valor. A Figura 26 representa graficamente uma violao de chave primria em um documento XML e a Listagem 40, mostra um exemplo de regra de chave estrangeira para um documento XML. Uma regra de chave estrangeira (tipo = fk) na prtica, indica que um valor s poder existir em um local do documento (contexto) se j existir um determinado valor em outro local (contexto) do documento. Assim as regras de chave estrangeira so compostas por uma tag cujo o nome da mesma determina o contexto onde ela ser validada, no caso do exemplo acima, o com caminho um visao_xml_integrada.basededados01.internacao.internacao_rec atributo
denominado contexto (visao_xml_integrada.basededados01.paciente.paciente_rec no caso) que indica onde se encontram os dados de referncia. Na prtica, de acordo com
87
esta regra, somente ser possvel inserir uma tag com nome cpf (<campo>) no contexto visao_xml_integrada.basededados01.internacao.internacao_rec da viso se existir uma tag chamada cpf (<campofk>) no contexto visao_xml_integrada.basededados01.paciente.paciente_rec.
<visao_ xm l_inte gra da> <bas ededa dos01 > <p aciente > <pacien te_re c> <cpf> 01 </cpf> <nom e> Jo o </no m e> </paciente_re c> </p aciente > ... </bas e01> ... </visao_x m l_inte gra da>
<pacien te_rec> <cpf> 01 </cp f> <no m e> P aulo </nom e > </pacien te_rec>
<RegrasIn tegridade > <v is ao_xm l_integ rad a.based edad os01.p aciente .pacien te_re c tipo="p k"> <ca m po>cpf</ca m po> </vis ao_xm l_integ rad a.based edad os01.p aciente .pacien te_re c> ... </RegrasIn tegridade >
Figura 26 : Violao de chave primria na viso integrada XML. <visao_xml_integrada.basededados01.internacao.internacao_rec tipo="fk" contexto="visao_xml_integrada.basededados01.paciente.paciente_rec"> <campo>cpf</campo> <campofk>cpf</campofk> </visao_xml_integrada.basededados01.internacao.internacao_rec> Listagem 40 : Exemplo de regra de chave estrangeira para um documento XML.
A Figura 27 ilustra a insero de um valor na viso integrada considerando regras de chave estrangeira.
88
<visao_xm l_ integrad a> <base dedados01> <pac iente> <pacie nte_r ec> <cpf> 01 </cpf> <nome > Jo o </nom e> </paciente_re c> </paciente> <inte rnacao> </in ter nacao> ... </base01> ... </visa o_xml_inte grada> <ca mpofk>
<in ter nacao_r ec> <cpf> 0 1 </cpf> <doenca > G r ipe </doenca> </internaca o_rec>
Operao permitida
<visa o_xm l_inte grada.basede dados01.in ter nacao.interna cao_rec tipo="fk " c ontexto="v isao _xml_inte grada.baseded ados01.paciente .paciente_re c"> <c ampo>cpf</cam po> <c ampofk>cpf</cam pofk> </visao_x ml_integr ada.basededados 01.internaca o.inte rnacao_ rec>
Figura 27 : Insero de um registro na viso integrada de acordo com as regras de chave estrangeira.
5.2.2.4.
O repositrio de regras de localizao armazenar metadados referentes a origem dos dados presentes na viso XML integrada dos mesmos, tal como, qual a base de dados da qual tal campo foi exportado, tabela, etc. A Listagem 41 mostra um exemplo de regras de localizao.
<localizacao> <base nome=base01> <SGBD>Oracle</SGBD> <IP>10.0.0.1</IP> <porta>1521</porta> <campos> <campo> <nome>CPF</nome> <tabela>Paciente</tabela> </campo> <campo> <nome>Nome</nome> <tabela>Paciente</tabela> </campo> ... </campos> </base> </localizacao> Listagem 41 : Exemplo de repositrio de dados de localizao.
89
O repositrio de regras de localizao serve para facilitar uma possvel propagao de alteraes nos dados presentes na viso XML integrada para as bases distribudas. Este processo bastante complexo e no ser foco de estudo deste trabalho, assim, este repositrio de dados somente ser usado se o gerenciador de consultas eventualmente por algum motivo precisar conhecer a origem dos dados, origem esta que deve ser escondida do usurio/desenvolvedor para manter a transparncia do sistema.
5.2.2.5.
Gerenciador de consultas
O mdulo gerenciador de consultas tem como funcionalidade principal, receber as consultas formuladas pelas aplicaes j em XML-QL e executar as mesmas sobre a viso XML global para recuperar os dados solicitados, ou sobre o repositrio de regras de integridade se houver alguma atualizao ou em algum caso em que o prprio gerenciador ou a aplicao necessitem de dados referentes a integridade da viso, ou ainda sobre o repositrio de dados de localizao original dos dados nas bases relacionais exportadas. A Figura 28 detalha o funcionamento do gerenciador de consultas, sendo que podemos definir como seqncia de eventos que podem ocorrer com o gerenciador de consultas atravs do algoritmo mostrado na Listagem 42.
Ap lica o D oc um e nto XM L
func tion query () { CONS TR UC T <resultado> { W H ER E <visao_xm l_integrada.basededados0 1.internacao> <internacao_rec>$d</> </> IN "V isaoIntegrada.x ml" C ON STR UC T<rec> $d </> } </resultado> }
<re sultado> <rec> <cpf> 01 </cpf> <nome> Joo </nome> </rec> ... </resultado>
90
Para a execuo das consultas XML-QL sobre a viso integrada XML foi utilizado a implementao de um prottipo de processador de consultas para esta linguagem desenvolvido pela AT&T Corporation sendo que o mesmo est disponvel em http://www.research.att.com/sw/tools/xmlql/.
... consulta = rede.recebe_requisio_da_aplicao(); Se consulta.tipo != alterao_de_dados ento rede.retorna_aplicao( gerenciador_consultas.executa_consulta(consulta) ); seno se gerenciador_consultas.verifica_integridade( consulta) = OK ento rede.retorna_aplicao( gerenciador_consultas.executa_consulta(consulta) ); seno rede.retorna_aplicao( gerenciador_consultas.codigo_erro() ); fim se; fim se;
...
Listagem 42 : Algoritmo bsico representando o funcionamento do gerenciador de consultas.
5.2.3.1.
Diagrama de classes
O diagrama de classes que sero implementadas para desenvolvimento do sistema demonstrado atravs da Figura 29, sendo que o mesmo especifica apenas as classes fundamentais para o funcionamento do prottipo.
91
DB2XMLMauri +DB2XMLMauri() : DB2XMLMauri +roda() : <unspecified>
IntegradorDeVisoesLocais -VisoesLocaisXML : array of Document -VisaoIntegradaXML : Document +IntegradorDeVisoesLocais() : IntegradorDeVisoesLocais +retornaVisaoIntegradaXML() : <unspecified> +integraVisoesLocaisXML() : <unspecified>
5.2.3.2.
A Figura 30 mostra o diagrama de casos de uso do prottipo proposto por este trabalho.
-End10 -End9
Gerenciador de Consultas
uses
Regras de Localizao
-1 *
IntegradordorDeVisoesLocais
-1 *
-1 *
-1 *
Wrapper
SGBD
92
5.2.4. Implementao
Para a implementao do sistema proposto sero utilizado basicamente as seguintes ferramentas: Bases de dados de diferentes fabricantes - Oracle, PostgreSQL; Linguagem de programao Java; Nebeans IDE para linguagem Java; JDBC para acesso as bases relacionais com Java; B2XML - uma implementao de um wrapper para bancos de dados que possibilitam acesso via JDBC; XML-QL - uma implementao de um mdulo para execuo de consultas sobre dados XML.
5.2.4.1.
As classes bsicas do sistema foram implementadas de acordo com a especificao UML mostrada na Figura 29, sendo que todas as classes foram implementadas utilizando a linguagem de programao Java. Para uma melhor demonstrao da implementao realizada, foi necessrio a criao de uma interface grfica simples que pudesse concentrar as operaes principais do prottipo em uma nica tela, de maneira a facilitar a utilizao do mesmo, bem como a compreenso do sistema proposto como um todo.
93
materializar as vises : dispara o processo de extrao dos dados relacionais das bases para XML atravs dos wrappers, e na seqncia o
processo de integrao das vises criando assim a viso XML integrada dos dados relacionais;
mostrar viso integrada : mostra a viso integrada dos dados atravs de uma representao grfica (Figura 32);
mostrar regras de integridade : mostra as regras de integridade definidas em um arquivo XML previamente por um expert humano;
94
inserir dados : abre uma interface para insero de dados na viso XML integrada (Figura 35);
executar XML-QL : executa a consulta XML-QL definida no campo acima dele localizado sobre a viso XML integrada.
A Figura 32 mostra a visualizao dos dados XML armazenados na viso integrada, demonstrados atravs de uma interface grfica que mostra a rvore de elementos e a descrio textual dos mesmos.
A Figura 33 mostra a ocorrncia de uma violao de chave primria no sistema, quando o usurio tentou inserir um registro de paciente em uma das bases representadas na viso com cpf = 1 e nome = Marcos, sendo que j existe um registro com cpf = 1 na viso indicando outro paciente. A Figura 34 ilustra a ocorrncia de uma violao de chave estrangeira quando o usurio tenta inserir na viso um registro de internao para o cpf = 33 com a doena =
95
gripe sendo que no existe no cadastro de pacientes que chave estrangeira para o cadastro de internaes, nenhum registro de paciente com cpf = 33.
96
A Figura 35 ilustra a insero de um registro de um paciente com cpf = 55 e nome = Mauri Ferrandin na viso XML integrada dos dados. A Figura 36 mostra a execuo de uma consulta XML-QL que recupera todos os registros de pacientes de todas as bases que esto integradas na viso XML integrada dos dados.
97
98
99
Para operaes que envolvam apenas consultas (sem atualizaes na viso XML) a complexidade do sistema se torna muito reduzida. O prottipo est implementado em linguagem multiplatafoma, o que aumenta a flexibilidade dos sistema no somente no sentido de se utilizar somente padres independentes de plataforma ou fornecedor para intercmbio de dados como o caso do XML, mas tambm para criao modelos capazes de rodar nos mais variados ambientes.
100
101
respeitem as restries de integridade existentes no banco de dados do qual eles so originrios. Os objetivos propostos com este trabalho foram de maneira geral alcanados, o sistema proposto mostrou-se capaz de integrar fontes heterogneas de dados atravs de uma camada de mediao criada entre os dados distribudos e as aplicaes finais, bem como, a proposta de manuteno da integridade referencial dos dados na camada mediadora especificou um esquema que pode ser adotado no somente para questes de integridade na integrao de fontes heterogneas de dados, mas tambm para definio de regras de integridade em documentos XML. O padro XML cai como uma luva para solucionar estes problemas, uma vez que o mesmo independente de plataforma, um padro aberto, e atravs dele podemos representar qualquer tipo de dado, desde os que se encontram em bases relacionais e/ou objetos, e tambm dados semi-estruturados. Muitas ferramentas e APIs para manipulao de dados armazenados atravs de XML j foram implementadas, facilitando e tornando o padro XML uma poderosa ferramenta de integrao, tais como as APIs SAX e DOM, e as diversas linguagens para consulta da dados XML.
102
Outra vantagem do modelo proposto em relao aos modelos estuados que o mesmo foi implementado utilizando apenas padres no proprietrios e independente de qualquer plataforma de hardware ou software.
103
implementao de wrappers com suporte a SGBDs orientados a objetos; (iii) integrao de dados exportados de bases relacionais com documentos ou bases de dados armazenadas atravs de XML e documentos semi-estruturados; (iv) estudo para verificar a viabilidade da utilizao de vises materializadas XML em grande bases de dados; (v) implementao de controle de transaes e segurana para o sistema atual; (vi) especificao de um esquema para criao de restries de integridade em vises de dados XML materializadas implementando outras funcionalidades alm da chave primria e chave estrangeira demonstradas neste trabalho.
104
8.Referncias Bibliogrficas
[Abiteboul 1997b] ABITEBOUL, S. Querying semi-structured data. In: ICDT, 1997. [s.n.], 1997. p.118. [Abiteboul et al., 1997a] ABITEBOUL, S. et al. Views for semi-structured data. In: WORKSHOP ON MANAGEMENT OF SEMISTRUCTURED DATA, 1997. Proceedings... Tucson, Arizona: [s.n.], 1997. [Abiteboul et al., 1998] ABITEBOUL, S. et al. Incremental maintenance for materialized views over semistructured data. In: PROC. 24TH INT. CONF. VERY LARGE DATA BASES, VLDB, 1998. [s.n.], 1998. p.3849. [Abiteboul et al., 2000] ABITEBOUL, S.; BUNEMAN, P.; SUCIU, D. Data on the Web : From relations to semistructured data and XML. Morgan Kaufmann Publishers, San Francisco, CA, 2000. [Batini et al., 1986] Batini, C.; Leuzirini M.; Navathe S.B.. A Compartive Analysis of Methodologies for Database Schema Integration. ACM Computer Survey, vol. 18, n. 4, 323-364, December 1986. [Bell e Grimson, 1992] Bell, D.; Grimson, J.. Distributed Database Systems. AddisonWesley, 1992, 2 ed. Pg. 44-55. [Bourret, 2001] BOURRET, R. Xml and databases. 2001. [s.n.], 2001. p.27. [Bradley, 1998] BRADLEY, N. The XML Companion. Adisson-Wesley, Edinburgh Gate, UK, 1998. [Bray et al., 1999] BRAY, T.; HOLLANDER, D.; LAYMAN, A. Namespaces in XML. World Wide Web Consortium (W3C), Janeiro, 1999. W3C RecommendationREC-xml-names-19900114.
105
[Brodie e Stonebraker, 1995] Brodie, M.; Stonebraker, M.; Migrating Legacy Systems: gateways, interfaces & the incremental approch. So Francisco, CA: Morgan Kaufmann Publishers, Inc., 1995. [Buneman et ali., 2001] BUNEMAN, Peter; DAVIDSON, Susan; et al. Reasoning about Keys for XML (Technical Report). International Workshop on Database Programming Languages (DBPL), 2001. Disponvel em http://db.cis.upenn.edu/DL/absreltr.ps.gz [Buneman, 1997] BUNEMAN, P. Semistructured data. 1997. [s.n.], 1997. p.117121. [Buretta, 1997] Buretta, M.. Data replication: tools and techniques for managing distributes information. Wiley Computer Publishing, 1997. [Buretta, 1997] BURETTA, M.. Data replication: tools and techniques for managing distributes information. Wiley Computer Publishing, 1997. [Castro, 1998] CASTRO, C. E. P. S.. Integrao de Legacy Systems a Sistemas de Bancos de Dados Heterogneos. Dissertao de Mestrado, Departamento de Informtica, Pontifcia Universidade Catlica do Rio de Janeiro, Rio de Janeiro, Jul. 1998. [Chen et al., 2002] CHEN, Yi; DAVIDSON, Susan; ZHENG, Yifeng. Validating Constraints in XML. Department of Computer and Information Science, University of Pennsylvania, 2002. Disponvel em http://db.cis.upenn.edu/DL/validate.ps. [Date, 1991] DATE, C. J. Introduo a Sistemas de Bancos de Dados. Rio de Janeiro: Campus, 1991. [Elmasri et al., 1987] Elmasri, R.; Larson, J.; Navathe, S. B.. Integration Algorithms for Database and Logical Database Design. Technical Report, Golden Valley, Minn.: Honey-well Corporate Research Center, 1987. [Fallside, 2000] FALLSIDE, D. C. XML schema part 0: Primer. World Wide Web Consortium (W3C), Fevereiro, 2000. Working DraftWD-xmlschema-0-20000225.
106
[Fernandez et al, 1999] FERNANDEZ, M.; TAN, W. C.; SUCIU, D. SilkRoute: Trading between Relations and XML. University of Pennsylvania: [s.n.], 1999. Disponvel em: < http://db.cis.upenn.edu/RXL/papers/sr.html>. Acesso em: 22 mar 2000.Technical Report. [Florescu et al., 1998a] FLORESCU, D.; KOSSMANN, D. A performance evaluation of alternative mapping schemes for storing XML data in a relational database. 1998. 31 p. p. Relatrio tcnico. [Florescu et al., 1998b] FLORESCU, D.; LEVY, A. Y.; MENDELZON, A. O. Database techniques for the world-wide Web: A survey. SIGMOD Record, [S.l.], v.27, n.3, p.5974, 1998. [Furgeri, 2001] FURGERI, S. Ensino Didtico da Linguagem XML. rica, 2001. [Georgakopoulos et al., 1994] GEROGAKOPOULOS, et al. Using Tickets to Ensure Serializability of Multidatabase Transactions. IEEE Transactions on knowledge and Data Engineering, vol. 6, n.1, February, 1994. [Gupta et al., 1995] GUPTA, A.; MUMICK, I. S. Maintenance of materialized views: Problems, techniques and applications. IEEE Quarterly Bulletin on Data Engineering; Special Issue on Materialized Views and DataWarehousing, [S.l.], v.18, n.2, p.318, 1995. [Hull, 1996] HULL, R.; ZHOU, G. A framework for supporting data integration using the materialized and virtual approaches. 1996. [s.n.], 1996. p.481492. [Hull, 1997] HULL, R. Managing semantic heterogeneity in databases : A theoretical perspective. In: ICDT, 1997. [s.n.], 1997. [Lee e Chu, 2000] Lee, Dongwon; Chu, Wesley W. Comparative Analysis of Six XML Schema Languages. University of California, Los Angeles 2000. [Manica, 2001] Manica, Heloise. Bancos de dados distribudos heterogneos: Arquiteturas, tecnologias e tendncias. Dissertao de mestrado em Cincias da Computao, Departamento de Informtica e Estatstica INE, 2001.
107
[Mello et al., 2000] MELLO, R. S. et al. Dados semi-estruturados. In: SIMPSIO BRASILEIRO DE BANCO DE DADOS, 2000. [s.n.], 2000. p.39. [Murphy e Grimson, 1995] MURPHY, J. & GRIMSON, J.. Multidatabase Interoperability in the Jupiter System. Information and Software Technology. Vol 37, N. 9, 1995. [Nestorov et al., 1998] NESTOROV, S.; ABITEBOUL, S.; MOTWANI, R. Extracting schema from semistructured data. 1998. [s.n.], 1998. p.295306. [zsu e Valduriez, 1999] zsu, M. Tamer; Valduriez, Patrick. Principles of distributed Database Systems. New Jersey: Prentice Hall, 2 ed., US, 1999. [Papakonstantinou et al., 1995] PAPAKONSTANTINOU, Y. et al. A query translation scheme for rapid implementation of wrappers. In: 4TH INTL. CONF. ON DEDUCTIVE AND OBJECT-ORIENTED [Quan et al., 2001] QUAN, L.; CHEN, L.; RUNDENSTEINER, E. A. Argos: Efficient refresh in an XQL-based Web caching system. Lecture Notes in Computer Science, [S.l.], v.1997. [Sheth e Larson, 1990] Sheth, A.P.; Larson, J. A.. Federated Database Systems for managing Distributed, Heterogeneous and Autonomous Databases. ACM Computing Surveys, vol. 22, n. 3, Sept, 1990. [Silva, 1994] Silva, S. D.. Sistemas de Bancos de Dados Heterogneos: Modelo de Execuo de Gerncia de Transaes. Tese de doutorado em informtica, Dept. de Informtica PUC-Rio. Rio de Janeiro, 1994. [Silva, 2001] SILVA, A. S. Materializao de Vises Relacionais para Dados SemiEstruturados atravs de Ontologias. Universidade Federal do Rio Grande do Sul, 2001. Dissertao de Mestrado. [Widom, 1995] WIDOM, J. Research problems in data warehousing. In: 4TH INTERNATIONAL CONFERENCE ON INFORMATION AND KNOWLEDGE MANAGEMENT, 1995. Proceedings... Baltimore, Maryland: [s.n.], 1995. p.2530.
108
[Wiederhold, 1992] WIEDERHOLD, G. Mediators in the architecture of future information systems. Computer Magazine of the Computer Group News of the IEEE Computer Group Society, [S.l.], 1992. [Wood, 1998] WOOD, L. Documento object model (dom). World Wide Web Consortium (W3C), Outubro, 1998. W3C working draft. [Yan et al., 1997] Yan, L. L.. zsu, M. T.; Liu, L.. Accessing Heterogeneous Data Through Homogenization and Integration Mediators. In 2nd Int. Conf. On Cooperative Information Systems (CoopIS97), 130-139, June 1997. [Yao et al., 1982] Yao, S. B.. Waddle, V.; Housel, B.. View Modeling and Integration Using the Functional Data Model. IEEE Trans. Software Eng., vol 8, n. 6, 544-554, November 1982. [Zhu, 2000] ZHU, Y. et al. Materializing Web data for OLAP and DSS. In: WEBAGE INFORMATION MANAGEMENT, 2000. [s.n.], 2000. p.201214.
109
9.Apndice
XML-QL ::= (Function | Query) <EOF> Function ::= 'FUNCTION' <FUN-ID> '(' (<VAR>(':' <DTD>)?)* ')' (':' <DTD>)? Query 'END' Query ::= Element | Literal | <VAR> | QueryBlock Element ::= StartTag Query EndTag StartTag ::= '<'(<ID>|<VAR>) SkolemID? Attribute* '>' SkolemID ::= <ID> '(' <VAR> (',' <VAR>)* ')' Attribute ::= <ID> '=' ('"' <STRING> '"' | <VAR> ) EndTag ::= '<' / <ID>? '>' Literal ::= <STRING> QueryBlock ::= Where Construct ('{' QueryBlock '}')* Where ::= 'WHERE' Condition (',' Condition)* Construct ::= OrderedBy? 'CONSTRUCT' Query Condition ::= Pattern BindingAs* 'IN' DataSource | Predicate Pattern ::= StartTagPattern Pattern* EndTag StartTagPattern ::= '<' RegularExpression Attribute* '>' RegularExpression ::= RegularExpression '*' | RegularExpression '+' | RegularExpression '.' RegularExpression | RegularExpression '|' RegularExpression | <VAR> | <ID> BindingAs ::= 'ELEMENT_AS' <VAR> | 'CONTENT_AS' <VAR> Predicate ::= Expression OpRel Expression Expression ::= <VAR> | <CONSTANT> OpRel ::= '<' | '<=' | '>' | '>=' | '=' | '!=' OrderedBy ::= 'ORDERED-BY' <VAR>+ DataSource ::= <VAR> | <URI> | <FUN-ID>(DataSource (',' DataSource)*) Anexo 1 : XML-QL Grammar