Organização de Arquivos e Indexação

Slides:



Advertisements
Apresentações semelhantes
O Comando DROP INDEX Para eliminar um índice definido sobre uma tabela, utilize: Drop Index on ; Ex: No Access: Drop Index X on.
Advertisements

Estruturas de Indexação
Sistemas operacionais
Indexação Automática de Documentos
SISTEMAS DE INFORMAÇÃO
RESUMO DA AULA 5 Profa. Sandra de Amo GBC053 – BCC
Organização de Arquivos Introdução
Algoritmos para Seleção Simples AULA 16 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Seleção e Projeção
Algoritmos para Seleção Simples
AULA 23 Profa. Sandra de Amo GBC053 – BCC
Pesquisa em Memória Primária
Introdução à Engenharia da Computação
Indexação e Hashing Muitas consultas referenciam apenas uma pequena porção dos registros em uma tabela. Portanto necessitamos ser capaz de localizar estes.
Listas Encadeadas.
Banco de dados Profª Kelly Medeiros.
Proteção de Memória O sistema operacional deve impedir que um processo tenha acesso ou modifique uma página do sistema sem autorização. Proteção para páginas.
4/1/2017 Algoritmos para processamento e otimização de consultas (Otimização baseada em custos) Cristiano Galina Slides adaptados do livro Sistema de Banco.
Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados
Universidade Católica de Pelotas Mestrado em Ciência da Computação
Tuning Lílian Simão Oliveira.
Baseado no material do Professor Raul Paradeda
Linguagem SQL Prof. Juliano.
1 24/4/ :29 FMU – 1. Semestre – Tecnologia – Analise e Desenvolvimento de Sistemas Professor: Eduardo Silvestri Aluno:Clóvis de Oliveira- RA
PostgreSQL Índices Nuno Campos N.º Nuno Campos - N.º Índice Introdução Tipos de Índices – B-Tree – R-Tree – Hash – GiST Classes de Operadores.
Sistemas de Arquivos Sistemas Operacionais Profa. Priscila Facciolli
Daniel Paulo Introdução Informações de uma tabela ou view podem ser encontradas de maneira mais rápida através da utilização.
VBA – Visual Basic para Aplicativos
Algoritmos para Seleção AULA 23 Profa. Sandra de Amo GBC053 – BCC.
Vamos conversar sobre … SPSS Aplicado à Pesquisa Acadêmica Antonio Pedro Castro Mota Amanda Reis Silva
Programação para Internet Aula 10 Introdução (Características do BD Relacional e Implementação)
Tecnologias e Linguagens para Banco de Dados I - WEB Prof. João Ricardo Andrêo 29/5/ :40 1 Atividades: 1 - Criar uma base de dados para uma empresa.
José Antônio da cunha IFRN Administração de Banco de Dados.
Administração de Banco de Dados José Antônio da Cunha CEFET-RN.
Aula 01 Conhecendo o Computador Prof. Filipe Mutz.
Modelagem de Dados Aula 1.
UNIVERSIDADE FEDERAL DE MINAS GERAIS Pilhas e Filas Cristiano Arbex Valle Vinicius Fernandes dos Santos
1 Programação de Banco de Dados José Antônio da Cunha George Azevedo da Silva.
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Capítulo 4 SQL básica.
Glossário Autor: Skyup Informática. Atividade - Glossário A atividade glossário permite que o administrador crie páginas de definições, um dicionário.
1 Bibliografia 1. WIRTH, Niklaus. Algoritmos e estruturas de dados. 2. TENEMBAUM, Aaron. Estruturas de Dados usando C. 3. MORAES, Celso. Estruturas de.
Tecnologias e Linguagens para Banco de Dados I Prof. João Ricardo Andrêo 1/6/ :19 1 Respostas: 1. O que é um Sistema Gerenciador de Banco de Dados.
Mecânica Teórica Introdução e conceitos básicos da Mecânica Teórica:  Campos de Física Teórica;  Objecto de estudo;  Métodos da mecânica teórica; 
Campus Pau dos Ferros Disciplina de Algoritmos Prof. Demétrios Coutinho INFORMÁTICA BÁSICA Algoritmos de Ordenação.
INE5408 Estruturas de Dados Introdução a Árvores - Conceitos - Árvores Binárias - Métodos e algoritmos de percurso - Métodos e algoritmos de balanceamento.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais FATEC-PB Professor: Gustavo Wagner
Banco de Dados II Prof: Márcio Soussa Curso de Sistemas de Informação Faculdades Jorge Amado.
SISTEMAS OPERACIONAIS MEMÓRIA VIRTUAL. INTRODUÇÃO Memória Virtual é um técnica sofisticada e poderosa de gerenciamento de memória, onde a MP e a MS são.
Programação para Internet Aula 12 SQL (Comandos de Consulta ao BD)
Jean Carlo Mendes
INE5408 Estruturas de Dados Gerência de Arquivos.
Normalização (4FN) Na literatura aparecem outras formas normais, como a forma normal de Boyce/Codd, a 4FN e a 5FN. Destas a única que tem importância na.
Sistemas de Informação Prof. Me. Everton C. Tetila Dependências funcionais e normalização para bancos de dados relacionais Banco de Dados I.
Banco de Dados para Redes– Aula 03 Prof. Me. Ronnison Reges Vidal.
Jean Carlo Mendes ** Slides baseados no material do prof. Dr Guilherme Tavares de Assis (UFOP)
DINÂMICA POPULACIONAL DO NECROMYS LASIURUS EM UMA PAISAGEM ALTAMENTE MODIFICADA M ICHELLE A NDRADE F URTADO Instituto Nacional de Pesquisas Espaciais –
 Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer  Localidade Temporal  Um item referenciado.
