A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Gerência de Dados XML em Bancos de Dados

Apresentações semelhantes


Apresentação em tema: "Gerência de Dados XML em Bancos de Dados"— Transcrição da apresentação:

1 Gerência de Dados XML em Bancos de Dados
II Escola Regional de Banco de Dados – II ERBD Mini-Curso Gerência de Dados XML em Bancos de Dados - Visão geral (mais em profundidade que em abrangência) das 2 principais abordagens de gerencia de dados XML: BDR e BDXML Ronaldo dos Santos Mello INE/CTC/UFSC

2 Roteiro Introdução Tecnologia XML Gerência de Dados XML
em bancos de dados relacionais em bancos de dados XML nativos Considerações Finais

3 Roteiro Introdução Tecnologia XML Gerência de Dados XML
em bancos de dados relacionais em bancos de dados XML nativos Considerações Finais

4 XML (eXtensible Markup Language)
Tecnologia desenvolvida pela W3C W3C: World Wide Web Consortium definição de padrões para a Web consórcio formado pela academia e indústria Padrão para representação e transferência de dados Motivações para utilização crescente da XML aplicações sobre a Web extração, manipulação, integração, transferência e publicação de dados aplicações que lidam com dados de natureza complexa exemplos: aplicações científicas, geográficas, ... preferência por docs XML ao invés de dados em BDs relacionais Aplicacoes na Web: maquinas de busca (extracao, transferencia, manipulacao e publicacao), comercio eletronico (manipulacao, transferencia, publicacao), sistemas semanticos de busca na Web (extracao, transferencia, integracao e publicacao) Aplicacoes cientificas (dados biologicos, aplicacoes de engenharia (pecas mecanicas, projetos eletronicos, ...))

5 Protocolos XML Definidos em diversos domínios e tecnologias
comércio eletrônico CXML, eBisXML, ... referências bibliográficas DBLP, SIGMOD, ... sistemas de informação geográfica SVG, GML, ... dispositivos móveis WAP, WML, ... web services SOAP, WSDL, ... ...

6 Uso Extensivo de Protocolos XML...
Necessidades métodos de acesso a dados XML pelos programas de aplicação projeto da estrutura dos dados XML facilidades para armazenamento e manipulação de dados XML persistentes ... A tecnologia de Banco de Dados (BD) é útil neste contexto Metodos de acesso (linguagens de consulta) Armazenamento eficiente com indexacao; facil insercao, atualizacao e exclusao de docs e dados XML

7 Tecnologia XML x Tecnologia BD
Similaridades documentos XML mantém coleções de dados tecnologia XML oferece mecanismos para definição e manipulação de dados DTD e XSD, XPath e XQuery, DOM, ... Diferenças dado XML não é um dado convencional dado semi-estruturado misto de texto e estrutura, instâncias heterogêneas, auto-descritivo, ... tecnologia XML é carente de alguns mecanismos de gerenciamento de dados integridade, transações, indexação, atualização, ... - Mais adiante veremos um exemplo de dado XML onde serah possivel verificar as suas caracteristicas semi-estruturadas!

8 Tecnologia XML x Tecnologia BD
Conclusão tecnologia XML não é totalmente equivalente à tecnologia de BD Tópico de pesquisa na comunidade científica de BD gerenciamento de dados XML através de BDs como tratar? extensão de SGBDs existentes? desenvolvimento de SGBDs específicos para XML? - Como tratar? Na verdade existe no mercado as 2 tendencias (SGBDR com suporte a XML e SGBD XML)

9 Roteiro Tecnologia XML Introdução Gerência de Dados XML
em bancos de dados relacionais em bancos de dados XML nativos Considerações Finais - Objetivo não eh se estender muito neste tópico. Este não eh um mini-curso sobre XML

10 O que é XML? XML é uma meta-linguagem de marcação
semelhante à linguagem HTML utiliza tags para descrição os dados tag: indica a intenção do dado e delimita o seu conteúdo meta-linguagem XML é um padrão aberto cada aplicação define o protocolo (linguagem) para a representação dos seus dados Dados no formato XML são descritos em um documento XML

11 Exemplo de Documento XML
<?xml version =“1.0” encoding ="ISO “> <!–- documento XML sobre livros --> <!DOCTYPE listaDeLivros [ <!ELEMENT listaLivros(livro+) ...]> <listaLivros> <livro ISBN=“112”> <título>Tecnologia XML</título> <autor> <nome>João da Silva</nome> </autor> ... <capítulo nome=“Introdução”>A XML foi ... <seção> <nome>Linguagens de Marcação</nome> ... </seção> </capítulo> ... </livro> ... </listaLivros> informações do documento elemento (raiz) atributo elemento (simples) elemento (complexo) elemento (misto) dado XML: estrutura hierárquica, ordenada e complexa

12 Documento XML Bem Formado
Requisitos contém um elemento raiz define elementos com tags inicial e final define atributos com conteúdo delimitado por aspas simples (‘) ou aspas duplas (“) Parser XML programa que verifica se um documento XML é bem formado alguns browsers Web são capazes de realizar tal verificação É o mínimo que se espera de um documento XML!

13 Tecnologia XML da W3C Principais facilidades similares a SGBDs
definição de esquemas DTD e XSD linguagens de consulta XPath e XQuery modelo de representação e interface de acesso DOM - Existem outras tecnologias, como XSL e SAX (por questões de tempo não serão apresentadas)

14 Definição de Esquemas Esquema XML Duas recomendações
define restrições para a organização hierárquica e conteúdo dos dados em um doc XML documento válido documento cuja estrutura está de acordo com um esquema validação é feita por um parser Duas recomendações DTD (Document Type Definition) XSD (XML Schema Definition)

