Indices estruturados por B-TREE

Slides:



Advertisements
Apresentações semelhantes
IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho
Advertisements

AULA 8 Profa. Sandra de Amo GBC053 – BCC
O Modelo de Jesus para Crescimento e Serviço
Material pedagógico Multiplicar x 5 Clica!
Vamos contar D U De 10 até 69 Professor Vaz Nunes 1999 (Ovar-Portugal). Nenhuns direitos reservados, excepto para fins comerciais. Por favor, não coloque.
Excel Profa. Cristina M. Nunes.
Indice estruturado por Hash
Bulk Loading – Algoritmo AULA 12 - COMPLEMENTO Profa. Sandra de Amo GBC053 – BCC Sandra de Amo.
RESUMO DA AULA 5 Profa. Sandra de Amo GBC053 – BCC
Cálculos de Custos I/O-Arquivos Hash Introdução aos Métodos de Acesso
Algoritmos para Operação de Junção
Algoritmos para Seleção Simples AULA 16 Profa. Sandra de Amo GBC053 – BCC
Estimativas de Custos: Arquivos Heap, Ordenados e Hashed Indices e Métodos de Acesso AULA 13 Profa. Sandra de Amo Programa de Pós-graduação em Ciência.
Organização de Arquivos Tipos de Indices Cálculo de Custos de I/O
AULA 10 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Seleção e Projeção
Algoritmos para Seleção Simples
Gerenciamento de Arquivos, Páginas e Registros
Introdução aos Métodos de Acesso AULA 7 – Parte II Profa. Sandra de Amo GBC053 – BCC
B-tree Gerenciamento de Duplicatas Bulk Loading AULA 12 Profa. Sandra de Amo GBC053 – BCC
Método de Acesso Dinâmico - B-Tree AULA 14 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU Sistemas de Banco de Dados
Método de Acesso Dinâmico: B-Tree - Deleção Chaves de busca sem duplicatas AULA 9 Profa. Sandra de Amo GBC053 – BCC
Revisão Prova 2 Métodos de Acesso: BTree e Hash AULA 20 Profa. Sandra de Amo GBC053 – BCC
Série de Exercícios.
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
Árvore Binária - altura máxima A: Inserção de 1, 2, 3, 4, 5, 6 e 7 Pior caso: O(n)
Árvores.

Arquivos Seqüenciais Inhaúma Neves Ferraz
Árvores B Conceitos Exemplos.
EXPRESSÕES ARITMÉTICAS
EXPRESSÕES ARITMÉTICAS
Arquivos Extensíveis.
Classificação e Pesquisa de Dados
Indexação e Hashing Muitas consultas referenciam apenas uma pequena porção dos registros em uma tabela. Portanto necessitamos ser capaz de localizar estes.
FUNÇÃO MODULAR.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Sistemas de Informações Geográficas
Listas Encadeadas.
Provas de Concursos Anteriores
Indexação de Arquivos Página de rosto.
Módulo Financeiro Centro de Custo.
MECÂNICA - ESTÁTICA Cabos Cap. 7.
MECÂNICA - ESTÁTICA Vetores Forças Cap. 2.
Algoritmos e Estruturas de Dados II
Pesquisa em Memória Primária
Árvores binárias de pesquisa com balanceamento
INF 1010 Estruturas de Dados Avançadas
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Lemas (Sudkamp)  .
Árvore de Pesquisa Memória Secundária Engenharia de Computação - UFG.
Coordenação Geral de Ensino da Faculdade
Coordenação Geral de Ensino da Faculdade
Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados
Algorítmos e estrutura de dados III
Revisão Prova 2 Métodos de Acesso – Parte 2 AULA 21 Profa. Sandra de Amo GBC053 – BCC.
Universidade Católica de Pelotas Mestrado em Ciência da Computação
Operações de Inserção e Remoção – BTree Resumo
Arquivos Estruturados por Hashing– Custos I/O
Introdução e Busca Cega
Rotação Simples e Dupla Katia Guimarães
Fundamentos de Programação
1 Aplicações do Fecho Regular. 2 A interseção de uma linguagem livre de contexto e uma linguagem regular é uma linguagem livre de contexto livre de contexto.
Olhe fixamente para a Bruxa Nariguda
© Copyright 2007 Algoritmos e Estruturas de Dados - Todos os direitos reservados Átila Valgueiro Malta Moreira Juliana Medeiros de Lucena Rafael Alberto.
AULA 21 Profa. Sandra de Amo BCC - UFU
INF70 – Gerenciamento de Banco de Dados 2 Índices baseados em Árvores Ilmério Reis da Silva UFU/FACOM/BCC.
Transcrição da apresentação:

