Bbdd arboles

10
Alberto González Vicente Ejercicios B y B+

Transcript of Bbdd arboles

Page 1: Bbdd arboles

Alberto González VicenteEjercicios B y B+

Page 2: Bbdd arboles

Arboles B+tree

• Posibilidad de duplicidad

• Nodos homogéneos

• En los nodos hoja, tenemos los datos

• Niveles +1 si denso y clave, +x si denso y no clave

• Búsqueda más rápida, inserción más costosa

Page 3: Bbdd arboles

Estructura de árbol

“tierra”

Page 4: Bbdd arboles

Cálculo de nodos hijos Suponemos que el nodo = 3

Nos dan el número de registros que queremos conseguir, en este caso 2478 registros.

TIPO NODO3 punteros

2 valores

Si necesitamos 2478 registros y cada nodo acepta 2 valores, por tanto necesitamos:

𝒏𝒐𝒅𝒐𝒔 =2478

2= 𝟏𝟐𝟑𝟗

Necesitamos 1239 nodos para representar los 2478 registros. 1239 NODOS HIJOS, pero ¿y el anterior nivel?

1239 nodos hijos

Como tenemos 3 punteros por cada nodo, podemos referir 3 nodos hijos, por tanto para saber cuantos padres necesitamos basta con dividir entre 3.

𝒏𝒐𝒅𝒐𝐴𝑛𝑡𝑁𝑖𝑣𝑒𝑙 =1239

3= 𝟒𝟏𝟑 413 nodos

Continuamos hasta llegar a la raíz

138 nodos

46 nodos

2 nodo

16 nodos

6 nodos

RAIZ

Page 5: Bbdd arboles

Problema tamaños de puntero y nodos

Se trata de calcular los punteros, los nodos hojas o cualquier propiedad de los árboles. 2 fórmulas para lo B+

FORMULA PARA NODOS (no hojas)

FORMULA PARA NODOS

𝑝𝑛𝑜𝑑𝑜𝑠 ∗ 𝑃𝑏 + 𝑝𝑛𝑜𝑑𝑜𝑠 − 1 ∗ 𝑉 ≤ TamBloque

𝑃ℎ𝑜𝑗𝑎 ∗ 𝑃𝑟 + 𝑉 + 𝑃𝑏 ≤ TamBloque

B = Tamaño de bloque

Pr = Tamaño puntero a datos

Pb = Tamaño puntero a bloque

V = Clave ordenación

Page 6: Bbdd arboles

Ejemplo

B = Tamaño de bloque = 512 bytes

Pr = Tam puntero a datos = 7 bytes

Pb = Tam puntero a bloque = 6 bytes

V = Clave ordenación = 9 bytes

NODOS (nodos intermedios)

NODOS hoja

𝑝𝑛𝑜𝑑𝑜𝑠 ∗ 𝑃𝑏 + 𝑝𝑛𝑜𝑑𝑜𝑠 − 1 ∗ 𝑉 ≤ TamBloque

𝑃ℎ𝑜𝑗𝑎 ∗ 𝑃𝑟 + 𝑉 + 𝑃𝑏 ≤ TamBloque

𝑝𝑛𝑜𝑑𝑜𝑠 ∗ 6 + 𝑝𝑛𝑜𝑑𝑜𝑠 − 1 ∗ 9 ≤ 512

𝑝𝑛𝑜𝑑𝑜𝑠 ≤ 34,73 𝑝𝑛𝑜𝑑𝑜𝑠 = 34

𝑃ℎ𝑜𝑗𝑎 ∗ 7 + 9 + 6 ≤ 512

𝑃ℎ𝑜𝑗𝑎 = 31

Page 7: Bbdd arboles

¿ Y si existe factor de bloqueo?El factor de bloqueo es el número de registros que pueden ser almacenados en un bloque.Supongamos que continua el problema anterior, si proponemos un factor de bloqueo del 69%, ¿como afectaría a nuestro diseño?

𝒑𝒖𝒏𝒕𝒆𝒓𝒐𝒔𝑻𝒐𝒕𝒂𝒍𝒆𝒔 =𝑃𝑛𝑜𝑑𝑜𝐼𝑛𝑡𝑒𝑟𝑚𝑒𝑑𝑖𝑜 ∗ 69

100= 𝟐𝟑

Por tanto el diseño del árbol sería asi:

Raíz 1 nodo22 entradas

(punterosTot -1)23 punteros

Nivel1 23 nodos 22*23 entradas 23*23 punteros

Nivel2 23*23 nodos 22*23*23 entradas 23*23*23 punteros

Nivel3 23*23*23 nodos 22*23*23*23 entradas 23*23*23*23 punteros

Page 8: Bbdd arboles

Arboles B

• Todos los niveles son iguales

P1 K1 Pr1 P2 K2 Pr2 P3 K3 Pr3 … Pn Kn Prn …

XY

ZK1 < Y < k3

Datos Datos Datos

Pn = Puntero a árbol n

Kn = Clave

Prn = Puntero a datos n

X < k1

Page 9: Bbdd arboles

Calculo de nodos

A diferencia de los árboles B+ , no es necesaria la utilización de dos fórmulas, ya que los nodos son todos IGUALES

𝑝𝑛𝑜𝑑𝑜𝑠 ∗ 𝑃𝑏 + 𝑝𝑛𝑜𝑑𝑜𝑠 − 1 ∗ (Pr+𝑉) ≤ TamBloque

Page 10: Bbdd arboles

Ejemplo

B = Tamaño de bloque = 512 bytes

Pr = Tam puntero a datos = 7 bytes

Pb = Tam puntero a bloque = 6 bytes

V = Clave ordenación = 9 bytes

𝑝𝑛𝑜𝑑𝑜𝑠 ∗ 𝑃𝑏 + 𝑝𝑛𝑜𝑑𝑜𝑠 − 1 ∗ (Pr+𝑉) ≤ TamBloque

𝑝𝑛𝑜𝑑𝑜𝑠 ∗ 6 + 𝑝𝑛𝑜𝑑𝑜𝑠 − 1 ∗ (7+9) ≤ 512

22𝑝𝑛𝑜𝑑𝑜𝑠 ≤ 528 Pnodos = 24

Capacidad de relleno = 69%

𝑝 ∗ 0,69 = 16

1 nodo Raiz 15 entradas 16 punteros

16 nodos 2 nivel 16 * 15 entradas 16*16 punteros

16*16 nodos 3 nivel 16*16*15 entradas 16*16*16 punteros

16*16*16 4 nivel 16*16*16*15 entradas 16*16*16*16 punteros