Universidade Federal de Campina Grande
Mestrado em Informática
Indexando XML
Banco de Dados e Internet - 2004
Professor: Cláudio Baptista
Mestrando: Rômulo Nunes
Conteúdo da Apresentação
– Necessidade de Indexação
 Indexação XML com Listas
 Indexação XML com Árvores
 As Pesquisas no mundo
 Conclusão
 Introdução
2
14:16
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?
3
14:16
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
14:16
Indexação XML usando Listas
<?xml version="1.0" ?>
<agenda>
<contato Nome=”Ana Paula da Silva”>
Visualização do nível da
árvore que vamos indexar
<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
5
14:16
</Telefone>
<contato Nome=”Zelda Cavalcante”>
<Endereço>
Av. Fernandes Lima,2522
</Endereço>
<Telefone>
231-2233
</Telefone>
</contato>
</contato>
</agenda>
...
Indexação XML usando Listas
Contato 1
Contato 2
Contato 3
Contato n
...
Ana Paula
6
14:16
Cláudia
Débora
Zelda
Indexação XML usando Listas
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.
7
14:16
Indexação XML com Árvores
 Passos
a serem seguidos
 Codificar a árvore em uma sequênçia
estruturada (Structure-Encoded
Sequence)
 Codificar também a consulta
8
14:16
Exemplo de uma árvore XML
9
14:16
Consultas XML
10
14:16
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
Uma representação sequencial dos
dados XML de uma árvore

11
14:16

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
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)

12
14:16
Percorrer a árvore em pre-ordem garante uma codificação onde
nós vizinhos sempre estarão próximos.
Sequência Estruturada Codificada

Consultas (incluindo consultas ramificadas, e
consultas com caracteres coringas ‘*’ ou ‘//’)
podem ser convertidos para uma 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)
14
14:16
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)”
A
B
15
14:16
A
B
A
B
B
U
C
D
C
D
Solução
 Uma
definição formal de uma
linguagem que dê suporte a
consultas com restrições.
 Ponto Principal: A indexação do
caminho
16
14:16
Árvore de Sufixos

17
14:16
A sequência estruturada
codificada é colocada em
uma árvore de sufixos.
Algoritmo de Busca Simples


Query:
(P, )(L,P *)(v2,P*L)


18
14:16

Ancestor-Descendant Relationships

D-Ancestorship: Relacionamento entre nós
no documento XML de origem. (pai – filho)


S-Ancestorship: Relacionamento para os nós
no sufixo da árvore (filho – pai e sobrinho – tios)


19
14:16
Essencial pra uma Consulta modelada
Existe entre qualquer dois nós num mesmo
documento.
Essencial para evitar operações de união (intrarecord)
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)
20
14:16
Marcando a árvore de sufixos

21
14:16
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
Algoritmo RIST
22
14:16
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.
23
14:16
VIST: Virtual Suffix Tree
 Motivaçã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.
24
14:16
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,




25
14:16
p(Name|Buyer)=1
p(Subitem|Item)=.1
Então temos que:
 p(u|x) é conhecido já que u é parente
de x
Follow Set



26
14:16
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.
Testes
 Definição
 DBLP.
para os testes:
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.
27
14:16
Testes
DocId B+Tree
Ancestor B+Trees
Suffix Tree
100
90
80
70
60
50
40
30
20
10
0
DBLP
VIST
28
14:16
DBLP
RIST
XMARK
VIST
Tamanho do indice
(em MB)
XMARK
RIST
Tempo de construção do indice
(em MB)
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
29
14:16
Conclusão
 SGBDs
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;
30
14:16
Download

Indexando XML - Prof. Rômulo Nunes