Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

36
Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados AULA 7 Profa. Sandra de Amo GBC053 – BCC

description

Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados. AULA 7 Profa. Sandra de Amo GBC053 – BCC. Organização dos Dados nos Arquivos. Arquivos Heap (Sequencial) Arquivos Ordenados por uma Chave (de ordenação) Chave = conjunto de atributos - PowerPoint PPT Presentation

Transcript of Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

Page 1: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

Indices: Estruturas Auxiliares para Otimizar

Acesso aos Dados

AULA 7 Profa. Sandra de Amo

GBC053 – BCC

Page 2: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

BCC-2013-1

Organização dos Dados nos Arquivos

Arquivos Heap (Sequencial) Arquivos Ordenados por uma Chave (de

ordenação) Chave = conjunto de atributos

Arquivos Agrupados por uma Chave (de agrupamento) Chave = conjunto de atributos Função de agrupamento (= função hash)

Métodos de Acesso: utilizam estruturas auxiliares para acelerar a busca Estruturas auxiliares = arquivos de indice

Page 3: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

O que é um índice ?

Arquivo de Dados

João da Cruz, ....

Select *From Emp EWhere E.Nome = ‘João da Cruz’

• Arquivo Heap: custo de um scan• Arquivo Ordenado por Nome: busca binária• Arquivo Hash (por nome): scan no subarquivo Skonde k = Hash(João da Cruz)

Em qualquer das organizações de arquivos,há a possibilidade de se ler muitas páginasde dados até encontrar o registro procurado.

Page 4: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

O que é um índice ? Select *From Emp EWhere E.Nome = ‘João da Cruz’

E se conhecessemos o rid = (Npag,Nsot) do registro procurado ?

Carlos, (2,2)

João..., (5,4)

Arquivo de Indice

Pagina 5

slot 4

Um indice é um ARQUIVO AUXILIAR ASSOCIADO AO ARQUIVO ORIGINAL

Page 5: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

BCC-2013-1

Dados, indices, índices, índices, ...

DADOS

Consulta: Me dê o livro Database Systems – Ramakrishnan/Gehrke

Arquivo de Indice

Page 6: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

BCC-2013-1

04/21/23 6

Arquivos de Indice

ridA D E F

chave

a d e fa d e fa d e f

(12,1)(18,5)(22,4)

rid A B C D E F G

a b1 c1 d e f g1(12,1)

a b2 c2 d e f g2(18,5)

a b3 c3 d e f g4(22,4)

Arquivo de Indice

Arquivo de DadosEndereços obtidos no diretório de arquivos e no diretório de slots das páginas

Page 7: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

BCC-2013-1

04/21/23 7

Dinâmica geral dos Arquivos de Indice Busca no arquivo de indice:

Páginas deste arquivo são organizadas de modo a permitir a localização rápida das entradas com uma dada chave.

Uma vez encontradas rapidamente estas entradas no arquivo de índice, já temos os endereços dos registros de dados associados (seu rid = (N,X)).

O local exato no disco onde se encontra a página de número N é encontrado através do diretório de arquivos do disco: fornece o endereço da header page do arquivo.

O local exato na página N onde se encontra o slot X do registro procurado é obtido através do diretório de slots da página N

Page 8: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

BCC-2013-1

Como encontrar um registro num Arquivo A conhecendo o rid do registro?

Rid = (12, 3) Vai no diretório de arquivos no disco e procura o

registro correspondente ao arquivo A, para obter o ponteiro para o primeiro bloco do arquivo.

Calcula o endereço do 12º bloco e posiciona a cabeça de leitura neste endereço.

Transfere o 12º bloco para o buffer pool Processador de consultas consulta o diretório de slot

da página 12 e procura o endereço do registro contido no slot 3, bem como o tamanho (L) do registro contido neste slot.

Vai para este endereço de memória e lê L bytes.

Page 9: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

04/21/23 9

Arquivos de Indice Otimiza a procura de registros em arquivos, pois o arquivo de indice