15 DTD Primeira recomendação da W3C
Gramática para definição de hierarquia baseada em seqüências ordenadas e escolhas Definição de elementos complexos, textuais (#PCDATA), vazios (EMPTY), mistos ((#PCDATA | ...)*) ou com conteúdo aberto (ANY) Definição de atributos obrigatórios (#REQUIRED) opcionais (#IMPLIED), fixos (#FIXED), valor default, enumeração, referência (ID, IDREF(S))

16 DTD - Exemplo <!ELEMENT listaLivros (livro+)>
<!ELEMENT livro (título, preço, autor+, capítulo+)> <!ATTLIST livro ISBN ID #REQUIRED edicaoAnterior IDREF #IMPLIED> <!ELEMENT título (#PCDATA)> <!ELEMENT autor (nome, ?)> <!ELEMENT nome (#PCDATA)> <!ELEMENT preço (#PCDATA)> <!ELEMENT (#PCDATA)> <!ELEMENT capítulo (#PCDATA | seção)*> <!ATTLIST capítulo nome CDATA #REQUIRED> <!ELEMENT seção (nome, conteúdo)> <!ELEMENT conteúdo (#PCDATA)>

17 XML Schema (XSD) Recomendação mais recente Sintaxe XML
Extensão da funcionalidade de uma DTD definição e especialização de tipos de elementos semelhança com esquemas orientados a objetos definição de tipos de dados simples (string, integer, boolean, ...) complexos (list, union) facilidades adicionais para definição de restrições intervalos de valores permitidos, padrões de conteúdo via expressões regulares, ... ...

18 XSD - Exemplo <?xml version=“1.0” encoding=“UTF-8”>
<xsd:schema xmlns:xsd=“ ... <!-– Declaração de Tipos --> <xsd:simpleType name=“Tisbn”> <xsd:restriction base=“xsd:string”> <xsd:pattern value=“[0-9]{2}-[0-9]{3}-[0-9]{4}-[0-9]”/> </xsd:restriction> </xsd:simpeType> <xsd:complexType name=“Tlivro”> <xsd:sequence> <xsd:element name=“titulo” type=“xsd:string”/> <xsd:element name=“autor” type=“Tautor” minOccurs=“1” maxOccurs=“unbounded”/> <xsd:element name=“preço” type=“xsd:float“/> ... </xsd:sequence> <xsd:attribute name=“isbn” type=“Tisbn”/> </xsd:complexType>

19 XSD – Exemplo (cont.) ... <xsd:complexType name=“TlivroTécnico” base=“Tlivro” derivedBy=“extension”> <xsd:element name=”area" type=“xsd:string" minOccurs=“1” maxOccurs=“1”/> </complexType> <!-– Declaração de Elementos --> <xsd:element name=“listaLivros”> <xsd:complexType> <xsd:element name=“livro” type=“Tlivro”/> minOccurs=“1” maxOccurs=“unbounded”/> </xsd:complexType> </xsd:element> </xsd:schema>

20 XPath Primeira recomendação para consulta a dados
Linguagem para acessar partes de um doc XML sintaxe: expressões de caminho assemelha-se à navegação em diretórios de arquivos exemplo expressão XPath: /livro/título resultado: <título>Tecnologia XML</título> <título>Sistema de Banco de Dados</título> ...

21 XPath - Exemplos / (elemento raiz – todo o doc XML)
/livro/*/ (‘*’ substitui 1 elem) /livro//seção (qq elemento descendente seção) /livro/capítulo[1] (primeiro capítulo de livros) /livro/capítulo/nome | /livro/capítulo/seção/nome (união) (acesso a um atributo) /livro[título = “XML”] (filtro) = “XML” or //seção/nome = “XML”]/título (filtro) /livro//seção[last()] (função)

22 XQuery Recomendação mais recente
Recursos adicionais em relação à XPath junções, definição de estruturas de resultado, variáveis de consulta, atributos calculados, funções de agregação, ... Sintaxe básica (expressão “FLWR”) for variável in expressãoXPath [let associação de novas variáveis] [where condição] return estrutura de resultado

23 XQuery - Exemplos for $liv in /livro (consulta simples)
where $liv/autor/nome = “João Silva” return { $liv/titulo } (consulta simples) for $liv in /livro let $pDesc := $liv/preço - $liv/preço * 0.1 where $liv/categoria = “ficcao” return <FiccaoDesc>{$liv/titulo, $pDesc}</FiccaoDesc> for $liv1 in = “562”] for $liv2 in /livro where != and $liv2/autor/nome = $liv1/autor/nome return $liv2/titulo (nova estrutura de resultado) (junção)

24 DOM (Document Object Model)
Modelo de dados para XML estrutura hierárquica (árvore) métodos de acesso (API DOM) principais classes de objetos document, node, nodelist e element execução de consultas e atualizações de dados Parsers DOM validam um doc XML geram um objeto document

25 Objetos do Modelo DOM document node element nodelist . . . listaLivros
ISBN livro título preço autor autor “Tecnologia XML” 79.00 - Node: generalização de um nodo XML (que pode ser um elemento, atributo ou texto) element nome mail nome “João da Silva” “Maria Souza” nodelist

26 Exemplos de Métodos da API DOM
document Método Resultado documentElement Element getElementByTagName(String) NodeList createElement(String) . . . nodeList Método Resultado Length int item(int) Node element Método Resultado tagName String getAttribute(String) setAttribute(String nome, String valor) Attr removeAttribute(String) getElementsByTagName NodeList . . .

27 DOM – Exemplo (JavaScript)
var doc, raiz, livro1, autores, autor2; doc = new ActiveXObject(“Microsoft.XMLDOM”); doc.load(“livros.xml”); if (doc.parseError != 0) ...; else { raiz = doc.documentElement; /* busca o primeiro livro (primeiro nodo filho) */ livro1 = raiz.childNodes.item(0); /* busca a lista de autores do primeiro livro */ autores = livro1.getElementsbyTagName(“autor”); /* busca o segundo autor */ autor2 = autores.item(1); /* escreve o nome do autor – primeiro nodo filho */ document.write(“Nome do segundo autor: “ + autor.childNodes.item(0).data); }

