250 likes | 315 Views
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>
E N D
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 e-mail:<eMail>lojao@bla.com.br</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: (inclusão de um novo eMail para Maria) • Exemplo 2: (remoção do primeiro livro) <xupdate:append select=”//autor[nome=´Maria´]/eMail” child=”last()”> <xupdate:element name="eMail">Maria@teste.com</xupdate:element> </xupdate:append> <xupdate:remove select="/listalivros/livro[1]"/>
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>ms@new.com</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_coleção>]<comando_API_HTTP> • Outras formas de acesso • API DOM para Java • API XML:DB
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
título mail mail 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] 0 livro autor 4 preço 2 autor 1 3 “XML & BD” 79.00 nome nome 12 8 16 19 20 15 . . .
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