Uma Avaliação Experimental Sobre Técnicas de Indexação
em Banco de Dados Orientados a Objetos
Eduardo Ogasawara & Marta L. Q. Mattoso
[email protected] / [email protected]
Programa de Engenharia de Sistemas e Computação
COPPE/UFRJ
IDXGOA - Introdução
 Motivação

Necessidade de índices para os novos recursos
existentes em sistemas orientados a objetos



Expressões de Caminho
Herança
Métodos

Existência de diversas propostas para estruturas de
indexação

Pouca experiência com os índices propostos para
sistemas orientados a objetos

Conhecimentos obtidos por simulação em detrimento da
experimentação
IDXGOA - Introdução
 Objetivo do trabalho

Avaliar as novas estruturas de indexação

Selecionar índices para GOA++

Auxiliar o DBA na escolha dos índices
 Trabalho realizado

Projeto de uma arquitetura de indexação no GOA++

Definição de um ambiente para medições

Análise dos resultados obtidos
IDXGOA - Classificação dos Índices Estruturais
 Índices para Hierarquia de Classes
SCI - Índice para cada classe
 CHI - Índice para Hierarquia de classes
 Htree - Árvore H Aninhada
 tree - Índice de Árvore para hierarquia de classes

 Índices para Expressão de Caminho
PX - Índice para Expressão de Caminho
 NX - Índice Aninhado
 MX - Índice Múltiplo

 Índices Híbridos
IMX - Multi-Índice de Herança
 NIX - Índice Aninhado de Herança

Aplicação para estudo de caso
Modelo
Instâncias
Livro[L1]
0-201-59098-0
Banco de Dados
ACM Press
Kim
Periódico [P1]
0-201-59098-1
Banco de Dados
ACM Press
Vol. 8; N° 4
Livro[L2]
0-13-691643-0
Banco de Dados
Prentice-Hall
Ozsu
Periódico [P2]
0-07-052182-5
Eng. de Software
ACM Press
Vol. 9; N° 1
Livro[L3]
0-07-052182-4
Eng. de Software
McGraw-Hill
Pressman
Periódico [P3]
0-07-052182-6
Eng. de Software
ACM Press
Vol. 9; N° 2
Exemplo
Estrutura
SCI: Índice para cada Classe
Tamanho
Registro
Tamanho
chave
Tam Reg Tam chave
74
50
Valor
chave
Ponteiro para
Página de
Sobrecarga
N° OIDs = n
oid1…oidn
Chave
Sobrecarga
N° OIDs
Lista de OIDs
"Banco de
Dados"
0
2
[L1][L2]
Tamanho Tamanho
Registro
chave
Valor
chave
Ponteiro para
Página de
Sobrecarga
N°
classes =
n
id. da
classe1
deslocamento
Diretório de
N° OIDs = i
Classes
id. da
classen


oid1…oidi
N° OIDs = j
oid1…oidj
deslocamento
2
[L1][L2]
2
CID
[Livros]
0
CID
[Periódicos]
12
Deslocamento
Diretório de
Classes
CID
0
Deslocamento
"Banco de
Dados"
eri
ód
ic
1
OI
Ds
de
P
N°
OI
Ds
ivr
os
OI
Ds
de
L
N°
OI
Ds
So
bre
ca
rga
Ch
av
e
av
e
ch
Ta
m
50
CID
106
N° CIDs
Exemplo
Ta
m
Re
g
os
Estrutura
CHI: Índice para Hierarquia de Classes
[P1]
IDXGOA - Comparação entre Índices Hierárquicos
Índice
Critério
Distribuição de chaves
(desempenho)
Distribuição de chaves
(armazenamento)
Apoio a consultas sobre
atributo
Apoio a consultas sobre
classes
Apoio a consultas sobre faixa
de domínio
SCI
CHI
Sensível
Sensível
Sensível
Insensível
Baixo
Alto
Alto
Baixo
Baixo
Baixo
IDXGOA - Arquitetura do GOA++
Cliente
C++
Cliente
Java
Servidor TCP/IP
para o GOA
Gerente
Esquema
GerenteObjetos
Base de
Objetos
Processador
Consultas
IDXGOA
Servidorpáginas/cache
Núcleo do GOA++
IDXGOA - Modelagem da Estrutura de Indexação
GoaArvoreB
raiz
1..* GoaRegistroIntermediario
GoaNoIntermediario
0..1
0..1
0..1
GoaNoFolha
GoaChave
1..*
GoaIndice
GoaRegistroFolha
0..1
<<CID;OID>>
GoaIndiceCHI
TIndiceSimplesTemplate
TIndiceDicionarioTemplate
<<OID>>
GOAIndiceSCI
<<FZ>>
<<CID;OID>>
GOAIndiceIMX
GoaIndiceFz
<<OID>>
GoaIndiceMX
<<PX2Data>>
GoaIndicePX2
<<OID>>
GOAIndiceNX
<<NIXData;OID>>
GOAIndiceNIX
IDXGOA - Ambiente para Medições
DesignObj
Uso da Base de Dados OO7 no GOA++
id
type
buildDate
Module
1..*
ComplexAssembly
Assembly
0..*
BaseAssembly
1..*
CompositePart
1
1 root_part 1 AtomicPart
x
parts
y
1..* docID
Classes
Qtd.
Assemblies
166
CompositeParts
500
Documents
500
AtomicParts
10,000
Connections
60,000
N° de classes
16
1..*
Connection01
1
1..*
Document
ID
Title
Text
Connection02
Connection
type
length
. ..
Connectionxx
Plataforma: Windows NT Server 4.0 - Pentium II 266MHz
Resultados: Consultas pontuais
0,16
0,14
0,12
Tempo (s)
0,10
0,08
0,06
0,04
0,02
0,00
1
2
4
6
8
Classes
Deve-se usar sempre o CHI.
10
12
14
16
CHI
SCI
Resultados: Consultas por faixa - baixa repetição de valores
0.80
0.70
Tempo (s)
0.60
0.50
0.40
0.30
0.20
0.10
0.00
1
2
4
6
8
CHI (5%)
10
SCI (5%)
12
14
CHI (10%)
Até quatro classes, pode-se usar o SCI. Aumentando o
número de classes envolvidas, deve-se usar o CHI.
16
SCI (10%)
Resultados: Consultas por faixa - alta repetição de valores
4,00
3,50
3,00
Tempo (s)
2,50
2,00
1,50
1,00
0,50
0,00
1
2
4
6
8
CHI (5%)
Deve-se usar sempre o SCI.
10
SCI (5%)
12
14
CHI (10%)
16
SCI (10%)
IDXGOA - Conclusões
Pontual
-
Faixa
Conjunta
Disjunta
Distribuição
Tipo
Classes
Repetição
Índice
-
-
CHI
Baixa
Alta
Baixa
Alta
CHI/SCI
SCI
CHI
SCI
-
SCI
0..4
4..*
-
IDXGOA - Trabalhos futuros
 Índices para expressões de caminho

Avaliação de desempenho dos índices PX, MX e NX
 índices híbridos

Avaliação de desempenho dos índices NIX e IMX

Comparação de desempenho do uso conjunto de
índices de hierarquia de classes e expressões de
caminho versus a utilização única de um índice
híbrido
Download

Apresentação