28 Roteiro Gerência de Dados XML Introdução Tecnologia XML
em bancos de dados relacionais em bancos de dados XML nativos Considerações Finais - Revisada a tecnologia XML, entramos na segunda parte do mini-curso, onde veremos um panorama da gerencia XML em BDs

29 XML em BDs Relacionais (BDRs)
BDRs são adequados a docs XML fortemente estruturados “documentos orientados a registros” aplicações que realizam intercâmbio de dados convencionais em XML dados de BD, arquivos, docs bem formatados em geral <endereço> <rua>Beira-Mar</rua><numero>104</numero><complemento>apto 203</complemento> <bairro>centro</bairro><cidade>Florianópolis</cidade> <cep> </cep> </endereço> <rua>Lauro Linhares</rua><numero>761</numero><bairro>trindade</bairro> <cidade>Florianópolis</cidade><cep> </cep> Documentos orientados a registros: ESTRUTURA DOS DADOS ASSEMELHA-SE A ESTRUTURA DE UM REGISTRO (OU TUPLA) EM UM BDR (OU AO RESULTADO DE UMA DESNORMALIZACAO DE UM ESQUEMA RELACIONAL)

30 XML em BDRs Vantagem Vários SGBDs já lidam com o formato XML
uso de uma tecnologia madura de BD acesso eficiente escalabilidade linguagens de consulta declarativas ampla utilização no mercado Vários SGBDs já lidam com o formato XML Oracle, DB2, ... Questões básicas a resolver armazenamento dos docs XML acesso aos dados XML

31 Armazenamento de XML em BDR
Duas abordagens esquemas de armazenamento que não levam em conta o esquema XML (no schema-based) aresta rótulo nodo níveis de granularidade esquemas de armazenamento que levam em conta o esquema XML (schema-based) inlining visão de grafo NO SCHEMA-BASED: armazenam qq documento XML da mesma forma (utilizando o mesmo esquema, que se baseia na estrutura generica de grafo hierarquico do XML) SCHEMA-BASED: geram um esquema relacional com base na estrutura especifica de elementos de um doc XML Inlining: “alinhamento”

32 Abordagem no schema-based
Nas três primeiras alternativas doc XML é armazenado na forma de um grafo orientado rotulado ênfase na estrutura de dados genérica XML esquema relacional é o mesmo para qq tipo de doc <?xml version =“1.0” encoding = ...> <listaLivros> <livro ISBN=“112”> <título>XML</título> <autor> <nome>João Silva</nome> </autor> <capítulo nome=“Introdução”> ... </capítulo> ... </livro> ... </listaLivros> 6 livro título . . . listaLivros ISBN nome autor capítulo “XML” “Introdução” “112” 2 1 3 4 5 “João Silva” 7 8 9 livros.xml

33 Alternativa 1 - Aresta LivrosXMLArestas origem ordem nome tipo destino
listaLivros LivrosXMLArestas . . . 1 livro origem ordem nome tipo destino valor 1 listaLivros ref livro 2 ... ISBN int 3 112 título string 4 XML autor 5 capítulo 8 6 João Silva . . . 2 ISBN capítulo 8 . . . 3 autor “112” título nome 4 5 nome “XML” 9 “Introdução” 6 7 Mantém os dados do doc XML em uma única tabela Tabela mantem as ARESTAS da estrutura XML (ou seja, as setas orientadas, com indicação de origem e destino, nome do rotulo, tipo (SE CONDUZ A UM VALOR (tipo de dado básico), ou é um REFERENCIA a um elemento complexo), e qual o VALOR do nodo destino, se for o caso) “João Silva”

34 Alternativa 2 – Rótulo Autor Título eMail Livro . . . docID origem
6 livro título . . . listaLivros ISBN nome autor capítulo “XML” “Introdução” “112” 2 1 3 4 5 “João Silva” 7 8 9 docID origem ordem destino 100 2 3 5 ... Título docID origem ordem destino valor 100 2 4 XML ... Uma tabela para cada nome único de rótulo existente na estrutura XML (com atributos semelhantes a alternativa de ARESTA) Rótulos que conduzem a nodos valores possuem um atributo adicional (VALOR) Livro docID origem ordem destino valor 100 5 2 7 ... docID origem ordem destino 100 1 2 ... . . .

35 Alternativa 3 – Nodo Caminhos Nodos Textos ID expressão ... X
. . . listaLivros ID expressão ... X listaLivros.livro.autor Y listaLivros.livro.autor. . . . 1 livro . . . 2 ISBN capítulo 8 . . . 3 autor “112” título nome 4 5 Nodos nome “XML” 9 “Introdução” docID camID inicio fim ordem 100 X 5 7 3 ... 6 7 “João Silva” Mantém sempre 3 tabelas: uma para os NODOS e outra para os TEXTOS dos nodos (qdo eles forem terminais), ambas com indicação dos caminhos até eles, mantidos na tabela CAMINHOS Facilita a analise de descendentes de um nodo (através dos atributos INICIO e FIM) Textos docID camID nodo valor 100 Y 7 ...

36 Comparativo das Alternativas
Aresta Rótulo Nodo + Tabela única Bom desempenho em buscas na hierarquia do doc Não há desperdício de espaço Bom desempenho em buscas por um certo tipo de elemento ou atributo Bom desempenho em buscas por relacionamentos ancestral-descendente Poucas tabelas - Colunas nulas Desempenho ruim em buscas por um certo tipo de elemento ou atributo Várias tabelas Desempenho ruim em buscas na hierarquia do doc (acesso a muitas tabelas) Os conteúdos dos nodos são mantidos em uma tabela separada Desempenho ruim na reconstrução do doc XML (muitos acessos) Não há distinção entre elemento e atributo ARESTA: RUIM: valores nulos no atributo VALOR, qdo a aresta conduz a um nodo não-terminal; como é uma tabela única, fica difícil localizar um determinado tipo de atributo ou elemento; BOM: mantém relações pai-filho ROTULO: BOM: colunas sempre preenchidas; dados separados por nome de rótulo – permite localizar rápido nodos por rótulo e partir dele os seus descendentes; RUIM: dados muito fragmentados em tabelas, muitas junções NODO: BOM: colunas sempre preenchidas; a tupla de um nodo não-terminal mantém as informações da sua sub-arvore; não tem tabelas organizadas por tipos de elementos ou atributos, dificultando esse tipo de busca; junções são necessárias para busca de valores de elementos ou atributos

