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

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. Remoções em árvores B + Remoção em árvores B +

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

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

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

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

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

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

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

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

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

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

Organização de Arquivos

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

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

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

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

3 Plano de Execução de Consultas

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

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

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

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

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

Algoritmos de pesquisa. Tabelas de dispersão/hash

Árvores B. Árvore B (ou melhor B+)

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

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

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

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

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

TABELAS DE DISPERSÃO/HASH

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

Há vários algoritmos para processar junções nested-loop join block nested-loop join indexed nested-loop join merge-join hash-join

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

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

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

Árvores B Partes I e II

Matrizes esparsas: definição

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

Ordenação de tuplos order by

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

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

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

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

de Bases de Dados Exame 1

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

ANÁLISE E PROJETO DE BANCO DE DADOS

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

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

PostgreSQL Performance

Aplicações de listas Outras estruturas

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

Unidade 5 Armazenamento e Indexação

Cap. 5 Indexação Baseada em Hashing

Tabelas de Hash MBB. Novembro de Algoritmos e Complexidade LEI-LCC

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

Bases de Dados. Modelo Entidade-Associação. Exemplo do banco. IST DEI Bases de Dados

Árvores B. Prof. Flávio Humberto Cabral 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

Busca em Regiões Ortogonais

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

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

INSTITUTO SUPERIOR TÉCNICO Administração e Optimização de Bases de Dados

Gerenciamento de Memória

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

Listas e matrizes esparsas Orthogonal List Representation (Listas Cruzadas) 21/10/2010

U.C Sistemas de Gestão de Bases de Dados Resolução e Critérios de Correção INSTRUÇÕES

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

Sistemas de Ficheiros

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

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

Árvores B. Definição: Seja t a ordem da árvore B. Uma árvore B de ordem t é uma árvore ordenada que é vazia, ou que satisfaz as seguintes condições:

Dicionários: B-Trees

Estruturas de Informação Árvores B ÁRVORES B

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

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

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

de Bases de Dados Exame 2

Arquivos invertidos 39

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

Métodos de Busca Parte 2

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

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

Acesso Sequencial Indexado

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

Especialização / generalização. Especialização top-down a partir da super-classe identificam-se as subclasses

Bases de Dados 2007/2008 Exame

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

Pesquisa binária em árvores-b + Índices em SQL

Bases de Dados 2013/2014 Armazenamento e Índices. Helena Galhardas. Sumário

SQL (Tópicos) Structured Query Language

!" # Modelos de dados. 1ª geração. 2ª geração. 3ª geração. Modelo Hierárquico Modelo Rede. Modelo Relacional

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

Transcrição:

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

Discos 7200rpm = 120 rot/s 1 5 platters Ø 8.9 cm 50000 ~ 100000 tracks per platter sector = 512 B ~ 500 sectors per (inner) track ~ 1000 sectors per (outer) track 3 Acesso aos dados Os dados são transferidos entre o disco e a memória em blocos um bloco abrange vários sectores contíguos É objectivo de qualquer SGBD minimizar o número de transferências de blocos entre disco e memória 4 2

Índices Índices permitem acelerar o acesso aos dados p.ex. índice remissivo de um livro assunto é a chave de procura (search key) nº da página é o apontador Um índice contém registos na forma chave de procura apontador(es) para registo(s) em geral é muito mais pequeno que a tabela indexada 5 Índices Consulta sem índice pesquisa sequencial pode ser muito lenta para tabelas grandes 6 3

Índices Consulta com índice pesquisa no índice é muito rápida, mesmo para tabelas grandes 7 Índices ordenados Numa tabela pode haver 2 tipos de índices índice primário (clustered) indexa a coluna pela qual os dados estão ordenados normalmente é a chave primária, mas pode não ser índice secundário (non-clustered) indexa uma coluna que não aquela pela qual os dados estão ordenados este índice especifica uma ordem diferente da tabela se os dados não estiverem ordenados pela chave primária, então o índice para a chave primária é secundário 8 4

Índices primários (clustered) índice índice 9 Índices secundários (non-clustered) índice índice índice índice 10 5

Índices densos Um índice é denso se refere todos os valores possíveis da chave de procura 11 Índices esparsos Um índice é esparso se contém entradas para apenas alguns dos valores da chave de procura 12 6

Índices esparsos Índices esparsos só podem ser usados quando os registos estão ordenados por essa chave (índice primário) para localizar o registo com valor K procurar a entrada no índice com o maior valor < K pesquisar a tabela sequencialmente a partir daí 13 Índices esparsos Vantagens/desvantagens dos índices esparsos menos espaço e manobras de inserção/remoção mais lento a localizar os registos pretendidos na tabela melhor compromisso é um índice esparso com uma entrada para cada bloco que a tabela ocupa em disco o valor indexado correspondente ao menor valor da chave de procura nesse bloco 14 7

