Archivos Balanceados 2

Anuncio
07/09/2012
Organización B+
 Se diferencia de la B en que los registros
Organizaciones Balanceadas (2)
sólo se almacenan en los nodos hoja, que
están encadenados entre sí → Permite
recuperación secuencial
 Los nodos internos o índice, almacenan sólo
identificadores que sirven de guía para
llegar a las hojas → Conforman un índice B
a las hojas
Organización B+
Organizaciones B* y B#
1
ODD - Curso Servetto
FIUBA
2
Capacidades de elementos en nodos internos y hojas respect.: 4, 6
ODD - Curso Servetto
FIUBA
Primitivas B+
NODO 0: 2, 1; 8(41543) 7
Mismas primitivas que la organización B excepto la de
búsqueda, y una adicional de recuperación secuencial
NODO 8: 1, 3; 2(12853) 9(20173) 5(33810) 4
NODO 2: 0, 4; ( 951)( 2394)( 4963)( 7790) 9
La búsqueda es aproximada → si no se encuentra en una hoja el
registro con el identificador dado, devuelve el primer registro con
identificador mayor al buscado (por si se inicia recorrido secuencial)‫‏‬
Siguiente → Devuelve el siguiente registro a partir del último
accedido → Estrategias
Puede haber una primitiva para devolver el primer registro del
archivo
NODO 9: 0, 5; (12853)(12917)(13401)(18004)(18488) 5
NODO 5: 0, 6; (20173)(21373)(23548)(27906)(28195)(29084) 4
NODO 4: 0, 4; (33810)(34466)(39784)(39794) 1
NODO 7: 1, 2; 1(46396) 6(48442) 3
NODO 1: 0, 3; (41543)(44353)(45454) 6
NODO 6: 0, 3; (46396)(47165)(47405) 3
NODO 3: 0, 5; (48442)(49460)(50699)(58648)(64807) 0
3
ODD - Curso Servetto
FIUBA
4
1. Inserción del registro con clave 25000:
ODD - Curso Servetto
FIUBA
Se acomodan los registros en elnodo 5 y de devuelve al padre el registro central:
NODO 0: 2, 1; 8(41543) 7
NODO 0: 2, 1; 8(41543) 7
NODO 8: 1, 3; 2(12853) 9(20173) 5(33810) 4
NODO 8: 1, 3; 2(12853) 9(20173) 5(33810) 4
← (27906)
NODO 2: 0, 4; ( 951)( 2394)( 4963)( 7790) 9
NODO 2: 0, 4; ( 951)( 2394)( 4963)( 7790) 9
NODO 9: 0, 5; (12853)(12917)(13401)(18004)(18488) 5
NODO 9: 0, 5; (12853)(12917)(13401)(18004)(18488) 5
NODO 5: 0, 6; (20173)(21373)(23548)(27906)(28195)(29084) 4
NODO 5: 0, 6; (20173)(21373)(23548)(25000)(28195)(29084) 4
NODO 4: 0, 4; (33810)(34466)(39784)(39794) 1
NODO 4: 0, 4; (33810)(34466)(39784)(39794) 1
NODO 7: 1, 2; 1(46396) 6(48442) 3
NODO 7: 1, 2; 1(46396) 6(48442) 3
NODO 1: 0, 3; (41543)(44353)(45454) 6
NODO 1: 0, 3; (41543)(44353)(45454) 6
NODO 6: 0, 3; (46396)(47165)(47405) 3
NODO 6: 0, 3; (46396)(47165)(47405) 3
NODO 3: 0, 5; (48442)(49460)(50699)(58648)(64807) 0
NODO 3: 0, 5; (48442)(49460)(50699)(58648)(64807) 0
Sobreflujo en nodo 5.
5
ODD - Curso Servetto
FIUBA
6
ODD - Curso Servetto
FIUBA
1
07/09/2012
Desde el nodo 8 se dispone de un nodo nuevo (10) y se acomoda el registro que subió
primero, y luego la segunda mitad del nodo con sobreflujo, se graban los dos nodos y se
incorpora al nodo 8 un orientador:
Desde el nodo 0 se graba al nodo 8:
NODO 0: 2, 1; 8(41543) 7
NODO 0: 2, 1; 8(41543) 7
NODO 8: 1, 3; 2(12853) 9(20173) 5(27906) 10(33810) 4
NODO 8: 1, 3; 2(12853) 9(20173) 5(27906) 10(33810) 4
NODO 2: 0, 4; ( 951)( 2394)( 4963)( 7790) 9
NODO 2: 0, 4; ( 951)( 2394)( 4963)( 7790) 9
NODO 9: 0, 5; (12853)(12917)(13401)(18004)(18488) 5
NODO 9: 0, 5; (12853)(12917)(13401)(18004)(18488) 5
NODO 5: 0, 4; (20173)(21373)(23548)(25000) 10
NODO 5: 0, 4; (20173)(21373)(23548)(25000) 10
NODO 10: 0, 3; (27906)(28195)(29084) 4
NODO 10: 0, 3; (27906)(28195)(29084) 4
NODO 4: 0, 4; (33810)(34466)(39784)(39794) 1
NODO 4: 0, 4; (33810)(34466)(39784)(39794) 1
NODO 7: 1, 2; 1(46396) 6(48442) 3
NODO 7: 1, 2; 1(46396) 6(48442) 3
NODO 1: 0, 3; (41543)(44353)(45454) 6
NODO 1: 0, 3; (41543)(44353)(45454) 6
NODO 6: 0, 3; (46396)(47165)(47405) 3
NODO 6: 0, 3; (46396)(47165)(47405) 3
NODO 3: 0, 5; (48442)(49460)(50699)(58648)(64807) 0
7
ODD - Curso Servetto
NODO 3: 0, 5; (48442)(49460)(50699)(58648)(64807) 0
FIUBA
8
ODD - Curso Servetto
Se termina sin necesidad de grabar la raíz, ya que noresultó modificada:
Supresión de registro con identificador 45454:
NODO 0: 2, 1; 8(41543) 7
NODO 0: 2, 1; 8(41543) 7
FIUBA
NODO 8: 1, 3; 2(12853) 9(20173) 5(27906) 10(33810) 4
NODO 8: 1, 3; 2(12853) 9(20173) 5(27906) 10(33810) 4
NODO 2: 0, 4; ( 951)( 2394)( 4963)( 7790) 9
NODO 2: 0, 4; ( 951)( 2394)( 4963)( 7790) 9
NODO 9: 0, 5; (12853)(12917)(13401)(18004)(18488) 5
NODO 9: 0, 5; (12853)(12917)(13401)(18004)(18488) 5
NODO 5: 0, 4; (20173)(21373)(23548)(25000) 10
NODO 5: 0, 4; (20173)(21373)(23548)(25000) 10
NODO 10: 0, 3; (27906)(28195)(29084) 4
NODO 10: 0, 3; (27906)(28195)(29084) 4
NODO 4: 0, 4; (33810)(34466)(39784)(39794) 1
NODO 4: 0, 4; (33810)(34466)(39784)(39794) 1
NODO 7: 1, 2; 1(46396) 6(48442) 3
NODO 7: 1, 2; 1(46396) 6(48442) 3
NODO 1: 0, 3; (41543)(44353)(45454) 6
NODO 1: 0, 3; (41543)(44353)(45454) 6
NODO 6: 0, 3; (46396)(47165)(47405) 3
NODO 6: 0, 3; (46396)(47165)(47405) 3
NODO 3: 0, 5; (48442)(49460)(50699)(58648)(64807) 0
Subflujo en nodo 1
NODO 3: 0, 5; (48442)(49460)(50699)(58648)(64807) 0
9
ODD - Curso Servetto
FIUBA
10
FIUBA
Desde el padre (nodo 7) se intenta balancear con hermano adyacente, y como no se
puede se fusionan y se libera al 6:
Desde el padre (nodo 0) se intenta balancear con hermano adyacente, y como se
puede, se balancean el 8 y el 7 y se graban:
NODO 0: 2, 1; 8(41543) 7
NODO 0: 2, 1; 8(33810) 7
NODO 8: 1, 3; 2(12853) 9(20173) 5(27906) 10(33810) 4
NODO 8: 1, 3; 2(12853) 9(20173) 5(27906) 10
NODO 2: 0, 4; ( 951)( 2394)( 4963)( 7790) 9
NODO 2: 0, 4; ( 951)( 2394)( 4963)( 7790) 9
NODO 9: 0, 5; (12853)(12917)(13401)(18004)(18488) 5
NODO 9: 0, 5; (12853)(12917)(13401)(18004)(18488) 5
NODO 5: 0, 4; (20173)(21373)(23548)(25000) 10
NODO 5: 0, 4; (20173)(21373)(23548)(25000) 10
NODO 10: 0, 3; (27906)(28195)(29084) 4
NODO 10: 0, 3; (27906)(28195)(29084) 4
NODO 4: 0, 4; (33810)(34466)(39784)(39794) 1
NODO 7: 1, 2; 4(41543) 1(48442) 3
NODO 7: 1, 2; 1(48442) 3 ← subflujo
11
ODD - Curso Servetto
NODO 4: 0, 4; (33810)(34466)(39784)(39794) 1
NODO 1: 0, 3; (41543)(44353)(46396)(47165)(47405) 3
NODO 1: 0, 3; (41543)(44353)(46396)(47165)(47405) 3
NODO 3: 0, 5; (48442)(49460)(50699)(58648)(64807) 0
NODO 3: 0, 5; (48442)(49460)(50699)(58648)(64807) 0
ODD - Curso Servetto
FIUBA
12
ODD - Curso Servetto
FIUBA
2
07/09/2012
Se termina grabando la raíz:
Archivos B vs Archivos B+
NODO 0: 2, 1; 8(33810) 7
Ventajas de la Organización B sobre la B+
NODO 8: 1, 3; 2(12853) 9(20173) 5(27906) 10
Puede requerir menos nodos que un B+ para cargar los
mismos datos (no tiene redundancia de
identificadores).
Algunos datos se pueden encontrar antes de llegar a una
hoja.
NODO 2: 0, 4; ( 951)( 2394)( 4963)( 7790) 9
NODO 9: 0, 5; (12853)(12917)(13401)(18004)(18488) 5
NODO 5: 0, 4; (20173)(21373)(23548)(25000) 10
NODO 10: 0, 3; (27906)(28195)(29084) 4
Desventajas de la organización B
NODO 7: 1, 2; 4(41543) 1(48442) 3
Sólo una pequeña proporción de datos se puede
encontrar tempranamente.
Si los datos son grandes, los nodos internos tienen pocos
hijos y el árbol es alto.
NODO 4: 0, 4; (33810)(34466)(39784)(39794) 1
NODO 1: 0, 3; (41543)(44353)(46396)(47165)(47405) 3
NODO 3: 0, 5; (48442)(49460)(50699)(58648)(64807) 0
13
ODD - Curso Servetto
FIUBA
14
 Capacidades de elementos en nodos internos y hojas respect.: 4, 7
