A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Acesso Sequencial Indexado

Apresentações semelhantes


Apresentação em tema: "Acesso Sequencial Indexado"— Transcrição da apresentação:

1 Acesso Sequencial Indexado
Objetivo: Considerar de forma unificada as seguintes visões sobre estruturas de acesso a arquivos: Visão indexada: o arquivo é visto como um conjunto de registros indexados por chaves. Visão sequencial: o arquivo pode ser acessado sequencialmente, gerando registros ordenados por chaves.

2 Operações cosequenciais + operações indexadas
Exemplo: Operações cosequenciais operações indexadas ler um arquivo “inteiro” (menos seek) para, por exemplo, ordená-lo ler cada chave para acessar os registros Acesso Sequencial Indexado

3 Conjuntos de sequência de registros
Objetivo: manter dinamicamente um conjunto de registros ordenados por chaves no disco Problema: ordenação do arquivo em disco é “cara”! Solução: organizar os registros em blocos  operações locais um bloco se torna a menor unidade endereçável nas operações de leitura e escrita no disco (é carregado todo na RAM).

4 Exemplo: Chaves = nomes 4 nomes/bloco (fator de bloco) Chaves: Adams
Baird Bixby Boone Bynum Carson Cole Davis Denver Ellis

5 Adams Baird Bixby Boone
bloco 1 Adams Baird Bixby Boone bloco 2 Bynum Carson Cole Davis bloco 3 Denver Ellis Introduzir Carter : bloco 1 bloco 1 Adams Baird Bixby Boone bloco 2 bloco 2 bloco 2 subdivisão (split) de bloco Bynum Carson Carter bloco 3 bloco 3 Denver Ellis bloco 4 Cole Davis

6 Adams Baird Bixby Boone
Eliminar Davis : bloco 1 bloco 1 Adams Baird Bixby Boone bloco 2 bloco 2 bloco 2 Bynum Carson Carter bloco 3 bloco 3 Denver Ellis bloco 4 Cole underflow

7 Adams Baird Bixby Boone
Eliminar Davis : bloco 1 bloco 1 Adams Baird Bixby Boone bloco 2 bloco 2 bloco 2 Bynum Carson Carter bloco 3 bloco 3 disponível bloco 4 Cole Denver Ellis concatenação Conclusão: o arquivo inteiro pode ser mantido ordenado apenas pela ordenação de suas partes (blocos).

8 A ordenação do arquivo pode exigir mais espaço em disco por
Problemas: A ordenação do arquivo pode exigir mais espaço em disco por conta de fragmentações internas. Neste caso, pode-se adotar estratégias que privilegiem a redistribuição de chaves. A ordem física dos registros só é garantida ao longo de um bloco e não entre-blocos. Qual deve ser o tamanho de um bloco? Deve representar um compromisso entre tempo de acesso, memória RAM (buffer) disponível e as operações a serem executadas. O tamanho do bloco deve permitir o armazenamento de vários destes na memória. O tempo de leitura e escrita de um bloco não deve ser muito longo (para não perder o que se ganhou economizando-se em seeks).

9 Sequência de registros e indexação
Objetivo: definir um método eficiente que possibilite o acesso a um bloco contendo uma chave (ou registro) procurada. Ideia: construir um índice de chaves (a partir do último registro de cada bloco, por exemplo), apontando para cada um destes blocos. Sequência de blocos: Adams-Berne Bolen-Cage Camp-Dutton Embry-Evans Faber-Folk Folks-Gaddis 1 2 3 4 5 6

10 Adams-Berne Bolen-Cage Camp-Dutton Embry-Evans Faber-Folk Folks-Gaddis 1 2 3 4 5 6 Chave Número do Bloco Berne 1 Cage 2 Dutton 3 Evans 4 Folk 5 Gaddis 6 Índices da sequência de blocos

11 Chaves delimitadoras Os índices servem apenas de guia na busca do bloco que contém a chave a ser acessada  delimitadores Menor delimitador possível (não-único)  economia de espaço (neste caso, teremos uma árvore B+ de prefixo simples) Delimitadores de blocos BO CAM E F FOLKS Adams-Berne Bolen-Cage Camp-Dutton Embry-Evans Faber-Folk Folks-Gaddis 1 2 3 4 5 6