INE5408 Estruturas de Dados Estruturas de Dados básicas utilizando Vetores - Listas.
SABi - INTERFACE WEB Capacitação no Uso do SABi
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Capítulo 5 Mais SQL: Consultas Complexas, Triggers e Views.
Diagramas de Sequência e Comunicação
BANCO DE DADOS BASE DE DADOS – É UMA COLEÇÃO DE DADOS INTER- RELACIONADOS, REPRESENTANDO INFORMAÇÕES SOBRE UM DOMÍNIO ESPECÍFICO. EX.: LISTA TELEFONICA,
EDITOR DE PLANILHAS MICROSOFT EXCEL 2010
Instruções SIMADE – Maio / 2012
Estruturas Homogêneas - Matrizes
Banco de Dados. Banco de Dados: espaço reservado da memória para armazenar os dados/informações de maneira organizada. Alguns tipos de Banco de Dados:
CLASSES EM JAVA Dilvan Moreira (baseado no livro Big Java)
Administração de Banco de Dados José Antônio da Cunha.
Organização básica de arquivos
Transcrição da apresentação:

Organização de Arquivos e Indexação

Estruturas de Arquivos Registros Forma de organização dos dados Coleção de campos ou itens relacionados Tipo de Registro Coleção de nomes de campos e seus respectivos tipos de dados struct Empregado { char nome[30]; char matricula[6]; int salario; }

Estruturas de Arquivos Um arquivo é uma seqüência de registros Quando todos os registros de um arquivo possuem exatamente o mesmo tamanho em bytes, o arquivo é dito formado por registros de tamanho fixo Se registros diferentes em um arquivo possuem tamanhos diferentes, o arquivo é formado por registros de tamanho variável

Estruturas de Arquivos Registros com tamanho variável Registros de um mesmo tipo de registro Com um ou mais campos de tamanho variável Com um ou mais campos multivalorados Com um ou mais campos opcionais Registros de diferentes tipos de registro Arquivos mistos Exemplos Registros de alunos com registros de notas Registros de clientes com registros de pedidos

Estruturas de Arquivos Figura 13.5 Três formatos de armazenamento de registro. (a) Registro de tamanho fixo com seis campos e tamanho de 71 bytes. (b) Um registro com dois campos de tamanho variável e três campos de tamanho fixo. (c) Um registro de tamanho variável com três tipos de caracteres separadores.

Organização de Registros Divisão de registros em blocos Bloco Unidade de transferência de dados entre o disco e a memória Geralmente, um bloco possui diversos registros Fator de blocagem (de divisão em blocos) B é o tamanho do bloco em bytes R é o tamanho do registro em bytes

Organização de Registros Divisão de registros em blocos Espaço não utilizado Organização Não-Spanned Registros de tamanho fixo limitados a apenas um bloco, onde B >R Organização Spanned Registros podem se fragmentar por mais de um bloco (unidos por ponteiros) Usada sempre que o registro > bloco

Organização de Registros Figura 13.6 Tipos de organização de registro. (a) Nâo-spanned. (b) Spanned.

Alocação de Blocos Alocação Consecutiva Alocação Encadeada Clusters Blocos são alocados consecutivamente no disco Alocação Encadeada Cada bloco de arquivo contém um ponteiro para o próximo bloco de arquivo Facilita expansão, mas torna lenta a leitura do arquivo inteiro Clusters Grupos encadeados de blocos consecutivos