Indices estruturados por B-TREE Métodos de Acesso Indices estruturados por B-TREE

Plano Geral Método de Acesso Indexado Sequencial (ISAM) Busca Inserção Supressão B-Tree: uma estrutura dinâmica

Dados e Indices Dados armazenados em arquivo de dados <a1,a2, … , k,…, an> página i, slot j Arquivos de indice estruturados em árvore Folhas : < k, (i,j) > Nós intermediários : <chave, pagId> Objetivo : melhorar a busca de registros

Dados e Indices Inserção e supressões são feitas no arquivo de dados A cada inserção ou supressão de um registro de dados, a estrutura do arquivo de indices deve ser ajustada. O ajuste implica em inserção ou supressão de entradas no arquivo de indice. Como gerenciar inserções e supressões num arquivo de indice de modo a manter sua estrutura ?

ISAM - Motivação Quais os empregados com salário > 2000 ? Busca binária no arquivo de indice até encontrar o primeiro salário > 2000 Escaneia o arquivo de índice a partir deste ponto e lê os registros correspondentes. Se o arquivo de indice é muito grande : busca binária pode ser dispendiosa.

Idéia Criar um segundo arquivo com um registro para cada página do arquivo de indice original <primeira chave da página, ponteiro da página> Ordenado por chave 14 2* 5* 7* 12* 14* 17* 19* 22*

Idéia (continuação) Segundo arquivo menor que arquivo original Busca binária no segundo arquivo mais rápida Se segundo arquivo não cabe numa página Repetir o processo : cria-se um terceiro arquivo com um registro para cada página do segundo arquivo … Raiz cabe numa página

Esquema Geral do Método ISAM Páginas dos arquivos de indices (a partir da 2a camada) Páginas primárias – as entradas do arquivo de índice da primeira camada Páginas de overflow

Alocação de Páginas em ISAM Páginas primárias e de overflow : contém as entradas primárias k* ISAM é uma estrutura estática Na criação do arquivo Páginas primárias são alocadas Páginas de índice são alocadas 20% de cada página é livre para posteriores inserções Manutenção : Páginas de overflow são alocadas à medida que as páginas de dados são preenchidas em decorrência de inserções.

Busca de um registro de dados Procura 27* Raiz 40 51 63 20 33 10* 15* 20* 27* 33* 37* 40* 46* 51* 55* 63* 97*

Inserção de um registro Raiz 40 51 63 20 33 10* 15* 20* 27* 33* 37* 40* 46* 51* 55* 63* 97* 23* 48* 41* Página de Overflow 42*

Supressão de um registro Procura 51* Raiz Nunca são alteradas !! 40 51 63 20 33 10* 15* 20* 27* 33* 37* 40* 46* 51* 55* 63* 97* 23* 48* 41* Pagina de Overflow 42*

Comparação de Custos Número de I/O = número de níveis da árvore Custo Capacidade do nó = F Total de páginas primárias = N Número de níveis = logF N Custo Arquivo de 1 000 000 registros 10 registros por página de dados : total de páginas = 100 000 100 entradas em cada página de índice Scan = 1000 000/10 = 100000 I/0 Busca binária = log2 100000 = 17 I/0 ISAM = log100 100000 = entre 2 e 3 I/0, pois 1002 < 100000 < 1003

Vantagens de ISAM ISAM é estático : inserções e supressões afetam somente as folhas. Em alguns casos, ISAM é preferível a B-Trees

Desvantagens de ISAM Possibilidade de cadeias de páginas overflow Páginas overflow geralmente não são ordenadas, a fim de agilizar inserções. Para aliviar este problema : Árvore é criada com 20% de cada folha livre Entretanto, uma vez preenchido este espaço, cadeias de overflow só podem ser eliminadas através de uma total reorganização da estrutura.

