Você está na página 1de 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Bancos de dados XML


Conceitos e linguagens de consulta

Sidney Roberto de Sousa


MC536 - Bancos de Dados: Teoria e prtica Material base: W3Schools XPath and XQuery Tutorial http://www.w3schools.com/Xpath/ http://www.w3schools.com/xquery/default.asp

22/05/2009

1 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Persistncia XML

XML: linguagem de marcao de dados, utilizada para troca, compartilhamento e armazenamento de dados XML no persistente: existe em algum momento em memria -> troca de dados dinmica entre aplicaes XML persistente: pode existir de duas maneiras:
Documento XML: arquivo em disco Banco de dados XML: coleo de dados em XML

2 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Bancos de dados XML

Software de persistncia de dados que permite o armazenamento de dados no formato XML Dois tipos de banco de dados XML:
Com suporte a XML XML nativo

3 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Bancos de dados com suporte a XML

Mapeia todo XML para um banco de dados tradicional -> e.g., BD relacional Aceita XML como entrada Renderiza XML como sada O prprio banco de dados faz esta converso Ex: Postgre possui suporte a XML (biblioteca interna de manipulao XML)

4 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Bancos de dados XML nativos

Modelo interno depende de XML Possui documentos XML como unidade de armazenamento Apesar disso, tais documentos podem no estar armazenados necessariamente como texto! Podem utilizar a mesma estrutura fsica de armazenamento de BDs relacionais ou orientados a objeto Por qu? Tempo de resposta na consulta Hoje vamos focar em banco de dados XML nativos

5 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Mas enm, por que usar um banco de dados XML?

Razo mais convincente:


Aumento de uxo de dados entre bancos de dados tradicionais e documentos XML nos sistemas de informao atuais!

Maior ecincia (e facilidade) para converter e armazenar dados em XML

6 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Analogia: SGBD tradicional

Modelo de dados: MER Unidade de armazenamento lgica: tabela Estruturas de dados ou formatos proprietrios (e.g., arquivos comprimidos e indexados) Coleo de dados: banco de dados

7 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Analogia: SGBD XML

Modelo de dados para o documento XML -> e.g., XPath (lembram da rvore e seus ns?) Unidade de armazenamento lgica: documento XML Estruturas de dados, formatos proprietrios (e.g., arquivos comprimidos e indexados) ou arquivos de texto Coleo de dados: a maioria oferece grupos de documentos XML, chamados colees

8 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Manipulao de dados

Insero: cada SGBD possui seu conjunto de instrues (ponto negativo...) Consulta: grande maioria suporta XPath Exportao: formato XML, porm a maioria suporta Extensible Stylesheet Language Transformations - XSLT (permite output em XML, plain text, HTML, PDF, etc)

9 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

XPath

Linguagem bsica para consulta em XML Permite projeo e seleo sob ns XML Limitao: necessita que o fragmento XML (persistente ou no) seja previamente carregado S possibilita exportao em XML

10 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

XQuery

Basicamente XPath extendido para o XML o que o SQL para as tabelas de bancos de dados Desenvolvido para consultar dados em XML No apenas documentos em XML, mas qualquer coisa que se parea com XML Mais poderoso do que XPath M notcia: nem todos os SGBDs XML suportam XQuery Boa notcia: os melhores suportam!

11 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

XQuery: um breve leque de possibilidades

Extrair informao para usar em um Web Service Gerar relatrios rpidos Transformar XML em XHTML Procurar informao relevante em documentos da Web

12 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

XQuery: estrutura de consulta bsica

Estrutura de uma consulta SQL: SELECT FROM WHERE Estrutura de uma consulta bsica XQuery: FROM SELECT WHERE

13 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

XQuery: consultas FLWOR

for let where order return

14 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Vamos praticar?

XPath

15 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Projeo em ns

Projeo sob XML muito simples Basta indicar o caminho do(s) elemento(s) desejado(s) na rvore Projeo sob elementos: /bookstore/book/title Projeo sob atributos: /bookstore/book/@category

16 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Projeo em ns: Sintaxe