37 Alternativa Níveis de Granularidade
Considera três níveis de detalhamento de docs XML para fins de armazenamento granularidade grande granularidade pequena granularidade média

38 Granularidade Grande Documentos livros.xml --- DocID Nome Conteúdo 1
. . . Documentos --- <?xml version =“1.0” encoding = ...> <listaLivros> <livro ISBN=“112”> <título>XML</título> <autor> <nome>João Silva</nome> </autor> <capítulo nome=“Introdução”> ... </capítulo> ... </livro> ... </listaLivros> livros.xml

39 Granularidade Pequena
Elementos Atributos elemID tag elemPai ordem doc 1 listaLivros 2 livro 3 título . . . atrID tag elem ordem valor 1 ISBN 2 112 ... Conteúdos (de elementos simples) contID valor elem 1 XML 3 2 João Silva 5 . . . <?xml version =“1.0” encoding = ...> <listaLivros> <livro ISBN=“112”> <título>XML</título> <autor> <nome>João Silva</nome> </autor> <capítulo nome=“Introdução”> ... </capítulo> ... </livro> ... </listaLivros> Documentos docID nome raiz 1 livros.xml . . . livros.xml

40 Granularidade Média Textos Elementos Atributos Conteúdos Documentos
elemID tag elemPai ordem doc 1 listaLivros 2 livro 3 título . . . atrID tag elem ordem valor 1 ISBN 2 112 ... Textos contID conteúdo elem ordem 1 2 3 . . . --- <?xml version =“1.0” encoding = ...> <listaLivros> <livro ISBN=“112”> <título>XML</título> <autor> <nome>João Silva</nome> </autor> <capítulo nome=“Introdução”> ... </capítulo> ... </livro> ... </listaLivros> Conteúdos contID valor elem . . . Documentos docID nome raiz . ... livros.xml

41 Níveis de Granularidade - Análise
Grande Granularidade Média Granularidade Pequena aumenta a complexidade da reconstrução do doc XML melhora o desempenho de consultas granularidade grande: buscas por palavras-chave X granularidade pequena: consulta e indexação de qualquer tipo de elemento ou atributo (coluna tag) e do conteúdo (coluna valor) diminui o volume de armazenamento granularidade grande/média: tags do doc ocupam muito espaço

42 Abordagem schema-based
Doc XML é armazenado em um conjunto de tabelas baseado no seu esquema de elementos ênfase na estrutura dos elementos docs diferentes geram esquemas relacionais diferentes Abordagem principal Inlining (alinhamento) agrupamento do maior número possível de descendentes na tabela do elemento ancestral elementos simples ou atributos que aparecem uma única vez tabelas são geradas para elementos complexos relacionamentos com descendentes que ocorrem mais de uma vez no elemento ancestral

43 Abordagem Inlining - Exemplo
<!ELEMENT listaLivros (livro+)> <!ELEMENT livro (título, preço, autor+, capítulo+)> <!ATTLIST livro ISBN ID #REQUIRED edicaoAnterior IDREF #IMPLIED> <!ELEMENT título (#PCDATA)> <!ELEMENT autor (nome, ?)> <!ELEMENT nome (#PCDATA)> <!ELEMENT preço (#PCDATA)> <!ELEMENT (#PCDATA)> <!ELEMENT capítulo (#PCDATA | seção)*> <!ATTLIST capítulo nome CDATA #REQUIRED> <!ELEMENT seção (nome, conteúdo)> <!ELEMENT conteúdo (#PCDATA)> Esquema XML (DTD) Seção (ID, nome, conteúdo, IDcapítulo) ConteúdoCapítulo (ID, texto, IDcapítulo) Capítulo (ID, nome, ISBN) Autor (ID, nome, , ISBN) Livro (ISBN, titulo, preço, ediçãoAnterior, IDlistaLivros) Esquema Relacional + : esquema relacional mais próximo da organização lógica do esquema XML − : esquema relacional não totalmente normalizado; exige sempre docs com esquema

44 Projeto do Esquema Relacional
Depende das prioridades da aplicação prioriza-se a reconstrução do doc XML granularidade grande ou média prioriza-se navegações por relacionamentos hierárquicos aresta; nodo; inlining prioriza-se consultas a determinados tipos de elementos rótulo; granularidade média ou pequena; inlining prioriza-se economia no espaço de armazenamento aresta; nodo; granularidade pequena ...

45 Projeto do Esquema Relacional
Combinações de alternativas podem ser adotadas exemplo: rótulo + granularidade média possibilidade de consulta a um tipo de elemento ou atributo até o nível de detalhe desejado certa economia de espaço desempenho médio na reconstrução do doc XML ROTULO gera uma tabela para cada tag. Com GRANULARIDADE MEDIA, geram-se tabelas até um certo nível hierárquico

46 Análise de SGBDRs - DB2 XML Extender
Armazenamento de doc XML com granularidade grande coluna XMLCLOB, XMLVarchar ou XMLFile próximo de uma abordagem inlining definição um DAD (Database Action Diagram) documento XSD estendido com anotações de mapeamento

47 Exemplo 1 – DB2 XML Extender
Armazenamento com granularidade grande CREATE TABLE Documentos ( docID VARCHAR(10) NOT NULL PRIMARY KEY nome VARCHAR(40) conteúdo XMLCLOB);