contém o rid dos registros.

Através do rid encontra-se facilmente os registros de dados completos nos arquivos.

No arquivo de índice, cada registro é da forma (valores_chave,rid) Chave = conjunto de atributos

Se chave contém chave candidata do arquivo, então chave determina unicamente o rid

Caso contrário, uma mesma chave pode acessar diversos rids.

Exemplo : se chave = {Salário}

Page 10: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

Como as informações são obtidas rapidamente no arquivo de indice ?

Métodos de Acesso

Técnicas de organização das páginas dos arquivos de índices

B+TreesTabelas Hash

Page 11: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

BCC-2013-1

04/21/23 11

Catálogo do Sistema

Metadados

Descrição dos dados e índices

Informações sobre visões

Catálogo = conjunto de relações (arquivos) contendo todas as informações sobre os arquivos sendo utilizados pelo sistema.

Page 12: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

04/21/23 12

Catálogo do Sistema Arquivos « Relações », « Atributos », « Restrições », ...

Nome da relação, nome do arquivo , estrutura do arquivo Nomes e tipos dos atributos Nome do índice Restrições de Integridade (chave primária, estrangeira) Guardam inclusive registros correspondentes às relações

« Relações », « Indices », « Atributos », « Visões », ...

Arquivo « Indices »

Nome e estrutura de cada índice Chave de cada índice

Arquivo « Visões » Nome e código

Page 13: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

Resumo: Arquivo de Indice

O que é ? estrutura auxiliar projetada para agilizar

operações de busca, inserção e deleção

Em que consiste ? Uma coleção de registros Uma chave de busca k Cada entrada contém informação suficiente para

localizar registros de dados contendo a chave de busca k.

Page 14: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

Vantagens

Tamanho: normalmente é bem menor do que o arquivo de dados

Organização optimizada: pode ser sequencial, ordenado ou hashed

Método de Acesso rápido: pode ser estruturado usando uma b-tree ou hash (estático, dinâmico)

Page 15: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

O que armazenar em um índice ?

Registro de Dados =

Chave Rid + Registro do indice = Chave do índice !!

Page 16: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

Indice: como são os registros ?

Alternativa 1 Entrada = registro inteiro de dados Neste caso, a única vantagem do índice é a forma como é

organizado: ordenado, hash, com método de acesso ou não Alternativa 2

Entrada = (k,rid), k = chave Chave = conjunto de atributos

Alternativa 3 Entrada = (k, lista de rids) Vantagem: ocupa menos espaço. Uma chave acessa

diversos registros no arquivo de dados Desvantagem: registro de tamanho variável

Page 17: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

BCC-2013-1

Como organizar as entradas do índice ?

Entrada = registro

Entradas podem ser ordenadas Entradas podem ser organizadas por Hash

Page 18: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

BCC-2013-1

Exemplo de Indice ordenado

Paulo, 44, 2000

Pedro, 35, 2000

Carlos, 44, 2000

José, 40, 2500

João, 35, 3000

Ilmério, 40, 3500

Rodrigo, 40, 3500

Maria, 30, 4000

Sara, 35, 4000

Sabrina, 31, 5000

2000

2000

2000

2500

3000

3500

4000

3500

4000

5000

Registros de dadosEntradas : organizadasde forma ordenada

Page 19: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

BCC-2013-1

Exemplo de Indice organizado por Hash

Paulo, 44, 2000

Pedro, 35, 2000

Carlos, 44, 2000

José, 40, 2500

João, 35, 3000

Ilmério, 40, 3500

Rodrigo, 40, 3500

Maria, 30, 4000

Sara, 35, 4000

Sabrina, 31, 5000

2000

2000

2000

2500

5000

3000

3500

3500

4000

Registros de dadosEntradas

H

4000

H(sal) = 01

H(sal) = 11

H(sal) = 00

Page 20: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

BCC-2013-1

Tipos de indices

Relação entre a maneira como são organizados os dados no índice e no arquivo de dados

