gestión de datos 2011 · Árboles b* 32 representan una variante sobre los árboles b, produciendo...

46
GESTIÓN DE DATOS 2012 - Clase 2 - 1

Upload: others

Post on 26-Mar-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

GESTIÓN DE DATOS 2012

- Clase 2 -

1

Page 2: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Búsqueda de información. Manejo

de índices

Cuando se realiza la búsqueda de un dato, se

deben considerar:

• La cantidad de accesos a disco en pos de

encontrarlo. Costo alto.

• La cantidad de comparaciones. Costo

relativamente bajo (despreciable).

2

Page 3: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Búsqueda de información. Manejo

de índices

El proceso de búsqueda implica un análisis de

situaciones en función del tipo de archivo sobre el

que se quiere buscar información:

• Archivo sin orden preestablecido (peor caso N

accesos).

• Archivo físicamente ordenado y el argumento

de búsqueda coincide con el criterio de

ordenación (peor caso N accesos).

• Archivo físicamente ordenado y registros de

longitud fija (peor caso log2 (N) + 1).

3

Page 4: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Búsqueda de información. Manejo

de índices

Supongamos ahora que tenemos el problema de encontrar libros en una biblioteca por autor, título o tema.

• Compramos 3 copias de cada libro y 3 edificios de biblioteca separados. Edificio1: libros ordenados por autor; edificio 2: libros ordenados por título, y Edificio 3: libros ordenados por tema (absurdo).

Supongamos que tenemos el problema de buscar un tema en un libro, ¿cómo lo resolvemos?

• Recorremos página por página.

• Utilizamos el índice temático.

4

Page 5: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Búsqueda de información. Manejo

de índices

Índice: Estructura de datos adicional que permite agilizar el acceso a la información almacenada en un archivo.

En el índice se almacenan las claves de los registros del archivo, junto con la referencia de acceso a cada registro asociado a la clave. Es necesario que las claves permanezcan ordenadas.

El índice es otro archivo con registros de longitud fija, independiente de la estructura del archivo original.

5

Page 6: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Búsqueda de información. Manejo

de índices

Un índice posibilita imponer un orden en un archivo

sin que realmente este se reacomode.

Índice, ¿cómo se genera y mantiene?

Índice primario: Creado a partir de la clave

primaria.

Trabajemos con el siguiente archivo de datos,

organizado con registros de longitud variable.

6

Page 7: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Búsqueda de información. Manejo

de índices

Dir. Reg. Cía. Código Título Grupo musical

compositor Interprete

15 WAR 23 Early Morning A-ha A-ha

36 SON 13 Just a Like a Corner Cock Robin Cock Robin

83 BMG 11 Selva La Portuaria La Portuaria

118 SON 15 Take on Me A-ha A-ha

161 VIR 2310 Land of Confusion Genesis Phil Colins

209 VIR 1323 Summer Moved On A-ha A-ha

248 AME 2323 Africa Toto Toto

275 RCA 1313 Leave of Ney York REM REM

313 ARI 2313 Here Come The Rain Aigan Eurythmics Anni lennox

7

Page 8: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Búsqueda de información. Manejo

de índices

Con los datos anteriores, formamos la clave

primaria con los atributos Cía + Código.

Al crearse el archivo, se creará el índice primario

asociado.

Veamos cómo queda armado en índice primario.

8

Page 9: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Búsqueda de información. Manejo

de índices

Clave Ref.

AME2323 248

ARI2313 313

BMG11 83

RCA1313 275

SON13 36

SON15 118

VIR1323 209

VIR2310 161

WAR23 15

9

Page 10: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Búsqueda de información. Manejo

de índices

Teniendo creado el índice primario, hay que

considerar las siguientes operaciones:

• Altas.

• Modificaciones.

• Bajas.

10

Page 11: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Búsqueda de información. Manejo

de índices

Retomando nuestro ejemplo, ¿cuántos de Uds.

buscarían al grupo musical de la canción “África”

por la clave primaria VIR1323?

No es natural ni intuitivo solicitar un dato por clave

primaria, sino por otros atributos (por ej. nombre de

canción o grupo musical). Estos atributos podrían

contener valores repetidos en el archivo original,

por lo tanto no pueden ser clave primaria.

