Oracle XML DB
-
Upload
diego-lusa -
Category
Technology
-
view
59 -
download
7
Transcript of Oracle XML DB
Banco de Dados XML
Diego A. Lusa
Banco de Dados IIConceitos Avancados
7 de Novembro de 2014
1 / 18
Sumario
1. Conceitos BasicosXMLNamespaces
2. Oracle XML DBCaracterısticasXMLTypeInstrucoes DDLInstrucoes DML
2 / 18
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
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
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
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
Oracle XML DB
7 / 18
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
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
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
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
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
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
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
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
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
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
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