Bbdd arboles
-
Upload
alberto-gonzalez -
Category
Engineering
-
view
102 -
download
6
Transcript of Bbdd arboles
Alberto González VicenteEjercicios B y B+
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
Estructura de árbol
“tierra”
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
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
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
¿ 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
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
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
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