BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Documentos relacionados
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

11/8/2010. Tópicos. Organização e Indexação de Dados em Memória Secundária

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

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

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

Modelo Relacional. Josino Rodrigues

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

Acesso Sequencial Indexado

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

Tipos de Índices. Profa. Dra. Cristina Dutra de Aguiar Ciferri

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

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

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

BANCO DE DADOS Índices em BD Árvores B+

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

Métodos de Busca Parte 1

Índices. SCE-203 Algoritmos e Estruturas de Dados II

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

Hashing convencional...

Edital de Seleção 023/2018 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

MATA60 BANCO DE DADOS Aula 10- Indexação. Prof. Daniela Barreiro Claro

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

Índices. SCC-503 Algoritmos e Estruturas de Dados II. Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira

A Invenção da B-Tree. Árvores B Parte I. Problema. Problema. Introdução. Leandro C. Cintra Maria Cristina F. de Oliveira. Solução?

Árvore-B. Árvore B. Características Gerais. Sistemas de Banco de Dados. Características Gerais. Revisão

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

Árvores-B (Parte I) SCC-503 Algoritmos e Estruturas de Dados II. Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira

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

Árvores B. Prof. Leandro C. Fernandes. Estruturas de Dados. Adaptado de: Leandro C. Cintra e M.C.F. de Oliveira

Índice. Índices. Índice simples. Em geral, um índice fornece mecanismos para localizar informações

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

GBC053 Gerenciamento de Banco de Dados Índices baseados em Hash

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

Estruturas de Dados I

Árvores B Partes I e II

Bit (Binary Digit) é a menor unidade de armazenamento de informação dentro do computador; Byte é a união de 8 bits capaz de representar 256

Estrutura de indexação de arquivos

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

Lista de Exercícios. Av. Trabalhador São-carlense, 400. centro. São Carlos - SP cep Brasil.

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

Introdução Métodos de Busca Parte 1

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

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

Cap. 5 Indexação Baseada em Hashing

A Invenção da B-Tree. Árvores B Parte I. Problema. Problema. Árvores Binárias de Busca. Árvores Binárias de Busca. Introdução

Sistemas de Arquivos. (Aula 23)

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

Métodos de Busca Parte 2

Profa. Dra. Cristina Dutra de Aguiar Ciferri. Estruturas de Indexação de Dados

Aula 16. Tópicos Especiais II Banco de Dados. Prof. Dr. Dilermando Piva Jr.

Capítulo 11: Implementação de Sistemas de Arquivos. Operating System Concepts 8th Edition

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

Implementação de Sistemas de Arquivos. Na Aula Anterior... Esquema do Sistema de Arquivos. Nesta Aula 31/10/2016. Estrutura de Baixo Nível de um Disco

INE5408 Estruturas de Dados. Gerência de Arquivos

Á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

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

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ACESSO, ATRIBUTOS E OPERAÇÕES COM ARQUIVOS PROFESSOR CARLOS MUNIZ

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

Banco de Dados. Métodos de Ordenação de Dados. Prof. Walteno Martins Parreira Jr

Árvores Binárias Balanceadas

ANÁLISE E PROJETO DE BANCO DE DADOS

Organização de Arquivos

ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

ACH2024. Aula 16 Árvores B Parte 1. Prof Helton Hideraldo Bíscaro

Árvore-B* Profa. Dra. Cristina Dutra de Aguiar Ciferri

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

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

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

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

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca

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

Capítulo 11 Sistemas de Arquivos

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

Indexação de Arquivos III:

Construção de árvores-b. Árvores-B (Parte II) Características Gerais. Características Gerais. Leandro C. Cintra M.C.F. de Oliveira

GBC053 Gerenciamento de Banco de Dados Índices baseados em Árvores

Capítulo 8: Abstrações de dados

INE5408 Estruturas de Dados

GBC053 Gerenciamento de Banco de Dados. Plano de Curso e Introdução. Ilmério Reis da Silva UFU/FACOM/BCC

Memória. Memória Cache

HASHING HASHING 6/10/2008

