bancos de dados semi-estruturados e xmlr.fileto/disciplinas/velhas/ine5616-2009-2/trabs/... ·...
TRANSCRIPT
Bancos de Dados Semi-Estruturados e XML
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
Grupo:Rodrigo Pescador
Lucas SilveiraRenê Rodrigues
Eduardo DellandreaThiago Bonetti
• XML - Extensible Markup Language (Linguagem de Marcação Extensível)
• Feita para transportar dados
• É possível definir/criar as suas próprias etiquetas (tags)
• XML foi criada para ser auto-descritiva
• É uma recomendação do W3C
O que é XML: iniciando
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
• EXEMPLO:
<mensagem><de>Guilherme</de><para>Amanda</para><assunto>Encontro</assunto><texto>Depois da aula nos encontramos</texto>
</ mensagem>
Alguns dos objetivos na visão do W3C para o XML:
• XML deve ser de uso direto e fácil na Internet
• XML deve suportar uma grande variedade de aplicações
• Os documentos XML devem ser legíveis e de fácil compreensão
• Escrever software que processa XML deve ser muito simples
O que é XML: objetivos
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
• Escrever software que processa XML deve ser muito simples
• Documentos XML devem ser fáceis de criar
• XML simplifica a troca de dados
• Bancos de dados e diferentes sistemas armazenam os dados de forma incompatível entre si. É possível utilizar o XML para padronizar determinada situação e permitir o compartilhamento de informações entre diferentes instituições que utilizam diferentes sistemas.
• Por exemplo: uma instituição bancária pode enviar informações de seu sistema de controle de pagamento para o sistema de uma universidade informando sobre o pagamento da mensalidade dos
O que é XML: características
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
pagamento para o sistema de uma universidade informando sobre o pagamento da mensalidade dos alunos.
• Facilita a mudança de plataforma
• Quando da necessidade de mudança de hardware ou software de determinado sistema, a conversão de grandes volumes de dados consome muito tempo e muitas vezes acarreta perda de dados.
• Aumenta a disponibilidade dos dados
• Devido a independência de hardware e software, diversos equipamentos, como palms e celulares, podem ler e gravar dados XML.
• Todos elementos devem ter suas tags fechadas:• Em HTML você vê isso:
<p>Um texto<p>Outro texto
• Em XML é assim:<p>Um texto</p><p>Um outro texto qualquer</p>
O que é XML: sintaxe
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
• As tags XML são case sensitive
• Tags de abertura e fechamento precisam ser escritas da mesma forma:<Message>This is incorrect</message><message>This is correct</message>
• Um documento XML precisa ter um elemento root<root>
<child><subchild>.....</subchild>
</child></root>
• Podemos dizer que um documento XML está sintaticamente correto
quando obedece os seguintes aspectos:
• Há um elemento raiz (root)
• Todas as tags abertas foram fechadas
O que é XML: documento bem formatado
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
• As tags são case sensitive
• Todos elementos estão aninhados corretamente• ERRADO: <b><i>bancos de dados</b></i>
• CERTO: <b><i>bancos de dados</i></b>
• Atributos entre aspas
• O que é:
• Sucessor do DTD
• Descreve a estrutura de um documento XML
XML schema: visão geral
• Por que usar?
• Utiliza sintaxe do XML
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
• Utiliza sintaxe do XML
• Suporte para data types e Namespaces
• Maior compreensão do documento XML
• Extensível
• Documento bem formatado não é o suficiente
• Validadores:
• Ferramentas disponíveis na WEB
• Ex: W3C Schema validation
XML SCHEMA
<xsd:complexType name="SignatureValidationPolicyType">
<xsd:sequence>
<xsd:element name="SigningPeriod" type="TimePeriodType" />
...
</xsd:sequence>
XML schema: exemplo (1)
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TimePeriodType">
<xsd:sequence>
<xsd:element name="NotBefore" type="xsd:dateTime" />
<xsd:element name="NotAfter" type="xsd:dateTime"
minOccurs="0" />
</xsd:sequence>
</xsd:complexType>
XML CORRESPONDENTE
<ns2:SigningPeriod>
XML schema: exemplo (2)
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
<ns2:SigningPeriod>
<ns2:NotBefore>2008-12-01T00:00:00.000-02:00</ns2:NotBefore>
<ns2:NotAfter>2011-01-31T00:00:00.000-02:00</ns2:NotAfter>
</ns2:SigningPeriod>
• Aumento do uso de arquivos XML
• Necessidade de persistência desses arquivos
• 2 problemas com documentos XML:
Banco de dados semi-estruturado e XML
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
• Formato irregular dos dados
• Falta de soluções para os aspectos de gerenciamento de dados, como controle de integridade, gerenciamento de transações, indexação e consultas a múltiplos documentos
• Área de pesquisa divide-se em 2 partes:
• estender os já consolidados SGBDs Relacionais a dar suporte a dados XML
• criação de BDs XML Nativos
• BDs relacionais x BDs XML
Banco de dados semi-estruturado e XML
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
• BDs relacionais x BDs XML
• BD Relacional: melhor desempenho em operações numéricas de grande porte( área estatística) e permite economia de espaço em disco
• BD XML: melhor desempenho em operações que manipulem textos. Por Exemplo: pesquisar o documento cujo terceiro parágrafo começa com negrito
• Abordagens para armazenamento de documentos XML em Banco de Dados
• Sistema interno depende de XML
• Armazena documentos XML
Banco de dados semi-estruturado e XML: banco nativo
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
• Aceita XML como entrada e responde XML como saída
• O banco de dados faz esta conversão
• Pode-se fazer consulta em SQL, XSLT ou XQuery
Banco de dados semi-estruturado e XML: banco com suporte a XML
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
• Os dados são armazenados de duas maneiras:
• Em uma estrutura análoga ao XML
• Em tabelas do tipo XML
• SGBDs com XML nativo podem fornecer funcionalidades difíceis de obter em um SGBD que tenha o suporte a XML
Ex: Postgre possui suporte a XML
BD Semi-Estruturado
• Não necessita de tipos
• Estrutura é interpretada
• Esquema de dados normalmente são após a existência de dados
• Diferença entre estrutura e dados não é clara
Banco de dados semi-estruturado e XML: diferença entre BDSE e BDR
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
• Diferença entre estrutura e dados não é clara
BD Estruturado
• Estrutura é compilada
• Necessita de tipos
• Visão geral:
• Linguagem básica para consulta em XML
• Limitação: necessita que o fragmento XML seja previamente carregado
• Só possibilita exportação em XML
XML EXEMPLO
Consultas em bancos semi-estruturados: XPath
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>
• Projeção em nós:
• XPath utiliza expressões de caminho para navegar pelo documento XML
/: Projeção a partir da raiz
Ex: bookstore
//: Projeção de um nó não importa onde ele esteja
Consultas em bancos semi-estruturados: XPath
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
Ex: //author
..: Projeção do pai do nó atual
Ex:/bookstore/book/author/..
@: Projeção sob atributos
Ex: //@lang
text(): Projeção sob nós de texto
Ex: /bookstore/book/author/text()
• Seleção de nós:• Uso de predicados para selecionar um nó específico
• Predicados são usados para encontrar um nó específico ou um nó que contém um valor específico
• Predicados são sempre incorporados em colchetes
Selecionar nó específico:
Ex: book[2] -> seleciona segundo livro
Consultas em bancos semi-estruturados: XPath
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
Selecionar último nó:
Ex: author[last()] -> selecionar último autor
Selecionar todos os nós a partir de um determinado nó:
Ex: book[position() > 1] -> todos os livros após o primeiro
Selecionar todos os nós que possuem determinado atributo:
Ex: //title[@lang]
• Seleção com mais de uma condição:• É possível combinar condições:
Selecionar todos os livros com preço entre 30 e 40:
Ex: //book[price > 30 and price < 40]
Selecionar todos os livros com preço menor do que 30 ou maior do que 40:
Ex: //book[price < 30 or price > 40]
Consultas em bancos semi-estruturados: XPath
• Selecionando vários caminhos:
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
• Selecionando vários caminhos:• É possível selecionar mais de um caminho na árvore:
Selecionar todos os títulos e preços dos livros:
Ex: //book/title | //book/price
• Selecionando nodos desconhecidos:Selecionar todos os nodos filhos do elemento bookstore
Ex: /bookstore/*
Selecionar todos elementos do documento
Ex: //*
Selecionar todos os elementos title que possuam qualquer atributo
Ex: //title[@*]
• Possui biblioteca de funções:• XPath inclui mais de 100 funções embutidas. Existem funções para seqüência de caracteres, valores numéricos, comparação de data e hora, valores booleanos e muito mais
Consultas em bancos semi-estruturados: XPath
O prefixo padrão do namespace é 'fn:';
fn:string-length(string), fn:string-length() -> Retorna o tamanho da string especificada. Caso não tenha argumento irá retornar o tamanho da string do nodo corrente.
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
Ex:
string-length('bookstore')
Resultado: 9
fn:day-from-date(date) -> Retorna um inteiro que representa o dia no valor localizado no argumento.
Ex:
day-from-date(xs:date("2005-04-23"))
Result: 23
Outras funções em http://www.w3schools.com/xpath/xpath_functions.asp
Consultas em bancos semi-estruturados: XQuery
• Visão geral:• xQuery é a linguagem para consulta de dados XML
• xQuery é para banco de dados XML o que SQL é para banco de dados relacional
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
• xQuery é construído em expressões Xpath
• xQuery é projetado para consultar dados XML - não apenas os arquivos XML, mas qualquer coisa que possa aparecer como XML
• xQuery é suportado por todos os principais bancos de dados
Consultas em bancos semi-estruturados: XQuery
book.xml:
<?xml version="1.0" encoding="ISO-8859-
1"?>
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<book category="WEB">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<year>2003</year>
<price>49.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
Consultas em bancos semi-estruturados: XQuery
• Exemplo básico de uso:• doc("books.xml")/bookstore/book[price <30]
• Expressões FLWOR:• for
• let
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
let
• where
• order
• return
• Sintaxe XQuery:
• XQuery é case-sensitive
• XQuery elementos, atributos e variáveis devem ser nomes XML válidos
• Uma variável XQuery é definido com um $ seguido por um nome, por exemplo $livraria
Consultas em bancos semi-estruturados: XQuery
• Selecionar os elementos title dos livros que são filhos de bookstore e que possuam o valor do elemento price maior que 30:
doc("books.xml")/bookstore/book[price>30]/title
for $x in doc("books.xml")/bookstore/book
where $x/price>30
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
where $x/price>30
return $x/title
• XQuery Expressões Condicionais
for $x in doc("books.xml")/bookstore/book
returnif ($x/@category="CHILDREN")
then <child>{data($x/title)}</child>
else <adult>{data($x/title)}</adult>
Consultas em bancos semi-estruturados: XQuery
• Geração de HTML• Uma das maiores utilidades do XQuery é gerar HTML dinamicamente
• Possibilita que uma página possa ser atualizada apenas alterando o conteúdo do documento XML (banco de dados)
• Basta saber um pouco de HTML e fazer consultas em XQuery
• Exemplo de geração de HTML
BANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XMLBANCOS DE DADOS II – Bancos de Dados Semi-Estruturad os e XML
• Exemplo de geração de HTML
<html>
<body>
<h1>Bookstore</h1>
<ul>
{
for $x in doc( book.xml)//book
order by $x/title
return <li>{data($x/title)}. Category: {data($x/@category)}</li>
}
</ul>
</body>
</html>