Bases de Dados. Remoções em árvores B + Remoção em árvores B +

Documentos relacionados
Bases de Dados. Índices. Discos. transferência lenta. transferência rápida e em blocos (512B ~ 4KB) e aos bytes. memória.

Bases de Dados. Índices. Discos. transferência rápida e aos bytes. transferência lenta e em blocos (512B ~ 4KB) memória. disco BD / aplicação

Sistemas de Informação e Bases de Dados 2012/2013. Índices. Alberto Sardinha

Banco de Dados. Módulo 15 - Estruturas de Indexação

Dois parâmetros essenciais t T tempo de transferência de um bloco. assume-se igual para operações de leitura e escrita

Modelo Relacional. Josino Rodrigues

Chapter 11: Indexing and Hashing. José Alferes Sistemas de Bases de Dados - ISCTEM janeiro de 2017

Bases de Dados. Algoritmos. Custo de operação. Algoritmos de selecção. Algoritmo de ordenação. Algoritmos de junção.

ACH2024. Aula 22 Hashing Externo - Hashing estático e dinâmico (extensível) Prof Helton Hideraldo Bíscaro

Pesquisa em Memória Secundária. Prof. Jonas Potros

indexação e hashing Construção de Índices e Funções Hash Diego Gomes Tomé - MSc. Informática Orientador: Prof. Dr. Eduardo Almeida October 13, 2016

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

ACH2025. Laboratório de Bases de Dados Aula 9. Indexação e Hashing Parte 2. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

Tabela Hash. Disciplina de Algoritmos e Estrutura de Dados III. Prof. Marcos Antonio Schreiner 15/05/2015

Hashing externo (II) Graça Nunes. Fonte: Folk & Zoelick, File Structures

INF70 Gerenciamento de Banco de Dados 2 Índices baseados em Hash

GBC053 Gerenciamento de Banco de Dados Índices baseados em Hash

Cap. 5 Indexação Baseada em Hashing

UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO

Bases de Dados. Parte VIII. Organização Física dos Dados

TABELAS DE DISPERSÃO/HASH

Hashing Externo. SCC-503 Algoritmos e Estruturas de Dados II. Thiago A. S. Pardo M.C.F. de Oliveira Cristina Ciferri

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura

Algoritmos de pesquisa. Tabelas de dispersão/hash

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

O acesso aos elementos é aleatório, isto é, qualquer elemento numa colecção pode ser acedido realizando uma pesquisa pela chave.

Hashing convencional...

Tabelas de dispersão/hash

Sistemas de Informação e Bases de Dados 2012/2013. Linguagem SQL

B-Árvores. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC Estruturas de Dados

Hashing. Hashing. Hashing versus Indexação. Hashing. Hashing convencional... Exemplo de espalhamento. Revisão...

Universidade Estadual do Oeste do Parana - UNIOESTE Jhonata R.de Peder Marcelo Schuck

Índices. 1. Introdução. Universidade Federal de Pelotas Departamento de Informática Bacharelado em Ciência da Computação Banco de Dados I

Árvores B. Árvores B. Estrutura de Dados II Jairo Francisco de Souza

Árvores. Árvores M-Vias. Métodos de Pesquisa de Dados. de Pesquisa (ANP) VANTAGENS EXEMPLO

MC3305 Algoritmos e Estruturas de Dados II. Aula 02 Hashing. Prof. Jesús P. Mena-Chalco.

Sistemas de Bases de Dados 1.º teste (com consulta limitada: 2 folhas identificadas) - Duração: 2 horas

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

ACH2025. Laboratório de Bases de Dados Aula 8. Indexação e Hashing Parte 1. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

Classificação e Pesquisa de Dados. Aula 23 Organização de Arquivos: Arquivos Indexados, Diretos e Arquivos Invertidos

Conceitos gerais Terminologia Forma de Representação de Árvores Árvores Binárias

Matemática Discreta 12

Bases de Dados. Parte VIII Organização Física dos Dados

A cláusula order by permite ordenar tuplos exemplo: listar por ordem alfabética os nomes dos clientes com empréstimo na agência de Perryridge