Índices multi-nível Se um índice primário não couber todo na memória, o acesso complica-se para reduzir o número de acessos ao disco, trata-se o índice como uma tabela e cria-se um índice esparso para o índice primário se este for demasiado grande para caber em memória, cria-se ainda outro nível Os índices têm de ser mantidos actualizados em todos os níveis 15 Índices multi-nível 16 8

Actualização de índices Ter um índice implica custos de manutenção Remoção ao remover o único registo com um dado valor, remove-se a respectiva entrada do índice Inserção pesquisar o valor do registo no índice índices densos se o valor não estiver indexado, inserir nova entrada no índice índices esparsos só é necessário criar uma nova entrada se a inserção der origem a um novo bloco 17 Índices secundários Um índice secundário pode ser necessário para fazer pesquisas por outro critério/coluna exemplos: com a tabela account ordenada por account_number encontrar todas as contas de uma dada agência encontrar todas as contas de uma agência e com saldo numa dada gama de valores é possível ter um índice secundário para cada uma destas chaves de procura o índice aponta para um contentor de apontadores para registos 18 9

Índices secundários Índices secundários têm de ser densos (porquê?) Também têm que ser mantidos actualizados Menos eficiente que um índice primário cada registo pode implicar o acesso a um bloco diferente 19 Bases de Dados Índices em SQL 10

Definição de índices em SQL Criação de um índice create index index_name on table_name(column_list) exemplo create index branch_index on branch(branch_name) Para eliminar o índice: drop index branch_index 21 Í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 22 11

Chaves de procura compostas Chaves de procura compostas chaves de procura com mais de um atributo p.ex. create index branch_balance_index on account (branch_name, balance) São pesquisados por ordem lexicográfica (branch 1, balance 1 ) < (branch 2, balance 2 ) se (branch 1 < branch 2 ) ou (branch 1 = branch 2 ) e (balance 1 < balance 2 ) 23 Chaves de procura compostas where branch_name = "Perryridge" and balance = 1000 Um índice composto pode ser usado para obter os registos que satisfazem as duas condições mais eficiente do que usar índices separados também é eficiente noutros casos, p.ex. 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 24 12

Índices Como é que os índices são implementados? Há dois tipos básicos de índices índices ordenados (p.ex. árvore B + ) valores da chave de procura armazenados por ordem índices do tipo hash valores da chave de procura distribuídos uniformemente por vários "contentores" (buckets) de acordo com uma função de hash 25 Bases de Dados Índices em árvore B + 13

Árvore B + exemplo 1 árvore B + com n=3 27 Árvore B + exemplo 2 árvore B + com n=5 28 14

Árvore B + nós Cada nó da árvore contém K i são valores ordenados K 1 < K 2 < K 3 <... < K n 1 P i são apontadores apontadores para outros nós (se o nó não é folha) ou apontadores para registos (se é folha) 29 Árvore B + nós folha Se o nó é folha P i aponta para um registo com valor K i ou P i aponta para um contentor de registos com K i necessário se o valor aparece em vários registos P n aponta para a folha seguinte (mesmo nível) 30 15

Árvore B + nós não-folha Se o nó não é folha forma um índice esparso multi-nível para as folhas todas as chaves na sub-árvore de P i (esquerda) são menores que K i em geral, todas as chaves na sub-árvore de P i são K i 1 e < K i as chaves K n 1 estão na sub-árvore apontada por P n 31 Árvore B + propriedades Todos os caminhos da raiz a qualquer folha percorrem o mesmo número de nós Cada nó tem entre n/2 e n descendentes excepto a raiz, que pode ter menos Cada folha tem n apontadores e (n-1) valores apenas alguns podem estar preenchidos regra geral, tem de ter no mínimo (n-1)/2 valores Casos especiais: se a raiz não é uma folha, tem pelo menos 2 descendentes se a raiz é folha (e a árvore só tem esse nó) pode ter entre 0 e (n 1) valores 32 16

Árvore B + vantagens Com ligações feitas por apontadores, não é necessário ter os blocos fisicamente juntos no disco Partindo da raiz, é possível chegar rapidamente a qualquer folha, mesmo que o número de folhas seja muito grande Se houver inserções ou remoções de registos na tabela, o índice pode ser actualizado apenas com pequenas alterações locais 33 Procura em árvores B + Encontrar todos os registos com chave de procura k 1. começa pela raiz a) procurar na raiz o menor valor K i tal que K i > k b) se existir, seguir P i (esquerda) para o nó descendente c) senão, seguir P n (último da direita) 2. repetir o passo anterior até chegar a uma folha 3. assim que chegamos a uma folha a) procurar na folha o valor K i tal que K i = k b) se existir, seguir P i para o registo c) senão, é porque o registo não existe 34 17