Implementação de Diretórios (1)

ALGORITMOS DE ORDENAÇÃO

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

3 Plano de Execução de Consultas

Árvores B. Prof. Flávio Humberto Cabral Nunes

Hashing: conceitos. Hashing

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

Árvores Genéricas de Busca

Aplicações de listas e outras estruturas

Algoritmos e estruturas espaciais

Edital de Seleção 032/2016 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Etapa III - Implementação de Operadores da Álgebra Relacional; Etapa IV - Comparação experimental de varredura sequencial x acesso aleatório

Aplicações de listas Outras estruturas

Árvores AVL e Árvores B. Jeane Melo

CHAPTER ONE. Uma árvore B de ordem "m" (máximo de filhos para cada nó) é uma árvore que atende as seguintes propriedades:

heapsort (int *x, int n) { int i, e, s, f, aux; /*fase de pré-processamento - cria heap inicial*/ for (i=1; i<n; i++) { e = x[i]; s = i; f = (s-1)/2;

Transcrição:

- Aula 2 - ÍNDICE 1. INTRODUÇÃO Quando criamos a estrutura de um banco de dados temos que usar artifícios que melhorem a performance na recuperação dos dados que lá serão armazenados. Dentre várias técnicas existentes para melhorar a esta performance existe a criação de índices. Conceituação/Analogia O Índice é um arquivo auxiliar associado a uma Tabela. Sua função é acelerar o tempo de acesso às linhas de uma Tabela, cria ponteiros para os dados armazenados em colunas especificas. O Banco de dados usa o Índice de maneira semelhante ao índice remissivo de um livro, verifica um determinado assunto no Índice e depois localiza a sua posição em uma determinada página. 2. CRIAÇÃO DE ÍNDICE O índice serve para prover um acesso rápido a linhas das tabelas. Por meio dele é possível unir uma ou mais colunas por onde o acesso é mais freqüente. Exemplo: Temos uma tabela de pessoas, normalmente queremos fazer buscas em ordem alfabética. O nome, não é uma boa chave primária para a tabela por ser alfanumérica, o que deixa as pesquisas mais lentas e também pela repetição de nomes. Dessa forma, cria-se um índice para o nome da pessoa. Assim, garante-se um acesso mais rápido aos nomes, visto que os dados buscados estariam fora de seqüência. Os valores indexados são armazenados em um objeto do banco de dados em ordem, o que permite ao SGBD pesquisar primeiro no índice, para depois buscar na tabela. É importante ressaltar que alguns bancos de dados necessitam de índices constantemente atualizados, pois eventualmente estes perdem a referência ao dado. 2.1. Quando criar um índice O índice quando criado com critérios bem definidos é traz uma enorme vantagem, mas por outro lado pode trazer enormes problemas, visto que todo trabalho de um SGBD envolve um custo. Não é conveniente sair criando índices para cada um dos campos da tabela sem que haja uma razão para isto. Quando um índice é criado uma das tarefas do SGBD é mantê-lo atualizado a cada nova inclusão, exclusão e alteração nos dados. Além do mais, o índice também ocupa espaço no banco de dados, pois é criado um novo objeto que manterá informações indexadas e armazenará a referência à linha física da tabela. 1

Se são criados muitos índices, pode-se prejudicar o desempenho do banco de dados Se são criados poucos índices, pode-se prejudicar o desempenho da aplicação. Quando criar índices: a) Chaves Primárias: se o banco de dados não criá-las automaticamente, é necessário fazê-lo manualmente. b) Chave Estrangeira: é sempre recomendável criar, principalmente quando a tabela que faz referência é muito grande. c) Colunas utilizadas freqüentemente na cláusula WHERE ou JOIN do comando SELECT. Quando não criar índices: a) Colunas com muitos valores iguais. b) Colunas com muito conteúdo NULO (não inicializados). c) Tabelas muito pequenas. Sempre que uma consulta estiver muito lenta, verifique a possibilidade de criar índice para facilitar a busca. Para criar um índice, utilize a seguinte sintaxe: Sintaxe: CREATE INDEX nome_index ON nome_tabela (coluna [ASC DESC]) Exemplo: CREATE INDEX idx_dep_nome ON departamento(dep_nome) CREATE INDEX idx_dep_varios ON departamento(dep_nome, dep_ramal) Para excluir um índice, utilize a seguinte sintaxe: Sintaxe: DROP INDEX nome_index Exemplo: DROP INDEX idx_dep_varios Não é possível modificar índices. Para alterar um índice, elimine-o e, depois, recrie-o. OBSERVAÇÃO Ao eliminar uma tabela, os índices e as constraints são eliminados automaticamente. 2