Sistemas de Bases de Dados 1.º teste (com consulta limitada: 2 folhas identificadas) - Duração: 2 horas

i a[i]

Organização de Arquivos

HASHING HASHING 6/10/2008

Tabelas de hash Acabamos de estudar como implementar uma tabela hashing aberta e estudaremos agora como implementar uma tabela hashing fechada ou

Bases de Dados. Álgebra Relacional. Selecção (σ) Seleccionar os registos que satisfazem uma condição exemplo: empréstimos da agência de Perryridge

ESTRUTURA DE DADOS E ALGORITMOS. Árvores Binárias de Busca. Cristina Boeres

Ordenação de tuplos order by

Tabelas Hash. informação, a partir do conhecimento de sua chave. Hashing é uma maneira de organizar dados que:

Métodos de Busca. Parte 2. ICC2 Prof. Thiago A. S. Pardo. Baseado no material do Prof. Rudinei Goularte

Introdução Métodos de Busca Parte 2 - Hashing

Endereçamento Aberto

A inserção da chave 6 da árvore acima resulta na árvore abaixo.

Dicionários. TAD Orientado a conteúdo

Métodos de Busca Parte 2

HASHING Hashing Motivação - Acesso Direto:

UNIVERSIDADE DE SÃO PAULO - ICMC Departamento de Ciências da Computação SCC-203 Algoritmos e Estruturas de Dados 2-2 Sem /2012 Profa.

Hashing externo. Graça Nunes. Fonte: Folk & Zoelick, File Structures

TABELA HASH. Prof. André Backes. Princípio de funcionamento dos métodos de busca

Sistemas de Ficheiros

Hashing: conceitos. Hashing

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

ÁRVORE B. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Estruturas de Dados Tabelas de Espalhamento

Árvores-B (Parte IV) Leandro C. Cintra M.C.F. de Oliveira Fonte: Folk & Zoelick, File Structures

Ordem. Árvores-B (Parte IV) Número mínimo de chaves por página. Definição formal das Propriedades de árvores-b /30 1

Parte 2 Abordagem Comparativa

Árvores B. Árvores B. Estrutura de Dados II Jairo Francisco de Souza