Agrupado – não agrupado Densos – esparsos Primários – secundários Simples - compostos

Page 21: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

BCC-2013-1

Indices Agrupados (ordenados)

Agrupados : a ordem dos registros é compatível com a ordem das entradas no arquivo de índice.

Se entrada é do tipo (chave, rid) então os registros de dados são ordenados por chave.

Somente um índice agrupado do tipo (chave,rid)

Page 22: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

Indices Agrupados (hash)

Agrupados : a função hash utilizada na distribuição dos registros de dados é a mesma função utilizada para distribuir as entradas no arquivo de índice.

Se a entrada é do tipo (chave, rid) e arquivo de índice é organizado por hash, utilizando a função hash h(chave), eentão os registros de dados são organizados por hash através dos atributos de chave.

Page 23: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

Exemplo de Indice Agrupado (ordenado)

Paulo, 44, 2000

Pedro, 35, 2000

Carlos, 44, 2000

José, 40, 2500

João, 35, 3000

Ilmério, 40, 3500

Rodrigo, 40, 3500

Maria, 30, 4000

Sara, 35, 4000

Sabrina, 31, 5000

2000

2000

2000

2500

3000

3500

4000

3500

4000

5000

Registros de dados(ordenador por Sal)

Entradas (ordenadas por Sal)

= rid

Page 24: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

Exemplo de Indice Agrupado (ordenado)

Paulo, 44, 1000

Pedro, 35, 1000

Carlos, 44, 1000

José, 40, 1500

João, 35, 3000

Ilmério, 40, 3500

Rodrigo, 40, 3500

Maria, 30, 4000

Sara, 35, 4000

Sabrina, 31, 5000

1000

1000

1000

1500

3000

3500

4000

3500

4000

5000

Registros de dados(ordenados por Idade)

Entradas (ordenadas por Sal)

= rid

Page 25: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

Exemplo de Indice agrupado

Paulo, 44, 1000

Pedro, 35, 1000

Carlos, 44, 1000

José, 40, 1500

João, 35, 3000

Ilmério, 40, 3500

Rodrigo, 40, 3500

Maria, 30, 4000

Sara, 35, 4000

Sabrina, 31, 5000

1000

1000

1000

1500

5000

3000

3500

3500

4000