3. ACESSO A DADOS EM UM SGBD Para compreender melhor a utilização de índices é importante conhecer a estrutura de acesso a dados em um SGBD. Neste contexto, observamos que os bancos de dados são armazenados fisicamente como arquivos de registros, que são geralmente armazenados em discos magnéticos. Assim, os meios de armazenamento formam uma hierarquia de armazenamento que inclui duas categorias principais: - Armazenamento Principal: Operados diretamente pela CPU, como a Memória Principal e Memória Cache. - Armazenamento Secundário: Inclui os discos magnéticos, óticos e fitas. Geralmente possuem uma capacidade maior, porém são mais lentos e não podem ser acessados diretamente pela CPU. 3

A maioria dos bancos de dados está armazenada sob maneira permanente (ou persistente) sob a forma de armazenamento secundário. Geralmente, o SGBD possui diversas opções disponíveis para organizar os dados, e o processo relativo ao projeto de banco de dados físico envolve escolher entre as opções, as técnicas de organização de dados. Os dados armazenados em disco são organizados na forma de arquivos de registros. Cada qual é uma coleção de valores de dados que podem ser interpretados como fatos sobre entidades, seus atributos e seus relacionamentos. Para acessar uma informação no banco de dados considera-se o tipo de requisição e a estrutura utilizada para organização e acesso às chamadas páginas de dados. 3.1. Organização dos dados em Memória Secundária - Arquivos Heap ou pile (aglomerado): Melhor opção quando o acesso típico é uma busca seqüencial, sem ordem, recuperando todos os registros. Os registros são posicionados no arquivo pela ordem na qual foram incluídos. São utilizados pelos índices secundários e utilizados para coletar e armazenar registros de dados para utilização futura. Exemplo: um simples arquivo de registros de dados. - Arquivos Ordenados: Melhor opção se os registros devem ser recuperados em alguma ordem, ou quando somente uma porção contígua dos registros ordenados é necessária. Exemplo: Arquivo de dados, possivelmente ordenado, além de vários índices. - Arquivos Hashed: Melhor para seleções de igualdade. Uma função hash é aplicada ao valor do campo de um registro e retorna o endereço do bloco do disco no qual o registro está armazenado. Para a maioria dos registros, precisamos somente do acesso a um único bloco para recuperar aquele registro. Não é adequado para acesso seqüencial ordenado. Existem outras maneiras ou possibilidades para organizar arquivos, como árvores-b e arquivos de registro mistos, que implementam relacionamentos entre registros de diferentes tipos fisicamente como parte da estrutura de armazenamento. 4. INDEXAÇÃO Como visto, os índices são estrutura de dados que recebem como entrada uma propriedade de registro (por exemplo, um valor de um ou mais campos) e os encontra com essa propriedade rapidamente. Um índice permite localizar um registro sem ter que examinar mais que uma pequena fração dos registros possíveis. Assim sendo, podemos concluir que os campos cujos valores o índice se baseia formam a chave de pesquisa; Recapitulando Índices são estruturas de dados auxiliares cujo único propósito é tornar mais rápido o acesso a registros baseado em certos campos, chamados campos de indexação. 4