12 Arquivo sequencial indexado e árvore B+ de prefixo simples
conjunto de índices BO CAM F FOLKS Adams-Berne Bolen-Cage Camp-Dutton Embry-Evans Faber-Folk Folks-Gaddis 1 2 3 4 5 6

13 A busca A partir dos índices na árvore B, podemos acessar um bloco da seguinte forma: Se chave procurada < delimitador, então vá para a esquerda na árvore se chave >= delimitador, então vá para a direita na árvore Lembrando: Árvore B+ de prefixo simples  os delimitadores são os menores possíveis na árvore B

14 Operações sobre árvores B+
Supressão de registros sem originar concatenação e redistribuição  alterações apenas nos blocos de registros; o conjunto de índices não é alterado Inserção sem subdivisão  idem E conjunto de índices BO CAM F FOLKS Adams-Berne Bolen-Cage Camp-Dutton Embry-Evans Faber-Folk Folks-Gaddis 1 2 3 4 5 6

15 Apagar Embry e Folks Adams-Berne Bolen-Cage Camp-Dutton Embry-Evans
Faber-Folk Folks-Gaddis 1 2 3 4 5 6 E BO CAM F FOLKS Adams-Berne Bolen-Cage Camp-Dutton Ervin-Evans Faber-Folk Frost-Gaddis 1 2 3 4 5 6

16 Inserção causando subdivisão  mudanças no número de blocos
de registros alteração no conjunto de índices através das regras aplicadas às árvores B. Supressão com redistribuição e/ou concatenação  idem

17 Inserir Ayers E BO CAM F FOLKS Adams-Berne Bolen-Cage Camp-Dutton Ervin-Evans Faber-Folk Frost-Gaddis 1 2 3 4 5 6 Ayers (causa subdivisão do bloco 1 com criação do bloco 7) BO E AY CAM F FOLKS Adams-Avery Ayers-Berne Bolen-Cage Camp-Dutton Ervin-Evans Faber-Folk Frost-Gaddis 1 7 2 3 4 5 6

18 Supressão com underflow  concatenação dos blocos de registros
BO E CAM AY F FOLKS Adams-Avery Ayers-Berne Bolen-Cage Camp-Dutton Ervin-Evans Faber-Folk Frost-Gaddis 1 7 2 3 4 5 6 remoções no bloco 2 causam underflow e subsequente concatenação com o bloco 3, o qual pode ser colocado numa avail list

19 2 7 concatenação 7 Adams-Avery Bolen-Cage Camp-Dutton Ervin-Evans
AY F FOLKS Adams-Avery Bolen-Cage Camp-Dutton Ervin-Evans Faber-Folk Frost-Gaddis 1 2 3 4 5 6 BO E Ayers-Berne 7 concatenação E AY BO F FOLKS Adams-Avery Ayers-Berne Bolen-Dutton Ervin-Evans Faber-Folk Frost-Gaddis 1 7 2 4 5 6

20 Assim: Se blocos de registros são subdivididos  um novo delimitador é necessário no conjunto de índices Se blocos são concatenados  um separador deve ser removido do conjunto de índices Se registros são redistribuídos entre blocos da sequência de registros  o delimitador no conjunto de índices deve ser atualizado

21 Blocos de Conjunto de Índices (delimitadores)
Os índices podem ser armazenados em blocos, tal como os registros (de mesmo tamanho dos blocos dos registros) Os delimitadores podem ser de tamanho variável  grande número de delimitadores em um bloco de índice  árvore menos profunda. Uma busca binária pode ser feita sobre estes delimitadores armazenados em RAM

22 Exemplo de estrutura de um bloco de índice
AsBsBroCChCraDeleEdlErrFaFle delimitadores concatenados NRR dos delimitadores Número de delimitadores Tamanho total dos delimitadores AsBsBroCChCraDeleEdlErrFaFle B00 B01 B02 B03 B04 B05 B06 B07 B08 B09 B10 B11 delimitadores NRR dos delimitadores Número relativo dos blocos