Son variantes de las organizaciones B y B+ con primitivas
de inserción y supresión modificadas de manera que
garanticen que todos los nodos del árbol excepto el raíz
tengan ocupada más de dos tercios de su capacidad
 Capacidad de la raíz
 Interna: (4 * 4) div 3 = 5
 Hoja: (4 * 7) div 3 = 9. Se usan los nodos 0 y 1 para almacenar la raíz.
 Carga mínima de nodos
Altas: cuando un nodo queda con sobreflujo, se trata de balancear
con un hermano adyacente, y si no se puede porque el hermano
está completo, se agrega un nodo nuevo entre medio y se
balancea la carga de los dos originales entre tres (quedan con
2/3 de su capacidad ocupada)
Bajas: cuando un nodo queda con subflujo y no se puede balancear
con un hermano adyacente porque éste tiene carga mínima, se
intenta balancear con otro hermano, y si tampoco se puede se
libera uno de ellos y se distribuye su carga entre los otros dos,
que quedan completos
ODD - Curso Servetto
FIUBA
 Internos: (4 * 2) div 3 = 2
 Hojas: (7 * 2) div 3 = 4
NODO 0-1: 2( 483) 3( 587) 5( 844) 4
NODO 2: ( 1)( 74)( 154)( 157)( 280)( 360)( 473)
NODO 3: ( 491)( 508)( 521)( 541)( 543)( 549)( 573)
NODO 5: ( 668)( 687)( 817)( 832)
NODO 4: ( 879)( 885)( 906)( 941)( 955)( 976)( 981)
16
NODO 0-1: 2( 483) 3( 587) 5( 885) 4
NODO 2: ( 1)( 74)( 154)( 157)( 280)( 360)( 473)
NODO 3: ( 491)( 508)( 521)( 541)( 543)( 549)( 573)
NODO 5: ( 668)( 687)( 817)( 832)( 844)( 879)
NODO 4: ( 900)( 906)( 941)( 955)( 976)( 981)
ODD - Curso Servetto
ODD - Curso Servetto
FIUBA
Alta 100
Sobreflujo en nodo 2; como el hermano derecho está lleno se agrega
un nodo y se distribuye la carga de ambos entre 3: 14 div 3 = 4;
como 14 mod 3 = 2, se va cargando los hermanos con un elemento
más de izq. a der. hasta repartir el resto (5-5-4)
Lecturas: 0, 2
Escrituras: 2, 6, 0, 1
Alta 900
Sobreflujo en nodo 4; como no hay hermano derecho se balancea
con el izquierdo: (4 + 7 + 1) div 2 = 6
Lecturas: 0, 4, 5
Escrituras: 5, 4, 0
17
FIUBA
Ejemplo B*
Organizaciones B* y B#
15
ODD - Curso Servetto
NODO 0-1: 2( 280) 6( 521) 3( 587) 5( 885) 4
NODO 2: ( 1)( 74)( 100)( 154)( 157)
NODO 6: ( 360)( 473)( 483)( 491)( 508)
NODO 3: ( 541)( 543)( 549)( 573)
NODO 5: ( 668)( 687)( 817)( 832)( 844)( 879)
NODO 4: ( 900)( 906)( 941)( 955)( 976)( 981)
FIUBA
18
ODD - Curso Servetto
FIUBA
3
07/09/2012
Altas 600 y 700
Sobreflujo en nodo 5 al incorporar el 700; se balancea con hermano
derecho: (7 + 6 + 1 ) div 2 = 7
Lecturas 600: 0, 1, 5
Escrituras 600: 5
Lecturas 700: 0, 1, 5, 4 (p/balanceo)
Escrituras 700: 5, 4, 1
Alta 759
Sobreflujo en nodo 5; como no se puede balancear con hermano
derecho porque está lleno, se agrega un nodo nuevo; la raíz no se
parte porque su capacidad máxima como nodo interno es 5
Lecturas: 0, 1, 5, 4
Escrituras: 5, 7, 4, 1
NODO 0-1: 2( 280) 6( 521) 3( 587) 5( 817) 7( 906) 4
NODO 2: ( 1)( 74)( 100)( 154)( 157)
NODO 6: ( 360)( 473)( 483)( 491)( 508)
NODO 3: ( 541)( 543)( 549)( 573)
NODO 5: ( 600)( 668)( 687)( 700)( 759)
NODO 7: ( 832)( 844)( 879)( 885)( 900)
NODO 4: ( 941)( 955)( 976)( 981)
NODO 0-1: 2( 280) 6( 521) 3( 587) 5( 879) 4
NODO 2: ( 1)( 74)( 100)( 154)( 157)
NODO 6: ( 360)( 473)( 483)( 491)( 508)
NODO 3: ( 541)( 543)( 549)( 573)
NODO 5: ( 600)( 668)( 687)( 700)( 817)( 832)( 844)
NODO 4: ( 885)( 900)( 906)( 941)( 955)( 976)( 981)
19
21
ODD - Curso Servetto
FIUBA
20
ODD - Curso Servetto
FIUBA
Baja 521
Como el elemento está en un nodo interno, se debe sustituir por el
siguiente, que está siempre en una hoja, en este caso el nodo 3, que
queda con subflujo y debe balancearse con su hermano derecho, el
5
Lecturas: 0, 3, 5 (p/balanceo)
Escrituras: 3, 5, 0
Baja 573
Subflujo en el nodo 3; se intenta balancear el nodo 3 con su hermano
derecho (5), pero como tiene carga mínima no se puede, entonces
se intenta con el izquierdo (6)
Lecturas: 0, 3, 5, 6
Escrituras: 6, 3, 0
NODO 0-1: 2( 280) 6( 541) 3( 600) 5( 817) 7( 906) 4
NODO 2: ( 1)( 74)( 100)( 154)( 157)
NODO 6: ( 360)( 473)( 483)( 491)( 508)
NODO 3: ( 543)( 549)( 573)( 587)
NODO 5: ( 668)( 687)( 700)( 759)
NODO 7: ( 832)( 844)( 879)( 885)( 900)
NODO 4: ( 941)( 955)( 976)( 981)
NODO 0-1: 2( 280) 6( 508) 3( 600) 5( 817) 7( 906) 4
NODO 2: ( 1)( 74)( 100)( 154)( 157)
NODO 6: ( 360)( 473)( 483)( 491)
NODO 3: ( 541)( 543)( 549)( 587)
NODO 5: ( 668)( 687)( 700)( 759)
NODO 7: ( 832)( 844)( 879)( 885)( 900)
NODO 3: ( 941)( 955)( 976)( 981)
ODD - Curso Servetto
FIUBA
22
Baja 549
Subflujo en nodo 3; no se puede balancear con hno. derecho ni con hno.
izquierdo, entonces se divide el contenido del 3 entre sus hermanos
quedando (4 + 1 + 3 + 4) div 2 = 6 elementos en cada uno, y se libera el 3
Lecturas: 0, 3, 5, 6
Escrituras: 6, 5, 0, 1
ODD - Curso Servetto
FIUBA
Archivos B y B+ vs Archivos B* y B*
Ventajas de B* y B# respecto de B y B+
Al tener mayor densidad de carga resultan de
menor altura y por lo tanto implican menor
costo de lecturas para búsquedas
NODO 0-1: 2( 280) 6( 543) 5( 817) 7( 906) 4
NODO 2: ( 1)( 74)( 100)( 154)( 157)
NODO 6: ( 360)( 473)( 483)( 491)( 508)( 541)
NODO 5: ( 587)( 600)( 668)( 687)( 700)( 759)
NODO 7: ( 832)( 844)( 879)( 885)( 900)
NODO 4: ( 941)( 955)( 976)( 981)
Desventajas de B* y B# respecto de B y B+
Las inserciones y supresiones resultan más
costosas en lecturas y escrituras
Nodos libres: 3
23
ODD - Curso Servetto
FIUBA
24
ODD - Curso Servetto
FIUBA
4
Descargar