4.1. Tipos de Índices - Índices primários - baseado na chave de ordenação; - Índices de agrupamentos (clustering) - baseado no campo de ordenação não-chave de um arquivo; - Índices secundários - baseado em qualquer campo não ordenado de um arquivo; - Índices multiníveis; - Árvores B e B+; - Tabelas Hash; Um dos mais antigos esquemas de índice utilizados em sistema de banco de dados é chamado de arquivo indexado seqüencialmente, que são projetados para aplicações que requerem tanto o processamento seqüencial de um arquivo inteiro quanto o acesso aleatório a registros individuais. Estes índices podem ser: - Densos: É quando o número de entradas do índice é igual ao número de registros no arquivo de dados. Cada registro no arquivo de índice contém o endereço de um registro no arquivo de dados. Ponteiros Ponteiros Índice denso sobre um arquivo de dados seqüenciais - Esparços: Usa-se menos espaço de armazenamento que o índice denso ao custo de um tempo um pouco maior para localizar um registro dada a sua chave. É quando o número de entradas do índice é igual ao número de blocos do arquivo de dados. Apenas alguns registros de dados são representados no arquivo de índices. Em geral, aponta para o 1º registro de bloco. Índice esparso sobre um arquivo de dados seqüenciais 5

4.1.1. Índice Primário É o índice associado a uma chave primária. Nada mais é do que um arquivo ordenado, cujos registros são de tamanho fixo com dois tampos. O primeiro, do mesmo tipo do campo chave de ordenação (chave primária) e o segundo é um ponteiro para um bloco do disco ou arquivo de dados. Utiliza índice esparço. 4.1.2. Índice de Agrupamento (Clustering) Se os registros de um arquivo estiverem ordenados fisicamente por um campo que não seja chave, ou seja, que não possui um valor distinto, esse campo é chamado de campo clustering. Semelhante ao índice primário possui dois campos de ordenação, no entanto o primeiro 6

campo é do mesmo tipo do campo clustering e o segundo é um ponteiro para o bloco. Neste sentido sempre há a reserva de um bloco inteiro para cada valor de campo clustering, melhorando operações de inclusão e exclusão. Em simples palavras é um índice associado a um campo não chave. Utiliza índice esparço. 7

4.1.3. Índice Secundário No índice secundário o campo de indexação é um campo não ordenado do arquivo de dados. Pode haver muitos índices secundários para um mesmo arquivo. Dois casos: - O campo de indexação é um campo chave (às vezes chamado de chave secundária). - O campo de indexação não é chave. É possível que mais de um registro tenha o valor da chave. Isso ocorre, por exemplo, quando a chave de pesquisa não é a chave primária; Um índice secundário é um índice denso, normalmente com duplicatas. O índice consiste em pares de chaves-ponteiro. Neste caso, sempre que são permitidas chaves de pesquisas duplicadas. Outra possibilidade para índices secundários é a entrada de índice para um bloco de dados onde a menor chave de pesquisa é nova, isto é, a chave não apareceu em um bloco anterior; Se não há chave de pesquisa nova no bloco, então sua entrada de índice contém a única chave de pesquisa encontrada nesse bloco; Pode-se encontrar os registros de uma chave de pesquisa K examinando-se o índice para a primeira entrada cuja chave é: - Igual a K - Menor que K, mas a próxima chave é maior que K Segue-se o ponteiro da entrada. Se for encontrado pelo menos um registro com a chave de pesquisa K, então a busca continua em blocos adicionais, até encontrar todos os registros com a chave de pesquisa K. 8

Usa o índice esparso indicando a nova chave de pesquisa mais baixa em cada bloco. Organizando as idéias: Campos ordenados Campos não ordenados Campo chave Índice primário Índice Secundário (chave) Campo não chave Índice de agrupamento Índice Secundário (não chave) Tipo de Índice Número de Entradas Denso ou Esparço Primário Nº de blocos no arq. de dados Esparço Agrupamento Nº de valores distintos do campo de Esparço indexação Secundário (chave) Nº de reg. no arq. de dados Denso Secundário (não chave) Nº de reg. no arq. de dados Denso Nº de valores distintos de indexação Esparço 4.1.4. Índices Multiníveis Uma pesquisa binária é aplicada ao índice para localizar ponteiros para um bloco do disco ou para um registro no arquivo que possui um valor de campo índice específico. Se o arquivo de índices se torna muito grande para ser armazenado em bloco de disco, é interessante indexá-lo em mais de um nível.a vantagem é que um índice pequeno pode ser mantido em memória e o tempo de busca é mais baixo; por outro lado, muitos níveis de índices podem aumentar a complexidade do sistema, sendo mais recomendado a utilização de outra estrutura como a que veremos mais a frente: árvore-b. 9