Registros de dados (organizadospela função hash h(x) = (x/1000) mod 4,x: valor do atributo Salário

H

4000

H(sal) = 01

H(sal) = 11

H(sal) = 00

Entradas (organizadaspela função hash h(x) = (x/1000) mod 4,x: valor do atributo Salário

Bucket 2 Bucket 2

Bucket 3

Bucket 1

Bucket 3

Bucket 1

= rid

Page 26: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

Exemplo de Indice não agrupado

Paulo, 44, 1000

Pedro, 35, 1000

Carlos, 44, 1000

José, 40, 1500

João, 35, 3000

Ilmério, 40, 3500

Rodrigo, 40, 3500

Maria, 30, 4000

Sara, 35, 4000

Sabrina, 31, 5000

1000

1000

1000

1500

5000

3000

3500

3500

4000

Registros de dados (ordenadospor Salário)

Entradas (organizadaspela função hash h(x) = (x/1000) mod 4,x: valor do atributo Salário

H

4000

H(sal) = 01

H(sal) = 11

H(sal) = 00

= rid

Page 27: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

Vantagens e desvantagens Desvantagem (no caso de ordenado) : grande overhead para mover registros a

fim de preservar a ordem depois de inserções e deleções.

Desvantagem (no caso de hash) : se o hash é estático, se há muitas inserções no banco de dados, tanto a estrutura hash do indice quanto a dos dados deverá ser refeita periodicamente. Se o hash é dinâmico, há overhead para manter a estrutura hash tanto no arquivo de indice quanto no de dados.

Vantagem – no caso de agrupado ordenado Seleções do tipo ‘= a’ ou ‘< a’ ... são altamente otimizadas caso os registros

sejam ordenados pela chave do indice, e este seja ordenado pela chave. Rids das entradas apontam para registros contíguos, menos páginas são

manipuladas.

Vantagem – no caso de agrupado hash Seleções do tipo ‘= a‘ são altamente otimizadas

Rids das entradas satisfazendo a condição da busca apontam para registros que estão no mesmo bucket, logo menos páginas são manipuladas.

Page 28: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

Indices Densos

Densos : se para cada valor v da chave de busca existe uma entrada (v,rid).

Não-denso = esparso

Page 29: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

Exemplo de Indices denso e não denso

André, 44, 2000

Carlos, 44, 2000

José, 40, 2500

João, 35, 3000

Ilmério, 40, 3500

Rodrigo, 40, 3500

Maria, 30, 4000

Sara, 35, 4000

Sabrina, 31, 5000

30

31

35

35

35

40

40

40

44

Registros de dados(ordenados por Nome)

Indice Esparso e Agrupado 44

Pedro, 35, 2000

Indice Denso (em Idade) e não-agrupado

André

José

Rodrigo

= rid

Page 30: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

Exemplo de Indice denso onde a chave não é chave da relação

André, 44, 2000

Carlos, 44, 2000

José, 40, 2500

João, 40, 3000

Ilmério, 40, 3500

Rodrigo, 45, 3500

Maria, 40, 4000

Sara, 35, 4000

Sabrina, 31, 5000

Registros de dados (ordenados por Idade)

Pedro, 40, 2000

Pagina 1

Pagina 2

Pagina 3

31

40

44

(1,1)

(2,1)

(3,1)

Select * From EMP EWhere E.Sal = 40

Pagina 2 é carregada,Página 1 é carregadaPágina 3 não é carregada, pois Através do indice sabe-se que o 1o registro de Pag. 3 tem Idade = 44

Page 31: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

Exemplo de Indice denso onde a chave não é chave da relação

André, 44, 2000

Carlos, 44, 2000

José, 40, 2500

João, 40, 3000

Ilmério, 40, 3500

Rodrigo, 45, 3500

Maria, 40, 4000

Sara, 35, 4000

Sabrina, 31, 5000

Pedro, 40, 2000

Pagina 1

Pagina 2

Pagina 5

31

40

44

(1,1)

(2,1)

(5,1)

Select * From EMP EWhere E.Sal = 40

Pagina 2, 3, 4 são carregadas,Página 1 é carregadaPáginas 5 não é carregada, pois Através do indice sabe-se que o 1o registro de Pag. 5 tem Idade = 44

Pagina 3Pagina 4

***

Page 32: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

Vantagens e desvantagens

Esparso tem que ser agrupado Vantagens de esparso : arquivo de indice

ocupa menor espaço. Desvantagem de esparso : técnicas de

otimização de busca são apropriadas para índices densos.

Page 33: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

Indices Primários e Secundários

Primários : Chave do índice inclue a chave primária da relação. Não há entradas duplicadas (com mesmo

valor da chave)

Secundários : Não contém chave primária. Pode conter chave candidata Pode conter duplicatas ou não

Page 34: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

Indices com chaves compostas

bob

cal

joe

sue

42

31

42

33

80

10

20

75

Indice em Idade

31

33

42

42

10

20

75

80

Indice em Sal

31,80

33,75

42,10

42,20

10,42

20,42

75,3380,31

Indice em (Idade,Sal)

Indice em (Sal,Idade)

Page 35: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

Consultas

Consultas com igualdade Chave composta (Idade, Sal)

Idade = 10, Sal = 80 Arquivos Hashed só são convenientes para consultas com

igualdade

Consultas Range Chave composta (Idade, Sal)

Idade = 10 Idade < 10, Sal > 80

Arquivos Ordenados são convenientes para consultas com igualdade

Page 36: Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

Indices em SQL

CREATE INDEX IndAgeGrau ON EstudantesWith Structure = BTREE,

Key = (Idade, Média)