Академический Документы
Профессиональный Документы
Культура Документы
Indexao e Hashing
2/73
Conceitos Bsicos
Exemplo: ndice no final de livro; Atributo ou conjunto de atributos utilizados para pesquisar registros em um arquivo;
Chave de busca:
Arquivo ndices:
Registros de ndices;
3/73
Conceitos Bsicos
Arquivo ndices:
Tipos bsicos:
Chave de busca so armazenadas ordenadamente; Chave de busca so distribudas uniformemente em buckets de acordo com um funo hash;
ndices Hash:
4/73
Mtrica de Avaliao
Tipos de acesso:
Localizao de registros;
Localizao de registros;
Medidas:
Tempo de acesso; Tempo para inserir novo registro; Tempo para apagar registro existente; Espao extra (overhead);
5/73
6/73
Estruturas que permitem uma recuperao rpida de dados; Colunas simples ou grupos de colunas podem ser indexados;
7/73
Pesquisas frequentes; Chave estrangeira; Colunas utilizadas regularmente em joins; Colunas usadas com frequncia em clusulas WHERE; Demanda de pesquisas em intervalo grande;
8/73
Se a tabela pequena; Tabela alterada com frequncia; Retorno de uma consulta for muito alta: Exemplo: uma coluna somente com dois valores (Masculino e Feminino);
9/73
10/73
UNIQUE:
11/73
Comando para eliminarmos somente o ndice; Qualquer ndice de uma tabela eliminado automaticamente quando a tabela eliminada; A tabela ou viso onde foi criado o ndice no afetada pela sua eliminao; O ndice no pode ser alterado, para modificlo preciso excludo e depois inclu-lo novamente;
12/73
13/73
Oracle INDEX
14/73
Oracle - Hints
INDEX Hints:
/* comment */
Utilizado informar ao Sistema Gerenciador de Banco Oracle, caractersticas dos dados ou aplicao;
15/73
Oracle - Hints
INDEX Hints:
CREATE INDEX idx_customers_id ON customers(cust_id); SELECT * FROM customers WHERE cust_id = 99999; SELECT /*+ INDEX_ASC(customers idx_customers_id) */ * FROM customers WHERE cust_id=99999;
16/73
Oracle - Hints
INDEX Hints:
17/73
Oracle - Hints
INDEX Hints:
INDEX_JOIN:
Utilizado para combinar vrios ndices; Combinar as tabelas, sem acessa-las propriamente dito; Utilizado para combinar vrios ndices de mapa de bits em operaes booleanas;
INDEX_COMBINE;
Grandes consultas:
SELECT /*+ INDEX_COMBINE(e geo_dmnsn_idx proft_dmnsn_idx) */ * FROM fact_trans_amt WHERE (geo_id = 108 OR proft_ctr_id = 110);
18/73
Oracle - Hints
INDEX Hints:
FULL;
Ignora os ndices, realizando uma leitura completa das tabelas; Especifica quais ndices no podem ser utilizados;
NO_INDEX;
19/73
ndices Ordenados
ndices Ordenados:
Estrutura de ndice est associada a uma chave de busca; ndice Ordenado armazena os valores das chaves de busca em ordem classificada e associada a cada chave de busca os registros que a contem; Os prprios registros no arquivo indexado podem ser armazenados em alguma ordem classificada; Um arquivo pode ter vrios ndices em diferentes chaves de busca;
20/73
ndices Ordenados
um ndice cuja chave de busca tambm define a ordem sequencial do arquivo; Pode ser como base qualquer chave de busca;
Os ndices cuja chave de busca especifica uma ordem diferente da ordem sequencial do arquivo;
21/73
ndices Ordenados
Arquivos ordenados sequencialmente por uma chave de busca; Projetados para aplicaes:
22/73
O ponteiro para o registro consiste em um identificador de um bloco de disco e um deslocamento dentro do bloco de disco;
23/73
ndice Denso
O registro de ndice contem o valor para o primeiro registro de dados com o valor em especfico;
24/73
ndice Esparso
Os registros de ndice aparece somente para alguns dos valores da chave de busca;
Como no ndice Denso, os registros so classificados sobre a mesma chave de busca; Busca:
25/73
ndice Esparso
26/73
ndice Denso:
Rpido para localizar um registro; Menor espao; Menor sobrecarga (Incluses e Excluses);
ndice Esparso:
27/73
Melhor soluo:
Uma vez em memria o tempo mnimo para varrer todo o bloco; Quando os dados estiverem em um bloco de estouro;
Problema:
28/73
ndices Multinveis
Quando o ndice primrio no mais pequeno o suficiente para ser mantido na memria principal;
O ndice deve ser mantido como arquivos sequenciais em disco; O processo de busca de um ndice grande pode ser dispendioso; Tratamos o ndice primrio como qualquer outro arquivo sequencial em disco; Definimos um ndice esparso sogre o ndice agrupado;
Soluo:
29/73
ndices Multinveis
Todos os nveis devem ser atualizados quando se tem uma transao de incluses e excluses de registros;
30/73
Atualizao do ndice
Independentemente da forma com que o ndice utilizado, cada ndice precisa ser atualizado sempre que um registro inserido ou excludo do arquivo;
31/73
ndices Densos:
Se o registro excludo for o nico registro com seu valor especfico de chave de busca:
Ento o sistema retira o registro de ndice correspondente; Se o registro de ndice armazena ponteiros para todos os registros com o mesmo valor de chave de ndice: O sistema exclui do registro de ndice o ponteiro para o registro excludo; O registro de ndice armazena ponteiros somente para o primeiro registro com o valor da chave de busca: Se o registro a ser excludo for o primeiro registro com o valor da chave de busca, o sistema atualiza o registro de ndice para que aponte para o prximo registro;
Caso contrrio:
32/73
ndices Esparsos:
Se o ndice no tiver um registro de ndice com o valor de chave de busca do registro excludo:
Nada precisa ser feito com o ndice; Se o registro excludo for nico registro com sua chave de busca: O sistema substitui o registro de ndice correspondente para o prximo valor da chave de busca; Se o prximo j tiver uma entrada de ndice, ento a entrada excluda; O sistema atualiza o registro de ndice para que aponte para o prximo com o mesmo valor da chave de busca;
Caso contrrio:
33/73
O sistema realiza uma pesquisa usando o valor de chave de busca que aparece no registro a ser inserido; ndices Densos:
O sistema insere um registro de ndice, na posio apropriada; Se o registro de ndice armazena ponteiro para todos os registros com o mesmo valor: O sistema acrescenta um ponteiro para o novo registro; Caso contrrio: O sistema acrescenta o registro sendo inserido aps os outros registros com o mesmos valores de chave de busca;
Caso contrrio:
34/73
ndices Esparsos:
Insere no ndice o primeiro valor de chave de busca que aparece no novo bloco; Se o novo registro tiver o menor valor de chave de busca em seu bloco: O sistema atualiza a entrada de ndice apontado para o bloco; Caso contrrio: O sistema no faz qualquer mudana no ndice;
35/73
Caso contrrio:
ndices Multinvel:
O ndice de menor nvel simplesmente um arquivo contendo registros; Caso ocorra qualquer mudana no ndice de menor nvel: O sistema atualiza o ndice de segundo nvel;
36/73
ndices Secundrios
Frequentemente, pesquisamos todos os registros que os valores de um determinado campo satisfaam certas condies;
37/73
ndices Secundrios
No chave candidata:
Os registros restantes, com o mesmo valor de chave de busca, podem estar em qualquer lugar do arquivo;
38/73
ndices Secundrios
Usado para implementar ndices secundrios sobre chaves de busca que no so chaves candidatas; O ponteiro nesse caso no apontam diretamente para o arquivo;
39/73
ndices Secundrios
40/73
ndices Secundrios
Insero / Excluso:
Segue o modelo descritas para ndices densos; Se um arquivo tiver vrios ndices, sempre que o arquivo for modificado, cada ndice ter de ser atualizado;
41/73
ndices Secundrios
Melhoram o desempenho das consultas que usam chaves diferentes da chave de busca do ndice agrupado; Impem sobrecarga nas transaes de incluso e excluso; Buscas sequenciais usando ndices primrios so eficiente, mas buscas sequenciais usando ndices secundrios so exaustivos; Deve ser implementado com base em uma estimativa da frequncia relativa das consultas e modificaes.
42/73
Para pesquisas de ndice; Buscas sequenciais de dados; Necessitam de uma reorganizaes peridicas dos arquivos;
43/73
Forma de uma rvore balanceada; Cada n no-folha na rvore tem entre [n/2] e n filhos;
44/73
Vantagens:
Mantem eficincia mesmo com insero e excluso de dados; No necessitam de reorganizaes dos arquivos para manter o desempenho; Overhead para insero e excluso; Overhead de armazenamento;
Desvantagens (aceitveis):
Um ndice de rvore B+ um ndice multinvel, mas tem uma estrutura diferente dos arquivos sequenciais indexado multinvel; N tpico de uma rvore B :
A estrutura de bucket usada somente se a chave de busca no formar uma chave candidata e se arquivo no for classificado na ordem de valor da chave de busca;
46/73
Sendo:
47/73
Sendo n = 3; Como o arquivo conta ordenado por nome_agencia, os ponteiros no n folha apontam diretamente para o arquivo;
48/73
Pode manter n 1 valores; Os ns de folha contenham pelo menos [( n-1)/2] valores; Os intervalos de valores em cada folha no se sobrepem; Se o ndice da rvore B+ tiver de ser um ndice denso, cada valor de chave de busca precisa aparecer em algum n de folha;
49/73
O ponteiro P:
Como existe uma ordem linear nas folhas, com base nos valores de chave de busca que elas contm; P pode encadear os ns de folha na ordem da chave de busca;
50/73
Formam um ndice multinvel (esparso) sobre os ns de folha; A estrutura dos ns no-folha igual a dos ns da folha, exceto que todos os ponteiros so para ns de folha; Um n no-folha pode manter at n ponteiros;
E ao menos [ n / 2 ] ponteiros;
Porm, precisa manter pelo menos dois ponteiros; A menos que a rvore tenha apena 1 n;
52/73
Exemplo de n = 3:
53/73
Exemplo de n = 5:
54/73
O tamanho de cada caminho da raiz para o n de folha igual; Requisito para uma rvore B+;
55/73
Consultas em rvores B
56/73
Consultas em rvores B
57/73
Atualizaes em rvores B
Insero:
Aplique recursivamente pela rvore at que uma insero no cause uma diviso ou uma nova raiz seja criada;
58/73
Atualizaes em rvores B
Insero:
59/73
Atualizaes em rvores B
Excluso:
Buscar o n de folha, como utilizado em pesquisa; Se o n for muito pequeno, excludo do seu n pai;
Essa excluso resulta na aplicao recursiva do algoritmo de excluso at que a raiz seja alcanada; Um n pai permanece adequadamente cheio aps a excluso;
Ou aps a redistribuio;
60/73
Atualizaes em rvores B
Excluso:
61/73
Problemas:
ndice de Arquivos:
Resolvido utilizando ndices de rvores B+; Resolvido utilizando organizao de Arquivos de rvores B+;
Registros em Arquivos:
O nmero de registros que podem ser armazenados em um n folha menor que o nmero de ponteiros em um n no-folha;
63/73
Para melhora a utilizao de espaos utilizado mais ns (mesmo nvel) na redistribuio durante as divises e mesclagens;
64/73
Exemplo:
65/73
Indexando Strings
Problemas:
Gerando chaves de busca de tamanho variado; Diferentes ns podem ter diferentes fanout;
66/73
Indexando Strings
Compactao de prefixo:
No armazenado o valor inteiro da chave de busca nos ns internos; S armazenado um prefixo de cada valor de chave de busca que seja suficiente para distinguir entre os valores de chave nas subrvores que ela separa; Exemplo:
Semelhante as rvores B+, mas rvore B elimina o armazenamento redundante de valores de chave de busca;
Nas rvores B+, cada valor de chave de busca aparece em algum n de folha;
Como as chaves de busca no so repetidas na rvore B, podemos armazenar o ndice em menos ns de rvore;
68/73
69/73
70/73
Excluso:
A entrada excluda sempre aparece em uma folha; A entrada excluda pode aparecer em um n no-folha; O valor correto precisa ser selecionado como um substituto a partir da subrvore do n contendo a entrada excluda;
Em uma rvore B:
71/73
Pode ter menos ns que a rvore B+; Algumas vezes, possvel determinar o valor de busca antes de chegar ao ltimo n; Somente uma pequena frao dos valores de busca podem ser determinados precocemente; Fanout reduzido (grandes ns intermedirios); Complexo para tratar operaes;
72/73
Referncias
KORTH, H. F., SILBERSCHATZ, A. Sistema de Banco de Dados, Makron Books DATE, C. J. Introduo a Sistemas de Banco de Dados. Traduo da 7. Edio Americana. Editora Campus. DATE, C.J. Bancos de Dados, Tpicos Avanados, Editora Campus GARCIA-MOLINA, H. ULLMAN, J.D., WIDOM, J. Implementao de Sistemas de Bancos de Dados. Editora Campus Manuais Tcnicos e Livros voltados para Bancos de Dados especficos.
73/73