Implementação de Banco de Dados Cassio Diego cassiodiego.com/bd 1 Aula 10 UNIDADE 3: INDEXAÇÃO 1. Tipos de índices 1.1. Índices Ordenados; 1.2. Índices Densos e Esparsos; 1.3. Índice Cluster e Não Cluster; 1.4. Índice Multinível 1.5. Definição de Índice em SQL. 2 Indexação INTRODUÇÃO • Estrutura de dados que recebe como entrada uma propriedade de registro, e encontra os registros com essa propriedade rapidamente. • Um índice permite localizar um registro sem ter que examinar mais que uma pequena fração dos registros. • Os campos cujos os valores o índice se baseia formam a chave de pesquisa. 3 Indexação FATORES DE EFICIÊNCIA DO USO DE ÍNDICES • O número de bloco de índices em geral é pequeno quando comparado com o número de bloco de dados. • Tendo em vista que as chaves são classificadas, a pesquisa é mais rápida. 4 Indexação FATORES DE EFICIÊNCIA DO USO DE ÍNDICES • O índice pode ser pequeno o suficiente para ser mantido permanentemente em buffers da memória principal. • Uma única estratégia de indexação nem sempre realiza a tarefa esperada. 5 Indexação CONCEITO Estrutura de dados auxiliares cujo único propósito é tornar mais rápido o acesso a registros baseado em certos campos, chamados campos de indexação. 6 Indexação EXEMPLO 7 Indexação AVALIAÇÃO DE TÉCNICAS TIPOS DE ACESSO ACESSOS EFICIENTES TEMPO DE ACESSO DEPENDE DA TÉCNICA TEMPO DE INSERÇÃO LOCALIZAR E ACESSAR TEMPO DE EXCLUSÃO LOCALIZAR E ATUALIZAR ESPAÇO ADICIONAL ESPAÇO x DESEMPENHO 8 Indexação TIPOS DE ÍNDICES • Índices Ordenados; • Índices Densos e Esparsos; • Índice Cluster e Não Cluster; • Índice Multinível; - Índice Árvore B (B-tree). 9 Indexação ÍNDICES ORDENADOS Os argumentos de pesquisa do índice são mantidos ordenados pela chave de pesquisa. Os índices podem ser primários ou secundários. • Chaves de pesquisa; • Acesso aleatório; • Índice armazena chave de busca; • Chave de busca é associada aos registros; • Pode ser primário ou secundário. 10 Indexação ÍNDICES PRIMÁRIO É um índice ordenado pela mesmo atributo que o arquivo de dados. • Modelo simples; • Arquivo classificado; • Chave de pesquisa (ponteiro); • Tuplas são classificadas pela chave primária; • Útil quando chave de pesquisa é a chave primária. 11 Indexação ÍNDICES SECUNDÁRIO É um índice não ordenado do arquivo de dados. Um índice secundário é sempre denso, não agrupado. Podem haver muitos índices secundários para um mesmo arquivo. Dois casos: • O campo de indexação é um campo chave (as vezes chamado de chave secundária); • O campo de indexação não é chave. 12 Indexação ÍNDICES DENSOS E ESPARSOS • Índice Denso Sequência de blocos contendo apenas as chaves dos registros e os ponteiros para os próprios registros. - Índice denso = (chave-ponteiro, registro) • Índice Esparso Usa 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. - Índice esparso = (chave-ponteiro, blocos de dados) 13 Indexação ÍNDICES DENSOS E ESPARSOS 14 Indexação ÍNDICES DENSOS • Há uma entrada no índice que aponta para cada registro no arquivo de dados. • A localização do registro solicitado é mais rápida, no entanto ocupa mais espaço. • O arquivo de dados só é consultado se o argumento de pesquisa aparece no índice. • Um índice denso pode ser agrupado ou não agrupado. 15 Indexação ÍNDICES DENSOS Registro de índice para cada valor de chave de busca no arquivo. Geralmente é mais rápido para localizar arquivos. 16 Indexação ÍNDICES ESPASOS • Nem todos os registros de dados tem uma entrada correspondente no arquivo de índice. • Em geral, há uma entrada no índice por página do arquivo de dados. Neste caso, durante uma consulta, o arquivo de dados sempre deve ser consultado. 17 Indexação ÍNDICES ESPASOS • Para que um índice seja esparso ele deve ser agrupado, sendo assim, é possível construir apenas um índice esparso para cada arquivo de dados. • Índices esparsos exigem menos espaço de armazenamento e menor overhead durante a modificação do arquivo de dados. 18 Indexação ÍNDICES ESPASOS Localiza pela chave de busca com o valor menor ou igual, ocupam menor espaço e tem menor sobrecarga de manutenção. 19 Indexação ÍNDICE CLUSTER (AGRUPADO) • Um índice é dito agrupado quando o arquivo é organizado de tal forma que a ordem dos registros no arquivo de dados é a mesma. • Os índices agrupados são computacionalmente mais caros para se manter quando atualizados. • Pode haver no máximo um índice agrupado por arquivo de dados. 20 Indexação ÍNDICE NÃO CLUSTER (NÃO AGRUPADO) • As entradas no índice não coincidem com a ordem dos registros no arquivo de dados. • Podem haver vários índices não agrupados sobre um arquivo de dados. 21 Indexação ÍNDICE MULTINÍVEL 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. • Índice com dois ou mais níveis; • Índice esparso sobre o índice agrupado; • Índices ordenados e encadeados; • Ampla ultilização comercial; • índices dinâmicos multiniveis - Árvore B (B-tree). 22 Indexação ÍNDICE MULTINÍVEL • Vantagem: Índice pequeno pode ser mantido em memória e o tempo de busca é mais baixo. • Desvantagem: Muitos níveis de índices podem aumentar a complexidade do sistema (talvez sejamelhor usar a árvore-B). 23 Indexação ÍNDICE ÁRVORE B (B-TREE) • Também conhecido como árvore balanceada. O MySQL, SQL Server e Oracle usam a indexação B-tree por padrão. • Como é de se esperar índices B-tree são organizados como árvores, com um ou mais níveis de nós-galhos levando a um único nível de nós-folhas. 24 Indexação ÍNDICE ÁRVORE B (B-TREE) • Nós-galhos são usados para navegar pela árvore, enquanto os nós-folhas armazenam os valores reais e as informações de localização. 25 Indexação ÍNDICE ÁRVORE B (B-TREE) 26 Indexação DEFINIÇÃO DE ÍNDICE EM SQL • Pesquise e crie exemplos de índice no MySQL, de preferência índices ordenados e árvore B. 27 Próxima aula... UNIDADE 4: TRANSAÇÕES 1. Conceito de Transação 2. Estados da Transação 28 Bibliografia Básica • SILBERSCHATZ, Abraham; KORTH, Henry F; SUDARSHAN, S. A. Sistema de banco de dados. 5ª ed. Rio de Janeiro: Campus, 2006. • ELMASRI, R.; NAVATHE, S., Sistemas de Banco de Dados. Pearson Education do Brasil, 4ª.Ed 2005. • RAMALHO, Jose Antonio Alves. SQL a linguagem dos bancos de dados. São Paulo: BERKELEY BRASIL, 1999. 29 Bibliografia Complementar • DATE, C.J. Introdução a sistemas de banco de dados. 8ª ed. Rio de Janeiro: Campus, 2004. • DAMAS Luis SQL- Structured query language 6ª. Ed. Editora LTC 2007 • GILLENSON, M, MILLER, F. Introdução a Gerência de Banco de Dados. Editora LTC 1a. Edição 2009 • PRICE.Jason Oracle Database 11g SQL Editora Artmed 1a. Edição 2008 • KLINE,Daniel; KLINE , Kevin Sql - O Guia Essencial - Manual de Referencia Profissional. Editora Alta Books 1 2010 30 Materiais cassiodiego.com/bd 31 Contato Oficial [email protected] 32