11

Page 12: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Búsqueda de información. Manejo

de índices

Clave secundaria: Clave que soporta valores repetidos.

Es necesario crear otro tipo de índice para acceder a la información de un archivo, pero con datos fáciles de recordar.

Índice secundario: Estructura adicional que permite relacionar una clave secundaria con una o más claves primarias.

A continuación se presenta un índice secundario.

12

Page 13: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Búsqueda de información. Manejo

de índices

Clave Secundaria Clave primaria

A-ha SON15

A-ha VIR1323

A-ha WAR23

Cock Robin SON13

Eurythmics ARI2313

Genesis VIR2310

La Portuaria BMG11

REM RCA1313

Toto AME2323

13

Page 14: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Índices: Problemas

• Índices grandes -> memoria secundaria.

• Acceso a memoria secundaria -> lento.

• Búsqueda binaria -> demasiados desplaza-mientos.

En un índice de 1000 ítems se requieren, aproximadamente, 9.5 desplazamientos en promedio.

• Costo de mantener índice ordenado.

14

Búsqueda de información. Manejo

de índices

Page 15: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Árboles 15

Un árbol es una estructura que se caracteriza por

estar formada por una serie de nodos conectados

por una serie de aristas que verifican que:

• Hay un único nodo raíz.

• Cada nodo, excepto la raíz, tiene un único

padre.

• Hay un único camino (desde la raíz hasta cada

nodo).

Page 16: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Las estructuras tipo árbol presentan algunas

mejoras tanto para la búsqueda como para el

mantenimiento del orden de la información.

Los árboles binarios representan la alternativa más

simple.

Árbol binario: Estructura de datos dinámica no lineal,

en la cual cada nodo puede tener a lo sumo dos hijos.

Árboles 16

Page 17: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Árboles binarios 17

GT

KL HI CD AB ZR TR RX OP

MN

ST

UV PR JF BC

Page 18: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Búsqueda: La performance para buscar un

elemento es del orden log2 (N) accesos a disco,

siendo N la cantidad de nodos (elementos de

datos) que contiene el árbol.

Inserción: Se deben realizar log2 (N) lecturas,

necesarias para localizar al padre del nuevo

elemento, y dos operaciones de escritura.

Borrado: Deben realizarse log2 (N) lecturas para

localizar el dato a eliminar y luego dos escrituras.

Árboles binarios 18

Page 19: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Para poder utilizar un árbol como soporte de

índices de búsqueda, es necesario que se implanten

sobre almacenamiento secundario.

El registro contendrá tres campos: elemento,

hijo_izquierdo e hijo_derecho (sus valores indican el

NRR del hijo dentro del archivo).

Árboles binarios 19

Page 20: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

20

MN 1 2

GT 3 4

ST 8 11

BC 5 6

JF 7 14

AB -1 -1

CD -1 -1

HI -1 -1

PR 9 10

OP -1 -1

RX -1 -1

UV 12 13

TR -1 -1

ZR -1 -1

KL -1 -1

Raíz -> 0 Hijo Hijo

Clave Izq. Der.

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

Page 21: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

¿Qué sucedería si insertamos las claves NI, OC, OA

y NZ?

• La performance de búsqueda decae,

transformándose en orden lineal.

¿En qué situaciones un árbol binario resulta una

buena organización para un índice?

• La respuesta es cuando el árbol binario está

balanceado.

Árboles binarios 21

Page 22: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

AVL: Es un árbol binario de búsqueda balanceado en

altura, en el cual la máxima diferencia entre las alturas

de cualquiera de dos subárboles que tiene raíz común

no supera uno.

Para lograr el balanceo, los costos computacionales

de acceso a disco aumentan considerablemente,

por lo que su implantación deja de ser viable.

AVL 22

Page 23: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

¿Por qué quedarnos sólo con árboles binarios?

¿Cómo sería los árboles ternarios?

Árboles multicamino 23

34 95

99 95 60 76

85 90 40 95

10 30

15 95

Page 24: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Árbol multicamino: Estructura de datos en la cual cada

nodo puede contener k elementos y k+1 hijos.

Se define el concepto de orden de un árbol

multicamino como la cantidad de descendientes

directos posibles de un nodo.