Um índice multinível é um índice de índice. - Primeiro nível: arquivo ordenado pela chave de indexação, valores distintos, entradas de tamanho fixo. - Demais níveis: índice primário sobre o índice do nível anterior e assim sucessivamente até que no último nível o índice ocupe apenas um bloco. - Número de acessos a bloco: um a cada nível de índice, mais um ao bloco do arquivo de dados. 10

A figura acima exemplifica um índice primário de dois níveis que se parece com a organização ISAM (Indexed Sequential Acess Method - Método de Acesso Seqüencial Indexado). O problema dos índices multiníveis são arquivos fisicamente ordenados, portanto, ineficientes na inserção e remoção. Para solucionar este problema podem-se adotar as seguintes soluções: - Deixar algum espaço em cada um dos blocos para inserção de novas entradas. - Estruturas de dados: Árvores B e suas variações. 4.1.4.1. GERENCIAMENTO DE ÍNDICES NAS MODIFICAÇÕES DE DADOS Os arquivos seqüenciais apresentam problemas com o tempo, visto que um bloco não é mais suficiente para armazenar o conteúdo que era antes armazenado. Para contornar esse problema é possível adotar as seguintes soluções: - Criar blocos de estouro (overflow). Blocos de estouro não têm entradas em um índice esparso; - Inserir novos blocos na ordem seqüencial; - Se não houver lugar para inserir informação em um bloco, alguma informação poderá ser transferida para outro bloco. De igual forma, blocos vazios poderão ser combinados. 4.1.5. Árvore B Árvores B e B + são casos especiais de estruturas de dados bastantes conhecidas do tipo árvore. Uma árvore é formada por nós, e cada nó na árvore, exceto um nó especial denominado raiz, possui um nó pai e diversos nós filhos. Um nó que não possui filhos é chamado de nó folha. Um modo de implementar uma árvore é possuir tantos ponteiros em cada nó quantos forem os nós filhos daquele nó. E para percorrer todos os nós, da árvore e da sub-árvore é necessário fazer uso da recursividade. 11

4.1.5.1. ÁRVORE DE PESQUISA Uma árvore de pesquisa é um tipo especial de árvore que se utilizada para guiar a pesquisa por um registro, dado o valor de um dos campos do registro. Árvore de busca projetada com dois objetivos: - Manter a árvore balanceada; e - Evitar o desperdício de espaço dentro de um nó, à custa de maior complexidade nos algoritmos de inserção e remoção. Regras: - Os nós da sub-árvore esquerda contém valores menores que a raiz; - Os nós da sub-árvore direita contém valores maiores ou iguais a raiz; - As sub-árvores são árvores binárias de pesquisa. 4.1.5.2. ÁRVORE B Em computação, Árvore B ou B-Tree é uma estrutura de dados árvores que são muito utilizadas em banco de dados e sistema de arquivos. Para inserir ou remover variáveis de um nó, o nó não poderá ultrapassar sua ordem e nem ser menor que sua ordem dividida por dois. Árvores B não precisam ser rebalanceadas como são freqüentemente as árvores de busca binária com Árvore AVL. Árvores B têm vantagens substanciais em relação a outros tipos de implementações quanto ao tempo de acesso e pesquisa aos nós. Uma árvore B de ordem "m" (máximo de filhos para cada nó) é uma árvore que atende as seguintes propriedades: - Cada nó tem no máximo "m" filhos - Cada nó (exceto a raiz e as folhas) tem pelo menos "m/2" filhos - A raiz tem pelo menos dois filhos se a mesma não for uma folha - Todas as folhas aparecem no mesmo nível e não carregam informação - Um nó não-folha com "k" filhos deve ter k-1 chaves As vantagens da árvore B são: - Melhor desempenho por ter um número menor de nós do que uma árvore binária. Por exemplo: Menos nós significa menos altura que resulta em menos acessos ao disco. 12