Estruturas de Armazenamento Arquivos de Registros Desordenados Tipo de organização mais simples e básica Registros estão posicionados segundo a ordem pela qual foram inseridos Novos registros são acrescentados ao final do arquivo (muito eficiente) Pesquisa de um registro é seqüencial (ineficiente) Chamado arquivo pilha (heap file) Arquivos seqüenciais

Estruturas de Armazenamento Arquivos de Registros Ordenados Registros são ordenados fisicamente a partir dos valores de um campo (campo de classificação) ou da chave (chave de classificação) Novos registros são acrescentados na posição correta (inclusão é dispendiosa) Pesquisa pelo campo de classificação é binária Chamado arquivo ordenado (sorted file) Arquivos seqüenciais

Estruturas de Armazenamento Hashing Acesso muito rápido aos registros sob uma condição de igualdade em um campo (campo de hash) ou na chave (chave de hash) Usa função hash que é aplicada no campo de hash de um registro, gerando o endereço do bucket (bloco de disco ou cluster de blocos consecutivos) onde o arquivo está armazenado A busca dentro do bloco é feita na memória principal Chamado arquivo hash (hash file)

Hashing Interno

Estruturas de Armazenamento Hashing Externo

Índices Um índice é uma estrutura de acesso auxiliar usado para aumentar a velocidade da recuperação de registros na resposta a certas condições de busca Independente da estrutura de armazenamento (não ordenada, ordenada,hashed) Índice fornecem caminhos de acesso secundários ou alternativos aos registros a partir de campos de indexação previamente definidos

Índices Como encontrar um livro em uma biblioteca pelo título? Sem catálogo de títulos Procurar em todas as estantes Com catálogo de títulos Consultar o catálogo de títulos Fichas em ordem alfabética Localizar a estante onde se encontra o livro Pesquisar livro nas prateleiras

Índices Como recuperar os clientes de nome ‘Eduardo’? Sem índice Busca seqüencial em todas as linhas da tabela Com índice no campo ‘nome’ Procurar o valor desejado no índice Valores ordenados no índice, viabilizam busca eficiente Obter um endereço do registro correspondente no arquivo físico Ponteiro para o bloco de disco que contém o dado desejado Recuperar o registro Ler o bloco do disco e recuperar o registro dentro do bloco

Tipos de Índices Índices com chave de busca única Índice primário Índice clustering Índice secundário Índice multinível Índice multinível dinâmico: B-Trees e B+-Trees Índices com múltiplas chaves de busca Índice ordenado em múltiplos atributos Hashing particionado e grid files Índices espaciais

Tipos de Índices Índice primário Índice clustering Índice secundário Especificado sobre a chave de classificação de um arquivo ordenado de registros Valores distintos para o campo de classificação Índice clustering Especificado sobre o campo de classificação de um arquivo ordenado de registros Valores repetidos para o campo de classificação Índice secundário Especificado sobre outros campos que não são os campos ou chave de classificação

Tipos de Índices Densos Esparsos (Não-densos) Possuem uma entrada no índice para cada valor do campo de classificação e, portanto, uma entrada para cada registro do arquivo de dados Esparsos (Não-densos) Possuem entradas no índice para apenas alguns dos valores do campo de classificação Os demais são percorridos sequencialmente no bloco a partir do maior valor que seja menor ou igual ao campo de classificação

Índice primário Um índice primário é um arquivo ordenado cujos registros são de tamanho fixo e contêm dois campos Valor da chave de classificação (ordenação) Apontador para um bloco de disco (endereço do bloco) Existe uma entrada no índice para cada bloco no disco Cada entrada contém a chave do primeiro registro contido no bloco (âncora do bloco) Índices primários são inerentemente esparsos

Índice primário Inclusões e Exclusões Grande problema para índices primários, pois precisam manter a ordenação Alterações causarão a mudança das âncoras Possível solução Usar blocos de overflow para evitar o rearranjo na inclusão Marcar registros excluídos Reorganização ocorrerá na reconstrução do índice

Índice clustering Tipo diferente de índice para acelerar a recuperação quando os registros de um arquivo são ordenados fisicamente com base em algum valor que não é chave (não possui valor distinto para cada registro) Esse valor é denominado campo de clustering Precisa existir uma entrada no índice para cada valor distinto do campo de classificação O apontador indica o primeiro bloco no qual registros contendo aquele valor poderão ser encontrados Índices clustering também são esparsos

Figura 14.2 Um índice clustering para o campo NUM_DEPARTAMENTO, que não é campo-chave de classificação, de um arquivo EMPREGADO.

Figura 14.3 Um índice clustering com um grupo (cluster) separado de blocos para cada grupo de registros que compartilhem o mesmo valor de campo clustering.

