bancos de dados semi-estruturados e xmlr.fileto/disciplinas/velhas/ine5616-2009-2/trabs/... ·...

25
Bancos de Dados Semi-Estruturados e XML BANCOS DE DADOS II – Bancos de Dados Semi-Estruturados e XML BANCOS DE DADOS II – Bancos de Dados Semi-Estruturados e XML BANCOS DE DADOS II – Bancos de Dados Semi-Estruturados e XML Grupo: Rodrigo Pescador Lucas Silveira Renê Rodrigues Eduardo Dellandrea Thiago Bonetti

Upload: phamtu

Post on 02-Dec-2018

215 views

Category:

Documents


0 download

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>

OBRIGADO!

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

OBRIGADO!