Post on 19-Apr-2015
Indexando XML
Banco de Dados e Internet - 2004
Professor: Cláudio Baptista
Mestrando: Rômulo Nunes
Universidade Federal de Campina Grande
Mestrado em Informática
Conteúdo da Apresentação
Introdução – Necessidade de Indexação Indexação XML com Listas Indexação XML com ÁrvoresAs Pesquisas no mundoConclusão
213:05
Necessidade de Indexação
SGBDs precisam buscar informações;XML são arquivos;Precisamos de um acesso rápido e
eficiente às informações;Quais as soluções existentes para esse
acesso eficiente e rápido?
313:05
Indexação XML usando Listas
Indicada para casos mais simples;Essa solução indexa apenas um nível
na árvore do documento;Tem um custo inicial com a ordenação
prévia da lista;É eficiente e mais barata dependendo
do contexto do sistema.4
13:05
Indexação XML usando Listas<?xml version="1.0" ?>
<agenda>
<contato Nome=”Ana Paula da Silva”>
<Endereço>
Rua Zacarias de Azevedo, 323 Prado
</Endereço><Telefone>
323-3310
</Telefone>
<Telefone>
9991-3817
</Telefone>
</contato>
...
<contato Nome=”Zelda Cavalcante”>
<Endereço>
Av. Monte Castelo,2522
</Endereço>
<Telefone>
231-2233
</Telefone>
</contato>
</agenda>
... <contato Nome=”Zelda Cavalcante”>
<Endereço>Av. Fernandes Lima,2522
</Endereço><Telefone>
231-2233</Telefone>
</contato>
...
Visualização do nível da árvore que vamos indexar
513:05
Indexação XML usando Listas
Contato 1 Contato 2 Contato 3...
Contato n
Ana Paula Cláudia Débora Zelda
613:05
Indexação XML usando Listas
713:05
Para ordenar uma lista basta aplicarmos qualquer método da estrutura de dados.
O Método de Hoare, também conhecido como Quick Sort é um dos mais rápidos.
Depois de Ordenado é fácil aplicar, por exemplo, o método de busca binário para encontrar um determinado elemento da lista.
Problemas: Gasto com o tempo para organizar; Só atende a estrutura XML para um nível; Não se pode aplicar esse método para buscas complexas.
Indexação XML com Árvores
Passos a serem seguidosCodificar a árvore em uma sequênçia
estruturada (Structure-Encoded Sequence)
Codificar também a consulta
813:05
Exemplo de uma árvore XML
913:05
Consultas XML
Procurar todos os fabricantes que fornecem
itens
Procurar compras com
Vendedor Boston e
comprador NY
Procurar compras com Boston como comprador ou
vendedor
Procurar compras que
contêm produtos intel
1013:05
Uma representação sequencial dos dados XML de uma árvore
Considere de v1 a v8 o conjunto de variáveis que representam respectivamente cada valor folha da árvore percorrida em pre-ordem.
Percorrendo a árvore em pre-ordem temos a representação: PSINv1Mv2IMv3INv4Lv5Nv6BLv7Nv8
1113:05
Sequência Estruturada Codificada
Uma sequência estruturada codificada é uma sequência de tuplas do tipo (simbolo_atual, prefixo).
D = (a1,p1), (a2,p2), …, (an,pn)
Para a árvore do slide anterior temos:
D = (P,),(S,P),(I,PS),(N,PSI),(v1,PSIN),(M,PSI),(v2,PSIM),(I,PSI),(M,PSII),(v3,PSIIM),(I,PS),(N,PSI),(v4,PSIN),(L,PS),(v5,PSL),(N,PS),(v6,PSN),(B,P),(L,PB),(v7,PBL),(N,PB),(v8,PBN)
Percorrer a árvore em pre-ordem garante uma codificação onde nós vizinhos sempre estarão próximos.
1213:05
Consultas (incluindo consultas ramificadas, e consultas com caracteres coringas ‘*’ ou ‘//’) podem ser convertidos para uma sequência estruturada codificada.
Sequência Estruturada Codificada
Exemplos
D = (P,),(S,P),(I,PS),(N,PSI),(v1,PSIN),(M,PSI),(v2,PSIM),(I,PSI),(M,PSII),(v3,PSIIM),(I,PS),(N,PSI),(v4,PSIN),(L,PS),(v5,PSL),(N,PS),(v6,PSN),(B,P),(L,PB),(v7,PBL),(N,PB),(v8,PBN)
Q2= /* Boston como vendedor e New York como comprador */ (P,),(S,P),(L,PS),(v5,PSL),(B,P),(L,PB),(v7,PBL)
Q3= /* Boston como vendedor ou comprador */
(P,),(L,*),(v5,P*L)
D = (P,),(S,P),(I,PS),(N,PSI),(v1,PSIN),(M,PSI),(v2,PSIM),(I,PSI),(M,PSII),(v3,PSIIM),(I,PS),(N,PSI),(v4,PSIN),(L,PS),(v5,PSL),(N,PS),(v6,PSN),(B,P),(L,PB),(v7,PBL),(N,PB),(v8,PBN)
1413:05
Problema
Um nó pode ter filhos parecidos: /A[B/C]/B/D
Faz consultas multiplas e o resultado é a o conjunto união.
“(A,),(B,A),(C,AB),(B,A),(D,AB)”
1513:05
D
A
B
C
B
A
B
C D
A
BU
Solução
Uma definição formal de uma linguagem que dê suporte a consultas com restrições.
Ponto Principal: A indexação do caminho
1613:05
Árvore de Sufixos A sequência estruturada
codificada é colocada em uma árvore de sufixos.
1713:05
Algoritmo de Busca Simples
Query:(P, )(L,P *)(v2,P*L)
1813:05
Ancestor-Descendant Relationships
D-Ancestorship: Relacionamento entre nós no documento XML de origem. (pai – filho) Essencial pra uma Consulta modelada
S-Ancestorship: Relacionamento para os nós no sufixo da árvore (filho – pai e sobrinho – tios) Existe entre qualquer dois nós num mesmo documento. Essencial para evitar operações de união (intra-record)
1913:05
RIST: Relationship Indexed Suffix Tree
Indexamos os nós da árvore de sufixos por tuplas (Symbol, Prefix) (Indexação por D-Ancestorship)
Agora vamos marcar cada nó da árvore de sufixos com (n ,size), onde n é a número em pre-ordem do nó e size é o numero de nós abaixo dele. (Indexação por S-Ancestorship)
2013:05
Marcando a árvore de sufixos
Cada nó tem uma tupla (Symbol, Prefix)
Cada nó é marcado com (nx,sizex)um nó x é descendente de um nó y se nx está no intervalo [ny, ny+ sizey)
Criar uma árvore trie para os indices criados 21
13:05
Algoritmo RIST
2213:05
Algoritmo RIST - Resumo Diferente do Algoritmo de busca simples,
RIST pula para o nó que representa o próximo simbolo ao invés de uma busca inteira na sub-árvore.
A estrutura indexada e também o algoritmo de busca, são baseados em arvores trie.
Uma árvore de sufixos é construida para fazer apresentar as marcas dos nós. Mas ela não é usada no algoritmo de busca.
2313:05
VIST: Virtual Suffix TreeMotivação:
RIST usa um esquema de marcação estática (preordem, tamanho ), que evita o adicionamento de novos nós dinamicamente.
A árvore de sufixos é uma estrutura que precisa está completamente carregada em memória, o que torna RIST não suportado pelos SGBDs.
2413:05
Sinal de probabilidade
Probabilidade que x ocorra dado que u ocorra é denotado como p(u|x)
Se x é parente de u, é fácil dizer quem é p(u|x)
Por exemplo, p(Name|Buyer)=1 p(Subitem|Item)=.1
Então temos que: p(u|x) é conhecido já que u é parente
de x 2513:05
Follow Set Dado um nó x, follow(x) está
para todo nó que pode suceder x na sequência estruturada codificada.
follow(x) = u, v, w, y, z, Se y é qualquer elemento de follow(x),
então p(y|x) = p(y|d), onde d é parente de y.
2613:05
TestesDefinição para os testes:
DBLP. Cada registro corresponde a uma publicação, e o tamanho médio de sequencias estruturadas codificadas é 31.
Xmark. Um único registro com uma grande estrutura. Sub estruturas complexas e cheias de nós.
2713:05
Testes
0102030405060708090
100
DBLP VIST
DBLP RIST
XMARKVIST
XMARKRIST
DocId B+Tree Ancestor B+Trees Suffix Tree
Tamanho do indice (em MB)
Tempo de construção do indice (em MB)
2813:05
As pesquisas no Mundo
Nas universidades do mundo:University of St. Petersburg na Russia;University of Singapore, University Stanford
Nas universidades do Brasil: Pesquisas de indexação XML para fins específicos (bibliotecas digitais, sistemas de busca, ...)
E os grandes desenvolvedores dos SGDBs? A IBM é quem mais se destaca com suas pesquisas. O VISIT é um exemplo
2913:05
ConclusãoSGBDs e sistemas que utilizam XML
tendem a se fortalecer com as técnicas avancadas de busca;
Muitas pesquisas na área estão se consolidando em uma forma única e ideal de busca;
3013:05