Categorias de Documentos XML Documento Orientado a Dados (DOD) – fracamente semi-estruturado representação de dados mais homogênea e estruturada <endereco> <rua>Beira-Mar</rua><numero>104</numero><complemento>apto 203</complemento> <bairro>centro</bairro><cidade>Fpolis</cidade> <cep>88010-600</cep> </endereco> <endereco> <rua>Lauro Linhares</rua><numero>761</numero><bairro>trindade</bairro> <cidade>Fpolis</cidade><cep>88040-900</cep> </endereco> Categorias de Docs XML Documento Orientado a Documento (DODoc) – fortemente semi-estruturado representação fortemente textual <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>99991111</fone></contato> </anuncio> <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>2340011</fone> ou envie um email:<eMail>[email protected]</eMail><contato> </anuncio> Tipos de BDs para XML BD estendido para lidar com dados XML – mais adequado a DODs – funcionalidades para tratamento de dados XML aplicadas a um BD com um modelo lógico e físico diferente BD Relacional, BDOO, ... – pode apresentar um modelo lógico para dados XML ou apenas definir um mapeamento de um esquema lógico XML para o esquema lógico do BD BD XML nativo – mais adequado a DODocs – gerenciamento específico de dados XML BD XML Nativo Suporta um modelo lógico para dados XML – requisitos mínimos definição de elementos, atributos, #PCDATA e ordem Define um modelo de armazenamento físico proprietário para dados XML Adequado a – docs XML fortemente semi-estruturados mapeamento para BD relacional seria complexo! – aplicações que lidam apenas com dados no formato XML BD XML Nativo - Características Objetivo – discussão de características encontradas ou desejadas em BDs XML Nativos Estudo de Caso – SGBD XML Tamino (www.softwareag.com/tamino) “Transaction Architecture for the Management of INternet Objects” servidor de dados XML desenvolvido pela Software AG Coleções Noção lógica de um conjunto de docs XML – a decisão sobre 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 – em alguns casos, um esquema XML fixo pode ser associado a uma coleção Consultas e atualizações podem ser direcionadas a coleções Coleções - Tamino 1 BD – n coleções – n esquemas com n tipos de documentos – tipo de documento: definição de elemento raiz – novo doc XML: inserido em uma coleção e válido para algum tipo doc Docs sem esquema mantidos na coleção ino:etc tipos de documentos 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 – busca por padrões (análise de conteúdo textual) – consultas declarativas – resultados de consultas doc XML, fragmentos de docs XML ou novas estruturas XML Consultas - Tamino Suporte a Xpath (chamada X-Query) e XQuery estendidos Geração de docs XML como resultado busca por padrão 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 exemplo: XUpdate (consórcio XML:DB) XML:DB – consórcio de empresas responsável pelo desenvolvimento de tecnologias para BDs XML tendência (?): XQuery como linguagem de atualização XUpdate Sintaxe XML – I / E de elementos, atributos e texto – A do conteúdo de elementos e atributos Exemplo 1: <xupdate:append select=”//autor[nome=´Maria´]/eMail” child=”last()”> <xupdate:element name="eMail">[email protected]</xupdate:element> </xupdate:append> (inclusão de um novo eMail para Maria) Exemplo 2: <xupdate:remove select="/listalivros/livro[1]"/> (remoção do primeiro livro) 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 eMail de autor) for $aut in input()/livro/autor where $aut/nome = “Maria Souza” do (replace $aut/eMail with (<eMail>[email protected]</eMail>)) 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 Gerência de Transações - Tamino Conceitos de transação e sessão – 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 – existe um limite máximo de tempo para manter um doc bloqueado Conectividade Interface ODBC – conexão com o BD, execução de consultas e atualizações e exploração de resultados Protocolos HTTP – acesso via browsers Web (alguns BDs) Consórcio XML:DB – propõe 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 Conectividade - Tamino Interface principal de acesso é HTTP – 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: http://<nome_domínio>/tamino/<nome_BD>/[<nome_col eção>]<comando_API_HTTP> Outras formas de acesso – API DOM para Java – API XML:DB Tamino – Conectividade HTTP Round-Tripping Capacidade de recuperação integral de um doc XML – seqüência textual exata do doc Precisão do round-tripping é diretamente proporcional ao poder de expressão do modelo lógico – BDs XML garantem pelo menos round-tripping a nível de elementos, atributos e seus conteúdos Round-Tripping - Tamino Duas formas de armazenamento – campo longo CLOB utilizado em geral para docs XML sem esquema índices de texto podem ser definidos – permite buscas por padrões 100% round-tripping – formato nativo esquema de objetos proprietário índices sobre elementos e atributos podem ser definidos garante round-tripping a nível de hierarquia de elementos Integridade Semântica 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 valores permitidos integridade referencial dentro de um documento XML (recursos do tipo ID/IDREF ou key/keyref) Basicamente estas RIs são controladas em BDs XML Carência de um mecanismo de integridade mais robusto – similar a BD relacional (checks, triggers, ...) Integridade Semântica - Tamino Definição de valores possíveis (fixos, defaults, enumerações, ...) Integridade referencial controlada por “funções de extensão” (para cada caso indicado na trigger) controles de integridade Armazenamento Docs XML “in-natura” tratados como uma “caixa preta” – deseja-se preservar o texto do documento indexação apenas textual (por palavra-chave) Objetos DOM que representam os dados XML (+ usado) armazenamento clusterizado de objetos – nodos próximos na hierarquia do doc XML são armazenados próximos fisicamente através de uma busca em largura ou profundidade – facilita indexação e busca de uma hierarquia de objetos apenas os elementos de mais alto nível precisam ser indexados os demais elementos são buscados via varredura linear Indexação Indexação por valor – para elementos e atributos Indexação de texto do doc XML Indexação de estrutura – indexação de nodos do doc XMO associada a técnicas para localização de nodos filhos facilita consultas em docs XML sem esquema – não se sabe quais elementos filhos um elemento possui Indexação – SGBD 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, irmãos, ... ex.: maxFilhos = 4 filhos de X [ID(X)*4+1, ID(X)*4+4] livro título 1 “XML & BD” 8 preço 2 0 autor 3 autor 4 79.00 12 ... nome mail nome mail 15 16 19 20 Referências Tecnologia XML – http://www.w3c.org/xml XML & BD – http://www.rpbourret.com/xml/XMLAndDatabases.htm SQL/XML – http://otn.oracle.com/tech/xml/xmldb/htdocs/sql_xml.html XML:DB – http://www.xmldb.org SGBD XML Tamino – http://www.softwareag.com/tamino