1 / 100

Gerência de Dados XML em Bancos de Dados

II Escola Regional de Banco de Dados – II ERBD Mini-Curso. Gerência de Dados XML em Bancos de Dados. Ronaldo dos Santos Mello INE/CTC/UFSC ronaldo@inf.ufsc.br http://www.inf.ufsc.br/~ronaldo. Roteiro. Introdução Tecnologia XML Gerência de Dados XML em bancos de dados relacionais

raja
Télécharger la présentation

Gerência de Dados XML em Bancos de Dados

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. II Escola Regional de Banco de Dados – II ERBD Mini-Curso Gerência de Dados XML em Bancos de Dados Ronaldo dos Santos Mello INE/CTC/UFSC ronaldo@inf.ufsc.br http://www.inf.ufsc.br/~ronaldo

  2. Roteiro • Introdução • Tecnologia XML • Gerência de Dados XML • em bancos de dados relacionais • em bancos de dados XML nativos • Considerações Finais

  3. Roteiro • Introdução • Tecnologia XML • Gerência de Dados XML • em bancos de dados relacionais • em bancos de dados XML nativos • Considerações Finais

  4. XML (eXtensible Markup Language) • Tecnologia desenvolvida pela W3C • W3C: World Wide Web Consortium • definição de padrões para a Web • consórcio formado pela academia e indústria • Padrão para representação e transferência de dados • Motivações para utilização crescente da XML • aplicações sobre a Web • extração, manipulação, integração, transferência e publicação de dados • aplicações que lidam com dados de natureza complexa • exemplos: aplicações científicas, geográficas, ... • preferência por docs XML ao invés de dados em BDs relacionais

  5. Protocolos XML • Definidos em diversos domínios e tecnologias • comércio eletrônico • CXML, eBisXML, ... • referências bibliográficas • DBLP, SIGMOD, ... • sistemas de informação geográfica • SVG, GML, ... • dispositivos móveis • WAP, WML, ... • web services • SOAP, WSDL, ... • ...

  6. Uso Extensivo de Protocolos XML... • Necessidades • métodos de acesso a dados XML pelos programas de aplicação • projeto da estrutura dos dados XML • facilidades para armazenamento e manipulação de dados XML persistentes • ... • A tecnologia de Banco de Dados (BD) é útil neste contexto

  7. Tecnologia XML x Tecnologia BD • Similaridades • documentos XML mantém coleções de dados • tecnologia XML oferece mecanismos para definição e manipulação de dados • DTD e XSD, XPath e XQuery, DOM, ... • Diferenças • dado XML não é um dado convencional • dado semi-estruturado • misto de texto e estrutura, instâncias heterogêneas, auto-descritivo, ... • tecnologia XML é carente de alguns mecanismos de gerenciamento de dados • integridade, transações, indexação, atualização, ...

  8. Tecnologia XML x Tecnologia BD • Conclusão • tecnologia XML não é totalmente equivalente à tecnologia de BD • Tópico de pesquisa na comunidade científica de BD • gerenciamento de dados XML através de BDs • como tratar? • extensão de SGBDs existentes? • desenvolvimento de SGBDs específicos para XML?

  9. Roteiro • Introdução • Tecnologia XML • Gerência de Dados XML • em bancos de dados relacionais • em bancos de dados XML nativos • Considerações Finais

  10. O que é XML? • XML é uma meta-linguagem de marcação • linguagem de marcação • semelhante à linguagem HTML • utiliza tags para descrição os dados • tag: indica a intenção do dado e delimita o seu conteúdo • meta-linguagem • XML é um padrão aberto • cada aplicação define o protocolo (linguagem) para a representação dos seus dados • Dados no formato XML são descritos em um documento XML

  11. Exemplo de Documento XML <?xml version =“1.0” encoding ="ISO-8859-1“> <!–- documento XML sobre livros --> <!DOCTYPE listaDeLivros [ <!ELEMENT listaLivros(livro+) ...]> <listaLivros> <livro ISBN=“112”> <título>Tecnologia XML</título> <autor> <nome>João da Silva</nome> <eMail>js@hotmail.com</eMail> </autor> ... <capítulo nome=“Introdução”>A XML foi ... <seção> <nome>Linguagens de Marcação</nome> ... </seção> </capítulo> ... </livro> ... </listaLivros> informações do documento elemento (raiz) atributo elemento (simples) elemento (complexo) elemento (misto) dado XML: estrutura hierárquica, ordenada e complexa

  12. Documento XML Bem Formado • Requisitos • contém um elemento raiz • define elementos com tags inicial e final • define atributos com conteúdo delimitado por aspas simples (‘) ou aspas duplas (“) • Parser XML • programa que verifica se um documento XML é bem formado • alguns browsers Web são capazes de realizar tal verificação

  13. Tecnologia XML da W3C • Principais facilidades similares a SGBDs • definição de esquemas • DTD e XSD • linguagens de consulta • XPath e XQuery • modelo de representação e interface de acesso • DOM

  14. Definição de Esquemas • Esquema XML • define restrições para a organização hierárquica e conteúdo dos dados em um doc XML • documento válido • documento cuja estrutura está de acordo com um esquema • validação é feita por um parser • Duas recomendações • DTD(Document Type Definition) • XSD(XML Schema Definition)

  15. DTD • Primeira recomendação da W3C • Gramática para definição de hierarquia • baseada em seqüências ordenadas e escolhas • Definição de elementos • complexos, textuais (#PCDATA), vazios (EMPTY), mistos ((#PCDATA | ...)*) ou com conteúdo aberto (ANY) • Definição de atributos • obrigatórios (#REQUIRED) opcionais (#IMPLIED), fixos (#FIXED), valor default, enumeração, referência (ID, IDREF(S))

  16. DTD - Exemplo <!ELEMENT listaLivros (livro+)> <!ELEMENT livro (título, preço, autor+, capítulo+)> <!ATTLIST livro ISBN ID #REQUIRED edicaoAnterior IDREF #IMPLIED> <!ELEMENT título (#PCDATA)> <!ELEMENT autor (nome, eMail?)> <!ELEMENT nome (#PCDATA)> <!ELEMENT preço (#PCDATA)> <!ELEMENT eMail (#PCDATA)> <!ELEMENT capítulo (#PCDATA | seção)*> <!ATTLIST capítulo nome CDATA #REQUIRED> <!ELEMENT seção (nome, conteúdo)> <!ELEMENT conteúdo (#PCDATA)>

  17. XML Schema (XSD) • Recomendação mais recente • Sintaxe XML • Extensão da funcionalidade de uma DTD • definição e especialização de tipos de elementos • semelhança com esquemas orientados a objetos • definição de tipos de dados • simples (string, integer, boolean, ...) • complexos (list, union) • facilidades adicionais para definição de restrições • intervalos de valores permitidos, padrões de conteúdo via expressões regulares, ... • ...

  18. XSD - Exemplo <?xml version=“1.0” encoding=“UTF-8”> <xsd:schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”> ... <!-– Declaração de Tipos --> <xsd:simpleType name=“Tisbn”> <xsd:restriction base=“xsd:string”> <xsd:pattern value=“[0-9]{2}-[0-9]{3}-[0-9]{4}-[0-9]”/> </xsd:restriction> </xsd:simpeType> <xsd:complexType name=“Tlivro”> <xsd:sequence> <xsd:element name=“titulo” type=“xsd:string”/> <xsd:element name=“autor” type=“Tautor” minOccurs=“1” maxOccurs=“unbounded”/> <xsd:element name=“preço” type=“xsd:float“/> ... </xsd:sequence> <xsd:attribute name=“isbn” type=“Tisbn”/> </xsd:complexType> ...

  19. XSD – Exemplo (cont.) ... <xsd:complexType name=“TlivroTécnico” base=“Tlivro” derivedBy=“extension”> <xsd:element name=”area" type=“xsd:string" minOccurs=“1” maxOccurs=“1”/> </complexType> ... <!-– Declaração de Elementos --> <xsd:element name=“listaLivros”> <xsd:complexType> <xsd:element name=“livro” type=“Tlivro”/> minOccurs=“1” maxOccurs=“unbounded”/> </xsd:complexType> </xsd:element> </xsd:schema>

  20. XPath • Primeira recomendação para consulta a dados • Linguagem para acessar partes de um doc XML • sintaxe: expressões de caminho • assemelha-se à navegação em diretórios de arquivos • exemplo • expressão XPath: /livro/título • resultado: <título>Tecnologia XML</título> <título>Sistema de Banco de Dados</título> ...

  21. XPath - Exemplos /(elemento raiz – todo o doc XML) /livro/*/eMail(‘*’ substitui 1 elem) /livro//seção(qq elemento descendente seção) /livro/capítulo[1](primeiro capítulo de livros) /livro/capítulo/nome | /livro/capítulo/seção/nome(união) /livro/@ISBN(acesso a um atributo) /livro[título = “XML”] (filtro) /livro[capitulo/@nome = “XML” or //seção/nome = “XML”]/título(filtro) /livro//seção[last()] (função)

  22. XQuery • Recomendação mais recente • Recursos adicionais em relação à XPath • junções, definição de estruturas de resultado, variáveis de consulta, atributos calculados, funções de agregação, ... • Sintaxe básica (expressão “FLWR”) forvariável in expressãoXPath [letassociação de novas variáveis] [wherecondição] returnestrutura de resultado

  23. XQuery - Exemplos (consulta simples) for $liv in /livro where $liv/autor/nome = “João Silva” return { $liv/@ISBN, $liv/titulo } • for $liv in /livro • let $pDesc := $liv/preço - $liv/preço * 0.1 • where $liv/categoria = “ficcao” • return <FiccaoDesc>{$liv/titulo, $pDesc}</FiccaoDesc> • for $liv1 in /livro[@ISBN = “562”] • for $liv2 in /livro • where $liv2/@ISBN != $liv1/@ISBN • and $liv2/autor/nome = $liv1/autor/nome • return $liv2/titulo (nova estrutura de resultado) (junção)

  24. DOM (Document Object Model) • Modelo de dados para XML • estrutura hierárquica (árvore) • métodos de acesso (API DOM) • principais classes de objetos • document, node, nodelist e element • execução de consultas e atualizações de dados • Parsers DOM • validam um doc XML • geram um objeto document

  25. título mail Objetos do Modelo DOM document node listaLivros . . . livro ISBN livro preço autor autor “Tecnologia XML” 79.00 element nome nome “Maria Souza” “js@hotmail.com” “João da Silva” “jsilva@xxx.com” nodelist

  26. Exemplos de Métodos da API DOM document nodeList element

  27. DOM – Exemplo (JavaScript) var doc, raiz, livro1, autores, autor2; doc = new ActiveXObject(“Microsoft.XMLDOM”); doc.load(“livros.xml”); if (doc.parseError != 0) ...; else { raiz = doc.documentElement; /* busca o primeiro livro (primeiro nodo filho) */ livro1 = raiz.childNodes.item(0); /* busca a lista de autores do primeiro livro */ autores = livro1.getElementsbyTagName(“autor”); /* busca o segundo autor */ autor2 = autores.item(1); /* escreve o nome do autor – primeiro nodo filho */ document.write(“Nome do segundo autor: “ + autor.childNodes.item(0).data); }

  28. Roteiro • Introdução • Tecnologia XML • Gerência de Dados XML • em bancos de dados relacionais • em bancos de dados XML nativos • Considerações Finais

  29. XML em BDs Relacionais (BDRs) • BDRs são adequados a • docs XML fortemente estruturados • “documentos orientados a registros” • aplicações que realizam intercâmbio de dados convencionais em XML • dados de BD, arquivos, docs bem formatados em geral <endereço> <rua>Beira-Mar</rua><numero>104</numero><complemento>apto 203</complemento> <bairro>centro</bairro><cidade>Florianópolis</cidade> <cep>88010-600</cep> </endereço> <endereço> <rua>Lauro Linhares</rua><numero>761</numero><bairro>trindade</bairro> <cidade>Florianópolis</cidade><cep>88040-900</cep> </endereço>

  30. XML em BDRs • Vantagem • uso de uma tecnologia madura de BD • acesso eficiente • escalabilidade • linguagens de consulta declarativas • ampla utilização no mercado • Vários SGBDs já lidam com o formato XML • Oracle, DB2, ... • Questões básicas a resolver • armazenamento dos docs XML • acesso aos dados XML

  31. Armazenamento de XML em BDR • Duas abordagens • esquemas de armazenamento que não levam em conta o esquema XML (no schema-based) • aresta • rótulo • nodo • níveis de granularidade • esquemas de armazenamento que levam em conta o esquema XML (schema-based) • inlining visão de grafo

  32. listaLivros . . . 1 livro . . . 2 3 capítulo ISBN 8 . . . autor “112” título 4 nome 5 9 nome eMail “XML” “Introdução” 7 6 “João Silva” ”js@xxx.com" Abordagem no schema-based • Nas três primeiras alternativas • doc XML é armazenado na forma de um grafo orientado rotulado • ênfase na estrutura de dados genérica XML • esquema relacional é o mesmo para qq tipo de doc <?xml version =“1.0” encoding = ...> <listaLivros> <livro ISBN=“112”> <título>XML</título> <autor> <nome>João Silva</nome> <eMail>js@xxx.com</eMail> </autor> <capítulo nome=“Introdução”> ... </capítulo> ... </livro> ... </listaLivros> livros.xml

  33. 3 4 6 Alternativa 1 - Aresta listaLivros LivrosXMLArestas . . . 1 livro . . . 2 capítulo ISBN 8 . . . autor “112” título nome 5 9 nome eMail “XML” “Introdução” 7 “João Silva” ”js@xxx.com"

  34. . . . listaLivros . . . 1 livro . . . 2 capítulo ISBN 8 . . . autor “112” título nome 5 9 nome eMail “XML” “Introdução” 7 “João Silva” ”js@xxx.com" 3 4 6 Alternativa 2 – Rótulo Autor Título eMail Livro . . .

  35. 3 4 6 Alternativa 3 – Nodo Caminhos . . . listaLivros . . . 1 livro . . . 2 capítulo ISBN 8 . . . autor “112” título nome 5 Nodos 9 nome eMail “XML” “Introdução” 7 “João Silva” ”js@xxx.com" Textos

  36. Comparativo das Alternativas

  37. Alternativa Níveis de Granularidade • Considera três níveis de detalhamento de docs XML para fins de armazenamento • granularidade grande • granularidade pequena • granularidade média

  38. Granularidade Grande Documentos --- <?xml version =“1.0” encoding = ...> <listaLivros> <livro ISBN=“112”> <título>XML</título> <autor> <nome>João Silva</nome> <eMail>js@xxx.com</eMail> </autor> <capítulo nome=“Introdução”> ... </capítulo> ... </livro> ... </listaLivros> livros.xml

  39. Granularidade Pequena Elementos Atributos Conteúdos (de elementos simples) <?xml version =“1.0” encoding = ...> <listaLivros> <livro ISBN=“112”> <título>XML</título> <autor> <nome>João Silva</nome> <eMail>js@xxx.com</eMail> </autor> <capítulo nome=“Introdução”> ... </capítulo> ... </livro> ... </listaLivros> Documentos livros.xml

  40. Granularidade Média Elementos Atributos Textos --- <?xml version =“1.0” encoding = ...> <listaLivros> <livro ISBN=“112”> <título>XML</título> <autor> <nome>João Silva</nome> <eMail>js@xxx.com</eMail> </autor> <capítulo nome=“Introdução”> ... </capítulo> ... </livro> ... </listaLivros> Conteúdos Documentos livros.xml

  41. Níveis de Granularidade - Análise Granularidade Grande Granularidade Média Granularidade Pequena • aumenta a complexidade da reconstrução do doc XML • melhora o desempenho de consultas • granularidade grande: buscas por palavras-chave X • granularidade pequena: consulta e indexação de qualquer tipo de elemento ou atributo (coluna tag) e do conteúdo (coluna valor) • diminui o volume de armazenamento • granularidade grande/média: tags do doc ocupam muito espaço

  42. Abordagem schema-based • Doc XML é armazenado em um conjunto de tabelas baseado no seu esquema de elementos • ênfase na estrutura dos elementos • docs diferentes geram esquemas relacionais diferentes • Abordagem principal • Inlining (alinhamento) • agrupamento do maior número possível de descendentes na tabela do elemento ancestral • elementos simples ou atributos que aparecem uma única vez • tabelas são geradas para • elementos complexos • relacionamentos com descendentes que ocorrem mais de uma vez no elemento ancestral

  43. Abordagem Inlining - Exemplo <!ELEMENT listaLivros (livro+)> <!ELEMENT livro (título, preço, autor+, capítulo+)> <!ATTLIST livro ISBN ID #REQUIRED edicaoAnterior IDREF #IMPLIED> <!ELEMENT título (#PCDATA)> <!ELEMENT autor (nome, eMail?)> <!ELEMENT nome (#PCDATA)> <!ELEMENT preço (#PCDATA)> <!ELEMENT eMail (#PCDATA)> <!ELEMENT capítulo (#PCDATA | seção)*> <!ATTLIST capítulo nome CDATA #REQUIRED> <!ELEMENT seção (nome, conteúdo)> <!ELEMENT conteúdo (#PCDATA)> Esquema XML (DTD) Seção (ID, nome, conteúdo, IDcapítulo) ConteúdoCapítulo (ID, texto, IDcapítulo) Capítulo (ID, nome, ISBN) Autor (ID, nome, eMail, ISBN) Livro (ISBN, titulo, preço, ediçãoAnterior, IDlistaLivros) Esquema Relacional + : esquema relacional mais próximo da organização lógica do esquema XML − : esquema relacional não totalmente normalizado; exige sempre docs com esquema

  44. Projeto do Esquema Relacional • Depende das prioridades da aplicação • prioriza-se a reconstrução do doc XML • granularidade grande ou média • prioriza-se navegações por relacionamentos hierárquicos • aresta; nodo; inlining • prioriza-se consultas a determinados tipos de elementos • rótulo; granularidade média ou pequena; inlining • prioriza-se economia no espaço de armazenamento • aresta; nodo; granularidade pequena • ...

  45. Projeto do Esquema Relacional • Combinações de alternativas podem ser adotadas • exemplo: rótulo + granularidade média • possibilidade de consulta a um tipo de elemento ou atributo até o nível de detalhe desejado • certa economia de espaço • desempenho médio na reconstrução do doc XML

  46. Análise de SGBDRs - DB2 XML Extender • Armazenamento de doc XML • com granularidade grande • coluna XMLCLOB, XMLVarchar ou XMLFile • próximo de uma abordagem inlining • definição um DAD (Database Action Diagram) • documento XSD estendido com anotações de mapeamento

  47. Exemplo 1 – DB2 XML Extender • Armazenamento com granularidade grande CREATE TABLE Documentos ( docID VARCHAR(10) NOT NULL PRIMARY KEY nome VARCHAR(40) conteúdo XMLCLOB);

  48. Exemplo 2 – DB2 XML Extender • Armazenamento com definições de mapeamento através de DAD <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE DAD PUBLIC "dadId" "dad.dtd"> <DAD> <dtdid>livros.dtd</dtdid> <Xcollection> ... <prolog>?xml version="1.0"?</prolog> ... <element_node name=“livro"> <RDB_node> <table name=“Livros" key=“códLivro"/> <table name=”Capítulos” key=“códCapto”> ... </RDB_node> <attribute_node nome = “titulo”> <RDB_node> <table name=“Livros”/> <column name=“titulo” type=“varchar(50)”/> </RDB_node> </attribute_node>... </DAD> elemento a mapear tabelas relacionais que mantêm dados do elemento mapeamento de elementos simples ou atributos para colunas de tabelas

  49. Exemplo 3 – DB2 XML Extender • Armazenamento com definições de mapeamento em um doc XSD estendido ... <xsd:element name=“livro"> <xsd:complex_type> <xsd:sequence> <xsd:element name=“titulo" type=“xsd:string" db2-xdb:rowSet=“Livros” db2-xdb:column=“titulo”/> <xsd:element name=“preço" type=“xsd:integer" db2-xdb:rowSet=“Livros” db2-xdb:column=“valor”/> ... </xsd:sequence> </xsd:complex_type> </xsd:element> ...

  50. Oracle XML DB • Armazenamento de doc XML • granularidade grande • coluna CLOB • Exemplo create table DocsXMLEstruturados( docID varchar(10), nome varchar2(40), conteúdo CLOB)

More Related