/: Projeo a partir da raiz //: Projeo de um n no importa onde ele esteja //author ..: Projeo do pai do n atual /bookstore/book/author/.. @: Projeo sob atributos //@lang text(): Projeo sob ns de texto /bookstore/book/author/text()

17 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Seleo de ns

Uso de predicados para selecionar um n especco Selecionar n especco: book[2] -> seleciona segundo livro Selecionar ltimo n: author[last()] -> selecionar ltimo autor Selecionar todos os ns a partir de um determinado n: book[position() > 1] -> todos os livros aps o primeiro Selecionar todos os ns que possuem determinado atributo: //title[@lang]

18 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Seleo de ns

Selecionar todos os ns que possuem determinado atributo com determinado valor: //title[@lang=eng] Selecionar todos os elementos que satisfazem uma condio: //book[price > 30.00] //book[price != 30]

19 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Exerccios

Selecione a nota de Matemtica de todos os alunos Selecione o nome de todos os alunos que tiveram notas menores ou iguais a 5 Selecione o ttulo de todos os livros da categoria Web

20 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Seleo com mais de uma condio

possvel combinar condies Selecionar todos os livros com preo entre 20 e 35: //book[price > 20 and price < 35] Selecionar todos os livros com preo menor do que 20 ou maior do que 35: //book[price < 30 or price > 35]

21 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Exerccios

Selecione o nome dos alunos que tiveram nota superior a 8 em portugus e menos de 2 faltas nesta disciplina

22 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Selecionando vrios caminhos

possvel selecionar mais de um caminho na rvore Selecionar todos os ttulos e preos dos livros: //book/title | //book/price

23 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Funes XPath

Possui mais de 100 funes pr-denidas Funes para lidar com nmeros, strings, erros, entre outros Para saber mais: http://www.w3schools.com/Xpath/xpath_functions.asp

24 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Vamos praticar?

XQuery

25 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Consulas em XQuery

Tudo o que zemos at agora pode ser feito em XQuery Porm, com XQuery possvel carregar o documento XML desejado Tente isto: doc(CAMINHO_DA_PASTA_AULA/book.xml)//book[price < 30 or price > 35] Estrutura de consulta:
FROM -> doc(CAMINHO_DA_PASTA_AULA/book.xml) SELECT -> //book WHERE -> [price < 30 or price > 35]

26 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Consultas FLWOR

Lembra um lao de repetio dentro de uma funo Exemplo: for $x in doc(CAMINHO_DA_PASTA_AULA/book.xml)//book where $x/price > 10 return $x/title

27 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Estrutura de consulta

FOR -> for $x in doc(CAMINHO_DA_PASTA_AULA/book.xml)//book (opcional) LET -> utilizar uma varivel let $x := (1 to 5) return <test>$x</test> WHERE -> where $x/price > 10 (opcional) ORDER BY -> order by $x/title RETURN -> return $x/title

28 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Exerccio

Escreva uma consulta FLWOR que retorne em ordem alfabtica o nome de todos os alunos (alunos.xml) que tem nota inferior a 8 em matemtica

29 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Condies em XQuery

possvel construir expresses IF-THEN-ELSE em XQuery Ex: for $x in doc(CAMINHO_DA_PASTA_AULA/book.xml)//book return if($x/@category=CHILDREN) then <crianca>{data($x/title)}</crianca> else <adulto>{data($x/title)}</adulto>

30 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Gerando HTML

Uma das maiores utilidades do XQuery gerar HTML dinamicamente Possibilita que uma pgina possa ser atualizada apenas alterando o contedo do documento XML (banco de dados) Basta saber um pouco de HTML e fazer consultas em XQuery

31 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Exemplo de gerao de HTML


Aps executar o exemplo, copie o resultado e salve como resultado.html <html> <body> <h1>Bookstore</h1> <ul> { for $x in doc(CAMINHO_DA_PASTA_AULA/book.xml)//book order by $x/title return <li>{data($x/title)}. Category: {data($x/@category)}</li> } </ul> </body> </html>
32 / 33

Introduo e motivao

SGBD XML Nativo

Consultas em SGBDs XML

Prtica

Exerccio

Gere uma planilha em HTML que contenha o nome de cada aluno, sua nota de matemtica e o seu nmero de faltas nesta disciplina

33 / 33