Arquivos de registros Abstração do SGBD Pode ser criado, destruido e ter registros incluidos e excluidos nele Tb suporta a varredura Uma relacao geralmente é armazenada como um arquivo de registros Camada de arquivos Armazena os registros de um arquivo em um conjunto de paginas de disco.
A estrutura de arquivo mais simples Arquivo não-ordenado arquivo heap Armazena os registros logicos pela ordem de inserção Os novos registros logicos sao colocados nos ultimos registros fisicos do arquivo Principal vantagem Rapidez de inserção
Arquivos heap Desvantagem Exclusão exige: Reorganizacao do arquivo periodica para recuperar os espaços perdidos ou Manter uma lista de espaço livre para incluir o novo registro no espaço livre
Estrutura de dados que organiza registros de dados em disco para otimizar determinados tipos de operaçao de recuperaçao Utilizando um indice é possivel recuperar de forma eficiente todos os registros que satisfaçam as condições de pesquisa Pode-se criar indices auxiliares, para acelerar as consultas Ex. Indice em idade de funcionário Ordenacao do arquivo por idade Ex. Indice auxiliar em salário
Há dois tipos de indices ordenados Densos Um registro de indice aparece para cada valor da chave de busca no arquivo Todos os valores tem um indice associado Esparsos Um registro de indice aparece para somente alguns valores da chave de busca
Salvador Feira de Santana Ilheus Jequié Vitoria da Conquista A-11 Salvador A-9 Feira de Santana A-34 Feira de Santana A-34 Feira de Santana A-6 Ilheus A-8 Jequié A-4 Vitoria da Conquista
Salvador Ilheus Vitoria da Conquista A-11 Salvador A-9 Feira de Santana A-34 Feira de Santana A-34 Feira de Santana A-6 Ilheus A-8 Jequié A-4 Vitoria da Conquista
Indices Primarios e Secundários Primario Indice sobre um conjunto de campos que inclua a chave primária Não possui duplicatas Secundarios Indices secundarios contém duplicatas Caso nao haja duplicatas, é chamado de indice unico Podem conter chaves candidatas Há praticamente duas formas de organizar entradas de dados Indexacao baseada em hash Indexacao baseada em arvores
Fornecem suporte para o acesso rapido aos registros por valor de chave primária Ideia básica Funcao que converte um valor-chave em um endereço de registro físico Os registros de um arquivo sao agrupados em uma pagina primaria e possivelmente em paginas adicionais conectadas em cadeias
A pagina principal onde o registro será inserido é determinada aplicando-se a funcao HASH na chave de pesquisa Para pesquisar um registro com um valor de pesquisa, aplicamos a funcao HASH para identificar a página principal a qual o registro pertence e todas as paginas conectadas A funcao HASH permite atribuir mais de uma chave a um endereço fisico. Quando duas chaves sao atribuidas ao mesmo endereço fisico ocorre colisão
Indice hash pode ser primário e/ou secundário Exercício Supondo um arquivo de funcionários, aplique um indice hash sobre a chave de pesquisa idade Função Hash = converte o valor da chave de pesquisa para sua representação binária e usa os dois bits menos significativos como o identificador da página Funcionários: Claro - 44 anos; Barreiro - 40anos; Silva- 44anos; Souza 25anos; Lima-33anos; Santos- 29anos;Antas 50 anos; Lopo 22anos Aplique um indice auxiliar sobre salario
Claro, 44, 3000 idade h1 H(idade)=00 H(idade)=01 H(idade)=10 Barreiro, 40, 6003 Silva, 44, 5004 Souza, 25, 3000 Lima, 33, 4003 Santos, 29, 2007 Antas, 50, 5004 Lopo, 22, 6003 Hash= converte o valor da chave de pesquisa para sua representação binária e usa os dois bits menos significativos como o identificador da página
Alternativa a indexacao baseada em Hash A arvore B é um tipo especial de arvore Cada nó possui no maximo um pai Exceto o no principal ou nó raiz Características Balanceada Todos os nós folhas residem no mesmo nível da árvore Garante a recuperacao de todos os nós folhas com o mesmo custo de acesso
Características Densa Numero de ramificações de um nó é grande Arvore B ideal é larga (densa) mas baixa (poucos niveis) Orientada por blocos Cada nó em uma árvore B consiste em um bloco ou um registro físico A altura de uma arvore é importante pois ele determina o numero de acessos ao registro fisico para a busca Dinamica Muda conforme os registros lógicos sao inseridos e excluídos Jamais precisa de reorganizacao perioódica
Exemplo de inserçao em uma arvore B 20 45 70 Inserir o 55 Inserir o 58
Arvore B sao problemáticas para intervalos e faixas Faixa de 28 a 60 Tem-se que descer até o nó folha da esquerda; depois subi até a raiz, descer a direita, etc Arvore B+ Todas as chaves residem nos nós folhas, mesmo que alguma chave apareça no conjunto de índice
Arvore B+ e hash funcionam melhor com colunas com valores únicos Para colunas com valores não-únicos e poucos, há uma excessiva geraçao de identificadores Indices bitmap Muitos SGBDs fornecem Colunas com poucos valores Trabalham com bit (0 ou 1) Também os índices de junção de bitmaps
Chaves de pesquisa para um índice pode conter diversos campos Denominadas chaves de pesquisa composta ou concatenadas Tabela Funcionário (nome, idade, salario) Armazenado ordenadamente por nome Indices Idade, salario Idade Salario Salario, idade
Indice composto deve ser atualizado Qualquer operaçao que modifique qualquer campo de pesquisa Provavelmente será maior que um indice com chave de atributo único
Condiçao Indice Correspondências C1=10 C1 Usa índice C1 C2 between 10 and 20 C2 Usa indice C2 C3 IN (10,20) C3 Usa indice C3 C1 <> 10 C1 Nao usa índice C1 C4 like A% C4 Usa índice C4 C4 like %A C4 Nao usa C$ C1=10 and C2=5 and C3=20 and c4=25 (C1,C2,C3,C4) Usa índice C2=5 and C3=20 and C1=10 (C1,C2,C3,C4) Usa as 3 primeiras colunas C2=5 and C1=20 and C6=10 (C1,C2,C3,C4) Duas primeiras colunas d do índice C2=5 and C3=20 and C4=10 (C1,C2,C3,C4) Nao usa pois falta a C1 C2=5 and C1 between 6 and 10 (C1,C2,C3,C4) Primeira coluna do indice: pára depois do between
Acesso sequencial indexado Muito utilizado no MySQL Estrutura ISAM é completamente estática Operacoes de inserção, exclusão e pesquisa sao bastante diretas Para uma consulta por intervalo,o ponto inicial é semelhante, mas as paginas de dados são recuperadas sequencialmente
Páginas em nivel de indices nunca sao modificadas Assim, as paginas de indice nunca sao modificadas, a etapa de bloqueio pode ser omitida Nao bloquear paginas em nivel de indice é uma vantagem importante sobre arvore B+ Se a distribuicao e o tamanho forem relativamente estáticos, ISAM é preferível que a arvore B+
Problemas quando o arquivo cresce Desempenho ruim Assim, arvores B+ sao melhores As inserçoes sao manipuladas harmoniosamente