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

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

Bulk Loading – Algoritmo AULA 12 - COMPLEMENTO Profa. Sandra de Amo GBC053 – BCC 2013-1 Sandra de Amo.

Apresentações semelhantes


Apresentação em tema: "Bulk Loading – Algoritmo AULA 12 - COMPLEMENTO Profa. Sandra de Amo GBC053 – BCC 2013-1 Sandra de Amo."— Transcrição da apresentação:

1 Bulk Loading – Algoritmo AULA 12 - COMPLEMENTO Profa. Sandra de Amo GBC053 – BCC 2013-1 Sandra de Amo

2 Método – Carregamento em Massa Dados de entrada: Relação R(A 1,...,A n ) Chave = A i1,...,A ik –Ordena-se a relação R pelos atributos da chave –Constrói-se o arquivo de índice I com registros (chave,rid) –Executa rotina Constroi_BTree(I,d,k,x), que retorna uma estrutura de BTree B de ordem d, contendo nas folhas o arquivo de índice I, e o número N de níveis da BTree B construída. (O número N é importante para construir depois a rotina de busca na b-tree B) Dados de saída: N = número de níveis da Btree B =, onde cada B i = sequência de páginas do nível i da Btree

3 Método – Carregamento em Massa Observações: –No carregamento em massa, a b-tree B retornada pela rotina Constroi_BTree(I,d,k,x), respeita as restrições de ocupação máxima e mínima exceto nos últimos nós de cada nível. A ocupação de tais nós pode ser qualquer número de registros entre 1 e 2d. –Quando a b-tree começar a ser utilizada e sofrer modificações (inserções e deleções), ela tenderá a ter seus nós extremos (em cada nível) respeitando as condições de ocupação mínima e máxima.

4 Os parâmetros de Constroi_BTree I = arquivo de indice ordenado d = ocupação mínima (ordem da b-tree) 0 k d = o quanto a mais queremos de ocupação inicial nas folhas (as folhas serão construídas com ocupação = d + k), exceto pela última folha, que terá ocupação entre 1 e 2d. 0 x d - 1 = o quanto a mais queremos de ocupação inicial nos nós intermediários (os nós serão construídos com ocupação = d + x), exceto nos últimos nós de cada nível que terão ocupação entre 1 e 2d

5 Exemplo: Entrada: Arquivo de indice de 9 páginas com 4 registros em cada uma. d = 2, k = 0, x = 1 Saída: (3, ) B0 = 18 páginas (folhas em amarelo) contendo 2 (= d + k) registros em cada uma B1 = Nível 1 da Btree = 5 páginas (azuis) de 3 (= d + x) registros cada (exceto a última) B2 = Nível 2 da Btree (raiz) = 1 página com 4 registros

6 Exemplo: Entrada: Arquivo de indice de 9 páginas com 4 registros em cada uma. d = 2, k = 0, x = 1 Saída: (3, ) B0 = 18 páginas (folhas em amarelo) contendo 2 (= d + k) registros em cada uma B1 = Nível 1 da Btree = 5 páginas (azuis) de 3 (= d + x) registros cada (exceto a última) B2 = Nível 2 da Btree (raiz) = 1 página com 4 registros

7 Método Controi_Btree 1.Reestrutura(I,d,k): transforma arquivo I em um arquivo cujas páginas (P 1, P 2,..., P m ) têm no máximo d+k registros. A ordem dos registros é a mesma do arquivo I original. 2.M = número de páginas do arquivo de índice reestruturado 3.Ult_Nivel := 0 4.Para i = 2,..., M 1.C = primeiro registro de P i 2.Insere(C,1,x,d,P i-1,P i ) 3.Retorna (Ult_Nivel, Btree) Atenção: Ult_Nível = número de níveis da Btree retornada (variável global)

8 Insere(Chave,Nivel,d,x,PgE,PgD) Insere(C,N,d,x,PgE,PgD) Input: C = chave, N = nivel da inserção, d = ocupação mínima, x = qte a mais, PgE = página do nivel N-1 (abaixo de N), à esquerda de C, PgD = página do nível N- 1(abaixo de N), à direita de C. 1.Verifica se existe algum nó no nível N 2.Se não existir: 1.constrói primeiro nó No_1 no nível N 2.Incrementa Ult_Nivel 3.Insere ponteiro Pt1 em No_1 apontando para PgE 4.Insere C em No_1 após Pt1 5.Insere ponteiro Pt2 em No_1 após C apontando para PgD 3.Se existir: 1.No_Final = último nó do nível N 2.y = ocupação de No_Final 3.Se y d + x 1.Insere C na última posição de No_Final 2.Insere ponteiro Pt à direita de C apontando para PgD

9 Cont. 4. Se y = d + x + 1 1.Pt = último ponteiro de No_Final 2.Ult_chave = última chave de No_Final 3.Cria novo nó No_New à direita de No_Final no nível N 4.Remove Pt de No_Final e insere em No_New 5.Remove chave Ult_chave de No_Final 6.Insere C em No_New logo após Pt 7.Insere ponteiro Pt_New em No_New logo após C, apontando para PgD 8.Insere(Ult_chave, N+1,x,d,No_Final, No_New)

10 Exemplo: Entrada: Arquivo de indice de 9 páginas com 4 registros em cada uma. d = 2, k = 0, x = 1 Saída: (3, ) B0 = 18 páginas (folhas em amarelo) contendo 2 (= d + k) registros em cada uma B1 = Nível 1 da Btree = 5 páginas (azuis) de 3 (= d + x) registros cada (exceto a última) B2 = Nível 2 da Btree (raiz) = 1 página com 4 registros


Carregar ppt "Bulk Loading – Algoritmo AULA 12 - COMPLEMENTO Profa. Sandra de Amo GBC053 – BCC 2013-1 Sandra de Amo."

Apresentações semelhantes


Anúncios Google