230 likes | 365 Views
Método de Acesso Indexado Sequencial (ISAM). AULA 11 Profa. Sandra de Amo GBC053 – BCC. Dados e Indices. Dados armazenados em arquivo de dados <a 1 ,a 2 , … , k ,…, a n > + rid Rid = (página i, slot j) – permite localizar o registro no disco Arquivos de indice estruturados em árvore
E N D
Método de Acesso Indexado Sequencial (ISAM) AULA 11 Profa. Sandra de Amo GBC053 – BCC
Dados e Indices • Dados armazenados em arquivo de dados • <a1,a2, … , k,…, an> + rid Rid = (página i, slot j) – permite localizar o registro no disco • Arquivos de indice estruturados em árvore • Folhas : < k, (i,j) > • Contém os registros do arquivo de indices • Nós intermediários : <chave, pagId> • Contém registros que permitem chegar rápido na folha desejada • Objetivo : melhorar a busca de registros
Dados e Indices • Inserção e deleções são feitas no arquivo de dados • A cada inserção ou deleção de um registro de dados, a estrutura do arquivo de indices deve ser ajustada. • O ajuste implica em inserção ou deleção de entradas (registros) no arquivo de indice mantendo a ordem do arquivo. • Como gerenciar inserções e deleções num arquivo de indice de modo a manter, de forma eficiente, o arquivo de indices sempre ordenado ? • Não queremos propagar « shifts » pelas páginas do arquivo de indice até o final do arquivo, a cada inserção ou deleção ! • A idéia é só executar « shifts » em poucas páginas !
ISAM - Motivação Quais os empregados com salário > 2000 ? Busca binária no arquivo de índice até encontrar o primeiro salário > 2000 Escaneia o arquivo de índice a partir deste ponto e lê os registros correspondentes. Se o arquivo de índice é muito grande : busca binária pode ser dispendiosa.
Idéia Criar um segundo arquivo com um registro para cada página do arquivo de indice original • <primeira chave da página, ponteiro da página> • Ordenado por chave
Como são os nós internos da estrutura ISAM ? Pi = ponteiros que apontam para um núm. de página no nível imediatamente inferior Ki = valor do atributo chave do índice. Exemplo: se o atributo chave é idade então Ki é um valor de idade. P1 P2 P0 K1 K2 K3 ... Pi Ki+1 Pi+1 ... Km Pm K ≥ Ki+1 K < Ki+1 Valores K da chave nesta página são < Ki+1 Valores K da chave nesta página são ≥ Ki+1
Idéia • Se quero buscar empregado com status > 7: • Não é preciso fazer busca binária nas páginas do arquivo de indice • Faz-se a busca binária no segundo arquivo, que é bem menor do que o primeiro arquivo 14 2* 5* 7* 12* 14* 17* 19* 22*
Idéia (continuação) • Segundo arquivo menor que arquivo original • Busca binária no segundo arquivo mais rápida • Se segundo arquivo não cabe numa página • Repetir o processo : cria-se um terceiro arquivo com um registro para cada página do segundo arquivo • … Raiz cabe numa página
Organização do índice em árvore Páginas auxiliares que permitem chegar rapidamente a uma folha Páginas do arquivo de índice Páginas do Arquivo de Dados
Alocação de Páginas em ISAM • Páginas primárias do índice: são as folhas • Contém os registros do arquivo de índice • Páginas de overflow : contém os registros do arquivo de índice que não cabem na página onde deveriam ser inseridos
Discussão • ISAM é uma estrutura estática • Na criação do arquivo • Páginas primárias (folhas) são alocadas • 20% de cada página é livre para posteriores inserções, tentando “adiar” ao máximo a criação de páginas de overflow • Páginas intermediárias são criadas. • Manutenção : • Páginas de overflow são alocadas à medida que as páginas primárias do índice ficam cheias em decorrência de inserções.
Esquema Geral do Método ISAM Páginas dos arquivos de indices (a partir da 2a camada) Páginas primárias – as entradas do arquivo de índice da primeira camada Páginas de overflow
Busca na estrutura ISAM Exemplo: Busca da chave 27 Em cada nível INTERNO da estrutura, os dados contidos nas páginas são : P0,K1,P1,K2,...,Km,Pm m chaves e m+1 ponteiros • Se 27 < K1: transfere a busca para a página apontada por P0 • Se 27 ≥ Km: transfere a busca para a página apontada por Pm • Caso contrário: busca binária na página para encontrar chaves K1, K2 tais que Ki ≤ 27 < Ki+1 • Transfere a busca para a página apontada por Pi
Exemplo: Busca de um registro de dados Busca da chave 27 Raiz 40 51 63 20 33 10* 15* 20* 27* 33* 37* 40* 46* 51* 55* 63* 97*
Inserção de um registro Inserção de 23*, 48*,41*,42* Raiz 40 51 63 20 33 10* 15* 20* 27* 33* 37* 40* 46* 51* 55* 63* 97* 23* 48* 41* Página de Overflow 42*
Deleção de um registro Deleção de 42*, 51*,97* Procura 51* Raiz Nunca são alteradas !! 40 51 63 20 33 55* 10* 15* 20* 27* 33* 37* 40* 46* 51* 63* 97* 23* 48* 41* Pagina de Overflow 42*
Discussão • Se um registro é removido de uma página de overflow e a página ficar vazia, a página é “removida” – retira-se o ponteiro que apontava para ela. • Se um registro é removido de uma página primária e a página ficar vazia: • ela fica do jeito como está: não é “removida” • eventuais registros contidos em páginas de overflow não são transferidos para páginas primárias vazias ! • estratégia mais simples, • evita perder muito tempo na manutenção do índice • dados que fossem transferidos para a página primária deveriam ser ordenados, o que demandaria tempo.
Custoparachegaremumafolha • Número de I/O = número de níveis da árvore • Capacidade de cada página = F = número de ponteiros saindo de cada página • Total de páginas primárias = N • Número de níveis = logF N • Logo Custo I/O para chegar em uma folha = logF N
Comparação de Custos Custo de uma busca A = a • Arquivo de 1 000 000 registros • 10 registros por página de dados : total de páginas = 100 000 • 100 ponteiros em cada página de índice (99 entradas (chave,pt) + ponteiro P0) • Arquivo não ordenado por A • Scan = 1000 000/10 = 100000I/0 • Arquivo ordenado por A • Busca binária = log2 100000 = 17 I/0 • Arquivo estruturado usando método ISAM • Arquivo de indice usa alternativa 1 (registro do indice = registro de dados) • Custo = log100 100000 = entre 2 e 3 I/0, pois 1002 < 100000 < 1003
Vantagens de ISAM • ISAM é estático : • inserções e deleções afetam somente as folhas. • Nós internos não sofrem modificações após uma inserção ou deleção de registros do indice. • Logo, páginas internas podem ser manipuladas por outras transações sem problemas de bloqueios, já que nunca são alteradas.
Desvantagens de ISAM • Possibilidade de cadeias de páginas overflow • Páginas overflow geralmente não são ordenadas, a fim de agilizar inserções. • Para aliviar este problema : • Árvore é criada com 20% de cada folha livre • Entretanto, uma vez preenchido este espaço, cadeias de overflow só podem ser eliminadas através de uma total reorganização da estrutura.