48 Exemplo 2 – DB2 XML Extender
Armazenamento com definições de mapeamento através de DAD <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE DAD PUBLIC "dadId" "dad.dtd"> <DAD> <dtdid>livros.dtd</dtdid> <Xcollection> ... <prolog>?xml version="1.0"?</prolog> ... <element_node name=“livro"> <RDB_node> <table name=“Livros" key=“códLivro"/> <table name=”Capítulos” key=“códCapto”> ... </RDB_node> <attribute_node nome = “titulo”> <table name=“Livros”/> <column name=“titulo” type=“varchar(50)”/> </attribute_node> ... </DAD> elemento a mapear tabelas relacionais que mantêm dados do elemento mapeamento de elementos simples ou atributos para colunas de tabelas

49 Exemplo 3 – DB2 XML Extender
Armazenamento com definições de mapeamento em um doc XSD estendido ... <xsd:element name=“livro"> <xsd:complex_type> <xsd:sequence> <xsd:element name=“titulo" type=“xsd:string" db2-xdb:rowSet=“Livros” db2-xdb:column=“titulo”/> <xsd:element name=“preço" type=“xsd:integer" db2-xdb:column=“valor”/> </xsd:sequence> </xsd:complex_type> </xsd:element>

50 Oracle XML DB Armazenamento de doc XML Exemplo granularidade grande
coluna CLOB Exemplo create table DocsXMLEstruturados( docID varchar(10), nome varchar2(40), conteúdo CLOB)

51 SQL Server Armazenamento de doc XML próximo de uma abordagem inlining
forma declarativa função OPENXML invocada em instruções SQL documento XSD estendido com anotações de mapeamento abordagem aresta função OPENXML

52 Exemplo 1 – SQL Server Armazenamento de forma declarativa
definido de forma ad hoc apontador do doc XML select * into Livros from with (codLivro varchar(11) titulo varchar(50) ‘titulo’, preco numeric(5,2) ‘preço’, ...) elemento a armazenar forma de mapeamento (*) - Se fosse “2” todos os nomes na clausula WITH são de sub-elementos (a menos que na clausula WITH haja indicacao que o nome eh de um atributo) (*) indica a proveniência de um dado, de acordo com o seu nome, a menos que a cláusula WITH indique explicitamente sua localização: 1: centrada em atributo: dados vêm de atributos 2: centrada em elemento: dados vêm de sub-elementos 3: híbrido: dados vêm de atributos (tem precedência) ou de sub-elementos

53 Exemplo 2 – SQL Server Armazenamento de forma declarativa
segundo uma abordagem aresta (“enxuta”) tabela única para o doc XML (ou parte dele) cláusula WITH não informada considera textos como nodos da árvore XML select * into ArvoreXMLLivro from ÁrvoreXMLLivro IDpai ID conteúdo tipoNodo 1 livro 2 3 ISBN 4 112 5 título ... tipoNodo: 1: elemento 2: atributo 3: texto

54 Exemplo 3 – SQL Server Armazenamento com definições de mapeamento em um doc XSD estendido <xsd:schema xmlns:xsd=" xmlns:sql="urn:schemas-microsoft-com:mapping-schema"> <xsd:element name="Cust" sql:relation="Customers"> <xsd:complexType> <xsd:sequence> <xsd:element name="CustNo" sql:field="CustomerId“ type="xsd:integer" /> <xsd:element name="Contact" sql:field="ContactName" type="xsd:string" /> . . . </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> - Semelhante ao DB2

55 Acesso a Dados XML em BDRs
Armazenamento dos dados XML é relacional SQL é o padrão para acesso! Esquemas relacionais mais detalhados exs.: granularidade pequena, rótulo ou inlining instruções SQL tradicionais resolvem! Esquemas relacionais mais compactos exs.: granularidade grande/média consultas SQL especiais sobre o conteúdo do doc Resultados de consultas no formato XML

56 SQL/XML Padrão ANSI ISO derivado do SQL
Métodos para manipulação de dados XML através da SQL principais funcionalidades consulta ao conteúdo de docs XML geração de estruturas XML como resultado de uma consulta SQL atualização de docs XML Oracle e DB2 adotam grande parte do padrão MySQL implementa algumas funcionalidades

57 Acesso ao Conteúdo de Docs XML
Exemplo1 – DB2 XML Extender select docID, nome from Documentos where extract Varchar (conteúdo, “/livro/título”) like “%XML%” nome de coluna que mantém o doc XML Método utilizado na clausula WHERE

58 Acesso ao Conteúdo de Docs XML
Exemplo2 – Oracle XML DB select extractValue (conteúdo,'/livro/título') from DocsXMLEstruturados where existsNode(conteúdo,'/livro/autor/nome') = “João Silva” resultado tabular Método utilizado na parte SELECT (extractValue) Metodo utulizado na parte WHERE (existsNode)

59 Resultados de Consultas em XML
Exemplo 3 – DB2 e Oracle SELECT XMLElement(“Livro", XMLAttributes(l.codLivro AS “ISBN“, l.titulo AS “titulo”), XMLAgg( XMLElement(“Capitulo", XMLForest (c.codCapto AS “numero”, c.nome AS “nome”))) FROM livros l INNER JOIN capitulos c ON l.codLivro = c.codLivro GROUP BY l.codLivro; define atributos de um elemento XML define um elemento XML define uma seqüência de elementos - Resultados de consulta MAIS ELABORADOS no formato XML define uma agregação de sub-elementos com base em um agrupamento (por Livro, no caso)

60 Resultados de Consultas em XML
Exemplo 3 – DB2 e Oracle resultado <Livro ISBN=112 titulo=“XML"> <Capítulo> <numero>1</numero> <nome>Introdução</nome> </Capítulo> <numero>2</numero> <nome>Sintaxe XML</nome> ... </Livro> <Livro ISBN=119 titulo=“XML Schema">

61 Resultados na Forma de Docs XML
Granularidade grande seleção direta da coluna que mantém o doc XML na íntegra Geração doc XML a partir de dados de tabelas Oracle XML DB métodos da API DBMS_XMLGEN geram docs XML a partir do resultado de consultas SQL DB2 XML Extender define-se um esquema de mapeamento relacionalXML (DADs) utiliza-se métodos específicos de geração de docs XML a partir desta DAD