Índice Secundário Um índice secundário provê uma forma secundária de acesso a um arquivo para o qual um índice primário já exista Tanto pode ser referente a uma chave candidata, quanto a um atributo cujo valor possa se repetir O índice é um arquivo ordenado com dois campos Valor da chave de classificação (ordenação) Apontador para um bloco de disco (endereço do bloco) Podem existir diversos índices secundários para o mesmo arquivo com vários campos de indexação

Índice Secundário Índice para chave secundária (candidata) Não é possível usar âncoras de bloco, pois o arquivo não está fisicamente ordenado pela chave de classificação Uma entrada no índice para cada registro do arquivo (índice denso) que pode apontar para o registro ou bloco Consome mais espaço em disco e mais tempo de acesso por causa do maior número de entradas Caso não existisse o índice secundário, seria necessário percorrer todo o arquivo

Figura 14.4 Um índice secundário denso (com ponteiros de bloco) em um campo não é chave de classificação de um arquivo.

Índice Secundário Índice para campo que se repete (não-chave) Opção 1: incluir várias entradas no índice (duplicadas), uma para cada registro (índice denso) Opção 2: manter registros de tamanho variável no índice com um campo multivalorado para armazenar os ponteiros para cada bloco onde há um registro para o campo de indexação Opção 3: manter uma entrada para cada valor distinto, mas apontar para um bloco contendo ponteiros para as várias ocorrências do valor no arquivo A opção 3 é a mais usada!

Figura 14.5 Um índice secundário (com ponteiros de registro), em um campo que não é campo-chave, implementado em um nível adicional, indireto, de forma que as entradas de índice sejam de tamanho fixo e possuam valores de campo únicos.

Atualização de Índices Independente do tipo de índice utilizado, ele deve ser atualizado sempre que um registro for inserido ou removido do arquivo de dados Inclusão Exclusão Localizar o registro Incluir o registro, caso não exista Remover o registro, caso exista Atualizar o índice

Quando criar índices? Quando criar um índice Para acelerar a recuperação dos dados Para impor exclusividade aos registros Restrição de chave primária, cria um índice único Quando não criar um índice Consome espaço em disco Acarreta sobrecarga em operações de atualização (INSERT, UPDATE, DELETE)

Quais colunas indexar? Conhecendo os dados Determinando a seletividade Determinando a densidade Determinando a distribuição de dados Diretrizes sobre indexação

Quais colunas indexar? Conhecendo os dados A estrutura física e lógica As características dos dados Como os dados são usados Os tipos de consulta feitos A freqüência das consultas normalmente feitas

Quais colunas indexar? Determinando a seletividade Seletividade é o percentual de linhas de uma tabela retornadas por uma query Alta seletividade (Bom para usar índices!) Alta restrição e baixo percentual Alta seletividade member_no 1 2 . last_name first_name Randall Flood Joshua Kathie 10000 Anderson Bill SELECT * FROM member WHERE member_no > 9001 1000 10000 = 10% Número de registros que atendem aos critérios Número total de registros em uma tabela =

Quais colunas indexar? Determinando a densidade Densidade é o percentual de linhas duplicadas em um índice Se os dados ou a consulta tem baixa seletividade, geralmente a densidade é alta Alta densidade Um índice com um grande número de duplicatas Um índice único tem baixa densidade Prefira criar índices com baixa densidade

Quais colunas indexar? Determinando a densidade Alta densidade last_name first_name Randall . Joshua Cynthia Tristan Ota Lani SELECT * FROM member WHERE last_name = ‘Ota’ Baixa densidade SELECT * FROM member WHERE last_name = ‘Randall’ Alta densidade

Distribuição não-homogênea (standard) de valores Quais colunas indexar? Determinando a distribuição de dados Usar índices quando há uma distribuição não homogênea de valores Distribuição não-homogênea (standard) de valores F - J A - E K - O P - U V - Z Nome Número de Nomes

Quais colunas indexar? Diretrizes sobre indexação Colunas que devem ser indexadas Chaves primárias e estrangeiras Colunas pesquisadas para a localização de faixas Colunas utilizadas em ORDER BY Colunas agrupadas durante a agregação

Quais colunas indexar? Diretrizes sobre indexação Colunas que não devem ser indexadas As que sejam raramente referenciadas em uma consulta As que contenham poucos valores únicos (sexo!) Baixa seletividade Alta densidade As que sejam definidas com os tipos de dados BLOB (binary large objects)

Melhores Práticas Crie índices em colunas que unem tabelas Use índices para impor exclusividade Examine os índices e descarte aqueles que não estão sendo usados Evite chaves com muitas colunas Crie índices em colunas que unem tabelas Crie índices que ofereçam suporte aos argumentos de pesquisa