B-Trees : Método de Acesso Dinâmico Operações de inserção e supressão são balanceadas de modo a que cada nó tenha uma ocupação minima e máxima. Uma ocupação mínima de 50% é garantida em cada nó (exceto a raiz) Procura por um registro requer somente uma busca em profundidade da raiz até uma folha apropriada. Arvore é balanceada Todos os caminhos da raiz até a folha têm o mesmo comprimento. Cada nó intermediário contém m entradas, onde d ≤ m ≤ 2d, d = ordem da B-tree Páginas das folhas são ligadas em sequência através de ponteiros – podem ser percorridas em sequência nas duas direções.

Busca Ordem = 2 : cada nó contém K entradas, 2 <= K <= 4 Chave contém chave candidata (não há duplicatas) 13 17 24 30 5 ? 15 ? 2* 3* 5* 7* 14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39*

Inserção Inserindo 8* Cheia ! Cheia ! 13 17 24 30 7* 8* 5 5* 2* 3* 5* 14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39* Cheia !

Inserção Variante 1 : Se nó está cheio divida e ajuste os nós ancestrais. Variante 2 : Testa primeiro se pode redistrisbuir num nó vizinho. Em caso negativo, divide. Ideal Não redistribuir nós intermediários – sempre dividir o nó. Se uma folha está cheia, procure um vizinho. Se tiver espaço, redistribua. Caso contrário, divida a folha cheia.

Inserção - Variante 1 Inserindo 8* Cheia ! Cheia ! 13 17 24 30 7* 8* 5 2* 3* 7* 8* 5* 7* 5 5* 14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39* Cheia !

Inserção : Variante 1 Inserindo 8* 17 17 5 13 24 30 5 13 24 30 5* 7* 2* 3* 5* 7* 8* 14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39*

Inserção : Variante 2 Inserindo 8* 8* 13 8* 17 24 30 2* 3* 8* 5* 7* 14* 8* 16* 14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39* 8*

Resumo: Metodologia de Inserção 1. Busca a página onde deve ser inserida a entrada. 2. Caso a página suporte a inserção (sem ultrapassar o max) Insere a tupla no final da página e pára. 3. Caso a página P não suporte a inserção 3.1 Verifica se um dos vizinhos suporta a inserção 3.2 Caso positivo Vizinho à direita VD: a entrada é inserida na 1a posição de VD: o elemento da camada imediatamente superior que tem um ponteiro à direita apontando para VD é substituido pela chave da entrada inserida. Vizinho à esquerda VE Insere-se a nova entrada na posição adequada em P, obtendo-se P’ (P’ tem d+1 elementos agora) primeira chave X da página P’ passa para a última posição de VE, o elemento da camada imediatamente superior que tem um ponteiro apontando à esquerda para VE é substituido pela chave X.

Resumo: Metodologia de Inserção 3.2 Caso negativo: número de elementos de P = d Considera-se a página P’ = P + nova entrada X Quebra-se a P’ em duas páginas P1, P2 de tamanho d. Considera-se o elemento X do meio das duas páginas. Insere-se o elemento X na camada imediatamente acima, à esquerda do ponteiro que apontava para P. Ajusta-se os ponteiros desta camada: o da esquerda de X aponta para P1, o da direita de X aponta para P2. O restante permanece como estava. Caso após a inserção de X na camada acima, a página fique cheia, repete-se o mesmo processo (testa se é possível distribuir entre os vizinhos e em caso negativo, quebra-se a página e modifica-se a camada imediatamente acima).

Supressão Se ocupação não fica abaixo do mínimo, suprime, não altera ponteiros, nem nós ancestrais Se ocupação fica abaixo do mínimo Tenta redistribuição com nó vizinho, se possível Caso contrário junta com vizinho

Nem junta nem redistribui Suprimindo 19* 17 5 13 24 30 5* 7* 8* 2* 3* 14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39*

Redistribuição nas folhas Suprimindo 20* 17 5 13 24 27 30 2* 3* 5* 7* 8* 14* 16* 22* 24* 20* 22* 27* 24* 29* 27* 29* 33* 34* 38* 39*

Juntando folhas Suprimindo 24* 17 Quase vazia ! 5 13 27 30 30 5* 7* 8* 2* 3* 5* 7* 8* 14* 16* 22* 24* 22* 27* 29* 27* 29* 33* 34* 38* 39*

Junção de dois nós intermediários 17 5 13 5 13 27 30 30 30 2* 3* 5* 7* 8* 14* 16* 24* 22* 27* 29* 27* 33* 34* 38* 39* São necessários 5 ponteiros