El orden del árbol dependerá del tamaño de la

página y de los elementos que se coloquen en ella.

Aún queda latente el problema del balanceo.

Árboles multicamino 24

Page 25: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Los árboles B son árboles multicamino con una construcción especial que permite mantenerlos balanceados a bajo costo.

Un árbol B de orden M posee las siguientes propiedades:

1. Cada nodo del árbol puede contener, como máximo, M descendientes directos.

2. La raíz no posee descendientes directos o tiene al menos dos.

3. Un nodo con x descendientes directos contiene x-1 elementos.

4. Los nodos hojas tienen, como mínimo, [M/2]-1 elementos, y como máximo, M-1 elementos.

5. Los nodos no hojas ni raíz tienen, como mínimo, [M/2] descendientes directos.

6. Todos los nodos hojas se encuentran al mismo nivel.

Árboles B 25

Page 26: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

El formato gráfico de un nodo para un árbol B de orden M será:

Por lo tanto, cada registro del archivo contendrá:

• Un arreglo con las direcciones de los nodos que son descendientes directos.

• Un arreglo ordenado con las claves que forman el índice del árbol.

• Un valor entero que indica la cantidad efectiva de claves.

Árboles B 26

P0 Dato 1 P1 Dato 2 P2 … PM-1 Dato M-1 PM

Page 27: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Crear/Insertar.

Buscar.

Borrar.

Modificar (se asume como una baja del elemento

anterior y un alta del nuevo elemento).

Árboles B 27

Page 28: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Performance de la búsqueda: Se requieren como

máximo H accesos para localizar un dato o para

determinar que no se encuentra, siendo H la altura

del árbol. ¿Cómo acotamos h?

Nivel # mínimo de descendientes

1 2

2 2 * [M/2]

3 2 * [M/2] * [M/2]

………………………………………………….

h 2 * [M/2]h-1

Árboles B 28

Page 29: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Axioma: “Un árbol B asociado a un archivo de datos que contiene N registros contendrá un total de N+1 punteros nulos en sus nodos terminales”.

Por lo tanto:

N+1 >= 2 * [M/2]h-1

h <= 1 + log[M/2] ((N+1)/2)

Por ejemplo, para M = 512 y N = 1.000.000 h <= 3,37 (en el peor caso, con 4 lecturas se

encuentra un registro)

Árboles B 29

Page 30: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Performance de la inserción:

• Estudios empíricos realizados han demostrado que,

generando árboles B de orden M=10, la cantidad de

overflow es de 25% aproximadamente. En tanto, si el

orden es de M=100, la cantidad de overflow se

reduce al 2%. Analizando esta última situación, 98 de

cada 100 inserciones se tratan por el mejor caso.

Árboles B 30

Mejor caso Peor caso

Cantidad de lecturas H H

Cantidad de escrituras 1 (2*H) + 1

Page 31: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Performance de la eliminación:

• El peor caso está dado cuando el borrado necesite

concatenar. La concatenación implica leer un nodo

adyacente hermano. Por cada nivel que se deba

concatenar habrá dos lecturas, salvo en la raíz. La

cantidad de escrituras se limita a una por nivel.

Árboles B 31

Mejor caso Peor caso

Cantidad de lecturas H 2*H - 1

Cantidad de escrituras 1 H - 1

Page 32: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Árboles B* 32

Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos.

Un árbol B* de orden M posee las siguientes propiedades: 1. Cada nodo del árbol puede contener, como máximo, M descendientes.

2. La raíz no posee descendientes directos o tiene al menos dos.

3. Un nodo con x descendientes directos contiene x-1 elementos.

4. Los nodos hojas tienen, como mínimo, [(2M-1)/3] elementos, y como máximo, M-1 elementos.

5. Los nodos no hojas ni raíz tienen, como mínimo, [(2M-1)/3] descendientes.

6. Todos los nodos hojas se encuentran al mismo nivel.

Page 33: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Árboles B* 33

Búsqueda: Como en el árbol B.

Inserción: Antes de dividir se intenta redistribuir. Hay cuatro casos posibles: • Derecha: Redistribuir con nodo adyacente

hermano de la derecha (o izquierda si es el último).

• Izquierda

