aula 10 indexacao
TRANSCRIPT
![Page 1: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/1.jpg)
UNIVERSIDADE FEDERAL DE ITAJUBÁ
Laboratório de Banco de Dados
SIT 420
Indexação Aula 9
Vanessa Cristina Oliveira de Souza
![Page 2: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/2.jpg)
Introdução
O usuário de um sistema de banco de dados está normalmente interessado no desempenho do sistema.
Quão rápido esse sistema responde a uma requisição desse usuário?
Portanto, o fator principal de satisfação (ou de insatisfação) é o desempenho da base de dados – se o tempo de resposta a uma consulta é grande demais, o sistema é desvalorizado.
![Page 3: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/3.jpg)
Introdução
A performance do sistema de base de dados
depende:
Da eficiência das estruturas computacionais
usadas para representar os dados na base e,
De como o sistema eficientemente é capaz de
operar nessas estruturas de dados.
![Page 4: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/4.jpg)
Gerenciador de Arquivos
Componente funcional de um SGBD que
gerencia a alocação do espaço na
armazenagem do disco e as estruturas de
dados usadas para representar a informação
armazenada no disco.
![Page 5: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/5.jpg)
Gerenciador de Buffer
Componente funcional de um SGBD
responsável pela transferência de
informações entre o disco de armazenagem
e a memória principal.
![Page 6: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/6.jpg)
UNIVERSIDADE FEDERAL DE ITAJUBÁ
ORGANIZAÇÃO DE ARQUIVOS
CONCEITOS BÁSICOS
![Page 7: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/7.jpg)
Arquivo de dados
Estrutura de dados que armazena o banco
de dados propriamente dito.
Estrutura de um arquivo.
![Page 8: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/8.jpg)
Operações básicas sobre arquivos
Inserção Adição de um registro no arquivo
Alteração Corresponde a localização (consulta) de determinado
registro, a alteração de um ou mais de seus atributos e atualização
Exclusão Eliminação de um registro do arquivo
![Page 9: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/9.jpg)
Operações básicas sobre arquivos
Consulta
Localização de um registro no arquivo.
Reorganização/Ordenação
Dependendo da organização de arquivos
utilizada é necessário reorganizar ou ordenar os
registros, facilitando a sua manipulação.
![Page 10: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/10.jpg)
Registros Lógicos x
Registros Físicos
O registro lógico corresponde às instâncias
(objetos) do mundo real, cujos atributos são
representados pelos campos. Estes registros
é que são manipulados pelos programas
(sistemas) de aplicação.
O registro físico corresponde à organização
física onde as informações são armazenadas
(no HD, setores).
![Page 11: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/11.jpg)
Organização de Arquivos
Organizar um arquivo significa relacionar
(mapear) a estrutura lógica e a estrutura
física de um arquivo.
Mapeamento entre estrutura física e lógica.
![Page 12: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/12.jpg)
Organização de Arquivos
A organização de arquivo trata do arranjo ou
a forma de distribuição dos registros dentro
do arquivo, objetivando agilizar o processo
de armazenamento e recuperação de
dados.
![Page 13: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/13.jpg)
Arquivos Sequenciais
Em um arquivo sequencial, os registros são dispostos
ordenadamente, obedecendo à sequência determinada
por uma chave primária, chamada de chave de
ordenação.
![Page 14: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/14.jpg)
Arquivos Sequenciais
Para permitir uma recuperação rápida de
registros na ordem da chave de busca, os
registros são encadeados por ponteiros.
O ponteiro em cada registro aponta para o
próximo registro na ordem da chave de busca.
![Page 15: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/15.jpg)
Arquivos Sequenciais
1 3 Ademar 32 5000
2 5 Roberto 25 7500
3 10 Gerson 43 6000
4 12 Yeda 23 9000
5 30 Bernardo 21 4500
6 50 Ângela 29 5000
Overflow
![Page 16: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/16.jpg)
Arquivos Sequenciais
Vantagem: Acesso sequencial de um
conjunto de dados é o mais rápido.
Útil quando é preciso processar quase todos
os elementos.
Desvantagens: Inclusão e Exclusão é
extremamente custosa.
![Page 17: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/17.jpg)
Arquivos Sequenciais Exemplo de Inserção
3 Ademar 32 5000
5 Roberto 25 7500
10 Gerson 43 6000
12 Yeda 23 9000
30 Bernardo 21 4500
50 Ângela 29 5000
15 Vanessa 28 6000
Overflow
Inserir o registro de chave de ordenação 15.
![Page 18: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/18.jpg)
Arquivos Sequenciais Consultas
Acesso serial (ou sequencial): consiste na obtenção do próximo registro, segundo a chave de
ordenação. Este tipo de acesso é extremamente eficiente por
estarem os registros fisicamente armazenados de acordo com a
sequência que é solicitada. O argumento de pesquisa é
comparado com cada registro lido de forma seqüencial.
![Page 19: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/19.jpg)
Arquivos Sequenciais Consultas
Busca Binária Divide-se o arquivo pela metade e compara-se o argumento de pesquisa
com o registro da divisão. Se este não for o registro desejado, determina-se
para qual metade se fará a próxima divisão (compara se o argumento de
pesquisa é maior ou menor que o registro da divisão), e novamente se faz
a comparação com o registro divisor e assim sucessivamente.
![Page 20: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/20.jpg)
UNIVERSIDADE FEDERAL DE ITAJUBÁ
INDEXAÇÃO
![Page 21: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/21.jpg)
Indexação – Problema
![Page 22: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/22.jpg)
Tempo para encontrar o livro aumenta
significativamente com o número de livros
que se tem na biblioteca em questão.
Solução:
Um catálogo, organizado de alguma forma (por
autor, por título, ...) que diga onde encontrar o
livro na prateleira.
Indexação – Problema
![Page 23: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/23.jpg)
Utilização de índices.
Objetivo:
Permitir um rápido acesso aleatório aos registros
num arquivo.
O que é um índice?
Um estrutura de dados adicional associada ao
arquivo (tabela).
Indexação – Solução em BD
![Page 24: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/24.jpg)
Índices
O uso de índice é conveniente aos processos que precisam de um desempenho mais ágil, mesmo para os registros que não se encontrem ordenados fisicamente.
![Page 25: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/25.jpg)
Índices
Índices são, portanto, estruturas de dados
auxiliares cujo único propósito é tornar mais
rápido o acesso a registros baseados em
certos campos, chamados campos de
indexação.
![Page 26: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/26.jpg)
Índices
Um índice permite localizar um registro sem
ter que examinar mais que uma pequena
fração dos registros possíveis;
O(s) campo(s) cujos valores o índice se
baseia formam a chave de pesquisa;
![Page 27: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/27.jpg)
Índices
Cada índice é formado pelo valor de um atributo
chave do registro e pela sua localização física no
interior do arquivo.
A estrutura com a tabela de índices é também
armazenada e mantida em disco.
![Page 28: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/28.jpg)
Índices
Cada estrutura de índice está associada a
uma chave de busca particular.
![Page 29: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/29.jpg)
Índices
No exemplo da biblioteca, poderíamos ter os
seguintes índices:
Sobrenome do autor
Título do livro
Assunto do livro
...
![Page 30: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/30.jpg)
Tipos básicos de Índices
Ordenados
Baseiam-se na ordenação dos valores.
Hash
Baseiam-se na distribuição uniforme dos valores
determinados por uma função (função de hash).
![Page 31: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/31.jpg)
Classificação de Índices Ordenados
Considerando a quantidade de entradas
Denso
Esparso
Considerando a organização do arquivo
Primário
Clustering
Secundário
Considerando os níveis de indirecionamento
Mononível
Multinível
![Page 32: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/32.jpg)
UNIVERSIDADE FEDERAL DE ITAJUBÁ
ÍNDICES ORDENADOS
DENSO X ESPARSO
![Page 33: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/33.jpg)
Índices sobre arquivos sequenciais
Os ponteiros em um arquivo de índices
podem se referir a cada registro do arquivo
ou a um bloco de disco, originando dois
tipos de índices:
Índice denso
Índice esparso
![Page 34: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/34.jpg)
Índice Denso
Há uma entrada no índice para cada valor de
chave que ocorre em um registro de dados.
Esse registro de
índice contém o
valor da chave de
busca e um ponteiro
para o registro.
![Page 35: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/35.jpg)
Índice Esparso
Há um entrada no índice apenas para alguns valores de chave (um para cada bloco).
Para localizar um registro com chave K, procura-se a entrada E do índice com o maior valor de chave menor ou igual a K e pesquisa-se o arquivo a partir do registro apontado por E.
![Page 36: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/36.jpg)
Índice Esparso
![Page 37: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/37.jpg)
Índice Esparso x
Índice Denso
Um índice esparso utiliza menos espaço para
armazenamento ao custo de um tempo um
pouco maior para encontrar um registro dada
sua chave.
No índice esparso, inserções e remoções
são menos custosas quando comparadas ao
índice denso.
![Page 38: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/38.jpg)
Exercícios
Considere uma relação com 1.000.000 registros (ou tuplas) que cabem dez a dez em um bloco de 4.096 bytes.
a) Qual é o espaço necessário para os dados?
b) Se o campo da chave tem 32 bytes e um ponteiro 8 bytes.
a) Quantos pares chave-ponteiro cabem em um bloco?
b) Qual o espaço ocupado por um índice denso para esta relação?
c) E se um índice esparso for utilizado, qual o espaço gasto pelo índice?
![Page 39: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/39.jpg)
UNIVERSIDADE FEDERAL DE ITAJUBÁ
ÍNDICES ORDENADOS
PRIMÁRIO X CLUSTERING X SECUNDÁRIO
![Page 40: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/40.jpg)
Índice Primário
No arquivo sequencial, um campo chave é
usado para ordenar fisicamente os registro
de arquivos em disco.
Se a chave de ordenação for um campo
exclusivo (sem duplicatas), então o índice é
chamado de Índice Primário.
![Page 41: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/41.jpg)
Índice Primário
A chave de busca de um índice primário é
usualmente a chave primária.
![Page 42: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/42.jpg)
Índice Primário
Vantagens
Economia de acesso aos blocos
Busca binária
Desvantagem
Inclusão e remoção de registros
![Page 43: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/43.jpg)
Índices primários em geral são esparsos
(o número de entradas é
igual ao número de blocos do arquivo de dados)
![Page 44: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/44.jpg)
Índice Primário Esparso
![Page 45: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/45.jpg)
Índice Clustering
Se a chave de ordenação for um campo não chave (com duplicatas), então o índice é chamado de Índice Clustering.
Existe uma entrada no índice clustering para cada valor distinto do campo clustering.
O índice contém o valor e um ponteiro para o primeiro bloco no arquivo de dados que possua um registro com aquele valor para seu campo clustering.
![Page 46: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/46.jpg)
Índice de Clustering
No Índice de Cluster os registros de um arquivo são fisicamente ordenados por um campo de ordenação que permite duplicatas.
Campo Clustering
![Page 47: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/47.jpg)
Índices de clustering são esparsos
(o número de entradas é igual ao número de valores
distintos do atributo de clustering)
![Page 48: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/48.jpg)
Índice de Clustering
Vantagens
Economia de acesso aos blocos
Desvantagem
Inclusão e remoção de registros
![Page 49: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/49.jpg)
Índices sobre arquivos sequenciais
Um arquivo pode possuir, no máximo, um
índice primário ou um índice de clustering,
porém não ambos.
Porque um arquivo pode possuir, no máximo,
um campo de ordenação física.
![Page 50: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/50.jpg)
Frequentemente desejamos ter vários índices em
uma relação, a fim de facilitar consultas variadas.
Um terceiro tipo de índice, chamado de índice
secundário, pode ser especificado sobre qualquer
campo não-ordenado de um arquivo.
Um arquivo pode possuir diversos índices
secundários, além de seu método de acesso
principal.
Índice Secundário
![Page 51: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/51.jpg)
Índice Secundário
Um índice secundário é um índice cuja chave
não é aquela da ordem sequencial do arquivo.
Portanto, a diferença entre índice secundário e
índice primário está no fato de que o índice
secundário não determina a colocação de
registros no arquivo de dados.
![Page 52: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/52.jpg)
Índices secundários são sempre densos!!!
![Page 53: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/53.jpg)
Projeto de índices secundários
Um índice secundário é um índice denso,
normalmente com duplicatas.
O índice consiste em pares chave-ponteiro.
Os pares no arquivo de índices são
classificados pelo valor da chave.
![Page 54: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/54.jpg)
Índices Secundários - Exemplo
Índice Registro no Disco
• Os dados não estão classificados pela chave de pesquisa.
• As chaves no arquivo de índices estão classificadas.
![Page 55: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/55.jpg)
UNIVERSIDADE FEDERAL DE ITAJUBÁ
ÍNDICES ORDENADOS SECUNDÁRIO PARA NÃO CHAVE PRIMÁRIA
![Page 56: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/56.jpg)
Índice Secundário
Se o campo chave que estiver sendo
indexado possuir duplicatas, dizemos que
temos um Índice Secundário para Não
Chave Primária.
![Page 57: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/57.jpg)
Índice Secundário para Não Chave Primária
Neste tipo de índice, vários registros do arquivo
de dados podem ter o atributo chave com o
mesmo valor, haja vista que o mesmo não é
chave primária.
Nesse caso, o índice aponta para o registro.
![Page 58: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/58.jpg)
Índice Secundário para Não Chave Primária
Índice Registro no Disco
![Page 59: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/59.jpg)
Índice Secundário para Não Chave Primária
Como as ordens da chave secundária e da
chave física diferem, ao tentarmos varrer o
arquivo sequencialmente na ordem da chave
secundária, a leitura de cada registro
provavelmente requererá a leitura de um
novo bloco do disco.
![Page 60: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/60.jpg)
Índice Secundário
Índice Registro no Disco
• Selecione todos os registros de valor 20.
• Recuperar 2 blocos de índice + 3 blocos de dados.
![Page 61: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/61.jpg)
Índice Secundário
Problema:
O uso de um índice secundário pode resultar em
muito mais operações de E/S do disco.
![Page 62: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/62.jpg)
Índice Secundário para Não Chave Primária
Solução:
Criar estruturas que ‘agrupem’ os valores de chave.
Uma forma conveniente de evitar a repetição de
valores é usar um nível de caráter indireto, chamado
depósito (bucket), entre o arquivo de índices
secundários e o arquivo de dados.
Caráter indireto em índices secundários.
![Page 63: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/63.jpg)
Caráter indireto em índices secundários
Chave Pont.
10
20
30
40
50
60
...
...
Pont.
...
Chave
20
40
10
20
50
30
10
50
60
70
![Page 64: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/64.jpg)
Caráter indireto em índices secundários
Chave Pont.
10
20
30
40
50
60
...
...
Pont.
...
Chave
20
40
10
20
50
30
10
50
60
20
![Page 65: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/65.jpg)
Exemplo Índice Secundário
┴
Deposito
Bloco de Pont. Arquivo Sequencial
Pont. Nome-
agência
Numero
-conta
Nome-
cliente
saldo
Brighton 217 Green 750
Downtown 101 Johnson 500
Downtown 110 Peterson 600
Mianus 215 Smith 700
Perryridge 102 Hayes 400
Perryridge 201 Willians 900
Perryridge 218 Lyle 700
Redwood 222 Lindsay 700
Round Hill 305 Turner 350
Chave Pont.
Green
Lindsay
Smith
Índice secundário
esparso
![Page 66: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/66.jpg)
Índice Secundário para Não Chave Primária
![Page 67: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/67.jpg)
Exemplo – Índice Secundário
Um mesmo arquivo pode ter vários índices
secundários.
Deposito
Índice secundário sobre o campo
nome-cliente. Arquivo Sequencial
Pont. Nome-
agência
Numero
-conta
Nome-
cliente
sald
o
Brighton 217 Green 750
Downtown 101 Johnson 500
Downtown 110 Peterson 600
Mianus 215 Smith 700
Perryridge 102 Hayes 400
Perryridge 201 Willians 900
Perryridge 218 Lyle 700
Redwood 222 Lindsay 700
Round Hill 305 Turner 350
Chave Pont.
Green
Lindsay
Smith
Deposito
Pont. Chave
350
500
700
Índice secundário sobre o campo
saldo.
![Page 68: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/68.jpg)
Índices Secundários
A cada mudança no banco de dados, todos
os índices secundários (e depósitos)
precisam ser modificados.
![Page 69: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/69.jpg)
Fatores que tornam a pesquisa baseada em índices mais eficiente do que parece
O número de blocos de índices em geral é pequeno quando comparado com o número de blocos de dados.
Tendo em vista que as chaves são classificadas, podemos usar a pesquisa binária para encontrar uma determinada chave.
Se houver n blocos do índice, bastará examinar log2n deles.
O índice pode ser pequeno o bastante para ser mantido permanente em buffers da memória principal.
![Page 70: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/70.jpg)
UNIVERSIDADE FEDERAL DE ITAJUBÁ
ÍNDICES ORDENADOS
MONONÍVEL X MULTINÍVEL
![Page 71: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/71.jpg)
Índice Mononível
Todos os índices visto até agora possuem apenas
um nível de indireção.
Índice Registro no Disco
![Page 72: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/72.jpg)
Índice Multinível
Um índice pode cobrir sozinho muitos blocos (índices muito grandes).
Se esses blocos não estiverem em algum lugar onde saibamos que é possível encontrá-los, por exemplo em cilindros designados de um disco, então talvez seja necessária outra estrutura de dados para localizá-los.
Mesmo que isto ocorra, talvez ainda seja preciso executar muitas operações de E/S de disco para alcançar o registro que queremos localizar.
Inserindo um índice no índice, poderemos tornar o uso do primeiro nível de índices mais eficiente.
![Page 73: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/73.jpg)
Índice Multinível
Um índice multinível considera o arquivo índice, o qual chamaremos agora de primeiro nível (ou base) do índice multinível, como um arquivo ordenado com um valor distinto para cada k(i).
Portanto, podemos criar um índice principal para o primeiro nível.
Esse índice para o primeiro nível é chamado de segundo nível do índice multinível.
Uma vez que o segundo nível é um índice principal, podemos utilizar âncoras de blocos de forma que o segundo nível possua uma entrada para cada bloco do primeiro nível.
![Page 74: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/74.jpg)
Índice Multinível
Índice
Nível Secundário Arquivo de dados Índice
Primeiro Nível (base)
![Page 75: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/75.jpg)
Índice Multinível
Dá-se o nome de fator de bloco do índice (bfri) para o número de registros lógicos que cabem em um registro físico.
O valor de bfri é chamado de fan out (fo) do índice multinível.
Um índice multinível com r entradas de primeiro nível terá aproximadamente t níveis, onde t = ┌log fo(r)┐.
![Page 76: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/76.jpg)
Índices Multinível – t = 2
Segundo Nível
(TOPO)
2
35
55
85
2
5
8
12
15
21
24
29
2
8
15
24
35
36
39
41
44
46
51
52
35
39
44
51
55
63
71
80
85
93
95
100
Primeiro Nível
(BASE)
Chave
Primária TABELA DE DADOS
.
.
.
![Page 77: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/77.jpg)
Índices Multinível – t = 2
Segundo Nível
(TOPO)
2
35
55
85
2
5
8
12
15
21
24
29
2
8
15
24
35
36
39
41
44
46
51
52
35
39
44
51
55
63
71
80
85
93
95
100
Primeiro Nível
(BASE)
Chave
Primária ARQUIVOS DE DADOS
.
.
.
Bloco de memória
Fan-out = 4 (bfríndice ou fo)
![Page 78: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/78.jpg)
Índice Multinível
Embora um ou dois níveis de índices sejam com frequencia muito úteis para acelerar consultas, há uma estrutura mais geral usada comumente em SGBDs comerciais por serem mais flexíveis e escaláveis.
A família geral de estruturas de dados é chamada árvore B, e a variante utilizada com mais frequência é conhecida como árvore B+.
![Page 79: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/79.jpg)
Índice Multinível
Basicamente, a árvore B:
Automaticamente mantém os níveis balanceados
para a quantidade de dados que está sendo
indexada, e,
Gerencia o espaço usado por seus blocos para
que eles sempre estejam ocupados com pelo
menos a metade de sua capacidade.
![Page 80: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/80.jpg)
UNIVERSIDADE FEDERAL DE ITAJUBÁ
ÍNDICES ORDENADOS MULTINÍVEL
ÁRVORE B X ÁRVORE B+
![Page 81: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/81.jpg)
Árvore B
As árvores B são árvores balanceadas que visam otimizar as operações de entrada e saída nos dispositivos.
Em uma aplicação comum de uma árvore B, a quantidade de dados é tão grande que provavelmente não caberia na memória principal.
A árvore B copia blocos específicos para a memória principal quando necessário e os grava no disco se os blocos tiverem sido alterados.
![Page 82: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/82.jpg)
Árvore B
O nó raiz tem no mínimo 2 sub-árvores e no
máximo, n sub-árvores.
n é a ordem da árvore B
![Page 83: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/83.jpg)
Árvore B
Exemplo – ordem 2 (mínimo)
![Page 84: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/84.jpg)
Árvore B
Exemplo – ordem 3
![Page 85: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/85.jpg)
Árvore B
Exemplo – ordem 4
![Page 86: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/86.jpg)
Nó de uma árvore B
P1 ki Pri P2 kj P3 Prj P4
5 º 8 º
1 º 3 º 6 º 7 º 9 º 12 º
• Ponteiro de nó árvore
º Ponteiro de dados
Ponteiro de árvore
nulo
Ponteiro
de árvore
Ponteiro
de dados
Ponteiro
de árvore
Ponteiro
de dados
Ponteiro
de árvore
Nós Intermediário
Nós Folhas
Ki < 5 8 < Ki < 5 Ki > 8
![Page 87: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/87.jpg)
Exemplo - Relação
Relação depósito no banco de dados bancário. Registro Nome-agência Numero-conta Nome-cliente saldo
0 Perryridge 102 Hayes 400
1 Round Hill 305 Turner 350
2 Mianus 215 Smith 700
3 Downtown 101 Johnson 500
4 Redwood 222 Lindsay 700
5 Round Hill 201 Willians 900
6 Brighton 217 Green 750
7 Clearview 218 Lyle 700
![Page 88: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/88.jpg)
Exemplo
Downtown Redwood
Brighton Clearview
Brighton 217 Green 750
Mianus Perrydge Round Hill
Downtown 101 Johnson 500 Redwood 222 Lindsay 700
Clearview 218 Lyle 700
Mianus 215 Smith 700 Perryridge 102 Hayes 400
Round Hill 201 Willians 900
A árvore B gerencia o espaço usado por seus
blocos para que eles sempre estejam ocupados
com pelo menos a metade de sua capacidade.
![Page 89: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/89.jpg)
Exemplo E se a chave se repetir?
Downtown Redwood
Brighton Clearview
Bucket de Brighton
Mianus Perrydge Round Hill
Bucket de Downtown Bucket de Redwood
Bucket de Clearview
Bucket de Mianus Bucket de Perryridge
Bucket de Round Hill
![Page 90: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/90.jpg)
Árvore B+
Na árvore B, uma chave somente é entrada uma vez em algum nível da árvore.
Já na árvore B+, todos os dados só são armazenados nas folhas.
Desta maneira, a estrutura conceitual das folhas difere da estrutura dos nós internos.
As folhas da árvore B+ estão ligadas em sequência, tornando possível o acesso ordenado a seus campos.
![Page 91: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/91.jpg)
Nó de uma árvore B
• A chave ‘5’ aparece uma única vez na árvore.
• O nó da árvore B tem um ponteiro para os dados referentes a chave.
5 º 8 º
1 º 3 º 6 º 7 º 9 º 12 º
• Ponteiro de nó árvore
º Ponteiro de dados
Ponteiro de árvore
nulo Nós Intermediário
Nós Folhas
Ki < 5 8 < Ki < 5 Ki > 8
![Page 93: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/93.jpg)
Nó de uma árvore B+
5 8
1 º 3 º 6 º 7 º 9 º 12 º
• Ponteiro de nó árvore
º Ponteiro de dados
Ponteiro de árvore
nulo Nós Intermediário
Nós Folhas
Ki ≤ 5 8 ≤ Ki < 5 Ki ≥ 8
ki P1 kj P2
Ponteiro
de árvore
Ponteiro
de árvore
![Page 94: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/94.jpg)
Nó de uma árvore B+
5 8
1 º 3 º 5 º
9 º 12 º
• Ponteiro de nó árvore
º Ponteiro de dados
Ponteiro de árvore
nulo Nós Intermediário
Nós Folhas
ki P1 kj P2
Ponteiro
de árvore
Ponteiro
de árvore
6 º 7 º
8 º
![Page 95: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/95.jpg)
Exemplo - Relação
Relação depósito no banco de dados bancário. Registro Nome-agência Numero-conta Nome-cliente saldo
0 Perryridge 102 Hayes 400
1 Round Hill 305 Turner 350
2 Mianus 215 Smith 700
3 Downtown 101 Johnson 500
4 Redwood 222 Lindsay 700
5 Round Hill 201 Willians 900
6 Brighton 217 Green 750
7 Clearview 218 Lyle 700
![Page 96: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/96.jpg)
Exemplo
Perrydge
Brighton Clearview
Downtown Mianus Redwood
Downtown
Nome-agência Numero-conta Nome-cliente saldo
Brighton 217 Green 750
Clearview 218 Lyle 700
Downtown 101 Johnson 500
Mianus 215 Smith 700
Perryridge 102 Hayes 400
Redwood 222 Lindsay 700
Round Hill 305 Turner 350
Mianus Perrydge
Redwood Round Hill
![Page 97: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/97.jpg)
Vantagens Árvore B+
Embora a inserção e remoção em árvore B+
sejam complicadas, elas requerem
relativamente poucas operações.
É a velocidade de operações em árvores B+
que as torna uma estrutura de índice usada
frequentemente em implementações de
bancos de dados.
![Page 98: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/98.jpg)
Vantagens Árvore B sobre a B+
Ausência de armazenamento redundante de
chaves de busca;
Possibilidade de encontrar uma chave sem
chegar até um nó folha;
Busca mais rápida
![Page 99: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/99.jpg)
Vantagens Árvore B+ sobre a B
Nó folha e não-folha são do mesmo tamanho
Facilita o gerenciamento do armazenamento para
o índice;
A remoção é mais simples, pois a entrada a
ser removida sempre estará numa folha.
![Page 100: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/100.jpg)
UNIVERSIDADE FEDERAL DE ITAJUBÁ
ÍNDICES DIRETOS
HASH ESTÁTICO X HASH DINÂMICO
![Page 101: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/101.jpg)
Hashing
Uma desvantagem de esquemas de índice é que precisamos fazer o acesso a uma estrutura de índice a fim de localizar dados.
A técnica de hashing evita o acesso a uma estrutura de índice.
Os arquivos seriam organizados por meio de uma função de hash.
![Page 102: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/102.jpg)
Hashing
A organização de arquivos hashing oferece: Acesso direto ao endereço do bloco de disco que contém
o registro desejado;
Aplica-se uma função sobre o valor da chave de procura do registro para encontrar o bloco de disco correto;
Utiliza-se do conceito de bucket para representar uma unidade de armazenamento de um ou mais registros;
Normalmente equivalente a um bloco de disco, porém ele pode denotar um valor maior ou menor que um bloco de disco.
![Page 103: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/103.jpg)
Função de Hashing
Seja K o conjunto de todos os valores da
chave de busca em uma relação;
Seja B o conjunto de todos os endereços de
buckets.
Uma função de hashing é uma função de K
para B.
h(K)
![Page 104: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/104.jpg)
Funções de Hashing
Uma função Hash ideal distribui as chaves
armazenadas uniformemente por todos os
buckets, de forma que todos os buckets
tenham o mesmo número de registros.
Pior função:
Mapeia todos os valores de chave de busca para
o mesmo bucket.
![Page 105: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/105.jpg)
Funções de Hashing
Função ideal:
Distribui as chaves armazenadas uniformemente por todos os buckets.
A cada bucket seja designado o mesmo número de valores da chave de busca do conjunto de todos os valores dessa chave.
Distribuição aleatória
O valor de hash não estará relacionado a qualquer ordenação externamente visível sobre os valores da chave de busca.
![Page 106: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/106.jpg)
Exemplo - Relação
Relação depósito no banco de dados bancário. Registro Nome-agência Numero-conta Nome-cliente saldo
0 Perryridge 102 Hayes 400
1 Round Hill 305 Turner 350
2 Mianus 215 Smith 700
3 Downtown 101 Johnson 500
4 Redwood 222 Lindsay 700
5 Brighton 217 Green 750
6 Clearview 218 Lyle 700
![Page 107: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/107.jpg)
Exemplo
Função de Hashing
Decidimos ter 24 buckets
A função irá mapear a i-ésima letra do alfabeto para o
i-ésimo bucket.
![Page 108: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/108.jpg)
Clearview
Nome-agência
Perryridge
Round Hill
Mianus
Downtown
Redwood
Brighton
Clearview
Brighton
Downtown
... Mianus
Redwood
Round Hill
Perryridge
Bucket 0
Bucket 1
Bucket 2
Bucket 3
Bucket 12
Bucket 15
Bucket 17
... Bucket 23
![Page 109: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/109.jpg)
Exemplo
Se a busca for pela agência “Perrydge”, a função computa o
inteiro que o P representa, vai até o bucket (bloco) correto e
varre o bloco até encontrar o registro correspondente à
chave de busca.
Se uma agência chamada “Lavras” for inserida, o registro
referente a essa agência será gravado no bucket número 11.
A remoção de qualquer registro também é direta. Ou seja,
para remover o registro de chave Ki, calcula-se h(Ki) para
localizar o bucket para aquele registro e varre o bucket
procurando pelo registro de chave Ki.
![Page 110: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/110.jpg)
Função de Hashing
A função de hashing é escolhida no momento da implementação do sistema e não se pode mudá-la mais tarde.
A função h mapeia valores de chave de busca para um conjunto fixo B de endereços de buckets.
Se B for muito grande, desperdiça-se espaço.
Se B for muito pequeno, o bloco conterá valores muito diferentes da chave de busca.
![Page 111: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/111.jpg)
Hashing Dinâmico
A necessidade de fixar o conjunto B de
endereços de buckets é um problema sério
com a técnica de hashing estático.
A maioria dos bancos crescem muito com o
tempo.
![Page 112: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/112.jpg)
Hashing Dinâmico
Divide e une os buckets enquanto o banco de dados cresce e encurta
Eficiência do espaço é mantida
Função gera valores por intervalos relativamente grandes
Buckets criados por demanda
![Page 113: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/113.jpg)
Hashing Dinâmico
Hashing dinâmico inicial
Hashing dinâmico após 3 inserções
![Page 114: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/114.jpg)
Hashing Dinâmico
Vantagens
Desempenho mantido quando o arquivo aumenta
Sobrecarga de espaço mínima
Buckets não precisam ser reservados
Desvantagem
Pesquisa com um nível de indireção adicional
![Page 115: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/115.jpg)
UNIVERSIDADE FEDERAL DE ITAJUBÁ
EXERCÍCIO
![Page 116: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/116.jpg)
EXERCÍCIOS 4ª lista de exercícios
No site
![Page 117: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/117.jpg)
Exercício – Árvore B e B+
Atividade em Grupo (3 pessoas) – Valor: 5 pontos a) Crie uma tabela no banco de dados MySQL, que tenha:
Um atributo como chave primária
Um atributo como UNIQUE
Pelo menos mais três atributos
Pelo menos dez registros
b) Esquematize e justifique:
O arquivo sequencial
Os índices das chaves primária e unique
Mais dois índices secundários, sendo um mononível e um multinível
Entregar impresso: Dump da tabela + esquemas
Data: 06/06/2011
![Page 118: Aula 10 Indexacao](https://reader036.vdocuments.site/reader036/viewer/2022081401/557201e94979599169a29a19/html5/thumbnails/118.jpg)
Indexação e Hashing
Criar ao menos um índice secundário sobre o
banco de dados do trabalho final da
disciplina.
Justificar a criação de tal(is) índice(s).