Oracle XML DB

18
Banco de Dados XML Diego A. Lusa Banco de Dados II ConceitosAvan¸cados 7 de Novembro de 2014 1 / 18

Transcript of Oracle XML DB

Page 1: Oracle XML DB

Banco de Dados XML

Diego A. Lusa

Banco de Dados IIConceitos Avancados

7 de Novembro de 2014

1 / 18

Page 2: Oracle XML DB

Sumario

1. Conceitos BasicosXMLNamespaces

2. Oracle XML DBCaracterısticasXMLTypeInstrucoes DDLInstrucoes DML

2 / 18

Page 3: Oracle XML DB

XML - eXtensible Markup Language

I Linguagem criada para descrever dados

I E uma linguagem de marcacao que nao apresenta um conjunto detags pre-definidas

I E extensıvel e muito utilizada na Web e em arquiteturas SOA

Exemplo<?xml version="1.0" encoding="UTF-8"?>

<alunos>

<aluno>

<nome>Fulano</nome>

<sobrenome>de Tal</sobrenome>

<matricula>83473</matricula>

</aluno>

</alunos>

3 / 18

Page 4: Oracle XML DB

XML - namespaces

I E um metodo utilizado para evitar conflitos de nome dos elementosno XML

I Qualifica o elemento

I Um nome qualificado (QName) e composto pelo namespace + nomedo elemento, no formato {Namespace}:nome

I Utiliza-se prefixos para facilitar o uso de namespaces

I Por convencao, um namespace e declarado no formato de uma URI

4 / 18

Page 5: Oracle XML DB

XML - namespaces

Exemplo<?xml version="1.0" encoding="UTF-8"?>

<alunos xmlns="http://upf.br/alunos">

<mstr:aluno xmlns:mstr="http://upf.br/mestrado">

<nome>Fulano</nome>

</mstr:aluno>

<grd:aluno xmlns:gdr="http://upf.br/graduacao">

<nombre>Fulano</nombre>

</grd:aluno>

<doc:aluno xmlns:doc="http://upf.br/doutorado">

<name>Fulano</name>

</doc:aluno>

</alunos>

5 / 18

Page 6: Oracle XML DB

XPath

I Linguagem utilizada para localizar informacoes em estruturas XML

I Oferece um conjunto de operadores e uma sintaxe formal de consulta

I Utiliza-se a hierarquia do schema definido para gerar as consultas

I E utilizada conjuntamente a linguagem XSLT

Exemplo/alunos/aluno[0]/nome/text()