23 Nível conceitual: delimitadores NRR dos delimitadores
Número de delimitadores Tamanho total dos delimitadores AsBsBroCChCraDeleEdlErrFaFle B00 B01 B02 B03 B04 B05 B06 B07 B08 B09 B10 B11 delimitadores NRR dos delimitadores Número relativo dos blocos Nível conceitual: ordem dos delimitadores B00 As B01 Bs B02 Bro B03 C B04 Ch B05 Cra B06 Dele B07 Edi B08 Err B09 Fa B10 Fle B11

24 Criação sequencial da árvore B+
Problema: A criação aleatória da árvore ( com registros introduzidos não-ordenadamente à medida que chegam) envolve operações de subdivisão e redistribuição que são “caras”. Ideia: Ordenar o conjunto dos registros que comporão a árvore, armazenando-os sucessivamente nos blocos os registros são armazenados na ordem correta. Para cada bloco é definido o seu delimitador que, em seguida, é armazenado no bloco de índices (contido na memória até que o bloco esteja cheio)

25 Exemplo: ALWASPBET 00 03 06 Access-Also Always-Ask Aspect-Best
Better-Cast

26 Catch-Check bloco sem delimitadores! Access-Also Always-Ask
Novo bloco bloco sem delimitadores! CAT ALWASPBET Access-Also Always-Ask Aspect-Best Better-Cast Catch-Check

27 Class-Copy Better-Cast Novo bloco 00 -1 -1 CL 00 Access-Also
CAT CL ALWASPBET 00 Access-Also Better-Cast Always-Ask Aspect-Best Catch-Check Class-copy

28 Cost-Damage Better-Cast Novo bloco 00 -1 -1 CL COS 00 Access-Also
CAT CL COS 00 ALWASPBET Access-Also Better-Cast Always-Ask Aspect-Best Catch-Check Class-copy Cost-Damage

29 Delete-Dise Better-Cast Novo bloco 00 -1 -1 CL COS DE 00 Access-Also
CAT CL COS DE 00 ALWASPBET Access-Also Better-Cast Always-Ask Aspect-Best Delete-Dise Catch-Check Class-copy Cost-Damage

30 Drum-Editor Better-Cast Novo bloco 00 03 -1 DR CL COS DE 00 -1 -1 -1
CAT CL COS DE 00 ALWASPBET Access-Also Better-Cast Always-Ask Aspect-Best Delete-Dise Catch-Check Class-copy Cost-Damage Drum-Editor

31 Effort-Crow Better-Cast Novo bloco 00 03 -1 CL COS DE 00 EF 00 -1 -1
CAT DR CL COS DE 00 EF ALWASPBET Access-Also Better-Cast Always-Ask Aspect-Best Delete-Dise Catch-Check Class-copy Cost-Damage Effort-Crow Drum-Editor

32 Head-Ideal Better-Cast Novo bloco 00 03 -1 CL COS DE 00 EFH 00 02 -1
CAT DR CL COS DE 00 EFH ALWASPBET Access-Also Better-Cast Always-Ask Aspect-Best Delete-Dise Catch-Check Class-copy Cost-Damage Effort-Crow Head-Ideal Drum-Editor

33 Ignore-Item Better-Cast Novo bloco 00 03 -1 CL COS DE 00 EFHIG
CAT DR CL COS DE 00 EFHIG ALWASPBET Access-Also Better-Cast Always-Ask Aspect-Best Delete-Dise Catch-Check Class-copy Cost-Damage Effort-Crow Head-Ideal Ignore-Item Drum-Editor

34 Separadores Completos
ALWAYSASPECTBETTER Access-Also Always-Ask Aspect-Best Better-Cast

35 Referência: Addison-Wesley, 1992.
- Michael J. Folk e Bill Zoellick. File Structures, Second Edition, Addison-Wesley, 1992.


Carregar ppt "Acesso Sequencial Indexado"

Apresentações semelhantes


Anúncios Google