Junção de dois nós intermediarios 17 17 5 5 13 13 30 27 30 30 27 30 30 30 2* 3* 5* 7* 8* 14* 16* 24* 22* 27* 29* 27* 33* 34* 38* 39*

Redistribuição em nós intermediários 22 5 13 5 17 13 17 20 27 30 2* 3* 5* 7* 8* 14* 16* 17* 18* 20* 21* 22* 24* 27* 29* 33* 34* 38* 39*

Redistribuição em nós intermediários 22 Quase vazia 5 13 5 17 13 17 20 30 2* 3* 5* 7* 8* 14* 16* 17* 18* 20* 21* 22* 27* 29* 33* 34* 38* 39*

Redistribuição em nós intermediários 22 5 13 5 17 13 17 20 30 ?? 2* 3* 5* 7* 8* 14* 16* 17* 18* 20* 21* 22* 27* 29* 33* 34* 38* 39* ??

Redistribuição em nós intermediários 22 5 13 5 17 13 17 20 30 5 13 17 2* 3* 5* 7* 8* 14* 16* 17* 18* 20* 21* 22* 27* 29* 33* 34* 38* 39* ??

Resumo: Metodologia de Supressão Busca a página onde está a tupla a ser removida. Caso após a remoção da tupla, a ocupação não fica abaixo do mínimo, a tupla é removida e nenhum ajuste suplementar é feito nos outros níveis. Caso após a remoção da tupla, a ocupação fica abaixo do mínimo: Há possibilidade de redistrisbuir com um dos vizinhos. Primeiro elemento do vizinho à direita passa para a folha à esquerda- elimina-se o primeiro elemento do pai do vizinho à direita Exercicio : Último elemento do vizinho à esquerda passa para a folha- ? Não há possibilidade de redistribuição com os vizinhos Junta-se com o vizinho à direita Remove do pai do ex-vizinho o elemento cujo ponteiro à direita apontava para o ex-vizinho da direita.

Resumo: Metodologia de Supressão Junção de nós intermediários Caso o nó à esquerda tenha no máximo d elementos Remove-se do pai do ex-nó à direita o elemento cujo ponteiro à direita apontava para este ex-nó. Insere-se este elemento no nó juntado. Ajusta-se os ponteiros. Redistribuição de nós intermediários Caso o nó à esquerda tenha mais de d elementos Ultimo elemento do nó à esquerda passa para o nó à direita. Remove-se do pai do nó à direita o elemento cujo ponteiro à direita apontava para este nó. Insere-se este elemento no nó juntado. Transfere-se para o lugar que ocupava o elemento removido, o ultimo elemento do nó à esquerda.

Exercicio Como tratar o caso em que o nó que ficou abaixo da ocupação minima é o primeiro nó (não tem nó vizinho à esquerda) ?

Gerenciando Duplicatas Quando a chave do índice não é chave candidata da relação Em sistemas comerciais: Sybase: dados são ordenados pela chave – páginas são ordenadas sequencialmente – acrescenta-se páginas de overflow DB2, Oracle, MS SQL Server: considera-se um identificador de tuplas, eliminando-se as duplicatas. Exemplo: (k,*) (k,*) ...  (k,id1,*) (k,id2,*),...

Método Geral para Gerenciamento de Duplicatas 17 7 9 5 13 17 - 37 5 43 13 17 2* 3* 5* 7* 8* 9* 10* 13* 17* 23* 23* 23* 23* 37* 41* 43* 47* Segundo Filho não contém nenhuma nova chave Primeira nova Chave é 37* Primeiro Filho

Duplicatas : chave não contém chave candidata Busca 17* 17 7 9 5 13 17 - 37 5 43 13 17 2* 3* 5* 7* 8* 9* 10* 13* 17* 23* 23* 23* 23* 37* 41* 43* 47*

Duplicatas : chave não contém chave candidata Busca 24* 17 7 9 5 13 17 - 37 5 43 13 17 2* 3* 5* 7* 8* 9* 13* 13* 17* 23* 23* 23* 23* 37* 41* 43* 47* ? Não precisa ir mais adiante !

Duplicatas : chave não contém chave candidata Busca 13* 17 7 9 5 13 17 - 37 5 43 13 17 2* 3* 5* 7* 8* 9* 13* 13* 17* 23* 23* 23* 23* 37* 41* 43* 47*