/alunos/*:aluno[name = ’Fulano’ and age>10]/id

/alunos/doc:aluno/matricula

/catalogo/album[@artista="Yanni"]

/catalogo/album[@artista="Yanni" and @ano=2014]

6 / 18

Page 7: Oracle XML DB

Oracle XML DB

7 / 18

Page 8: Oracle XML DB

Caracterısticas basicas

I E um conjunto de tecnologias para o banco de dados Oracle, voltadasa:

Armazenamento de dados XMLCriacao de dados em formato XMLAcesso, busca, validacao, transformacao, conversao e indexacao dedados XML

I Incluıdo como parte do Oracle Database a partir da versao Oracle9iRelease 2 (9.2)

I Prove meios para interoperar SQL e XML

8 / 18

Page 9: Oracle XML DB

Caracterısticas basicas

I Permite gravar dados XML na base de tres formas distintas:

Estruturado: Utilizando o tipo de dado XMLType. E mais otimizadoque as demais formas de persistencia.Desestruturado: Utilizando o tipo de dado CLOB. Oferece maiorflexibilidade.Binario: Utilizando o tipo de dado BLOB. Melhor tecnica paraarmazenamento eficaz.

9 / 18

Page 10: Oracle XML DB

XMLType

I Tipo de dado SQL nativo criado para armazenar documentos XML

I Pode-se utiliza-lo como coluna, variavel ou argumento em funcoes eprocedimentos

I Tambem e possıvel criar uma tabela do tipo XMLType

I Apenas estruturas XML bem formadas sao aceitas pelo tipo XMLType

I Adicionalmente, os documentos podem ser validados contra seu XMLSchema

10 / 18

Page 11: Oracle XML DB

Criando tabelas

Exemplo

--Tabela com coluna XMLType

create table xml_documento (

doc_id number not null,

descricao varchar2(200) not null,

documento xmltype not null,

constraint pk_xml_documento primary key(doc_id)

);

--Tabela do tipo XMLType

create table xml_documento_objeto of xmltype;

11 / 18

Page 12: Oracle XML DB

Inserindo dados

Exemploinsert into xml_documento_objeto values (

XMLTYPE(

’<?xml version="1.0"?>

<crs:cursos xmlns:crs="http://upf.br/cursos">

<cr:curso tipo="mestrado" xmlns:cr="http://upf.br/cursos/curso">

<alunos>

<aluno>

<nome>Fulano</nome>

<matricula>12345</matricula>

</aluno>

<aluno>

<nome>Ciclano</nome>

<matricula>34512</matricula>

</aluno>

</alunos>

</cr:curso>

</crs:cursos>

’));

12 / 18

Page 13: Oracle XML DB

Atualizando dados

I Para atualizar algum valor existente dentro da estrutura do XMLutiliza-se o procedimento updateXML.

I Dentre os argumentos do procedimento esta a expressao XPath queindica o ponto exato da atualizacao

Exemplo-- Atualizando primeiro aluno do mestrado

update XML_DOCUMENTO_OBJETO o set o.object_value = updateXML(

o.OBJECT_VALUE,--documento

’/cs:cursos/c:curso[@tipo="mestrado"]/alunos/aluno[1]/nome/text()’,--onde atualizar

’Aluno atualizado’,-- novo valor

’xmlns:c="http://upf.br/cursos/curso" xmlns:cs="http://upf.br/cursos"’ --namespaces

);

13 / 18

Page 14: Oracle XML DB

Atualizando dados

I Para inserir novos valores dentro da estrutura do XML pode-seutilizar os procedimentos:

insertChildXMLinsertChildXMLBeforeinsertChildXMLAfterappendChildXML

I Dentre os argumentos do procedimento esta a expressao XPath queindica o ponto exato da insercao

14 / 18

Page 15: Oracle XML DB

Atualizando dados

Exemploupdate XML_DOCUMENTO_OBJETO o set o.object_value =

insertChildXML(o.OBJECT_VALUE,’/cs:cursos/c:curso[@tipo="mestrado"]/alunos’,

’aluno’,

XMLType(’

<aluno>

<nome>Novo aluno inserido</nome>

<matricula>mst:12345</matricula>

</aluno>

’),

’xmlns:c="http://upf.br/cursos/curso" xmlns:cs="http://upf.br/cursos"’);

update XML_DOCUMENTO_OBJETO o set o.object_value =

appendChildXML(

o.OBJECT_VALUE,

’/cs:cursos/c:curso[@tipo="fundamental"]/alunos’,

XMLType(’

<aluno>

<nome>Fulano do fundamental</nome>

<matricula>1111</matricula>

</aluno>

’),

’xmlns:c="http://upf.br/cursos/curso" xmlns:cs="http://upf.br/cursos"’);

15 / 18

Page 16: Oracle XML DB

Eliminando dados

I Para remover algum valor existente dentro da estrutura do XMLutiliza-se o procedimento deleteXML.

I Dentre os argumentos do procedimento esta a expressao XPath queindica o ponto exato da remocao

Exemploupdate XML_DOCUMENTO_OBJETO o set o.object_value =

deleteXML(

o.OBJECT_VALUE,

’/cs:cursos/c:curso[@tipo="doutorado"]/alunos/aluno[matricula="doc34512"]’,

’xmlns:c="http://upf.br/cursos/curso" xmlns:cs="http://upf.br/cursos"’

);

16 / 18

Page 17: Oracle XML DB

Recuperando dados

I Para extraır valores da estrutura XML utilizam-se os metodos extracte/ou extractValue;

I Dentre os argumentos do procedimento esta a expressao XPath queindica o ponto exato da recuperacao dos dados;

Exemploselect d.descricao, d.DOCUMENTO.extract(

’/cs:cursos/c:curso[@tipo="mestrado"]/alunos/aluno[1]/nome/text()’,

’xmlns:c="http://upf.br/cursos/curso" xmlns:cs="http://upf.br/cursos"’

).getStringVal() as valor from xml_documento d;

17 / 18

Page 18: Oracle XML DB

Consultas Bibliograficas

Adams, Drew. Oracle R© XML DB Developer’s Guide 11g Release 2 (11.2).Edicao Fevereiro de 2014. Acesso em: 30 out. 2014. Disponıvel em:http://docs.oracle.com/cd/E11882_01/appdev.112/e23094/toc.htm

18 / 18