Você está na página 1de 5

11/8/2010

Tópicos

Organização e Indexação de  Bancos de dados e acesso a memória secundária


Dados em Memória Secundária  Noções de organização de dados em memória secundária

 Indexação
 Índices primários
Disciplina Bancos de Dados II  Índices de agrupamento (clustering)
Prof. Renato Fileto  Índices secundários
INE/CTC/UFSC  Índices em múltiplos níveis
 B-Trees e B+_Trees

 Bibliografia e leituras recomendadas

 Lista de exercícios
1

A arquitetura interna de um SGBD


Acesso a dados em um SGBD
(figura adaptada de Korth & Silberchatz 1994)
usuários programadores usuários administrador do
ingênuos de aplicativos sofisticados banco de dados
Modelagem de Interface
Dados interfaces de API’s para consultas esquema do
aplicativos aplicativos banco de dados
Processamento
de Consultas
pré-compilador processador
Processamento DML de consultas
de Transações código compilador
objeto gerenciador DDL
Acesso aos do banco
Dados SGBD

gerenciador Dados e
de acesso estruturas
catálogo
SGBD aos dados de acesso

Níveis de armazenamento de dados Um disco simples

Processador Registradores Internos

Cache do Processador
Memória Primária
Memória Principal
Cache de Disco

Disco Magnético Memória Secundária

Fita Memória Terciária

1
11/8/2010

Trilhas e setores Pilha de discos

Alocação de disco Regs. de tabela em páginas de disco

Cache de disco Análises de tempo de acesso

 Consideram somente o número de páginas


recuperadas para atender uma requisição

 Ignoram ganho no acesso a blocos previamente


capturados e mantidos na cache de disco

 Fatores relevantes:
 Número e tamanho dos registros de dados
 Número de registros armazenados por página de disco
 Páginas disponíveis em cache não precisam ser  Número de páginas de disco ocupadas pelos dados e
acessadas em disco estruturas de acesso aos mesmos
 Mas seus valores são perdidos se não gravados em disco  Tempo médio para ler ou escrever uma página
antes de ocorrer uma falha

2
11/8/2010

Alternativas para organização dos


Exempo de análise
dados em memória secundária
Sejam:  Arquivos Heap: Melhor opção quando o acesso tipico é um busca
 NroRegs = 30.000 sequencial, sem ordem, recuperando todos registros.
 Exemplo: um simples arquivo de registros de dados.
 TamReg = 100 bytes
 TamPag = 1 Kbyte = 1024 bytes  Arquivos Ordenados: Melhor opção se os registros devem ser
recuperados em alguma ordem, ou quando somente uma porção
Pode-se calcular: contígua dos registros ordenados é necessária.
 Ex.: Arquivo de dados, possivelmente ordenado, além de vários índices.
 NroRegsPorPag = 1024 / 100 = 10 registros
(24 bytes inutilizados por página)  Arquivos Hashed: Melhor para seleções de igualdade.
 O arquivo de dados é uma coleção de buckets.
 NroPagsOcupadas = 30.000 / 10 = 3.000 páginas
 Bucket = uma página primária e possíveis páginas de overflow.
 Função de Hashing: h(K) = endereço do bucket contendo o(s) registro(s) com o
O tempo de acesso depende do tipo de requisição e valor de busca K.
da estrutura utilizada para a organização e o acesso  Não é adequado para acesso seqüencial ordenado.
às páginas de dados

Indexação Tipos de índices


Nome Cidade Estado . . . Pont. Atrib. Busca

Ana Florianópolis SC . Amparo


 Índice primário: ordenação, inclusive dos dados, pela chave primária
Beto Campinas SP . Brasília  Esparso
Atrib. Busca Pont.
: : : . Campinas  Máxima eficiência
Ana . . Florianópolis
Carol Recife PE
Carmem .  Índice de agrupamento (clustering index): ordenação, inclusive dos
. Recife
: :
Carmen Amparo SP . Salvador dados, por atributo(s) não chave (que pode(m) ter valores repetidos)
Fernando Salvador BA  Esparso
: : : . Uberlândia
Paulo .  Eficiência próxima à do índice primário
Paulo Florianópolis SC
.
.
.  Índices secundários: ordenações distintas (auxiliares)
Índice
esparço  Densos
Paulo Uberlândia MG
Rita Florianópolis SC  Menos eficientes que os anteriores, porém muito mais eficientes que
: : : busca seqüencial
Índice
Tereza Brasília DF secundário
Arquivo de dados denso

