Post on 06-Jan-2016
description
Introdução à Tecnologia Introdução à Tecnologia XMLXML
Ronaldo dos Santos Melloe-mail: ronaldo@inf.ufsc.br
http://www.inf.ufsc.br/~ronaldohttp://www.grupobd.inf.ufsc.br
UFSC – CTC - INE
RoteiroRoteiro1. Introdução2. Dados e Documentos XML3. Componentes da Tecnologia XML
a) DTD e XML Schemab) XPath e XQueryc) DOMd) XSL e XSLT
4. Bancos de Dados XML5. Considerações Finais
RoteiroRoteiro1.1. IntroduçãoIntrodução2. Dados e Documentos XML3. Componentes da Tecnologia XML
a) DTD e XML Schemab) XPath e XQueryc) DOMd) XSL e XSLT
4. Bancos de Dados XML5. Considerações Finais
XML XML ((eXtensible Markup LanguageeXtensible Markup Language))
Tecnologia desenvolvida pela W3C– W3C: World Wide Web Consortium
definição de padrões para a Web– HTML, XML, Web Semântica (RDF, OWL), ...
consórcio formado pela academia e indústria
Por quê conhecer XML é importante?– padrão para representação e transferência de
dados entre pessoas e softwares formato simples e leve dados estão cada vez mais sendo armazenados em
documentos XML ao invés de BDs
Protocolos XMLProtocolos XML Definidos em diversos domínios e tecnologias
– comércio eletrônico CXML, eBisXML, ...
– domínios bibliográficos DBLP, SIGMOD, ...
– sistemas de informação geográfica SVG, GML, ...
– dispositivos móveis WML, WAP, ...
– web services SOAP, WSDL, ...
– ...
Uso Extensivo de Protocolos XML...Uso Extensivo de Protocolos XML...
Necessidades– definição da estrutura dos dados XML– métodos de acesso a dados XML
consulta e atualização
– apresentação adequada de dados XML em browsers Web, interfaces de aplicações, ...
– armazenamento de dados XML integridade, segurança, ...
– ...
Precisa-se de tecnologia para suprir estas necessidades!
RoteiroRoteiro1. Introdução2.2. Dados e Documentos XMLDados e Documentos XML3. Componentes da Tecnologia XML
a) DTD e XML Schemab) XPath e XQueryc) DOMd) XSL e XSLT
4. Bancos de Dados XML5. Considerações Finais
Formato XMLFormato XML
XML é uma meta-linguagem de marcação– meta-linguagem
XML é um padrão aberto– cada aplicação define o protocolo (linguagem) para a
representação dos seus dados
– linguagem de marcação semelhante à linguagem HTML
– padrão fechado para apresentação de dados em browsers Web utiliza tags para descrição os dados
– tag: indica a intenção do dado e delimita o seu conteúdo
Exemplo de Dado XMLExemplo de Dado XML<livro> <titulo>Tecnologia XML</titulo> <autor> <nome>João da Silva</nome> <eMail>js@hotmail.com</eMail>
<endereco> <comercial>rua A, 34 – Fpolis - SC</comercial>
<residencial>rua B, 5 – Fpolis – SC</residencial> </endereco>
</autor> ... <capitulo nome=“Introdução”>Este capítulo apresenta ... <secao>
<nome>Linguagens de Marcação</nome> ...</secao>
</capitulo> ... </livro>
tag (intenção do dado)
conteúdo do dado
estrutura hierárquica, ordenada e complexa
Sintaxe XMLSintaxe XML
Dados XML são definidos em um documento XML
Um documento XML contém– cabeçalho– dados
elementos simples ou complexos atributos de elementos referências a entidades
– comentários– instruções de processamento
Exemplo de Documento XMLExemplo de Documento XML<?xml version =“1.0” encoding ="ISO-8859-1“><!–- documento XML sobre livros --><!DOCTYPE listalivros [ <!ENTITY xml “eXtensible Markup Language”> ...]><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>
Exemplo de Documento XMLExemplo de Documento XML<?xml version =“1.0” encoding ="ISO-8859-1"><!–- documento XML sobre livros --><!DOCTYPE listalivros [ <!ENTITY xml “eXtensible Markup Language”> ...]><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>
cabeçalho
Exemplo de Documento XMLExemplo de Documento XML<?xml version =“1.0” encoding ="ISO-8859-1"><!–- documento XML sobre livros --><!DOCTYPE listalivros [ <!ENTITY xml “eXtensible Markup Language”> ...]><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>
comentário
Exemplo de Documento XMLExemplo de Documento XML<?xml version =“1.0” encoding ="ISO-8859-1"><!–- documento XML sobre livros --><!DOCTYPE listalivros [ <!ENTITY xml “eXtensible Markup Language”> ...]><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>
instrução de processamento
Exemplo de Documento XMLExemplo de Documento XML<?xml version =“1.0” encoding ="ISO-8859-1"><!–- documento XML sobre livros --><!DOCTYPE listalivros [ <!ENTITY xml “eXtensible Markup Language”> ...]><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>
elemento raiz
Exemplo de Documento XMLExemplo de Documento XML<?xml version =“1.0” encoding ="ISO-8859-1"><!–- documento XML sobre livros --><!DOCTYPE listalivros [ <!ENTITY xml “eXtensible Markup Language”> ...]><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>
elemento simples (#PCDATA)
Exemplo de Documento XMLExemplo de Documento XML<?xml version =“1.0” encoding ="ISO-8859-1"><!–- documento XML sobre livros --><!DOCTYPE listalivros [ <!ENTITY xml “eXtensible Markup Language”> ...]><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>
elemento complexo
Exemplo de Documento XMLExemplo de Documento XML<?xml version =“1.0” encoding ="ISO-8859-1"><!–- documento XML sobre livros --><!DOCTYPE listalivros [ <!ENTITY xml “eXtensible Markup Language”> ...]><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>
elemento misto
Exemplo de Documento XMLExemplo de Documento XML<?xml version =“1.0” encoding ="ISO-8859-1"><!–- documento XML sobre livros --><!DOCTYPE listalivros [ <!ENTITY xml “eXtensible Markup Language”> ...]><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>
atributo
Exemplo de Documento XMLExemplo de Documento XML<?xml version =“1.0” encoding ="ISO-8859-1"><!–- documento XML sobre livros --><!DOCTYPE listalivros [ <!ENTITY xml “eXtensible Markup Language”> ...]><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>
declaração deentidade
referência auma entidade
Documento XML Bem FormadoDocumento 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
RoteiroRoteiro1. Introdução2. Dados e Documentos XML3.3. Componentes da Tecnologia XMLComponentes da Tecnologia XML
a) DTD e XML Schemab) XPath e XQueryc) DOMd) XSL e XSLT
4. Bancos de Dados XML5. Considerações Finais
Tecnologia XML da W3CTecnologia XML da W3C
Principais recursos– definição de esquemas
DTD e XML Schema
– linguagens de consulta XPath e XQuery
– modelo de representação e interface de acesso DOM
– transformação e apresentação de dados XSL
RoteiroRoteiro1. Introdução2. Dados e Documentos XML3. Componentes da Tecnologia XML
a)a) DTD e XML SchemaDTD e XML Schemab) XPath e XQueryc) DOMd) XSL e XSLT
4. Bancos de Dados XML5. Considerações Finais
Definição de EsquemasDefiniçã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)
Document Type Definition (DTD)Document Type Definition (DTD)
Primeira recomendação da W3C Gramática para definição de hierarquia
– baseada em seqüências ordenadas e escolhas
– sintaxe proprietária
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 - ExemploDTD - 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)XML Schema (XSD) Recomendação mais recente Sintaxe XML Extensão da funcionalidade de uma DTD
– definição e especialização de tipos 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, ...
– ...
Documento XSD - ExemploDocumento 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:simpleType><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> ...
Documento XSD – Exemplo (cont.)Documento 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>
RoteiroRoteiro1. Introdução2. Dados e Documentos XML3. Componentes da Tecnologia XML
a) DTD e XML Schemab)b) XPath e XQueryXPath e XQueryc) DOMd) XSL e XSLT
4. Bancos de Dados XML5. Considerações Finais
XPathXPath
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 DOS
– exemplo expressão XPath: /livro/título resultado:
<título>Tecnologia XML</título> <título>Sistema de Banco de Dados</título>
...
XPathXPath - Exemplos - 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)
XQueryXQuery
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”)
for variável in expressãoXPath
[let associação de novas variáveis]
[where condição]
return estrutura de resultado
XQueryXQuery - Exemplos - Exemplos 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(junção)
(nova estrutura de resultado)
(consultasimples)
RoteiroRoteiro1. Introdução2. Dados e Documentos XML3. Componentes da Tecnologia XML
a) DTD e XML Schemab) XPath e XQueryc)c) DOMDOMd) XSL e XSLT
4. Bancos de Dados XML5. Considerações Finais
DOM (DOM (Document Object ModelDocument 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
Objetos do Modelo DOMObjetos do Modelo DOM
listaLivros
livro
título preço
ISBN
“Tecnologia XML” 79.00
“João da Silva”
“jsilva@xxx.com”
“js@hotmail.com”
nome mail
autor
nome
autor
“Maria Souza”
livro
. . .
document
node
element
nodelist
Exemplos de Métodos da API DOMExemplos de Métodos da API DOM
Método Resultado
documentElement Element
getElementByTagName(String) NodeList
createElement(String) Element
. . .
document
Método Resultado
tagName String
getAttribute(String) String
setAttribute(String nome, String valor) Attr
removeAttribute(String)
getElementsByTagName NodeList
. . .
element
Método Resultado
Length int
item(int) Node
nodeList
DOM – Exemplo DOM – Exemplo ((JavaScriptJavaScript))
var doc, raiz, livro1, autores, autor2;doc = new ActiveXObject(“Microsoft.XMLDOM”);doc.load(“livros.xml”);if (doc.parseError != 0) ...;else{ /* acessa o elemento raiz do documento XML */ 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);}
RoteiroRoteiro1. Introdução2. Dados e Documentos XML3. Componentes da Tecnologia XML
a) DTD e XML Schemab) XPath e XQueryc) DOMd)d) XSL e XSLTXSL e XSLT
4. Bancos de Dados XML5. Considerações Finais
XSL (XSL (XML Style sheet LanguageXML Style sheet Language))
Style sheet (folha de estilos)
– define regras para a apresentação de dados
XSL– linguagem de definição de folha de estilos para um
doc XML formatação de apresentação transformação do conteúdo do documento XML (XSLT)
– indicação de que dados serão exibidos ou descartados
– inserção de novos conteúdos
– conversão XMLHTML, XMLXML, XMLtexto puro, ...
Documento XSLDocumento XSL
Define uma folha de estilo Sintaxe XML Referenciado em um doc XML
Processador XSL– programa que valida e executa as regras
definidas em um doc XSL– alguns browsers Web processam docs XSL
<?xml version=“1.0” ?><?xml-stylesheet type=“text/xsl” href=“estilo.xsl” ?>...
Estrutura de um Doc XSL(T) Estrutura de um Doc XSL(T)
<stylesheet xmlns = "http://www.w3.org/XSL/Transform/1.0">
</template match = “/livro/autor"> ...</template>
...
</stylesheet>
elemento raiznamespace default
(DTD da W3C com instruções XSL)
padrão: indica o elemento ou atributo para o qual a regra se aplica
(expressão XPath)regra de formatação
Exemplo de Transformação XSLExemplo de Transformação XSL
<listaLivros>
<livro tipo=“tecnico” ISBN=“01”>
<título>XML Companion<\título>
<autor>
<nome>N. Bradley<\nome> ...
<\autor> ...
<\livro>
<livro tipo=“tecnico” ISBN=“02”>
<título>Data on the Web<\título>
<autor>
<nome>S. Abiteboul<\nome>...
<\autor> ...
<\livro> ...
</listaLivros>
Entrada: doc XML<stylesheet xmlns = ...>
<template match = "listaLivros">
<html><head>
<title>Livros Técnicos</title> </head>
<apply-templates/>
</html>
</template>
<template match = “livro">
<P>
<apply-templates select =
“livro[@tipo = "tecnico"]">
<sort = "título">
</apply-templates>
</P>
</template>
...
Transformação: doc XSL
processar elementos
filhos
selecionar livros
técnicos
ordenarpor
títrulo
Exemplo de Transformação XSLExemplo de Transformação XSL
<listaLivros>
<livro tipo=“tecnico” ISBN=“01”>
<título>XML Companion<\título>
<autor>
<nome>N. Bradley<\nome> ...
<\autor> ...
<\livro>
<livro tipo=“tecnico” ISBN=“02”>
<título>Data on the Web<\título>
<autor>
<nome>S. Abiteboul<\nome>...
<\autor> ...
<\livro> ...
</listaLivros>
Entrada: doc XML Transformação: doc XSL
selecionaro conteúdo
de título
...
<variable name = "separador">,</variable>
<template match = "título">
<value-of select = ".">
<value-of select = "{$separador}">
</template>
<template match = "autor/nome">
<value-of select = ".">
</template>
</stylesheet>
selecionaro conteúdo
do nomedo autor
Exemplo de Transformação XSLExemplo de Transformação XSL
<listaLivros>
<livro tipo=“tecnico” ISBN=“01”>
<título>XML Companion<\título>
<autor>
<nome>N. Bradley<\nome> ...
<\autor> ...
<\livro>
<livro tipo=“tecnico” ISBN=“02”>
<título>Data on the Web<\título>
<autor>
<nome>S. Abiteboul<\nome>...
<\autor> ...
<\livro> ...
</listaLivros>
Entrada: doc XML<html>
<head>
<title>
Livros Técnicos
</title>
</head>
<P>
XML Companion,N. Bradley
</P>
<P>
Data on the Web,S. Abiteboul
</P>
...
</html>
Saída: doc HTML
RoteiroRoteiro1. Introdução2. Dados e Documentos XML3. Componentes da Tecnologia XML
a) DTD e XML Schemab) XPath e XQueryc) DOMd) XSL e XSLT
4.4. Bancos de Dados XMLBancos de Dados XML5. Considerações Finais
XML e BDXML e BD
Dados XML– manipulação crescente por usuários e aplicações
Tecnologia de BD– necessária para a manutenção de dados
persistentes XML & BD
– XML é um dado não-convencional dado semi-estruturado
– tecnologia de BD necessita ser estendida para tratar este tipo de dado
Dado Semi-EstruturadoDado Semi-Estruturado
Principais características– estrutura heterogênea– estrutura auto-descritiva– estrutura parcial
Estrutura heterogêneaEstrutura heterogênea
Cada ocorrência de dado pode ter um esquema particular
<autor> <nome>Ronaldo Mello</nome> <endereco>rua B,23</endereco> <eMail>ronaldo@inf.ufsc.br</eMail></autor>
<autor> <nome>Patrícia Ramos</nome> <endereco> <rua>Beira-Mar</rua> <numero>767</numero> <cidade>Fpolis</cidade> </endereco> <fone>33313333</fone> <fone>33313332</fone></autor>
Estrutura auto-descritivaEstrutura auto-descritiva
Cada ocorrência de dado carrega o seu esquema
<autor> <nome>Patrícia Ramos</nome> <endereco> <rua>Beira-Mar</rua> <numero>767</numero> <cidade>Fpolis</cidade> </endereco> <fone>33313333</fone> <fone>33313332</fone></autor>
Estrutura parcialEstrutura parcial
Apenas parte da descrição de um dado pode ser estruturada
<capítulo numero = 2 titulo = “Tecnologia XML”> Este capítulo descreve ... XML<ref>(Mel03)</ref>. XML é um padrão ... <secao numero = 1>
<titulo>DTD</titulo>Esta seção descreve ...
</secao> ...</capítulo>
XML & BD XML & BD
Dados XML não são naturalmente adequados para armazenamento em BDs
Dado de BD Dado XML
representação homogênea representação heterogênea
esquema independente dos dados
representação auto-descritiva
totalmente estruturado estrutura parcial
esquema enxuto esquema extenso
BD XML Nativo (ou BD XML)BD XML Nativo (ou BD XML) Suporta um modelo de dados proprietário para
dados XML– definição de elementos, atributos, ordem, ...– não há mapeamento para um esquema de dados
relacional Adequado a
– docs XML fortemente semi-estruturados “documentos orientados a textos” mapeamento para BD relacional seria complexo! necessidade de consultas envolvendo padrões textuais
– aplicações que lidam apenas com dados no formato XML Alguns SGBDRs possuem suporte nativo a XML
– exemplos: Oracle, DB2
BD XML - Características PrincipaisBD XML - Características Principais
Esquemas lógicos baseados em coleções Consultas Atualização Conectividade Restrições de Integridade Armazenamento e indexação de dados
Alguns exemplos: SGBD XML Tamino
ColeçõesColeções
Noção lógica de um conjunto de docs XML– a decisão por quais docs XML pertencem a uma
coleção fica em geral a cargo da aplicação– uma coleção pode estar restrita a um ou mais
esquemas XML
Consultas e atualizações podem ser direcionadas a coleções
Coleções - TaminoColeções - Tamino 1 BD – n coleções – n esquemas – n tipos de documentos
– cada tipo de documento define um elemento raiz permitido
– novo doc XML: inserido em uma coleção e válido para algum tipo doc
Docs sem esquema mantidos em uma coleção específica
tipos de documentos
ConsultasConsultas Suporte a pelo menos uma linguagem de
consulta para XML– uso mais extensivo de XPath – uso de alguns dialetos da XQuery (tendência!)
Características desejadas para uma linguagem de consulta para XML– buscas textuais (por palavras-chaves, por padrões, ...)
– consultas declarativas– resultados de consultas
doc XML, fragmentos de docs XML ou novas estruturas XML
ConsultasConsultas Tamino
– consultas em XPath e XQuery estendidas– suporta busca por padrão
/livro[título ~= “*XML*”]/título
– geração de docs XML como resultado
eXist– consultas em XPath estendida– suporta busca por padrão, por palavra-chave (em
textos) e por proximidade /livro[título &=‘banco XML’]/título /livro/capitulo[near(.,’banco XML’,50)]/@nome
AtualizaçõesAtualizações
Capacidades de atualização são variadas– possibilidade apenas de substituição de um doc
XML completo– API DOM para atualização de nodos– linguagens de atualização declarativas
tendência1: XUpdate (consórcio XML:DB)– XML:DB
consórcio de empresas responsável pelo desenvolvimento de tecnologias para BDs XML
tendência2: XQuery com capacidades de atualização
XUpdateXUpdate Sintaxe XML
– I / E de elementos, atributos e texto– A do conteúdo de elementos e atributos
Exemplo 1:
(inclusão de um novo eMail para Maria)
Exemplo 2:
(remoção do primeiro livro)
<xupdate:append select=”//autor[nome=´Maria´]/eMail” child=”last()”>
<xupdate:element name="eMail">Maria@teste.com</xupdate:element>
</xupdate:append>
<xupdate:remove select="/listalivros/livro[1]"/>
Atualizações - TaminoAtualizações - Tamino
XQuery possui capacidades de atualização– insert, delete, rename e replace
Exemplos– update (inserção de autor)
for $liv in input()/livro where $liv/titulo = “XML”
do(insert (<autor><nome>João Silva</nome></autor>)
following $liv/autor[last()])
– update (alteração de eMail de autor)
for $aut in input()/livro/autor where $aut/nome = “Maria Souza”
do (replace $aut/eMail with (<eMail>ms@new.com</eMail>))
Conectividade – APIs Conectividade – APIs Interfaces ODBC tradicionais
– conexão com o BD, execução de consultas e atualizações e exploração de resultados
APIs XQuery e DOM para Java (JQX e JDOM)– JDBC como base
Protocolos HTTP– acesso via browsers Web
Consórcio XML:DB– proposta de uma API para BDs XML
manipulação de BDs e coleções; execução de consultas Xpath e XUpdate; acesso a resultados de consultas; controle de transações
APIs - TaminoAPIs - Tamino Interface principal de acesso são browsers Web
– um servidor Tamino deve estar sempre associado a um Web server (domínio Internet)
– define uma API que encapsula chamadas HTTP criação e manipulação de BDs, coleções e docs
– acesso: http://<nome_domínio>/tamino/<nome_BD>/ [<nome_coleção>]<comando_API_HTTP>
Outras formas de acesso– API DOM para aplicações Java, Jscript e Active X– API XML:DB
Tamino – Conectividade HTTPTamino – Conectividade HTTP
Restrições de IntegridadeRestrições de Integridade
RIs a nível de esquemas XML são limitadas– ordem hierárquica e restrições de cardinalidade– tipo de dado de elementos e atributos– enumeração de valores permitidos– integridade referencial intra-documento
Carência de um mecanismo de integridade mais robusto– similar a SQL em BDRs (DCL)
Integridade Semântica - Tamino Integridade Semântica - Tamino Definição de valores possíveis (fixos, defaults, enumerações, ...)
Integridade referencial controlada por stored procedures (para cada caso indicado no campo trigger)
controles de integridade
ArmazenamentoArmazenamento Docs XML “in-natura” (campo longo)
– texto do doc preservado na íntegra (cabeçalho, comentários, ...)
– armazenamento clusterizado de fragmentos do doc
Esquema de objetos (DOM ou esquema similar a BDOO)
DOM BDOO
preserva ordem de elementos não preserva ordem de elementos
qualquer esquema tem a mesma estrutura (document, element, ...)
– intenção dos dados não fica clara
esquema de classes gerado de acordo com os tipos de elementos complexos
– intenção dos dados mais clara
clusterização por profundidade
– bom p/ buscas na ordem da hierarquia
clusterização por largura
– bom p/ buscas por propriedades de um elemento
clusterização geralmente por instâncias da mesma classe
– bom para buscas por dados de determinados tipos de elementos
IndexaçãoIndexação Indexação por valor
– indexa valores de elementos simples e atributos ex: buscar elementos com valor “XML”
Indexação por estrutura– indexa a localização de elementos e atributos
ex: buscar elementos com nome “XML”
Indexação full-text– indexa tokens em textos e valores de atributos
ex: buscar elementos que contenham a palavra “XML”
RoteiroRoteiro1. Introdução2. Dados e Documentos XML3. Componentes da Tecnologia XML
a) DTD e XML Schemab) XPath e XQueryc) DOMd) XSL e XSLT
4. Bancos de Dados XML5.5. Considerações FinaisConsiderações Finais
Considerações FinaisConsiderações Finais
Uso de XML hoje é uma realidade!– formato simples e leve– representação e transferência de dados entre pessoas
e sistemas– manipulação de dados XML requer soluções para
gerenciamento de dados XML tema de pesquisa atual na comunidade de BD duas frentes de pesquisa/desenvolvimento
– extensão de SGBDs relacionais– desenvolvimento de SGBDs XML nativos
BDs XML – CríticaBDs XML – Crítica Pontos a favor
– dados XML são semi-estruturados overhead de gerenciamento para BDs não-XML
– aplicações com dados complexos ou com regras de negócio pouco claras ou muito dinâmicas flexibilidade estrutural de docs XML modela melhor as transações e
dados (complexos) personalizados do negócio
– aplicações que lidam apenas com dados XML por quê adquirir um BD não-XML?
– modelo de dados diferente; recursos para o gerenciamento de dados XML é complicado
Tecnologia relativamente recente– algumas funcionalidades de SGBDs não são ainda tratadas ou
não estão consolidadas restrições de integridade, visões, segurança, concorrência, ...
BDRs – CríticaBDRs – Crítica
SGBDs robustos– gerenciamento “completo” e eficiente de dados
Modelo de dados não é XML– necessidade de um suporte de mapeamento para
importação/exportação de dados XML overhead de processamento
– apesar de alguns SGBDRs já possuírem recursos de armazenamento nativo de XML
definição de novos padrões de acesso– como SQL/XML
– alguns SGBDRs caminham em direção a um BD híbrido (relacional e XML)
Referências RelevantesReferências Relevantes Tecnologia XML
– http://www.w3c.org/xml– http://www.w3.org/XML/Schema#Tools– http://www.w3schools.com
XML & BD– http://www.rpbourret.com/xml/XMLAndDatabases.htm
XML:DB– http://www.xmldb.org
SGBDRs com suporte a XML (Oracle e DB2)– http://www.oracle.com/technology/tech/xml/xmldb– http://www-306.ibm.com/software/data/db2/extenders/xmlext/
SQL/XML– http://sqlx.org
SGBDs XML Nativos (Tamino e eXist)– http://www.softwareag.com/tamino – http://exist-db.org/
Introdução à Tecnologia Introdução à Tecnologia XMLXML
Ronaldo dos Santos Melloe-mail: ronaldo@inf.ufsc.br
http://www.inf.ufsc.br/~ronaldohttp://www.grupobd.inf.ufsc.br
UFSC – CTC - INE