Implemente a função de remoção de uma chave na tabela hashing fechada em questão. void remover(tabela tabela, int n) {

Sumário. Índices Ordenados: Nível Único. Índices Primários. Bancos de Dados Avançados Índices. Índices: Ordenados em nível único Multiníveis

Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

Árvores-B + SCC-203 Algoritmos e Estruturas de Dados II. Graça Nunes

B-tree. B-Trees. Estrutura do nodo da B-tree. Balanceamento. Disposição dos elementos ordenados na B-tree. Exemplo de uma B-tree de ordem 3

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

3 Plano de Execução de Consultas

Sumário. Definição do Plano de Execução

Árvores AVL e Árvores B. Jeane Melo

Tabelas Hash. Prof. Túlio Toffolo BCC202 Aulas 23 e 24 Algoritmos e Estruturas de Dados I

Dicionários: B-Trees

Árvores B. Hashing. Estrutura de Dados II Jairo Francisco de Souza

SCC0601 Introdução à Ciência da Computação II. Prof. Lucas Antiqueira

Hashing. Prof. Josenildo Silva IFMA 2014

CIC 111 Análise e Projeto de Algoritmos II

TABELAS HASH. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Tipos de Dados Dinâmicos

Restrições ao Domínio Integridade Referencial Asserções Triggers Segurança e Autorizações

Árvores-B (Parte Ib) SCC-203 Algoritmos e Estruturas de Dados II. Graça Nunes

de Bases de Dados Exame 1

Administração e Optimização de BDs

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

TAD dicionário. Métodos do TAD dicionário:

Chapter 12: Query Processing. José Alferes Sistemas de Bases de Dados - ISCTEM janeiro de 2017

Árvores. Árvores Binárias. Conceitos gerais Terminologia Forma de Representação de Árvores. Conceitos gerais Operações

Transcrição:

Bases de Dados Remoções em árvores B + Remoção em árvores B + Remoção procurar o registo e removê-lo do ficheiro se o apontador ou contentor ficar vazio, remover a entrada (valor, apontador) da folha se a folha ficou abaixo do mínimo de (n-1)/2 valores se for possível, passar estes valores para o nó da esquerda, remover a folha, e remover a entrada respectiva no nó ascendente se isso não for possível, redistribuir os apontadores pelos nós vizinhos e ajustar o valor da chave no nó ascendente 2 1

Remoção em árvores B + Se ao modificar o nó ascendente, este ficar com um número de apontadores abaixo de n/2 repetir o procedimento recursivamente Estes efeitos "sobem" pela árvore até chegar a um nó que fique com pelo menos n/2 apontadores Se a raiz ficar só com um descendente depois da remoção, então o descendente passa a ser a nova raiz 3 Remoção em árvores B + exemplo 1 4 2

Remoção em árvores B + exemplo 2 5 Remoção em árvores B + exemplo 3 6 3

Remoção em árvores B + exemplo 3 Neste exemplo a sequência da remoção é a seguinte: 1. desaparece uma folha 2. no nó ascendente, desaparece o apontador para essa folha 3. pela propriedade p (C) o nó ascendente fica abaixo do limite de n/2 apontadores, logo é necessário redistribuir 4. só há um nó vizinho à esquerda, redistribuir com esse 5. só são necessários 4 apontadores (porque só há 4 folhas), logo ficam 2 apontadores em cada nó 6. se ficam 2 apontadores, fica apenas 1 valor em cada nó 7. pela propriedade (B) o valor que fica em cada um desses nós é o menor valor da sub-árvore direita 8. depois de mexer no 2º nível é necessário verificar a coerência do nó ascendente (raiz) 9. pela propriedade (B) o valor que fica na raiz é o menor valor da sub-árvore direita, ou seja, Mianus 7 Bases de Dados Índices do tipo hash 4

Hashing estático Um contentor armazena um conjunto de registos tipicamente um contentor ocupa um bloco em disco Ficheiros com organização do tipo hash função de hash determina contentor de um registo recebe como parâmetro o valor da chave de procura e devolve um apontador para o contentor Num mesmo contentor t pode haver registos com diferentes valores de chave de procura os contentores são pesquisados sequencialmente 9 Hashing estático exemplo 10 5

Funções de hash A função de hash ideal devia ser uniforme todos os contentores ficam com o mesmo número de valores de chave de procura devia ser aleatória todos os contentores ficam com o mesmo número de registos Tipicamente, as funções de hash trabalham com a representação binária do valor da chave de procura p.ex. somar todos os caracteres da string e fazer o resto da divisão pelo número de contentores 11 Overflow de contentores Pode ocorrer overflow de contentores devido a número insuficiente de contentores desequilíbrio na distribuição dos registos múltiplos registos com a mesma chave de procura função de hash não uniforme A probabilidade de overflow de um contentor não pode ser eliminada é normalmente resolvida com contentores extra (overflow buckets) 12 6

Overflow de contentores Encadeamento de contentores 13 Índices do tipo hash Pode ser usado hashing para organização de ficheiros e para criação de índices os índices do tipo hash são normalmente usados como índices secundários 14 7

Índices do tipo hash exemplo 15 Problemas na utilização de hashing estático A função de hash mapeia valores da chave de procura para um número fixo de contentores se a BD crescer, desempenho sofre com excesso de contentores extra mesmo que o tamanho possa ser previsto, desperdício de espaço inicialmente se a BD diminuir, espaço desperdiçado reorganização periódica é dispendiosa Solução: fazer variar o número de contentores dinamicamente 16 8

Hashing dinâmico Permite modificar a função de hash dinamicamente Hashing extensível a função de hash gera valores numa gama alargada tipicamente inteiros com 32 bits a ideia é usar em cada momento apenas um prefixo para endereçar um conjunto de contentores seja i o comprimento do prefixo, com 0 i 32 número máximo de contentores endereçáveis: 2 i o valor de i varia conforme o tamanho da BD 17 Hashing dinâmico exemplo comprimento do prefixo ( i ) comprimento do prefixo para cada contentor ( i j i ) 18 9

Hashing dinâmico procura O prefixo com i bits permite localizar a entrada correcta no índice mas o mesmo contentor pode ser usado em várias entradas significa que o prefixo do contentor é i Para encontrar o contentor com chave K j 1. calcular funcao_hash(k j ) = X 2. usar os primeiros i bits de X para localizar a entrada no índice 3. seguir o apontador respectivo para o contentor 19 Hashing dinâmico inserção Para inserir um registo com chave K j encontrar o contentor para essa chave se houver espaço no contentor, inserir o registo senão, separar o contentor em 2 e redistribuir os registos eventualmente será necessário aumentar i 20 10

Hashing dinâmico inserção (caso i j = i ) Como separar em 2 um contentor para a chave K j se i j = i (só há um apontador para o contentor j ) incrementar o valor de i, o que duplica o tamanho do índice substituir cada entrada no índice por 2 entradas que apontam para o mesmo contentor alocar novo contentor z e fazer i j = i z = i colocar o segundo apontador de j a apontar para z remover e re-inserir cada registo em j (agora com novo i j ) alguns registos vão parar a j, outros a z inserir o novo registo com chave K j 21 Hashing dinâmico inserção (caso i j < i ) Como separar em 2 um contentor para a chave K j se i j < i (mais do que um apontador para j ) alocar novo contentor z e fazer i j = i z = i j + 1 a segunda metade das entradas que apontam para j passam a apontar para z remover e re-inserir cada registo em j (agora com novo i j ) alguns registos vão parar a j, outros a z inserir o novo registo com chave K j se o contentor t ainda estiver cheio, repetir recursivamente um dos casos i j = i ou i j < i, como apropriado se o contentor permanecer cheio, usar um contentor extra (i atingiu o máximo e há overflow) 22 11

Hashing dinâmico inserção 23 Hashing dinâmico inserção 24 12

Hashing dinâmico inserção 25 Hashing dinâmico inserção 26 13

Hashing dinâmico inserção 27 Hashing dinâmico remoção Para apagar um valor de chave localizar o registo dentro do seu contentor e removê-lo se o contentor ficar vazio, removê-lo e actualizar o índice é possível juntar contentores que tenham o mesmo número i j e o mesmo prefixo nos primeiros i j -1 bits é possível diminuir o tamanho do índice operação dispendiosa, só feita quando o número de contentores é muito menor que o número de entradas no índice 28 14

Bases de Dados Índices e SQL Definição de índices em SQL Criação de um índice create index index_name on relation_name ( attribute_list ) p.ex. create index branch_index on branch(branch_name) é possível escolher o tipo de índice com using type Usa-se create unique index para dizer que a chave de procura é chave candidata da relação falha se os atributos dados não forem chave primária Para eliminar um índice drop index index_name on relation_name 30 15

Índices com múltiplas chaves de procura Certas perguntas exigem múltiplos índices select account_number from account where branch_name = Perryridge and balance = 1000 estratégias possíveis usar índice para branch_ name e testar valor de balance usar índice para balance e testar valor de branch_name usar índice para branch_name e outro para balance e intersectar os resultados 31 Chaves de procura compostas Chaves de procura compostas chaves de procura com mais de um atributo p.ex. (branch_name, balance) Ordem lexicográfica (a 1, a 2 ) < (b 1, b 2 ) se (a 1 < b 1 ) ou (a 1 = b 1 )e(a 2 <b) 2 32 16

Chaves de procura compostas where branch_name = "Perryridge" and balance = 1000 O mesmo índice pode ser usado para obter os registos que satisfazem as duas condições mais eficiente que usar índices separados também é eficiente noutros casos where branch_name = "Perryridge" and balance < 1000 não é eficiente em where branch_name < "Perryridge" and balance = 1000 obtém registos que satisfazem a primeira mas não a segunda condição 33 17