Índice de agrupamento
Índice primário
(clustering index)
Codigo Cidade Estado . . . Nome Cidade Estado . . .
1 Florianópolis SC Ana Florianópolis SC
2 Campinas SP André Campinas SP
Atrib. Busca Pont.
: : : : : :
1 . Atrib. Busca Pont.
8 Recife PE Carol Recife PE
9 . Ana .
: : Carol .
9 Amparo SP Carol Amparo SP
2049 . : :
10 Salvador BA Fernando Salvador BA
Paulo .
Índice : : : : : :
esparso 16 Florianópolis SC Índice Gisèle Florianópolis SC
. esparso .
. .
. .

2049 Uberlândia MG Paulo Uberlândia MG


2050 Florianópolis SC Rita Florianópolis SC
: : : : : :
2056 Brasília DF Tereza Brasília DF
Arquivo de dados Arquivo de dados

3
11/8/2010

Índice de agrupamento com blocos


Índice secundário
para cada valor de busca
Nome Cidade Estado . . . Nome Cidade Estado . . .
Pont. Atrib. Busca
Ana Florianópolis SC Ana Florianópolis SC
Ana Campinas SP Beatriz Campinas SP . Amparo
Atrib. Busca Pont. : : : : : : . Brasília
Ana . Ana Recife PE Carol Recife PE . Campinas
: : . Florianópoli
. s
Recife
: : Ana Amparo SP Carmen Amparo SP
Tereza . Ana Salvador BA Fernanda Salvador BA . Salvador
: : : : : :
Índice . Uberlândia
Paula Florianópolis SC
esparço
. .
. .
. .

Tereza Uberlândia MG Paula Uberlândia MG


Tereza Florianópolis SC Rita Florianópolis SC
: : : : : :
Tereza Brasília DF Tereza Brasília DF Índice
Arquivo de dados Arquivo de dados denso

Índices com múltiplos níveis Estrutura de índice em árvore


(figura extraída de Ramakrishnan 1998)
... Código Nome
1 . 1 .
1 Camila
129 . 5 .
2 Fátima
: : : :
: :
384 . 29 .
1 .
4 Nilza
513 . . Págs.
.
513 . .
: :
5 Pedro
não folha
1536 . 641 .
6 Carol
: :
: :
769 .
7 Beatriz
. .
. . .
. . .
.
1536 . 2045 João Págs.
2037 .
1792 . 2046 André folha
... 2041 .
: : : :
: : Páginas
1921 . 2048 Ney Página de
2045 . overflow primárias
Arquivo de dados

B-Tree de ordem 3 Remoção na B-Tree

5 ^ 8 ^ 5 ^ 8 ^

1 ^ 3 ^ 7 ^ 9 ^ 12 ^ 1 ^ 3 ^ 7 X^ 9 ^ 12 ^

^^ = endereço de registro de dado

4
11/8/2010

Possível resultado da remoção Inserção na B-Tree

8 ^ 2 8 ^

1 ^ 3 ^ 5 ^ 9 ^ 12 ^ 1 ^ 3 ^ 5 ^ 9 ^ 12 ^

B+_Tree
Possível resultado da inserção
(figura extraída de Ramakrishnan 1998)

3 ^ 8 ^ Raiz

1 ^ 2 ^ 5 ^ 9 ^ 12 ^

Especificação de índices em SQL Leituras recomendadas

 Elmasri, R.; Navathe, S.B. Fundamentals of database Systems. 2 ed.,


CREATE INDEX IndicePorNome ON Pessoa Benjamin Cummings, 1994.
WITH STRUCTURE = BTREE,  Cap. 4 – Armazenagem de Registros e Organização de Arquivos

KEY = (nome)  Cap. 5 – Estruturas de Índices para Arquivos

 Ramakrishnan, R. Database management systems. McGraw-Hill, 1998.


 Parte 3 – Armazenagem e Indexação de Dados
CREATE INDEX IndicePorCidadeEstado ON Pessoa
• Cap. 7 – Armazenando Dados: Discos e Arquivos
WITH STRUCTURE = BTREE, • Cap. 8 – Organização de Arquivos e Índices
KEY = (cidade, estado) • Cap. 9 – Indexação baseada em Estruturas em Forma de Árvore
• Cap. 10 – Indexação baseada em Hashing

CREATE INDEX IndicePorEstadoCidade ON Pessoa  Abiteboul, S.; Buneman, P.; Suciu, D. Data on the Web – from Relations to
Semistructured Data and XML. Morgan Kaufmann, 2000.
WITH STRUCTURE = BTREE,  Seção 8.2.2 – Indexação
KEY = (estado, cidade)

Você também pode gostar