Procura em árvores B + Se houver K valores da chave de procura na árvore, nenhum caminho é mais comprido do que log n/2 (K) Geralmente um nó é do tamanho de um bloco, tipicamente 4 KB se cada entrada no índice (valor, apontador) ocupa 40 bytes, escolhe-se n 100 com 1 milhão de valores de chave e n=100 acedese a apenas log 50 (1 000 000) = 4 nós se a árvore fosse binária seriam precisos 20 nós cada nó exige um acesso ao disco (~20ms) 35 Modificações em árvores B + As modificações em árvores B+ seguem os seguintes passos: 1. pesquisar o valor pretendido na árvore, desde a raíz até chegar à folha respectiva (top-down) 2. fazer as alterações pretendidas ao nível das folhas 3. repercutir os efeitos de forma bottom-up, isto é, depois de alterar nós a um nível, verificar se o nó ascendente fica coerente, senão propagar os efeitos recursivamente (até à raiz, se necessário) 36 18

Propriedades Propriedades que devem ser sempre mantidas: A. à esquerda de um valor está uma sub-árvore com valores sempre menores B. à direita de um valor está uma sub-árvore com valores maiores ou iguais C. em nós que não são folha, cada valor preenchido corresponde ao menor valor da sub-árvore direita 37 Inserção em árvores B + Inserção procurar a folha em que esteja presente a chave dada se existir, adicionar registo à tabela e inserir apontador no contentor senão, adicionar registo e criar novo contentor inserir a entrada (valor, apontador) na folha se a folha ultrapassar o máximo de n 1 valores separar os n valores em 2 nós 38 19

Inserção em árvores B + Separação de n valores em 2 nós deixar os primeiros n/2 valores no nó original, o resto passa um segundo, novo nó inserir a entrada (k,p) no nó ascendente, em que k é a menor chave do novo nó p é um apontador para o novo nó se o nó ascendente excedeu o tamanho máximo, parti-lo segundo o mesmo procedimento se a divisão se propagar até à raiz a raiz é partida em 2 nós é criada uma nova raiz como ascendente destes 2 nós 39 Inserção em árvores B + exemplo 40 20

Exercício Considere uma árvore B + com n=3 a) A partir de uma árvore vazia, desenhe a árvore após a inserção sucessiva dos seguintes valores: 1, 9, 5, 3, 6, 8, 4 41 Exercício a) 5 9 6 1 1 1 3 5 6 9 5 9 9 1 9 5 8 9 8 1 5 9 1 3 5 6 8 9 3 5 9 8 4 1 3 5 9 4 5 9 1 3 4 5 6 8 9 42 21

Bases de Dados Índices do tipo hash Índices do tipo hash Um contentor armazena um conjunto de entradas valor, apontador(es) tipicamente um contentor ocupa um bloco em disco Função de hash recebe como parâmetro um valor e determina o contentor mas no mesmo contentor pode haver diferentes valores Dentro dos contentores, as entradas são pesquisadas sequencialmente 44 22

Índices do tipo hash exemplo 45 Funções de hash 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 A função de hash ideal devia ser uniforme e aleatória todos os contentores deviam ficar com (aproximadamente) o mesmo número de entradas 46 23

Overflow de contentores Pode ocorrer overflow de contentores devido a número insuficiente de contentores muitos registos com a mesma chave de procura função de hash não uniforme A hipótese de overflow nunca pode ser eliminada depende dos dados é normalmente resolvida com contentores extra 47 Overflow de contentores Encadeamento de contentores 48 24

Índices do tipo hash Os índices em árvore B + são normalmente usados para índices primários Os índices do tipo hash são normalmente usados para índices secundários Porquê?... 49 Índices do tipo hash Problemas na utilização de índices do tipo hash se o número de contentores for pequeno, poderá ser necessário contentores extra (overflow) se o número de contentores for demasiado grande, haverá desperdício de espaço Os sistemas actuais usam hashing dinâmico, em que o número de contentores varia dinamicamente exige mudar a função de hash e reorganizar o índice quando o número de contentores se altera 50 25

Bases de Dados Índices do tipo bitmap Índices do tipo bitmap Usados para consulta eficiente sobre várias chaves de pesquisa Registos numa relação assumem-se numerados sequencialmente deve ser possível obter rapidamente o registo n Funciona sobre atributos que tomam um conjunto reduzido de valores distintos p.ex. país também é possível decompor atributos em níveis p.ex. salário decomposto em: 0-500, 500-1000, 1000-2000, 2000-3000, 3000-infinito Um bitmap é um array de bits 52 26

Índices do tipo bitmap Um índice bitmap sobre um atributo é um bitmap para cada valor possível do atributo cada bitmap tem tantos bits como registos 53 Índices do tipo bitmap Exemplo de consulta: σ gender = f Λ income_level = L2 (r) Resposta obtida com operação sobre bitmaps 01101 and 01000 = 01000 há apenas um registo que obedece à condição identificação e contagem dos registos é imediata Outras consultas também podem ser feitas com operações sobre bitmaps intersecção (and), união (or), complemento (not) 54 27