• Derecha o izquierda: Si el nodo de la derecha está lleno y no se puede redistribuir, se busca el de la izquierda.

• Izquierda o derecha.

Borrado: Como en el árbol B.

Page 34: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Performance de la inserción: Dependerá de cada

política. Ante la ocurrencia de overflow, como

mínimo cada una de las políticas requiere dos

lecturas (el nodo que se satura y un hermano) y tres

escrituras (cada nodo hijo y el padre.

En caso de necesitar realizar una división, se

requieren cuatro escrituras (el nodo padre, los dos

nodos que estaban completos y el nuevo que se

genera).

Árboles B* 34

Page 35: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Árboles B+ 35

Un archivo con acceso secuencial indizado es aquel que permite dos formas para visualizar la información:

• Indizada: El archivo puede verse como un conjunto de registros accedidos por una clave.

• Secuencial: Se puede acceder secuencialmente a la información ordenada por dicha clave.

Los árboles B o B* permiten la localización rápida de registros, pero si se requiere mucho acceso secuencial a través del orden de las claves, la solución resulta muy ineficiente.

Page 36: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Árboles B+ 36

Un árbol B+ es una árbol B que incorpora la siguiente propiedad: 7. Los nodos hojas representan un conjunto de datos y son enlazados entre ellos.

Está compuesto por dos partes:

• Índice: Nodos interiores.

• Secuencia: Páginas hojas enlazadas secuencial-mente en las que se repiten las claves anteriores.

Page 37: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Árboles B+ 37

Page 38: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Árboles B+ 38

Todas las claves se encuentran en las hojas (duplicándose en la raíz y nodos interiores, aquellas necesarias para definir los caminos de búsqueda).

Las hojas están vinculadas, obteniéndose de ese modo una trayectoria secuencial para recorrer las claves del árbol.

Ocupan más espacio que los árboles B (ya que algunas claves se encuentran más de una vez en el árbol).

Page 39: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Árboles B+ 39

Búsqueda: La búsqueda no debe detenerse cuando se encuentre la clave en la raíz o nodo interior, sino que debe seguir en la página apuntada por la rama derecha de dicha clave.

Page 40: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Árboles B+ 40

Inserción: El proceso de inserción es similar al de los árboles B, excepto cuando se desea insertar una clave en donde la página se encuentra llena.

• Cuando se inserta una nueva clave en una nueva página llena, ésta se divide también en otras dos, pero ahora la primera contendrá m/2 claves y la segunda 1+m/2 y lo que subirá al padre será una copia de la clave central.

Page 41: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Árboles B+ 41

Para M=5, supongamos el siguiente nodo inicial Se inserta 15

10 25 29 31

10 15 55 80 25 29 31 80

25 20 55 80

Page 42: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Árboles B+ 42

Inserción clave 13

• En caso de dividir un nodo no terminal, se debe promocionar hacia el padre el elemento en sí y no una copia del mismo.

Page 43: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Árboles B+ 43

Eliminación: Este proceso es más simple que en los árboles B, porque todas las claves se encuentran en las páginas hojas.

• Las claves de la raíz o nodos internos no se modifican pues siguen siendo un separador válido entre las claves de las páginas descendientes.

• Si al eliminar la clave (siempre en una hoja) la cantidad de claves < m/2, es necesario una fusión y redistribución de las mismas, en las hojas y el índice.

Page 44: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Árboles B+ 44

Page 45: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Árboles B+ 45

Page 46: Gestión de Datos 2011 · Árboles B* 32 Representan una variante sobre los árboles B, produciendo nodos completos en 2/3 en vez de nodos con sólo la mitad de los elementos. Un

Familia de árboles B - Conclusiones 46

Tiene una gran aplicabilidad en situaciones en las que resulta necesario acceder a un archivo tanto para búsquedas aleatorias eficientes como para acceso secuencial.

En particular, los árboles B* mejoran la eficiencia de los árboles B, aumentando la cantidad mínima de elementos en cada nodo y, por consiguiente, ayudando a disminuir la altura final del árbol (a costa de operaciones de inserción un poco más lentas).

En los árboles B+, toda la información de las claves está contenida en los nodos terminales. Los nodos no terminales actúan como separadores, y poseen una copia de los elementos contenidos en los nodos terminales.