- Por garantir poucos ponteiros entre os nós, há uma economia de espaço. - Maior rapidez em buscas pela utilização de chaves primárias. - Sua estrutura é dinâmica, ajustando automaticamente o balanceamento da árvore, a cada inclusão/exclusão. - Permite um tempo de acesso de dados menor, em uma busca aleatória, por causa de suas ramificações. Algoritmos Inserção 1. Primeiro pesquise a chave, para ter a certeza de que esta não existe na árvore. 2. Busque a posição onde esta será inserida. Teste para ver se o nó está cheio. 3. Se nó estiver vazio, insira o valor dentro dele, senão execute uma subdivisão do nó da seguinte forma: 3.1. Verifique se o nó-pai está vazio, se sim execute 3.1.1. Passe o elemento do meio do nó para seu pai. 3.1.2. Divida o nó em dois nós iguais. 3.2. Se o nó pai estiver cheio, repita as duas linhas acima recursivamente. (Caso todos os nós-pai estiverem cheios, inclusive a raiz, deve ser criada uma nova raiz aumentando assim a altura da árvore. 3.3. Somente após satisfazer todas divisões necessárias, insira nova chave. Exclusão 1. Primeiro pesquise a chave para ter a certeza de que esta existe na árvore. 2. Se existir, verifique se está em folha, e faça a exclusão. 3. Se existir e não estiver em folha, substitua esta chave pela menor chave do filho a direita. 3.1. Se o número de chave no nó, for maior do que (Ordem/2-1), então termine a rotina. 3.2. Senão redistribua as chaves entre os nós vizinhos. Busca 1. Indique a chave que será procurada. 2. Pesquise desde a raiz até encontrá-la, e então retorne o nó e a posição desta. 3. Se a chave não for encontrada, continue o laço até encontrar um nil das folhas. Exemplo: 13

4.1.6. Hashing São particularmente adequados para pesquisas por igualdade. A idéia principal é usar uma função de hashing. Esta função mapeia um valor da chave de pesquisa (atributo de uma tabela) em um registro ou balde (bucket) de registros. A balde é uma unidade de armazenamento que contém um ou mais registros (um balde é tipicamente um bloco do disco). Numa organização de ficheiro em hashing, obtemos o balde de um registro a partir do valor da sua chave de pesquisa. Mais concretamente, o balde é obtido através do cálculo da função de hash para aquela chave de pesquisa. 14

A função de hash h é uma função do conjunto de todos os valores da chave K para o conjunto dos endereços de todos os baldes B. A função de hash é usada para localizar registros para as operações de acesso, inserção, bem como eliminação. Observe os exemplos de busca, inserção e exclusão. A desvantagem do hashing estático pode conduzir a longas cadeias de transbordo. Busca Inserção Exclusão Longas cadeias de transbordo podem desenvolver-se e degradar o desempenho. 4.1.6.1. HASHING ESTÁTICO O hashing estático escolhe a função hash com base no tamanho do arquivo atual, ou com base no tamanho antecipado do arquivo com base em um ponto no futuro. Esta técnica reorganiza periodicamente a estrutura de hash. 4.1.6.2. HASHING DINÂMICO Diferente do hashing estático a função hash é modificada dinamicamente para acomodar o crescimento ou encolhimento do banco de dados, usando o hashing extensível. 15

4.1.6.3. HASHING EXTENSÍVEL Divide e une os buckets enquanto o banco de dados cresce e encurta. A Eficiência do espaço é mantida e a função hash gera valores por intervalos relativamente grandes. Outra característica é que os buckets são criados por demanda. 5. REFERÊNCIAS ELMASRI, Ramez; Sistema de Banco de Dados - Fundamentos e Aplicações - 4ª Edição, Pearson Education, 2005 OLIVEIRA, Celso Henrique Poderoso; SQL Curso Prático; Novatec, 2002. 16