62 Geração de Docs XML Exemplo – Oracle XML DB trecho de programa PL/SQL
para consultas SQL/XML fragmento XML do resultado é transformado em um doc XML para consultas SQL convencionais uma transformação predefinida para uma estrutura XML é aplicada (através dos métodos DBMS_XMLGEN) DECLARE qCtx DBMS_XMLGen.ctxHandle; result CLOB; BEGIN qCtx := DBMS_XMLGen.newContext('SELECT ... '); result := DBMS_XMLGen.getXML(qCtx); DBMS_XMLGen.closeContext(qCtx); END;

63 Atualização de Conteúdo XML
Granularidade grande inclusão/exclusão/substituição do doc XML Operadores SQL/XML de atualização (Oracle) insertChildXML(), insertXMLBefore(), appendChildXML(), deleteXML(), updateXML() Métodos proprietários executados na instrução update da SQL (DB2) Não há padronização...

64 Exemplo 1 – Oracle XML DB Atualização via SQL/XML
update EsquemaLivros p set object_value = updateXML(object_value, ‘/livro/preco/text()’, ‘117.50’) where ref(p) = (select extractValue(res, ‘/livro[ISBN=112]’) from DocsXMLEstruturados where docID = 100) esquema XML registrado no Oracle (atualização deve respeitá-lo) objeto default do Oracle para conteúdo XML variável com os dados XML a atualizar

65 Exemplo 2 – DB2 XML Extender
Atualização via instrução update da SQL com método proprietário db2xml.Update() update Documentos set conteudo = db2xml.Update (conteudo, ’/livro[ISBN=112]/preço’, ‘117.50’) where docID = ‘100’;

66 Acesso XML – Outros BDRs
SQL Server extensão proprietária da SQL (métodos e cláusulas) geração de resultados no formato XML escrita de dados em docs XML updategrams sintaxe XML para atualização de docs XML execução em APIs para acesso a BD (ADO, OLE DB) MySQL alguns recursos da SQL/XML para consulta extensões das cláusulas insert e update da SQL para inserção e substituição de fragmentos de docs XML -

67 Roteiro em bancos de dados XML nativos Introdução Tecnologia XML
Gerência de Dados XML em bancos de dados relacionais em bancos de dados XML nativos Considerações Finais

68 BD XML Nativo (ou BD XML)
Suporta um modelo de dados proprietário para dados XML definição de elementos, atributos, ordem, ... não há mapeamento para um esquema de dados relacional Adequado a docs XML fortemente semi-estruturados “documentos orientados a textos” mapeamento para BD relacional seria complexo! necessidade de consultas envolvendo padrões textuais aplicações que lidam apenas com dados no formato XML Alguns SGBDRs possuem suporte nativo a XML exemplos: Oracle, DB2 O modelo de dados serah detalhado mais adiante DOCS ORIENTADOS A TEXTOS: diversas partes do conteudo do documento não eh estruturado

69 BD XML Documento Orientado a Texto
fortemente semi-estruturado representação menos estruturada e homogênea Tópico atual de pesquisa e desenvolvimento na área de BD exemplos de SGBDs XML: Tamino, eXist, ... <anuncio> <transacao>Vendo</transação>, por motivo de viagem,<produto>automóvel Gol I 97 </produto>, cor azul, em ótimo estado de conservação. Preço: R$<preco>9000,00</preco>. Tratar com<contato><nome>Pedro</nome> fone</fone> </fone></contato> </anuncio> Atenção! Se você deseja vender o seu veículo, nós realizamos o melhor negócio. <transacao>Compramos</transação> qq tipo de <produto>veículo</produto>. Ligue-nos: <contato><fone> </fone> ou envie um Outros exemplos de BD XML: Xindice (Apache), dbXML (dbXML group), Sedna,

70 BD XML - Características Principais
Esquemas lógicos baseados em coleções Consultas Atualização Transações Conectividade Restrições de Integridade Armazenamento e indexação de dados - Transacoes e Ris : SUPORTE LIMITADO!

71 Coleções Noção lógica de um conjunto de docs XML
a decisão por quais docs XML pertencem a uma coleção fica em geral a cargo da aplicação + : flexibilidade quanto ao conteúdo da coleção - : baixo nível de integridade dos dados uma coleção pode estar restrita a um ou mais esquemas XML Consultas e atualizações podem ser direcionadas a coleções Similar a um BDR que define um esquema composto por varias tabelas: um BD XML organiza docs XML em colecoes, sendo possivel esses docs serem validos perante um ou mais esquemas associados a colecao

72 Coleções - Tamino 1 BD – n coleções – n esquemas – n tipos de documentos cada tipo de documento define um elemento raiz permitido novo doc XML: inserido em uma coleção e válido para algum tipo doc Docs sem esquema mantidos em uma coleção específica Docs sem esquema para valida-los ficam na colecao INO:ETC Um tipo de documento deve ser definido como elemento raiz em pelo menos um dos esquemas existentes na colecao tipos de documentos

73 Consultas Suporte a pelo menos uma linguagem de consulta para XML
uso mais extensivo de XPath uso de alguns dialetos da XQuery (tendência!) Características desejadas para uma linguagem de consulta para XML buscas textuais (por palavras-chaves, por padrões, ...) consultas declarativas resultados de consultas doc XML, fragmentos de docs XML ou novas estruturas XML Consultas declarativas são desejadas para se alcancar um poder de expressao similar a de um BD convencional

