1.01k likes | 1.23k Views
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
E N D
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 • em bancos de dados XML nativos • Considerações Finais
Roteiro • Introdução • Tecnologia XML • Gerência de Dados XML • em bancos de dados relacionais • em bancos de dados XML nativos • Considerações Finais
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
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, ... • ...
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
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, ...
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?
Roteiro • Introdução • Tecnologia XML • Gerência de Dados XML • em bancos de dados relacionais • em bancos de dados XML nativos • Considerações Finais
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
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
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
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
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)
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))
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)>
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, ... • ...
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> ...
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>
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> ...
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)
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
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)
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
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
Exemplos de Métodos da API DOM document nodeList element
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); }
Roteiro • Introdução • Tecnologia XML • Gerência de Dados XML • em bancos de dados relacionais • em bancos de dados XML nativos • Considerações Finais
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>
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
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
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
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"
. . . 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 . . .
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
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
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
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
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
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
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
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
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 • ...
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
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
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);
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
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> ...
Oracle XML DB • Armazenamento de doc XML • granularidade grande • coluna CLOB • Exemplo create table DocsXMLEstruturados( docID varchar(10), nome varchar2(40), conteúdo CLOB)