/8/00 Tópicos Organização e Indexação de Dados em Memória Secundária Disciplina Bancos de Dados II Prof Renato Fileto INE/CTC/UF Bancos de dados e acesso a memória secundária Noções de organização de dados em memória secundária Indexação s primários s de agrupamento (clustering) s secundários s em múltiplos níveis B-Trees e B+_Trees Bibliografia e leituras recomendadas Lista de exercícios Acesso a dados em um SGBD A arquitetura interna de um SGBD (figura adaptada de Korth & Silberchatz 994) Modelagem de Dados Interface Processamento de Consultas usuários ingênuos interfaces de aplicativos programadores de aplicativos API s para aplicativos usuários sofisticados consultas administrador do banco de dados esquema do banco de dados Processamento de Transações Acesso aos Dados código objeto pré-compilador DML gerenciador do banco processador de consultas compilador DDL SGBD SGBD gerenciador de acesso aos dados Dados e estruturas de acesso catálogo Níveis de armazenamento de dados Um disco simples Processador Registradores Internos Cache do Processador Memória Principal Cache de Disco Memória Primária Disco Magnético Memória Secundária Fita Memória Terciária
/8/00 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 Páginas disponíveis em cache não precisam ser acessadas em disco Mas seus valores são perdidos se não gravados em disco antes de ocorrer uma falha Fatores relevantes Número e tamanho dos registros de dados Número de registros armazenados por página de disco Número de páginas de disco ocupadas pelos dados e estruturas de acesso aos mesmos Tempo médio para ler ou escrever uma página
/8/00 Exempo de análise Sejam NroRegs = 30000 TamReg = 00 bytes TamPag = Kbyte = 04 bytes Pode-se calcular NroRegsPorPag = 04 / 00 = 0 registros (4 bytes inutilizados por página) NroPagsOcupadas = 30000 / 0 = 3000 páginas O tempo de acesso depende do tipo de requisição e da estrutura utilizada para a organização e o acesso às páginas de dados Alternativas para organização dos dados em memória secundária Arquivos Heap Melhor opção quando o acesso tipico é um busca sequencial, sem ordem, recuperando todos registros 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 Ex, possivelmente ordenado, além de vários índices Arquivos Hashed Melhor para seleções de igualdade O arquivo de dados é uma coleção de buckets 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 valor de busca K Não é adequado para acesso seqüencial ordenado Indexação Tipos de índices Atrib Busca Pont Carmem esparço Nome Cidade Estado Beto Carmen Fernando Pont Atrib Busca secundário denso primário ordenação, inclusive dos dados, pela chave primária Esparso Máxima eficiência de agrupamento (clustering index) ordenação, inclusive dos dados, por atributo(s) não chave (que pode(m) ter valores repetidos) Esparso Eficiência próxima à do índice primário s secundários ordenações distintas (auxiliares) Densos Menos eficientes que os anteriores, porém muito mais eficientes que busca seqüencial primário de agrupamento (clustering index) Codigo Cidade Estado Nome Cidade Estado Atrib Busca 9 049 esparso Pont 8 9 0 6 Atrib Busca esparso Pont André Fernando Gisèle 049 00 06 3
/8/00 de agrupamento com blocos para cada valor de busca secundário Atrib Busca esparço Pont Nome Cidade Estado Nome Cidade Estado Beatriz Carmen Fernanda Paula Pont Atrib Busca Florianópoli s Paula denso s com múltiplos níveis Estrutura de índice em árvore (figura extraída de Ramakrishnan 998) 3 36 9 384 3 64 769 36 79 9 9 037 04 04 Código 4 6 7 04 046 048 Nome Camila Fátima Nilza Pedro Beatriz João André Ney Págs não folha Págs folha Página de overflow Páginas primárias B-Tree de ordem 3 Remoção na B-Tree ^ 8 ^ ^ 8 ^ ^ 3 ^ 7 ^ 9 ^ ^ ^ 3 ^ 7X ^ 9 ^ ^ ^^ = endereço de registro de dado 4
/8/00 Possível resultado da remoção Inserção na B-Tree 8 ^ 8 ^ ^ 3 ^ ^ 9 ^ ^ ^ 3 ^ ^ 9 ^ ^ Possível resultado da inserção B+_Tree (figura extraída de Ramakrishnan 998) 3 ^ 8 ^ Raiz ^ ^ ^ 9 ^ ^ Especificação de índices em SQL Leituras recomendadas CREATE INDEX IndicePorNome ON Pessoa KEY = (nome) CREATE INDEX IndicePorCidadeEstado ON Pessoa KEY = (cidade, estado) CREATE INDEX IndicePorEstadoCidade ON Pessoa KEY = (estado, cidade) Elmasri, R; Navathe, SB Fundamentals of database Systems ed, Benjamin Cummings, 994 Cap 4 Armazenagem de Registros e Organização de Arquivos Cap Estruturas de s para Arquivos Ramakrishnan, R Database management systems McGraw-Hill, 998 Parte 3 Armazenagem e Indexação de Dados Cap 7 Armazenando Dados Discos e Arquivos Cap 8 Organização de Arquivos e s Cap 9 Indexação baseada em Estruturas em Forma de Árvore Cap 0 Indexação baseada em Hashing Abiteboul, S; Buneman, P; Suciu, D Data on the Web from Relations to Semistructured Data and XML Morgan Kaufmann, 000 Seção 8 Indexação