74 Consultas Tamino eXist consultas em XPath e XQuery estendidas
suporta busca por padrão /livro[título ~= “*XML*”]/título geração de docs XML como resultado eXist consultas em XPath estendida suporta busca por padrão, por palavra-chave (em textos) e por proximidade /livro[título &=‘banco XML’]/título /livro/capitulo[near(.,’banco

75 Atualizações Capacidades de atualização são variadas
possibilidade apenas de substituição de um doc XML completo API DOM para atualização de nodos linguagens de atualização declarativas tendência1: XUpdate (consórcio XML:DB) XML:DB consórcio de empresas responsável pelo desenvolvimento de tecnologias para BDs XML tendência2: XQuery com capacidades de atualização

76 XUpdate Sintaxe XML Exemplo 1: Exemplo 2:
I / E de elementos, atributos e texto A do conteúdo de elementos e atributos Exemplo 1: (inclusão de um novo para Maria) Exemplo 2: (remoção do primeiro livro) <xupdate:append select=”//autor[nome=´Maria´]/ ” child=”last()”> <xupdate:element </xupdate:append> <xupdate:remove select="/listalivros/livro[1]"/>

77 Atualizações - Tamino XQuery possui capacidades de atualização
insert, delete, rename e replace Exemplos update (inserção de autor) for $liv in input()/livro where $liv/titulo = “XML” do(insert (<autor><nome>João Silva</nome></autor>) following $liv/autor[last()]) update (alteração de de autor) for $aut in input()/livro/autor where $aut/nome = “Maria Souza” do (replace $aut/ with

78 Gerência de Transações
Controle convencional de concorrência e recuperação contra falhas Granularidade de bloqueios coleção doc XML (bloqueio usual – baixo nível de concorrência) elementos

79 Gerência de Transações - Tamino
Usuários definem sessões de conexão com o BD várias transações podem ocorrer dentro de uma sessão interrupção da sessão implica rollback de todas as transações pendentes mecanismo de log e backup de dados deadlock transação mais recente tem prioridade Granularidade de bloqueio é sempre o doc XML - Limitacao dos BDs XML eh permitir bloqueio apenas ateh o nivel de DOCUMENTO, limitando a concorrencia! Pesquisas atuais buscam definir tecnicas de bloqueio a estruturas em arvore

80 Conectividade – APIs Interfaces ODBC tradicionais
conexão com o BD, execução de consultas e atualizações e exploração de resultados XQuery API para Java (JQX) JDBC como base Protocolos HTTP acesso via browsers Web Consórcio XML:DB proposta de uma API para BDs XML manipulação de BDs e coleções; execução de consultas Xpath e XUpdate; acesso a resultados de consultas; controle de transações

81 APIs - Tamino Interface principal de acesso são browsers Web
um servidor Tamino deve estar sempre associado a um Web server (domínio Internet) define uma API que encapsula chamadas HTTP criação e manipulação de BDs, coleções e docs acesso: [<nome_coleção>]<comando_API_HTTP> Outras formas de acesso API DOM para aplicações Java, Jscript e Active X API XML:DB

82 Tamino – Conectividade HTTP

83 Restrições de Integridade
RIs a nível de esquemas XML são limitadas ordem hierárquica e restrições de cardinalidade tipo de dado de elementos e atributos enumeração de valores permitidos integridade referencial intra-documento Carência de um mecanismo de integridade mais robusto similar a SQL em BDRs (DCL)

84 Integridade Semântica - Tamino
Definição de valores possíveis (fixos, defaults, enumerações, ...) Integridade referencial controlada por stored procedures (para cada caso indicado no campo trigger) controles de integridade

85 Armazenamento Docs XML “in-natura” (campo longo)
texto do doc preservado na íntegra (cabeçalho, comentários, ...) armazenamento clusterizado de fragmentos do doc Esquema de objetos (DOM ou esquema similar a BDOO) DOM BDOO preserva ordem de elementos não preserva ordem de elementos qualquer esquema tem a mesma estrutura (document, element, ...) intenção dos dados não fica clara esquema de classes gerado de acordo com os tipos de elementos complexos intenção dos dados mais clara clusterização por profundidade bom p/ buscas na ordem da hierarquia clusterização por largura bom p/ buscas por propriedades de um elemento clusterização geralmente por instâncias da mesma classe bom para buscas por dados de determinados tipos de elementos Na abordagem DOM Clusterizacao por largura mantem proximos todos os sub-elementos MAIS DIRETOS de um certo elemento, facilitando consultas que filtrem mais de uma propriedade deste elemento Na abordagem BDOO Modelo de classes eh similar ao modelo XML (ambos são modelos de objetos complexos). Por isso o mapeamento não eh complexo.

86 Indexação Indexação por valor Indexação por estrutura
indexa valores de elementos simples e atributos ex: buscar elementos com valor “XML” Indexação por estrutura indexa a localização de elementos e atributos ex: buscar elementos com nome “XML” Indexação full-text indexa tokens em textos e valores de atributos ex: buscar elementos que contenham a palavra “XML”

87 Exemplo de Indexação - eXist
Índices são IDs numéricos para nodos, com uma numeração dada por uma busca em largura supondo uma árvore sempre completa (“nodos virtuais”) certas propriedades da árvore permitem calcular o ID de nodos filhos, pai e irmãos ex.: maxFilhos = 4  filhos de n  [ID(n)*4+1, ID(n)*4+4] livro Facilita a BUSCA NO ARQUIVO DE INDICES por entradas correspondentes aos filhos de um certo elemento; Essa estratégia independe do tipo de clusterização dos dados, pois é aplicada sobre o arquivo de índices título 1 preço 2 autor 3 autor 4 “XML & BD” 79.00 nome nome 8 12 15 16 19 20 . . .

88 XML Nativo em BDR – Oracle XML DB
Tipo nativo XMLType usado para definir uma coluna, tabela (coleções de docs XML) ou variável PL/SQL mantém um doc XML bem formado existem métodos específicos para sua manipulação funções SQL/XML, validação com esquema XSD, ... Registro de esquemas XSD armazenados e acessados para validar docs XML podem ser associados a uma coluna XMLType garante docs XML válidos AGORA UM PANORAMA DO GERENCIAMENTO NATIVO DE XML EM ALGUNS BANCOS DE DADOS RELACIONAIS!!!!!!!!!!! - Esquemas XSD são mantidos no ORACLE XML STORAGE (reservado apenas para dados e metadados XML)

89 XML Nativo em BDR– Oracle XML DB
Armazenamento objeto-relacional decomposição em objetos SQL (Oracle é BDOR!) aproveita facilidades de gerência OR do Oracle baseia-se no esquema do doc XML para a conversão de tipos complexos de elementos em tipos SQL Indexação por valor (árvore-B) full-text (utilizado em CLOB ou XMLType) por caminho (indexa expressões XPath em CLOB ou XMLType) útil para alcançar dados presentes em hierarquias específicas

90 XML Nativo em BDR– Oracle XML DB
Consulta a dados XML nativos função XMLQuery embute XQuery em SQL possibilitando junções de dados relacionais e XML exemplo: select XMLQuery( ‘for $liv in /livro where $liv/autor/nome = “Maria Souza” return $liv/titulo’ passing conteúdo returning content) as titulo from DocsXMLEstruturados; tradução de expressões XPath para instruções SQL3 processamento e otimização de consultas a nível OR Atualização API específica para o tipo XMLType appendChildXML(), insertXLBefore(), ... coluna do tipo XMLType retorno de valores no formato de tabela Tem overhead para mapeamento de esquemas, dados e consultas XML para o modelo OR

91 árvore do doc XML é particionada em páginas
XML Nativo em BDR – DB2 Tipo nativo XML pode ser associado a uma coluna de uma tabela Armazenamento hierárquico proprietário com manutenção de ordem e economia de espaço substitui: nomes de tags por IDs e relações pai-filho por ponteiros físicos; índices de páginas indicam todos os fragmentos de um doc XML árvore do doc XML é particionada em páginas CLUSTERIZACAO POR PROFUNDIDADE índice páginas Tabela de strings nomes de tags substituídos por IDs únicos página página página

92 XML Nativo em BDR – DB2 Formas de indexação idênticas ao Oracle XML DB
exemplo create index ind1 on documentos(conteudo) (índice por caminho) using xmlpattern ‘/livro/capitulo/secao/nome as sql varchar(50)’ Consulta XQuery permitindo integração com SQL e SQL/XML manipulação conjunta de dados relacionais e XML exemplo: SQL com função XMLQuery() Atualização método db2xml.update() atualiza valores de elementos e atributos APIs (JDBC, ODBC e DOM) oferecem métodos para inserção e remoção de conteúdo em docs XML for $l in db2-fn:sqlquery( ‘select d.conteudo from documentos d, repositorios r where d.docID = r.docID and r.cidade = “Florianópolis”’)/livro where $l/preço > return $l/titulo MAIS Facilidades de consulta que o ORACLE

93 Roteiro Considerações Finais Introdução Tecnologia XML
Gerência de Dados XML em bancos de dados relacionais em bancos de dados XML nativos Considerações Finais

94 Considerações Finais Uso amplo de XML requer soluções para gerenciamento de dados XML tema de pesquisa atual na comunidade de BD Duas frentes de pesquisa/desenvolvimento extensão de SGBDs relacionais desenvolvimento de SGBDs XML nativos

95 BDs XML – Crítica Pontos a favor Tecnologia relativamente recente
dados XML são semi-estruturados overhead de gerenciamento para BDs não-XML aplicações com dados complexos ou com regras de negócio pouco claras ou muito dinâmicas flexibilidade estrutural de docs XML modela melhor as transações e dados (complexos) personalizados do negócio aplicações que lidam apenas com dados XML por quê adquirir um BD não-XML? modelo de dados diferente; recursos para o gerenciamento de dados XML é complicado Tecnologia relativamente recente algumas funcionalidades de SGBDs não são ainda tratadas ou não estão consolidadas restrições de integridade, visões, segurança, concorrência, ... Por que adquirir um BD não xml se as consultas sobre dados nativos em BDR são complexas e requerem tb mapeamento para outro modelo fisico

96 BDRs – Crítica SGBDs robustos Modelo de dados não é XML
gerenciamento “completo” e eficiente de dados Modelo de dados não é XML necessidade de um suporte de mapeamento para importação/exportação de dados XML overhead de processamento apesar de alguns SGBDRs já possuírem recursos de armazenamento nativo de XML definição de novos padrões de acesso como SQL/XML

97 Benchmark BD XML x BDR [Chaudhri03,Lu05]
BD XML ocupa mais espaço mais índices; tags também são nodos DOM BD XML e BDR com desempenho semelhante em consultas a grandes massas de dados BD XML: boas estratégias de indexação; não há overhead de mapeamento de modelo de dados alternativa de representação mais eficiente: DOM BDR: boas técnicas de clusterização; menor volume de dados (modelo de dados mais simples) alternativa de representação mais eficiente: inlining BD XML é mais lento em atualizações inexistência de métodos DOM eficientes ou linguagens declarativas padrão para atualização alterações geralmente exigem parsing do doc XML atualização de muitos índices BD XML já apresenta boa compatibilidade com APIs Java, porém requer mais codificação BDRs tem mais ferramentas proprietárias para desenvolvimento de aplicações, requerendo menos codificação As ferramentas de desenvolvimento de BDRs são avancadas e facilitam a programacao de tarefas, reduzindo o esforco de codificacao manual pelo desenvolvedor!

98 Considerações Finais SGBDs XML irão vingar?
não há resposta imediata... provavelmente não serão “A nova geração de SGBDs” BDs relacionais continuam adequados a diversas categorias de aplicações BDs relacionais estão evoluindo para se tornar BDs híbridos (relacional e XML)

99 Referências Relevantes
Tecnologia XML XML & BD SQL/XML XML:DB SGBDRs com suporte a XML (Oracle e DB2) SGBDs XML Nativos (Tamino e eXist)

100 Gerência de Dados XML em Bancos de Dados
II Escola Regional de Banco de Dados – II ERBD Mini-Curso Gerência de Dados XML em Bancos de Dados Ronaldo dos Santos Mello INE/CTC/UFSC


Carregar ppt "Gerência de Dados XML em Bancos de Dados"

Apresentações semelhantes


Anúncios Google